@aura3d/cli 3.0.1 → 4.0.0
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.
- package/README.md +2 -2
- package/dist/admission/artDirection.d.ts +28 -0
- package/dist/admission/artDirection.d.ts.map +1 -0
- package/dist/admission/artDirection.js +47 -0
- package/dist/admission/artDirection.js.map +1 -0
- package/dist/admission/audio.d.ts +19 -0
- package/dist/admission/audio.d.ts.map +1 -0
- package/dist/admission/audio.js +31 -0
- package/dist/admission/audio.js.map +1 -0
- package/dist/admission/builder-patterns.d.ts +25 -0
- package/dist/admission/builder-patterns.d.ts.map +1 -0
- package/dist/admission/builder-patterns.js +40 -0
- package/dist/admission/builder-patterns.js.map +1 -0
- package/dist/admission/gates.d.ts +136 -0
- package/dist/admission/gates.d.ts.map +1 -0
- package/dist/admission/gates.js +335 -0
- package/dist/admission/gates.js.map +1 -0
- package/dist/admission/glb.d.ts +64 -0
- package/dist/admission/glb.d.ts.map +1 -0
- package/dist/admission/glb.js +128 -0
- package/dist/admission/glb.js.map +1 -0
- package/dist/admission/index.d.ts +8 -0
- package/dist/admission/index.d.ts.map +1 -0
- package/dist/admission/index.js +8 -0
- package/dist/admission/index.js.map +1 -0
- package/dist/admission/profiles.d.ts +52 -0
- package/dist/admission/profiles.d.ts.map +1 -0
- package/dist/admission/profiles.js +91 -0
- package/dist/admission/profiles.js.map +1 -0
- package/dist/admission/qrFlags.d.ts +12 -0
- package/dist/admission/qrFlags.d.ts.map +1 -0
- package/dist/admission/qrFlags.js +48 -0
- package/dist/admission/qrFlags.js.map +1 -0
- package/dist/admission/routeGates.d.ts +36 -0
- package/dist/admission/routeGates.d.ts.map +1 -0
- package/dist/admission/routeGates.js +144 -0
- package/dist/admission/routeGates.js.map +1 -0
- package/dist/admission/texel.d.ts +50 -0
- package/dist/admission/texel.d.ts.map +1 -0
- package/dist/admission/texel.js +177 -0
- package/dist/admission/texel.js.map +1 -0
- package/dist/admission/textureStats.d.ts +45 -0
- package/dist/admission/textureStats.d.ts.map +1 -0
- package/dist/admission/textureStats.js +201 -0
- package/dist/admission/textureStats.js.map +1 -0
- package/dist/animation-asset-validator.d.ts +44 -0
- package/dist/animation-asset-validator.d.ts.map +1 -1
- package/dist/animation-asset-validator.js +80 -1
- package/dist/animation-asset-validator.js.map +1 -1
- package/dist/asset-core-types.d.ts +99 -4
- package/dist/asset-core-types.d.ts.map +1 -1
- package/dist/asset-inspection-types.d.ts +8 -0
- package/dist/asset-inspection-types.d.ts.map +1 -1
- package/dist/asset-manifest.d.ts +1 -0
- package/dist/asset-manifest.d.ts.map +1 -1
- package/dist/asset-manifest.js +13 -4
- package/dist/asset-manifest.js.map +1 -1
- package/dist/asset-route-typegen.d.ts +37 -0
- package/dist/asset-route-typegen.d.ts.map +1 -0
- package/dist/asset-route-typegen.js +179 -0
- package/dist/asset-route-typegen.js.map +1 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +9 -4
- package/dist/cli-help.js.map +1 -1
- package/dist/cli-options.d.ts +7 -0
- package/dist/cli-options.d.ts.map +1 -1
- package/dist/cli-options.js +33 -2
- package/dist/cli-options.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +126 -11
- package/dist/cli.js.map +1 -1
- package/dist/codemods/engine-entry-imports.d.ts +22 -0
- package/dist/codemods/engine-entry-imports.d.ts.map +1 -0
- package/dist/codemods/engine-entry-imports.js +159 -0
- package/dist/codemods/engine-entry-imports.js.map +1 -0
- package/dist/codemods/lean-imports.d.ts +40 -0
- package/dist/codemods/lean-imports.d.ts.map +1 -0
- package/dist/codemods/lean-imports.js +175 -0
- package/dist/codemods/lean-imports.js.map +1 -0
- package/dist/codemods/renderer-imports.d.ts +36 -0
- package/dist/codemods/renderer-imports.d.ts.map +1 -0
- package/dist/codemods/renderer-imports.js +364 -0
- package/dist/codemods/renderer-imports.js.map +1 -0
- package/dist/codemods/renderer-mode.d.ts +38 -0
- package/dist/codemods/renderer-mode.d.ts.map +1 -0
- package/dist/codemods/renderer-mode.js +130 -0
- package/dist/codemods/renderer-mode.js.map +1 -0
- package/dist/commands/prd01/index.d.ts +8 -0
- package/dist/commands/prd01/index.d.ts.map +1 -0
- package/dist/commands/prd01/index.js +39 -0
- package/dist/commands/prd01/index.js.map +1 -0
- package/dist/commands/prd02/environmentsBake.d.ts +6 -0
- package/dist/commands/prd02/environmentsBake.d.ts.map +1 -0
- package/dist/commands/prd02/environmentsBake.js +174 -0
- package/dist/commands/prd02/environmentsBake.js.map +1 -0
- package/dist/commands/prd02/index.d.ts +2 -0
- package/dist/commands/prd02/index.d.ts.map +1 -0
- package/dist/commands/prd02/index.js +26 -0
- package/dist/commands/prd02/index.js.map +1 -0
- package/dist/commands/prd02/migrateLighting.d.ts +17 -0
- package/dist/commands/prd02/migrateLighting.d.ts.map +1 -0
- package/dist/commands/prd02/migrateLighting.js +86 -0
- package/dist/commands/prd02/migrateLighting.js.map +1 -0
- package/dist/commands/prd02/migrateLightingSweep.d.ts +20 -0
- package/dist/commands/prd02/migrateLightingSweep.d.ts.map +1 -0
- package/dist/commands/prd02/migrateLightingSweep.js +105 -0
- package/dist/commands/prd02/migrateLightingSweep.js.map +1 -0
- package/dist/commands/prd03/index.d.ts +7 -0
- package/dist/commands/prd03/index.d.ts.map +1 -0
- package/dist/commands/prd03/index.js +9 -0
- package/dist/commands/prd03/index.js.map +1 -0
- package/dist/commands/prd04/index.d.ts +10 -0
- package/dist/commands/prd04/index.d.ts.map +1 -0
- package/dist/commands/prd04/index.js +10 -0
- package/dist/commands/prd04/index.js.map +1 -0
- package/dist/commands/prd04/modelTintReport.d.ts +16 -0
- package/dist/commands/prd04/modelTintReport.d.ts.map +1 -0
- package/dist/commands/prd04/modelTintReport.js +114 -0
- package/dist/commands/prd04/modelTintReport.js.map +1 -0
- package/dist/commands/prd04/pinEmissiveDefaults.d.ts +3 -0
- package/dist/commands/prd04/pinEmissiveDefaults.d.ts.map +1 -0
- package/dist/commands/prd04/pinEmissiveDefaults.js +36 -0
- package/dist/commands/prd04/pinEmissiveDefaults.js.map +1 -0
- package/dist/commands/prd05/admit.d.ts +54 -0
- package/dist/commands/prd05/admit.d.ts.map +1 -0
- package/dist/commands/prd05/admit.js +153 -0
- package/dist/commands/prd05/admit.js.map +1 -0
- package/dist/commands/prd05/codemods/assetsRouteModules.d.ts +3 -0
- package/dist/commands/prd05/codemods/assetsRouteModules.d.ts.map +1 -0
- package/dist/commands/prd05/codemods/assetsRouteModules.js +92 -0
- package/dist/commands/prd05/codemods/assetsRouteModules.js.map +1 -0
- package/dist/commands/prd05/index.d.ts +9 -0
- package/dist/commands/prd05/index.d.ts.map +1 -0
- package/dist/commands/prd05/index.js +171 -0
- package/dist/commands/prd05/index.js.map +1 -0
- package/dist/commands/prd05/library.d.ts +23 -0
- package/dist/commands/prd05/library.d.ts.map +1 -0
- package/dist/commands/prd05/library.js +245 -0
- package/dist/commands/prd05/library.js.map +1 -0
- package/dist/commands/prd05/lookdev.d.ts +14 -0
- package/dist/commands/prd05/lookdev.d.ts.map +1 -0
- package/dist/commands/prd05/lookdev.js +68 -0
- package/dist/commands/prd05/lookdev.js.map +1 -0
- package/dist/commands/prd05/optimize.d.ts +16 -0
- package/dist/commands/prd05/optimize.d.ts.map +1 -0
- package/dist/commands/prd05/optimize.js +55 -0
- package/dist/commands/prd05/optimize.js.map +1 -0
- package/dist/commands/prd05/prune.d.ts +26 -0
- package/dist/commands/prd05/prune.d.ts.map +1 -0
- package/dist/commands/prd05/prune.js +104 -0
- package/dist/commands/prd05/prune.js.map +1 -0
- package/dist/commands/prd05/review.d.ts +24 -0
- package/dist/commands/prd05/review.d.ts.map +1 -0
- package/dist/commands/prd05/review.js +40 -0
- package/dist/commands/prd05/review.js.map +1 -0
- package/dist/commands/prd06/index.d.ts +6 -0
- package/dist/commands/prd06/index.d.ts.map +1 -0
- package/dist/commands/prd06/index.js +86 -0
- package/dist/commands/prd06/index.js.map +1 -0
- package/dist/commands/prd06/inspectAnimationClips.d.ts +86 -0
- package/dist/commands/prd06/inspectAnimationClips.d.ts.map +1 -0
- package/dist/commands/prd06/inspectAnimationClips.js +168 -0
- package/dist/commands/prd06/inspectAnimationClips.js.map +1 -0
- package/dist/commands/prd06/validateHero.d.ts +18 -0
- package/dist/commands/prd06/validateHero.d.ts.map +1 -0
- package/dist/commands/prd06/validateHero.js +91 -0
- package/dist/commands/prd06/validateHero.js.map +1 -0
- package/dist/commands/prd07/codemods.d.ts +28 -0
- package/dist/commands/prd07/codemods.d.ts.map +1 -0
- package/dist/commands/prd07/codemods.js +155 -0
- package/dist/commands/prd07/codemods.js.map +1 -0
- package/dist/commands/prd07/index.d.ts +2 -0
- package/dist/commands/prd07/index.d.ts.map +1 -0
- package/dist/commands/prd07/index.js +151 -0
- package/dist/commands/prd07/index.js.map +1 -0
- package/dist/commands/prd08/feelLint.d.ts +13 -0
- package/dist/commands/prd08/feelLint.d.ts.map +1 -0
- package/dist/commands/prd08/feelLint.js +32 -0
- package/dist/commands/prd08/feelLint.js.map +1 -0
- package/dist/commands/prd08/index.d.ts +2 -0
- package/dist/commands/prd08/index.d.ts.map +1 -0
- package/dist/commands/prd08/index.js +16 -0
- package/dist/commands/prd08/index.js.map +1 -0
- package/dist/commands/prd08/motionReport.d.ts +94 -0
- package/dist/commands/prd08/motionReport.d.ts.map +1 -0
- package/dist/commands/prd08/motionReport.js +197 -0
- package/dist/commands/prd08/motionReport.js.map +1 -0
- package/dist/commands/prd09/codemods/audio-wrapper.d.ts +9 -0
- package/dist/commands/prd09/codemods/audio-wrapper.d.ts.map +1 -0
- package/dist/commands/prd09/codemods/audio-wrapper.js +30 -0
- package/dist/commands/prd09/codemods/audio-wrapper.js.map +1 -0
- package/dist/commands/prd09/codemods/capture-branches.d.ts +10 -0
- package/dist/commands/prd09/codemods/capture-branches.d.ts.map +1 -0
- package/dist/commands/prd09/codemods/capture-branches.js +54 -0
- package/dist/commands/prd09/codemods/capture-branches.js.map +1 -0
- package/dist/commands/prd09/codemods/evidence-globals.d.ts +8 -0
- package/dist/commands/prd09/codemods/evidence-globals.d.ts.map +1 -0
- package/dist/commands/prd09/codemods/evidence-globals.js +19 -0
- package/dist/commands/prd09/codemods/evidence-globals.js.map +1 -0
- package/dist/commands/prd09/codemods/perf-script.d.ts +8 -0
- package/dist/commands/prd09/codemods/perf-script.d.ts.map +1 -0
- package/dist/commands/prd09/codemods/perf-script.js +24 -0
- package/dist/commands/prd09/codemods/perf-script.js.map +1 -0
- package/dist/commands/prd09/index.d.ts +8 -0
- package/dist/commands/prd09/index.d.ts.map +1 -0
- package/dist/commands/prd09/index.js +19 -0
- package/dist/commands/prd09/index.js.map +1 -0
- package/dist/commands/prd09/perf-report.d.ts +56 -0
- package/dist/commands/prd09/perf-report.d.ts.map +1 -0
- package/dist/commands/prd09/perf-report.js +118 -0
- package/dist/commands/prd09/perf-report.js.map +1 -0
- package/dist/commands/prd09/sfx-admit.d.ts +18 -0
- package/dist/commands/prd09/sfx-admit.d.ts.map +1 -0
- package/dist/commands/prd09/sfx-admit.js +120 -0
- package/dist/commands/prd09/sfx-admit.js.map +1 -0
- package/dist/commands/prd10/index.d.ts +2 -0
- package/dist/commands/prd10/index.d.ts.map +1 -0
- package/dist/commands/prd10/index.js +109 -0
- package/dist/commands/prd10/index.js.map +1 -0
- package/dist/commands/prd11/batchOptout.d.ts +35 -0
- package/dist/commands/prd11/batchOptout.d.ts.map +1 -0
- package/dist/commands/prd11/batchOptout.js +155 -0
- package/dist/commands/prd11/batchOptout.js.map +1 -0
- package/dist/commands/prd11/index.d.ts +2 -0
- package/dist/commands/prd11/index.d.ts.map +1 -0
- package/dist/commands/prd11/index.js +13 -0
- package/dist/commands/prd11/index.js.map +1 -0
- package/dist/commands/prd11/perfGate.d.ts +15 -0
- package/dist/commands/prd11/perfGate.d.ts.map +1 -0
- package/dist/commands/prd11/perfGate.js +98 -0
- package/dist/commands/prd11/perfGate.js.map +1 -0
- package/dist/commands/prd13/index.d.ts +15 -0
- package/dist/commands/prd13/index.d.ts.map +1 -0
- package/dist/commands/prd13/index.js +26 -0
- package/dist/commands/prd13/index.js.map +1 -0
- package/dist/commands/prd13/run.d.ts +10 -0
- package/dist/commands/prd13/run.d.ts.map +1 -0
- package/dist/commands/prd13/run.js +29 -0
- package/dist/commands/prd13/run.js.map +1 -0
- package/dist/commands/prd14/index.d.ts +6 -0
- package/dist/commands/prd14/index.d.ts.map +1 -0
- package/dist/commands/prd14/index.js +6 -0
- package/dist/commands/prd14/index.js.map +1 -0
- package/dist/commands/prd15/index.d.ts +8 -0
- package/dist/commands/prd15/index.d.ts.map +1 -0
- package/dist/commands/prd15/index.js +152 -0
- package/dist/commands/prd15/index.js.map +1 -0
- package/dist/commands/registry.d.ts +19 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +19 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/contracts/assetManifest.d.ts +80 -0
- package/dist/contracts/assetManifest.d.ts.map +1 -0
- package/dist/contracts/assetManifest.js +9 -0
- package/dist/contracts/assetManifest.js.map +1 -0
- package/dist/contracts/commands.d.ts +53 -0
- package/dist/contracts/commands.d.ts.map +1 -0
- package/dist/contracts/commands.js +37 -0
- package/dist/contracts/commands.js.map +1 -0
- package/dist/index.d.ts +17 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +271 -71
- package/dist/index.js.map +1 -1
- package/dist/library-manifest.d.ts +86 -0
- package/dist/library-manifest.d.ts.map +1 -0
- package/dist/library-manifest.js +95 -0
- package/dist/library-manifest.js.map +1 -0
- package/dist/look/capture.d.ts +51 -0
- package/dist/look/capture.d.ts.map +1 -0
- package/dist/look/capture.js +229 -0
- package/dist/look/capture.js.map +1 -0
- package/dist/look/judge.d.ts +24 -0
- package/dist/look/judge.d.ts.map +1 -0
- package/dist/look/judge.js +151 -0
- package/dist/look/judge.js.map +1 -0
- package/dist/look/lint-static.d.ts +45 -0
- package/dist/look/lint-static.d.ts.map +1 -0
- package/dist/look/lint-static.js +241 -0
- package/dist/look/lint-static.js.map +1 -0
- package/dist/look/rubric.d.ts +70 -0
- package/dist/look/rubric.d.ts.map +1 -0
- package/dist/look/rubric.js +169 -0
- package/dist/look/rubric.js.map +1 -0
- package/dist/meshy/import.d.ts +7 -1
- package/dist/meshy/import.d.ts.map +1 -1
- package/dist/meshy/import.js +80 -6
- package/dist/meshy/import.js.map +1 -1
- package/dist/migrate-three/CompatibilityWarnings.d.ts +6 -0
- package/dist/migrate-three/CompatibilityWarnings.d.ts.map +1 -0
- package/dist/migrate-three/CompatibilityWarnings.js +24 -0
- package/dist/migrate-three/CompatibilityWarnings.js.map +1 -0
- package/dist/migrate-three/ImportMap.d.ts +19 -0
- package/dist/migrate-three/ImportMap.d.ts.map +1 -0
- package/dist/migrate-three/ImportMap.js +35 -0
- package/dist/migrate-three/ImportMap.js.map +1 -0
- package/dist/migrate-three/R3fMigration.d.ts +32 -0
- package/dist/migrate-three/R3fMigration.d.ts.map +1 -0
- package/dist/migrate-three/R3fMigration.js +70 -0
- package/dist/migrate-three/R3fMigration.js.map +1 -0
- package/dist/migrate-three/ThreeToA3DAdapter.d.ts +8 -0
- package/dist/migrate-three/ThreeToA3DAdapter.d.ts.map +1 -0
- package/dist/migrate-three/ThreeToA3DAdapter.js +20 -0
- package/dist/migrate-three/ThreeToA3DAdapter.js.map +1 -0
- package/dist/migrate-three/emit.d.ts +21 -0
- package/dist/migrate-three/emit.d.ts.map +1 -0
- package/dist/migrate-three/emit.js +117 -0
- package/dist/migrate-three/emit.js.map +1 -0
- package/dist/migrate-three/mappings.d.ts +21 -0
- package/dist/migrate-three/mappings.d.ts.map +1 -0
- package/dist/migrate-three/mappings.js +42 -0
- package/dist/migrate-three/mappings.js.map +1 -0
- package/dist/migrate-three/parse.d.ts +20 -0
- package/dist/migrate-three/parse.d.ts.map +1 -0
- package/dist/migrate-three/parse.js +56 -0
- package/dist/migrate-three/parse.js.map +1 -0
- package/dist/migrate-three/report.d.ts +18 -0
- package/dist/migrate-three/report.d.ts.map +1 -0
- package/dist/migrate-three/report.js +16 -0
- package/dist/migrate-three/report.js.map +1 -0
- package/dist/pull-bridge/adapters.d.ts +1 -1
- package/dist/pull-bridge/adapters.d.ts.map +1 -1
- package/dist/pull-bridge/adapters.js +17 -4
- package/dist/pull-bridge/adapters.js.map +1 -1
- package/dist/pull-bridge/provenance.d.ts.map +1 -1
- package/dist/pull-bridge/provenance.js +3 -2
- package/dist/pull-bridge/provenance.js.map +1 -1
- package/dist/pull-bridge/pullable.d.ts.map +1 -1
- package/dist/pull-bridge/pullable.js +14 -3
- package/dist/pull-bridge/pullable.js.map +1 -1
- package/dist/pull-bridge/scoring.d.ts +36 -8
- package/dist/pull-bridge/scoring.d.ts.map +1 -1
- package/dist/pull-bridge/scoring.js +143 -47
- package/dist/pull-bridge/scoring.js.map +1 -1
- package/dist/pull-bridge/search.d.ts +2 -0
- package/dist/pull-bridge/search.d.ts.map +1 -1
- package/dist/pull-bridge/search.js +17 -10
- package/dist/pull-bridge/search.js.map +1 -1
- package/dist/pull-bridge.d.ts +2 -2
- package/dist/pull-bridge.d.ts.map +1 -1
- package/dist/pull-bridge.js +24 -8
- package/dist/pull-bridge.js.map +1 -1
- package/package.json +6 -3
- package/skills/agent-files/AGENTS.md +3 -0
- package/skills/aura3d-animation-studio/SKILL.md +153 -0
- package/skills/aura3d-animation-studio/references/shot-looks.md +26 -0
- package/skills/aura3d-art-direction/SKILL.md +84 -0
- package/skills/aura3d-art-direction/references/failure-gallery.md +64 -0
- package/skills/aura3d-art-direction/references/framing-and-shots.md +45 -0
- package/skills/aura3d-art-direction/references/look-recipes.md +32 -0
- package/skills/aura3d-art-direction/references/quality-bar.md +103 -0
- package/skills/aura3d-art-direction/references/reference-frames.md +82 -0
- package/skills/aura3d-assets/SKILL.md +132 -0
- package/skills/aura3d-assets/references/preview-under-look.md +26 -0
- package/skills/aura3d-browser-game/SKILL.md +127 -0
- package/skills/aura3d-browser-game/references/genre-looks.md +52 -0
- package/skills/aura3d-character-animation/SKILL.md +129 -0
- package/skills/aura3d-character-animation/references/stage-and-lighting.md +31 -0
- package/skills/aura3d-core/SKILL.md +121 -0
- package/skills/aura3d-core/references/boundaries.md +91 -0
- package/skills/aura3d-evidence-review/SKILL.md +106 -0
- package/skills/aura3d-game-art/SKILL.md +118 -0
- package/skills/aura3d-game-art/references/sheet-check.mjs +58 -0
- package/skills/aura3d-game-art/references/sprite-palettes.md +25 -0
- package/skills/aura3d-materials-environments/SKILL.md +139 -0
- package/skills/aura3d-performance/SKILL.md +97 -0
- package/skills/aura3d-retexture/SKILL.md +115 -0
- package/skills/aura3d-retexture/references/geometry-hash.mjs +89 -0
- package/skills/aura3d-scene-authoring/SKILL.md +132 -0
- package/skills/aura3d-scene-authoring/references/look-by-family.md +28 -0
- package/skills/aura3d-threejs-migration/SKILL.md +125 -0
- package/skills/aura3d-threejs-migration/references/look-mapping.md +27 -0
- package/skills/llms.txt +117 -0
- package/skills/manifest.json +163 -0
- package/skills/meshy-cli/SKILL.md +133 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C-39 codemod: `prd04-model-tint-report` (PRD-04 §10.2, P1-12), report-only.
|
|
3
|
+
*
|
|
4
|
+
* Emits one row per `model(asset, { material })` tint site: file, line, asset
|
|
5
|
+
* expression, color/emissive presence, and — when `material:` is an
|
|
6
|
+
* identifier (e.g. siege-golf's paintedTimberMaterial) — the followed
|
|
7
|
+
* declaration's object. Never rewrites; `code` is returned unchanged.
|
|
8
|
+
* The implementation lives here (commands/prdNN/ is lane-owned per
|
|
9
|
+
* QR_OWNERSHIP.json lanePatterns), unlike `pin-emissive-defaults` whose
|
|
10
|
+
* CONTRACTS §4.1 path is tools/codemods/.
|
|
11
|
+
*/
|
|
12
|
+
import ts from "typescript";
|
|
13
|
+
import { registerCodemod } from "../../contracts/commands.js";
|
|
14
|
+
function lineOf(sourceFile, node) {
|
|
15
|
+
return sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1;
|
|
16
|
+
}
|
|
17
|
+
function propNamesOf(objLiteral) {
|
|
18
|
+
return objLiteral.properties
|
|
19
|
+
.map((prop) => ts.isPropertyAssignment(prop) && (ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name))
|
|
20
|
+
? prop.name.text
|
|
21
|
+
: undefined)
|
|
22
|
+
.filter((name) => name !== undefined);
|
|
23
|
+
}
|
|
24
|
+
function findProp(objLiteral, name) {
|
|
25
|
+
return objLiteral.properties.find((prop) => ts.isPropertyAssignment(prop) &&
|
|
26
|
+
((ts.isIdentifier(prop.name) && prop.name.text === name) ||
|
|
27
|
+
(ts.isStringLiteral(prop.name) && prop.name.text === name)));
|
|
28
|
+
}
|
|
29
|
+
function summarizeObject(sourceFile, objLiteral) {
|
|
30
|
+
const props = propNamesOf(objLiteral);
|
|
31
|
+
return {
|
|
32
|
+
color: props.includes("color") || props.includes("emissiveColor"),
|
|
33
|
+
emissive: props.includes("emissive"),
|
|
34
|
+
props: props.join(","),
|
|
35
|
+
text: objLiteral.getText(sourceFile).slice(0, 160)
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function summarizeMaterialExpr(sourceFile, expr) {
|
|
39
|
+
if (ts.isObjectLiteralExpression(expr))
|
|
40
|
+
return summarizeObject(sourceFile, expr);
|
|
41
|
+
if (ts.isCallExpression(expr)) {
|
|
42
|
+
const arg = expr.arguments.find(ts.isObjectLiteralExpression);
|
|
43
|
+
if (arg)
|
|
44
|
+
return summarizeObject(sourceFile, arg);
|
|
45
|
+
}
|
|
46
|
+
return { color: undefined, emissive: undefined, props: undefined, text: expr.getText(sourceFile).slice(0, 160) };
|
|
47
|
+
}
|
|
48
|
+
/** Resolve `identifier` in the same file to the initializer of its declaration. */
|
|
49
|
+
function followIdentifier(sourceFile, id) {
|
|
50
|
+
const name = id.text;
|
|
51
|
+
let found;
|
|
52
|
+
const visit = (node) => {
|
|
53
|
+
if (found)
|
|
54
|
+
return;
|
|
55
|
+
if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.name.text === name) {
|
|
56
|
+
found = node.initializer;
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
ts.forEachChild(node, visit);
|
|
60
|
+
};
|
|
61
|
+
visit(sourceFile);
|
|
62
|
+
return found;
|
|
63
|
+
}
|
|
64
|
+
export function transform(source, fileName) {
|
|
65
|
+
const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.Latest, true);
|
|
66
|
+
const rows = [];
|
|
67
|
+
const visit = (node) => {
|
|
68
|
+
const isModelCall = ts.isCallExpression(node) &&
|
|
69
|
+
((ts.isIdentifier(node.expression) && node.expression.text === "model") ||
|
|
70
|
+
(ts.isPropertyAccessExpression(node.expression) && node.expression.name.text === "model"));
|
|
71
|
+
if (isModelCall) {
|
|
72
|
+
const options = node.arguments[1];
|
|
73
|
+
if (options && ts.isObjectLiteralExpression(options)) {
|
|
74
|
+
const materialProp = findProp(options, "material");
|
|
75
|
+
if (materialProp) {
|
|
76
|
+
const value = materialProp.initializer;
|
|
77
|
+
let summary;
|
|
78
|
+
let followed;
|
|
79
|
+
if (ts.isIdentifier(value)) {
|
|
80
|
+
const init = followIdentifier(sourceFile, value);
|
|
81
|
+
followed = `identifier ${value.text}`;
|
|
82
|
+
summary = summarizeMaterialExpr(sourceFile, init ?? value);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
summary = summarizeMaterialExpr(sourceFile, value);
|
|
86
|
+
}
|
|
87
|
+
const assetExpr = node.arguments[0]?.getText(sourceFile).slice(0, 80) ?? "";
|
|
88
|
+
rows.push({
|
|
89
|
+
file: fileName,
|
|
90
|
+
line: lineOf(sourceFile, node),
|
|
91
|
+
construct: `model(${assetExpr}, { material })`,
|
|
92
|
+
mapping: "none",
|
|
93
|
+
target: "model material tint",
|
|
94
|
+
note: `color=${String(summary.color)} emissive=${String(summary.emissive)}` +
|
|
95
|
+
(followed ? ` followed=${followed}` : "") +
|
|
96
|
+
` material=${summary.text}${summary.props ? ` [props:${summary.props}]` : ""}`
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
ts.forEachChild(node, visit);
|
|
102
|
+
};
|
|
103
|
+
visit(sourceFile);
|
|
104
|
+
return { code: source, rows };
|
|
105
|
+
}
|
|
106
|
+
export const prd04ModelTintReport = {
|
|
107
|
+
name: "prd04-model-tint-report",
|
|
108
|
+
owner: "prd04",
|
|
109
|
+
description: "Report-only codemod: lists model(asset, { material }) tint sites with file, line, asset " +
|
|
110
|
+
"expression, color/emissive presence and followed identifier definitions for the tint decision table.",
|
|
111
|
+
transform
|
|
112
|
+
};
|
|
113
|
+
registerCodemod(prd04ModelTintReport);
|
|
114
|
+
//# sourceMappingURL=modelTintReport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelTintReport.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd04/modelTintReport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinEmissiveDefaults.d.ts","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd04/pinEmissiveDefaults.ts"],"names":[],"mappings":"AAWA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAsBhF,eAAO,MAAM,mBAAmB,EAAE,WAOjC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C-39 codemod registration: `pin-emissive-defaults` (PRD-04 §10.6).
|
|
3
|
+
* Implementation lives in tools/codemods/pin-emissive-defaults.mjs — the
|
|
4
|
+
* CONTRACTS §4.1-owned path, shared with standalone `node` invocation.
|
|
5
|
+
*
|
|
6
|
+
* The .mjs is resolved LAZILY inside `transform`: `commands/registry.js` loads
|
|
7
|
+
* this module on every CLI invocation, and a top-level import would crash the
|
|
8
|
+
* packaged CLI (its dist tree does not ship `tools/`). Deferred resolution keeps
|
|
9
|
+
* startup clean; invoking the codemod outside the monorepo raises a clear error.
|
|
10
|
+
*/
|
|
11
|
+
import { createRequire } from "node:module";
|
|
12
|
+
import { registerCodemod } from "../../contracts/commands.js";
|
|
13
|
+
const requireFromHere = createRequire(import.meta.url);
|
|
14
|
+
let impl;
|
|
15
|
+
function loadTransform() {
|
|
16
|
+
if (impl === undefined) {
|
|
17
|
+
try {
|
|
18
|
+
impl = requireFromHere("../../../../../tools/codemods/pin-emissive-defaults.mjs").transform;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
throw new Error("aura3d codemod pin-emissive-defaults: implementation module " +
|
|
22
|
+
`tools/codemods/pin-emissive-defaults.mjs is not reachable (${error.message}). ` +
|
|
23
|
+
"This codemod is only available from the monorepo source tree.");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return impl;
|
|
27
|
+
}
|
|
28
|
+
export const pinEmissiveDefaults = {
|
|
29
|
+
name: "pin-emissive-defaults",
|
|
30
|
+
owner: "prd04",
|
|
31
|
+
description: "Pins legacy emissiveIntensity defaults (emissive 1.35, neon 2.8) on material.emissive(...) calls, " +
|
|
32
|
+
"material.neon(...) calls and emissive object literals missing the field.",
|
|
33
|
+
transform: (source, fileName) => loadTransform()(source, fileName)
|
|
34
|
+
};
|
|
35
|
+
registerCodemod(pinEmissiveDefaults);
|
|
36
|
+
//# sourceMappingURL=pinEmissiveDefaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinEmissiveDefaults.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd04/pinEmissiveDefaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAoB,MAAM,6BAA6B,CAAC;AAIhF,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,IAAI,IAA2B,CAAC;AAEhC,SAAS,aAAa;IACpB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,IAAI,GAAI,eAAe,CAAC,yDAAyD,CAA8B,CAAC,SAAS,CAAC;QAC5H,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,8DAA8D;gBAC9D,8DAA+D,KAAe,CAAC,OAAO,KAAK;gBAC3F,+DAA+D,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAgB;IAC9C,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,OAAO;IACd,WAAW,EACT,oGAAoG;QACpG,0EAA0E;IAC5E,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;CACnE,CAAC;AAEF,eAAe,CAAC,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aura3d assets admit <id> --quality prototype|candidate|release` (PRD-05 §6.4).
|
|
3
|
+
*
|
|
4
|
+
* Runs all eleven admission gates (G1–G11) on the entry's stored output
|
|
5
|
+
* file and records an `admission` record bound to the derived (or source)
|
|
6
|
+
* hash. `release` requires every gate to pass; `candidate` records failures
|
|
7
|
+
* without blocking; `prototype` is the cap for builder-provenance G5
|
|
8
|
+
* failures (role `proxy`).
|
|
9
|
+
*
|
|
10
|
+
* Phase 4: G2 (texel density), G6 (texture sanity 256²), G7 (§17.2 budgets),
|
|
11
|
+
* G9 (look-dev record) and G10 (art direction) run on measured inputs built
|
|
12
|
+
* by {@link measureAdmissionInputs} — async because G6 decodes images via
|
|
13
|
+
* the tool-dep bridge. `admitAsset` stays synchronous and takes a
|
|
14
|
+
* pre-measured {@link AdmissionMeasured} so unit tests can inject reports.
|
|
15
|
+
*/
|
|
16
|
+
import type { AuraCliAssetEntry, AuraCliAssetRole } from "../../asset-core-types.js";
|
|
17
|
+
import type { AssetQualityCheck } from "../../contracts/assetManifest.js";
|
|
18
|
+
import { type AdmissionMeasured } from "../../admission/gates.js";
|
|
19
|
+
import { type AdmissionGltfJson } from "../../admission/glb.js";
|
|
20
|
+
import type { AdmissionModel } from "../../admission/gates.js";
|
|
21
|
+
export interface AdmitOptions {
|
|
22
|
+
readonly projectDir: string;
|
|
23
|
+
readonly assetId: string;
|
|
24
|
+
readonly quality: "prototype" | "candidate" | "release";
|
|
25
|
+
readonly role?: AuraCliAssetRole;
|
|
26
|
+
/** Repo root for the G6 tool-dep bridge (defaults to projectDir). */
|
|
27
|
+
readonly repoRoot?: string;
|
|
28
|
+
/** Skip the measured gates entirely (prototype plumbing; they still fail for `release`). */
|
|
29
|
+
readonly skipMeasured?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface AdmitResult {
|
|
32
|
+
readonly ok: boolean;
|
|
33
|
+
readonly checks: readonly AssetQualityCheck[];
|
|
34
|
+
readonly failures: readonly string[];
|
|
35
|
+
/** G9 renderer-issue rows (Aura−three gap > 1.5) to surface to the caller. */
|
|
36
|
+
readonly rendererIssues: readonly string[];
|
|
37
|
+
readonly wroteManifest: boolean;
|
|
38
|
+
readonly quality?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Builds the measured inputs the Phase-4 gates consume: texel density at the
|
|
42
|
+
* resolved §6.4 camera (entry `gameplayCamera` override else profile
|
|
43
|
+
* default, evaluated at 1920×1080 and 390×844 — the report records both
|
|
44
|
+
* bands), 256² texture sanity, §17.2 budget numbers, the look-dev record
|
|
45
|
+
* bound to the derived hash, and the art-direction document.
|
|
46
|
+
*/
|
|
47
|
+
export declare function measureAdmissionInputs(projectDir: string, entry: AuraCliAssetEntry, model: AdmissionModel, json: AdmissionGltfJson, bin: Buffer | undefined, glbPath: string, repoRoot: string): Promise<AdmissionMeasured>;
|
|
48
|
+
export declare function admitAsset(options: AdmitOptions, measured?: AdmissionMeasured): AdmitResult;
|
|
49
|
+
/**
|
|
50
|
+
* Full admit flow: measure (async) then gate. This is what the CLI runs;
|
|
51
|
+
* tests that inject fake measurements call `admitAsset` directly.
|
|
52
|
+
*/
|
|
53
|
+
export declare function admitAssetMeasured(options: AdmitOptions): Promise<AdmitResult>;
|
|
54
|
+
//# sourceMappingURL=admit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admit.d.ts","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd05/admit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAiD,KAAK,iBAAiB,EAAwC,MAAM,0BAA0B,CAAC;AACvJ,OAAO,EAA6C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,8EAA8E;IAC9E,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAeD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoCjO;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,GAAE,iBAAsB,GAAG,WAAW,CAiD/F;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAkBpF"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aura3d assets admit <id> --quality prototype|candidate|release` (PRD-05 §6.4).
|
|
3
|
+
*
|
|
4
|
+
* Runs all eleven admission gates (G1–G11) on the entry's stored output
|
|
5
|
+
* file and records an `admission` record bound to the derived (or source)
|
|
6
|
+
* hash. `release` requires every gate to pass; `candidate` records failures
|
|
7
|
+
* without blocking; `prototype` is the cap for builder-provenance G5
|
|
8
|
+
* failures (role `proxy`).
|
|
9
|
+
*
|
|
10
|
+
* Phase 4: G2 (texel density), G6 (texture sanity 256²), G7 (§17.2 budgets),
|
|
11
|
+
* G9 (look-dev record) and G10 (art direction) run on measured inputs built
|
|
12
|
+
* by {@link measureAdmissionInputs} — async because G6 decodes images via
|
|
13
|
+
* the tool-dep bridge. `admitAsset` stays synchronous and takes a
|
|
14
|
+
* pre-measured {@link AdmissionMeasured} so unit tests can inject reports.
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync, statSync } from "node:fs";
|
|
17
|
+
import { dirname, resolve } from "node:path";
|
|
18
|
+
import { readAssetManifest, writeAssetManifest, writeTypedAssets } from "../../asset-manifest.js";
|
|
19
|
+
import { hasStylizedFlatApproval, readArtDirectionDocument } from "../../admission/artDirection.js";
|
|
20
|
+
import { runAdmissionGates } from "../../admission/gates.js";
|
|
21
|
+
import { admissionModelFromGltf, readAdmissionGltf } from "../../admission/glb.js";
|
|
22
|
+
import { profileForRole } from "../../admission/profiles.js";
|
|
23
|
+
import { measureTexelDensity } from "../../admission/texel.js";
|
|
24
|
+
import { measureTextureSanity } from "../../admission/textureStats.js";
|
|
25
|
+
function entryContext(entry, projectDir) {
|
|
26
|
+
return {
|
|
27
|
+
id: entry.id,
|
|
28
|
+
role: entry.role,
|
|
29
|
+
quality: entry.quality,
|
|
30
|
+
sourcePath: entry.provenance?.sourcePath ?? entry.source,
|
|
31
|
+
generationProvider: entry.provenance?.generation?.provider,
|
|
32
|
+
derivedPresent: entry.derived !== undefined,
|
|
33
|
+
stylizedFlatApproved: hasStylizedFlatApproval(projectDir, entry),
|
|
34
|
+
artDirection: entry.artDirection,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Builds the measured inputs the Phase-4 gates consume: texel density at the
|
|
39
|
+
* resolved §6.4 camera (entry `gameplayCamera` override else profile
|
|
40
|
+
* default, evaluated at 1920×1080 and 390×844 — the report records both
|
|
41
|
+
* bands), 256² texture sanity, §17.2 budget numbers, the look-dev record
|
|
42
|
+
* bound to the derived hash, and the art-direction document.
|
|
43
|
+
*/
|
|
44
|
+
export async function measureAdmissionInputs(projectDir, entry, model, json, bin, glbPath, repoRoot) {
|
|
45
|
+
const profile = profileForRole(entry.role, model.boundsSize);
|
|
46
|
+
const camera = entry.gameplayCamera ?? profile?.gameplayCamera;
|
|
47
|
+
const texelDensity = camera
|
|
48
|
+
? measureTexelDensity(json, bin, {
|
|
49
|
+
distance: camera.distance,
|
|
50
|
+
fovDegrees: camera.fovDegrees,
|
|
51
|
+
viewportWidth: 1920,
|
|
52
|
+
viewportHeight: 1080,
|
|
53
|
+
})
|
|
54
|
+
: undefined;
|
|
55
|
+
const texelDensityMobile = camera
|
|
56
|
+
? measureTexelDensity(json, bin, {
|
|
57
|
+
distance: camera.distance,
|
|
58
|
+
fovDegrees: camera.fovDegrees,
|
|
59
|
+
viewportWidth: 390,
|
|
60
|
+
viewportHeight: 844,
|
|
61
|
+
})
|
|
62
|
+
: undefined;
|
|
63
|
+
const textureSanity = await measureTextureSanity(json, bin, dirname(glbPath), repoRoot);
|
|
64
|
+
const derivedBytes = entry.derived?.measurements?.after?.fileBytes
|
|
65
|
+
?? entry.derived?.measurements?.after?.downloadBytes
|
|
66
|
+
?? (entry.derived?.outputPath && existsSync(resolve(projectDir, entry.derived.outputPath)) ? statSync(resolve(projectDir, entry.derived.outputPath)).size : undefined);
|
|
67
|
+
return {
|
|
68
|
+
texelDensity,
|
|
69
|
+
texelDensityMobile,
|
|
70
|
+
textureSanity,
|
|
71
|
+
derivedFileBytes: derivedBytes,
|
|
72
|
+
gpuBytesHigh: entry.derived?.measurements?.after?.gpuBytesByTier?.high,
|
|
73
|
+
drawCalls: entry.derived?.measurements?.after?.drawCalls,
|
|
74
|
+
lookDev: entry.lookDev,
|
|
75
|
+
// The look-dev run may record the Aura-adapter score under metrics;
|
|
76
|
+
// G9 compares it against the three-adapter review mean.
|
|
77
|
+
auraScore: typeof entry.lookDev?.metrics?.["auraScore"] === "number" ? entry.lookDev.metrics["auraScore"] : undefined,
|
|
78
|
+
artDirectionDoc: entry.artDirection ? readArtDirectionDocument(projectDir, entry.artDirection) ?? undefined : undefined,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function admitAsset(options, measured = {}) {
|
|
82
|
+
const projectDir = resolve(options.projectDir);
|
|
83
|
+
const manifest = readAssetManifest(projectDir);
|
|
84
|
+
const entry = manifest.assets.find((asset) => asset.id === options.assetId);
|
|
85
|
+
if (!entry) {
|
|
86
|
+
return { ok: false, checks: [], failures: [`Asset "${options.assetId}" is not in the manifest.`], rendererIssues: [], wroteManifest: false };
|
|
87
|
+
}
|
|
88
|
+
const file = resolve(projectDir, entry.derived?.outputPath ?? entry.outputPath);
|
|
89
|
+
if (!existsSync(file)) {
|
|
90
|
+
return { ok: false, checks: [], failures: [`Missing asset file for "${entry.id}": ${entry.outputPath}`], rendererIssues: [], wroteManifest: false };
|
|
91
|
+
}
|
|
92
|
+
const checks = entry.format === "glb" || entry.format === "gltf"
|
|
93
|
+
? runAdmissionGates(admissionModelFromGltf(readAdmissionGltf(file).json), entryContext(entry, projectDir), measured)
|
|
94
|
+
: [];
|
|
95
|
+
const failures = checks.filter((check) => check.verdict === "fail").map((check) => check.message);
|
|
96
|
+
const rendererIssues = checks.filter((check) => check.rendererIssue === true).map((check) => check.message);
|
|
97
|
+
const builderCap = checks.some((check) => check.verdict === "fail" && check.builderProvenance === true);
|
|
98
|
+
const hardBlock = (options.quality === "release" && failures.length > 0) ||
|
|
99
|
+
(options.quality === "candidate" && builderCap);
|
|
100
|
+
const admitted = !hardBlock;
|
|
101
|
+
const nextEntry = {
|
|
102
|
+
...entry,
|
|
103
|
+
quality: admitted ? options.quality : entry.quality,
|
|
104
|
+
role: admitted && options.quality === "prototype" && builderCap ? "proxy" : (options.role ?? entry.role),
|
|
105
|
+
admission: {
|
|
106
|
+
status: admitted ? "admitted" : "rejected",
|
|
107
|
+
checks,
|
|
108
|
+
at: new Date().toISOString(),
|
|
109
|
+
derivedHash: entry.derived?.hash,
|
|
110
|
+
quality: admitted ? options.quality : entry.quality,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
const next = { ...manifest, assets: manifest.assets.map((asset) => (asset.id === entry.id ? nextEntry : asset)) };
|
|
114
|
+
writeAssetManifest(projectDir, next);
|
|
115
|
+
writeTypedAssets(projectDir, next);
|
|
116
|
+
const blockReasons = [];
|
|
117
|
+
if (options.quality === "release" && failures.length > 0)
|
|
118
|
+
blockReasons.push(...failures);
|
|
119
|
+
if (options.quality === "candidate" && builderCap)
|
|
120
|
+
blockReasons.push("builder provenance caps admission at prototype (role proxy).");
|
|
121
|
+
return {
|
|
122
|
+
ok: admitted,
|
|
123
|
+
checks,
|
|
124
|
+
failures: blockReasons,
|
|
125
|
+
rendererIssues,
|
|
126
|
+
wroteManifest: true,
|
|
127
|
+
quality: nextEntry.quality,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Full admit flow: measure (async) then gate. This is what the CLI runs;
|
|
132
|
+
* tests that inject fake measurements call `admitAsset` directly.
|
|
133
|
+
*/
|
|
134
|
+
export async function admitAssetMeasured(options) {
|
|
135
|
+
const projectDir = resolve(options.projectDir);
|
|
136
|
+
const manifest = readAssetManifest(projectDir);
|
|
137
|
+
const entry = manifest.assets.find((asset) => asset.id === options.assetId);
|
|
138
|
+
if (!entry) {
|
|
139
|
+
return { ok: false, checks: [], failures: [`Asset "${options.assetId}" is not in the manifest.`], rendererIssues: [], wroteManifest: false };
|
|
140
|
+
}
|
|
141
|
+
const file = resolve(projectDir, entry.derived?.outputPath ?? entry.outputPath);
|
|
142
|
+
if (!existsSync(file)) {
|
|
143
|
+
return { ok: false, checks: [], failures: [`Missing asset file for "${entry.id}": ${entry.outputPath}`], rendererIssues: [], wroteManifest: false };
|
|
144
|
+
}
|
|
145
|
+
let measured = {};
|
|
146
|
+
if (!options.skipMeasured && (entry.format === "glb" || entry.format === "gltf")) {
|
|
147
|
+
const glb = readAdmissionGltf(file);
|
|
148
|
+
const model = admissionModelFromGltf(glb.json);
|
|
149
|
+
measured = await measureAdmissionInputs(projectDir, entry, model, glb.json, glb.bin, file, options.repoRoot ?? projectDir);
|
|
150
|
+
}
|
|
151
|
+
return admitAsset(options, measured);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=admit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admit.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd05/admit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assetsRouteModules.d.ts","sourceRoot":"","sources":["../../../../../../../packages/aura3d-cli/src/commands/prd05/codemods/assetsRouteModules.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAclE,eAAO,MAAM,yBAAyB,EAAE,WAgDvC,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { dirname, posix } from "node:path";
|
|
2
|
+
import * as ts from "typescript";
|
|
3
|
+
/**
|
|
4
|
+
* PRD-05 §6.8/R11 — `assets-route-modules` codemod (C-39).
|
|
5
|
+
* Rewrites `import { assets } from "<…>/src/aura-assets"` specifiers to the
|
|
6
|
+
* route-scoped module emitted by `aura3d assets typegen --route apps/<app>`
|
|
7
|
+
* (`apps/<app>/src/aura-assets.route.ts`). Pure `source → code + rows`.
|
|
8
|
+
*/
|
|
9
|
+
const ROUTE_MODULE_BASENAME = "aura-assets.route";
|
|
10
|
+
export const assetsRouteModulesCodemod = {
|
|
11
|
+
name: "assets-route-modules",
|
|
12
|
+
owner: "prd05",
|
|
13
|
+
description: "Rewrite monolithic `src/aura-assets` imports to the route-scoped `aura-assets.route` module emitted by `assets typegen --route`.",
|
|
14
|
+
transform(source, fileName) {
|
|
15
|
+
const normalized = fileName.replace(/\\/g, "/");
|
|
16
|
+
const routeModuleDir = routeModuleDirFor(normalized);
|
|
17
|
+
const sourceFile = ts.createSourceFile(normalized, source, ts.ScriptTarget.Latest, true);
|
|
18
|
+
const edits = [];
|
|
19
|
+
const rows = [];
|
|
20
|
+
for (const statement of sourceFile.statements) {
|
|
21
|
+
if (!ts.isImportDeclaration(statement))
|
|
22
|
+
continue;
|
|
23
|
+
const specifier = statement.moduleSpecifier;
|
|
24
|
+
if (!ts.isStringLiteral(specifier))
|
|
25
|
+
continue;
|
|
26
|
+
const modulePath = specifier.text;
|
|
27
|
+
if (!isMonolithicAssetsSpecifier(modulePath))
|
|
28
|
+
continue;
|
|
29
|
+
const line = sourceFile.getLineAndCharacterOfPosition(specifier.getStart(sourceFile)).line + 1;
|
|
30
|
+
if (routeModuleDir === undefined) {
|
|
31
|
+
rows.push({
|
|
32
|
+
file: normalized,
|
|
33
|
+
line,
|
|
34
|
+
construct: `import ${JSON.stringify(modulePath)}`,
|
|
35
|
+
mapping: "none",
|
|
36
|
+
note: "file is not under an apps/<name>/ or src/ root; run `assets typegen --route` manually and point this import at its aura-assets.route module",
|
|
37
|
+
});
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const target = relativeSpecifier(dirname(normalized), `${routeModuleDir}/${ROUTE_MODULE_BASENAME}`);
|
|
41
|
+
edits.push({ start: specifier.getStart(sourceFile), end: specifier.getEnd(), text: JSON.stringify(target) });
|
|
42
|
+
rows.push({
|
|
43
|
+
file: normalized,
|
|
44
|
+
line,
|
|
45
|
+
construct: `import ${JSON.stringify(modulePath)}`,
|
|
46
|
+
mapping: "exact",
|
|
47
|
+
target,
|
|
48
|
+
note: `route module generated by \`assets typegen --route ${routeModuleDir.replace(/\/src$/, "")}\``,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (edits.length === 0)
|
|
52
|
+
return { code: source, rows };
|
|
53
|
+
let code = source;
|
|
54
|
+
for (const edit of edits.sort((a, b) => b.start - a.start)) {
|
|
55
|
+
code = code.slice(0, edit.start) + edit.text + code.slice(edit.end);
|
|
56
|
+
}
|
|
57
|
+
return { code, rows };
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
/** `../../../src/aura-assets`, `../aura-assets`, `src/aura-assets` — not `.route`. */
|
|
61
|
+
function isMonolithicAssetsSpecifier(specifier) {
|
|
62
|
+
const trimmed = specifier.replace(/\.(ts|js|mjs|d\.ts)$/i, "");
|
|
63
|
+
return trimmed.endsWith("/aura-assets") || trimmed === "aura-assets";
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Route module lives at `<route>/src/aura-assets.route.ts`.
|
|
67
|
+
* - `apps/<app>/...` → `apps/<app>/src/aura-assets.route`
|
|
68
|
+
* - `<root>/src/...` (templates, fixtures) → `<root>/src/aura-assets.route`
|
|
69
|
+
*/
|
|
70
|
+
function routeModuleDirFor(fileName) {
|
|
71
|
+
const appMatch = /(^|\/)apps\/[^/]+(?=\/|$)/.exec(fileName);
|
|
72
|
+
if (appMatch) {
|
|
73
|
+
const prefix = fileName.slice(0, appMatch.index + appMatch[0].length);
|
|
74
|
+
return `${prefix}/src`;
|
|
75
|
+
}
|
|
76
|
+
const srcIndex = fileName.indexOf("/src/");
|
|
77
|
+
if (srcIndex >= 0)
|
|
78
|
+
return fileName.slice(0, srcIndex + "/src".length);
|
|
79
|
+
if (fileName.startsWith("src/"))
|
|
80
|
+
return "src";
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
function relativeSpecifier(fromDir, toModulePath) {
|
|
84
|
+
const normalizedFrom = fromDir.replace(/\\/g, "/");
|
|
85
|
+
let rel = posix.relative(normalizedFrom, toModulePath.replace(/\\/g, "/"));
|
|
86
|
+
if (rel === "")
|
|
87
|
+
rel = ".";
|
|
88
|
+
if (!rel.startsWith("."))
|
|
89
|
+
rel = `./${rel}`;
|
|
90
|
+
return rel;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=assetsRouteModules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assetsRouteModules.js","sourceRoot":"","sources":["../../../../../../../packages/aura3d-cli/src/commands/prd05/codemods/assetsRouteModules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C-39 lane-05 command registrations (PRD-05 §7.1, §14 Phase 0).
|
|
3
|
+
*
|
|
4
|
+
* Phase 0 implements `assets admit` and `assets review` for real; the other
|
|
5
|
+
* verbs are registered now so the surface and usage text exist, and return a
|
|
6
|
+
* clear "lands in Phase N" until their phases land.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd05/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoKH,OAAO,EAAE,CAAC"}
|