@bleedingdev/modern-js-create 3.4.0-ultramodern.2 → 3.4.0-ultramodern.20

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 (128) hide show
  1. package/README.md +13 -11
  2. package/dist/cjs/index.cjs +37 -4
  3. package/dist/cjs/locale/en.cjs +12 -2
  4. package/dist/cjs/locale/zh.cjs +12 -2
  5. package/dist/cjs/ultramodern-tooling/commands.cjs +185 -0
  6. package/dist/cjs/ultramodern-tooling/config.cjs +172 -0
  7. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +79 -61
  8. package/dist/cjs/ultramodern-workspace/bridge-config.cjs +327 -0
  9. package/dist/cjs/ultramodern-workspace/codesmith.cjs +1 -0
  10. package/dist/cjs/ultramodern-workspace/contracts.cjs +121 -648
  11. package/dist/cjs/ultramodern-workspace/demo-components.cjs +26 -33
  12. package/dist/cjs/ultramodern-workspace/descriptors.cjs +4 -4
  13. package/dist/cjs/ultramodern-workspace/effect-api.cjs +230 -100
  14. package/dist/cjs/ultramodern-workspace/fs-io.cjs +117 -0
  15. package/dist/cjs/ultramodern-workspace/generation-result.cjs +1 -1
  16. package/dist/cjs/ultramodern-workspace/index.cjs +4 -0
  17. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +571 -0
  18. package/dist/cjs/ultramodern-workspace/module-federation.cjs +51 -20
  19. package/dist/cjs/ultramodern-workspace/package-json.cjs +62 -19
  20. package/dist/cjs/ultramodern-workspace/policy.cjs +2 -2
  21. package/dist/cjs/ultramodern-workspace/public-api.cjs +4 -0
  22. package/dist/cjs/ultramodern-workspace/versions.cjs +5 -0
  23. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +80 -43
  24. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +63 -20
  25. package/dist/esm/index.js +37 -4
  26. package/dist/esm/locale/en.js +12 -2
  27. package/dist/esm/locale/zh.js +12 -2
  28. package/dist/esm/ultramodern-tooling/commands.js +132 -0
  29. package/dist/esm/ultramodern-tooling/config.js +120 -0
  30. package/dist/esm/ultramodern-workspace/add-vertical.js +81 -66
  31. package/dist/esm/ultramodern-workspace/bridge-config.js +270 -0
  32. package/dist/esm/ultramodern-workspace/codesmith.js +1 -0
  33. package/dist/esm/ultramodern-workspace/contracts.js +124 -603
  34. package/dist/esm/ultramodern-workspace/demo-components.js +26 -33
  35. package/dist/esm/ultramodern-workspace/descriptors.js +2 -2
  36. package/dist/esm/ultramodern-workspace/effect-api.js +230 -100
  37. package/dist/esm/ultramodern-workspace/fs-io.js +116 -2
  38. package/dist/esm/ultramodern-workspace/generation-result.js +2 -2
  39. package/dist/esm/ultramodern-workspace/index.js +1 -0
  40. package/dist/esm/ultramodern-workspace/mf-validation.js +516 -0
  41. package/dist/esm/ultramodern-workspace/module-federation.js +49 -21
  42. package/dist/esm/ultramodern-workspace/package-json.js +60 -20
  43. package/dist/esm/ultramodern-workspace/policy.js +2 -2
  44. package/dist/esm/ultramodern-workspace/public-api.js +1 -0
  45. package/dist/esm/ultramodern-workspace/versions.js +3 -1
  46. package/dist/esm/ultramodern-workspace/workspace-scripts.js +78 -26
  47. package/dist/esm/ultramodern-workspace/write-workspace.js +67 -27
  48. package/dist/esm-node/index.js +37 -4
  49. package/dist/esm-node/locale/en.js +12 -2
  50. package/dist/esm-node/locale/zh.js +12 -2
  51. package/dist/esm-node/ultramodern-tooling/commands.js +133 -0
  52. package/dist/esm-node/ultramodern-tooling/config.js +121 -0
  53. package/dist/esm-node/ultramodern-workspace/add-vertical.js +81 -66
  54. package/dist/esm-node/ultramodern-workspace/bridge-config.js +271 -0
  55. package/dist/esm-node/ultramodern-workspace/codesmith.js +1 -0
  56. package/dist/esm-node/ultramodern-workspace/contracts.js +124 -603
  57. package/dist/esm-node/ultramodern-workspace/demo-components.js +26 -33
  58. package/dist/esm-node/ultramodern-workspace/descriptors.js +2 -2
  59. package/dist/esm-node/ultramodern-workspace/effect-api.js +230 -100
  60. package/dist/esm-node/ultramodern-workspace/fs-io.js +116 -2
  61. package/dist/esm-node/ultramodern-workspace/generation-result.js +2 -2
  62. package/dist/esm-node/ultramodern-workspace/index.js +1 -0
  63. package/dist/esm-node/ultramodern-workspace/mf-validation.js +517 -0
  64. package/dist/esm-node/ultramodern-workspace/module-federation.js +49 -21
  65. package/dist/esm-node/ultramodern-workspace/package-json.js +60 -20
  66. package/dist/esm-node/ultramodern-workspace/policy.js +2 -2
  67. package/dist/esm-node/ultramodern-workspace/public-api.js +1 -0
  68. package/dist/esm-node/ultramodern-workspace/versions.js +3 -1
  69. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +78 -26
  70. package/dist/esm-node/ultramodern-workspace/write-workspace.js +67 -27
  71. package/dist/types/locale/en.d.ts +10 -0
  72. package/dist/types/locale/index.d.ts +20 -0
  73. package/dist/types/locale/zh.d.ts +10 -0
  74. package/dist/types/ultramodern-tooling/commands.d.ts +1 -0
  75. package/dist/types/ultramodern-tooling/config.d.ts +43 -0
  76. package/dist/types/ultramodern-workspace/add-vertical.d.ts +5 -2
  77. package/dist/types/ultramodern-workspace/bridge-config.d.ts +64 -0
  78. package/dist/types/ultramodern-workspace/codesmith.d.ts +1 -0
  79. package/dist/types/ultramodern-workspace/contracts.d.ts +2 -17
  80. package/dist/types/ultramodern-workspace/descriptors.d.ts +1 -1
  81. package/dist/types/ultramodern-workspace/fs-io.d.ts +1 -0
  82. package/dist/types/ultramodern-workspace/index.d.ts +2 -0
  83. package/dist/types/ultramodern-workspace/mf-validation.d.ts +27 -0
  84. package/dist/types/ultramodern-workspace/module-federation.d.ts +1 -0
  85. package/dist/types/ultramodern-workspace/package-json.d.ts +5 -3
  86. package/dist/types/ultramodern-workspace/public-api.d.ts +2 -0
  87. package/dist/types/ultramodern-workspace/types.d.ts +2 -0
  88. package/dist/types/ultramodern-workspace/versions.d.ts +2 -0
  89. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +2 -7
  90. package/dist/types/ultramodern-workspace/write-workspace.d.ts +4 -2
  91. package/package.json +5 -3
  92. package/template-workspace/{.agents → .codex}/skills-lock.json +12 -12
  93. package/template-workspace/.gitignore.handlebars +3 -0
  94. package/template-workspace/AGENTS.md.handlebars +11 -5
  95. package/template-workspace/README.md.handlebars +15 -12
  96. package/template-workspace/oxfmt.config.ts +1 -0
  97. package/template-workspace/oxlint.config.ts +1 -0
  98. package/template-workspace/patches/@tanstack__router-core@1.171.13.patch +51 -0
  99. package/template-workspace/pnpm-workspace.yaml.handlebars +12 -0
  100. package/template-workspace/scripts/bootstrap-agent-skills.mjs +96 -69
  101. package/templates/app/shell-frame.tsx +1 -2
  102. package/templates/app/ultramodern-route-head.tsx.handlebars +5 -6
  103. package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +59 -7
  104. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mjs +339 -0
  105. package/templates/workspace-scripts/generate-public-surface-assets.mjs +245 -8
  106. package/templates/workspace-scripts/proof-cloudflare-version.mjs +276 -8
  107. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +35 -10
  108. package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +164 -1
  109. package/templates/workspace-scripts/ultramodern-typecheck.mjs +4 -2
  110. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +949 -63
  111. /package/template-workspace/{.agents → .codex}/rstackjs-agent-skills-LICENSE +0 -0
  112. /package/template-workspace/{.agents → .codex}/skills/rsbuild-best-practices/SKILL.md +0 -0
  113. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/SKILL.md +0 -0
  114. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/command-map.md +0 -0
  115. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/common-analysis-patterns.md +0 -0
  116. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-common.md +0 -0
  117. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-rspack.md +0 -0
  118. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-webpack.md +0 -0
  119. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor.md +0 -0
  120. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/rsdoctor-data-types.md +0 -0
  121. /package/template-workspace/{.agents → .codex}/skills/rslib-best-practices/SKILL.md +0 -0
  122. /package/template-workspace/{.agents → .codex}/skills/rslib-modern-package/SKILL.md +0 -0
  123. /package/template-workspace/{.agents → .codex}/skills/rspack-best-practices/SKILL.md +0 -0
  124. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/SKILL.md +0 -0
  125. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/references/bottlenecks.md +0 -0
  126. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/references/tracing-guide.md +0 -0
  127. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/scripts/analyze_trace.js +0 -0
  128. /package/template-workspace/{.agents → .codex}/skills/rstest-best-practices/SKILL.md +0 -0
@@ -45,6 +45,7 @@ __webpack_require__.d(__webpack_exports__, {
45
45
  createSharedModuleFederationConfig: ()=>createSharedModuleFederationConfig,
46
46
  createShellModuleFederationConfig: ()=>createShellModuleFederationConfig,
47
47
  createUltramodernBuildModule: ()=>createUltramodernBuildModule,
48
+ createUltramodernBuildReexportModule: ()=>createUltramodernBuildReexportModule,
48
49
  formatTsObjectLiteral: ()=>formatTsObjectLiteral
49
50
  });
50
51
  const external_node_crypto_namespaceObject = require("node:crypto");
@@ -58,16 +59,23 @@ function createAppModernConfig(scope, app) {
58
59
  const bffImport = (0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? "import { bffPlugin } from '@modern-js/plugin-bff';\n" : '';
59
60
  const bffConfig = (0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? ` bff: {
60
61
  effect: {
61
- entry: './api/effect/index',
62
+ entry: './api/index',
62
63
  openapi: {
63
64
  path: '/openapi.json',
64
65
  },
66
+ strictEffectApproach: true,
65
67
  },
66
68
  prefix: '${(0, external_descriptors_cjs_namespaceObject.effectApiPrefix)(app)}',
67
69
  runtimeFramework: 'effect',
68
70
  },
69
71
  ` : '';
70
72
  const bffPluginEntry = (0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? ' bffPlugin(),\n' : '';
73
+ const defaultAssetPrefixSource = 'shell' === app.kind ? "const defaultAssetPrefix = '/';" : `const remoteAssetOrigin =
74
+ configuredCloudflareUrl ||
75
+ inferredCloudflareUrl ||
76
+ (cloudflareDeployEnabled ? '/' : \`http://localhost:\${port}\`);
77
+ const defaultRemoteAssetPrefix = \`\${remoteAssetOrigin.replace(/\\/+$/u, '')}/\`;
78
+ const defaultAssetPrefix = defaultRemoteAssetPrefix;`;
71
79
  return `// @effect-diagnostics processEnv:off
72
80
  import {
73
81
  appTools,
@@ -114,6 +122,8 @@ const configuredSiteUrl = envValue('MODERN_PUBLIC_SITE_URL');
114
122
  const configuredCloudflareUrl = envValue('${(0, external_descriptors_cjs_namespaceObject.createCloudflarePublicUrlEnv)(app)}');
115
123
  const configuredUltramodernAssetPrefix = envValue('ULTRAMODERN_ASSET_PREFIX');
116
124
  const configuredModernAssetPrefix = envValue('MODERN_ASSET_PREFIX');
125
+ const moduleFederationDevServerOrigin =
126
+ envValue('ULTRAMODERN_MF_DEV_ORIGIN') || 'http://localhost:${external_descriptors_cjs_namespaceObject.shellApp.port}';
117
127
  const cloudflareWorkersDevSubdomain = envValue(
118
128
  'ULTRAMODERN_CLOUDFLARE_WORKERS_DEV_SUBDOMAIN',
119
129
  );
@@ -128,12 +138,12 @@ const siteUrl =
128
138
  configuredCloudflareUrl ||
129
139
  inferredCloudflareUrl ||
130
140
  \`http://localhost:\${port}\`;
131
- // Asset loading is intentionally independent from the canonical site URL and
132
- // deployment public URL. Without an explicit asset prefix, assets stay
133
- // origin-relative so self-hosted apps, tunnels, and reverse proxies never leak
134
- // localhost URLs into production HTML.
141
+ ${defaultAssetPrefixSource}
142
+ // Asset loading is intentionally independent from the canonical site URL.
143
+ // Module Federation remotes must publish an absolute publicPath so browsers
144
+ // load remoteEntry.js and exposed chunks from the remote origin, not the host.
135
145
  const assetPrefix =
136
- configuredModernAssetPrefix || configuredUltramodernAssetPrefix || '/';
146
+ configuredModernAssetPrefix || configuredUltramodernAssetPrefix || defaultAssetPrefix;
137
147
 
138
148
  if (
139
149
  cloudflareDeployEnabled &&
@@ -237,6 +247,9 @@ ${bffPluginEntry} moduleFederationPlugin(),
237
247
  },
238
248
  mainEntryName: 'index',
239
249
  },
250
+ splitChunks: {
251
+ chunks: 'async',
252
+ },
240
253
  tools: {
241
254
  autoprefixer: {
242
255
  overrideBrowserslist: ['defaults'],
@@ -245,12 +258,14 @@ ${bffPluginEntry} moduleFederationPlugin(),
245
258
  chain.output
246
259
  .uniqueName('${(0, external_naming_cjs_namespaceObject.createRspackUniqueName)(app)}')
247
260
  .chunkLoadingGlobal('${(0, external_naming_cjs_namespaceObject.createRspackChunkLoadingGlobal)(app)}');
248
- chain.ignoreWarnings([
249
- {
250
- message: /the request of a dependency is an expression/u,
251
- module: /modern-js-plugin-i18n/u,
252
- },
253
- ]);
261
+ },
262
+ devServer: {
263
+ headers: {
264
+ 'Access-Control-Allow-Headers':
265
+ 'Accept, Authorization, Content-Type, X-Requested-With',
266
+ 'Access-Control-Allow-Methods': 'GET, HEAD, OPTIONS',
267
+ 'Access-Control-Allow-Origin': moduleFederationDevServerOrigin,
268
+ },
254
269
  },
255
270
  },
256
271
  },
@@ -272,11 +287,6 @@ function createSharedModuleFederationConfig() {
272
287
  singleton: true,
273
288
  treeShaking: false,
274
289
  },
275
- '@modern-js/plugin-i18n/runtime': {
276
- requiredVersion: pluginI18nVersion,
277
- singleton: true,
278
- treeShaking: false,
279
- },
280
290
  '@modern-js/plugin-tanstack/runtime': {
281
291
  requiredVersion: pluginTanstackVersion,
282
292
  singleton: true,
@@ -380,6 +390,7 @@ function createShellModuleFederationConfig(scope, remotes = []) {
380
390
  verticalRefs: remotes.map((remote)=>remote.id)
381
391
  };
382
392
  return `// @effect-diagnostics nodeBuiltinImport:off processEnv:off
393
+ // ultramodern-mf: host-only
383
394
  import { createRequire } from 'node:module';
384
395
  import { createModuleFederationConfig } from '@module-federation/modern-js-v3';
385
396
  import { dependencies } from './package.json';
@@ -392,7 +403,9 @@ const reactVersion = (require('react/package.json') as { version: string }).vers
392
403
  const reactDomVersion = (require('react-dom/package.json') as { version: string }).version;
393
404
 
394
405
  ${createModuleFederationRemoteUrlHelpers(shellHost, remotes)}
395
- export default createModuleFederationConfig({
406
+ const moduleFederationConfig: Parameters<
407
+ typeof createModuleFederationConfig
408
+ >[0] = createModuleFederationConfig({
396
409
  bridge: {
397
410
  enableBridgeRouter: false,
398
411
  },
@@ -404,12 +417,15 @@ export default createModuleFederationConfig({
404
417
  generateTypes: {
405
418
  compilerInstance: 'tsgo',
406
419
  },
420
+ tsConfigPath: './tsconfig.mf-types.json',
407
421
  },
408
422
  filename: 'remoteEntry.js',
409
423
  name: '${external_descriptors_cjs_namespaceObject.shellApp.mfName}',
410
424
  ${createModuleFederationRemotesConfig(scope, shellHost, remotes)}${createSharedModuleFederationConfig()},
411
425
  treeShakingSharedExcludePlugins: ['RspackModuleFederationPlugin'],
412
426
  });
427
+
428
+ export default moduleFederationConfig;
413
429
  `;
414
430
  }
415
431
  function createBuildMarker(scope, app) {
@@ -431,10 +447,18 @@ export const ultramodernUiMarker = {
431
447
 
432
448
  export const ultramodernApiMarker = {
433
449
  ...ultramodernVerticalIdentity,
434
- surface: 'effect-bff',
450
+ surface: 'api',
435
451
  } as const;
436
452
  `;
437
453
  }
454
+ function createUltramodernBuildReexportModule() {
455
+ return `export {
456
+ ultramodernApiMarker,
457
+ ultramodernUiMarker,
458
+ ultramodernVerticalIdentity,
459
+ } from '../shared/ultramodern-build';
460
+ `;
461
+ }
438
462
  function createRemoteModuleFederationConfig(scope, app, remotes = []) {
439
463
  const exposes = formatTsObjectLiteral(app.exposes ?? {});
440
464
  return `// @effect-diagnostics nodeBuiltinImport:off
@@ -450,7 +474,9 @@ const reactVersion = (require('react/package.json') as { version: string }).vers
450
474
  const reactDomVersion = (require('react-dom/package.json') as { version: string }).version;
451
475
 
452
476
  ${createModuleFederationRemoteUrlHelpers(app, remotes)}
453
- export default createModuleFederationConfig({
477
+ const moduleFederationConfig: Parameters<
478
+ typeof createModuleFederationConfig
479
+ >[0] = createModuleFederationConfig({
454
480
  bridge: {
455
481
  enableBridgeRouter: false,
456
482
  },
@@ -462,6 +488,7 @@ export default createModuleFederationConfig({
462
488
  generateTypes: {
463
489
  compilerInstance: 'tsgo',
464
490
  },
491
+ tsConfigPath: './tsconfig.mf-types.json',
465
492
  },
466
493
  exposes: ${exposes},
467
494
  filename: 'remoteEntry.js',
@@ -469,6 +496,8 @@ export default createModuleFederationConfig({
469
496
  ${createModuleFederationRemotesConfig(scope, app, remotes)}${createSharedModuleFederationConfig()},
470
497
  treeShakingSharedExcludePlugins: ['RspackModuleFederationPlugin'],
471
498
  });
499
+
500
+ export default moduleFederationConfig;
472
501
  `;
473
502
  }
474
503
  exports.createAppModernConfig = __webpack_exports__.createAppModernConfig;
@@ -479,6 +508,7 @@ exports.createRemoteModuleFederationConfig = __webpack_exports__.createRemoteMod
479
508
  exports.createSharedModuleFederationConfig = __webpack_exports__.createSharedModuleFederationConfig;
480
509
  exports.createShellModuleFederationConfig = __webpack_exports__.createShellModuleFederationConfig;
481
510
  exports.createUltramodernBuildModule = __webpack_exports__.createUltramodernBuildModule;
511
+ exports.createUltramodernBuildReexportModule = __webpack_exports__.createUltramodernBuildReexportModule;
482
512
  exports.formatTsObjectLiteral = __webpack_exports__.formatTsObjectLiteral;
483
513
  for(var __rspack_i in __webpack_exports__)if (-1 === [
484
514
  "createAppModernConfig",
@@ -489,6 +519,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
489
519
  "createSharedModuleFederationConfig",
490
520
  "createShellModuleFederationConfig",
491
521
  "createUltramodernBuildModule",
522
+ "createUltramodernBuildReexportModule",
492
523
  "formatTsObjectLiteral"
493
524
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
494
525
  Object.defineProperty(exports, '__esModule', {
@@ -30,6 +30,7 @@ __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
31
  appDependencies: ()=>appDependencies,
32
32
  appDevDependencies: ()=>appDevDependencies,
33
+ createAppMfTypesTsConfig: ()=>createAppMfTypesTsConfig,
33
34
  createAppPackage: ()=>createAppPackage,
34
35
  createAppTsConfig: ()=>createAppTsConfig,
35
36
  createEffectTsgoTypecheckCommand: ()=>createEffectTsgoTypecheckCommand,
@@ -125,7 +126,7 @@ const effectDiagnostics = [
125
126
  'unnecessaryPipe',
126
127
  'unnecessaryPipeChain'
127
128
  ];
128
- function appDependencies(scope, packageSource, app, remotes = []) {
129
+ function appDependencies(scope, packageSource, app, remotes = [], bridge) {
129
130
  const dependencies = {
130
131
  '@modern-js/plugin-tanstack': (0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageSpecifier)('@modern-js/plugin-tanstack', packageSource),
131
132
  '@modern-js/plugin-i18n': (0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageSpecifier)('@modern-js/plugin-i18n', packageSource),
@@ -140,8 +141,10 @@ function appDependencies(scope, packageSource, app, remotes = []) {
140
141
  [(0, external_naming_cjs_namespaceObject.packageName)(scope, 'shared-design-tokens')]: external_ultramodern_package_source_cjs_namespaceObject.WORKSPACE_PACKAGE_VERSION,
141
142
  react: external_versions_cjs_namespaceObject.REACT_VERSION,
142
143
  'react-dom': external_versions_cjs_namespaceObject.REACT_DOM_VERSION,
143
- 'react-router': external_versions_cjs_namespaceObject.REACT_ROUTER_VERSION
144
+ 'react-router': external_versions_cjs_namespaceObject.REACT_ROUTER_VERSION,
145
+ 'react-router-dom': external_versions_cjs_namespaceObject.REACT_ROUTER_VERSION
144
146
  };
147
+ for (const dependency of bridge?.dependencies ?? [])dependencies[dependency] = external_ultramodern_package_source_cjs_namespaceObject.WORKSPACE_PACKAGE_VERSION;
145
148
  if ('shell' === app.kind) {
146
149
  dependencies['@modern-js/plugin-bff'] = (0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageSpecifier)('@modern-js/plugin-bff', packageSource);
147
150
  for (const remote of (0, external_descriptors_cjs_namespaceObject.verticalEffectApps)(remotes))dependencies[(0, external_naming_cjs_namespaceObject.packageName)(scope, remote.packageSuffix)] = external_ultramodern_package_source_cjs_namespaceObject.WORKSPACE_PACKAGE_VERSION;
@@ -168,12 +171,28 @@ function appDevDependencies(packageSource, enableTailwind) {
168
171
  wrangler: external_versions_cjs_namespaceObject.WRANGLER_VERSION
169
172
  };
170
173
  }
171
- function createRootPackageJson(scope, packageSource, remotes = []) {
174
+ function createRootPackageJson(scope, packageSource, remotes = [], bridge) {
172
175
  const shellFilter = `--filter ${(0, external_naming_cjs_namespaceObject.packageName)(scope, external_descriptors_cjs_namespaceObject.shellApp.packageSuffix)}`;
173
176
  const remoteFilters = remotes.map((remote)=>`--filter ${(0, external_naming_cjs_namespaceObject.packageName)(scope, remote.packageSuffix)}`);
174
177
  const remoteBuildPrefix = remotes.length > 0 ? 'ULTRAMODERN_ZEPHYR=false pnpm -r --filter "./verticals/*" run build && ' : '';
175
178
  const remoteCloudflareBuildPrefix = remotes.length > 0 ? 'pnpm -r --filter "./verticals/*" run cloudflare:build && ' : '';
176
179
  const remoteCloudflareDeployPrefix = remotes.length > 0 ? 'pnpm -r --filter "./verticals/*" run cloudflare:deploy && ' : '';
180
+ const generatedPackageTypecheck = 'pnpm -r --filter "./apps/*" --filter "./verticals/*" --filter "./packages/*" run typecheck';
181
+ const typecheck = bridge ? generatedPackageTypecheck : "node ./scripts/ultramodern-typecheck.mjs --build tsconfig.json";
182
+ const bridgeScripts = bridge ? {
183
+ ...Object.fromEntries(bridge.gates.map((gate)=>[
184
+ `bridge:${gate.name}`,
185
+ `${gate.cwd ? `cd ${gate.cwd} && ` : ''}${gate.command}`
186
+ ])),
187
+ 'bridge:check': bridge.gates.map((gate)=>`pnpm run bridge:${gate.name}`).join(' && ')
188
+ } : {};
189
+ const bridgeCheck = bridge ? ' && pnpm bridge:check' : '';
190
+ const workspacePackages = [
191
+ 'apps/*',
192
+ 'verticals/*',
193
+ 'packages/*',
194
+ ...bridge?.workspacePackages.map((entry)=>entry.pattern) ?? []
195
+ ];
177
196
  return {
178
197
  private: true,
179
198
  name: scope,
@@ -195,7 +214,7 @@ function createRootPackageJson(scope, packageSource, remotes = []) {
195
214
  'format:check': "oxfmt --check . '!repos/**'",
196
215
  lint: 'oxlint apps verticals packages',
197
216
  'lint:fix': 'oxlint apps verticals packages --fix',
198
- typecheck: "node ./scripts/ultramodern-typecheck.mjs --build tsconfig.json",
217
+ typecheck,
199
218
  'cloudflare:build': `${remoteCloudflareBuildPrefix}pnpm --filter "./apps/shell-super-app" run cloudflare:build && pnpm mf:types`,
200
219
  'cloudflare:deploy': `${remoteCloudflareDeployPrefix}pnpm --filter "./apps/shell-super-app" run cloudflare:deploy`,
201
220
  'cloudflare:proof': "node ./scripts/proof-cloudflare-version.mjs --out .codex/reports/cloudflare-version-proof/public-url-proof.json",
@@ -206,19 +225,17 @@ function createRootPackageJson(scope, packageSource, remotes = []) {
206
225
  'mf:types': "node ./scripts/assert-mf-types.mjs",
207
226
  'performance:readiness': "node ./scripts/ultramodern-performance-readiness.mjs",
208
227
  'contract:check': "node ./scripts/validate-ultramodern-workspace.mjs",
228
+ 'api:check': "node ./scripts/check-ultramodern-api-boundaries.mjs",
209
229
  'i18n:boundaries': "node ./scripts/check-ultramodern-i18n-boundaries.mjs",
230
+ ...bridgeScripts,
210
231
  postinstall: "oxfmt . '!repos/**' && node ./scripts/bootstrap-agent-skills.mjs --postinstall",
211
- check: 'pnpm format:check && pnpm lint && pnpm typecheck && pnpm skills:check && pnpm i18n:boundaries && pnpm contract:check && pnpm performance:readiness'
232
+ check: `pnpm format:check && pnpm lint && pnpm typecheck && pnpm skills:check && pnpm i18n:boundaries && pnpm api:check && pnpm contract:check && pnpm performance:readiness${bridgeCheck}`
212
233
  },
213
234
  engines: {
214
235
  node: '>=26',
215
236
  pnpm: '>=11'
216
237
  },
217
- workspaces: [
218
- 'apps/*',
219
- 'verticals/*',
220
- 'packages/*'
221
- ],
238
+ workspaces: workspacePackages,
222
239
  modernjs: {
223
240
  preset: 'presetUltramodern',
224
241
  workspace: 'ultramodern-superapp',
@@ -226,7 +243,7 @@ function createRootPackageJson(scope, packageSource, remotes = []) {
226
243
  ownership: './topology/ownership.json',
227
244
  packageSource: {
228
245
  strategy: packageSource.strategy,
229
- config: './.modernjs/ultramodern-package-source.json'
246
+ config: './.modernjs/ultramodern.json#packageSource'
230
247
  }
231
248
  },
232
249
  devDependencies: {
@@ -300,6 +317,10 @@ function createTsBuildInfoFile(packageDir) {
300
317
  const cacheKey = packageDir.replace(/[^a-zA-Z0-9._-]+/gu, '__');
301
318
  return `${(0, external_naming_cjs_namespaceObject.relativeRootFor)(packageDir)}/node_modules/.cache/tsgo/${cacheKey}.tsbuildinfo`;
302
319
  }
320
+ function createTsDeclarationOutDir(packageDir) {
321
+ const cacheKey = packageDir.replace(/[^a-zA-Z0-9._-]+/gu, '__');
322
+ return `${(0, external_naming_cjs_namespaceObject.relativeRootFor)(packageDir)}/node_modules/.cache/tsgo/declarations/${cacheKey}`;
323
+ }
303
324
  function createReferences(packageDir, references) {
304
325
  return [
305
326
  ...new Set(references)
@@ -313,16 +334,24 @@ function createPackageTsConfig(packageDir, options = {}) {
313
334
  } : options;
314
335
  const include = resolvedOptions.include ?? [
315
336
  'src',
337
+ 'locales/**/*.json',
316
338
  'modern.config.ts',
317
- 'module-federation.config.ts'
339
+ 'module-federation.config.ts',
340
+ 'package.json',
341
+ 'shared'
318
342
  ];
319
- if (resolvedOptions.includeApi) include.push('api', 'shared');
343
+ if (resolvedOptions.includeApi) include.push('api');
320
344
  const references = createReferences(packageDir, resolvedOptions.references ?? []);
321
345
  const tsconfig = {
322
346
  extends: `${(0, external_naming_cjs_namespaceObject.relativeRootFor)(packageDir)}/tsconfig.base.json`,
323
347
  compilerOptions: {
324
348
  composite: true,
349
+ declaration: true,
350
+ declarationMap: false,
351
+ emitDeclarationOnly: true,
325
352
  incremental: true,
353
+ noEmit: false,
354
+ outDir: createTsDeclarationOutDir(packageDir),
326
355
  tsBuildInfoFile: createTsBuildInfoFile(packageDir)
327
356
  },
328
357
  include
@@ -340,6 +369,18 @@ function createAppTsConfig(app, remotes = []) {
340
369
  references
341
370
  });
342
371
  }
372
+ function createAppMfTypesTsConfig(app) {
373
+ const exposedFiles = Object.values(app.exposes ?? {}).map((exposePath)=>exposePath.replace(/^\.\//u, ''));
374
+ return {
375
+ extends: './tsconfig.json',
376
+ include: [
377
+ ...new Set([
378
+ ...exposedFiles,
379
+ 'src/modern-app-env.d.ts'
380
+ ])
381
+ ]
382
+ };
383
+ }
343
384
  function createSharedPackageTsConfig(packageDir) {
344
385
  return createPackageTsConfig(packageDir, {
345
386
  include: [
@@ -360,7 +401,7 @@ function createRootTsConfig(apps = []) {
360
401
  ]
361
402
  };
362
403
  }
363
- function createAppPackage(scope, app, packageSource, enableTailwind, remotes = []) {
404
+ function createAppPackage(scope, app, packageSource, enableTailwind, remotes = [], bridge) {
364
405
  const publicSurfaceBuildCommand = (0, external_public_surface_cjs_namespaceObject.createPublicSurfaceGenerationCommand)(app, 'dist');
365
406
  const publicSurfaceCloudflareBuildCommand = (0, external_public_surface_cjs_namespaceObject.createPublicSurfaceGenerationCommand)(app, 'dist');
366
407
  const publicSurfaceCloudflareOutputCommand = (0, external_public_surface_cjs_namespaceObject.createPublicSurfaceGenerationCommand)(app, 'cloudflare');
@@ -388,19 +429,19 @@ function createAppPackage(scope, app, packageSource, enableTailwind, remotes = [
388
429
  appId: app.id,
389
430
  topology: `${(0, external_naming_cjs_namespaceObject.relativeRootFor)(app.directory)}/topology/reference-topology.json`,
390
431
  ...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? {
391
- apiRuntime: 'effect-bff'
432
+ apiRuntime: 'effect'
392
433
  } : {}
393
434
  },
394
435
  'zephyr:dependencies': createZephyrDependencies(scope, app, remotes),
395
- dependencies: appDependencies(scope, packageSource, app, remotes),
436
+ dependencies: appDependencies(scope, packageSource, app, remotes, bridge),
396
437
  devDependencies: appDevDependencies(packageSource, enableTailwind)
397
438
  };
398
439
  if ((0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app)) Object.assign(packageExports, {
399
- './effect/client': `./src/effect/${app.effectApi.stem}-client.ts`,
400
- './shared/effect/api': './shared/effect/api.ts'
440
+ './api': './shared/api.ts',
441
+ './api/client': `./src/api/${app.effectApi.stem}-client.ts`
401
442
  });
402
443
  else if ('shell' === app.kind) Object.assign(packageExports, {
403
- './effect/clients': './src/effect/vertical-clients.ts'
444
+ './api/clients': './src/api/vertical-clients.ts'
404
445
  });
405
446
  if (Object.keys(packageExports).length > 0) packageJson.exports = packageExports;
406
447
  return packageJson;
@@ -434,6 +475,7 @@ function createSharedContractsIndex() {
434
475
  }
435
476
  exports.appDependencies = __webpack_exports__.appDependencies;
436
477
  exports.appDevDependencies = __webpack_exports__.appDevDependencies;
478
+ exports.createAppMfTypesTsConfig = __webpack_exports__.createAppMfTypesTsConfig;
437
479
  exports.createAppPackage = __webpack_exports__.createAppPackage;
438
480
  exports.createAppTsConfig = __webpack_exports__.createAppTsConfig;
439
481
  exports.createEffectTsgoTypecheckCommand = __webpack_exports__.createEffectTsgoTypecheckCommand;
@@ -449,6 +491,7 @@ exports.effectDiagnostics = __webpack_exports__.effectDiagnostics;
449
491
  for(var __rspack_i in __webpack_exports__)if (-1 === [
450
492
  "appDependencies",
451
493
  "appDevDependencies",
494
+ "createAppMfTypesTsConfig",
452
495
  "createAppPackage",
453
496
  "createAppTsConfig",
454
497
  "createEffectTsgoTypecheckCommand",
@@ -57,7 +57,7 @@ function createCloudflareProofRoute(app) {
57
57
  mfManifest: '/mf-manifest.json',
58
58
  locale: `/locales/en/${(0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app)}.json`,
59
59
  ...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? {
60
- effectReadiness: `${(0, external_descriptors_cjs_namespaceObject.effectApiPrefix)(app)}/effect/${(0, external_descriptors_cjs_namespaceObject.effectApiStem)(app)}/readiness`
60
+ apiReadiness: `${(0, external_descriptors_cjs_namespaceObject.effectApiPrefix)(app)}/${(0, external_descriptors_cjs_namespaceObject.effectApiStem)(app)}/readiness`
61
61
  } : {}
62
62
  };
63
63
  }
@@ -148,7 +148,7 @@ const PUBLIC_WEBSITE_POLICY = {
148
148
  requireWebManifestWhenPresent: true
149
149
  },
150
150
  statusCodes: {
151
- notFoundRoute: '/__ultramodern-smoke-missing',
151
+ notFoundRoute: '/__ultramodern-smoke-missing/nope',
152
152
  unknownRouteStatus: 404
153
153
  },
154
154
  indexing: {
@@ -30,16 +30,20 @@ __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
31
  addUltramodernVertical: ()=>external_add_vertical_cjs_namespaceObject.addUltramodernVertical,
32
32
  generateUltramodernWorkspace: ()=>external_write_workspace_cjs_namespaceObject.generateUltramodernWorkspace,
33
+ normalizeUltramodernBridgeConfig: ()=>external_bridge_config_cjs_namespaceObject.normalizeUltramodernBridgeConfig,
33
34
  planUltramodernVertical: ()=>external_add_vertical_cjs_namespaceObject.planUltramodernVertical
34
35
  });
35
36
  const external_add_vertical_cjs_namespaceObject = require("./add-vertical.cjs");
37
+ const external_bridge_config_cjs_namespaceObject = require("./bridge-config.cjs");
36
38
  const external_write_workspace_cjs_namespaceObject = require("./write-workspace.cjs");
37
39
  exports.addUltramodernVertical = __webpack_exports__.addUltramodernVertical;
38
40
  exports.generateUltramodernWorkspace = __webpack_exports__.generateUltramodernWorkspace;
41
+ exports.normalizeUltramodernBridgeConfig = __webpack_exports__.normalizeUltramodernBridgeConfig;
39
42
  exports.planUltramodernVertical = __webpack_exports__.planUltramodernVertical;
40
43
  for(var __rspack_i in __webpack_exports__)if (-1 === [
41
44
  "addUltramodernVertical",
42
45
  "generateUltramodernWorkspace",
46
+ "normalizeUltramodernBridgeConfig",
43
47
  "planUltramodernVertical"
44
48
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
45
49
  Object.defineProperty(exports, '__esModule', {
@@ -28,6 +28,7 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  const TANSTACK_ROUTER_VERSION = '1.170.16';
31
+ const TANSTACK_ROUTER_CORE_VERSION = '1.171.13';
31
32
  const MODULE_FEDERATION_VERSION = '2.6.0';
32
33
  const ZEPHYR_RSPACK_PLUGIN_VERSION = '1.1.1';
33
34
  const ZEPHYR_AGENT_VERSION = '1.1.1';
@@ -57,6 +58,7 @@ const RSTACK_AGENT_SKILLS_COMMIT = '61c948b42512e223bad44b83af4080eba48b2677';
57
58
  const MODULE_FEDERATION_AGENT_SKILLS_COMMIT = '07bb5b6c43ad457609e00c081b72d4c42508ec76';
58
59
  const ultramodernWorkspaceVersions = {
59
60
  tanstackRouter: TANSTACK_ROUTER_VERSION,
61
+ tanstackRouterCore: TANSTACK_ROUTER_CORE_VERSION,
60
62
  moduleFederation: MODULE_FEDERATION_VERSION,
61
63
  tailwind: TAILWIND_VERSION,
62
64
  tailwindPostcss: TAILWIND_POSTCSS_VERSION
@@ -80,6 +82,7 @@ __webpack_require__.d(__webpack_exports__, {}, {
80
82
  RSTACK_AGENT_SKILLS_COMMIT: RSTACK_AGENT_SKILLS_COMMIT,
81
83
  TAILWIND_POSTCSS_VERSION: TAILWIND_POSTCSS_VERSION,
82
84
  TAILWIND_VERSION: TAILWIND_VERSION,
85
+ TANSTACK_ROUTER_CORE_VERSION: TANSTACK_ROUTER_CORE_VERSION,
83
86
  TANSTACK_ROUTER_VERSION: TANSTACK_ROUTER_VERSION,
84
87
  TYPESCRIPT_NATIVE_PREVIEW_VERSION: TYPESCRIPT_NATIVE_PREVIEW_VERSION,
85
88
  TYPESCRIPT_STABLE_VERSION: TYPESCRIPT_STABLE_VERSION,
@@ -110,6 +113,7 @@ exports.REACT_VERSION = __webpack_exports__.REACT_VERSION;
110
113
  exports.RSTACK_AGENT_SKILLS_COMMIT = __webpack_exports__.RSTACK_AGENT_SKILLS_COMMIT;
111
114
  exports.TAILWIND_POSTCSS_VERSION = __webpack_exports__.TAILWIND_POSTCSS_VERSION;
112
115
  exports.TAILWIND_VERSION = __webpack_exports__.TAILWIND_VERSION;
116
+ exports.TANSTACK_ROUTER_CORE_VERSION = __webpack_exports__.TANSTACK_ROUTER_CORE_VERSION;
113
117
  exports.TANSTACK_ROUTER_VERSION = __webpack_exports__.TANSTACK_ROUTER_VERSION;
114
118
  exports.TYPESCRIPT_NATIVE_PREVIEW_VERSION = __webpack_exports__.TYPESCRIPT_NATIVE_PREVIEW_VERSION;
115
119
  exports.TYPESCRIPT_STABLE_VERSION = __webpack_exports__.TYPESCRIPT_STABLE_VERSION;
@@ -140,6 +144,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
140
144
  "RSTACK_AGENT_SKILLS_COMMIT",
141
145
  "TAILWIND_POSTCSS_VERSION",
142
146
  "TAILWIND_VERSION",
147
+ "TANSTACK_ROUTER_CORE_VERSION",
143
148
  "TANSTACK_ROUTER_VERSION",
144
149
  "TYPESCRIPT_NATIVE_PREVIEW_VERSION",
145
150
  "TYPESCRIPT_STABLE_VERSION",
@@ -28,13 +28,8 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- createAssertMfTypesScript: ()=>createAssertMfTypesScript,
32
- createCloudflareProofHelperScript: ()=>createCloudflareProofHelperScript,
33
- createCloudflareVersionProofScript: ()=>createCloudflareVersionProofScript,
34
31
  createPerformanceReadinessConfigScript: ()=>createPerformanceReadinessConfigScript,
35
- createPerformanceReadinessScript: ()=>createPerformanceReadinessScript,
36
- createPublicSurfaceAssetsScript: ()=>createPublicSurfaceAssetsScript,
37
- createUltramodernTypecheckScript: ()=>createUltramodernTypecheckScript,
32
+ createWorkspaceApiBoundaryValidationScript: ()=>createWorkspaceApiBoundaryValidationScript,
38
33
  createWorkspaceI18nBoundaryValidationScript: ()=>createWorkspaceI18nBoundaryValidationScript,
39
34
  createWorkspaceValidationScript: ()=>createWorkspaceValidationScript,
40
35
  writeGeneratedWorkspaceScripts: ()=>writeGeneratedWorkspaceScripts
@@ -48,10 +43,73 @@ const external_policy_cjs_namespaceObject = require("./policy.cjs");
48
43
  const external_public_surface_cjs_namespaceObject = require("./public-surface.cjs");
49
44
  const external_routes_cjs_namespaceObject = require("./routes.cjs");
50
45
  const external_versions_cjs_namespaceObject = require("./versions.cjs");
51
- function createAssertMfTypesScript(remotes = []) {
52
- return (0, external_fs_io_cjs_namespaceObject.renderFileTemplate)("workspace-scripts/assert-mf-types.mjs", {
53
- defaultAppDirsJson: JSON.stringify(remotes.map((remote)=>remote.directory), null, 2)
46
+ function createToolWrapperScript(command, extraArgs = []) {
47
+ const commandJson = JSON.stringify(command);
48
+ const extraArgsJson = JSON.stringify(extraArgs);
49
+ return `#!/usr/bin/env node
50
+ import { spawnSync } from 'node:child_process';
51
+ import path from 'node:path';
52
+ import { fileURLToPath } from 'node:url';
53
+
54
+ const createBin = process.env.ULTRAMODERN_CREATE_BIN;
55
+ const forwardedArgs = process.argv.slice(2);
56
+ const workspaceRoot =
57
+ process.env.ULTRAMODERN_WORKSPACE_ROOT ??
58
+ path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
59
+ const ultramodernArgs = ['ultramodern', ${commandJson}, ...${extraArgsJson}, ...forwardedArgs];
60
+ const result = createBin
61
+ ? spawnSync(process.execPath, [createBin, ...ultramodernArgs], {
62
+ env: { ...process.env, ULTRAMODERN_WORKSPACE_ROOT: workspaceRoot },
63
+ stdio: 'inherit',
64
+ })
65
+ : spawnSync('modern-js-create', ultramodernArgs, {
66
+ env: { ...process.env, ULTRAMODERN_WORKSPACE_ROOT: workspaceRoot },
67
+ shell: process.platform === 'win32',
68
+ stdio: 'inherit',
54
69
  });
70
+
71
+ if (result.error) {
72
+ console.error(result.error.message);
73
+ process.exit(1);
74
+ }
75
+
76
+ process.exit(result.status ?? 1);
77
+ `;
78
+ }
79
+ function createSkillsToolWrapperScript() {
80
+ return `#!/usr/bin/env node
81
+ import { spawnSync } from 'node:child_process';
82
+ import path from 'node:path';
83
+ import { fileURLToPath } from 'node:url';
84
+
85
+ const createBin = process.env.ULTRAMODERN_CREATE_BIN;
86
+ const forwardedArgs = process.argv.slice(2);
87
+ const workspaceRoot =
88
+ process.env.ULTRAMODERN_WORKSPACE_ROOT ??
89
+ path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
90
+ const checkOnly = forwardedArgs.includes('--check');
91
+ const skillArgs = checkOnly
92
+ ? ['skills', 'check', ...forwardedArgs.filter(arg => arg !== '--check')]
93
+ : ['skills', 'install', ...forwardedArgs];
94
+ const ultramodernArgs = ['ultramodern', ...skillArgs];
95
+ const result = createBin
96
+ ? spawnSync(process.execPath, [createBin, ...ultramodernArgs], {
97
+ env: { ...process.env, ULTRAMODERN_WORKSPACE_ROOT: workspaceRoot },
98
+ stdio: 'inherit',
99
+ })
100
+ : spawnSync('modern-js-create', ultramodernArgs, {
101
+ env: { ...process.env, ULTRAMODERN_WORKSPACE_ROOT: workspaceRoot },
102
+ shell: process.platform === 'win32',
103
+ stdio: 'inherit',
104
+ });
105
+
106
+ if (result.error) {
107
+ console.error(result.error.message);
108
+ process.exit(1);
109
+ }
110
+
111
+ process.exit(result.status ?? 1);
112
+ `;
55
113
  }
56
114
  function createWorkspaceValidationScript(scope, enableTailwind, remotes = []) {
57
115
  const verticals = remotes.filter(external_descriptors_cjs_namespaceObject.appHasEffectApi).map((remote)=>({
@@ -105,53 +163,32 @@ function createWorkspaceValidationScript(scope, enableTailwind, remotes = []) {
105
163
  function createWorkspaceI18nBoundaryValidationScript() {
106
164
  return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/check-ultramodern-i18n-boundaries.mjs");
107
165
  }
108
- function createPublicSurfaceAssetsScript() {
109
- return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/generate-public-surface-assets.mjs");
110
- }
111
- function createCloudflareProofHelperScript() {
112
- return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-cloudflare-proof.mjs");
113
- }
114
- function createCloudflareVersionProofScript() {
115
- return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/proof-cloudflare-version.mjs");
166
+ function createWorkspaceApiBoundaryValidationScript() {
167
+ return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/check-ultramodern-api-boundaries.mjs");
116
168
  }
117
169
  function createPerformanceReadinessConfigScript() {
118
170
  return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-performance-readiness.config.mjs");
119
171
  }
120
- function createPerformanceReadinessScript() {
121
- return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-performance-readiness.mjs");
122
- }
123
- function createUltramodernTypecheckScript() {
124
- return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-typecheck.mjs");
125
- }
126
- function writeGeneratedWorkspaceScripts(targetDir, scope, enableTailwind, remotes = []) {
127
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/assert-mf-types.mjs", createAssertMfTypesScript(remotes));
128
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/validate-ultramodern-workspace.mjs", createWorkspaceValidationScript(scope, enableTailwind, remotes));
172
+ function writeGeneratedWorkspaceScripts(targetDir, _scope, _enableTailwind, _remotes = []) {
173
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/assert-mf-types.mjs", createToolWrapperScript('mf-types'));
174
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/validate-ultramodern-workspace.mjs", createToolWrapperScript('validate'));
129
175
  (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/check-ultramodern-i18n-boundaries.mjs", createWorkspaceI18nBoundaryValidationScript());
130
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/generate-public-surface-assets.mjs", createPublicSurfaceAssetsScript());
131
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-cloudflare-proof.mjs", createCloudflareProofHelperScript());
132
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/proof-cloudflare-version.mjs", createCloudflareVersionProofScript());
176
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/check-ultramodern-api-boundaries.mjs", createWorkspaceApiBoundaryValidationScript());
177
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/generate-public-surface-assets.mjs", createToolWrapperScript('public-surface'));
178
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/proof-cloudflare-version.mjs", createToolWrapperScript('cloudflare-proof'));
133
179
  (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-performance-readiness.config.mjs", createPerformanceReadinessConfigScript());
134
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-performance-readiness.mjs", createPerformanceReadinessScript());
135
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-typecheck.mjs", createUltramodernTypecheckScript());
180
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-performance-readiness.mjs", createToolWrapperScript('performance-readiness'));
181
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-typecheck.mjs", createToolWrapperScript('typecheck'));
182
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/bootstrap-agent-skills.mjs", createSkillsToolWrapperScript());
136
183
  }
137
- exports.createAssertMfTypesScript = __webpack_exports__.createAssertMfTypesScript;
138
- exports.createCloudflareProofHelperScript = __webpack_exports__.createCloudflareProofHelperScript;
139
- exports.createCloudflareVersionProofScript = __webpack_exports__.createCloudflareVersionProofScript;
140
184
  exports.createPerformanceReadinessConfigScript = __webpack_exports__.createPerformanceReadinessConfigScript;
141
- exports.createPerformanceReadinessScript = __webpack_exports__.createPerformanceReadinessScript;
142
- exports.createPublicSurfaceAssetsScript = __webpack_exports__.createPublicSurfaceAssetsScript;
143
- exports.createUltramodernTypecheckScript = __webpack_exports__.createUltramodernTypecheckScript;
185
+ exports.createWorkspaceApiBoundaryValidationScript = __webpack_exports__.createWorkspaceApiBoundaryValidationScript;
144
186
  exports.createWorkspaceI18nBoundaryValidationScript = __webpack_exports__.createWorkspaceI18nBoundaryValidationScript;
145
187
  exports.createWorkspaceValidationScript = __webpack_exports__.createWorkspaceValidationScript;
146
188
  exports.writeGeneratedWorkspaceScripts = __webpack_exports__.writeGeneratedWorkspaceScripts;
147
189
  for(var __rspack_i in __webpack_exports__)if (-1 === [
148
- "createAssertMfTypesScript",
149
- "createCloudflareProofHelperScript",
150
- "createCloudflareVersionProofScript",
151
190
  "createPerformanceReadinessConfigScript",
152
- "createPerformanceReadinessScript",
153
- "createPublicSurfaceAssetsScript",
154
- "createUltramodernTypecheckScript",
191
+ "createWorkspaceApiBoundaryValidationScript",
155
192
  "createWorkspaceI18nBoundaryValidationScript",
156
193
  "createWorkspaceValidationScript",
157
194
  "writeGeneratedWorkspaceScripts"