@bleedingdev/modern-js-ultramodern-create 3.9.0-ultramodern.9 → 3.9.3-ultramodern.10

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 (410) hide show
  1. package/README.md +189 -83
  2. package/dist/cjs/cli/flags.cjs +25 -1
  3. package/dist/cjs/cli/help.cjs +1 -0
  4. package/dist/cjs/index.cjs +9 -4
  5. package/dist/cjs/ultramodern-release-cohort.cjs +41 -23
  6. package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +48 -55
  7. package/dist/cjs/ultramodern-tooling/commands/context.cjs +1 -27
  8. package/dist/cjs/ultramodern-tooling/commands/routes-generate-app.cjs +69 -0
  9. package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +27 -54
  10. package/dist/cjs/ultramodern-tooling/commands/validate.cjs +8 -48
  11. package/dist/cjs/ultramodern-tooling/commands.cjs +13 -3
  12. package/dist/cjs/ultramodern-tooling/config/index.cjs +11 -4
  13. package/dist/cjs/ultramodern-tooling/config/json.cjs +4 -2
  14. package/dist/cjs/ultramodern-tooling/config/load.cjs +40 -15
  15. package/dist/cjs/ultramodern-tooling/config/metadata.cjs +46 -3
  16. package/dist/cjs/ultramodern-tooling/config/normalize.cjs +150 -198
  17. package/dist/cjs/ultramodern-workspace/add-shell.cjs +215 -151
  18. package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +183 -139
  19. package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +32 -168
  20. package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +94 -25
  21. package/dist/cjs/ultramodern-workspace/add-vertical/preview.cjs +79 -0
  22. package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +45 -20
  23. package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +44 -47
  24. package/dist/cjs/ultramodern-workspace/add-vertical/transaction.cjs +26 -10
  25. package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +21 -44
  26. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +0 -9
  27. package/dist/cjs/ultramodern-workspace/api/client.cjs +2 -37
  28. package/dist/cjs/ultramodern-workspace/api/contracts.cjs +2 -2
  29. package/dist/cjs/ultramodern-workspace/api/rpc.cjs +17 -15
  30. package/dist/cjs/ultramodern-workspace/api/service.cjs +4 -8
  31. package/dist/cjs/ultramodern-workspace/api/shared.cjs +1 -1
  32. package/dist/cjs/ultramodern-workspace/api/write-app-api.cjs +65 -0
  33. package/dist/cjs/ultramodern-workspace/api.cjs +0 -3
  34. package/dist/cjs/ultramodern-workspace/app-files.cjs +1 -1
  35. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +3 -3
  36. package/dist/cjs/ultramodern-workspace/codesmith.cjs +5 -3
  37. package/dist/cjs/ultramodern-workspace/contracts.cjs +56 -204
  38. package/dist/cjs/ultramodern-workspace/delivery-unit-stamp.cjs +59 -5
  39. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +83 -60
  40. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +31 -7
  41. package/dist/cjs/ultramodern-workspace/demo-components.cjs +69 -122
  42. package/dist/cjs/ultramodern-workspace/descriptors.cjs +6 -14
  43. package/dist/cjs/ultramodern-workspace/development-overlay-projection.cjs +89 -0
  44. package/dist/cjs/ultramodern-workspace/fs-io.cjs +4 -1
  45. package/dist/cjs/ultramodern-workspace/generation-result.cjs +36 -12
  46. package/dist/cjs/ultramodern-workspace/index.cjs +2 -5
  47. package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +0 -6
  48. package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +6 -6
  49. package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +37 -38
  50. package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +2 -2
  51. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +3 -4
  52. package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +75 -136
  53. package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +26 -7
  54. package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +7 -48
  55. package/dist/cjs/ultramodern-workspace/module-federation.cjs +3 -0
  56. package/dist/cjs/ultramodern-workspace/naming.cjs +0 -12
  57. package/dist/cjs/ultramodern-workspace/native-app.cjs +102 -0
  58. package/dist/cjs/ultramodern-workspace/native-federation.cjs +134 -0
  59. package/dist/cjs/ultramodern-workspace/overlay-baseline-guard.cjs +198 -47
  60. package/dist/cjs/ultramodern-workspace/overlays.cjs +1 -1
  61. package/dist/cjs/ultramodern-workspace/package-json.cjs +160 -74
  62. package/dist/cjs/ultramodern-workspace/patch-inventory.cjs +149 -0
  63. package/dist/cjs/ultramodern-workspace/policy.cjs +15 -439
  64. package/dist/cjs/ultramodern-workspace/public-surface.cjs +3 -3
  65. package/dist/cjs/ultramodern-workspace/renderer-config-evaluation.cjs +92 -0
  66. package/dist/cjs/ultramodern-workspace/renderer-generation-profile.cjs +74 -0
  67. package/dist/cjs/ultramodern-workspace/renderer-generations.cjs +107 -0
  68. package/dist/cjs/ultramodern-workspace/renderer-identity.cjs +236 -0
  69. package/dist/cjs/ultramodern-workspace/renderer-initial-identity.cjs +88 -0
  70. package/dist/cjs/ultramodern-workspace/renderer-profile.cjs +104 -0
  71. package/dist/cjs/ultramodern-workspace/renderer-templates/react/generation.cjs +58 -0
  72. package/dist/cjs/ultramodern-workspace/routes.cjs +2 -11
  73. package/dist/cjs/ultramodern-workspace/shared-patches.cjs +12 -2
  74. package/dist/cjs/ultramodern-workspace/shells.cjs +1 -70
  75. package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +11 -43
  76. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +15 -47
  77. package/dist/cjs/ultramodern-workspace/validation/architecture.cjs +453 -0
  78. package/dist/cjs/ultramodern-workspace/validation/assertions.cjs +140 -0
  79. package/dist/cjs/ultramodern-workspace/validation/native-shell-runtime.cjs +117 -0
  80. package/dist/cjs/ultramodern-workspace/validation/renderer-framework-evidence.cjs +97 -0
  81. package/dist/cjs/ultramodern-workspace/validation/renderer.cjs +351 -0
  82. package/dist/cjs/ultramodern-workspace/validation/types.cjs +18 -0
  83. package/dist/cjs/ultramodern-workspace/validation/workspace.cjs +389 -0
  84. package/dist/cjs/ultramodern-workspace/versions.cjs +130 -52
  85. package/dist/cjs/ultramodern-workspace/workspace-artifact-ownership.cjs +160 -35
  86. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +41 -18
  87. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +15 -143
  88. package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +70 -371
  89. package/dist/cjs/ultramodern-workspace/write-app.cjs +25 -37
  90. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +86 -64
  91. package/dist/cjs/ultramodern-workspace/zerops.cjs +2 -0
  92. package/dist/esm/cli/flags.js +20 -2
  93. package/dist/esm/cli/help.js +1 -0
  94. package/dist/esm/index.js +10 -5
  95. package/dist/esm/ultramodern-release-cohort.js +37 -16
  96. package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +48 -55
  97. package/dist/esm/ultramodern-tooling/commands/context.js +3 -24
  98. package/dist/esm/ultramodern-tooling/commands/routes-generate-app.js +37 -0
  99. package/dist/esm/ultramodern-tooling/commands/routes-generate.js +29 -56
  100. package/dist/esm/ultramodern-tooling/commands/validate.js +9 -39
  101. package/dist/esm/ultramodern-tooling/commands.js +12 -3
  102. package/dist/esm/ultramodern-tooling/config/index.js +1 -0
  103. package/dist/esm/ultramodern-tooling/config/json.js +4 -2
  104. package/dist/esm/ultramodern-tooling/config/load.js +39 -16
  105. package/dist/esm/ultramodern-tooling/config/metadata.js +41 -2
  106. package/dist/esm/ultramodern-tooling/config/normalize.js +154 -191
  107. package/dist/esm/ultramodern-workspace/add-shell.js +225 -160
  108. package/dist/esm/ultramodern-workspace/add-vertical/execute.js +189 -149
  109. package/dist/esm/ultramodern-workspace/add-vertical/plan.js +35 -159
  110. package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +80 -23
  111. package/dist/esm/ultramodern-workspace/add-vertical/preview.js +41 -0
  112. package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +43 -21
  113. package/dist/esm/ultramodern-workspace/add-vertical/topology.js +45 -45
  114. package/dist/esm/ultramodern-workspace/add-vertical/transaction.js +26 -10
  115. package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +17 -34
  116. package/dist/esm/ultramodern-workspace/add-vertical.js +1 -1
  117. package/dist/esm/ultramodern-workspace/api/client.js +4 -36
  118. package/dist/esm/ultramodern-workspace/api/contracts.js +2 -2
  119. package/dist/esm/ultramodern-workspace/api/rpc.js +17 -15
  120. package/dist/esm/ultramodern-workspace/api/service.js +4 -8
  121. package/dist/esm/ultramodern-workspace/api/shared.js +1 -1
  122. package/dist/esm/ultramodern-workspace/api/write-app-api.js +25 -0
  123. package/dist/esm/ultramodern-workspace/api.js +1 -1
  124. package/dist/esm/ultramodern-workspace/app-files.js +1 -1
  125. package/dist/esm/ultramodern-workspace/backend-federation.js +3 -3
  126. package/dist/esm/ultramodern-workspace/codesmith.js +5 -3
  127. package/dist/esm/ultramodern-workspace/contracts.js +56 -201
  128. package/dist/esm/ultramodern-workspace/delivery-unit-stamp.js +60 -6
  129. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +84 -61
  130. package/dist/esm/ultramodern-workspace/delivery-unit.js +31 -7
  131. package/dist/esm/ultramodern-workspace/demo-components.js +69 -122
  132. package/dist/esm/ultramodern-workspace/descriptors.js +5 -10
  133. package/dist/esm/ultramodern-workspace/development-overlay-projection.js +45 -0
  134. package/dist/esm/ultramodern-workspace/fs-io.js +4 -1
  135. package/dist/esm/ultramodern-workspace/generation-result.js +36 -15
  136. package/dist/esm/ultramodern-workspace/index.js +1 -1
  137. package/dist/esm/ultramodern-workspace/mf-validation/constants.js +1 -4
  138. package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +7 -7
  139. package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +36 -34
  140. package/dist/esm/ultramodern-workspace/mf-validation/validate.js +1 -1
  141. package/dist/esm/ultramodern-workspace/mf-validation.js +1 -2
  142. package/dist/esm/ultramodern-workspace/module-federation/config.js +74 -138
  143. package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +26 -7
  144. package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +7 -48
  145. package/dist/esm/ultramodern-workspace/module-federation.js +1 -1
  146. package/dist/esm/ultramodern-workspace/naming.js +1 -7
  147. package/dist/esm/ultramodern-workspace/native-app.js +64 -0
  148. package/dist/esm/ultramodern-workspace/native-federation.js +86 -0
  149. package/dist/esm/ultramodern-workspace/overlay-baseline-guard.js +197 -46
  150. package/dist/esm/ultramodern-workspace/overlays.js +1 -1
  151. package/dist/esm/ultramodern-workspace/package-json.js +157 -71
  152. package/dist/esm/ultramodern-workspace/patch-inventory.js +111 -0
  153. package/dist/esm/ultramodern-workspace/policy.js +14 -423
  154. package/dist/esm/ultramodern-workspace/public-surface.js +3 -3
  155. package/dist/esm/ultramodern-workspace/renderer-config-evaluation.js +44 -0
  156. package/dist/esm/ultramodern-workspace/renderer-generation-profile.js +36 -0
  157. package/dist/esm/ultramodern-workspace/renderer-generations.js +63 -0
  158. package/dist/esm/ultramodern-workspace/renderer-identity.js +181 -0
  159. package/dist/esm/ultramodern-workspace/renderer-initial-identity.js +47 -0
  160. package/dist/esm/ultramodern-workspace/renderer-profile.js +54 -0
  161. package/dist/esm/ultramodern-workspace/renderer-templates/react/generation.js +20 -0
  162. package/dist/esm/ultramodern-workspace/routes.js +2 -11
  163. package/dist/esm/ultramodern-workspace/shared-patches.js +2 -2
  164. package/dist/esm/ultramodern-workspace/shells.js +4 -67
  165. package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +12 -41
  166. package/dist/esm/ultramodern-workspace/tsconfigs.js +16 -48
  167. package/dist/esm/ultramodern-workspace/validation/architecture.js +404 -0
  168. package/dist/esm/ultramodern-workspace/validation/assertions.js +65 -0
  169. package/dist/esm/ultramodern-workspace/validation/native-shell-runtime.js +76 -0
  170. package/dist/esm/ultramodern-workspace/validation/renderer-framework-evidence.js +48 -0
  171. package/dist/esm/ultramodern-workspace/validation/renderer.js +277 -0
  172. package/dist/esm/ultramodern-workspace/validation/types.js +0 -0
  173. package/dist/esm/ultramodern-workspace/validation/workspace.js +328 -0
  174. package/dist/esm/ultramodern-workspace/versions.js +105 -33
  175. package/dist/esm/ultramodern-workspace/workspace-artifact-ownership.js +153 -34
  176. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +42 -19
  177. package/dist/esm/ultramodern-workspace/workspace-scripts.js +17 -136
  178. package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +72 -373
  179. package/dist/esm/ultramodern-workspace/write-app.js +28 -35
  180. package/dist/esm/ultramodern-workspace/write-workspace.js +94 -69
  181. package/dist/esm/ultramodern-workspace/zerops.js +2 -0
  182. package/dist/esm-node/cli/flags.js +20 -2
  183. package/dist/esm-node/cli/help.js +1 -0
  184. package/dist/esm-node/index.js +10 -5
  185. package/dist/esm-node/ultramodern-release-cohort.js +37 -16
  186. package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +48 -55
  187. package/dist/esm-node/ultramodern-tooling/commands/context.js +3 -24
  188. package/dist/esm-node/ultramodern-tooling/commands/routes-generate-app.js +38 -0
  189. package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +29 -56
  190. package/dist/esm-node/ultramodern-tooling/commands/validate.js +9 -39
  191. package/dist/esm-node/ultramodern-tooling/commands.js +12 -3
  192. package/dist/esm-node/ultramodern-tooling/config/index.js +1 -0
  193. package/dist/esm-node/ultramodern-tooling/config/json.js +4 -2
  194. package/dist/esm-node/ultramodern-tooling/config/load.js +39 -16
  195. package/dist/esm-node/ultramodern-tooling/config/metadata.js +41 -2
  196. package/dist/esm-node/ultramodern-tooling/config/normalize.js +154 -191
  197. package/dist/esm-node/ultramodern-workspace/add-shell.js +225 -160
  198. package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +189 -149
  199. package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +35 -159
  200. package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +80 -23
  201. package/dist/esm-node/ultramodern-workspace/add-vertical/preview.js +42 -0
  202. package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +43 -21
  203. package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +45 -45
  204. package/dist/esm-node/ultramodern-workspace/add-vertical/transaction.js +26 -10
  205. package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +17 -34
  206. package/dist/esm-node/ultramodern-workspace/add-vertical.js +1 -1
  207. package/dist/esm-node/ultramodern-workspace/api/client.js +4 -36
  208. package/dist/esm-node/ultramodern-workspace/api/contracts.js +2 -2
  209. package/dist/esm-node/ultramodern-workspace/api/rpc.js +17 -15
  210. package/dist/esm-node/ultramodern-workspace/api/service.js +4 -8
  211. package/dist/esm-node/ultramodern-workspace/api/shared.js +1 -1
  212. package/dist/esm-node/ultramodern-workspace/api/write-app-api.js +26 -0
  213. package/dist/esm-node/ultramodern-workspace/api.js +1 -1
  214. package/dist/esm-node/ultramodern-workspace/app-files.js +1 -1
  215. package/dist/esm-node/ultramodern-workspace/backend-federation.js +3 -3
  216. package/dist/esm-node/ultramodern-workspace/codesmith.js +5 -3
  217. package/dist/esm-node/ultramodern-workspace/contracts.js +56 -201
  218. package/dist/esm-node/ultramodern-workspace/delivery-unit-stamp.js +60 -6
  219. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +84 -61
  220. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +31 -7
  221. package/dist/esm-node/ultramodern-workspace/demo-components.js +69 -122
  222. package/dist/esm-node/ultramodern-workspace/descriptors.js +5 -10
  223. package/dist/esm-node/ultramodern-workspace/development-overlay-projection.js +46 -0
  224. package/dist/esm-node/ultramodern-workspace/fs-io.js +4 -1
  225. package/dist/esm-node/ultramodern-workspace/generation-result.js +36 -15
  226. package/dist/esm-node/ultramodern-workspace/index.js +1 -1
  227. package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +1 -4
  228. package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +7 -7
  229. package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +36 -34
  230. package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +1 -1
  231. package/dist/esm-node/ultramodern-workspace/mf-validation.js +1 -2
  232. package/dist/esm-node/ultramodern-workspace/module-federation/config.js +74 -138
  233. package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +26 -7
  234. package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +7 -48
  235. package/dist/esm-node/ultramodern-workspace/module-federation.js +1 -1
  236. package/dist/esm-node/ultramodern-workspace/naming.js +1 -7
  237. package/dist/esm-node/ultramodern-workspace/native-app.js +65 -0
  238. package/dist/esm-node/ultramodern-workspace/native-federation.js +87 -0
  239. package/dist/esm-node/ultramodern-workspace/overlay-baseline-guard.js +197 -46
  240. package/dist/esm-node/ultramodern-workspace/overlays.js +1 -1
  241. package/dist/esm-node/ultramodern-workspace/package-json.js +157 -71
  242. package/dist/esm-node/ultramodern-workspace/patch-inventory.js +112 -0
  243. package/dist/esm-node/ultramodern-workspace/policy.js +14 -423
  244. package/dist/esm-node/ultramodern-workspace/public-surface.js +3 -3
  245. package/dist/esm-node/ultramodern-workspace/renderer-config-evaluation.js +45 -0
  246. package/dist/esm-node/ultramodern-workspace/renderer-generation-profile.js +37 -0
  247. package/dist/esm-node/ultramodern-workspace/renderer-generations.js +64 -0
  248. package/dist/esm-node/ultramodern-workspace/renderer-identity.js +182 -0
  249. package/dist/esm-node/ultramodern-workspace/renderer-initial-identity.js +48 -0
  250. package/dist/esm-node/ultramodern-workspace/renderer-profile.js +55 -0
  251. package/dist/esm-node/ultramodern-workspace/renderer-templates/react/generation.js +21 -0
  252. package/dist/esm-node/ultramodern-workspace/routes.js +2 -11
  253. package/dist/esm-node/ultramodern-workspace/shared-patches.js +2 -2
  254. package/dist/esm-node/ultramodern-workspace/shells.js +4 -67
  255. package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +12 -41
  256. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +16 -48
  257. package/dist/esm-node/ultramodern-workspace/validation/architecture.js +405 -0
  258. package/dist/esm-node/ultramodern-workspace/validation/assertions.js +66 -0
  259. package/dist/esm-node/ultramodern-workspace/validation/native-shell-runtime.js +77 -0
  260. package/dist/esm-node/ultramodern-workspace/validation/renderer-framework-evidence.js +49 -0
  261. package/dist/esm-node/ultramodern-workspace/validation/renderer.js +278 -0
  262. package/dist/esm-node/ultramodern-workspace/validation/types.js +1 -0
  263. package/dist/esm-node/ultramodern-workspace/validation/workspace.js +329 -0
  264. package/dist/esm-node/ultramodern-workspace/versions.js +105 -33
  265. package/dist/esm-node/ultramodern-workspace/workspace-artifact-ownership.js +153 -34
  266. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +42 -19
  267. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +17 -136
  268. package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +72 -373
  269. package/dist/esm-node/ultramodern-workspace/write-app.js +28 -35
  270. package/dist/esm-node/ultramodern-workspace/write-workspace.js +94 -69
  271. package/dist/esm-node/ultramodern-workspace/zerops.js +2 -0
  272. package/dist/types/cli/flags.d.ts +3 -0
  273. package/dist/types/ultramodern-release-cohort.d.ts +7 -3
  274. package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -2
  275. package/dist/types/ultramodern-tooling/commands/context.d.ts +0 -1
  276. package/dist/types/ultramodern-tooling/commands/routes-generate-app.d.ts +1 -0
  277. package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +1 -1
  278. package/dist/types/ultramodern-tooling/commands/validate.d.ts +2 -2
  279. package/dist/types/ultramodern-tooling/config/index.d.ts +1 -0
  280. package/dist/types/ultramodern-tooling/config/load.d.ts +57 -58
  281. package/dist/types/ultramodern-tooling/config/metadata.d.ts +3 -0
  282. package/dist/types/ultramodern-tooling/config/normalize.d.ts +9 -88
  283. package/dist/types/ultramodern-tooling/config/types.d.ts +7 -9
  284. package/dist/types/ultramodern-workspace/add-shell.d.ts +3 -3
  285. package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +3 -1
  286. package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +1 -1
  287. package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +12 -4
  288. package/dist/types/ultramodern-workspace/add-vertical/preview.d.ts +4 -0
  289. package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +36 -4
  290. package/dist/types/ultramodern-workspace/add-vertical/topology.d.ts +2 -2
  291. package/dist/types/ultramodern-workspace/add-vertical/transaction.d.ts +4 -1
  292. package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +10 -7
  293. package/dist/types/ultramodern-workspace/add-vertical.d.ts +1 -1
  294. package/dist/types/ultramodern-workspace/api/client.d.ts +1 -2
  295. package/dist/types/ultramodern-workspace/api/rpc.d.ts +1 -1
  296. package/dist/types/ultramodern-workspace/api/write-app-api.d.ts +8 -0
  297. package/dist/types/ultramodern-workspace/api.d.ts +1 -1
  298. package/dist/types/ultramodern-workspace/codesmith.d.ts +1 -0
  299. package/dist/types/ultramodern-workspace/contracts.d.ts +3 -4
  300. package/dist/types/ultramodern-workspace/delivery-unit-schema/types.d.ts +9 -3
  301. package/dist/types/ultramodern-workspace/delivery-unit-stamp.d.ts +3 -2
  302. package/dist/types/ultramodern-workspace/delivery-unit-sync.d.ts +2 -1
  303. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +2 -5
  304. package/dist/types/ultramodern-workspace/descriptors.d.ts +3 -4
  305. package/dist/types/ultramodern-workspace/development-overlay-projection.d.ts +6 -0
  306. package/dist/types/ultramodern-workspace/generation-result.d.ts +4 -0
  307. package/dist/types/ultramodern-workspace/index.d.ts +2 -2
  308. package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +0 -1
  309. package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +2 -3
  310. package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +1 -24
  311. package/dist/types/ultramodern-workspace/mf-validation/validate.d.ts +2 -1
  312. package/dist/types/ultramodern-workspace/mf-validation.d.ts +3 -3
  313. package/dist/types/ultramodern-workspace/module-federation/config.d.ts +3 -1
  314. package/dist/types/ultramodern-workspace/module-federation.d.ts +1 -1
  315. package/dist/types/ultramodern-workspace/naming.d.ts +0 -2
  316. package/dist/types/ultramodern-workspace/native-app.d.ts +2 -0
  317. package/dist/types/ultramodern-workspace/native-federation.d.ts +8 -0
  318. package/dist/types/ultramodern-workspace/overlay-baseline-guard.d.ts +17 -2
  319. package/dist/types/ultramodern-workspace/overlays.d.ts +1 -0
  320. package/dist/types/ultramodern-workspace/package-json.d.ts +3 -3
  321. package/dist/types/ultramodern-workspace/patch-inventory.d.ts +10 -0
  322. package/dist/types/ultramodern-workspace/policy.d.ts +46 -212
  323. package/dist/types/ultramodern-workspace/public-api.d.ts +1 -1
  324. package/dist/types/ultramodern-workspace/renderer-config-evaluation.d.ts +9 -0
  325. package/dist/types/ultramodern-workspace/renderer-generation-profile.d.ts +16 -0
  326. package/dist/types/ultramodern-workspace/renderer-generations.d.ts +7 -0
  327. package/dist/types/ultramodern-workspace/renderer-identity.d.ts +30 -0
  328. package/dist/types/ultramodern-workspace/renderer-initial-identity.d.ts +5 -0
  329. package/dist/types/ultramodern-workspace/renderer-profile.d.ts +7 -0
  330. package/dist/types/ultramodern-workspace/renderer-templates/react/generation.d.ts +2 -0
  331. package/dist/types/ultramodern-workspace/routes.d.ts +6 -1
  332. package/dist/types/ultramodern-workspace/shells.d.ts +1 -14
  333. package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +3 -8
  334. package/dist/types/ultramodern-workspace/tsconfigs.d.ts +5 -2
  335. package/dist/types/ultramodern-workspace/types.d.ts +75 -7
  336. package/dist/types/ultramodern-workspace/validation/architecture.d.ts +2 -0
  337. package/dist/types/ultramodern-workspace/validation/assertions.d.ts +14 -0
  338. package/dist/types/ultramodern-workspace/validation/native-shell-runtime.d.ts +22 -0
  339. package/dist/types/ultramodern-workspace/validation/renderer-framework-evidence.d.ts +10 -0
  340. package/dist/types/ultramodern-workspace/validation/renderer.d.ts +32 -0
  341. package/dist/types/ultramodern-workspace/validation/types.d.ts +9 -0
  342. package/dist/types/ultramodern-workspace/validation/workspace.d.ts +8 -0
  343. package/dist/types/ultramodern-workspace/versions.d.ts +83 -32
  344. package/dist/types/ultramodern-workspace/workspace-artifact-ownership.d.ts +7 -1
  345. package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +2 -2
  346. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +9 -19
  347. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +29 -188
  348. package/dist/types/ultramodern-workspace/write-app.d.ts +1 -2
  349. package/dist/types/ultramodern-workspace/write-workspace.d.ts +2 -4
  350. package/package.json +52 -26
  351. package/{template-workspace/.modernjs/release-cohort.json → release-cohort.json} +150 -50
  352. package/template-workspace/.codex/skills/rspack-tracing/scripts/analyze_trace.js +1 -1
  353. package/template-workspace/README.md.handlebars +51 -36
  354. package/template-workspace/oxfmt.config.ts +1 -0
  355. package/template-workspace/pnpm-workspace.yaml.handlebars +1 -25
  356. package/templates/tsconfig.base.json +124 -0
  357. package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +10 -0
  358. package/templates/workspace/apps/modern.config.ts.handlebars +9 -178
  359. package/templates/workspace/apps/modern.config.ui-plugins.ts.handlebars +28 -0
  360. package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -11
  361. package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +20 -20
  362. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +6 -8
  363. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +3 -3
  364. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +11 -11
  365. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.helpers.tsx.handlebars +1 -1
  366. package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.imports.tsx.handlebars +1 -1
  367. package/templates/workspace-scripts/generate-node-backend-federation.mjs +75 -76
  368. package/templates/workspace-scripts/generate-public-surface-assets.mjs +107 -207
  369. package/templates/workspace-scripts/materialize-zerops-runtime.mjs +336 -94
  370. package/templates/workspace-scripts/proof-cloudflare-version.mjs +81 -458
  371. package/templates/workspace-scripts/proof-node-backend-federation.mjs +217 -43
  372. package/templates/workspace-scripts/proof-workerd-ssr.mjs +906 -282
  373. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +87 -23
  374. package/templates/workspace-scripts/ultramodern-compiler-prepare.mjs +89 -0
  375. package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +49 -148
  376. package/templates/workspace-scripts/ultramodern-typecheck.mjs +9 -65
  377. package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +0 -114
  378. package/dist/cjs/ultramodern-workspace/mf-validation/exposes.cjs +0 -63
  379. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +0 -103
  380. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +0 -87
  381. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +0 -151
  382. package/dist/cjs/ultramodern-workspace/patch-parity.cjs +0 -163
  383. package/dist/esm/ultramodern-workspace/effect-diagnostics.js +0 -76
  384. package/dist/esm/ultramodern-workspace/mf-validation/exposes.js +0 -14
  385. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +0 -65
  386. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +0 -43
  387. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +0 -101
  388. package/dist/esm/ultramodern-workspace/patch-parity.js +0 -99
  389. package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +0 -77
  390. package/dist/esm-node/ultramodern-workspace/mf-validation/exposes.js +0 -15
  391. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +0 -66
  392. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +0 -44
  393. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +0 -102
  394. package/dist/esm-node/ultramodern-workspace/patch-parity.js +0 -100
  395. package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +0 -1
  396. package/dist/types/ultramodern-workspace/mf-validation/exposes.d.ts +0 -11
  397. package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +0 -2
  398. package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +0 -4
  399. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +0 -7
  400. package/dist/types/ultramodern-workspace/patch-parity.d.ts +0 -39
  401. package/template-workspace/patches/@module-federation__bridge-react@2.9.0.patch +0 -47
  402. package/template-workspace/patches/@module-federation__dts-plugin@2.9.0.patch +0 -26
  403. package/template-workspace/patches/@module-federation__modern-js-v3@2.9.0.patch +0 -268
  404. package/template-workspace/patches/@module-federation__runtime-core@2.9.0.patch +0 -13
  405. package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +0 -471
  406. package/template-workspace/patches/msgpackr@2.1.0.patch +0 -30
  407. package/template-workspace/patches/zod@4.5.4.patch +0 -56
  408. package/templates/packages/effect-bff-runtime.ts +0 -2
  409. package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mts +0 -9
  410. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +0 -4046
package/README.md CHANGED
@@ -1,23 +1,19 @@
1
- <p align="center">
2
- <a href="https://modernjs.dev" target="blank"><img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/ylaelkeh7nuhfnuhf/modernjs-cover.png" width="300" alt="Modern.js Logo" /></a>
3
- </p>
1
+ # UltraModern.js Create
4
2
 
5
- <h1 align="center">Modern.js</h1>
3
+ Create an UltraModern.js workspace with React, Solid 2, or Octane. React is the
4
+ default SuperApp profile; Solid and Octane provide standalone Node SSR and CSR
5
+ preview profiles with their native authoring and router APIs.
6
6
 
7
- <p align="center">
8
- A Progressive React Framework for modern web development.
9
- </p>
10
-
11
- ## UltraModern.js Create
12
-
13
- The BleedingDev create package has one supported generated product: an UltraModern SuperApp workspace. New scaffolds use TanStack Router.
7
+ Replace `<V>` with the exact published UltraModern package cohort version:
14
8
 
15
9
  ```bash
16
- pnpm dlx @bleedingdev/modern-js-ultramodern-create my-workspace
10
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> my-workspace
11
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> my-solid-workspace --renderer solid
12
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> my-octane-workspace --renderer octane
17
13
  ```
18
14
 
19
15
  The supported pnpm command contract is the scoped package specifier above:
20
- `pnpm dlx @bleedingdev/modern-js-ultramodern-create <target>`. Do not shorten it
16
+ `pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> <target>`. Do not shorten it
21
17
  to `pnpm dlx modern-js-ultramodern-create`; there is no unscoped
22
18
  `modern-js-ultramodern-create` npm package. Release proof runs this scoped form
23
19
  from a temporary pnpm store/cache so it cannot pass because of a local link
@@ -26,18 +22,51 @@ cache.
26
22
  To initialize the empty directory you are already in, pass `.` explicitly:
27
23
 
28
24
  ```bash
29
- pnpm dlx @bleedingdev/modern-js-ultramodern-create .
25
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> .
30
26
  ```
31
27
 
28
+ ## Renderer Selection
29
+
30
+ `--renderer react|solid|octane` selects the initial scaffold only. Existing
31
+ workspace additions read the renderer from the owning `modern.config.ts` and
32
+ reject `--renderer`. That config is the single selector for the compiler,
33
+ runtime, router, and generated entries:
34
+
35
+ ```ts
36
+ import { defineConfig } from '@modern-js/ultramodern-app-tools';
37
+
38
+ export default defineConfig({
39
+ renderer: 'solid',
40
+ server: { ssr: true },
41
+ });
42
+ ```
43
+
44
+ Restart the dev server after changing `renderer`, and author app sources for
45
+ the selected renderer. `defineConfig` selects the native compiler; do not add
46
+ a second compiler or base app-tools plugin.
47
+
48
+ | Renderer | Application authoring | Router imports |
49
+ | --- | --- | --- |
50
+ | Solid 2 RC | `solid-js`, `@solidjs/web` | `@modern-js/renderer-solid/router` |
51
+ | Octane | `octane` | `@modern-js/renderer-octane/router` |
52
+
53
+ Solid and Octane previews support plain Node SSR with hydration and CSR. They
54
+ require the admitted package cohort and reject unsupported capabilities:
55
+ Module Federation, Worker deployment, RSC, SSG, framework i18n, SVG component
56
+ imports, and CSS declaration emission beside authored source. There is no CLI
57
+ preview override. The SuperApp federation and
58
+ Cloudflare guidance below applies to the React profile.
59
+
32
60
  The workspace starts shell-only so the first commit has no fake business
33
61
  domains to delete. It generates:
34
62
 
35
- - `apps/shell-super-app` as the Module Federation host and topology owner.
63
+ - `apps/shell-super-app` as the initial app and topology owner; React also
64
+ makes it the Module Federation host.
36
65
  - `verticals/*` empty until a real domain is added with `--vertical`.
37
66
  - `packages/shared-*` placeholders for shared contracts, tokens, and Effect
38
67
  API support.
39
- - `.modernjs/ultramodern.json` as compact generator provenance, package-source
40
- config, app topology, bridge, deploy, Module Federation, and tooling config.
68
+ - `catalogs.ultramodern` in `pnpm-workspace.yaml` for published framework
69
+ dependency versions, referenced by application manifests.
41
70
  - `topology/*` as app-owned topology, ownership, and local development overlay
42
71
  JSON.
43
72
 
@@ -51,15 +80,26 @@ pnpm check
51
80
  pnpm build
52
81
  ```
53
82
 
54
- The generated toolchain pins Node `26.7.0`, pnpm `11.24.0`, and
55
- `@types/node@^26.4.1`; its engine baseline remains Node `>=26` with pnpm `11+`.
83
+ Start the shell during development, or serve its production build:
84
+
85
+ ```bash
86
+ pnpm dev:shell
87
+ pnpm --filter "./apps/shell-super-app" serve
88
+ ```
89
+
90
+ Run these as separate commands. Use the matching app directory in the filter
91
+ to serve an added app.
92
+
93
+ The generated toolchain pins Node `26.10.0`, pnpm `12.8.1`, and
94
+ `@types/node@26.6.4`; the generator requires Node `>=26.10.0`, and generated
95
+ workspaces declare an engine baseline of Node `>=26` with pnpm `12+`.
56
96
  `packageManager`, `.mise.toml`, generated validation, and CI should all agree
57
97
  on those values; do not reintroduce Corepack or older pnpm aliases.
58
98
 
59
- The current generated dependency cohort also pins `@effect/tsgo@0.41.0`,
60
- `@tanstack/react-router@1.170.33`, `@tanstack/router-core@1.171.28`,
61
- `@tanstack/history@1.162.2`, and the Module Federation integration `2.9.0`
62
- cohort, `@module-federation/node@2.7.50`. Move these only through the
99
+ The current React dependency cohort also pins `@effect/tsgo@0.59.0`,
100
+ `@tanstack/react-router@1.170.41`, `@tanstack/router-core@1.171.34`,
101
+ `@tanstack/history@1.162.4`, and the Module Federation integration `2.9.2`
102
+ cohort, `@module-federation/node@2.7.52`. Move these only through the
63
103
  generator-owned version policy so templates, validation, and the published
64
104
  workspace contract stay aligned.
65
105
 
@@ -80,18 +120,37 @@ pnpm --filter @modern-js/ultramodern-create build
80
120
  ```
81
121
 
82
122
  That command lets Rslib emit runtime modules and declarations together through
83
- the installed stable TypeScript 7 backend. The same declaration configuration
123
+ the repository's compiler integration. The same declaration configuration
84
124
  stays active during `rslib build --watch`. Run
85
125
  `pnpm --filter @modern-js/ultramodern-create test` when changing generator behavior; it
86
126
  includes a boundary test that scans generator sources, templates, and generated
87
127
  workspace output for compiler API imports.
88
128
 
89
- Generated app packages keep stable `typescript` on TS7 so Modern/Rspack and
90
- `@effect/tsgo` use TS-Go by default. Generated app/package source must not
129
+ Generated workspaces and apps pin `tsrs@0.20.0-ts7.1.0-beta` and
130
+ `@effect/tsgo@0.59.0`. Root postinstall runs
131
+ `ultramodern-create ultramodern compiler-prepare` before skills install.
132
+ The installed tsrs platform metadata selects the official
133
+ `effect-tsgo tsrs --version` readiness check on supported hosts.
134
+ Hosts without a declared native tsrs package use `effect-tsgo tsc --version`
135
+ and print an explicit Effect-Go notice. Missing supported artifacts remain
136
+ fatal. These official proxy commands run the provider's Effect-enabled
137
+ binaries without changing the package store.
138
+ The shared compiler resolver selects the provider's tsrs for generated React and
139
+ Solid checks and Modern/Rspack builds, or Effect-Go on unsupported tsrs hosts.
140
+ The installed typecheck command sets
141
+ `TSRS_CHECKER_ASSIGNMENT` to the caller's explicit value or `go` by default,
142
+ and does not add `--checkers` or `--builders` in build mode. Octane apps retain
143
+ `octane-tsc` for their native TS7 checker.
144
+ All renderer profiles retain exact stable `typescript@7.0.2` for metadata and
145
+ tool dependencies. This is separate from tsrs's embedded TypeScript
146
+ `7.1.0-beta`. Only these exact compiler releases and their declared native
147
+ platform packages receive a release-age exception; the strict 24-hour gate
148
+ still applies to other packages apart from the authenticated release cohort.
149
+ Generated app/package source must not
91
150
  depend on compiler API internals. If a future AST utility is needed, keep it
92
151
  behind a dedicated TypeScript adapter and test it against stable `typescript`.
93
152
 
94
- Generated CI does not call the local aggregate. It runs format, lint,
153
+ Generated React CI does not call the local aggregate. It runs format, lint,
95
154
  typecheck, skills, i18n boundary validation, contract validation, and build as
96
155
  separate matrix jobs so failures are isolated and parallelizable. Generated
97
156
  lefthook config runs separate format and lint-fix commands on pre-commit, then
@@ -100,7 +159,7 @@ runs the read-only primitive gates in parallel on pre-push.
100
159
  For local monorepo dependency testing, add `--workspace`:
101
160
 
102
161
  ```bash
103
- pnpm dlx @bleedingdev/modern-js-ultramodern-create my-workspace --workspace
162
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> my-workspace --workspace
104
163
  ```
105
164
 
106
165
  For package-source validation outside the monorepo, pass explicit
@@ -119,26 +178,26 @@ import {
119
178
  planUltramodernVertical,
120
179
  } from '@modern-js/ultramodern-create/ultramodern-workspace';
121
180
 
122
- const workspace = generateUltramodernWorkspace({
181
+ const workspace = await generateUltramodernWorkspace({
123
182
  targetDir: '/tmp/my-workspace',
124
183
  packageName: 'my-workspace',
125
- modernVersion: '3.4.0',
184
+ modernVersion: '<V>',
126
185
  packageSource: {
127
186
  strategy: 'install',
128
- modernPackageVersion: '3.4.0',
187
+ modernPackageVersion: '<V>',
129
188
  },
130
189
  });
131
190
 
132
- const plan = planUltramodernVertical({
191
+ const plan = await planUltramodernVertical({
133
192
  workspaceRoot: workspace.workspaceRoot,
134
193
  name: 'new-vertical',
135
- modernVersion: '3.4.0',
194
+ modernVersion: '<V>',
136
195
  });
137
196
 
138
- const vertical = addUltramodernVertical({
197
+ const vertical = await addUltramodernVertical({
139
198
  workspaceRoot: workspace.workspaceRoot,
140
199
  name: 'new-vertical',
141
- modernVersion: '3.4.0',
200
+ modernVersion: '<V>',
142
201
  });
143
202
  ```
144
203
 
@@ -148,13 +207,13 @@ Workspace generation returns `operation`, `workspaceRoot`, `packageScope`,
148
207
  `generatedContractPath`, and `warnings`. MicroVertical addition returns the
149
208
  same shape for the new vertical and all rewritten integration surfaces.
150
209
 
151
- Dry-run is available for MicroVertical addition only. The CLI prints the plan as
210
+ MicroVertical addition supports dry-run. The CLI prints the plan as
152
211
  JSON and writes no files:
153
212
 
154
213
  ```bash
155
- pnpm dlx @bleedingdev/modern-js-ultramodern-create new-vertical --vertical --dry-run
156
- pnpm dlx @bleedingdev/modern-js-ultramodern-create --vertical=new-vertical --dry-run
157
- pnpm dlx @bleedingdev/modern-js-ultramodern-create --vertical-name new-vertical --dry-run
214
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> new-vertical --vertical --dry-run
215
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> --vertical=new-vertical --dry-run
216
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> --vertical-name new-vertical --dry-run
158
217
  ```
159
218
 
160
219
  The dry-run object adds `dryRun: true`, `selectedPort`,
@@ -162,45 +221,49 @@ The dry-run object adds `dryRun: true`, `selectedPort`,
162
221
  `shellDependencyChanges`, and `generatedContractChanges`. It still validates
163
222
  the workspace before returning a plan.
164
223
 
165
- Validation runs before the first filesystem write. Failures name the owning
224
+ Validation runs before publishing generated output to the target workspace.
225
+ Failures name the owning
166
226
  contract so automation can stop safely:
167
227
 
168
228
  | Failure area | Typical cause | Fix |
169
229
  | --- | --- | --- |
170
230
  | Fresh input | Invalid or missing vertical name | Use `<name> --vertical`, `--vertical=<name>`, or `--vertical-name <name>` |
171
231
  | Existing topology | Duplicate app ID, package suffix, path, Module Federation name, port, API prefix, or manifest key | Choose a new vertical name or repair the existing topology/local overlay first |
172
- | Workspace files | Missing or non-object compact UltraModern config, topology, ownership, or local overlay JSON | Restore the generated config files from source control or rerun from a valid workspace |
232
+ | Workspace files | Missing or invalid topology, ownership, local overlay or app manifest | Repair the named authoritative file |
173
233
  | Tailwind prefix | Existing app already owns the generated CSS prefix | Rename the vertical before generation |
174
234
  | Output path | A generated path already exists | Treat it as an existing vertical and do not overwrite it |
175
235
 
176
- Package source is explicit and recorded in `.modernjs/ultramodern.json`.
236
+ Package source is selected by the installed generator dependency and native pnpm catalog.
237
+ Application manifests own package identity; the development overlay owns local ports.
177
238
 
178
239
  | Strategy | Use when | CLI |
179
240
  | --- | --- | --- |
180
241
  | `install` | Published BleedingDev package cohort or release proof | Default for the BleedingDev create package; optional `--ultramodern-package-version`, `--ultramodern-package-registry` (serves the cohort scope only; release-age metadata for every other dependency is validated against npmjs), `--ultramodern-package-scope`, and `--ultramodern-package-name-prefix` |
181
242
  | `workspace` | Local monorepo testing against unreleased packages | `--workspace` or `--ultramodern-package-source=workspace` |
182
243
 
183
- ## Framework Cohort
184
-
185
- Generated strict Effect workspaces pin the compatible Effect cohort through
186
- `pnpm-workspace.yaml` overrides: `effect@4.0.0-rc.112`,
187
- `@effect/opentelemetry@4.0.0-rc.112`, and
188
- `@effect/vitest@4.0.0-rc.112` (requiring `vitest >=4.1.0 <5`). The strict
189
- 24-hour release-age gate applies to the installed cohort; the current policy carries no Effect age exemption, and
190
- the override-only `@effect/vitest` entry is not an installed approval target.
191
- Separately, exact
192
- `trustPolicyExclude` entries for `effect` and `@effect/opentelemetry` cover the
193
- trusted-publisher to provenance transition. Trust exclusions are not
194
- release-age approvals. Do not override the cohort in app packages; update the
195
- framework cohort when the runtime moves.
196
-
197
- Use `--ultramodern-package-source=install` for published cohort proof and pin a
198
- specific release with `--ultramodern-package-version` when CI must prove an
199
- exact framework version. Keep `--workspace` only for local monorepo testing
200
- against unpublished packages. After install, run the generated
201
- `scripts/validate-ultramodern-workspace.mts` contract check and fix ownership
202
- conflicts in the owning JSON/config files instead of editing generated metadata
203
- by hand.
244
+ ## Framework dependencies
245
+
246
+ Published framework versions live in `catalogs.ultramodern` in
247
+ `pnpm-workspace.yaml`. Application manifests reference `catalog:ultramodern`;
248
+ the lockfile records resolved packages. Corrected third-party dependencies ship
249
+ as published packages. Applications do not install framework patches or carry
250
+ a copied release manifest.
251
+
252
+ Use `--ultramodern-package-source=install` for published package acceptance and
253
+ `--ultramodern-package-version` to select an exact release. Use `--workspace`
254
+ for local monorepo development. After installation, run `pnpm contract:check`,
255
+ which invokes the installed CLI directly. The installed generator owns its
256
+ release-integrity metadata.
257
+
258
+ Normal installs retain the generated strict 24-hour release-age and trust
259
+ policy. The one exception is `minimumReleaseAgeExclude`: it lists the exact
260
+ `package@version` of every package in the cohort the create package ships, so a
261
+ workspace created on the day that cohort is published can install it. Every
262
+ other dependency still waits 24 hours, including a cohort selected with
263
+ `--ultramodern-package-version` that differs from the create package's own; to
264
+ install a fresh cohort on publish day, run that release's create package.
265
+ Release acceptance adds exact, temporary exceptions for the sidecars under test
266
+ on the command line.
204
267
 
205
268
  ## CodeSmith Adapter And Overlays
206
269
 
@@ -218,9 +281,9 @@ await ultramodernCodeSmith({
218
281
  mode: 'workspace',
219
282
  name: 'my-workspace',
220
283
  targetDir: '/tmp/my-workspace',
221
- modernVersion: '3.4.0',
284
+ modernVersion: '<V>',
222
285
  packageSourceStrategy: 'install',
223
- modernPackageVersion: '3.4.0',
286
+ modernPackageVersion: '<V>',
224
287
  },
225
288
  });
226
289
 
@@ -243,15 +306,15 @@ Overlays are explicit CodeSmith generators that run after base workspace or
243
306
  MicroVertical generation:
244
307
 
245
308
  ```bash
246
- pnpm dlx @bleedingdev/modern-js-ultramodern-create new-vertical --vertical \
309
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> new-vertical --vertical \
247
310
  --codesmith-overlay ./generators/vertical-overlay
248
311
  ```
249
312
 
250
313
  ```ts
251
- addUltramodernVertical({
314
+ await addUltramodernVertical({
252
315
  workspaceRoot: '/tmp/my-workspace',
253
316
  name: 'new-vertical',
254
- modernVersion: '3.4.0',
317
+ modernVersion: '<V>',
255
318
  overlays: [
256
319
  {
257
320
  generator: './generators/vertical-overlay',
@@ -278,9 +341,9 @@ overlay, ownership entry, strict Effect HttpApi surface, and root `dev:*` script
278
341
  requested vertical name.
279
342
 
280
343
  ```bash
281
- pnpm dlx @bleedingdev/modern-js-ultramodern-create catalog --vertical
282
- pnpm dlx @bleedingdev/modern-js-ultramodern-create --vertical=catalog
283
- pnpm dlx @bleedingdev/modern-js-ultramodern-create --vertical-name catalog
344
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> catalog --vertical
345
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> --vertical=catalog
346
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> --vertical-name catalog
284
347
  ```
285
348
 
286
349
  Use this decision table before adding a vertical:
@@ -295,18 +358,60 @@ Use this decision table before adding a vertical:
295
358
 
296
359
  ## SuperApp Architecture Contracts
297
360
 
298
- The generated shell owns route assembly and policy. Each vertical added with
361
+ Generated React `modern.config.ts` files declare their app identity through
362
+ `presetUltramodernWorkspace(config, { appId, from: import.meta.url })` inside
363
+ the renderer-selecting `defineConfig` from `@modern-js/ultramodern-app-tools`,
364
+ and keep ordinary Modern.js plugins and authored configuration. The preset
365
+ resolves `topology/reference-topology.json` and the development overlay when
366
+ the config loads. Fork-owned packages apply deployment targets, ports, asset
367
+ origins, CORS, Cloudflare bindings, build/cache directories, release identity,
368
+ and Zephyr deployment policy. Authored values override preset defaults; native
369
+ builder hooks and plugins compose normally. Solid and Octane apps select their
370
+ renderer directly with `defineConfig({ renderer })`.
371
+
372
+ Adding a shell or vertical updates topology, overlays, and generated workspace
373
+ metadata without rewriting any existing `modern.config.ts`. Application
374
+ configs belong to their authors from the moment they are created. New apps
375
+ receive a config scaffold with their own stable `appId`; changing a port or
376
+ shell composition takes effect through the canonical workspace inputs.
377
+
378
+ The React SuperApp shell owns route assembly and policy. Each React vertical added with
299
379
  `--vertical` owns its route subtree, Module Federation exposes, Effect BFF
300
380
  contract, generated client, `localisedUrls`, locale JSON, CSS layer, and
301
381
  Cloudflare Worker output. The shell consumes vertical UI through Module
302
382
  Federation manifests and vertical APIs through generated Effect clients
303
383
  exported by the vertical packages.
304
384
 
385
+ Shell routes load federated modules through `createLazyComponent` or the
386
+ generated loaders. A route that drives the runtime itself calls
387
+ `loadRemote()` or `loadShare()` on the instance from `getInstance()`
388
+ (`@module-federation/modern-js-v3/runtime`), and only inside the true branch
389
+ of `import.meta.env.MODERN_TARGET === 'browser'`:
390
+
391
+ ```tsx
392
+ import { getInstance } from '@module-federation/modern-js-v3/runtime';
393
+
394
+ export const loadWidget = () => {
395
+ if (import.meta.env.MODERN_TARGET === 'browser') {
396
+ const host = getInstance();
397
+ if (host !== null) return host.loadRemote('inventory/Widget');
398
+ }
399
+ return undefined;
400
+ };
401
+ ```
402
+
403
+ The React composition defines `import.meta.env.MODERN_TARGET` per bundle as
404
+ `'browser'` or `'node'`, the same value as `process.env.MODERN_TARGET`, so the
405
+ server bundle drops the branch. Shell routes must not read `process.env`:
406
+ `pnpm typecheck` rejects it through Effect's `processEnv` rule and
407
+ `pnpm contract:check` rejects it too.
408
+
305
409
  Route metadata is route-owned and colocated in
306
- `src/routes/**/route.meta.ts`. The scaffold regenerates
307
- `src/routes/ultramodern-route-metadata.ts` as a generated route manifest for
308
- Modern.js config, i18n, public head, and public surface contracts; authors
309
- should not hand-maintain it. Locale JSON is served from
410
+ `src/routes/**/route.meta.ts`; each file exports `routeMeta`.
411
+ `ultramodern-create ultramodern routes-generate` (run before every app `dev`
412
+ and `build`) regenerates `src/routes/ultramodern-route-metadata.ts` as a
413
+ formatted route manifest for Modern.js config, i18n, public head, and public
414
+ surface contracts; authors should not hand-maintain it. Locale JSON is served from
310
415
  `/locales/{{lng}}/{{ns}}.json`; Czech and English routes are generated from the
311
416
  route owner, not from shell rewrites.
312
417
 
@@ -375,17 +480,18 @@ where assets load from.
375
480
 
376
481
  ## Cloudflare And Zephyr Proof
377
482
 
378
- Each generated workspace app has:
483
+ Each generated React workspace app has:
379
484
 
380
485
  - `cloudflare:build`, `cloudflare:deploy`, `cloudflare:preview`, and
381
486
  `cloudflare:proof` scripts.
382
- - Cloudflare Worker deploy config from Modern config plus
383
- `.modernjs/ultramodern.json`.
487
+ - Cloudflare Worker deploy config emitted from native Modern config.
384
488
  - `zephyr:dependencies` for any consumed verticals.
385
- - `zephyr-rspack-plugin` wired through the generated Modern.js Rspack bridge.
489
+ - `zephyr-rspack-plugin` composed by the fork-owned workspace preset for UI
490
+ apps. It activates only when `ZE_CI_TOKEN` is present; the deploy environment
491
+ must also set `ZE_FAIL_BUILD=true`. Ordinary builds require no Zephyr token.
386
492
 
387
493
  Deploy first, then pass each deployed app's generated public URL env key into
388
- the proof step. The proof script reads the compact UltraModern config and checks the
494
+ the proof step. The installed proof command reads topology and deployment contracts and checks the
389
495
  Cloudflare Worker surface, including public-route sitemap/robots consistency,
390
496
  preview noindex behavior, unknown-route status, asset headers, byte budgets,
391
497
  and public sourcemap exposure. Shell-only workspaces only need the shell URL;
@@ -407,10 +513,10 @@ proven.
407
513
 
408
514
  | Symptom | Current check | Owner |
409
515
  | --- | --- | --- |
410
- | Package cohort mismatch | Regenerate with one package source strategy, run `mise install`, then rerun `pnpm install` from the activated shell. | Generated workspace package source metadata |
516
+ | Package version mismatch | Align the native framework catalog and regenerate the lockfile with `pnpm install`. | Workspace dependency manifests |
411
517
  | Install failure | Check the active Node/pnpm from `mise install`; rerun `pnpm install` after the shell sees the pinned versions. | Toolchain setup |
412
518
  | Build failure | Run the matching primitive gate (`pnpm lint`, `pnpm typecheck`, `pnpm i18n:boundaries`, `pnpm contract:check`) before `pnpm build`; fix the owning failure first. | Owning package or generated contract |
413
- | Missing public URL | Set the app public URL env key recorded in `.modernjs/ultramodern.json`, for example `ULTRAMODERN_PUBLIC_URL_SHELL_SUPER_APP`. | Deployment operator |
519
+ | Missing public URL | Set the app public URL env key declared in topology, for example `ULTRAMODERN_PUBLIC_URL_SHELL_SUPER_APP`. | Deployment operator |
414
520
  | Cloudflare credentials | Confirm Wrangler credentials before `pnpm cloudflare:deploy`; local checks do not prove live Worker access. | Deployment operator |
415
521
  | Asset or CSS 404 | Rebuild with `pnpm build` or `pnpm cloudflare:deploy` and inspect emitted Modern/Rspack asset paths instead of hardcoding CSS URLs. | Framework/runtime asset pipeline |
416
522
  | Federation manifest failure | Run the shell and vertical build scripts, then check each deployed `/mf-manifest.json` URL used by the shell. | Module Federation owner |
@@ -33,6 +33,7 @@ __webpack_require__.d(__webpack_exports__, {
33
33
  DRY_RUN_FLAG: ()=>DRY_RUN_FLAG,
34
34
  HORIZONTAL_REMOTE_FLAG: ()=>HORIZONTAL_REMOTE_FLAG,
35
35
  PRESET_FLAG: ()=>PRESET_FLAG,
36
+ RENDERER_FLAG: ()=>RENDERER_FLAG,
36
37
  VERTICAL_FLAG: ()=>VERTICAL_FLAG,
37
38
  WORKSPACE_PROTOCOL_FLAG: ()=>WORKSPACE_PROTOCOL_FLAG,
38
39
  collectPositionalArgs: ()=>collectPositionalArgs,
@@ -44,6 +45,7 @@ __webpack_require__.d(__webpack_exports__, {
44
45
  detectHorizontalRemoteFlag: ()=>detectHorizontalRemoteFlag,
45
46
  detectLanguage: ()=>detectLanguage,
46
47
  detectPresetFlag: ()=>detectPresetFlag,
48
+ detectRendererFlag: ()=>detectRendererFlag,
47
49
  detectTailwindFlag: ()=>detectTailwindFlag,
48
50
  getOptionValue: ()=>getOptionValue,
49
51
  readBridgeCliOptions: ()=>readBridgeCliOptions,
@@ -51,6 +53,7 @@ __webpack_require__.d(__webpack_exports__, {
51
53
  });
52
54
  const index_cjs_namespaceObject = require("../locale/index.cjs");
53
55
  const bridge_config_cjs_namespaceObject = require("../ultramodern-workspace/bridge-config.cjs");
56
+ const renderer_profile_cjs_namespaceObject = require("../ultramodern-workspace/renderer-profile.cjs");
54
57
  const WORKSPACE_PROTOCOL_FLAG = '--workspace';
55
58
  const DRY_RUN_FLAG = '--dry-run';
56
59
  const VERTICAL_FLAG = '--vertical';
@@ -59,6 +62,7 @@ const CODESMITH_OVERLAY_FLAG = '--codesmith-overlay';
59
62
  const PRESET_FLAG = '--preset';
60
63
  const API_PROTOCOL_FLAG = '--api-protocol';
61
64
  const HORIZONTAL_REMOTE_FLAG = '--horizontal-remote';
65
+ const RENDERER_FLAG = '--renderer';
62
66
  const SUPPORTED_PRESETS = [
63
67
  'full-stack',
64
68
  'api-only',
@@ -123,6 +127,7 @@ function collectPositionalArgs(args) {
123
127
  const optionWithValue = new Set([
124
128
  '--lang',
125
129
  '-l',
130
+ RENDERER_FLAG,
126
131
  BFF_RUNTIME_OPTION,
127
132
  '--ultramodern-package-source',
128
133
  '--ultramodern-package-version',
@@ -158,7 +163,7 @@ function collectPositionalArgs(args) {
158
163
  i += 1;
159
164
  continue;
160
165
  }
161
- if (!(arg.startsWith('--lang=') || arg.startsWith(`${BFF_RUNTIME_OPTION}=`) || arg.startsWith('--ultramodern-package-source=') || arg.startsWith('--ultramodern-package-version=') || arg.startsWith('--ultramodern-package-registry=') || arg.startsWith('--ultramodern-package-scope=') || arg.startsWith('--ultramodern-package-name-prefix=') || arg.startsWith(`${VERTICAL_FLAG}=`) || arg.startsWith(`${VERTICAL_NAME_FLAG}=`) || arg.startsWith(`${CODESMITH_OVERLAY_FLAG}=`) || arg.startsWith(`${PRESET_FLAG}=`) || arg.startsWith(`${API_PROTOCOL_FLAG}=`) || bridge_config_cjs_namespaceObject.ultramodernBridgeCliBooleanFlags.some((flag)=>arg.startsWith(`${flag}=`)) || bridge_config_cjs_namespaceObject.ultramodernBridgeCliValueFlags.some((flag)=>arg.startsWith(`${flag}=`)))) positionalArgs.push(arg);
166
+ if (!(arg.startsWith('--lang=') || arg.startsWith(`${RENDERER_FLAG}=`) || arg.startsWith(`${BFF_RUNTIME_OPTION}=`) || arg.startsWith('--ultramodern-package-source=') || arg.startsWith('--ultramodern-package-version=') || arg.startsWith('--ultramodern-package-registry=') || arg.startsWith('--ultramodern-package-scope=') || arg.startsWith('--ultramodern-package-name-prefix=') || arg.startsWith(`${VERTICAL_FLAG}=`) || arg.startsWith(`${VERTICAL_NAME_FLAG}=`) || arg.startsWith(`${CODESMITH_OVERLAY_FLAG}=`) || arg.startsWith(`${PRESET_FLAG}=`) || arg.startsWith(`${API_PROTOCOL_FLAG}=`) || bridge_config_cjs_namespaceObject.ultramodernBridgeCliBooleanFlags.some((flag)=>arg.startsWith(`${flag}=`)) || bridge_config_cjs_namespaceObject.ultramodernBridgeCliValueFlags.some((flag)=>arg.startsWith(`${flag}=`)))) positionalArgs.push(arg);
162
167
  }
163
168
  }
164
169
  return positionalArgs;
@@ -245,6 +250,21 @@ function detectDryRunFlag(args) {
245
250
  }
246
251
  return args.includes(DRY_RUN_FLAG);
247
252
  }
253
+ function detectRendererFlag(args) {
254
+ const requested = args.some((arg)=>arg === RENDERER_FLAG || arg.startsWith(`${RENDERER_FLAG}=`));
255
+ if (!requested) return;
256
+ const renderer = getOptionValue(args, [
257
+ RENDERER_FLAG
258
+ ]);
259
+ if (!(0, renderer_profile_cjs_namespaceObject.isApplicationRenderer)(renderer)) throw new Error(`${RENDERER_FLAG} requires react, solid or octane.`);
260
+ const values = args.flatMap((arg, index)=>arg === RENDERER_FLAG ? [
261
+ args[index + 1]
262
+ ] : arg.startsWith(`${RENDERER_FLAG}=`) ? [
263
+ arg.slice(`${RENDERER_FLAG}=`.length)
264
+ ] : []);
265
+ if (values.some((value)=>value !== renderer)) throw new Error('Conflicting renderer selections. Choose one renderer when creating the workspace.');
266
+ return renderer;
267
+ }
248
268
  function detectCodeSmithOverlays(args) {
249
269
  const overlays = [];
250
270
  for(let i = 0; i < args.length; i++){
@@ -316,6 +336,7 @@ exports.CODESMITH_OVERLAY_FLAG = __webpack_exports__.CODESMITH_OVERLAY_FLAG;
316
336
  exports.DRY_RUN_FLAG = __webpack_exports__.DRY_RUN_FLAG;
317
337
  exports.HORIZONTAL_REMOTE_FLAG = __webpack_exports__.HORIZONTAL_REMOTE_FLAG;
318
338
  exports.PRESET_FLAG = __webpack_exports__.PRESET_FLAG;
339
+ exports.RENDERER_FLAG = __webpack_exports__.RENDERER_FLAG;
319
340
  exports.VERTICAL_FLAG = __webpack_exports__.VERTICAL_FLAG;
320
341
  exports.WORKSPACE_PROTOCOL_FLAG = __webpack_exports__.WORKSPACE_PROTOCOL_FLAG;
321
342
  exports.collectPositionalArgs = __webpack_exports__.collectPositionalArgs;
@@ -327,6 +348,7 @@ exports.detectExplicitTailwindFlag = __webpack_exports__.detectExplicitTailwindF
327
348
  exports.detectHorizontalRemoteFlag = __webpack_exports__.detectHorizontalRemoteFlag;
328
349
  exports.detectLanguage = __webpack_exports__.detectLanguage;
329
350
  exports.detectPresetFlag = __webpack_exports__.detectPresetFlag;
351
+ exports.detectRendererFlag = __webpack_exports__.detectRendererFlag;
330
352
  exports.detectTailwindFlag = __webpack_exports__.detectTailwindFlag;
331
353
  exports.getOptionValue = __webpack_exports__.getOptionValue;
332
354
  exports.readBridgeCliOptions = __webpack_exports__.readBridgeCliOptions;
@@ -337,6 +359,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
337
359
  "DRY_RUN_FLAG",
338
360
  "HORIZONTAL_REMOTE_FLAG",
339
361
  "PRESET_FLAG",
362
+ "RENDERER_FLAG",
340
363
  "VERTICAL_FLAG",
341
364
  "WORKSPACE_PROTOCOL_FLAG",
342
365
  "collectPositionalArgs",
@@ -348,6 +371,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
348
371
  "detectHorizontalRemoteFlag",
349
372
  "detectLanguage",
350
373
  "detectPresetFlag",
374
+ "detectRendererFlag",
351
375
  "detectTailwindFlag",
352
376
  "getOptionValue",
353
377
  "readBridgeCliOptions",
@@ -54,6 +54,7 @@ function showHelp() {
54
54
  console.log(index_cjs_namespaceObject.i18n.t(index_cjs_namespaceObject.localeKeys.help.optionHelp));
55
55
  console.log(index_cjs_namespaceObject.i18n.t(index_cjs_namespaceObject.localeKeys.help.optionVersion));
56
56
  console.log(index_cjs_namespaceObject.i18n.t(index_cjs_namespaceObject.localeKeys.help.optionLang));
57
+ console.log(' --renderer <react|solid|octane> Select the native application renderer.');
57
58
  console.log(index_cjs_namespaceObject.i18n.t(index_cjs_namespaceObject.localeKeys.help.optionTailwind));
58
59
  console.log(index_cjs_namespaceObject.i18n.t(index_cjs_namespaceObject.localeKeys.help.optionBff));
59
60
  console.log(index_cjs_namespaceObject.i18n.t(index_cjs_namespaceObject.localeKeys.help.optionBffRuntime));
@@ -78,6 +78,8 @@ async function main() {
78
78
  (0, flags_cjs_namespaceObject.detectBffRuntime)(args);
79
79
  const dryRun = (0, flags_cjs_namespaceObject.detectDryRunFlag)(args);
80
80
  const verticalInput = (0, flags_cjs_namespaceObject.resolveVerticalCliInput)(args);
81
+ const renderer = (0, flags_cjs_namespaceObject.detectRendererFlag)(args);
82
+ if (verticalInput.addVertical && renderer) throw new Error('Add commands resolve the renderer from modern.config. --renderer is only supported for initial generation.');
81
83
  const overlays = (0, flags_cjs_namespaceObject.detectCodeSmithOverlays)(args);
82
84
  const bridgeRequested = (0, bridge_config_cjs_namespaceObject.hasUltramodernBridgeCliOptions)(args);
83
85
  if (dryRun && !verticalInput.addVertical) {
@@ -115,8 +117,8 @@ async function main() {
115
117
  horizontalRemote: true
116
118
  } : {}
117
119
  };
118
- if (dryRun) return void console.log(JSON.stringify((0, external_ultramodern_workspace_index_cjs_namespaceObject.planUltramodernVertical)(verticalOptions), null, 2));
119
- (0, external_ultramodern_workspace_index_cjs_namespaceObject.addUltramodernVertical)(verticalOptions);
120
+ if (dryRun) return void console.log(JSON.stringify(await (0, external_ultramodern_workspace_index_cjs_namespaceObject.planUltramodernVertical)(verticalOptions), null, 2));
121
+ await (0, external_ultramodern_workspace_index_cjs_namespaceObject.addUltramodernVertical)(verticalOptions);
120
122
  const dim = '\x1b[2m\x1b[3m';
121
123
  const reset = '\x1b[0m';
122
124
  console.log(`${index_cjs_namespaceObject.i18n.t(index_cjs_namespaceObject.localeKeys.message.success)}\n`);
@@ -139,7 +141,7 @@ async function main() {
139
141
  }
140
142
  const packageSource = (0, package_source_cjs_namespaceObject.resolveWorkspacePackageSource)(args, createPackage, (0, package_source_cjs_namespaceObject.detectUltramodernPackageSource)(args, ultramodernPackageVersion, createPackage));
141
143
  const generateAgentFiles = !args.includes('--no-agents-md');
142
- (0, external_ultramodern_workspace_index_cjs_namespaceObject.generateUltramodernWorkspace)({
144
+ await (0, external_ultramodern_workspace_index_cjs_namespaceObject.generateUltramodernWorkspace)({
143
145
  targetDir,
144
146
  packageName: generatedPackageName,
145
147
  modernVersion: version,
@@ -147,7 +149,10 @@ async function main() {
147
149
  bridge,
148
150
  overlays,
149
151
  packageSource,
150
- generateAgentFiles
152
+ generateAgentFiles,
153
+ ...renderer ? {
154
+ renderer
155
+ } : {}
151
156
  });
152
157
  const initializedGitRepository = (0, project_setup_cjs_namespaceObject.initializeGeneratedGitRepository)(targetDir);
153
158
  const dim = '\x1b[2m\x1b[3m';