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

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 (408) hide show
  1. package/README.md +147 -82
  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 +74 -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 +153 -74
  62. package/dist/cjs/ultramodern-workspace/patch-inventory.cjs +131 -0
  63. package/dist/cjs/ultramodern-workspace/policy.cjs +10 -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 +6 -43
  76. package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +15 -47
  77. package/dist/cjs/ultramodern-workspace/validation/architecture.cjs +452 -0
  78. package/dist/cjs/ultramodern-workspace/validation/assertions.cjs +140 -0
  79. package/dist/cjs/ultramodern-workspace/validation/native-shell-runtime.cjs +134 -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 +98 -51
  85. package/dist/cjs/ultramodern-workspace/workspace-artifact-ownership.cjs +160 -35
  86. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +36 -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 +79 -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 +73 -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 +150 -71
  152. package/dist/esm/ultramodern-workspace/patch-inventory.js +93 -0
  153. package/dist/esm/ultramodern-workspace/policy.js +9 -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 +7 -41
  166. package/dist/esm/ultramodern-workspace/tsconfigs.js +16 -48
  167. package/dist/esm/ultramodern-workspace/validation/architecture.js +403 -0
  168. package/dist/esm/ultramodern-workspace/validation/assertions.js +65 -0
  169. package/dist/esm/ultramodern-workspace/validation/native-shell-runtime.js +96 -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 +79 -32
  175. package/dist/esm/ultramodern-workspace/workspace-artifact-ownership.js +153 -34
  176. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +37 -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 +87 -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 +73 -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 +150 -71
  242. package/dist/esm-node/ultramodern-workspace/patch-inventory.js +94 -0
  243. package/dist/esm-node/ultramodern-workspace/policy.js +9 -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 +7 -41
  256. package/dist/esm-node/ultramodern-workspace/tsconfigs.js +16 -48
  257. package/dist/esm-node/ultramodern-workspace/validation/architecture.js +404 -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 +97 -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 +79 -32
  265. package/dist/esm-node/ultramodern-workspace/workspace-artifact-ownership.js +153 -34
  266. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +37 -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 +87 -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 +38 -211
  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 +1 -6
  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 +19 -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 +78 -31
  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 +51 -26
  351. package/{template-workspace/.modernjs/release-cohort.json → release-cohort.json} +162 -50
  352. package/template-workspace/.codex/skills/rspack-tracing/scripts/analyze_trace.js +1 -1
  353. package/template-workspace/README.md.handlebars +37 -31
  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 -177
  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 +5 -13
  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 +886 -284
  373. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +87 -23
  374. package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +45 -147
  375. package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +0 -114
  376. package/dist/cjs/ultramodern-workspace/mf-validation/exposes.cjs +0 -63
  377. package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +0 -103
  378. package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +0 -87
  379. package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +0 -151
  380. package/dist/cjs/ultramodern-workspace/patch-parity.cjs +0 -163
  381. package/dist/esm/ultramodern-workspace/effect-diagnostics.js +0 -76
  382. package/dist/esm/ultramodern-workspace/mf-validation/exposes.js +0 -14
  383. package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +0 -65
  384. package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +0 -43
  385. package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +0 -101
  386. package/dist/esm/ultramodern-workspace/patch-parity.js +0 -99
  387. package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +0 -77
  388. package/dist/esm-node/ultramodern-workspace/mf-validation/exposes.js +0 -15
  389. package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +0 -66
  390. package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +0 -44
  391. package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +0 -102
  392. package/dist/esm-node/ultramodern-workspace/patch-parity.js +0 -100
  393. package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +0 -1
  394. package/dist/types/ultramodern-workspace/mf-validation/exposes.d.ts +0 -11
  395. package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +0 -2
  396. package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +0 -4
  397. package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +0 -7
  398. package/dist/types/ultramodern-workspace/patch-parity.d.ts +0 -39
  399. package/template-workspace/patches/@module-federation__bridge-react@2.9.0.patch +0 -47
  400. package/template-workspace/patches/@module-federation__dts-plugin@2.9.0.patch +0 -26
  401. package/template-workspace/patches/@module-federation__modern-js-v3@2.9.0.patch +0 -268
  402. package/template-workspace/patches/@module-federation__runtime-core@2.9.0.patch +0 -13
  403. package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +0 -471
  404. package/template-workspace/patches/msgpackr@2.1.0.patch +0 -30
  405. package/template-workspace/patches/zod@4.5.4.patch +0 -56
  406. package/templates/packages/effect-bff-runtime.ts +0 -2
  407. package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mts +0 -9
  408. 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> .
26
+ ```
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
+ });
30
42
  ```
31
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.45.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
 
@@ -86,12 +126,14 @@ stays active during `rslib build --watch`. Run
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
+ All renderer profiles use exact stable `typescript@7.0.2`. React and Solid apps
130
+ use the generated TS-Go check; Octane apps use `octane-tsc` with their native
131
+ TS7 checker. Modern/Rspack and `@effect/tsgo` also use TS-Go by default.
132
+ Generated app/package source must not
91
133
  depend on compiler API internals. If a future AST utility is needed, keep it
92
134
  behind a dedicated TypeScript adapter and test it against stable `typescript`.
93
135
 
94
- Generated CI does not call the local aggregate. It runs format, lint,
136
+ Generated React CI does not call the local aggregate. It runs format, lint,
95
137
  typecheck, skills, i18n boundary validation, contract validation, and build as
96
138
  separate matrix jobs so failures are isolated and parallelizable. Generated
97
139
  lefthook config runs separate format and lint-fix commands on pre-commit, then
@@ -100,7 +142,7 @@ runs the read-only primitive gates in parallel on pre-push.
100
142
  For local monorepo dependency testing, add `--workspace`:
101
143
 
102
144
  ```bash
103
- pnpm dlx @bleedingdev/modern-js-ultramodern-create my-workspace --workspace
145
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> my-workspace --workspace
104
146
  ```
105
147
 
106
148
  For package-source validation outside the monorepo, pass explicit
@@ -119,26 +161,26 @@ import {
119
161
  planUltramodernVertical,
120
162
  } from '@modern-js/ultramodern-create/ultramodern-workspace';
121
163
 
122
- const workspace = generateUltramodernWorkspace({
164
+ const workspace = await generateUltramodernWorkspace({
123
165
  targetDir: '/tmp/my-workspace',
124
166
  packageName: 'my-workspace',
125
- modernVersion: '3.4.0',
167
+ modernVersion: '<V>',
126
168
  packageSource: {
127
169
  strategy: 'install',
128
- modernPackageVersion: '3.4.0',
170
+ modernPackageVersion: '<V>',
129
171
  },
130
172
  });
131
173
 
132
- const plan = planUltramodernVertical({
174
+ const plan = await planUltramodernVertical({
133
175
  workspaceRoot: workspace.workspaceRoot,
134
176
  name: 'new-vertical',
135
- modernVersion: '3.4.0',
177
+ modernVersion: '<V>',
136
178
  });
137
179
 
138
- const vertical = addUltramodernVertical({
180
+ const vertical = await addUltramodernVertical({
139
181
  workspaceRoot: workspace.workspaceRoot,
140
182
  name: 'new-vertical',
141
- modernVersion: '3.4.0',
183
+ modernVersion: '<V>',
142
184
  });
143
185
  ```
144
186
 
@@ -148,13 +190,13 @@ Workspace generation returns `operation`, `workspaceRoot`, `packageScope`,
148
190
  `generatedContractPath`, and `warnings`. MicroVertical addition returns the
149
191
  same shape for the new vertical and all rewritten integration surfaces.
150
192
 
151
- Dry-run is available for MicroVertical addition only. The CLI prints the plan as
193
+ MicroVertical addition supports dry-run. The CLI prints the plan as
152
194
  JSON and writes no files:
153
195
 
154
196
  ```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
197
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> new-vertical --vertical --dry-run
198
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> --vertical=new-vertical --dry-run
199
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> --vertical-name new-vertical --dry-run
158
200
  ```
159
201
 
160
202
  The dry-run object adds `dryRun: true`, `selectedPort`,
@@ -162,45 +204,49 @@ The dry-run object adds `dryRun: true`, `selectedPort`,
162
204
  `shellDependencyChanges`, and `generatedContractChanges`. It still validates
163
205
  the workspace before returning a plan.
164
206
 
165
- Validation runs before the first filesystem write. Failures name the owning
207
+ Validation runs before publishing generated output to the target workspace.
208
+ Failures name the owning
166
209
  contract so automation can stop safely:
167
210
 
168
211
  | Failure area | Typical cause | Fix |
169
212
  | --- | --- | --- |
170
213
  | Fresh input | Invalid or missing vertical name | Use `<name> --vertical`, `--vertical=<name>`, or `--vertical-name <name>` |
171
214
  | 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 |
215
+ | Workspace files | Missing or invalid topology, ownership, local overlay or app manifest | Repair the named authoritative file |
173
216
  | Tailwind prefix | Existing app already owns the generated CSS prefix | Rename the vertical before generation |
174
217
  | Output path | A generated path already exists | Treat it as an existing vertical and do not overwrite it |
175
218
 
176
- Package source is explicit and recorded in `.modernjs/ultramodern.json`.
219
+ Package source is selected by the installed generator dependency and native pnpm catalog.
220
+ Application manifests own package identity; the development overlay owns local ports.
177
221
 
178
222
  | Strategy | Use when | CLI |
179
223
  | --- | --- | --- |
180
224
  | `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
225
  | `workspace` | Local monorepo testing against unreleased packages | `--workspace` or `--ultramodern-package-source=workspace` |
182
226
 
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.
227
+ ## Framework dependencies
228
+
229
+ Published framework versions live in `catalogs.ultramodern` in
230
+ `pnpm-workspace.yaml`. Application manifests reference `catalog:ultramodern`;
231
+ the lockfile records resolved packages. Corrected third-party dependencies ship
232
+ as published packages. Applications do not install framework patches or carry
233
+ a copied release manifest.
234
+
235
+ Use `--ultramodern-package-source=install` for published package acceptance and
236
+ `--ultramodern-package-version` to select an exact release. Use `--workspace`
237
+ for local monorepo development. After installation, run `pnpm contract:check`,
238
+ which invokes the installed CLI directly. The installed generator owns its
239
+ release-integrity metadata.
240
+
241
+ Normal installs retain the generated strict 24-hour release-age and trust
242
+ policy. The one exception is `minimumReleaseAgeExclude`: it lists the exact
243
+ `package@version` of every package in the cohort the create package ships, so a
244
+ workspace created on the day that cohort is published can install it. Every
245
+ other dependency still waits 24 hours, including a cohort selected with
246
+ `--ultramodern-package-version` that differs from the create package's own; to
247
+ install a fresh cohort on publish day, run that release's create package.
248
+ Release acceptance adds exact, temporary exceptions for the sidecars under test
249
+ on the command line.
204
250
 
205
251
  ## CodeSmith Adapter And Overlays
206
252
 
@@ -218,9 +264,9 @@ await ultramodernCodeSmith({
218
264
  mode: 'workspace',
219
265
  name: 'my-workspace',
220
266
  targetDir: '/tmp/my-workspace',
221
- modernVersion: '3.4.0',
267
+ modernVersion: '<V>',
222
268
  packageSourceStrategy: 'install',
223
- modernPackageVersion: '3.4.0',
269
+ modernPackageVersion: '<V>',
224
270
  },
225
271
  });
226
272
 
@@ -243,15 +289,15 @@ Overlays are explicit CodeSmith generators that run after base workspace or
243
289
  MicroVertical generation:
244
290
 
245
291
  ```bash
246
- pnpm dlx @bleedingdev/modern-js-ultramodern-create new-vertical --vertical \
292
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> new-vertical --vertical \
247
293
  --codesmith-overlay ./generators/vertical-overlay
248
294
  ```
249
295
 
250
296
  ```ts
251
- addUltramodernVertical({
297
+ await addUltramodernVertical({
252
298
  workspaceRoot: '/tmp/my-workspace',
253
299
  name: 'new-vertical',
254
- modernVersion: '3.4.0',
300
+ modernVersion: '<V>',
255
301
  overlays: [
256
302
  {
257
303
  generator: './generators/vertical-overlay',
@@ -278,9 +324,9 @@ overlay, ownership entry, strict Effect HttpApi surface, and root `dev:*` script
278
324
  requested vertical name.
279
325
 
280
326
  ```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
327
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> catalog --vertical
328
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> --vertical=catalog
329
+ pnpm dlx @bleedingdev/modern-js-ultramodern-create@<V> --vertical-name catalog
284
330
  ```
285
331
 
286
332
  Use this decision table before adding a vertical:
@@ -295,7 +341,24 @@ Use this decision table before adding a vertical:
295
341
 
296
342
  ## SuperApp Architecture Contracts
297
343
 
298
- The generated shell owns route assembly and policy. Each vertical added with
344
+ Generated React `modern.config.ts` files declare their app identity through
345
+ `presetUltramodernWorkspace(config, { appId, from: import.meta.url })` inside
346
+ the renderer-selecting `defineConfig` from `@modern-js/ultramodern-app-tools`,
347
+ and keep ordinary Modern.js plugins and authored configuration. The preset
348
+ resolves `topology/reference-topology.json` and the development overlay when
349
+ the config loads. Fork-owned packages apply deployment targets, ports, asset
350
+ origins, CORS, Cloudflare bindings, build/cache directories, release identity,
351
+ and Zephyr deployment policy. Authored values override preset defaults; native
352
+ builder hooks and plugins compose normally. Solid and Octane apps select their
353
+ renderer directly with `defineConfig({ renderer })`.
354
+
355
+ Adding a shell or vertical updates topology, overlays, and generated workspace
356
+ metadata without rewriting any existing `modern.config.ts`. Application
357
+ configs belong to their authors from the moment they are created. New apps
358
+ receive a config scaffold with their own stable `appId`; changing a port or
359
+ shell composition takes effect through the canonical workspace inputs.
360
+
361
+ The React SuperApp shell owns route assembly and policy. Each React vertical added with
299
362
  `--vertical` owns its route subtree, Module Federation exposes, Effect BFF
300
363
  contract, generated client, `localisedUrls`, locale JSON, CSS layer, and
301
364
  Cloudflare Worker output. The shell consumes vertical UI through Module
@@ -303,10 +366,11 @@ Federation manifests and vertical APIs through generated Effect clients
303
366
  exported by the vertical packages.
304
367
 
305
368
  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
369
+ `src/routes/**/route.meta.ts`; each file exports `routeMeta`.
370
+ `ultramodern-create ultramodern routes-generate` (run before every app `dev`
371
+ and `build`) regenerates `src/routes/ultramodern-route-metadata.ts` as a
372
+ formatted route manifest for Modern.js config, i18n, public head, and public
373
+ surface contracts; authors should not hand-maintain it. Locale JSON is served from
310
374
  `/locales/{{lng}}/{{ns}}.json`; Czech and English routes are generated from the
311
375
  route owner, not from shell rewrites.
312
376
 
@@ -375,17 +439,18 @@ where assets load from.
375
439
 
376
440
  ## Cloudflare And Zephyr Proof
377
441
 
378
- Each generated workspace app has:
442
+ Each generated React workspace app has:
379
443
 
380
444
  - `cloudflare:build`, `cloudflare:deploy`, `cloudflare:preview`, and
381
445
  `cloudflare:proof` scripts.
382
- - Cloudflare Worker deploy config from Modern config plus
383
- `.modernjs/ultramodern.json`.
446
+ - Cloudflare Worker deploy config emitted from native Modern config.
384
447
  - `zephyr:dependencies` for any consumed verticals.
385
- - `zephyr-rspack-plugin` wired through the generated Modern.js Rspack bridge.
448
+ - `zephyr-rspack-plugin` composed by the fork-owned workspace preset for UI
449
+ apps. It activates only when `ZE_CI_TOKEN` is present; the deploy environment
450
+ must also set `ZE_FAIL_BUILD=true`. Ordinary builds require no Zephyr token.
386
451
 
387
452
  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
453
+ the proof step. The installed proof command reads topology and deployment contracts and checks the
389
454
  Cloudflare Worker surface, including public-route sitemap/robots consistency,
390
455
  preview noindex behavior, unknown-route status, asset headers, byte budgets,
391
456
  and public sourcemap exposure. Shell-only workspaces only need the shell URL;
@@ -407,10 +472,10 @@ proven.
407
472
 
408
473
  | Symptom | Current check | Owner |
409
474
  | --- | --- | --- |
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 |
475
+ | Package version mismatch | Align the native framework catalog and regenerate the lockfile with `pnpm install`. | Workspace dependency manifests |
411
476
  | Install failure | Check the active Node/pnpm from `mise install`; rerun `pnpm install` after the shell sees the pinned versions. | Toolchain setup |
412
477
  | 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 |
478
+ | Missing public URL | Set the app public URL env key declared in topology, for example `ULTRAMODERN_PUBLIC_URL_SHELL_SUPER_APP`. | Deployment operator |
414
479
  | Cloudflare credentials | Confirm Wrangler credentials before `pnpm cloudflare:deploy`; local checks do not prove live Worker access. | Deployment operator |
415
480
  | 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
481
  | 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';