everything-dev 1.53.2 → 2.0.0-rc.1

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 (713) hide show
  1. package/README.md +2 -11
  2. package/dist/_virtual/_rolldown/runtime.cjs +17 -2
  3. package/dist/_virtual/_rolldown/runtime.mjs +36 -0
  4. package/dist/api/auth-middleware.cjs +161 -0
  5. package/dist/api/auth-middleware.cjs.map +1 -0
  6. package/dist/api/auth-middleware.d.cts +69 -0
  7. package/dist/api/auth-middleware.d.mts +69 -0
  8. package/dist/api/auth-middleware.mjs +160 -0
  9. package/dist/api/auth-middleware.mjs.map +1 -0
  10. package/dist/api-contract.cjs +250 -62
  11. package/dist/api-contract.cjs.map +1 -1
  12. package/dist/api-contract.mjs +246 -65
  13. package/dist/api-contract.mjs.map +1 -1
  14. package/dist/app.cjs +99 -26
  15. package/dist/app.cjs.map +1 -1
  16. package/dist/app.d.cts +3 -0
  17. package/dist/app.d.mts +3 -0
  18. package/dist/app.mjs +100 -27
  19. package/dist/app.mjs.map +1 -1
  20. package/dist/auth-login.cjs +163 -0
  21. package/dist/auth-login.cjs.map +1 -0
  22. package/dist/auth-login.mjs +162 -0
  23. package/dist/auth-login.mjs.map +1 -0
  24. package/dist/auth-session.cjs +64 -0
  25. package/dist/auth-session.cjs.map +1 -0
  26. package/dist/auth-session.mjs +58 -0
  27. package/dist/auth-session.mjs.map +1 -0
  28. package/dist/auth-types-gen.cjs +0 -1
  29. package/dist/auth-types-gen.cjs.map +1 -1
  30. package/dist/build.cjs +37 -173
  31. package/dist/build.cjs.map +1 -1
  32. package/dist/build.mjs +37 -171
  33. package/dist/build.mjs.map +1 -1
  34. package/dist/bundle-cache.cjs +74 -0
  35. package/dist/bundle-cache.cjs.map +1 -0
  36. package/dist/bundle-cache.d.cts +27 -0
  37. package/dist/bundle-cache.d.mts +27 -0
  38. package/dist/bundle-cache.mjs +68 -0
  39. package/dist/bundle-cache.mjs.map +1 -0
  40. package/dist/bundle-fs-resolve.cjs +209 -0
  41. package/dist/bundle-fs-resolve.cjs.map +1 -0
  42. package/dist/bundle-fs-resolve.d.cts +76 -0
  43. package/dist/bundle-fs-resolve.d.mts +76 -0
  44. package/dist/bundle-fs-resolve.mjs +202 -0
  45. package/dist/bundle-fs-resolve.mjs.map +1 -0
  46. package/dist/cdn-deploy.cjs +126 -0
  47. package/dist/cdn-deploy.cjs.map +1 -0
  48. package/dist/cdn-deploy.mjs +124 -0
  49. package/dist/cdn-deploy.mjs.map +1 -0
  50. package/dist/cli/db-doctor.cjs +19 -19
  51. package/dist/cli/db-doctor.cjs.map +1 -1
  52. package/dist/cli/db-doctor.mjs +18 -18
  53. package/dist/cli/db-doctor.mjs.map +1 -1
  54. package/dist/cli/db-repair.cjs +9 -32
  55. package/dist/cli/db-repair.cjs.map +1 -1
  56. package/dist/cli/db-repair.mjs +9 -32
  57. package/dist/cli/db-repair.mjs.map +1 -1
  58. package/dist/cli/framework-version.cjs +7 -3
  59. package/dist/cli/framework-version.cjs.map +1 -1
  60. package/dist/cli/framework-version.mjs +7 -3
  61. package/dist/cli/framework-version.mjs.map +1 -1
  62. package/dist/cli/infra.cjs +159 -251
  63. package/dist/cli/infra.cjs.map +1 -1
  64. package/dist/cli/infra.mjs +154 -242
  65. package/dist/cli/infra.mjs.map +1 -1
  66. package/dist/cli/init.cjs +627 -199
  67. package/dist/cli/init.cjs.map +1 -1
  68. package/dist/cli/init.d.cts +61 -8
  69. package/dist/cli/init.d.mts +61 -8
  70. package/dist/cli/init.mjs +616 -197
  71. package/dist/cli/init.mjs.map +1 -1
  72. package/dist/cli/parse.cjs +8 -7
  73. package/dist/cli/parse.cjs.map +1 -1
  74. package/dist/cli/parse.mjs +9 -7
  75. package/dist/cli/parse.mjs.map +1 -1
  76. package/dist/cli/prompts.cjs +14 -1
  77. package/dist/cli/prompts.cjs.map +1 -1
  78. package/dist/cli/prompts.mjs +14 -1
  79. package/dist/cli/prompts.mjs.map +1 -1
  80. package/dist/cli/prune.cjs +220 -0
  81. package/dist/cli/prune.cjs.map +1 -0
  82. package/dist/cli/prune.mjs +220 -0
  83. package/dist/cli/prune.mjs.map +1 -0
  84. package/dist/cli/snapshot.cjs +2 -1
  85. package/dist/cli/snapshot.cjs.map +1 -1
  86. package/dist/cli/snapshot.mjs +2 -1
  87. package/dist/cli/snapshot.mjs.map +1 -1
  88. package/dist/cli/status.cjs +5 -4
  89. package/dist/cli/status.cjs.map +1 -1
  90. package/dist/cli/status.mjs +6 -5
  91. package/dist/cli/status.mjs.map +1 -1
  92. package/dist/cli/sync.cjs +156 -58
  93. package/dist/cli/sync.cjs.map +1 -1
  94. package/dist/cli/sync.mjs +158 -63
  95. package/dist/cli/sync.mjs.map +1 -1
  96. package/dist/cli/timing.cjs +0 -1
  97. package/dist/cli/timing.cjs.map +1 -1
  98. package/dist/cli/upgrade.cjs +95 -69
  99. package/dist/cli/upgrade.cjs.map +1 -1
  100. package/dist/cli/upgrade.mjs +97 -72
  101. package/dist/cli/upgrade.mjs.map +1 -1
  102. package/dist/cli/utils/helpers.cjs.map +1 -1
  103. package/dist/cli.cjs +320 -72
  104. package/dist/cli.cjs.map +1 -1
  105. package/dist/cli.mjs +316 -68
  106. package/dist/cli.mjs.map +1 -1
  107. package/dist/code-artifacts.cjs +76 -8
  108. package/dist/code-artifacts.cjs.map +1 -1
  109. package/dist/code-artifacts.mjs +76 -10
  110. package/dist/code-artifacts.mjs.map +1 -1
  111. package/dist/commands/build.cjs +65 -0
  112. package/dist/commands/build.cjs.map +1 -0
  113. package/dist/commands/build.mjs +65 -0
  114. package/dist/commands/build.mjs.map +1 -0
  115. package/dist/commands/config.cjs +77 -0
  116. package/dist/commands/config.cjs.map +1 -0
  117. package/dist/commands/config.d.cts +8 -0
  118. package/dist/commands/config.d.mts +8 -0
  119. package/dist/commands/config.mjs +74 -0
  120. package/dist/commands/config.mjs.map +1 -0
  121. package/dist/commands/db.cjs +107 -0
  122. package/dist/commands/db.cjs.map +1 -0
  123. package/dist/commands/db.mjs +107 -0
  124. package/dist/commands/db.mjs.map +1 -0
  125. package/dist/commands/deploy.cjs +336 -0
  126. package/dist/commands/deploy.cjs.map +1 -0
  127. package/dist/commands/deploy.mjs +334 -0
  128. package/dist/commands/deploy.mjs.map +1 -0
  129. package/dist/commands/dev.cjs +75 -0
  130. package/dist/commands/dev.cjs.map +1 -0
  131. package/dist/commands/dev.mjs +73 -0
  132. package/dist/commands/dev.mjs.map +1 -0
  133. package/dist/commands/init.cjs +234 -0
  134. package/dist/commands/init.cjs.map +1 -0
  135. package/dist/commands/init.mjs +231 -0
  136. package/dist/commands/init.mjs.map +1 -0
  137. package/dist/commands/keys.cjs +255 -0
  138. package/dist/commands/keys.cjs.map +1 -0
  139. package/dist/commands/keys.mjs +253 -0
  140. package/dist/commands/keys.mjs.map +1 -0
  141. package/dist/commands/ops.cjs +199 -0
  142. package/dist/commands/ops.cjs.map +1 -0
  143. package/dist/commands/ops.mjs +197 -0
  144. package/dist/commands/ops.mjs.map +1 -0
  145. package/dist/commands/plugins.cjs +211 -0
  146. package/dist/commands/plugins.cjs.map +1 -0
  147. package/dist/commands/plugins.mjs +211 -0
  148. package/dist/commands/plugins.mjs.map +1 -0
  149. package/dist/commands/shared.cjs +8 -0
  150. package/dist/commands/shared.cjs.map +1 -0
  151. package/dist/commands/shared.d.cts +6 -0
  152. package/dist/commands/shared.d.mts +6 -0
  153. package/dist/commands/shared.mjs +8 -0
  154. package/dist/commands/shared.mjs.map +1 -0
  155. package/dist/commands/upgrade.cjs +325 -0
  156. package/dist/commands/upgrade.cjs.map +1 -0
  157. package/dist/commands/upgrade.mjs +323 -0
  158. package/dist/commands/upgrade.mjs.map +1 -0
  159. package/dist/components/dev-render.cjs +340 -0
  160. package/dist/components/dev-render.cjs.map +1 -0
  161. package/dist/components/dev-render.mjs +332 -0
  162. package/dist/components/dev-render.mjs.map +1 -0
  163. package/dist/config.cjs +460 -221
  164. package/dist/config.cjs.map +1 -1
  165. package/dist/config.d.cts +491 -48
  166. package/dist/config.d.mts +491 -48
  167. package/dist/config.mjs +439 -212
  168. package/dist/config.mjs.map +1 -1
  169. package/dist/contract.cjs +327 -50
  170. package/dist/contract.cjs.map +1 -1
  171. package/dist/contract.d.cts +1951 -1062
  172. package/dist/contract.d.mts +1951 -1062
  173. package/dist/contract.meta.cjs +107 -12
  174. package/dist/contract.meta.cjs.map +1 -1
  175. package/dist/contract.meta.d.cts +166 -8
  176. package/dist/contract.meta.d.mts +166 -8
  177. package/dist/contract.meta.mjs +107 -11
  178. package/dist/contract.meta.mjs.map +1 -1
  179. package/dist/contract.mjs +580 -327
  180. package/dist/contract.mjs.map +1 -1
  181. package/dist/dag.cjs +5 -3
  182. package/dist/dag.cjs.map +1 -1
  183. package/dist/dag.mjs +6 -3
  184. package/dist/dag.mjs.map +1 -1
  185. package/dist/db/binding.cjs +80 -0
  186. package/dist/db/binding.cjs.map +1 -0
  187. package/dist/db/binding.d.cts +39 -0
  188. package/dist/db/binding.d.mts +39 -0
  189. package/dist/db/binding.mjs +78 -0
  190. package/dist/db/binding.mjs.map +1 -0
  191. package/dist/db/bindings.cjs +78 -0
  192. package/dist/db/bindings.cjs.map +1 -0
  193. package/dist/db/bindings.d.cts +34 -0
  194. package/dist/db/bindings.d.mts +34 -0
  195. package/dist/db/bindings.mjs +76 -0
  196. package/dist/db/bindings.mjs.map +1 -0
  197. package/dist/db/core.cjs +204 -0
  198. package/dist/db/core.cjs.map +1 -0
  199. package/dist/db/core.d.cts +69 -0
  200. package/dist/db/core.d.mts +69 -0
  201. package/dist/db/core.mjs +192 -0
  202. package/dist/db/core.mjs.map +1 -0
  203. package/dist/db/driver.cjs +167 -0
  204. package/dist/db/driver.cjs.map +1 -0
  205. package/dist/db/driver.d.cts +50 -0
  206. package/dist/db/driver.d.mts +50 -0
  207. package/dist/db/driver.mjs +165 -0
  208. package/dist/db/driver.mjs.map +1 -0
  209. package/dist/db/drizzle-kit.cjs +177 -0
  210. package/dist/db/drizzle-kit.cjs.map +1 -0
  211. package/dist/db/drizzle-kit.d.cts +25 -0
  212. package/dist/db/drizzle-kit.d.mts +25 -0
  213. package/dist/db/drizzle-kit.mjs +175 -0
  214. package/dist/db/drizzle-kit.mjs.map +1 -0
  215. package/dist/db/errors.cjs +27 -0
  216. package/dist/db/errors.cjs.map +1 -0
  217. package/dist/db/errors.d.cts +16 -0
  218. package/dist/db/errors.d.mts +16 -0
  219. package/dist/db/errors.mjs +26 -0
  220. package/dist/db/errors.mjs.map +1 -0
  221. package/dist/db/identity.cjs +55 -0
  222. package/dist/db/identity.cjs.map +1 -0
  223. package/dist/db/identity.d.cts +40 -0
  224. package/dist/db/identity.d.mts +40 -0
  225. package/dist/db/identity.mjs +53 -0
  226. package/dist/db/identity.mjs.map +1 -0
  227. package/dist/db/index.cjs +43 -0
  228. package/dist/db/index.d.cts +9 -0
  229. package/dist/db/index.d.mts +9 -0
  230. package/dist/db/index.mjs +10 -0
  231. package/dist/db/run-migrations.cjs +343 -0
  232. package/dist/db/run-migrations.cjs.map +1 -0
  233. package/dist/db/run-migrations.d.cts +87 -0
  234. package/dist/db/run-migrations.d.mts +87 -0
  235. package/dist/db/run-migrations.mjs +341 -0
  236. package/dist/db/run-migrations.mjs.map +1 -0
  237. package/dist/delegate-signer.cjs +85 -0
  238. package/dist/delegate-signer.cjs.map +1 -0
  239. package/dist/delegate-signer.mjs +84 -0
  240. package/dist/delegate-signer.mjs.map +1 -0
  241. package/dist/deploy-diff.cjs +119 -0
  242. package/dist/deploy-diff.cjs.map +1 -0
  243. package/dist/deploy-diff.mjs +109 -0
  244. package/dist/deploy-diff.mjs.map +1 -0
  245. package/dist/descriptor/constructors.cjs +49 -0
  246. package/dist/descriptor/constructors.cjs.map +1 -0
  247. package/dist/descriptor/constructors.d.cts +27 -0
  248. package/dist/descriptor/constructors.d.mts +27 -0
  249. package/dist/descriptor/constructors.mjs +45 -0
  250. package/dist/descriptor/constructors.mjs.map +1 -0
  251. package/dist/descriptor/index.cjs +24 -0
  252. package/dist/descriptor/index.d.cts +5 -0
  253. package/dist/descriptor/index.d.mts +5 -0
  254. package/dist/descriptor/index.mjs +6 -0
  255. package/dist/descriptor/resolve.cjs +258 -0
  256. package/dist/descriptor/resolve.cjs.map +1 -0
  257. package/dist/descriptor/resolve.d.cts +50 -0
  258. package/dist/descriptor/resolve.d.mts +50 -0
  259. package/dist/descriptor/resolve.mjs +252 -0
  260. package/dist/descriptor/resolve.mjs.map +1 -0
  261. package/dist/descriptor/schema.cjs +109 -0
  262. package/dist/descriptor/schema.cjs.map +1 -0
  263. package/dist/descriptor/schema.d.cts +217 -0
  264. package/dist/descriptor/schema.d.mts +217 -0
  265. package/dist/descriptor/schema.mjs +102 -0
  266. package/dist/descriptor/schema.mjs.map +1 -0
  267. package/dist/descriptor/serialize.cjs +45 -0
  268. package/dist/descriptor/serialize.cjs.map +1 -0
  269. package/dist/descriptor/serialize.d.cts +7 -0
  270. package/dist/descriptor/serialize.d.mts +7 -0
  271. package/dist/descriptor/serialize.mjs +45 -0
  272. package/dist/descriptor/serialize.mjs.map +1 -0
  273. package/dist/dev-log-pipeline.cjs +273 -0
  274. package/dist/dev-log-pipeline.cjs.map +1 -0
  275. package/dist/dev-log-pipeline.mjs +267 -0
  276. package/dist/dev-log-pipeline.mjs.map +1 -0
  277. package/dist/dev-logs.cjs +39 -8
  278. package/dist/dev-logs.cjs.map +1 -1
  279. package/dist/dev-logs.mjs +37 -9
  280. package/dist/dev-logs.mjs.map +1 -1
  281. package/dist/dev-program.cjs +405 -0
  282. package/dist/dev-program.cjs.map +1 -0
  283. package/dist/dev-program.d.cts +10 -0
  284. package/dist/dev-program.d.mts +10 -0
  285. package/dist/dev-program.mjs +395 -0
  286. package/dist/dev-program.mjs.map +1 -0
  287. package/dist/dev-session-data.d.cts +27 -0
  288. package/dist/dev-session-data.d.mts +27 -0
  289. package/dist/dev-session.cjs +178 -105
  290. package/dist/dev-session.cjs.map +1 -1
  291. package/dist/dev-session.mjs +180 -105
  292. package/dist/dev-session.mjs.map +1 -1
  293. package/dist/env/process-env.cjs +16 -0
  294. package/dist/env/process-env.cjs.map +1 -0
  295. package/dist/env/process-env.mjs +13 -0
  296. package/dist/env/process-env.mjs.map +1 -0
  297. package/dist/env/project-env.cjs +144 -0
  298. package/dist/env/project-env.cjs.map +1 -0
  299. package/dist/env/project-env.d.cts +1 -0
  300. package/dist/env/project-env.d.mts +1 -0
  301. package/dist/env/project-env.mjs +132 -0
  302. package/dist/env/project-env.mjs.map +1 -0
  303. package/dist/fastkv.cjs +59 -12
  304. package/dist/fastkv.cjs.map +1 -1
  305. package/dist/fastkv.d.cts +42 -6
  306. package/dist/fastkv.d.mts +42 -6
  307. package/dist/fastkv.mjs +58 -13
  308. package/dist/fastkv.mjs.map +1 -1
  309. package/dist/fingerprint.cjs +57 -0
  310. package/dist/fingerprint.cjs.map +1 -0
  311. package/dist/fingerprint.d.cts +14 -0
  312. package/dist/fingerprint.d.mts +14 -0
  313. package/dist/fingerprint.mjs +55 -0
  314. package/dist/fingerprint.mjs.map +1 -0
  315. package/dist/http-client.cjs +17 -17
  316. package/dist/http-client.cjs.map +1 -1
  317. package/dist/http-client.mjs +17 -17
  318. package/dist/http-client.mjs.map +1 -1
  319. package/dist/image-deploy.cjs +186 -0
  320. package/dist/image-deploy.cjs.map +1 -0
  321. package/dist/image-deploy.mjs +182 -0
  322. package/dist/image-deploy.mjs.map +1 -0
  323. package/dist/index.cjs +66 -18
  324. package/dist/index.d.cts +8 -7
  325. package/dist/index.d.mts +8 -7
  326. package/dist/index.mjs +6 -5
  327. package/dist/infra/docker.cjs +77 -0
  328. package/dist/infra/docker.cjs.map +1 -0
  329. package/dist/infra/docker.d.cts +10 -0
  330. package/dist/infra/docker.d.mts +10 -0
  331. package/dist/infra/docker.mjs +69 -0
  332. package/dist/infra/docker.mjs.map +1 -0
  333. package/dist/infra/materializer.cjs +74 -0
  334. package/dist/infra/materializer.cjs.map +1 -0
  335. package/dist/infra/materializer.mjs +70 -0
  336. package/dist/infra/materializer.mjs.map +1 -0
  337. package/dist/infra/planner.cjs +135 -103
  338. package/dist/infra/planner.cjs.map +1 -1
  339. package/dist/infra/planner.mjs +137 -104
  340. package/dist/infra/planner.mjs.map +1 -1
  341. package/dist/infra/port-ownership.cjs +57 -0
  342. package/dist/infra/port-ownership.cjs.map +1 -0
  343. package/dist/infra/port-ownership.mjs +57 -0
  344. package/dist/infra/port-ownership.mjs.map +1 -0
  345. package/dist/infra/preflight.cjs +45 -33
  346. package/dist/infra/preflight.cjs.map +1 -1
  347. package/dist/infra/preflight.d.cts +1 -0
  348. package/dist/infra/preflight.d.mts +1 -0
  349. package/dist/infra/preflight.mjs +46 -34
  350. package/dist/infra/preflight.mjs.map +1 -1
  351. package/dist/infra/types.cjs.map +1 -1
  352. package/dist/infra/types.d.cts +2 -0
  353. package/dist/infra/types.d.mts +2 -0
  354. package/dist/infra/types.mjs.map +1 -1
  355. package/dist/integrity.cjs +50 -61
  356. package/dist/integrity.cjs.map +1 -1
  357. package/dist/integrity.d.cts +16 -10
  358. package/dist/integrity.d.mts +16 -10
  359. package/dist/integrity.mjs +50 -59
  360. package/dist/integrity.mjs.map +1 -1
  361. package/dist/internal/manifest-normalizer.cjs +8 -2
  362. package/dist/internal/manifest-normalizer.cjs.map +1 -1
  363. package/dist/internal/manifest-normalizer.mjs +9 -3
  364. package/dist/internal/manifest-normalizer.mjs.map +1 -1
  365. package/dist/merge.cjs +19 -1
  366. package/dist/merge.cjs.map +1 -1
  367. package/dist/merge.d.cts +1 -1
  368. package/dist/merge.d.mts +1 -1
  369. package/dist/merge.mjs +19 -2
  370. package/dist/merge.mjs.map +1 -1
  371. package/dist/mf.cjs +190 -3
  372. package/dist/mf.cjs.map +1 -1
  373. package/dist/mf.d.cts +24 -2
  374. package/dist/mf.d.mts +24 -2
  375. package/dist/mf.mjs +189 -4
  376. package/dist/mf.mjs.map +1 -1
  377. package/dist/near-cli.cjs +59 -91
  378. package/dist/near-cli.cjs.map +1 -1
  379. package/dist/near-cli.mjs +58 -90
  380. package/dist/near-cli.mjs.map +1 -1
  381. package/dist/near-signer.cjs +73 -0
  382. package/dist/near-signer.cjs.map +1 -0
  383. package/dist/near-signer.mjs +70 -0
  384. package/dist/near-signer.mjs.map +1 -0
  385. package/dist/network.cjs +0 -1
  386. package/dist/network.cjs.map +1 -1
  387. package/dist/orchestrator.cjs +256 -87
  388. package/dist/orchestrator.cjs.map +1 -1
  389. package/dist/orchestrator.mjs +248 -87
  390. package/dist/orchestrator.mjs.map +1 -1
  391. package/dist/platform-deploy.cjs +81 -0
  392. package/dist/platform-deploy.cjs.map +1 -0
  393. package/dist/platform-deploy.mjs +80 -0
  394. package/dist/platform-deploy.mjs.map +1 -0
  395. package/dist/plugin.cjs +54 -1389
  396. package/dist/plugin.cjs.map +1 -1
  397. package/dist/plugin.d.cts +6 -896
  398. package/dist/plugin.d.mts +6 -896
  399. package/dist/plugin.mjs +53 -1387
  400. package/dist/plugin.mjs.map +1 -1
  401. package/dist/process-kill.cjs +44 -0
  402. package/dist/process-kill.cjs.map +1 -0
  403. package/dist/process-kill.mjs +43 -0
  404. package/dist/process-kill.mjs.map +1 -0
  405. package/dist/process-registry.cjs +64 -9
  406. package/dist/process-registry.cjs.map +1 -1
  407. package/dist/process-registry.mjs +61 -10
  408. package/dist/process-registry.mjs.map +1 -1
  409. package/dist/progress.cjs +45 -0
  410. package/dist/progress.cjs.map +1 -0
  411. package/dist/progress.d.cts +13 -0
  412. package/dist/progress.d.mts +13 -0
  413. package/dist/progress.mjs +42 -0
  414. package/dist/progress.mjs.map +1 -0
  415. package/dist/publish.cjs +513 -79
  416. package/dist/publish.cjs.map +1 -1
  417. package/dist/publish.mjs +515 -82
  418. package/dist/publish.mjs.map +1 -1
  419. package/dist/registry-use.cjs +41 -0
  420. package/dist/registry-use.cjs.map +1 -0
  421. package/dist/registry-use.mjs +40 -0
  422. package/dist/registry-use.mjs.map +1 -0
  423. package/dist/resolution/session.cjs +335 -0
  424. package/dist/resolution/session.cjs.map +1 -0
  425. package/dist/resolution/session.d.cts +105 -0
  426. package/dist/resolution/session.d.mts +105 -0
  427. package/dist/resolution/session.mjs +331 -0
  428. package/dist/resolution/session.mjs.map +1 -0
  429. package/dist/rollback.cjs +131 -0
  430. package/dist/rollback.cjs.map +1 -0
  431. package/dist/rollback.mjs +128 -0
  432. package/dist/rollback.mjs.map +1 -0
  433. package/dist/sdk.cjs +7 -7
  434. package/dist/sdk.d.cts +3 -3
  435. package/dist/sdk.d.mts +3 -3
  436. package/dist/sdk.mjs +2 -2
  437. package/dist/service-descriptor.cjs +67 -34
  438. package/dist/service-descriptor.cjs.map +1 -1
  439. package/dist/service-descriptor.d.cts +4 -1
  440. package/dist/service-descriptor.d.mts +3 -0
  441. package/dist/service-descriptor.mjs +63 -35
  442. package/dist/service-descriptor.mjs.map +1 -1
  443. package/dist/shared-deps.cjs +17 -16
  444. package/dist/shared-deps.cjs.map +1 -1
  445. package/dist/shared-deps.mjs +17 -16
  446. package/dist/shared-deps.mjs.map +1 -1
  447. package/dist/start-config-source.cjs +24 -0
  448. package/dist/start-config-source.cjs.map +1 -0
  449. package/dist/start-config-source.d.cts +29 -0
  450. package/dist/start-config-source.d.mts +29 -0
  451. package/dist/start-config-source.mjs +22 -0
  452. package/dist/start-config-source.mjs.map +1 -0
  453. package/dist/storage-upload.cjs +145 -0
  454. package/dist/storage-upload.cjs.map +1 -0
  455. package/dist/storage-upload.mjs +143 -0
  456. package/dist/storage-upload.mjs.map +1 -0
  457. package/dist/types.cjs +126 -20
  458. package/dist/types.cjs.map +1 -1
  459. package/dist/types.d.cts +867 -585
  460. package/dist/types.d.mts +867 -585
  461. package/dist/types.mjs +307 -208
  462. package/dist/types.mjs.map +1 -1
  463. package/dist/ui/api.cjs +105 -0
  464. package/dist/ui/api.cjs.map +1 -0
  465. package/dist/ui/api.d.cts +31 -0
  466. package/dist/ui/api.d.mts +31 -0
  467. package/dist/ui/api.mjs +99 -0
  468. package/dist/ui/api.mjs.map +1 -0
  469. package/dist/ui/auth-guards.cjs +50 -0
  470. package/dist/ui/auth-guards.cjs.map +1 -0
  471. package/dist/ui/auth-guards.d.cts +39 -0
  472. package/dist/ui/auth-guards.d.mts +39 -0
  473. package/dist/ui/auth-guards.mjs +48 -0
  474. package/dist/ui/auth-guards.mjs.map +1 -0
  475. package/dist/ui/auth.cjs +197 -0
  476. package/dist/ui/auth.cjs.map +1 -0
  477. package/dist/ui/auth.d.cts +56 -0
  478. package/dist/ui/auth.d.mts +56 -0
  479. package/dist/ui/auth.mjs +179 -0
  480. package/dist/ui/auth.mjs.map +1 -0
  481. package/dist/ui/entry.cjs +16 -0
  482. package/dist/ui/entry.cjs.map +1 -0
  483. package/dist/ui/entry.d.cts +12 -0
  484. package/dist/ui/entry.d.mts +12 -0
  485. package/dist/ui/entry.mjs +15 -0
  486. package/dist/ui/entry.mjs.map +1 -0
  487. package/dist/ui/head.cjs +14 -7
  488. package/dist/ui/head.cjs.map +1 -1
  489. package/dist/ui/head.mjs +15 -7
  490. package/dist/ui/head.mjs.map +1 -1
  491. package/dist/ui/hydrate.cjs +265 -0
  492. package/dist/ui/hydrate.cjs.map +1 -0
  493. package/dist/ui/hydrate.d.cts +48 -0
  494. package/dist/ui/hydrate.d.mts +48 -0
  495. package/dist/ui/hydrate.mjs +263 -0
  496. package/dist/ui/hydrate.mjs.map +1 -0
  497. package/dist/ui/i18n.cjs +153 -0
  498. package/dist/ui/i18n.cjs.map +1 -0
  499. package/dist/ui/i18n.d.cts +29 -0
  500. package/dist/ui/i18n.d.mts +29 -0
  501. package/dist/ui/i18n.mjs +140 -0
  502. package/dist/ui/i18n.mjs.map +1 -0
  503. package/dist/ui/index.cjs +19 -1
  504. package/dist/ui/index.d.cts +6 -3
  505. package/dist/ui/index.d.mts +6 -3
  506. package/dist/ui/index.mjs +5 -2
  507. package/dist/ui/locale.cjs +53 -0
  508. package/dist/ui/locale.cjs.map +1 -0
  509. package/dist/ui/locale.d.cts +18 -0
  510. package/dist/ui/locale.d.mts +18 -0
  511. package/dist/ui/locale.mjs +49 -0
  512. package/dist/ui/locale.mjs.map +1 -0
  513. package/dist/ui/manifest/index.cjs +25 -0
  514. package/dist/ui/manifest/index.cjs.map +1 -0
  515. package/dist/ui/manifest/index.d.cts +9 -0
  516. package/dist/ui/manifest/index.d.mts +9 -0
  517. package/dist/ui/manifest/index.mjs +13 -0
  518. package/dist/ui/manifest/index.mjs.map +1 -0
  519. package/dist/ui/manifest-generator.cjs +8 -0
  520. package/dist/ui/manifest-generator.d.cts +1 -0
  521. package/dist/ui/manifest-generator.d.mts +1 -0
  522. package/dist/ui/manifest-generator.mjs +3 -0
  523. package/dist/ui/message-catalogs.cjs +8 -0
  524. package/dist/ui/message-catalogs.cjs.map +1 -0
  525. package/dist/ui/message-catalogs.d.cts +5 -0
  526. package/dist/ui/message-catalogs.d.mts +5 -0
  527. package/dist/ui/message-catalogs.mjs +8 -0
  528. package/dist/ui/message-catalogs.mjs.map +1 -0
  529. package/dist/ui/metadata.cjs +0 -1
  530. package/dist/ui/metadata.cjs.map +1 -1
  531. package/dist/ui/metadata.d.cts +1 -1
  532. package/dist/ui/metadata.d.mts +1 -1
  533. package/dist/ui/plugin-path.cjs +37 -0
  534. package/dist/ui/plugin-path.cjs.map +1 -0
  535. package/dist/ui/plugin-path.d.cts +25 -0
  536. package/dist/ui/plugin-path.d.mts +25 -0
  537. package/dist/ui/plugin-path.mjs +35 -0
  538. package/dist/ui/plugin-path.mjs.map +1 -0
  539. package/dist/ui/router-client.cjs +61 -0
  540. package/dist/ui/router-client.cjs.map +1 -0
  541. package/dist/ui/router-client.d.cts +20 -0
  542. package/dist/ui/router-client.d.mts +20 -0
  543. package/dist/ui/router-client.mjs +60 -0
  544. package/dist/ui/router-client.mjs.map +1 -0
  545. package/dist/ui/router-defaults.cjs +48 -0
  546. package/dist/ui/router-defaults.cjs.map +1 -0
  547. package/dist/ui/router-defaults.d.cts +8 -0
  548. package/dist/ui/router-defaults.d.mts +8 -0
  549. package/dist/ui/router-defaults.mjs +45 -0
  550. package/dist/ui/router-defaults.mjs.map +1 -0
  551. package/dist/ui/router-error.cjs +70 -0
  552. package/dist/ui/router-error.cjs.map +1 -0
  553. package/dist/ui/router-error.d.cts +19 -0
  554. package/dist/ui/router-error.d.mts +19 -0
  555. package/dist/ui/router-error.mjs +69 -0
  556. package/dist/ui/router-error.mjs.map +1 -0
  557. package/dist/ui/router-server.cjs +153 -0
  558. package/dist/ui/router-server.cjs.map +1 -0
  559. package/dist/ui/router-server.d.cts +38 -0
  560. package/dist/ui/router-server.d.mts +38 -0
  561. package/dist/ui/router-server.mjs +152 -0
  562. package/dist/ui/router-server.mjs.map +1 -0
  563. package/dist/ui/router.cjs +4 -16
  564. package/dist/ui/router.cjs.map +1 -1
  565. package/dist/ui/router.mjs +4 -15
  566. package/dist/ui/router.mjs.map +1 -1
  567. package/dist/ui/runtime.cjs +5 -1
  568. package/dist/ui/runtime.cjs.map +1 -1
  569. package/dist/ui/runtime.d.cts +2 -1
  570. package/dist/ui/runtime.d.mts +2 -1
  571. package/dist/ui/runtime.mjs +5 -1
  572. package/dist/ui/runtime.mjs.map +1 -1
  573. package/dist/ui/slot.cjs +34 -0
  574. package/dist/ui/slot.cjs.map +1 -0
  575. package/dist/ui/slot.d.cts +43 -0
  576. package/dist/ui/slot.d.mts +43 -0
  577. package/dist/ui/slot.mjs +34 -0
  578. package/dist/ui/slot.mjs.map +1 -0
  579. package/dist/ui/tenant.cjs +300 -0
  580. package/dist/ui/tenant.cjs.map +1 -0
  581. package/dist/ui/tenant.d.cts +122 -0
  582. package/dist/ui/tenant.d.mts +122 -0
  583. package/dist/ui/tenant.mjs +279 -0
  584. package/dist/ui/tenant.mjs.map +1 -0
  585. package/dist/ui/types.d.cts +32 -2
  586. package/dist/ui/types.d.mts +32 -2
  587. package/dist/ui/version-check.cjs +47 -0
  588. package/dist/ui/version-check.cjs.map +1 -0
  589. package/dist/ui/version-check.d.cts +23 -0
  590. package/dist/ui/version-check.d.mts +23 -0
  591. package/dist/ui/version-check.mjs +46 -0
  592. package/dist/ui/version-check.mjs.map +1 -0
  593. package/dist/utils/banner.cjs +2 -2
  594. package/dist/utils/banner.cjs.map +1 -1
  595. package/dist/utils/banner.mjs +2 -2
  596. package/dist/utils/banner.mjs.map +1 -1
  597. package/dist/utils/linkify.cjs +1 -1
  598. package/dist/utils/linkify.cjs.map +1 -1
  599. package/dist/utils/linkify.mjs +1 -0
  600. package/dist/utils/linkify.mjs.map +1 -1
  601. package/dist/utils/run.cjs +6 -6
  602. package/dist/utils/run.cjs.map +1 -1
  603. package/dist/utils/run.mjs +6 -6
  604. package/dist/utils/run.mjs.map +1 -1
  605. package/dist/utils/save-config.cjs +12 -0
  606. package/dist/utils/save-config.cjs.map +1 -1
  607. package/dist/utils/save-config.mjs +12 -0
  608. package/dist/utils/save-config.mjs.map +1 -1
  609. package/dist/utils/snapshot-hash.cjs +10 -0
  610. package/dist/utils/snapshot-hash.cjs.map +1 -0
  611. package/dist/utils/snapshot-hash.mjs +10 -0
  612. package/dist/utils/snapshot-hash.mjs.map +1 -0
  613. package/dist/utils/string.cjs +0 -1
  614. package/dist/utils/string.cjs.map +1 -1
  615. package/dist/utils/theme.cjs +30 -12
  616. package/dist/utils/theme.cjs.map +1 -1
  617. package/dist/utils/theme.mjs +30 -11
  618. package/dist/utils/theme.mjs.map +1 -1
  619. package/dist/version-manifest-deploy.cjs +50 -0
  620. package/dist/version-manifest-deploy.cjs.map +1 -0
  621. package/dist/version-manifest-deploy.mjs +49 -0
  622. package/dist/version-manifest-deploy.mjs.map +1 -0
  623. package/dist/version-manifest-resolve.cjs +42 -0
  624. package/dist/version-manifest-resolve.cjs.map +1 -0
  625. package/dist/version-manifest-resolve.d.cts +38 -0
  626. package/dist/version-manifest-resolve.d.mts +38 -0
  627. package/dist/version-manifest-resolve.mjs +40 -0
  628. package/dist/version-manifest-resolve.mjs.map +1 -0
  629. package/dist/version-status.cjs +18 -0
  630. package/dist/version-status.cjs.map +1 -0
  631. package/dist/version-status.d.cts +22 -0
  632. package/dist/version-status.d.mts +22 -0
  633. package/dist/version-status.mjs +17 -0
  634. package/dist/version-status.mjs.map +1 -0
  635. package/dist/workspace-catalog.cjs +53 -0
  636. package/dist/workspace-catalog.cjs.map +1 -0
  637. package/dist/workspace-catalog.mjs +51 -0
  638. package/dist/workspace-catalog.mjs.map +1 -0
  639. package/dist/workspace.cjs +237 -0
  640. package/dist/workspace.cjs.map +1 -0
  641. package/dist/workspace.mjs +233 -0
  642. package/dist/workspace.mjs.map +1 -0
  643. package/package.json +179 -27
  644. package/skills/add-a-route/SKILL.md +132 -0
  645. package/skills/api-and-auth/SKILL.md +87 -21
  646. package/skills/api-and-auth/references/middleware.md +1 -1
  647. package/skills/cli-reference/SKILL.md +48 -21
  648. package/skills/code-style/SKILL.md +8 -0
  649. package/skills/dev-workflow/SKILL.md +50 -26
  650. package/skills/extends-config/SKILL.md +31 -19
  651. package/skills/init-upgrade/SKILL.md +29 -16
  652. package/skills/plugin-development/SKILL.md +46 -112
  653. package/skills/plugin-development/references/database.md +82 -0
  654. package/skills/plugin-development/references/request-context.md +67 -0
  655. package/skills/publish-sync/SKILL.md +99 -22
  656. package/skills/registry/SKILL.md +82 -0
  657. package/skills/super-app/SKILL.md +25 -15
  658. package/skills/talk-to-the-app/SKILL.md +138 -0
  659. package/skills/ui-integration/SKILL.md +93 -11
  660. package/dist/cli/db-studio.cjs +0 -131
  661. package/dist/cli/db-studio.cjs.map +0 -1
  662. package/dist/cli/db-studio.mjs +0 -127
  663. package/dist/cli/db-studio.mjs.map +0 -1
  664. package/dist/cli/init.d.cts.map +0 -1
  665. package/dist/cli/init.d.mts.map +0 -1
  666. package/dist/components/dev-view.cjs +0 -309
  667. package/dist/components/dev-view.cjs.map +0 -1
  668. package/dist/components/dev-view.mjs +0 -309
  669. package/dist/components/dev-view.mjs.map +0 -1
  670. package/dist/components/streaming-view.cjs +0 -134
  671. package/dist/components/streaming-view.cjs.map +0 -1
  672. package/dist/components/streaming-view.mjs +0 -132
  673. package/dist/components/streaming-view.mjs.map +0 -1
  674. package/dist/config.d.cts.map +0 -1
  675. package/dist/config.d.mts.map +0 -1
  676. package/dist/contract.d.cts.map +0 -1
  677. package/dist/contract.d.mts.map +0 -1
  678. package/dist/contract.meta.d.cts.map +0 -1
  679. package/dist/contract.meta.d.mts.map +0 -1
  680. package/dist/dag.d.cts.map +0 -1
  681. package/dist/dag.d.mts.map +0 -1
  682. package/dist/db.cjs +0 -81
  683. package/dist/db.cjs.map +0 -1
  684. package/dist/db.d.cts +0 -30
  685. package/dist/db.d.cts.map +0 -1
  686. package/dist/db.d.mts +0 -30
  687. package/dist/db.d.mts.map +0 -1
  688. package/dist/db.mjs +0 -75
  689. package/dist/db.mjs.map +0 -1
  690. package/dist/fastkv.d.cts.map +0 -1
  691. package/dist/fastkv.d.mts.map +0 -1
  692. package/dist/integrity.d.cts.map +0 -1
  693. package/dist/integrity.d.mts.map +0 -1
  694. package/dist/merge.d.cts.map +0 -1
  695. package/dist/merge.d.mts.map +0 -1
  696. package/dist/mf.d.cts.map +0 -1
  697. package/dist/mf.d.mts.map +0 -1
  698. package/dist/plugin.d.cts.map +0 -1
  699. package/dist/plugin.d.mts.map +0 -1
  700. package/dist/service-descriptor.d.cts.map +0 -1
  701. package/dist/service-descriptor.d.mts.map +0 -1
  702. package/dist/types.d.cts.map +0 -1
  703. package/dist/types.d.mts.map +0 -1
  704. package/dist/ui/head.d.cts.map +0 -1
  705. package/dist/ui/head.d.mts.map +0 -1
  706. package/dist/ui/metadata.d.cts.map +0 -1
  707. package/dist/ui/metadata.d.mts.map +0 -1
  708. package/dist/ui/router.d.cts.map +0 -1
  709. package/dist/ui/router.d.mts.map +0 -1
  710. package/dist/ui/runtime.d.cts.map +0 -1
  711. package/dist/ui/runtime.d.mts.map +0 -1
  712. package/dist/ui/types.d.cts.map +0 -1
  713. package/dist/ui/types.d.mts.map +0 -1
package/dist/cli.mjs CHANGED
@@ -1,18 +1,25 @@
1
1
  #!/usr/bin/env node
2
- import { findConfigPath } from "./config.mjs";
2
+ import { getRegistryNamespaceForAccount } from "./fastkv.mjs";
3
+ import { getNetworkIdForAccount } from "./network.mjs";
4
+ import { MISSING_CONFIG_MESSAGE, findConfigPath, readAuthoredConfigInput } from "./config.mjs";
3
5
  import { createPluginRuntime } from "./sdk.mjs";
6
+ import { runDockerComposeUp } from "./infra/docker.mjs";
7
+ import { installBundleFetchFromEnv } from "./bundle-fs-resolve.mjs";
4
8
  import { formatDuration, sumPhaseDurations } from "./cli/timing.mjs";
5
9
  import { colors, frames, gradients, icons } from "./utils/theme.mjs";
6
- import { loadProjectEnv } from "./cli/infra.mjs";
7
- import { fetchParentConfig, runDockerComposeUp } from "./cli/init.mjs";
10
+ import { listPublishKeys } from "./near-cli.mjs";
11
+ import { pluginEvents } from "./progress.mjs";
12
+ import { fetchInitParent } from "./commands/init.mjs";
8
13
  import { resolveFrameworkPackage } from "./cli/framework-version.mjs";
9
- import plugin_default, { consumeDevSession, pluginEvents } from "./plugin.mjs";
14
+ import plugin_default from "./plugin.mjs";
10
15
  import { findCommandDescriptor } from "./cli/catalog.mjs";
11
16
  import { printHelp } from "./cli/help.mjs";
12
17
  import { parseCommandInput } from "./cli/parse.mjs";
13
18
  import { promptInitBasic, promptInitOverrides } from "./cli/prompts.mjs";
14
19
  import { printBanner } from "./utils/banner.mjs";
20
+ import { existsSync, watch } from "node:fs";
15
21
  import { dirname, resolve } from "node:path";
22
+ import { readFile } from "node:fs/promises";
16
23
  import * as p from "@clack/prompts";
17
24
 
18
25
  //#region src/cli.ts
@@ -41,6 +48,25 @@ function formatTimeAgo(isoTimestamp) {
41
48
  function normalizeVersion(v) {
42
49
  return v.replace(/^[\^~>=v]+/, "").trim();
43
50
  }
51
+ const RETIRED_BOOTSTRAP_STUBS = [
52
+ "ui/src/entry.ts",
53
+ "ui/src/hydrate.tsx",
54
+ "ui/src/router.server.tsx",
55
+ "ui/src/compose.ts"
56
+ ];
57
+ /**
58
+ * Hand-modified bootstrap stubs retire as conflicted (backed up, then
59
+ * deleted) — print the mechanical port into the authored seams (ADR 0023).
60
+ */
61
+ function printStubMigrationGuide(retiredConflicted) {
62
+ if ((retiredConflicted ?? []).filter((f) => RETIRED_BOOTSTRAP_STUBS.includes(f)).length === 0) return;
63
+ console.log(` ${colors.yellow("Port your stub customizations into the authored seams:")}`);
64
+ console.log(` ${colors.dim("- defaultErrorComponent / defaultPendingComponent / defaultNotFoundComponent")}`);
65
+ console.log(` ${colors.dim(" → set them inside the createRouter factory in ui/src/router.tsx (after ...opts)")}`);
66
+ console.log(` ${colors.dim("- apiConnectionError copy + SSR locale config (locales, defaultLocale, cookieName)")}`);
67
+ console.log(` ${colors.dim(" → export apiConnectionError / appLocale from ui/src/app.ts (see the scaffold template)")}`);
68
+ console.log(` ${colors.dim(" backed-up originals: .bos/sync-backup/<timestamp>/")}`);
69
+ }
44
70
  function printTimingSummary(timings) {
45
71
  if (!timings || timings.length === 0) return;
46
72
  console.log(` ${colors.dim("Timings:")}`);
@@ -83,11 +109,15 @@ async function warnIfOutdated(client, command) {
83
109
  const outdated = status.packages.filter((p) => !p.isLinked && p.installed && p.latest && normalizeVersion(p.installed) !== normalizeVersion(p.latest) && frameworkPackages.includes(p.name));
84
110
  if (linked.length > 0) for (const pkg of linked) console.log(colors.dim(` ${pkg.name} is linked locally (v${pkg.installed})`));
85
111
  if (outdated.length === 0) return;
86
- console.log();
87
- console.log(colors.yellow(` ! Outdated packages detected:`));
88
- for (const pkg of outdated) console.log(colors.dim(` ${pkg.name} ${pkg.installed} → ${pkg.latest}`));
89
- console.log(colors.dim(` Run ${colors.cyan("bos upgrade")} to update packages and sync template files.`));
90
- console.log();
112
+ const warn = (line) => {
113
+ if (command === "dev" || command === "start") process.stderr.write(`${line}\n`);
114
+ else console.log(line);
115
+ };
116
+ warn("");
117
+ warn(colors.yellow(` ! Outdated packages detected:`));
118
+ for (const pkg of outdated) warn(colors.dim(` ${pkg.name} ${pkg.installed} → ${pkg.latest}`));
119
+ warn(colors.dim(` Run ${colors.cyan("bos upgrade")} to update packages and sync template files.`));
120
+ warn("");
91
121
  } catch {}
92
122
  }
93
123
  async function main() {
@@ -98,7 +128,6 @@ async function main() {
98
128
  }
99
129
  const invocationArgs = args.length > 0 ? args : ["dev"];
100
130
  const command = invocationArgs[0] ?? "dev";
101
- const configPath = findConfigPath();
102
131
  const commandMatch = findCommandDescriptor(invocationArgs);
103
132
  if (!commandMatch) {
104
133
  console.error(`Unknown command: ${command}`);
@@ -106,7 +135,18 @@ async function main() {
106
135
  }
107
136
  const { descriptor, consumed } = commandMatch;
108
137
  const commandArgs = invocationArgs.slice(consumed);
109
- const projectDir = configPath ? dirname(configPath) : void 0;
138
+ let parsedInput;
139
+ try {
140
+ parsedInput = parseCommandInput(descriptor, commandArgs);
141
+ } catch (error) {
142
+ console.error(`[CLI] ${error instanceof Error ? error.message : String(error)}`);
143
+ process.exit(1);
144
+ }
145
+ const bootInput = parsedInput;
146
+ const cwdConfigPath = findConfigPath();
147
+ const configPath = bootInput.configPath ?? cwdConfigPath;
148
+ installBundleFetchFromEnv({ configPath });
149
+ const projectDir = cwdConfigPath ? dirname(cwdConfigPath) : void 0;
110
150
  const edResolved = projectDir ? resolveFrameworkPackage(projectDir, "everything-dev") : void 0;
111
151
  const displayVersion = edResolved?.installedVersion ? `${edResolved.installedVersion}${edResolved.isLinked ? " (linked)" : ""}` : void 0;
112
152
  if (!process.env.BOS_NO_BANNER) printBanner("everything-dev", displayVersion);
@@ -115,12 +155,68 @@ async function main() {
115
155
  secrets: {}
116
156
  });
117
157
  const client = (await pluginRuntime.usePlugin.bind(pluginRuntime)("bos", {
118
- variables: { configPath: configPath ?? void 0 },
158
+ variables: {
159
+ configPath: configPath ?? void 0,
160
+ configDir: cwdConfigPath ? dirname(cwdConfigPath) : void 0
161
+ },
119
162
  secrets: {}
120
163
  })).createClient();
121
- const outdatedWarning = warnIfOutdated(client, command);
164
+ warnIfOutdated(client, command);
122
165
  try {
123
- const input = parseCommandInput(descriptor, commandArgs);
166
+ const input = parsedInput;
167
+ const rollbackInput = input;
168
+ if (descriptor.key === "rollback" && !rollbackInput.listOnly && !rollbackInput.version && !rollbackInput.previous) {
169
+ const listing = await client.rollback({
170
+ ...rollbackInput,
171
+ listOnly: true
172
+ });
173
+ if (listing.status !== "list" || !listing.history?.length) {
174
+ console.error(listing.error ?? "No publish history found");
175
+ process.exit(1);
176
+ }
177
+ console.log();
178
+ const selection = await p.select({
179
+ message: "Roll back to which publish?",
180
+ options: listing.history.map((entry) => ({
181
+ value: String(entry.blockHeight),
182
+ label: `${entry.blockTimestamp} (block ${entry.blockHeight})`,
183
+ hint: entry.summary
184
+ }))
185
+ });
186
+ if (p.isCancel(selection)) return;
187
+ rollbackInput.version = selection;
188
+ }
189
+ if (descriptor.key === "keyPublish") {
190
+ const keyPublishInput = input;
191
+ if (keyPublishInput.removeOldKeys === void 0) {
192
+ if (process.stdin.isTTY) {
193
+ const authored = configPath ? await readAuthoredConfigInput(dirname(configPath)) : null;
194
+ const account = keyPublishInput.env === "staging" ? authored?.staging?.account ?? authored?.account : authored?.account;
195
+ let listed = null;
196
+ if (account) {
197
+ const network = getNetworkIdForAccount(account);
198
+ const contract = getRegistryNamespaceForAccount(account, keyPublishInput.registry);
199
+ try {
200
+ listed = await listPublishKeys({
201
+ account,
202
+ contract,
203
+ network
204
+ });
205
+ } catch {
206
+ listed = null;
207
+ }
208
+ }
209
+ if (listed?.length) {
210
+ const removeOldKeys = await p.confirm({
211
+ message: `Remove ${listed.length} existing publish key${listed.length > 1 ? "s" : ""}?`,
212
+ initialValue: true
213
+ });
214
+ if (p.isCancel(removeOldKeys)) return;
215
+ keyPublishInput.removeOldKeys = removeOldKeys;
216
+ } else keyPublishInput.removeOldKeys = true;
217
+ } else keyPublishInput.removeOldKeys = true;
218
+ }
219
+ }
124
220
  if (descriptor.key === "dev") {
125
221
  const devSpinner = p.spinner();
126
222
  devSpinner.start("Starting dev environment");
@@ -130,6 +226,7 @@ async function main() {
130
226
  build: "Building...",
131
227
  "resolve config": "Resolving config...",
132
228
  ports: "Finding available ports...",
229
+ "docker compose up": "Starting local Postgres...",
133
230
  "generate artifacts": "Generating code artifacts..."
134
231
  };
135
232
  const onDevProgress = (event) => {
@@ -150,11 +247,10 @@ async function main() {
150
247
  }
151
248
  devSpinner.stop();
152
249
  clearSpinnerStopLine();
153
- const session = consumeDevSession();
154
- await outdatedWarning;
250
+ const session = result.session;
155
251
  if (session) {
156
252
  const { devApp } = await import("./dev-session.mjs");
157
- devApp(session.orchestrator, session.services, session.runtimeConfig);
253
+ devApp(projectDir ?? process.cwd(), session.orchestrator, session.services, session.runtimeConfig, session.envGenerated, session.shellEnv);
158
254
  }
159
255
  return;
160
256
  }
@@ -182,13 +278,12 @@ async function main() {
182
278
  process.exit(1);
183
279
  }
184
280
  startSpinner.stop("Ready");
185
- const session = consumeDevSession();
186
- await outdatedWarning;
281
+ const session = result.session;
282
+ const summary = result.summary;
187
283
  if (session) {
188
- const summary = session.summary;
189
284
  if (summary) printStartSummary(summary);
190
285
  const { startApp } = await import("./dev-session.mjs");
191
- startApp(session.orchestrator, session.services, session.runtimeConfig);
286
+ startApp(projectDir ?? process.cwd(), session.orchestrator, session.services, session.runtimeConfig, session.envGenerated, session.shellEnv);
192
287
  }
193
288
  return;
194
289
  }
@@ -205,8 +300,9 @@ async function main() {
205
300
  const fetchSpinner = p.spinner();
206
301
  fetchSpinner.start("Fetching parent config");
207
302
  try {
208
- parentConfig = await fetchParentConfig(basic.extendsAccount, basic.extendsGateway);
209
- if (parentConfig?.plugins && typeof parentConfig.plugins === "object") parentPluginKeys = Object.keys(parentConfig.plugins);
303
+ const parent = await fetchInitParent(basic.extendsAccount, basic.extendsGateway);
304
+ parentConfig = parent.parentConfig;
305
+ parentPluginKeys = parent.parentPluginKeys;
210
306
  } catch {
211
307
  fetchSpinner.stop("Config not found");
212
308
  console.error(`[CLI] No config found at bos://${basic.extendsAccount}/${basic.extendsGateway}`);
@@ -223,7 +319,8 @@ async function main() {
223
319
  const overrides = await promptInitOverrides({
224
320
  parentPluginKeys,
225
321
  plugins: initInput.plugins,
226
- overrides: initInput.overrides
322
+ overrides: initInput.overrides,
323
+ level: initInput.level
227
324
  });
228
325
  const directory = initInput.directory || basic.domain || basic.extendsGateway;
229
326
  initInput = {
@@ -234,6 +331,7 @@ async function main() {
234
331
  domain: basic.domain || void 0,
235
332
  plugins: overrides.plugins,
236
333
  overrides: overrides.overrides,
334
+ level: overrides.level ?? initInput.level,
237
335
  noInteractive: true
238
336
  };
239
337
  }
@@ -282,13 +380,10 @@ async function main() {
282
380
  console.log();
283
381
  console.log(colors.dim(" Next steps:"));
284
382
  console.log(colors.dim(` cd ${result.directory}`));
285
- if (!initInput.noInstall) {
286
- console.log(colors.dim(" docker compose up -d --wait"));
287
- console.log(colors.dim(" bun run dev"));
288
- } else {
289
- console.log(colors.dim(" bun install"));
290
- console.log(colors.dim(" docker compose up -d --wait"));
291
- console.log(colors.dim(" bun run dev"));
383
+ if (!initInput.noInstall) console.log(colors.dim(" pnpm run dev"));
384
+ else {
385
+ console.log(colors.dim(" pnpm install"));
386
+ console.log(colors.dim(" pnpm run dev"));
292
387
  }
293
388
  console.log();
294
389
  if (initInput.noInteractive !== true && !initInput.noInstall && result.targetDir) {
@@ -298,43 +393,22 @@ async function main() {
298
393
  }) === true) {
299
394
  const dockerSpinner = p.spinner();
300
395
  dockerSpinner.start("Starting Docker services");
301
- try {
302
- await runDockerComposeUp(result.targetDir);
303
- dockerSpinner.stop("Docker services ready");
304
- } catch (error) {
396
+ const compose = await runDockerComposeUp(result.targetDir);
397
+ if (compose.ok) dockerSpinner.stop("Docker services ready");
398
+ else {
305
399
  dockerSpinner.stop("Docker services not started");
306
- p.log.warn(`docker compose up -d --wait failed: ${error instanceof Error ? error.message : error}`);
400
+ p.log.warn(`docker compose up -d --wait failed${compose.tail ? `:\n${compose.tail}` : ""}`);
307
401
  }
308
402
  }
309
403
  }
310
404
  return;
311
405
  }
312
- await outdatedWarning;
313
406
  const result = await client[descriptor.key](input);
314
407
  if (descriptor.key === "dbStudio") {
315
408
  if (result.status === "error") {
316
409
  console.error(`[CLI] ${result.error || "Unknown error"}`);
317
410
  process.exit(1);
318
411
  }
319
- const configPath = findConfigPath();
320
- if (configPath) loadProjectEnv(dirname(configPath));
321
- const { runStudioLocal, runStudioRemote } = await import("./cli/db-studio.mjs");
322
- const info = {
323
- key: result.plugin,
324
- source: result.source,
325
- section: result.section,
326
- databaseSecret: result.databaseSecret,
327
- databaseUrl: result.databaseUrl,
328
- workspaceDir: result.workspaceDir,
329
- projectDir: dirname(configPath ?? process.cwd())
330
- };
331
- try {
332
- if (info.source === "local" && info.workspaceDir) await runStudioLocal(info);
333
- else await runStudioRemote(info);
334
- } catch (error) {
335
- console.error(`[CLI] ${error instanceof Error ? error.message : String(error)}`);
336
- process.exit(1);
337
- }
338
412
  return;
339
413
  }
340
414
  if (descriptor.key === "dbDoctor") {
@@ -384,7 +458,7 @@ async function main() {
384
458
  }
385
459
  if (descriptor.key === "config") {
386
460
  if (!result.config) {
387
- console.error("No bos.config.json found");
461
+ console.error(MISSING_CONFIG_MESSAGE);
388
462
  process.exit(1);
389
463
  }
390
464
  printConfigView(result.config);
@@ -403,7 +477,8 @@ async function main() {
403
477
  }
404
478
  if (result.status === "dry-run") console.log(colors.cyan(`${icons.ok} Dry run — no files written`));
405
479
  else console.log(colors.green(`${icons.ok} Synced`));
406
- if (result.updated.length > 0 || result.added.length > 0 || result.conflicted.length > 0) {
480
+ const hasRetirement = (result.retired?.length ?? 0) > 0 || (result.retiredConflicted?.length ?? 0) > 0;
481
+ if (result.updated.length > 0 || result.added.length > 0 || result.conflicted.length > 0 || hasRetirement) {
407
482
  console.log(` ${colors.dim("Sync results:")} ${result.updated.length} updated, ${result.added.length} added, ${result.conflicted.length} conflicted`);
408
483
  if (result.updated.length > 0) for (const f of result.updated) console.log(` ${colors.dim(f)}`);
409
484
  if (result.added.length > 0) for (const f of result.added) console.log(` ${colors.dim(f)}`);
@@ -412,8 +487,15 @@ async function main() {
412
487
  if (result.backupDir) console.log(` ${colors.dim(result.backupDir)}`);
413
488
  for (const f of result.conflicted) console.log(` ${colors.dim(f)}`);
414
489
  }
490
+ if (hasRetirement) {
491
+ console.log(` ${colors.yellow("Retired")} (replaced by generated stubs — ADR 0023):`);
492
+ if (result.retiredBackupDir) console.log(` ${colors.dim(result.retiredBackupDir)}`);
493
+ for (const f of result.retiredConflicted ?? []) console.log(` ${colors.dim(`${f} (backed up)`)}`);
494
+ for (const f of result.retired ?? []) console.log(` ${colors.dim(f)}`);
495
+ printStubMigrationGuide(result.retiredConflicted);
496
+ }
415
497
  }
416
- if (result.updated.length === 0 && result.added.length === 0 && result.conflicted.length === 0) console.log(` ${colors.dim("Already up to date")}`);
498
+ if (result.updated.length === 0 && result.added.length === 0 && result.conflicted.length === 0 && !hasRetirement) console.log(` ${colors.dim("Already up to date")}`);
417
499
  console.log();
418
500
  return;
419
501
  }
@@ -442,14 +524,22 @@ async function main() {
442
524
  if (result.selectedPlugins && result.selectedPlugins.length > 0) console.log(` Added plugins: ${result.selectedPlugins.join(", ")}`);
443
525
  if (result.sync) {
444
526
  const sync = result.sync;
527
+ const hasRetirement = (sync.retired?.length ?? 0) > 0 || (sync.retiredConflicted?.length ?? 0) > 0;
445
528
  console.log(` ${colors.dim("Sync results:")}`);
446
- if (sync.updated.length > 0 || sync.added.length > 0 || sync.conflicted.length > 0) {
529
+ if (sync.updated.length > 0 || sync.added.length > 0 || sync.conflicted.length > 0 || hasRetirement) {
447
530
  console.log(` ${sync.updated.length} updated, ${sync.added.length} added, ${sync.conflicted.length} conflicted`);
448
531
  if (sync.conflicted.length > 0) {
449
532
  console.log(` ${colors.yellow("Conflicted")} (template applied, your changes backed up):`);
450
533
  if (sync.backupDir) console.log(` ${colors.dim(sync.backupDir)}`);
451
534
  for (const f of sync.conflicted) console.log(` ${colors.dim(f)}`);
452
535
  }
536
+ if (hasRetirement) {
537
+ console.log(` ${colors.yellow("Retired")} (replaced by generated stubs — ADR 0023):`);
538
+ if (sync.retiredBackupDir) console.log(` ${colors.dim(sync.retiredBackupDir)}`);
539
+ for (const f of sync.retiredConflicted ?? []) console.log(` ${colors.dim(`${f} (backed up)`)}`);
540
+ for (const f of sync.retired ?? []) console.log(` ${colors.dim(f)}`);
541
+ printStubMigrationGuide(sync.retiredConflicted);
542
+ }
453
543
  } else console.log(` ${colors.dim("Already up to date")}`);
454
544
  }
455
545
  if (result.migrated && result.migrated.length > 0) {
@@ -466,7 +556,7 @@ async function main() {
466
556
  console.log(colors.dim(` ${result.sync.conflicted.length} file(s) had local conflicts — template version applied, backups at ${result.sync.backupDir || ".bos/sync-backup/"}.`));
467
557
  console.log(colors.dim(` If local changes should be preserved upstream, open a PR: https://github.com/${parentRepo}${somedelta ? `/compare/${somedelta}` : ""}`));
468
558
  }
469
- console.log(colors.dim(" Load matching intent skills: bunx @tanstack/intent@latest load everything-dev#..."));
559
+ console.log(colors.dim(" Load matching intent skills: pnpm dlx @tanstack/intent@latest load everything-dev#..."));
470
560
  console.log(colors.dim(" Review AGENTS.md — local updates may need merging."));
471
561
  }
472
562
  console.log();
@@ -545,6 +635,41 @@ async function main() {
545
635
  }
546
636
  return;
547
637
  }
638
+ if (descriptor.key === "logs") {
639
+ const logsResult = result;
640
+ const opts = input;
641
+ for (const line of logsResult.lines) console.log(line);
642
+ if (logsResult.lines.length === 0) console.log(colors.dim(` No matching log lines in ${logsResult.logFile}.`));
643
+ if (opts.follow) {
644
+ if (logsResult.logFile === "unknown" || !existsSync(logsResult.logFile)) console.log(colors.dim(" No log file to follow — nothing was found on disk."));
645
+ else {
646
+ const filter = opts.service;
647
+ let byteOffset = 0;
648
+ for (const line of logsResult.lines) byteOffset += Buffer.byteLength(line, "utf8") + 1;
649
+ const followMatch = (line) => {
650
+ if (!filter) return true;
651
+ const source = /\] \[([^\]]+)\] \[(?:OUT|ERR)\] /.exec(line)?.[1];
652
+ return source === filter || source === `plugin:${filter}`;
653
+ };
654
+ const watcher = watch(logsResult.logFile, (event) => {
655
+ if (event !== "change") return;
656
+ readFile(logsResult.logFile, "utf8").then((text) => {
657
+ const newLines = text.slice(byteOffset).split("\n").filter((line) => line.length > 0 && followMatch(line));
658
+ byteOffset = Buffer.byteLength(text, "utf8");
659
+ for (const line of newLines) console.log(line);
660
+ }).catch(() => {
661
+ watcher.close();
662
+ });
663
+ });
664
+ console.log(colors.dim(" Following — Ctrl+C to stop."));
665
+ process.on("SIGINT", () => {
666
+ watcher.close();
667
+ process.exit(0);
668
+ });
669
+ }
670
+ }
671
+ return;
672
+ }
548
673
  if (descriptor.key === "kill") {
549
674
  const killResult = result;
550
675
  console.log();
@@ -618,17 +743,83 @@ async function main() {
618
743
  console.log();
619
744
  return;
620
745
  }
746
+ if (descriptor.key === "typecheck") {
747
+ console.log();
748
+ if (result.status === "error") {
749
+ console.error(`[CLI] ${result.error || "Unknown error"}`);
750
+ process.exit(1);
751
+ }
752
+ const failed = result.results.filter((r) => !r.passed);
753
+ const passed = result.results.filter((r) => r.passed);
754
+ console.log(colors.cyan(frames.top(52)));
755
+ console.log(` ${icons.app} ${gradients.cyber("TYPECHECK")}`);
756
+ console.log(colors.cyan(frames.bottom(52)));
757
+ console.log();
758
+ for (const r of result.results) {
759
+ const icon = r.passed ? colors.green("✓") : colors.error("✗");
760
+ console.log(` ${icon} ${r.workspace}`);
761
+ }
762
+ if (result.skipped.length > 0) console.log(` ${colors.dim(`Skipped: ${result.skipped.join(", ")}`)}`);
763
+ console.log();
764
+ if (failed.length > 0) {
765
+ console.log(` ${colors.error(`${failed.length} failed`)}`);
766
+ for (const f of failed) if (f.error) console.log(` ${colors.dim(f.error)}`);
767
+ console.log();
768
+ process.exit(1);
769
+ }
770
+ console.log(` ${colors.green(`${passed.length} passed`)}`);
771
+ console.log();
772
+ return;
773
+ }
774
+ if (descriptor.key === "mfCheck") {
775
+ console.log();
776
+ console.log(` ${colors.dim("Host")} ${result.hostReachable ? colors.green("OK ") : colors.error("FAIL")} ${result.hostVersion ?? "unreachable"}${result.hostReason ? ` (${result.hostReason})` : ""}`);
777
+ for (const r of result.remotes) {
778
+ const tag = r.ok ? colors.green("OK ") : colors.error("FAIL");
779
+ console.log(` ${colors.dim(r.role.padEnd(10))} ${tag} ${r.url} pluginVersion=${r.pluginVersion ?? "?"}${r.reason ? ` ↳ ${r.reason}` : ""}`);
780
+ }
781
+ console.log();
782
+ if (result.status !== "ok") {
783
+ console.log(colors.error(" mf-compat: ✗ federation manifests NOT compatible — redeploy affected plugin(s) so pluginVersion and shared versions match host"));
784
+ console.log();
785
+ process.exit(1);
786
+ }
787
+ console.log(colors.green(" mf-compat: ✓ all federation manifests compatible"));
788
+ console.log();
789
+ return;
790
+ }
621
791
  if (result?.status === "error" && descriptor.key !== "publish" && descriptor.key !== "deploy") {
622
792
  console.error(`[CLI] ${result.error || "Unknown error"}`);
623
793
  process.exit(1);
624
794
  }
795
+ if (descriptor.key === "login") {
796
+ console.log();
797
+ console.log(colors.green(`${icons.ok} Logged in to ${result.siteUrl}`));
798
+ if (result.accountId) console.log(` ${colors.dim("Account:")} ${result.accountId}`);
799
+ if (result.expiresAt) console.log(` ${colors.dim("Expires:")} ${result.expiresAt}`);
800
+ if (result.warning) console.log(` ${colors.yellow("⚠")} ${result.warning}`);
801
+ if (result.publishKey) console.log(` ${colors.dim("Publish key:")} ${result.publishKey.publicKey} ${colors.dim(`(${result.publishKey.network}, exported to ${result.publishKey.exportedTo})`)}`);
802
+ console.log();
803
+ return;
804
+ }
805
+ if (descriptor.key === "logout") {
806
+ console.log();
807
+ console.log(colors.green(`${icons.ok} Logged out`));
808
+ if (result.revokedApiKey) console.log(` ${colors.dim("Revoked API key")}`);
809
+ if (result.removedPublishKey) console.log(` ${colors.dim("Removed exported publish key")}`);
810
+ if (result.warning) console.log(` ${colors.yellow("⚠")} ${result.warning}`);
811
+ console.log();
812
+ return;
813
+ }
625
814
  if (descriptor.key === "keyPublish") {
626
815
  process.stdout.write(`Generated publish key for ${result.account}\n`);
627
816
  process.stdout.write(` Network: ${result.network}\n`);
628
817
  process.stdout.write(` Allowance: ${result.allowance}\n`);
629
818
  process.stdout.write(`\n`);
630
- process.stdout.write(` Set this as NEAR_PRIVATE_KEY in GitHub Actions or before calling publish:\n`);
631
- process.stdout.write(` NEAR_PRIVATE_KEY=${result.privateKey}\n`);
819
+ const secretName = result.env === "staging" ? "NEAR_TESTNET_PRIVATE_KEY" : "NEAR_PRIVATE_KEY";
820
+ if (!process.stdout.isTTY) process.stderr.write(` ⚠ Non-interactive stdout: this private key will be captured in any log or pipe (GitHub Actions logs persist stdout).\n`);
821
+ process.stdout.write(` Set this as ${secretName} in GitHub Actions or before calling publish:\n`);
822
+ process.stdout.write(`${secretName}=${result.privateKey}\n`);
632
823
  }
633
824
  if (descriptor.key === "pluginAdd") {
634
825
  console.log();
@@ -663,8 +854,22 @@ async function main() {
663
854
  console.log();
664
855
  console.log(colors.green(`${icons.ok} Published plugin ${result.key}`));
665
856
  if (result.path) console.log(` ${colors.dim("Path:")} ${result.path}`);
666
- if (result.script) console.log(` ${colors.dim("Script:")} bun run ${result.script}`);
667
857
  if (result.production) console.log(` ${colors.dim("Production:")} ${result.production}`);
858
+ if (result.version) console.log(` ${colors.dim("Version:")} ${result.version}`);
859
+ if (result.fingerprint) console.log(` ${colors.dim("Fingerprint:")} ${result.fingerprint}`);
860
+ console.log();
861
+ return;
862
+ }
863
+ if (descriptor.key === "registryUse") {
864
+ console.log();
865
+ if (result.status === "error") {
866
+ console.error(colors.error(`${icons.err} ${result.error || "Unknown error"}`));
867
+ process.exit(1);
868
+ }
869
+ console.log(colors.green(`${icons.ok} ${result.status === "dry-run" ? "Dry run" : "Composed"} from ${result.from}`));
870
+ for (const section of result.applied) console.log(` ${colors.green("+")} ${section}`);
871
+ if (result.configPath) console.log(` ${colors.dim("Config:")} ${result.configPath}`);
872
+ if (result.status === "updated") console.log(colors.dim(" Run bos types gen to refresh generated types."));
668
873
  console.log();
669
874
  return;
670
875
  }
@@ -712,8 +917,47 @@ async function main() {
712
917
  return;
713
918
  }
714
919
  }
920
+ if (descriptor.key === "rollback") {
921
+ const rollbackResult = result;
922
+ if (rollbackResult.status === "error") {
923
+ console.log();
924
+ console.log(colors.error(`${icons.err} Roll back failed`));
925
+ if (rollbackResult.error) console.log(` ${colors.dim("Error:")} ${rollbackResult.error}`);
926
+ if (rollbackResult.verification) {
927
+ console.log();
928
+ for (const check of rollbackResult.verification) {
929
+ const mark = check.ok ? colors.green(icons.ok) : colors.error(icons.err);
930
+ const reason = check.reason ? colors.dim(` — ${check.reason}`) : "";
931
+ console.log(` ${mark} ${check.slot}${reason}`);
932
+ }
933
+ }
934
+ console.log();
935
+ process.exit(1);
936
+ }
937
+ if (rollbackResult.status === "dry-run") {
938
+ console.log();
939
+ console.log(colors.cyan(`${icons.ok} Rollback dry run complete`));
940
+ console.log(` ${colors.dim("Registry URL:")} ${rollbackResult.registryUrl}`);
941
+ console.log();
942
+ return;
943
+ }
944
+ console.log();
945
+ console.log(colors.green(`${icons.ok} Rolled back`));
946
+ console.log(` ${colors.dim("Registry URL:")} ${rollbackResult.registryUrl}`);
947
+ if (rollbackResult.txHash) console.log(` ${colors.dim("Transaction:")} ${rollbackResult.txHash}`);
948
+ console.log();
949
+ return;
950
+ }
715
951
  if (descriptor.key === "deploy") {
716
952
  const deployResult = result;
953
+ if (deployResult.status === "list") {
954
+ console.log();
955
+ console.log(colors.cyan("Recent publishes (audit trail)"));
956
+ for (const entry of deployResult.history ?? []) console.log(` ${entry.blockTimestamp} ${colors.dim(`block ${entry.blockHeight}`)}${entry.publishedAt ? colors.dim(` ${entry.publishedAt}`) : ""}`);
957
+ console.log();
958
+ return;
959
+ }
960
+ if (deployResult.fingerprint) console.log(` ${colors.dim("Fingerprint:")} ${deployResult.fingerprint}`);
717
961
  if (deployResult.status === "dry-run") {
718
962
  console.log();
719
963
  console.log(colors.cyan(`${icons.ok} Dry run complete`));
@@ -753,21 +997,25 @@ async function main() {
753
997
  for (const w of warnings) console.log(` ${colors.dim(w)}`);
754
998
  }
755
999
  }
756
- if (deployResult.redeployed) console.log(` ${colors.dim("Railway:")} redeployed ${deployResult.service ?? "service"}`);
757
- else if (!process.env.RAILWAY_TOKEN) console.log(` ${colors.yellow("Railway:")} skipped (RAILWAY_TOKEN not set)`);
1000
+ if (deployResult.image) console.log(` ${colors.dim("Image:")} ${deployResult.image}`);
1001
+ if (deployResult.service) console.log(` ${colors.dim("Railway:")} deployed ${deployResult.service}`);
758
1002
  console.log();
759
1003
  return;
760
1004
  }
761
1005
  if (deployResult.status === "published") {
762
1006
  console.log();
763
- console.log(colors.yellow(`${icons.err} Config published, but Railway redeploy failed`));
1007
+ console.log(colors.yellow(`${icons.err} Config published, but a deploy leg failed`));
764
1008
  console.log(` ${colors.dim("Registry URL:")} ${deployResult.registryUrl}`);
765
1009
  if (deployResult.txHash) console.log(` ${colors.dim("Transaction:")} ${deployResult.txHash}`);
766
- if (deployResult.error) console.log(` ${colors.dim("Railway:")} ${deployResult.error}`);
1010
+ if (deployResult.error) console.log(` ${colors.dim("Error:")} ${deployResult.error}`);
767
1011
  console.log();
768
1012
  process.exit(1);
769
1013
  }
770
1014
  }
1015
+ if (descriptor.key === "infraExport") {
1016
+ process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
1017
+ return;
1018
+ }
771
1019
  } catch (error) {
772
1020
  console.error(`[CLI] ${error instanceof Error ? error.message : String(error)}`);
773
1021
  process.exit(1);