@bleedingdev/modern-js-sandpack-react 3.2.0-ultramodern.112 → 3.2.0-ultramodern.113
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.
|
@@ -40,12 +40,12 @@ const MWAFiles = {
|
|
|
40
40
|
"AGENTS.md": "# UltraModern Agent Contract\n\nThis project is generated for Codex-first UltraModern.js work.\n\n## Quality Gates\n\n- `pnpm lint` runs Oxlint with the Ultracite preset.\n- `pnpm format` runs oxfmt.\n- `pnpm typecheck` runs effect-tsgo as the TypeScript checker.\n- `pnpm i18n:check` rejects hardcoded user-visible JSX text.\n- `pnpm ultramodern:check` verifies the generated contract.\n- Generated Codex stop hooks and subagent-stop hooks run `pnpm format && pnpm lint:fix && pnpm ultramodern:check`.\n- `postinstall` formats the generated tree, installs private orchestration skills when available, initializes a Git repository when needed, and installs `lefthook`. Generated `lefthook.yml` runs `pnpm format && pnpm lint:fix && pnpm ultramodern:check` on pre-commit; pre-push runs `pnpm ultramodern:check`.\n\n## Internationalization\n\nRuntime i18n is enabled by default. Agents must put user-visible UI copy in `config/public/locales/<lang>/translation.json` and render it through `react-i18next` or `@modern-js/plugin-i18n/runtime`. Do not add hardcoded JSX text, `aria-label`, `title`, `alt`, or `placeholder` strings unless the value is a non-translatable technical token.\n\nRoutes are locale-prefixed by default through `localePathRedirect: true`. Keep localized pages under `src/routes/[lang]`, use links for language switching, and preserve canonical plus `hreflang` metadata. Production builds fail unless `MODERN_PUBLIC_SITE_URL` is set, so deployed canonical URLs always use the production origin.\n\n## Private Skills\n\nPrivate orchestration skills are installed automatically during `pnpm install` when the current developer is authorized for `TechsioCZ/skills`. The installer clones that private repository and copies only the allowlisted skills from `.agents/skills-lock.json`; unauthorized developers get a warning and can continue with the public contract.\n",
|
|
41
41
|
"lefthook.yml": "pre-commit:\n commands:\n fix-and-check:\n run: pnpm format && pnpm lint:fix && pnpm ultramodern:check\n stage_fixed: true\n\npre-push:\n commands:\n check:\n run: pnpm ultramodern:check\n",
|
|
42
42
|
"modern.config.ts": "// @effect-diagnostics nodeBuiltinImport:off processEnv:off\nimport { appTools, defineConfig, presetUltramodern } from '@modern-js/app-tools';\nimport path from 'node:path';\nimport { bffPlugin } from '@modern-js/plugin-bff';\nimport { i18nPlugin } from '@modern-js/plugin-i18n';\nimport { tanstackRouterPlugin } from '@modern-js/plugin-tanstack';\n\nconst appId = process.env['MODERN_BASELINE_APP_ID'] || path.basename(process.cwd());\nconst enableModuleFederationSSR = process.env['MODERN_BASELINE_ENABLE_MF_SSR'] !== 'false';\nconst enableBffRequestId = process.env['MODERN_BASELINE_ENABLE_BFF_REQUEST_ID'] !== 'false';\nconst enableTelemetryExporters =\n process.env['MODERN_BASELINE_ENABLE_TELEMETRY_EXPORTERS'] !== 'false';\nconst telemetryFailLoudStartup = process.env['MODERN_TELEMETRY_FAIL_LOUD_STARTUP'] !== 'false';\nconst otlpEndpoint = process.env['MODERN_TELEMETRY_OTLP_ENDPOINT'];\nconst configuredSiteUrl = process.env['MODERN_PUBLIC_SITE_URL'];\nconst hasConfiguredSiteUrl = typeof configuredSiteUrl === 'string' && configuredSiteUrl.length > 0;\nconst isProductionBuild =\n process.env['NODE_ENV'] === 'production' || process.argv.includes('build');\n\nif (isProductionBuild && !hasConfiguredSiteUrl) {\n throw new Error(\n 'MODERN_PUBLIC_SITE_URL must be set for production builds so canonical and hreflang URLs use the deployed origin.',\n );\n}\n\nconst siteUrl = hasConfiguredSiteUrl ? configuredSiteUrl : 'http://localhost:8080';\nconst victoriaMetricsEndpoint = process.env['MODERN_TELEMETRY_VICTORIA_ENDPOINT'];\n\n// https://bleedingdev.github.io/ultramodern.js/configure/app/usage.html\nexport default defineConfig(\n presetUltramodern(\n {\n bff: {\n effect: {\n entry: './api/effect/index',\n openapi: true,\n },\n\n runtimeFramework: 'effect',\n },\n\n html: {\n meta: {\n viewport: 'width=device-width, initial-scale=1.0, viewport-fit=cover',\n },\n title: 'UltraModern.js Starter',\n },\n plugins: [\n appTools(),\n i18nPlugin({\n localeDetection: {\n fallbackLanguage: 'en',\n languages: ['en', 'cs'],\n localePathRedirect: true,\n },\n }),\n\n tanstackRouterPlugin(),\n\n bffPlugin(),\n ],\n source: {\n globalVars: {\n ULTRAMODERN_SITE_URL: siteUrl,\n },\n },\n },\n {\n appId,\n enableBffRequestId,\n enableModuleFederationSSR,\n enableTelemetryExporters,\n ...(typeof otlpEndpoint === 'string' ? { otlpEndpoint } : {}),\n telemetryFailLoudStartup,\n ...(typeof victoriaMetricsEndpoint === 'string' ? { victoriaMetricsEndpoint } : {}),\n },\n ),\n);\n",
|
|
43
|
-
"oxlint.config.ts": "import { defineConfig } from 'oxlint';\nimport core from 'ultracite/oxlint/core';\nimport react from 'ultracite/oxlint/react';\n\nexport default defineConfig({\n env: {\n browser: true,\n node: true,\n },\n extends: [core, react],\n ignorePatterns: [\n '.agents',\n 'dist',\n 'node_modules',\n '.modern',\n '.modernjs',\n '**/routeTree.gen.ts',\n ],\n});\n",
|
|
44
43
|
"oxfmt.config.ts": "import { defineConfig } from 'oxfmt';\nimport ultracite from 'ultracite/oxfmt';\n\nexport default defineConfig({\n extends: [ultracite],\n ignorePatterns: [\n '.agents',\n 'dist',\n 'node_modules',\n '.modern',\n '.modernjs',\n '**/routeTree.gen.ts',\n ],\n singleQuote: true,\n});\n",
|
|
45
|
-
"
|
|
44
|
+
"oxlint.config.ts": "import { defineConfig } from 'oxlint';\nimport core from 'ultracite/oxlint/core';\nimport react from 'ultracite/oxlint/react';\n\nexport default defineConfig({\n env: {\n browser: true,\n node: true,\n },\n extends: [core, react],\n ignorePatterns: [\n '.agents',\n 'dist',\n 'node_modules',\n '.modern',\n '.modernjs',\n '**/routeTree.gen.ts',\n ],\n});\n",
|
|
45
|
+
"package.json": '{\n "name": "modern-app",\n "version": "0.1.0",\n "private": true,\n "type": "module",\n "packageManager": "pnpm@11.5.2",\n "scripts": {\n "reset": "npx rimraf node_modules ./**/node_modules",\n "dev": "modern dev",\n "build": "modern build",\n "serve": "modern serve",\n "test": "rstest run",\n "typecheck": "node -e \\"const fs = require(\'node:fs\'); const { execFileSync, spawnSync } = require(\'node:child_process\'); const bin = execFileSync(\'effect-tsgo\', [\'get-exe-path\'], { encoding: \'utf8\' }).trim(); if (process.platform !== \'win32\') fs.chmodSync(bin, 0o755); const result = spawnSync(bin, [\'--noEmit\', \'-p\', \'tsconfig.json\'], { stdio: \'inherit\' }); process.exit(result.status ?? 1);\\"",\n "i18n:check": "node ./scripts/check-i18n-strings.mjs",\n\n "skills:install": "node ./scripts/bootstrap-agent-skills.mjs",\n "skills:check": "node ./scripts/bootstrap-agent-skills.mjs --check",\n "postinstall": "oxfmt . && node ./scripts/bootstrap-agent-skills.mjs",\n\n "ultramodern:check": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm i18n:check && pnpm test && pnpm skills:check && node ./scripts/validate-ultramodern.mjs",\n "format": "oxfmt .",\n "format:check": "oxfmt --check .",\n "lint": "oxlint .",\n "lint:fix": "oxlint . --fix"\n },\n "dependencies": {\n "@modern-js/plugin-i18n": "3.2.1",\n "@modern-js/plugin-tanstack": "3.2.1",\n\n "@modern-js/runtime": "3.2.1",\n "@tanstack/react-router": "1.170.15",\n\n "i18next": "26.3.1",\n "react": "^19.2.7",\n "react-dom": "^19.2.7",\n "react-i18next": "17.0.8"\n },\n "devDependencies": {\n "@effect/tsgo": "0.14.0",\n "@modern-js/adapter-rstest": "3.2.1",\n "@modern-js/app-tools": "3.2.1",\n "@modern-js/code-tools": "{{codeToolsVersion}}",\n "@modern-js/create": "{{createVersion}}",\n "@modern-js/plugin-bff": "3.2.1",\n "@modern-js/tsconfig": "3.2.1",\n "@rstest/core": "0.10.3",\n\n "@tailwindcss/postcss": "^4.3.0",\n\n "@types/node": "^20",\n "@types/react": "^19.2.17",\n "@types/react-dom": "^19.2.3",\n "@typescript/native-preview": "7.0.0-dev.20260606.1",\n "happy-dom": "^20.10.1",\n\n "lefthook": "^2.1.9",\n\n "oxfmt": "0.53.0",\n "oxlint": "1.68.0",\n "postcss": "^8.5.15",\n "rimraf": "^6.1.3",\n "tailwindcss": "^4.3.0",\n "ultracite": "7.8.1"\n },\n "engines": {\n "node": ">=20",\n "pnpm": ">=11.5.2 <11.6.0"\n }\n}\n',
|
|
46
46
|
"postcss.config.mjs": "export default {\n plugins: {\n '@tailwindcss/postcss': {},\n },\n};\n\n",
|
|
47
|
+
"pnpm-workspace.yaml": "minimumReleaseAge: 1440\nminimumReleaseAgeStrict: true\nminimumReleaseAgeIgnoreMissingTime: false\nminimumReleaseAgeExclude:\n - '@bleedingdev/modern-js-*'\n - '@tanstack/react-router'\n - '@tanstack/router-core'\n - '@typescript/native-preview'\n - '@typescript/native-preview-*'\n - '@types/react'\ntrustPolicy: no-downgrade\ntrustPolicyIgnoreAfter: 1440\nblockExoticSubdeps: true\nengineStrict: true\npmOnFail: error\nverifyDepsBeforeRun: error\nstrictDepBuilds: true\n\nallowBuilds:\n '@swc/core': true\n core-js: true\n esbuild: true\n lefthook: true\n msgpackr-extract: true\n sharp: true\n workerd: true\nonlyBuiltDependencies:\n - '@swc/core'\n - core-js\n - esbuild\n - lefthook\n - msgpackr-extract\n - sharp\n - workerd\n",
|
|
47
48
|
"rstest.config.mts": "import { defineConfig } from '@rstest/core';\n\nexport default defineConfig({\n testEnvironment: 'node',\n});\n",
|
|
48
|
-
"package.json": '{\n "name": "modern-app",\n "version": "0.1.0",\n "private": true,\n "type": "module",\n "packageManager": "pnpm@11.5.2",\n "scripts": {\n "reset": "npx rimraf node_modules ./**/node_modules",\n "dev": "modern dev",\n "build": "modern build",\n "serve": "modern serve",\n "test": "rstest run",\n "typecheck": "node -e \\"const fs = require(\'node:fs\'); const { execFileSync, spawnSync } = require(\'node:child_process\'); const bin = execFileSync(\'effect-tsgo\', [\'get-exe-path\'], { encoding: \'utf8\' }).trim(); if (process.platform !== \'win32\') fs.chmodSync(bin, 0o755); const result = spawnSync(bin, [\'--noEmit\', \'-p\', \'tsconfig.json\'], { stdio: \'inherit\' }); process.exit(result.status ?? 1);\\"",\n "i18n:check": "node ./scripts/check-i18n-strings.mjs",\n\n "skills:install": "node ./scripts/bootstrap-agent-skills.mjs",\n "skills:check": "node ./scripts/bootstrap-agent-skills.mjs --check",\n "postinstall": "oxfmt . && node ./scripts/bootstrap-agent-skills.mjs",\n\n "ultramodern:check": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm i18n:check && pnpm test && pnpm skills:check && node ./scripts/validate-ultramodern.mjs",\n "format": "oxfmt .",\n "format:check": "oxfmt --check .",\n "lint": "oxlint .",\n "lint:fix": "oxlint . --fix"\n },\n "dependencies": {\n "@modern-js/plugin-i18n": "3.2.1",\n "@modern-js/plugin-tanstack": "3.2.1",\n\n "@modern-js/runtime": "3.2.1",\n "@tanstack/react-router": "1.170.15",\n\n "i18next": "26.3.1",\n "react": "^19.2.7",\n "react-dom": "^19.2.7",\n "react-i18next": "17.0.8"\n },\n "devDependencies": {\n "@effect/tsgo": "0.14.0",\n "@modern-js/adapter-rstest": "3.2.1",\n "@modern-js/app-tools": "3.2.1",\n "@modern-js/code-tools": "{{codeToolsVersion}}",\n "@modern-js/create": "{{createVersion}}",\n "@modern-js/plugin-bff": "3.2.1",\n "@modern-js/tsconfig": "3.2.1",\n "@rstest/core": "0.10.3",\n\n "@tailwindcss/postcss": "^4.3.0",\n\n "@types/node": "^20",\n "@types/react": "^19.2.17",\n "@types/react-dom": "^19.2.3",\n "@typescript/native-preview": "7.0.0-dev.20260606.1",\n "happy-dom": "^20.10.1",\n\n "lefthook": "^2.1.9",\n\n "oxfmt": "0.53.0",\n "oxlint": "1.68.0",\n "postcss": "^8.5.15",\n "rimraf": "^6.1.3",\n "tailwindcss": "^4.3.0",\n "ultracite": "7.8.1"\n },\n "engines": {\n "node": ">=20",\n "pnpm": ">=11.5.2 <11.6.0"\n }\n}\n',
|
|
49
49
|
"tailwind.config.ts": "import type { Config } from 'tailwindcss';\n\nexport default {\n content: ['./src/**/*.{js,ts,jsx,tsx}'],\n plugins: [],\n theme: {\n extend: {},\n },\n} satisfies Config;\n\n",
|
|
50
50
|
"tsconfig.json": "{\n \"extends\": \"@modern-js/tsconfig/base\",\n \"compilerOptions\": {\n \"declaration\": false,\n \"jsx\": \"preserve\",\n \"target\": \"ESNext\",\n \"lib\": [\"ESNext\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"preserve\",\n \"moduleResolution\": \"Bundler\",\n \"moduleDetection\": \"force\",\n \"isolatedModules\": true,\n \"verbatimModuleSyntax\": true,\n \"noEmit\": true,\n \"allowJs\": true,\n \"allowImportingTsExtensions\": true,\n \"resolveJsonModule\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"strict\": true,\n \"noUncheckedIndexedAccess\": true,\n \"exactOptionalPropertyTypes\": true,\n \"noImplicitOverride\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noPropertyAccessFromIndexSignature\": true,\n \"noImplicitReturns\": true,\n \"paths\": {\n \"@/*\": [\"./src/*\"],\n \"@api/*\": [\"./api/*\"],\n \"@shared/*\": [\"./shared/*\"]\n },\n \"rootDir\": \".\",\n \"plugins\": [\n {\n \"name\": \"@effect/language-service\",\n \"diagnostics\": true,\n \"includeSuggestionsInTsc\": true,\n \"ignoreEffectSuggestionsInTscExitCode\": false,\n \"ignoreEffectWarningsInTscExitCode\": false,\n \"ignoreEffectErrorsInTscExitCode\": false,\n \"skipDisabledOptimization\": true,\n \"diagnosticSeverity\": {\n \"anyUnknownInErrorContext\": \"error\",\n \"classSelfMismatch\": \"error\",\n \"duplicatePackage\": \"error\",\n \"effectFnImplicitAny\": \"error\",\n \"floatingEffect\": \"error\",\n \"genericEffectServices\": \"error\",\n \"missingEffectContext\": \"error\",\n \"missingEffectError\": \"error\",\n \"missingLayerContext\": \"error\",\n \"missingReturnYieldStar\": \"error\",\n \"missingStarInYieldEffectGen\": \"error\",\n \"nonObjectEffectServiceType\": \"error\",\n \"outdatedApi\": \"error\",\n \"overriddenSchemaConstructor\": \"error\",\n \"catchUnfailableEffect\": \"error\",\n \"effectFnIife\": \"error\",\n \"effectGenUsesAdapter\": \"error\",\n \"effectInFailure\": \"error\",\n \"effectInVoidSuccess\": \"error\",\n \"globalErrorInEffectCatch\": \"error\",\n \"globalErrorInEffectFailure\": \"error\",\n \"layerMergeAllWithDependencies\": \"error\",\n \"lazyPromiseInEffectSync\": \"error\",\n \"leakingRequirements\": \"error\",\n \"multipleEffectProvide\": \"error\",\n \"returnEffectInGen\": \"error\",\n \"runEffectInsideEffect\": \"error\",\n \"schemaSyncInEffect\": \"error\",\n \"scopeInLayerEffect\": \"error\",\n \"strictEffectProvide\": \"error\",\n \"tryCatchInEffectGen\": \"error\",\n \"unknownInEffectCatch\": \"error\",\n \"asyncFunction\": \"error\",\n \"cryptoRandomUUID\": \"error\",\n \"cryptoRandomUUIDInEffect\": \"error\",\n \"extendsNativeError\": \"error\",\n \"globalConsole\": \"error\",\n \"globalConsoleInEffect\": \"error\",\n \"globalDate\": \"error\",\n \"globalDateInEffect\": \"error\",\n \"globalFetch\": \"error\",\n \"globalFetchInEffect\": \"error\",\n \"globalRandom\": \"error\",\n \"globalRandomInEffect\": \"error\",\n \"globalTimers\": \"error\",\n \"globalTimersInEffect\": \"error\",\n \"instanceOfSchema\": \"error\",\n \"newPromise\": \"error\",\n \"nodeBuiltinImport\": \"error\",\n \"preferSchemaOverJson\": \"error\",\n \"processEnv\": \"error\",\n \"processEnvInEffect\": \"error\",\n \"unsafeEffectTypeAssertion\": \"error\",\n \"catchAllToMapError\": \"error\",\n \"deterministicKeys\": \"error\",\n \"effectDoNotation\": \"error\",\n \"effectFnOpportunity\": \"error\",\n \"effectMapFlatten\": \"error\",\n \"effectMapVoid\": \"error\",\n \"effectSucceedWithVoid\": \"error\",\n \"missedPipeableOpportunity\": \"error\",\n \"missingEffectServiceDependency\": \"error\",\n \"nestedEffectGenYield\": \"error\",\n \"redundantSchemaTagIdentifier\": \"error\",\n \"schemaStructWithTag\": \"error\",\n \"schemaUnionOfLiterals\": \"error\",\n \"serviceNotAsClass\": \"error\",\n \"strictBooleanExpressions\": \"error\",\n \"unnecessaryArrowBlock\": \"error\",\n \"unnecessaryEffectGen\": \"error\",\n \"unnecessaryFailYieldableError\": \"error\",\n \"unnecessaryPipe\": \"error\",\n \"unnecessaryPipeChain\": \"error\"\n }\n }\n ]\n },\n \"include\": [\"src\", \"api\", \"shared\", \"config\", \"modern.config.ts\", \"server\"],\n \"exclude\": [\"**/node_modules\"]\n}\n",
|
|
51
51
|
".agents/skills-lock.json": "{\n \"schemaVersion\": 2,\n \"installDir\": \".agents/skills\",\n \"sources\": [\n {\n \"id\": \"techsiocz-private\",\n \"visibility\": \"private\",\n \"repository\": \"https://github.com/TechsioCZ/skills\",\n \"install\": \"clone-if-authorized\",\n \"baseline\": [\n {\n \"name\": \"plan-graph\",\n \"reason\": \"Build and validate DAGs from .plan.md files\"\n },\n {\n \"name\": \"dag\",\n \"reason\": \"Inspect current plan frontiers and blocked lanes\"\n },\n {\n \"name\": \"subagent-graph\",\n \"reason\": \"Design dependency-aware multi-agent launch graphs\"\n },\n {\n \"name\": \"helm\",\n \"reason\": \"Steer already-running multi-agent work\"\n },\n {\n \"name\": \"debugger-mode\",\n \"reason\": \"Run hypothesis-driven debugging with runtime evidence\"\n }\n ]\n }\n ]\n}\n",
|
|
@@ -58,8 +58,8 @@ const MWAFiles = {
|
|
|
58
58
|
".github/renovate.json": "{\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n \"extends\": [\n \"config:recommended\",\n \"helpers:pinGitHubActionDigests\"\n ],\n \"dependencyDashboard\": true,\n \"minimumReleaseAge\": \"1 day\",\n \"prConcurrentLimit\": 5,\n \"prHourlyLimit\": 2,\n \"rangeStrategy\": \"bump\",\n \"schedule\": [\n \"before 5am on monday\"\n ],\n \"timezone\": \"Etc/UTC\",\n \"packageRules\": [\n {\n \"matchManagers\": [\n \"github-actions\"\n ],\n \"groupName\": \"github-actions\",\n \"labels\": [\n \"dependencies\",\n \"github-actions\",\n \"security\"\n ]\n },\n {\n \"matchManagers\": [\n \"npm\"\n ],\n \"matchUpdateTypes\": [\n \"patch\",\n \"minor\"\n ],\n \"groupName\": \"npm minor and patch updates\",\n \"labels\": [\n \"dependencies\",\n \"npm\"\n ]\n },\n {\n \"matchUpdateTypes\": [\n \"major\"\n ],\n \"dependencyDashboardApproval\": true,\n \"labels\": [\n \"dependencies\",\n \"major\"\n ]\n }\n ]\n}\n",
|
|
59
59
|
".github/workflows/ultramodern-gates.yml": "name: Ultramodern Gates\n\non:\n push:\n pull_request:\n\npermissions:\n contents: read\n\ndefaults:\n run:\n shell: bash\n\nenv:\n FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true\n\nconcurrency:\n group: ultramodern-gates-${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\njobs:\n ultramodern-gates:\n runs-on: ubuntu-latest\n timeout-minutes: 20\n steps:\n - name: Harden Runner\n uses: step-security/harden-runner@ab7a9404c0f3da075243ca237b5fac12c98deaa5 # v2\n with:\n egress-policy: audit\n\n - name: Checkout\n uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n with:\n fetch-depth: 1\n persist-credentials: false\n\n - name: Setup Node.js\n uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0\n with:\n node-version: 24\n\n - name: Setup mise\n uses: jdx/mise-action@5ac50f778e26fac95da98d50503682459e86d566 # v3.2.0\n\n - name: Install Dependencies\n run: mise exec -- pnpm install --frozen-lockfile\n\n - name: Validate Ultramodern Contract\n run: mise exec -- pnpm run ultramodern:check\n\n - name: Build\n env:\n MODERN_PUBLIC_SITE_URL: http://localhost:8080\n run: mise exec -- pnpm run build\n",
|
|
60
60
|
"shared/effect/api.ts": "import {\n HttpApi,\n HttpApiEndpoint,\n HttpApiGroup,\n Schema,\n} from '@modern-js/plugin-bff/effect-client';\n\nexport const bffEffectApi = HttpApi.make('BffApi').add(\n HttpApiGroup.make('greetings').add(\n HttpApiEndpoint.get('hello', '/effect/hello', {\n success: Schema.Struct({\n message: Schema.String,\n runtime: Schema.Literal('effect'),\n }),\n }),\n ),\n);\n",
|
|
61
|
-
"api/lambda/hello.ts": "\n",
|
|
62
61
|
"api/effect/index.ts": "import {\n Effect,\n HttpApiBuilder,\n Layer,\n defineEffectBff,\n} from '@modern-js/plugin-bff/effect-server';\nimport type { HttpApi, HttpApiGroup } from '@modern-js/plugin-bff/effect-server';\nimport { bffEffectApi } from '../../shared/effect/api.ts';\n\ntype ApiGroups<TApi> = TApi extends HttpApi.HttpApi<string, infer TGroups> ? TGroups : never;\ntype GreetingsHandlers = HttpApiBuilder.Handlers.FromGroup<\n HttpApiGroup.WithName<ApiGroups<typeof bffEffectApi>, 'greetings'>\n>;\n\nconst greetingsLayer = HttpApiBuilder.group(\n bffEffectApi,\n 'greetings',\n (handlers: GreetingsHandlers) =>\n handlers.handle('hello', () =>\n Effect.succeed({\n message: 'Hello from Effect HttpApi',\n runtime: 'effect' as const,\n }),\n ),\n);\n\nconst layer = HttpApiBuilder.layer(bffEffectApi).pipe(\n Layer.provide(greetingsLayer),\n);\n\nexport default defineEffectBff({\n api: bffEffectApi,\n layer,\n});\n",
|
|
62
|
+
"api/lambda/hello.ts": "\n",
|
|
63
63
|
"src/modern-app-env.d.ts": "/// <reference types='@modern-js/app-tools/types' />\n\ndeclare const ULTRAMODERN_SITE_URL: string;\n",
|
|
64
64
|
"src/modern.runtime.ts": "import { defineRuntimeConfig } from '@modern-js/runtime';\nimport { createInstance } from 'i18next';\n\nconst i18nInstance = createInstance();\n\nexport default defineRuntimeConfig({\n i18n: {\n i18nInstance,\n initOptions: {\n defaultNS: 'translation',\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false,\n },\n ns: ['translation'],\n supportedLngs: ['en', 'cs'],\n },\n },\n router: {\n framework: 'tanstack',\n },\n});\n",
|
|
65
65
|
"src/routes/index.css": "@import 'tailwindcss';\n\n:root {\n color-scheme: light;\n --starter-bg: #f3f6f4;\n --starter-surface: #ffffff;\n --starter-text: #14201b;\n --starter-muted: #52625b;\n --starter-border: #cfdad4;\n --starter-accent: #087f5b;\n --starter-accent-strong: #075f48;\n --starter-focus: #0b7285;\n}\n\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n margin: 0;\n font-family:\n Inter,\n ui-sans-serif,\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Arial,\n sans-serif;\n color: var(--starter-text);\n background: linear-gradient(180deg, #ffffff 0%, var(--starter-bg) 100%);\n}\n\np {\n margin: 0;\n}\n\n.container-box,\n.container-box *,\n.container-box *::before,\n.container-box *::after {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n\n.container-box {\n min-block-size: 100dvh;\n inline-size: 100%;\n display: flex;\n flex-direction: column;\n padding: 1.25rem;\n}\n\n.skip-link {\n position: fixed;\n inset-block-start: 1rem;\n inset-inline-start: 1rem;\n z-index: 1;\n padding: 0.65rem 0.9rem;\n color: #ffffff;\n background: var(--starter-accent-strong);\n border-radius: 6px;\n transform: translateY(-150%);\n transition: transform 0.15s ease;\n}\n\n.skip-link:focus-visible {\n transform: translateY(0);\n}\n\n.starter-header {\n inline-size: min(100%, 72rem);\n margin-inline: auto;\n}\n\n.language-switcher {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.language-switcher a {\n min-block-size: 2.25rem;\n padding: 0.55rem 0.8rem;\n color: var(--starter-muted);\n text-decoration: none;\n border: 1px solid transparent;\n border-radius: 999px;\n}\n\n.language-switcher a:hover {\n color: var(--starter-text);\n border-color: var(--starter-border);\n}\n\n.language-switcher a[aria-current='page'] {\n color: var(--starter-accent-strong);\n background: rgb(8 127 91 / 10%);\n border-color: rgb(8 127 91 / 24%);\n}\n\n.starter-main {\n flex: 1;\n inline-size: min(100%, 72rem);\n margin-inline: auto;\n padding-block: 4rem 2rem;\n display: grid;\n gap: 3rem;\n align-content: center;\n}\n\n.hero {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n gap: 1.5rem;\n align-items: center;\n}\n\n.title {\n margin: 0.35rem 0 0;\n font-size: 3.5rem;\n line-height: 1;\n font-weight: 750;\n letter-spacing: 0;\n text-wrap: balance;\n}\n\n.logo {\n inline-size: 6rem;\n block-size: 6rem;\n border-radius: 1.25rem;\n filter: drop-shadow(0 1rem 1.5rem rgb(17 24 39 / 18%));\n}\n\n.name {\n color: var(--starter-accent-strong);\n font-size: 0.95rem;\n font-weight: 700;\n line-height: 1.4;\n}\n\n.description {\n line-height: 1.5;\n font-size: 1.15rem;\n color: var(--starter-muted);\n max-inline-size: 54rem;\n margin-block-start: 1rem;\n text-wrap: pretty;\n}\n\n.effect-message {\n padding: 1rem;\n background: var(--starter-surface);\n border: 1px solid var(--starter-border);\n border-radius: 8px;\n}\n\n.code {\n display: inline-block;\n padding: 0.15rem 0.35rem;\n color: var(--starter-accent-strong);\n background: rgb(8 127 91 / 10%);\n border-radius: 6px;\n font-size: 0.95em;\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n}\n\n.container-box .grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));\n align-items: center;\n gap: 1rem;\n}\n\n.card {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-block-size: 9rem;\n padding: 1.25rem;\n color: inherit;\n text-decoration: none;\n background: var(--starter-surface);\n border: 1px solid var(--starter-border);\n border-radius: 8px;\n transition:\n border-color 0.15s ease,\n transform 0.15s ease;\n}\n\n.card:hover {\n border-color: rgb(8 127 91 / 45%);\n transform: translateY(-0.125rem);\n}\n\n.skip-link:focus-visible,\n.language-switcher a:focus-visible,\n.card:focus-visible {\n outline: 3px solid var(--starter-focus);\n outline-offset: 3px;\n}\n\n.card h2 {\n display: flex;\n align-items: center;\n gap: 0.55rem;\n font-size: 1.25rem;\n line-height: 1.2;\n margin: 0;\n padding: 0;\n}\n\n.card p {\n opacity: 0.7;\n font-size: 0.9rem;\n line-height: 1.5;\n}\n\n.arrow-right {\n flex: none;\n inline-size: 0.65rem;\n block-size: 0.65rem;\n border-block-start: 2px solid currentColor;\n border-inline-end: 2px solid currentColor;\n transform: rotate(45deg);\n}\n\n@media (max-width: 44rem) {\n .container-box {\n padding: 1rem;\n }\n\n .starter-main {\n padding-block: 2rem 1rem;\n }\n\n .hero {\n grid-template-columns: 1fr;\n }\n\n .title {\n font-size: 2.5rem;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n\n .skip-link,\n .card {\n transition: none;\n }\n\n .card:hover {\n transform: none;\n }\n}\n",
|
|
@@ -8,12 +8,12 @@ const MWAFiles = {
|
|
|
8
8
|
"AGENTS.md": "# UltraModern Agent Contract\n\nThis project is generated for Codex-first UltraModern.js work.\n\n## Quality Gates\n\n- `pnpm lint` runs Oxlint with the Ultracite preset.\n- `pnpm format` runs oxfmt.\n- `pnpm typecheck` runs effect-tsgo as the TypeScript checker.\n- `pnpm i18n:check` rejects hardcoded user-visible JSX text.\n- `pnpm ultramodern:check` verifies the generated contract.\n- Generated Codex stop hooks and subagent-stop hooks run `pnpm format && pnpm lint:fix && pnpm ultramodern:check`.\n- `postinstall` formats the generated tree, installs private orchestration skills when available, initializes a Git repository when needed, and installs `lefthook`. Generated `lefthook.yml` runs `pnpm format && pnpm lint:fix && pnpm ultramodern:check` on pre-commit; pre-push runs `pnpm ultramodern:check`.\n\n## Internationalization\n\nRuntime i18n is enabled by default. Agents must put user-visible UI copy in `config/public/locales/<lang>/translation.json` and render it through `react-i18next` or `@modern-js/plugin-i18n/runtime`. Do not add hardcoded JSX text, `aria-label`, `title`, `alt`, or `placeholder` strings unless the value is a non-translatable technical token.\n\nRoutes are locale-prefixed by default through `localePathRedirect: true`. Keep localized pages under `src/routes/[lang]`, use links for language switching, and preserve canonical plus `hreflang` metadata. Production builds fail unless `MODERN_PUBLIC_SITE_URL` is set, so deployed canonical URLs always use the production origin.\n\n## Private Skills\n\nPrivate orchestration skills are installed automatically during `pnpm install` when the current developer is authorized for `TechsioCZ/skills`. The installer clones that private repository and copies only the allowlisted skills from `.agents/skills-lock.json`; unauthorized developers get a warning and can continue with the public contract.\n",
|
|
9
9
|
"lefthook.yml": "pre-commit:\n commands:\n fix-and-check:\n run: pnpm format && pnpm lint:fix && pnpm ultramodern:check\n stage_fixed: true\n\npre-push:\n commands:\n check:\n run: pnpm ultramodern:check\n",
|
|
10
10
|
"modern.config.ts": "// @effect-diagnostics nodeBuiltinImport:off processEnv:off\nimport { appTools, defineConfig, presetUltramodern } from '@modern-js/app-tools';\nimport path from 'node:path';\nimport { bffPlugin } from '@modern-js/plugin-bff';\nimport { i18nPlugin } from '@modern-js/plugin-i18n';\nimport { tanstackRouterPlugin } from '@modern-js/plugin-tanstack';\n\nconst appId = process.env['MODERN_BASELINE_APP_ID'] || path.basename(process.cwd());\nconst enableModuleFederationSSR = process.env['MODERN_BASELINE_ENABLE_MF_SSR'] !== 'false';\nconst enableBffRequestId = process.env['MODERN_BASELINE_ENABLE_BFF_REQUEST_ID'] !== 'false';\nconst enableTelemetryExporters =\n process.env['MODERN_BASELINE_ENABLE_TELEMETRY_EXPORTERS'] !== 'false';\nconst telemetryFailLoudStartup = process.env['MODERN_TELEMETRY_FAIL_LOUD_STARTUP'] !== 'false';\nconst otlpEndpoint = process.env['MODERN_TELEMETRY_OTLP_ENDPOINT'];\nconst configuredSiteUrl = process.env['MODERN_PUBLIC_SITE_URL'];\nconst hasConfiguredSiteUrl = typeof configuredSiteUrl === 'string' && configuredSiteUrl.length > 0;\nconst isProductionBuild =\n process.env['NODE_ENV'] === 'production' || process.argv.includes('build');\n\nif (isProductionBuild && !hasConfiguredSiteUrl) {\n throw new Error(\n 'MODERN_PUBLIC_SITE_URL must be set for production builds so canonical and hreflang URLs use the deployed origin.',\n );\n}\n\nconst siteUrl = hasConfiguredSiteUrl ? configuredSiteUrl : 'http://localhost:8080';\nconst victoriaMetricsEndpoint = process.env['MODERN_TELEMETRY_VICTORIA_ENDPOINT'];\n\n// https://bleedingdev.github.io/ultramodern.js/configure/app/usage.html\nexport default defineConfig(\n presetUltramodern(\n {\n bff: {\n effect: {\n entry: './api/effect/index',\n openapi: true,\n },\n\n runtimeFramework: 'effect',\n },\n\n html: {\n meta: {\n viewport: 'width=device-width, initial-scale=1.0, viewport-fit=cover',\n },\n title: 'UltraModern.js Starter',\n },\n plugins: [\n appTools(),\n i18nPlugin({\n localeDetection: {\n fallbackLanguage: 'en',\n languages: ['en', 'cs'],\n localePathRedirect: true,\n },\n }),\n\n tanstackRouterPlugin(),\n\n bffPlugin(),\n ],\n source: {\n globalVars: {\n ULTRAMODERN_SITE_URL: siteUrl,\n },\n },\n },\n {\n appId,\n enableBffRequestId,\n enableModuleFederationSSR,\n enableTelemetryExporters,\n ...(typeof otlpEndpoint === 'string' ? { otlpEndpoint } : {}),\n telemetryFailLoudStartup,\n ...(typeof victoriaMetricsEndpoint === 'string' ? { victoriaMetricsEndpoint } : {}),\n },\n ),\n);\n",
|
|
11
|
-
"oxlint.config.ts": "import { defineConfig } from 'oxlint';\nimport core from 'ultracite/oxlint/core';\nimport react from 'ultracite/oxlint/react';\n\nexport default defineConfig({\n env: {\n browser: true,\n node: true,\n },\n extends: [core, react],\n ignorePatterns: [\n '.agents',\n 'dist',\n 'node_modules',\n '.modern',\n '.modernjs',\n '**/routeTree.gen.ts',\n ],\n});\n",
|
|
12
11
|
"oxfmt.config.ts": "import { defineConfig } from 'oxfmt';\nimport ultracite from 'ultracite/oxfmt';\n\nexport default defineConfig({\n extends: [ultracite],\n ignorePatterns: [\n '.agents',\n 'dist',\n 'node_modules',\n '.modern',\n '.modernjs',\n '**/routeTree.gen.ts',\n ],\n singleQuote: true,\n});\n",
|
|
13
|
-
"
|
|
12
|
+
"oxlint.config.ts": "import { defineConfig } from 'oxlint';\nimport core from 'ultracite/oxlint/core';\nimport react from 'ultracite/oxlint/react';\n\nexport default defineConfig({\n env: {\n browser: true,\n node: true,\n },\n extends: [core, react],\n ignorePatterns: [\n '.agents',\n 'dist',\n 'node_modules',\n '.modern',\n '.modernjs',\n '**/routeTree.gen.ts',\n ],\n});\n",
|
|
13
|
+
"package.json": '{\n "name": "modern-app",\n "version": "0.1.0",\n "private": true,\n "type": "module",\n "packageManager": "pnpm@11.5.2",\n "scripts": {\n "reset": "npx rimraf node_modules ./**/node_modules",\n "dev": "modern dev",\n "build": "modern build",\n "serve": "modern serve",\n "test": "rstest run",\n "typecheck": "node -e \\"const fs = require(\'node:fs\'); const { execFileSync, spawnSync } = require(\'node:child_process\'); const bin = execFileSync(\'effect-tsgo\', [\'get-exe-path\'], { encoding: \'utf8\' }).trim(); if (process.platform !== \'win32\') fs.chmodSync(bin, 0o755); const result = spawnSync(bin, [\'--noEmit\', \'-p\', \'tsconfig.json\'], { stdio: \'inherit\' }); process.exit(result.status ?? 1);\\"",\n "i18n:check": "node ./scripts/check-i18n-strings.mjs",\n\n "skills:install": "node ./scripts/bootstrap-agent-skills.mjs",\n "skills:check": "node ./scripts/bootstrap-agent-skills.mjs --check",\n "postinstall": "oxfmt . && node ./scripts/bootstrap-agent-skills.mjs",\n\n "ultramodern:check": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm i18n:check && pnpm test && pnpm skills:check && node ./scripts/validate-ultramodern.mjs",\n "format": "oxfmt .",\n "format:check": "oxfmt --check .",\n "lint": "oxlint .",\n "lint:fix": "oxlint . --fix"\n },\n "dependencies": {\n "@modern-js/plugin-i18n": "3.2.1",\n "@modern-js/plugin-tanstack": "3.2.1",\n\n "@modern-js/runtime": "3.2.1",\n "@tanstack/react-router": "1.170.15",\n\n "i18next": "26.3.1",\n "react": "^19.2.7",\n "react-dom": "^19.2.7",\n "react-i18next": "17.0.8"\n },\n "devDependencies": {\n "@effect/tsgo": "0.14.0",\n "@modern-js/adapter-rstest": "3.2.1",\n "@modern-js/app-tools": "3.2.1",\n "@modern-js/code-tools": "{{codeToolsVersion}}",\n "@modern-js/create": "{{createVersion}}",\n "@modern-js/plugin-bff": "3.2.1",\n "@modern-js/tsconfig": "3.2.1",\n "@rstest/core": "0.10.3",\n\n "@tailwindcss/postcss": "^4.3.0",\n\n "@types/node": "^20",\n "@types/react": "^19.2.17",\n "@types/react-dom": "^19.2.3",\n "@typescript/native-preview": "7.0.0-dev.20260606.1",\n "happy-dom": "^20.10.1",\n\n "lefthook": "^2.1.9",\n\n "oxfmt": "0.53.0",\n "oxlint": "1.68.0",\n "postcss": "^8.5.15",\n "rimraf": "^6.1.3",\n "tailwindcss": "^4.3.0",\n "ultracite": "7.8.1"\n },\n "engines": {\n "node": ">=20",\n "pnpm": ">=11.5.2 <11.6.0"\n }\n}\n',
|
|
14
14
|
"postcss.config.mjs": "export default {\n plugins: {\n '@tailwindcss/postcss': {},\n },\n};\n\n",
|
|
15
|
+
"pnpm-workspace.yaml": "minimumReleaseAge: 1440\nminimumReleaseAgeStrict: true\nminimumReleaseAgeIgnoreMissingTime: false\nminimumReleaseAgeExclude:\n - '@bleedingdev/modern-js-*'\n - '@tanstack/react-router'\n - '@tanstack/router-core'\n - '@typescript/native-preview'\n - '@typescript/native-preview-*'\n - '@types/react'\ntrustPolicy: no-downgrade\ntrustPolicyIgnoreAfter: 1440\nblockExoticSubdeps: true\nengineStrict: true\npmOnFail: error\nverifyDepsBeforeRun: error\nstrictDepBuilds: true\n\nallowBuilds:\n '@swc/core': true\n core-js: true\n esbuild: true\n lefthook: true\n msgpackr-extract: true\n sharp: true\n workerd: true\nonlyBuiltDependencies:\n - '@swc/core'\n - core-js\n - esbuild\n - lefthook\n - msgpackr-extract\n - sharp\n - workerd\n",
|
|
15
16
|
"rstest.config.mts": "import { defineConfig } from '@rstest/core';\n\nexport default defineConfig({\n testEnvironment: 'node',\n});\n",
|
|
16
|
-
"package.json": '{\n "name": "modern-app",\n "version": "0.1.0",\n "private": true,\n "type": "module",\n "packageManager": "pnpm@11.5.2",\n "scripts": {\n "reset": "npx rimraf node_modules ./**/node_modules",\n "dev": "modern dev",\n "build": "modern build",\n "serve": "modern serve",\n "test": "rstest run",\n "typecheck": "node -e \\"const fs = require(\'node:fs\'); const { execFileSync, spawnSync } = require(\'node:child_process\'); const bin = execFileSync(\'effect-tsgo\', [\'get-exe-path\'], { encoding: \'utf8\' }).trim(); if (process.platform !== \'win32\') fs.chmodSync(bin, 0o755); const result = spawnSync(bin, [\'--noEmit\', \'-p\', \'tsconfig.json\'], { stdio: \'inherit\' }); process.exit(result.status ?? 1);\\"",\n "i18n:check": "node ./scripts/check-i18n-strings.mjs",\n\n "skills:install": "node ./scripts/bootstrap-agent-skills.mjs",\n "skills:check": "node ./scripts/bootstrap-agent-skills.mjs --check",\n "postinstall": "oxfmt . && node ./scripts/bootstrap-agent-skills.mjs",\n\n "ultramodern:check": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm i18n:check && pnpm test && pnpm skills:check && node ./scripts/validate-ultramodern.mjs",\n "format": "oxfmt .",\n "format:check": "oxfmt --check .",\n "lint": "oxlint .",\n "lint:fix": "oxlint . --fix"\n },\n "dependencies": {\n "@modern-js/plugin-i18n": "3.2.1",\n "@modern-js/plugin-tanstack": "3.2.1",\n\n "@modern-js/runtime": "3.2.1",\n "@tanstack/react-router": "1.170.15",\n\n "i18next": "26.3.1",\n "react": "^19.2.7",\n "react-dom": "^19.2.7",\n "react-i18next": "17.0.8"\n },\n "devDependencies": {\n "@effect/tsgo": "0.14.0",\n "@modern-js/adapter-rstest": "3.2.1",\n "@modern-js/app-tools": "3.2.1",\n "@modern-js/code-tools": "{{codeToolsVersion}}",\n "@modern-js/create": "{{createVersion}}",\n "@modern-js/plugin-bff": "3.2.1",\n "@modern-js/tsconfig": "3.2.1",\n "@rstest/core": "0.10.3",\n\n "@tailwindcss/postcss": "^4.3.0",\n\n "@types/node": "^20",\n "@types/react": "^19.2.17",\n "@types/react-dom": "^19.2.3",\n "@typescript/native-preview": "7.0.0-dev.20260606.1",\n "happy-dom": "^20.10.1",\n\n "lefthook": "^2.1.9",\n\n "oxfmt": "0.53.0",\n "oxlint": "1.68.0",\n "postcss": "^8.5.15",\n "rimraf": "^6.1.3",\n "tailwindcss": "^4.3.0",\n "ultracite": "7.8.1"\n },\n "engines": {\n "node": ">=20",\n "pnpm": ">=11.5.2 <11.6.0"\n }\n}\n',
|
|
17
17
|
"tailwind.config.ts": "import type { Config } from 'tailwindcss';\n\nexport default {\n content: ['./src/**/*.{js,ts,jsx,tsx}'],\n plugins: [],\n theme: {\n extend: {},\n },\n} satisfies Config;\n\n",
|
|
18
18
|
"tsconfig.json": "{\n \"extends\": \"@modern-js/tsconfig/base\",\n \"compilerOptions\": {\n \"declaration\": false,\n \"jsx\": \"preserve\",\n \"target\": \"ESNext\",\n \"lib\": [\"ESNext\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"preserve\",\n \"moduleResolution\": \"Bundler\",\n \"moduleDetection\": \"force\",\n \"isolatedModules\": true,\n \"verbatimModuleSyntax\": true,\n \"noEmit\": true,\n \"allowJs\": true,\n \"allowImportingTsExtensions\": true,\n \"resolveJsonModule\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"strict\": true,\n \"noUncheckedIndexedAccess\": true,\n \"exactOptionalPropertyTypes\": true,\n \"noImplicitOverride\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noPropertyAccessFromIndexSignature\": true,\n \"noImplicitReturns\": true,\n \"paths\": {\n \"@/*\": [\"./src/*\"],\n \"@api/*\": [\"./api/*\"],\n \"@shared/*\": [\"./shared/*\"]\n },\n \"rootDir\": \".\",\n \"plugins\": [\n {\n \"name\": \"@effect/language-service\",\n \"diagnostics\": true,\n \"includeSuggestionsInTsc\": true,\n \"ignoreEffectSuggestionsInTscExitCode\": false,\n \"ignoreEffectWarningsInTscExitCode\": false,\n \"ignoreEffectErrorsInTscExitCode\": false,\n \"skipDisabledOptimization\": true,\n \"diagnosticSeverity\": {\n \"anyUnknownInErrorContext\": \"error\",\n \"classSelfMismatch\": \"error\",\n \"duplicatePackage\": \"error\",\n \"effectFnImplicitAny\": \"error\",\n \"floatingEffect\": \"error\",\n \"genericEffectServices\": \"error\",\n \"missingEffectContext\": \"error\",\n \"missingEffectError\": \"error\",\n \"missingLayerContext\": \"error\",\n \"missingReturnYieldStar\": \"error\",\n \"missingStarInYieldEffectGen\": \"error\",\n \"nonObjectEffectServiceType\": \"error\",\n \"outdatedApi\": \"error\",\n \"overriddenSchemaConstructor\": \"error\",\n \"catchUnfailableEffect\": \"error\",\n \"effectFnIife\": \"error\",\n \"effectGenUsesAdapter\": \"error\",\n \"effectInFailure\": \"error\",\n \"effectInVoidSuccess\": \"error\",\n \"globalErrorInEffectCatch\": \"error\",\n \"globalErrorInEffectFailure\": \"error\",\n \"layerMergeAllWithDependencies\": \"error\",\n \"lazyPromiseInEffectSync\": \"error\",\n \"leakingRequirements\": \"error\",\n \"multipleEffectProvide\": \"error\",\n \"returnEffectInGen\": \"error\",\n \"runEffectInsideEffect\": \"error\",\n \"schemaSyncInEffect\": \"error\",\n \"scopeInLayerEffect\": \"error\",\n \"strictEffectProvide\": \"error\",\n \"tryCatchInEffectGen\": \"error\",\n \"unknownInEffectCatch\": \"error\",\n \"asyncFunction\": \"error\",\n \"cryptoRandomUUID\": \"error\",\n \"cryptoRandomUUIDInEffect\": \"error\",\n \"extendsNativeError\": \"error\",\n \"globalConsole\": \"error\",\n \"globalConsoleInEffect\": \"error\",\n \"globalDate\": \"error\",\n \"globalDateInEffect\": \"error\",\n \"globalFetch\": \"error\",\n \"globalFetchInEffect\": \"error\",\n \"globalRandom\": \"error\",\n \"globalRandomInEffect\": \"error\",\n \"globalTimers\": \"error\",\n \"globalTimersInEffect\": \"error\",\n \"instanceOfSchema\": \"error\",\n \"newPromise\": \"error\",\n \"nodeBuiltinImport\": \"error\",\n \"preferSchemaOverJson\": \"error\",\n \"processEnv\": \"error\",\n \"processEnvInEffect\": \"error\",\n \"unsafeEffectTypeAssertion\": \"error\",\n \"catchAllToMapError\": \"error\",\n \"deterministicKeys\": \"error\",\n \"effectDoNotation\": \"error\",\n \"effectFnOpportunity\": \"error\",\n \"effectMapFlatten\": \"error\",\n \"effectMapVoid\": \"error\",\n \"effectSucceedWithVoid\": \"error\",\n \"missedPipeableOpportunity\": \"error\",\n \"missingEffectServiceDependency\": \"error\",\n \"nestedEffectGenYield\": \"error\",\n \"redundantSchemaTagIdentifier\": \"error\",\n \"schemaStructWithTag\": \"error\",\n \"schemaUnionOfLiterals\": \"error\",\n \"serviceNotAsClass\": \"error\",\n \"strictBooleanExpressions\": \"error\",\n \"unnecessaryArrowBlock\": \"error\",\n \"unnecessaryEffectGen\": \"error\",\n \"unnecessaryFailYieldableError\": \"error\",\n \"unnecessaryPipe\": \"error\",\n \"unnecessaryPipeChain\": \"error\"\n }\n }\n ]\n },\n \"include\": [\"src\", \"api\", \"shared\", \"config\", \"modern.config.ts\", \"server\"],\n \"exclude\": [\"**/node_modules\"]\n}\n",
|
|
19
19
|
".agents/skills-lock.json": "{\n \"schemaVersion\": 2,\n \"installDir\": \".agents/skills\",\n \"sources\": [\n {\n \"id\": \"techsiocz-private\",\n \"visibility\": \"private\",\n \"repository\": \"https://github.com/TechsioCZ/skills\",\n \"install\": \"clone-if-authorized\",\n \"baseline\": [\n {\n \"name\": \"plan-graph\",\n \"reason\": \"Build and validate DAGs from .plan.md files\"\n },\n {\n \"name\": \"dag\",\n \"reason\": \"Inspect current plan frontiers and blocked lanes\"\n },\n {\n \"name\": \"subagent-graph\",\n \"reason\": \"Design dependency-aware multi-agent launch graphs\"\n },\n {\n \"name\": \"helm\",\n \"reason\": \"Steer already-running multi-agent work\"\n },\n {\n \"name\": \"debugger-mode\",\n \"reason\": \"Run hypothesis-driven debugging with runtime evidence\"\n }\n ]\n }\n ]\n}\n",
|
|
@@ -26,8 +26,8 @@ const MWAFiles = {
|
|
|
26
26
|
".github/renovate.json": "{\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n \"extends\": [\n \"config:recommended\",\n \"helpers:pinGitHubActionDigests\"\n ],\n \"dependencyDashboard\": true,\n \"minimumReleaseAge\": \"1 day\",\n \"prConcurrentLimit\": 5,\n \"prHourlyLimit\": 2,\n \"rangeStrategy\": \"bump\",\n \"schedule\": [\n \"before 5am on monday\"\n ],\n \"timezone\": \"Etc/UTC\",\n \"packageRules\": [\n {\n \"matchManagers\": [\n \"github-actions\"\n ],\n \"groupName\": \"github-actions\",\n \"labels\": [\n \"dependencies\",\n \"github-actions\",\n \"security\"\n ]\n },\n {\n \"matchManagers\": [\n \"npm\"\n ],\n \"matchUpdateTypes\": [\n \"patch\",\n \"minor\"\n ],\n \"groupName\": \"npm minor and patch updates\",\n \"labels\": [\n \"dependencies\",\n \"npm\"\n ]\n },\n {\n \"matchUpdateTypes\": [\n \"major\"\n ],\n \"dependencyDashboardApproval\": true,\n \"labels\": [\n \"dependencies\",\n \"major\"\n ]\n }\n ]\n}\n",
|
|
27
27
|
".github/workflows/ultramodern-gates.yml": "name: Ultramodern Gates\n\non:\n push:\n pull_request:\n\npermissions:\n contents: read\n\ndefaults:\n run:\n shell: bash\n\nenv:\n FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true\n\nconcurrency:\n group: ultramodern-gates-${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\njobs:\n ultramodern-gates:\n runs-on: ubuntu-latest\n timeout-minutes: 20\n steps:\n - name: Harden Runner\n uses: step-security/harden-runner@ab7a9404c0f3da075243ca237b5fac12c98deaa5 # v2\n with:\n egress-policy: audit\n\n - name: Checkout\n uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n with:\n fetch-depth: 1\n persist-credentials: false\n\n - name: Setup Node.js\n uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0\n with:\n node-version: 24\n\n - name: Setup mise\n uses: jdx/mise-action@5ac50f778e26fac95da98d50503682459e86d566 # v3.2.0\n\n - name: Install Dependencies\n run: mise exec -- pnpm install --frozen-lockfile\n\n - name: Validate Ultramodern Contract\n run: mise exec -- pnpm run ultramodern:check\n\n - name: Build\n env:\n MODERN_PUBLIC_SITE_URL: http://localhost:8080\n run: mise exec -- pnpm run build\n",
|
|
28
28
|
"shared/effect/api.ts": "import {\n HttpApi,\n HttpApiEndpoint,\n HttpApiGroup,\n Schema,\n} from '@modern-js/plugin-bff/effect-client';\n\nexport const bffEffectApi = HttpApi.make('BffApi').add(\n HttpApiGroup.make('greetings').add(\n HttpApiEndpoint.get('hello', '/effect/hello', {\n success: Schema.Struct({\n message: Schema.String,\n runtime: Schema.Literal('effect'),\n }),\n }),\n ),\n);\n",
|
|
29
|
-
"api/lambda/hello.ts": "\n",
|
|
30
29
|
"api/effect/index.ts": "import {\n Effect,\n HttpApiBuilder,\n Layer,\n defineEffectBff,\n} from '@modern-js/plugin-bff/effect-server';\nimport type { HttpApi, HttpApiGroup } from '@modern-js/plugin-bff/effect-server';\nimport { bffEffectApi } from '../../shared/effect/api.ts';\n\ntype ApiGroups<TApi> = TApi extends HttpApi.HttpApi<string, infer TGroups> ? TGroups : never;\ntype GreetingsHandlers = HttpApiBuilder.Handlers.FromGroup<\n HttpApiGroup.WithName<ApiGroups<typeof bffEffectApi>, 'greetings'>\n>;\n\nconst greetingsLayer = HttpApiBuilder.group(\n bffEffectApi,\n 'greetings',\n (handlers: GreetingsHandlers) =>\n handlers.handle('hello', () =>\n Effect.succeed({\n message: 'Hello from Effect HttpApi',\n runtime: 'effect' as const,\n }),\n ),\n);\n\nconst layer = HttpApiBuilder.layer(bffEffectApi).pipe(\n Layer.provide(greetingsLayer),\n);\n\nexport default defineEffectBff({\n api: bffEffectApi,\n layer,\n});\n",
|
|
30
|
+
"api/lambda/hello.ts": "\n",
|
|
31
31
|
"src/modern-app-env.d.ts": "/// <reference types='@modern-js/app-tools/types' />\n\ndeclare const ULTRAMODERN_SITE_URL: string;\n",
|
|
32
32
|
"src/modern.runtime.ts": "import { defineRuntimeConfig } from '@modern-js/runtime';\nimport { createInstance } from 'i18next';\n\nconst i18nInstance = createInstance();\n\nexport default defineRuntimeConfig({\n i18n: {\n i18nInstance,\n initOptions: {\n defaultNS: 'translation',\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false,\n },\n ns: ['translation'],\n supportedLngs: ['en', 'cs'],\n },\n },\n router: {\n framework: 'tanstack',\n },\n});\n",
|
|
33
33
|
"src/routes/index.css": "@import 'tailwindcss';\n\n:root {\n color-scheme: light;\n --starter-bg: #f3f6f4;\n --starter-surface: #ffffff;\n --starter-text: #14201b;\n --starter-muted: #52625b;\n --starter-border: #cfdad4;\n --starter-accent: #087f5b;\n --starter-accent-strong: #075f48;\n --starter-focus: #0b7285;\n}\n\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n margin: 0;\n font-family:\n Inter,\n ui-sans-serif,\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Arial,\n sans-serif;\n color: var(--starter-text);\n background: linear-gradient(180deg, #ffffff 0%, var(--starter-bg) 100%);\n}\n\np {\n margin: 0;\n}\n\n.container-box,\n.container-box *,\n.container-box *::before,\n.container-box *::after {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n\n.container-box {\n min-block-size: 100dvh;\n inline-size: 100%;\n display: flex;\n flex-direction: column;\n padding: 1.25rem;\n}\n\n.skip-link {\n position: fixed;\n inset-block-start: 1rem;\n inset-inline-start: 1rem;\n z-index: 1;\n padding: 0.65rem 0.9rem;\n color: #ffffff;\n background: var(--starter-accent-strong);\n border-radius: 6px;\n transform: translateY(-150%);\n transition: transform 0.15s ease;\n}\n\n.skip-link:focus-visible {\n transform: translateY(0);\n}\n\n.starter-header {\n inline-size: min(100%, 72rem);\n margin-inline: auto;\n}\n\n.language-switcher {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.language-switcher a {\n min-block-size: 2.25rem;\n padding: 0.55rem 0.8rem;\n color: var(--starter-muted);\n text-decoration: none;\n border: 1px solid transparent;\n border-radius: 999px;\n}\n\n.language-switcher a:hover {\n color: var(--starter-text);\n border-color: var(--starter-border);\n}\n\n.language-switcher a[aria-current='page'] {\n color: var(--starter-accent-strong);\n background: rgb(8 127 91 / 10%);\n border-color: rgb(8 127 91 / 24%);\n}\n\n.starter-main {\n flex: 1;\n inline-size: min(100%, 72rem);\n margin-inline: auto;\n padding-block: 4rem 2rem;\n display: grid;\n gap: 3rem;\n align-content: center;\n}\n\n.hero {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n gap: 1.5rem;\n align-items: center;\n}\n\n.title {\n margin: 0.35rem 0 0;\n font-size: 3.5rem;\n line-height: 1;\n font-weight: 750;\n letter-spacing: 0;\n text-wrap: balance;\n}\n\n.logo {\n inline-size: 6rem;\n block-size: 6rem;\n border-radius: 1.25rem;\n filter: drop-shadow(0 1rem 1.5rem rgb(17 24 39 / 18%));\n}\n\n.name {\n color: var(--starter-accent-strong);\n font-size: 0.95rem;\n font-weight: 700;\n line-height: 1.4;\n}\n\n.description {\n line-height: 1.5;\n font-size: 1.15rem;\n color: var(--starter-muted);\n max-inline-size: 54rem;\n margin-block-start: 1rem;\n text-wrap: pretty;\n}\n\n.effect-message {\n padding: 1rem;\n background: var(--starter-surface);\n border: 1px solid var(--starter-border);\n border-radius: 8px;\n}\n\n.code {\n display: inline-block;\n padding: 0.15rem 0.35rem;\n color: var(--starter-accent-strong);\n background: rgb(8 127 91 / 10%);\n border-radius: 6px;\n font-size: 0.95em;\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n}\n\n.container-box .grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));\n align-items: center;\n gap: 1rem;\n}\n\n.card {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-block-size: 9rem;\n padding: 1.25rem;\n color: inherit;\n text-decoration: none;\n background: var(--starter-surface);\n border: 1px solid var(--starter-border);\n border-radius: 8px;\n transition:\n border-color 0.15s ease,\n transform 0.15s ease;\n}\n\n.card:hover {\n border-color: rgb(8 127 91 / 45%);\n transform: translateY(-0.125rem);\n}\n\n.skip-link:focus-visible,\n.language-switcher a:focus-visible,\n.card:focus-visible {\n outline: 3px solid var(--starter-focus);\n outline-offset: 3px;\n}\n\n.card h2 {\n display: flex;\n align-items: center;\n gap: 0.55rem;\n font-size: 1.25rem;\n line-height: 1.2;\n margin: 0;\n padding: 0;\n}\n\n.card p {\n opacity: 0.7;\n font-size: 0.9rem;\n line-height: 1.5;\n}\n\n.arrow-right {\n flex: none;\n inline-size: 0.65rem;\n block-size: 0.65rem;\n border-block-start: 2px solid currentColor;\n border-inline-end: 2px solid currentColor;\n transform: rotate(45deg);\n}\n\n@media (max-width: 44rem) {\n .container-box {\n padding: 1rem;\n }\n\n .starter-main {\n padding-block: 2rem 1rem;\n }\n\n .hero {\n grid-template-columns: 1fr;\n }\n\n .title {\n font-size: 2.5rem;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n\n .skip-link,\n .card {\n transition: none;\n }\n\n .card:hover {\n transform: none;\n }\n}\n",
|
|
@@ -9,12 +9,12 @@ const MWAFiles = {
|
|
|
9
9
|
"AGENTS.md": "# UltraModern Agent Contract\n\nThis project is generated for Codex-first UltraModern.js work.\n\n## Quality Gates\n\n- `pnpm lint` runs Oxlint with the Ultracite preset.\n- `pnpm format` runs oxfmt.\n- `pnpm typecheck` runs effect-tsgo as the TypeScript checker.\n- `pnpm i18n:check` rejects hardcoded user-visible JSX text.\n- `pnpm ultramodern:check` verifies the generated contract.\n- Generated Codex stop hooks and subagent-stop hooks run `pnpm format && pnpm lint:fix && pnpm ultramodern:check`.\n- `postinstall` formats the generated tree, installs private orchestration skills when available, initializes a Git repository when needed, and installs `lefthook`. Generated `lefthook.yml` runs `pnpm format && pnpm lint:fix && pnpm ultramodern:check` on pre-commit; pre-push runs `pnpm ultramodern:check`.\n\n## Internationalization\n\nRuntime i18n is enabled by default. Agents must put user-visible UI copy in `config/public/locales/<lang>/translation.json` and render it through `react-i18next` or `@modern-js/plugin-i18n/runtime`. Do not add hardcoded JSX text, `aria-label`, `title`, `alt`, or `placeholder` strings unless the value is a non-translatable technical token.\n\nRoutes are locale-prefixed by default through `localePathRedirect: true`. Keep localized pages under `src/routes/[lang]`, use links for language switching, and preserve canonical plus `hreflang` metadata. Production builds fail unless `MODERN_PUBLIC_SITE_URL` is set, so deployed canonical URLs always use the production origin.\n\n## Private Skills\n\nPrivate orchestration skills are installed automatically during `pnpm install` when the current developer is authorized for `TechsioCZ/skills`. The installer clones that private repository and copies only the allowlisted skills from `.agents/skills-lock.json`; unauthorized developers get a warning and can continue with the public contract.\n",
|
|
10
10
|
"lefthook.yml": "pre-commit:\n commands:\n fix-and-check:\n run: pnpm format && pnpm lint:fix && pnpm ultramodern:check\n stage_fixed: true\n\npre-push:\n commands:\n check:\n run: pnpm ultramodern:check\n",
|
|
11
11
|
"modern.config.ts": "// @effect-diagnostics nodeBuiltinImport:off processEnv:off\nimport { appTools, defineConfig, presetUltramodern } from '@modern-js/app-tools';\nimport path from 'node:path';\nimport { bffPlugin } from '@modern-js/plugin-bff';\nimport { i18nPlugin } from '@modern-js/plugin-i18n';\nimport { tanstackRouterPlugin } from '@modern-js/plugin-tanstack';\n\nconst appId = process.env['MODERN_BASELINE_APP_ID'] || path.basename(process.cwd());\nconst enableModuleFederationSSR = process.env['MODERN_BASELINE_ENABLE_MF_SSR'] !== 'false';\nconst enableBffRequestId = process.env['MODERN_BASELINE_ENABLE_BFF_REQUEST_ID'] !== 'false';\nconst enableTelemetryExporters =\n process.env['MODERN_BASELINE_ENABLE_TELEMETRY_EXPORTERS'] !== 'false';\nconst telemetryFailLoudStartup = process.env['MODERN_TELEMETRY_FAIL_LOUD_STARTUP'] !== 'false';\nconst otlpEndpoint = process.env['MODERN_TELEMETRY_OTLP_ENDPOINT'];\nconst configuredSiteUrl = process.env['MODERN_PUBLIC_SITE_URL'];\nconst hasConfiguredSiteUrl = typeof configuredSiteUrl === 'string' && configuredSiteUrl.length > 0;\nconst isProductionBuild =\n process.env['NODE_ENV'] === 'production' || process.argv.includes('build');\n\nif (isProductionBuild && !hasConfiguredSiteUrl) {\n throw new Error(\n 'MODERN_PUBLIC_SITE_URL must be set for production builds so canonical and hreflang URLs use the deployed origin.',\n );\n}\n\nconst siteUrl = hasConfiguredSiteUrl ? configuredSiteUrl : 'http://localhost:8080';\nconst victoriaMetricsEndpoint = process.env['MODERN_TELEMETRY_VICTORIA_ENDPOINT'];\n\n// https://bleedingdev.github.io/ultramodern.js/configure/app/usage.html\nexport default defineConfig(\n presetUltramodern(\n {\n bff: {\n effect: {\n entry: './api/effect/index',\n openapi: true,\n },\n\n runtimeFramework: 'effect',\n },\n\n html: {\n meta: {\n viewport: 'width=device-width, initial-scale=1.0, viewport-fit=cover',\n },\n title: 'UltraModern.js Starter',\n },\n plugins: [\n appTools(),\n i18nPlugin({\n localeDetection: {\n fallbackLanguage: 'en',\n languages: ['en', 'cs'],\n localePathRedirect: true,\n },\n }),\n\n tanstackRouterPlugin(),\n\n bffPlugin(),\n ],\n source: {\n globalVars: {\n ULTRAMODERN_SITE_URL: siteUrl,\n },\n },\n },\n {\n appId,\n enableBffRequestId,\n enableModuleFederationSSR,\n enableTelemetryExporters,\n ...(typeof otlpEndpoint === 'string' ? { otlpEndpoint } : {}),\n telemetryFailLoudStartup,\n ...(typeof victoriaMetricsEndpoint === 'string' ? { victoriaMetricsEndpoint } : {}),\n },\n ),\n);\n",
|
|
12
|
-
"oxlint.config.ts": "import { defineConfig } from 'oxlint';\nimport core from 'ultracite/oxlint/core';\nimport react from 'ultracite/oxlint/react';\n\nexport default defineConfig({\n env: {\n browser: true,\n node: true,\n },\n extends: [core, react],\n ignorePatterns: [\n '.agents',\n 'dist',\n 'node_modules',\n '.modern',\n '.modernjs',\n '**/routeTree.gen.ts',\n ],\n});\n",
|
|
13
12
|
"oxfmt.config.ts": "import { defineConfig } from 'oxfmt';\nimport ultracite from 'ultracite/oxfmt';\n\nexport default defineConfig({\n extends: [ultracite],\n ignorePatterns: [\n '.agents',\n 'dist',\n 'node_modules',\n '.modern',\n '.modernjs',\n '**/routeTree.gen.ts',\n ],\n singleQuote: true,\n});\n",
|
|
14
|
-
"
|
|
13
|
+
"oxlint.config.ts": "import { defineConfig } from 'oxlint';\nimport core from 'ultracite/oxlint/core';\nimport react from 'ultracite/oxlint/react';\n\nexport default defineConfig({\n env: {\n browser: true,\n node: true,\n },\n extends: [core, react],\n ignorePatterns: [\n '.agents',\n 'dist',\n 'node_modules',\n '.modern',\n '.modernjs',\n '**/routeTree.gen.ts',\n ],\n});\n",
|
|
14
|
+
"package.json": '{\n "name": "modern-app",\n "version": "0.1.0",\n "private": true,\n "type": "module",\n "packageManager": "pnpm@11.5.2",\n "scripts": {\n "reset": "npx rimraf node_modules ./**/node_modules",\n "dev": "modern dev",\n "build": "modern build",\n "serve": "modern serve",\n "test": "rstest run",\n "typecheck": "node -e \\"const fs = require(\'node:fs\'); const { execFileSync, spawnSync } = require(\'node:child_process\'); const bin = execFileSync(\'effect-tsgo\', [\'get-exe-path\'], { encoding: \'utf8\' }).trim(); if (process.platform !== \'win32\') fs.chmodSync(bin, 0o755); const result = spawnSync(bin, [\'--noEmit\', \'-p\', \'tsconfig.json\'], { stdio: \'inherit\' }); process.exit(result.status ?? 1);\\"",\n "i18n:check": "node ./scripts/check-i18n-strings.mjs",\n\n "skills:install": "node ./scripts/bootstrap-agent-skills.mjs",\n "skills:check": "node ./scripts/bootstrap-agent-skills.mjs --check",\n "postinstall": "oxfmt . && node ./scripts/bootstrap-agent-skills.mjs",\n\n "ultramodern:check": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm i18n:check && pnpm test && pnpm skills:check && node ./scripts/validate-ultramodern.mjs",\n "format": "oxfmt .",\n "format:check": "oxfmt --check .",\n "lint": "oxlint .",\n "lint:fix": "oxlint . --fix"\n },\n "dependencies": {\n "@modern-js/plugin-i18n": "3.2.1",\n "@modern-js/plugin-tanstack": "3.2.1",\n\n "@modern-js/runtime": "3.2.1",\n "@tanstack/react-router": "1.170.15",\n\n "i18next": "26.3.1",\n "react": "^19.2.7",\n "react-dom": "^19.2.7",\n "react-i18next": "17.0.8"\n },\n "devDependencies": {\n "@effect/tsgo": "0.14.0",\n "@modern-js/adapter-rstest": "3.2.1",\n "@modern-js/app-tools": "3.2.1",\n "@modern-js/code-tools": "{{codeToolsVersion}}",\n "@modern-js/create": "{{createVersion}}",\n "@modern-js/plugin-bff": "3.2.1",\n "@modern-js/tsconfig": "3.2.1",\n "@rstest/core": "0.10.3",\n\n "@tailwindcss/postcss": "^4.3.0",\n\n "@types/node": "^20",\n "@types/react": "^19.2.17",\n "@types/react-dom": "^19.2.3",\n "@typescript/native-preview": "7.0.0-dev.20260606.1",\n "happy-dom": "^20.10.1",\n\n "lefthook": "^2.1.9",\n\n "oxfmt": "0.53.0",\n "oxlint": "1.68.0",\n "postcss": "^8.5.15",\n "rimraf": "^6.1.3",\n "tailwindcss": "^4.3.0",\n "ultracite": "7.8.1"\n },\n "engines": {\n "node": ">=20",\n "pnpm": ">=11.5.2 <11.6.0"\n }\n}\n',
|
|
15
15
|
"postcss.config.mjs": "export default {\n plugins: {\n '@tailwindcss/postcss': {},\n },\n};\n\n",
|
|
16
|
+
"pnpm-workspace.yaml": "minimumReleaseAge: 1440\nminimumReleaseAgeStrict: true\nminimumReleaseAgeIgnoreMissingTime: false\nminimumReleaseAgeExclude:\n - '@bleedingdev/modern-js-*'\n - '@tanstack/react-router'\n - '@tanstack/router-core'\n - '@typescript/native-preview'\n - '@typescript/native-preview-*'\n - '@types/react'\ntrustPolicy: no-downgrade\ntrustPolicyIgnoreAfter: 1440\nblockExoticSubdeps: true\nengineStrict: true\npmOnFail: error\nverifyDepsBeforeRun: error\nstrictDepBuilds: true\n\nallowBuilds:\n '@swc/core': true\n core-js: true\n esbuild: true\n lefthook: true\n msgpackr-extract: true\n sharp: true\n workerd: true\nonlyBuiltDependencies:\n - '@swc/core'\n - core-js\n - esbuild\n - lefthook\n - msgpackr-extract\n - sharp\n - workerd\n",
|
|
16
17
|
"rstest.config.mts": "import { defineConfig } from '@rstest/core';\n\nexport default defineConfig({\n testEnvironment: 'node',\n});\n",
|
|
17
|
-
"package.json": '{\n "name": "modern-app",\n "version": "0.1.0",\n "private": true,\n "type": "module",\n "packageManager": "pnpm@11.5.2",\n "scripts": {\n "reset": "npx rimraf node_modules ./**/node_modules",\n "dev": "modern dev",\n "build": "modern build",\n "serve": "modern serve",\n "test": "rstest run",\n "typecheck": "node -e \\"const fs = require(\'node:fs\'); const { execFileSync, spawnSync } = require(\'node:child_process\'); const bin = execFileSync(\'effect-tsgo\', [\'get-exe-path\'], { encoding: \'utf8\' }).trim(); if (process.platform !== \'win32\') fs.chmodSync(bin, 0o755); const result = spawnSync(bin, [\'--noEmit\', \'-p\', \'tsconfig.json\'], { stdio: \'inherit\' }); process.exit(result.status ?? 1);\\"",\n "i18n:check": "node ./scripts/check-i18n-strings.mjs",\n\n "skills:install": "node ./scripts/bootstrap-agent-skills.mjs",\n "skills:check": "node ./scripts/bootstrap-agent-skills.mjs --check",\n "postinstall": "oxfmt . && node ./scripts/bootstrap-agent-skills.mjs",\n\n "ultramodern:check": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm i18n:check && pnpm test && pnpm skills:check && node ./scripts/validate-ultramodern.mjs",\n "format": "oxfmt .",\n "format:check": "oxfmt --check .",\n "lint": "oxlint .",\n "lint:fix": "oxlint . --fix"\n },\n "dependencies": {\n "@modern-js/plugin-i18n": "3.2.1",\n "@modern-js/plugin-tanstack": "3.2.1",\n\n "@modern-js/runtime": "3.2.1",\n "@tanstack/react-router": "1.170.15",\n\n "i18next": "26.3.1",\n "react": "^19.2.7",\n "react-dom": "^19.2.7",\n "react-i18next": "17.0.8"\n },\n "devDependencies": {\n "@effect/tsgo": "0.14.0",\n "@modern-js/adapter-rstest": "3.2.1",\n "@modern-js/app-tools": "3.2.1",\n "@modern-js/code-tools": "{{codeToolsVersion}}",\n "@modern-js/create": "{{createVersion}}",\n "@modern-js/plugin-bff": "3.2.1",\n "@modern-js/tsconfig": "3.2.1",\n "@rstest/core": "0.10.3",\n\n "@tailwindcss/postcss": "^4.3.0",\n\n "@types/node": "^20",\n "@types/react": "^19.2.17",\n "@types/react-dom": "^19.2.3",\n "@typescript/native-preview": "7.0.0-dev.20260606.1",\n "happy-dom": "^20.10.1",\n\n "lefthook": "^2.1.9",\n\n "oxfmt": "0.53.0",\n "oxlint": "1.68.0",\n "postcss": "^8.5.15",\n "rimraf": "^6.1.3",\n "tailwindcss": "^4.3.0",\n "ultracite": "7.8.1"\n },\n "engines": {\n "node": ">=20",\n "pnpm": ">=11.5.2 <11.6.0"\n }\n}\n',
|
|
18
18
|
"tailwind.config.ts": "import type { Config } from 'tailwindcss';\n\nexport default {\n content: ['./src/**/*.{js,ts,jsx,tsx}'],\n plugins: [],\n theme: {\n extend: {},\n },\n} satisfies Config;\n\n",
|
|
19
19
|
"tsconfig.json": "{\n \"extends\": \"@modern-js/tsconfig/base\",\n \"compilerOptions\": {\n \"declaration\": false,\n \"jsx\": \"preserve\",\n \"target\": \"ESNext\",\n \"lib\": [\"ESNext\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"preserve\",\n \"moduleResolution\": \"Bundler\",\n \"moduleDetection\": \"force\",\n \"isolatedModules\": true,\n \"verbatimModuleSyntax\": true,\n \"noEmit\": true,\n \"allowJs\": true,\n \"allowImportingTsExtensions\": true,\n \"resolveJsonModule\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"strict\": true,\n \"noUncheckedIndexedAccess\": true,\n \"exactOptionalPropertyTypes\": true,\n \"noImplicitOverride\": true,\n \"noFallthroughCasesInSwitch\": true,\n \"noPropertyAccessFromIndexSignature\": true,\n \"noImplicitReturns\": true,\n \"paths\": {\n \"@/*\": [\"./src/*\"],\n \"@api/*\": [\"./api/*\"],\n \"@shared/*\": [\"./shared/*\"]\n },\n \"rootDir\": \".\",\n \"plugins\": [\n {\n \"name\": \"@effect/language-service\",\n \"diagnostics\": true,\n \"includeSuggestionsInTsc\": true,\n \"ignoreEffectSuggestionsInTscExitCode\": false,\n \"ignoreEffectWarningsInTscExitCode\": false,\n \"ignoreEffectErrorsInTscExitCode\": false,\n \"skipDisabledOptimization\": true,\n \"diagnosticSeverity\": {\n \"anyUnknownInErrorContext\": \"error\",\n \"classSelfMismatch\": \"error\",\n \"duplicatePackage\": \"error\",\n \"effectFnImplicitAny\": \"error\",\n \"floatingEffect\": \"error\",\n \"genericEffectServices\": \"error\",\n \"missingEffectContext\": \"error\",\n \"missingEffectError\": \"error\",\n \"missingLayerContext\": \"error\",\n \"missingReturnYieldStar\": \"error\",\n \"missingStarInYieldEffectGen\": \"error\",\n \"nonObjectEffectServiceType\": \"error\",\n \"outdatedApi\": \"error\",\n \"overriddenSchemaConstructor\": \"error\",\n \"catchUnfailableEffect\": \"error\",\n \"effectFnIife\": \"error\",\n \"effectGenUsesAdapter\": \"error\",\n \"effectInFailure\": \"error\",\n \"effectInVoidSuccess\": \"error\",\n \"globalErrorInEffectCatch\": \"error\",\n \"globalErrorInEffectFailure\": \"error\",\n \"layerMergeAllWithDependencies\": \"error\",\n \"lazyPromiseInEffectSync\": \"error\",\n \"leakingRequirements\": \"error\",\n \"multipleEffectProvide\": \"error\",\n \"returnEffectInGen\": \"error\",\n \"runEffectInsideEffect\": \"error\",\n \"schemaSyncInEffect\": \"error\",\n \"scopeInLayerEffect\": \"error\",\n \"strictEffectProvide\": \"error\",\n \"tryCatchInEffectGen\": \"error\",\n \"unknownInEffectCatch\": \"error\",\n \"asyncFunction\": \"error\",\n \"cryptoRandomUUID\": \"error\",\n \"cryptoRandomUUIDInEffect\": \"error\",\n \"extendsNativeError\": \"error\",\n \"globalConsole\": \"error\",\n \"globalConsoleInEffect\": \"error\",\n \"globalDate\": \"error\",\n \"globalDateInEffect\": \"error\",\n \"globalFetch\": \"error\",\n \"globalFetchInEffect\": \"error\",\n \"globalRandom\": \"error\",\n \"globalRandomInEffect\": \"error\",\n \"globalTimers\": \"error\",\n \"globalTimersInEffect\": \"error\",\n \"instanceOfSchema\": \"error\",\n \"newPromise\": \"error\",\n \"nodeBuiltinImport\": \"error\",\n \"preferSchemaOverJson\": \"error\",\n \"processEnv\": \"error\",\n \"processEnvInEffect\": \"error\",\n \"unsafeEffectTypeAssertion\": \"error\",\n \"catchAllToMapError\": \"error\",\n \"deterministicKeys\": \"error\",\n \"effectDoNotation\": \"error\",\n \"effectFnOpportunity\": \"error\",\n \"effectMapFlatten\": \"error\",\n \"effectMapVoid\": \"error\",\n \"effectSucceedWithVoid\": \"error\",\n \"missedPipeableOpportunity\": \"error\",\n \"missingEffectServiceDependency\": \"error\",\n \"nestedEffectGenYield\": \"error\",\n \"redundantSchemaTagIdentifier\": \"error\",\n \"schemaStructWithTag\": \"error\",\n \"schemaUnionOfLiterals\": \"error\",\n \"serviceNotAsClass\": \"error\",\n \"strictBooleanExpressions\": \"error\",\n \"unnecessaryArrowBlock\": \"error\",\n \"unnecessaryEffectGen\": \"error\",\n \"unnecessaryFailYieldableError\": \"error\",\n \"unnecessaryPipe\": \"error\",\n \"unnecessaryPipeChain\": \"error\"\n }\n }\n ]\n },\n \"include\": [\"src\", \"api\", \"shared\", \"config\", \"modern.config.ts\", \"server\"],\n \"exclude\": [\"**/node_modules\"]\n}\n",
|
|
20
20
|
".agents/skills-lock.json": "{\n \"schemaVersion\": 2,\n \"installDir\": \".agents/skills\",\n \"sources\": [\n {\n \"id\": \"techsiocz-private\",\n \"visibility\": \"private\",\n \"repository\": \"https://github.com/TechsioCZ/skills\",\n \"install\": \"clone-if-authorized\",\n \"baseline\": [\n {\n \"name\": \"plan-graph\",\n \"reason\": \"Build and validate DAGs from .plan.md files\"\n },\n {\n \"name\": \"dag\",\n \"reason\": \"Inspect current plan frontiers and blocked lanes\"\n },\n {\n \"name\": \"subagent-graph\",\n \"reason\": \"Design dependency-aware multi-agent launch graphs\"\n },\n {\n \"name\": \"helm\",\n \"reason\": \"Steer already-running multi-agent work\"\n },\n {\n \"name\": \"debugger-mode\",\n \"reason\": \"Run hypothesis-driven debugging with runtime evidence\"\n }\n ]\n }\n ]\n}\n",
|
|
@@ -27,8 +27,8 @@ const MWAFiles = {
|
|
|
27
27
|
".github/renovate.json": "{\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n \"extends\": [\n \"config:recommended\",\n \"helpers:pinGitHubActionDigests\"\n ],\n \"dependencyDashboard\": true,\n \"minimumReleaseAge\": \"1 day\",\n \"prConcurrentLimit\": 5,\n \"prHourlyLimit\": 2,\n \"rangeStrategy\": \"bump\",\n \"schedule\": [\n \"before 5am on monday\"\n ],\n \"timezone\": \"Etc/UTC\",\n \"packageRules\": [\n {\n \"matchManagers\": [\n \"github-actions\"\n ],\n \"groupName\": \"github-actions\",\n \"labels\": [\n \"dependencies\",\n \"github-actions\",\n \"security\"\n ]\n },\n {\n \"matchManagers\": [\n \"npm\"\n ],\n \"matchUpdateTypes\": [\n \"patch\",\n \"minor\"\n ],\n \"groupName\": \"npm minor and patch updates\",\n \"labels\": [\n \"dependencies\",\n \"npm\"\n ]\n },\n {\n \"matchUpdateTypes\": [\n \"major\"\n ],\n \"dependencyDashboardApproval\": true,\n \"labels\": [\n \"dependencies\",\n \"major\"\n ]\n }\n ]\n}\n",
|
|
28
28
|
".github/workflows/ultramodern-gates.yml": "name: Ultramodern Gates\n\non:\n push:\n pull_request:\n\npermissions:\n contents: read\n\ndefaults:\n run:\n shell: bash\n\nenv:\n FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true\n\nconcurrency:\n group: ultramodern-gates-${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\njobs:\n ultramodern-gates:\n runs-on: ubuntu-latest\n timeout-minutes: 20\n steps:\n - name: Harden Runner\n uses: step-security/harden-runner@ab7a9404c0f3da075243ca237b5fac12c98deaa5 # v2\n with:\n egress-policy: audit\n\n - name: Checkout\n uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n with:\n fetch-depth: 1\n persist-credentials: false\n\n - name: Setup Node.js\n uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0\n with:\n node-version: 24\n\n - name: Setup mise\n uses: jdx/mise-action@5ac50f778e26fac95da98d50503682459e86d566 # v3.2.0\n\n - name: Install Dependencies\n run: mise exec -- pnpm install --frozen-lockfile\n\n - name: Validate Ultramodern Contract\n run: mise exec -- pnpm run ultramodern:check\n\n - name: Build\n env:\n MODERN_PUBLIC_SITE_URL: http://localhost:8080\n run: mise exec -- pnpm run build\n",
|
|
29
29
|
"shared/effect/api.ts": "import {\n HttpApi,\n HttpApiEndpoint,\n HttpApiGroup,\n Schema,\n} from '@modern-js/plugin-bff/effect-client';\n\nexport const bffEffectApi = HttpApi.make('BffApi').add(\n HttpApiGroup.make('greetings').add(\n HttpApiEndpoint.get('hello', '/effect/hello', {\n success: Schema.Struct({\n message: Schema.String,\n runtime: Schema.Literal('effect'),\n }),\n }),\n ),\n);\n",
|
|
30
|
-
"api/lambda/hello.ts": "\n",
|
|
31
30
|
"api/effect/index.ts": "import {\n Effect,\n HttpApiBuilder,\n Layer,\n defineEffectBff,\n} from '@modern-js/plugin-bff/effect-server';\nimport type { HttpApi, HttpApiGroup } from '@modern-js/plugin-bff/effect-server';\nimport { bffEffectApi } from '../../shared/effect/api.ts';\n\ntype ApiGroups<TApi> = TApi extends HttpApi.HttpApi<string, infer TGroups> ? TGroups : never;\ntype GreetingsHandlers = HttpApiBuilder.Handlers.FromGroup<\n HttpApiGroup.WithName<ApiGroups<typeof bffEffectApi>, 'greetings'>\n>;\n\nconst greetingsLayer = HttpApiBuilder.group(\n bffEffectApi,\n 'greetings',\n (handlers: GreetingsHandlers) =>\n handlers.handle('hello', () =>\n Effect.succeed({\n message: 'Hello from Effect HttpApi',\n runtime: 'effect' as const,\n }),\n ),\n);\n\nconst layer = HttpApiBuilder.layer(bffEffectApi).pipe(\n Layer.provide(greetingsLayer),\n);\n\nexport default defineEffectBff({\n api: bffEffectApi,\n layer,\n});\n",
|
|
31
|
+
"api/lambda/hello.ts": "\n",
|
|
32
32
|
"src/modern-app-env.d.ts": "/// <reference types='@modern-js/app-tools/types' />\n\ndeclare const ULTRAMODERN_SITE_URL: string;\n",
|
|
33
33
|
"src/modern.runtime.ts": "import { defineRuntimeConfig } from '@modern-js/runtime';\nimport { createInstance } from 'i18next';\n\nconst i18nInstance = createInstance();\n\nexport default defineRuntimeConfig({\n i18n: {\n i18nInstance,\n initOptions: {\n defaultNS: 'translation',\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false,\n },\n ns: ['translation'],\n supportedLngs: ['en', 'cs'],\n },\n },\n router: {\n framework: 'tanstack',\n },\n});\n",
|
|
34
34
|
"src/routes/index.css": "@import 'tailwindcss';\n\n:root {\n color-scheme: light;\n --starter-bg: #f3f6f4;\n --starter-surface: #ffffff;\n --starter-text: #14201b;\n --starter-muted: #52625b;\n --starter-border: #cfdad4;\n --starter-accent: #087f5b;\n --starter-accent-strong: #075f48;\n --starter-focus: #0b7285;\n}\n\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n margin: 0;\n font-family:\n Inter,\n ui-sans-serif,\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Arial,\n sans-serif;\n color: var(--starter-text);\n background: linear-gradient(180deg, #ffffff 0%, var(--starter-bg) 100%);\n}\n\np {\n margin: 0;\n}\n\n.container-box,\n.container-box *,\n.container-box *::before,\n.container-box *::after {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n\n.container-box {\n min-block-size: 100dvh;\n inline-size: 100%;\n display: flex;\n flex-direction: column;\n padding: 1.25rem;\n}\n\n.skip-link {\n position: fixed;\n inset-block-start: 1rem;\n inset-inline-start: 1rem;\n z-index: 1;\n padding: 0.65rem 0.9rem;\n color: #ffffff;\n background: var(--starter-accent-strong);\n border-radius: 6px;\n transform: translateY(-150%);\n transition: transform 0.15s ease;\n}\n\n.skip-link:focus-visible {\n transform: translateY(0);\n}\n\n.starter-header {\n inline-size: min(100%, 72rem);\n margin-inline: auto;\n}\n\n.language-switcher {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.language-switcher a {\n min-block-size: 2.25rem;\n padding: 0.55rem 0.8rem;\n color: var(--starter-muted);\n text-decoration: none;\n border: 1px solid transparent;\n border-radius: 999px;\n}\n\n.language-switcher a:hover {\n color: var(--starter-text);\n border-color: var(--starter-border);\n}\n\n.language-switcher a[aria-current='page'] {\n color: var(--starter-accent-strong);\n background: rgb(8 127 91 / 10%);\n border-color: rgb(8 127 91 / 24%);\n}\n\n.starter-main {\n flex: 1;\n inline-size: min(100%, 72rem);\n margin-inline: auto;\n padding-block: 4rem 2rem;\n display: grid;\n gap: 3rem;\n align-content: center;\n}\n\n.hero {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n gap: 1.5rem;\n align-items: center;\n}\n\n.title {\n margin: 0.35rem 0 0;\n font-size: 3.5rem;\n line-height: 1;\n font-weight: 750;\n letter-spacing: 0;\n text-wrap: balance;\n}\n\n.logo {\n inline-size: 6rem;\n block-size: 6rem;\n border-radius: 1.25rem;\n filter: drop-shadow(0 1rem 1.5rem rgb(17 24 39 / 18%));\n}\n\n.name {\n color: var(--starter-accent-strong);\n font-size: 0.95rem;\n font-weight: 700;\n line-height: 1.4;\n}\n\n.description {\n line-height: 1.5;\n font-size: 1.15rem;\n color: var(--starter-muted);\n max-inline-size: 54rem;\n margin-block-start: 1rem;\n text-wrap: pretty;\n}\n\n.effect-message {\n padding: 1rem;\n background: var(--starter-surface);\n border: 1px solid var(--starter-border);\n border-radius: 8px;\n}\n\n.code {\n display: inline-block;\n padding: 0.15rem 0.35rem;\n color: var(--starter-accent-strong);\n background: rgb(8 127 91 / 10%);\n border-radius: 6px;\n font-size: 0.95em;\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n}\n\n.container-box .grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));\n align-items: center;\n gap: 1rem;\n}\n\n.card {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-block-size: 9rem;\n padding: 1.25rem;\n color: inherit;\n text-decoration: none;\n background: var(--starter-surface);\n border: 1px solid var(--starter-border);\n border-radius: 8px;\n transition:\n border-color 0.15s ease,\n transform 0.15s ease;\n}\n\n.card:hover {\n border-color: rgb(8 127 91 / 45%);\n transform: translateY(-0.125rem);\n}\n\n.skip-link:focus-visible,\n.language-switcher a:focus-visible,\n.card:focus-visible {\n outline: 3px solid var(--starter-focus);\n outline-offset: 3px;\n}\n\n.card h2 {\n display: flex;\n align-items: center;\n gap: 0.55rem;\n font-size: 1.25rem;\n line-height: 1.2;\n margin: 0;\n padding: 0;\n}\n\n.card p {\n opacity: 0.7;\n font-size: 0.9rem;\n line-height: 1.5;\n}\n\n.arrow-right {\n flex: none;\n inline-size: 0.65rem;\n block-size: 0.65rem;\n border-block-start: 2px solid currentColor;\n border-inline-end: 2px solid currentColor;\n transform: rotate(45deg);\n}\n\n@media (max-width: 44rem) {\n .container-box {\n padding: 1rem;\n }\n\n .starter-main {\n padding-block: 2rem 1rem;\n }\n\n .hero {\n grid-template-columns: 1fr;\n }\n\n .title {\n font-size: 2.5rem;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n html {\n scroll-behavior: auto;\n }\n\n .skip-link,\n .card {\n transition: none;\n }\n\n .card:hover {\n transform: none;\n }\n}\n",
|
|
@@ -8,12 +8,12 @@ export declare const MWAFiles: {
|
|
|
8
8
|
"AGENTS.md": string;
|
|
9
9
|
"lefthook.yml": string;
|
|
10
10
|
"modern.config.ts": string;
|
|
11
|
-
"oxlint.config.ts": string;
|
|
12
11
|
"oxfmt.config.ts": string;
|
|
13
|
-
"
|
|
12
|
+
"oxlint.config.ts": string;
|
|
13
|
+
"package.json": string;
|
|
14
14
|
"postcss.config.mjs": string;
|
|
15
|
+
"pnpm-workspace.yaml": string;
|
|
15
16
|
"rstest.config.mts": string;
|
|
16
|
-
"package.json": string;
|
|
17
17
|
"tailwind.config.ts": string;
|
|
18
18
|
"tsconfig.json": string;
|
|
19
19
|
".agents/skills-lock.json": string;
|
|
@@ -26,8 +26,8 @@ export declare const MWAFiles: {
|
|
|
26
26
|
".github/renovate.json": string;
|
|
27
27
|
".github/workflows/ultramodern-gates.yml": string;
|
|
28
28
|
"shared/effect/api.ts": string;
|
|
29
|
-
"api/lambda/hello.ts": string;
|
|
30
29
|
"api/effect/index.ts": string;
|
|
30
|
+
"api/lambda/hello.ts": string;
|
|
31
31
|
"src/modern-app-env.d.ts": string;
|
|
32
32
|
"src/modern.runtime.ts": string;
|
|
33
33
|
"src/routes/index.css": string;
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"modern",
|
|
18
18
|
"modern.js"
|
|
19
19
|
],
|
|
20
|
-
"version": "3.2.0-ultramodern.
|
|
20
|
+
"version": "3.2.0-ultramodern.113",
|
|
21
21
|
"types": "./dist/types/index.d.ts",
|
|
22
22
|
"main": "./dist/cjs/index.js",
|
|
23
23
|
"module": "./dist/esm/index.mjs",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@types/recursive-readdir": "^2.2.4",
|
|
49
49
|
"@typescript/native-preview": "7.0.0-dev.20260606.1",
|
|
50
50
|
"recursive-readdir": "^2.2.3",
|
|
51
|
-
"@modern-js/create": "npm:@bleedingdev/modern-js-create@3.2.0-ultramodern.
|
|
51
|
+
"@modern-js/create": "npm:@bleedingdev/modern-js-create@3.2.0-ultramodern.113"
|
|
52
52
|
},
|
|
53
53
|
"sideEffects": false,
|
|
54
54
|
"publishConfig": {
|