@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 @@
|
|
|
1
|
+
{"version":3,"file":"inspectAnimationClips.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd06/inspectAnimationClips.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T4.6 (PRD-06 §6.9, C-39) — `aura3d animation validate-hero <glb>
|
|
3
|
+
* [--profile hero-character|template-hero]`: a lane-owned GLB reader that fills
|
|
4
|
+
* `AnimationAssetInspection` (triangles, skins, joints, clips, baseColor) plus
|
|
5
|
+
* a deterministic clip-map derivation for the profile's required actions.
|
|
6
|
+
* Reuses {@link inspectAnimationClips} (T0.7) — nothing from CLI index.ts.
|
|
7
|
+
*/
|
|
8
|
+
import { type AnimationAssetHeroProfile, type AnimationAssetInspection, type AnimationAssetValidationReport } from "../../animation-asset-validator.js";
|
|
9
|
+
import { type GltfAnimationDocument } from "./inspectAnimationClips.js";
|
|
10
|
+
/** Geometry/texture facts a hero profile needs, straight from the GLB JSON. */
|
|
11
|
+
export declare function inspectHeroGeometry(json: GltfAnimationDocument): Pick<AnimationAssetInspection, "triangleCount" | "skinCount" | "jointCount" | "hasBaseColorTexture">;
|
|
12
|
+
export declare function deriveHeroClipMap(clipNames: readonly string[], requiredActions: readonly string[]): Record<string, string>;
|
|
13
|
+
/** Full GLB → validation report for `aura3d animation validate-hero`. */
|
|
14
|
+
export declare function validateHeroGlb(buffer: Uint8Array, options?: {
|
|
15
|
+
readonly profile?: AnimationAssetHeroProfile;
|
|
16
|
+
readonly clipMap?: Readonly<Record<string, string>>;
|
|
17
|
+
}): AnimationAssetValidationReport;
|
|
18
|
+
//# sourceMappingURL=validateHero.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateHero.d.ts","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd06/validateHero.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAGL,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACpC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAA0C,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAIhH,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,EAAE,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,qBAAqB,CAAC,CAqBrK;AAgCD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAO,GAClH,8BAA8B,CAiBhC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T4.6 (PRD-06 §6.9, C-39) — `aura3d animation validate-hero <glb>
|
|
3
|
+
* [--profile hero-character|template-hero]`: a lane-owned GLB reader that fills
|
|
4
|
+
* `AnimationAssetInspection` (triangles, skins, joints, clips, baseColor) plus
|
|
5
|
+
* a deterministic clip-map derivation for the profile's required actions.
|
|
6
|
+
* Reuses {@link inspectAnimationClips} (T0.7) — nothing from CLI index.ts.
|
|
7
|
+
*/
|
|
8
|
+
import { validateAnimationAssets, ANIMATION_ASSET_HERO_PROFILES } from "../../animation-asset-validator.js";
|
|
9
|
+
import { inspectAnimationClips, readGlbDocument } from "./inspectAnimationClips.js";
|
|
10
|
+
const MODE_TRIANGLES = 4;
|
|
11
|
+
/** Geometry/texture facts a hero profile needs, straight from the GLB JSON. */
|
|
12
|
+
export function inspectHeroGeometry(json) {
|
|
13
|
+
const accessors = json.accessors ?? [];
|
|
14
|
+
let triangles = 0;
|
|
15
|
+
for (const mesh of json.meshes ?? []) {
|
|
16
|
+
for (const primitive of mesh.primitives ?? []) {
|
|
17
|
+
if ((primitive.mode ?? MODE_TRIANGLES) !== MODE_TRIANGLES)
|
|
18
|
+
continue;
|
|
19
|
+
const indexAccessor = primitive.indices === undefined ? undefined : accessors[primitive.indices];
|
|
20
|
+
const positionAccessor = primitive.attributes?.POSITION === undefined ? undefined : accessors[primitive.attributes.POSITION];
|
|
21
|
+
const count = indexAccessor?.count ?? positionAccessor?.count ?? 0;
|
|
22
|
+
triangles += Math.floor(count / 3);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const skins = json.skins ?? [];
|
|
26
|
+
return {
|
|
27
|
+
triangleCount: triangles,
|
|
28
|
+
skinCount: skins.length,
|
|
29
|
+
jointCount: skins.reduce((max, skin) => Math.max(max, skin.joints?.length ?? 0), 0),
|
|
30
|
+
hasBaseColorTexture: (json.materials ?? []).some((material) => material?.pbrMetallicRoughness?.baseColorTexture !== undefined)
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Deterministic action→clip derivation for `validate-hero` when no `--map`
|
|
35
|
+
* override is given: normalise names (lowercase, non-alphanumeric runs → "-"),
|
|
36
|
+
* then match an action to the first clip whose normalised name contains the
|
|
37
|
+
* action (via its alias list — e.g. "jump-start" matches "JumpStart" and
|
|
38
|
+
* "Jump_Start"). Unmatched actions stay unmapped → HERO_MISSING_CLIP.
|
|
39
|
+
*/
|
|
40
|
+
const ACTION_ALIASES = {
|
|
41
|
+
"jump-start": ["jump-start", "jumpstart", "jump-up", "jumpbegin", "jump-begin"],
|
|
42
|
+
"jump-loop": ["jump-loop", "jumploop", "airborne", "fall-loop", "fallloop", "jump-air", "in-air"],
|
|
43
|
+
land: ["land", "landing"],
|
|
44
|
+
"turn-l": ["turn-l", "turnl", "turn-left", "turnleft", "turn-90l", "turnl90", "turn-left-90"],
|
|
45
|
+
"turn-r": ["turn-r", "turnr", "turn-right", "turnright", "turn-90r", "turnr90", "turn-right-90"],
|
|
46
|
+
"hit-react": ["hit-react", "hitreact", "hit", "flinch", "impact"],
|
|
47
|
+
interact: ["interact", "use", "pickup", "pick-up"],
|
|
48
|
+
attack: ["attack", "punch", "kick", "slash", "swing"],
|
|
49
|
+
idle: ["idle", "tpose", "t-pose", "stance"],
|
|
50
|
+
walk: ["walk", "walkcycle", "walk-cycle"],
|
|
51
|
+
run: ["run", "runcycle", "run-cycle", "jog"],
|
|
52
|
+
sprint: ["sprint", "dash"]
|
|
53
|
+
};
|
|
54
|
+
function normalizeClipName(name) {
|
|
55
|
+
return name
|
|
56
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1-$2")
|
|
57
|
+
.toLowerCase()
|
|
58
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
59
|
+
.replace(/^-+|-+$/g, "");
|
|
60
|
+
}
|
|
61
|
+
export function deriveHeroClipMap(clipNames, requiredActions) {
|
|
62
|
+
const normalized = clipNames.map((name) => ({ raw: name, norm: normalizeClipName(name) }));
|
|
63
|
+
const map = {};
|
|
64
|
+
for (const action of requiredActions) {
|
|
65
|
+
const aliases = (ACTION_ALIASES[action] ?? [action]).map(normalizeClipName);
|
|
66
|
+
const hit = normalized.find((clip) => aliases.some((alias) => clip.norm.includes(alias)));
|
|
67
|
+
if (hit)
|
|
68
|
+
map[action] = hit.raw;
|
|
69
|
+
}
|
|
70
|
+
return map;
|
|
71
|
+
}
|
|
72
|
+
/** Full GLB → validation report for `aura3d animation validate-hero`. */
|
|
73
|
+
export function validateHeroGlb(buffer, options = {}) {
|
|
74
|
+
const { json, bin } = readGlbDocument(buffer);
|
|
75
|
+
const profile = options.profile ?? "hero-character";
|
|
76
|
+
const definition = ANIMATION_ASSET_HERO_PROFILES[profile];
|
|
77
|
+
const clips = inspectAnimationClips(json, bin).map((clip) => ({ name: clip.name, duration: clip.duration }));
|
|
78
|
+
const inspection = {
|
|
79
|
+
...inspectHeroGeometry(json),
|
|
80
|
+
clips
|
|
81
|
+
};
|
|
82
|
+
const clipMap = options.clipMap ?? deriveHeroClipMap(clips.map((c) => c.name), definition.requiredActions);
|
|
83
|
+
return validateAnimationAssets({
|
|
84
|
+
availableClips: clips.map((c) => c.name),
|
|
85
|
+
clipMap,
|
|
86
|
+
requiredActions: definition.requiredActions,
|
|
87
|
+
profile,
|
|
88
|
+
inspection
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=validateHero.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateHero.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd06/validateHero.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AuraCodemod } from "../../contracts/commands.js";
|
|
2
|
+
type CodemodRow = {
|
|
3
|
+
readonly file: string;
|
|
4
|
+
readonly line: number;
|
|
5
|
+
readonly construct: string;
|
|
6
|
+
readonly mapping: "exact" | "approximate" | "none";
|
|
7
|
+
readonly target?: string;
|
|
8
|
+
readonly note?: string;
|
|
9
|
+
};
|
|
10
|
+
/** End index of the balanced (...) region starting at `open` (index of "("). */
|
|
11
|
+
export declare function matchParens(source: string, open: number): number;
|
|
12
|
+
interface ChainMatch {
|
|
13
|
+
readonly start: number;
|
|
14
|
+
readonly end: number;
|
|
15
|
+
readonly primitive: "box" | "sphere";
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Match `primitives.box|sphere(<args>) [.<method>(<args>)]* .runtime(<args>)`
|
|
19
|
+
* with balanced-paren skipping (nested calls inside args are legal).
|
|
20
|
+
*/
|
|
21
|
+
export declare function findPooledPrimitiveChains(source: string): readonly ChainMatch[];
|
|
22
|
+
export declare function vfxPoolsToEffectsTransform(source: string, fileName: string): {
|
|
23
|
+
readonly code: string;
|
|
24
|
+
readonly rows: readonly CodemodRow[];
|
|
25
|
+
};
|
|
26
|
+
export declare function vfxPoolsToEffectsCodemod(): AuraCodemod;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=codemods.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemods.d.ts","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd07/codemods.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAWhE;AAED,UAAU,UAAU;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE,CAqC/E;AAID,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;CACtC,CA8EA;AAED,wBAAgB,wBAAwB,IAAI,WAAW,CAStD"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// PRD-07 P6-T5 — `vfx-pools-to-effects` codemod (C-39). Two jobs:
|
|
2
|
+
// 1. Report E25 route-local spark/burst pools — pooled primitives created
|
|
3
|
+
// once, hidden, then re-driven per frame via handle.setScale(life).
|
|
4
|
+
// 2. Rewrite the simple patterns to the prd07 effects surface:
|
|
5
|
+
// `effects.spawnLoop(x)` → `effects.spawn(x)` and pooled
|
|
6
|
+
// `primitives.box/sphere(...)….runtime(...)` builders →
|
|
7
|
+
// `app.effects.burst(...)` (marked approximate: pool bookkeeping moves to
|
|
8
|
+
// the burst handle, which a human still has to wire in).
|
|
9
|
+
/** End index of the balanced (...) region starting at `open` (index of "("). */
|
|
10
|
+
export function matchParens(source, open) {
|
|
11
|
+
let depth = 0;
|
|
12
|
+
for (let i = open; i < source.length; i += 1) {
|
|
13
|
+
const c = source[i];
|
|
14
|
+
if (c === "(")
|
|
15
|
+
depth += 1;
|
|
16
|
+
else if (c === ")") {
|
|
17
|
+
depth -= 1;
|
|
18
|
+
if (depth === 0)
|
|
19
|
+
return i;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return -1;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Match `primitives.box|sphere(<args>) [.<method>(<args>)]* .runtime(<args>)`
|
|
26
|
+
* with balanced-paren skipping (nested calls inside args are legal).
|
|
27
|
+
*/
|
|
28
|
+
export function findPooledPrimitiveChains(source) {
|
|
29
|
+
const out = [];
|
|
30
|
+
const re = /primitives\.(box|sphere)\s*\(/g;
|
|
31
|
+
let m;
|
|
32
|
+
while ((m = re.exec(source))) {
|
|
33
|
+
const primitive = m[1];
|
|
34
|
+
const open = m.index + m[0].length - 1;
|
|
35
|
+
const close = matchParens(source, open);
|
|
36
|
+
if (close < 0)
|
|
37
|
+
continue;
|
|
38
|
+
let cursor = close + 1;
|
|
39
|
+
let runtimeEnd = -1;
|
|
40
|
+
// Walk `.method(...)` chains; stop at the first `.runtime(` (its end), or
|
|
41
|
+
// at anything that is not a chain link.
|
|
42
|
+
for (;;) {
|
|
43
|
+
const skip = source.slice(cursor);
|
|
44
|
+
const ws = skip.match(/^\s*/);
|
|
45
|
+
cursor += ws?.[0].length ?? 0;
|
|
46
|
+
const link = source.slice(cursor).match(/^\.(\w+)\s*\(/);
|
|
47
|
+
if (!link)
|
|
48
|
+
break;
|
|
49
|
+
const method = link[1];
|
|
50
|
+
const argOpen = cursor + link[0].length - 1;
|
|
51
|
+
const argClose = matchParens(source, argOpen);
|
|
52
|
+
if (argClose < 0)
|
|
53
|
+
break;
|
|
54
|
+
cursor = argClose + 1;
|
|
55
|
+
if (method === "runtime") {
|
|
56
|
+
runtimeEnd = cursor;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (runtimeEnd > 0) {
|
|
61
|
+
out.push({ start: m.index, end: runtimeEnd, primitive });
|
|
62
|
+
re.lastIndex = runtimeEnd;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
re.lastIndex = close + 1;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
const lineOf = (source, index) => source.slice(0, index).split("\n").length;
|
|
71
|
+
export function vfxPoolsToEffectsTransform(source, fileName) {
|
|
72
|
+
const rows = [];
|
|
73
|
+
let code = source;
|
|
74
|
+
// --- E25 report sites -----------------------------------------------------
|
|
75
|
+
const poolRe = /Array\.from\s*\(\s*\{\s*length/g;
|
|
76
|
+
let pm;
|
|
77
|
+
while ((pm = poolRe.exec(source))) {
|
|
78
|
+
// Only report when the Array.from body plausibly builds pooled primitives.
|
|
79
|
+
const window = source.slice(pm.index, pm.index + 2000);
|
|
80
|
+
if (/primitives\.(box|sphere)/.test(window) && /\.runtime\s*\(/.test(window)) {
|
|
81
|
+
rows.push({
|
|
82
|
+
file: fileName,
|
|
83
|
+
line: lineOf(source, pm.index),
|
|
84
|
+
construct: "E25 pooled-primitive array",
|
|
85
|
+
mapping: "approximate",
|
|
86
|
+
target: "app.effects.burst / effects.spawn",
|
|
87
|
+
note: "E25: route-local spark/burst pool; migrate to the prd07 effects API"
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const scaleRe = /\b\w+\.setScale\s*\(/g;
|
|
92
|
+
let sm;
|
|
93
|
+
while ((sm = scaleRe.exec(source))) {
|
|
94
|
+
// Only flag scale calls driven by a life/age term (the E25 signature).
|
|
95
|
+
const window = source.slice(Math.max(0, sm.index - 400), sm.index + 200);
|
|
96
|
+
if (/\b(life|age|SHARD_LIFETIME|LIFETIME)\b/.test(window)) {
|
|
97
|
+
rows.push({
|
|
98
|
+
file: fileName,
|
|
99
|
+
line: lineOf(source, sm.index),
|
|
100
|
+
construct: "E25 life-driven setScale",
|
|
101
|
+
mapping: "none",
|
|
102
|
+
note: "E25: per-frame scale drive on a pooled primitive; burst handles this internally"
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// --- Rewrites -------------------------------------------------------------
|
|
107
|
+
// effects.spawnLoop(x) → effects.spawn(x) — loop lifetime moves to the handle.
|
|
108
|
+
const spawnLoopRe = /effects\.spawnLoop\s*\(\s*([^,)]*)/g;
|
|
109
|
+
let lm;
|
|
110
|
+
while ((lm = spawnLoopRe.exec(code))) {
|
|
111
|
+
rows.push({
|
|
112
|
+
file: fileName,
|
|
113
|
+
line: lineOf(code, lm.index),
|
|
114
|
+
construct: lm[0],
|
|
115
|
+
mapping: "approximate",
|
|
116
|
+
target: `effects.spawn(${lm[1].trim()}`,
|
|
117
|
+
note: "loop lifetime: move to spawned-instance handle.stop()"
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
code = code.replace(/effects\.spawnLoop\s*\(/g, "effects.spawn(");
|
|
121
|
+
// Pooled primitives.box/sphere chains ending in .runtime(...) → burst stubs.
|
|
122
|
+
// Approximate: the burst replaces the pool per-burst, not the pooled node.
|
|
123
|
+
const chains = findPooledPrimitiveChains(code);
|
|
124
|
+
if (chains.length > 0) {
|
|
125
|
+
let rewritten = "";
|
|
126
|
+
let cursor = 0;
|
|
127
|
+
for (const chain of chains) {
|
|
128
|
+
rewritten += code.slice(cursor, chain.start);
|
|
129
|
+
rewritten += 'app.effects.burst("explosion-small", [0, 0, 0], { count: 8 })';
|
|
130
|
+
rows.push({
|
|
131
|
+
file: fileName,
|
|
132
|
+
line: lineOf(code, chain.start),
|
|
133
|
+
construct: `primitives.${chain.primitive}(…).runtime(…)`,
|
|
134
|
+
mapping: "approximate",
|
|
135
|
+
target: 'app.effects.burst("explosion-small", …)',
|
|
136
|
+
note: "E25 rewrite: pooled primitive → effects.burst; pool bookkeeping moves to the burst handle"
|
|
137
|
+
});
|
|
138
|
+
cursor = chain.end;
|
|
139
|
+
}
|
|
140
|
+
rewritten += code.slice(cursor);
|
|
141
|
+
code = rewritten;
|
|
142
|
+
}
|
|
143
|
+
rows.sort((a, b) => a.line - b.line);
|
|
144
|
+
return { code, rows };
|
|
145
|
+
}
|
|
146
|
+
export function vfxPoolsToEffectsCodemod() {
|
|
147
|
+
return {
|
|
148
|
+
name: "vfx-pools-to-effects",
|
|
149
|
+
owner: "prd07",
|
|
150
|
+
description: "Report E25 route-local spark/burst pools and rewrite the simple patterns: " +
|
|
151
|
+
"effects.spawnLoop → effects.spawn; pooled primitives.box/sphere + .runtime → app.effects.burst",
|
|
152
|
+
transform: vfxPoolsToEffectsTransform
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=codemods.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codemods.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd07/codemods.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd07/index.ts"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,IAAI,IAAI,CA8HvC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// PRD-07 P1-T19 — lane CLI commands and codemods (C-39).
|
|
2
|
+
// P6-T5: the codemod itself lives in ./codemods.ts (E25 report + rewrites).
|
|
3
|
+
import { registerCliCommand, registerCodemod } from "../../contracts/commands.js";
|
|
4
|
+
import { vfxPoolsToEffectsCodemod } from "./codemods.js";
|
|
5
|
+
export function registerPrd07Cli() {
|
|
6
|
+
try {
|
|
7
|
+
registerCliCommand({
|
|
8
|
+
name: "vfx validate-atlas",
|
|
9
|
+
owner: "prd07",
|
|
10
|
+
summary: "Check a flipbook atlas JSON against the frame-grid contract",
|
|
11
|
+
usage: "aura3d vfx validate-atlas <atlas.json>",
|
|
12
|
+
async run(argv, io) {
|
|
13
|
+
const file = argv[0];
|
|
14
|
+
if (!file) {
|
|
15
|
+
io.stderr("usage: aura3d vfx validate-atlas <atlas.json|manifest.json>");
|
|
16
|
+
return 2;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const { readFile } = await import("node:fs/promises");
|
|
20
|
+
const path = await import("node:path");
|
|
21
|
+
const zlib = await import("node:zlib");
|
|
22
|
+
const raw = await readFile(`${io.cwd}/${file}`, "utf8");
|
|
23
|
+
const atlas = JSON.parse(raw);
|
|
24
|
+
const errors = [];
|
|
25
|
+
// Flat per-sequence JSON (legacy path): grid checks only.
|
|
26
|
+
if (!atlas.pages) {
|
|
27
|
+
if (!Number.isInteger(atlas.columns) || (atlas.columns ?? 0) < 1)
|
|
28
|
+
errors.push("columns must be an integer >= 1");
|
|
29
|
+
if (!Number.isInteger(atlas.rows) || (atlas.rows ?? 0) < 1)
|
|
30
|
+
errors.push("rows must be an integer >= 1");
|
|
31
|
+
if (atlas.frames !== undefined && atlas.frames > (atlas.columns ?? 0) * (atlas.rows ?? 0))
|
|
32
|
+
errors.push("frames exceeds columns*rows");
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// AuraVfxAtlasManifest v1: pages premultiplied + POT, rects inside
|
|
36
|
+
// page, ≥1px cell gutter, integral frames.
|
|
37
|
+
const dir = path.dirname(path.resolve(io.cwd, file));
|
|
38
|
+
const pageById = new Map((atlas.pages ?? []).map((p) => [p.id, p]));
|
|
39
|
+
const decodePng = (buf) => {
|
|
40
|
+
const width = buf.readUInt32BE(16);
|
|
41
|
+
const height = buf.readUInt32BE(20);
|
|
42
|
+
let offset = 8;
|
|
43
|
+
const idat = [];
|
|
44
|
+
while (offset < buf.length) {
|
|
45
|
+
const len = buf.readUInt32BE(offset);
|
|
46
|
+
if (buf.toString("ascii", offset + 4, offset + 8) === "IDAT")
|
|
47
|
+
idat.push(buf.subarray(offset + 8, offset + 8 + len));
|
|
48
|
+
offset += 12 + len;
|
|
49
|
+
}
|
|
50
|
+
const rawScan = zlib.inflateSync(Buffer.concat(idat));
|
|
51
|
+
const stride = width * 4;
|
|
52
|
+
const rgba = Buffer.alloc(stride * height);
|
|
53
|
+
for (let y = 0; y < height; y++) {
|
|
54
|
+
if (rawScan[y * (stride + 1)] !== 0)
|
|
55
|
+
throw new Error("unsupported PNG filter (bake writes filter-0 rows)");
|
|
56
|
+
rawScan.copy(rgba, y * stride, y * (stride + 1) + 1, (y + 1) * (stride + 1));
|
|
57
|
+
}
|
|
58
|
+
return { width, height, rgba };
|
|
59
|
+
};
|
|
60
|
+
for (const page of atlas.pages ?? []) {
|
|
61
|
+
const uriPng = page.uri.replace(/\.ktx2$/, ".png");
|
|
62
|
+
if (!page.uri.endsWith(".ktx2") && !page.uri.endsWith(".png"))
|
|
63
|
+
errors.push(`${page.id}: uri must be .png or .ktx2`);
|
|
64
|
+
const pngPath = path.join(dir, page.uri.endsWith(".ktx2") ? uriPng : page.uri);
|
|
65
|
+
let decoded;
|
|
66
|
+
try {
|
|
67
|
+
decoded = decodePng(await readFile(pngPath));
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
errors.push(`${page.id}: cannot decode ${pngPath} (${error.message})`);
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const pot = (n) => n > 0 && (n & (n - 1)) === 0;
|
|
74
|
+
if (!pot(decoded.width) || !pot(decoded.height))
|
|
75
|
+
errors.push(`${page.id}: ${decoded.width}×${decoded.height} not power-of-two`);
|
|
76
|
+
if (decoded.width !== page.size || decoded.height !== page.size)
|
|
77
|
+
errors.push(`${page.id}: pixel size ${decoded.width}×${decoded.height} ≠ manifest size ${page.size}`);
|
|
78
|
+
let over = 0;
|
|
79
|
+
for (let i = 0; i < decoded.rgba.length; i += 4) {
|
|
80
|
+
const a = decoded.rgba[i + 3];
|
|
81
|
+
over = Math.max(over, decoded.rgba[i] - a, decoded.rgba[i + 1] - a, decoded.rgba[i + 2] - a);
|
|
82
|
+
}
|
|
83
|
+
if (over > 0)
|
|
84
|
+
errors.push(`${page.id}: not premultiplied (rgb exceeds alpha by ${over})`);
|
|
85
|
+
}
|
|
86
|
+
const rects = [];
|
|
87
|
+
for (const [name, seq] of Object.entries(atlas.sequences ?? {})) {
|
|
88
|
+
const page = pageById.get(seq.page);
|
|
89
|
+
if (!page) {
|
|
90
|
+
errors.push(`${name}: unknown page ${seq.page}`);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const [x, y, w, h] = seq.rect;
|
|
94
|
+
if (x < 0 || y < 0 || w <= 0 || h <= 0 || x + w > page.size || y + h > page.size)
|
|
95
|
+
errors.push(`${name}: rect outside page ${seq.page}`);
|
|
96
|
+
if (!Number.isInteger(w / seq.columns) || !Number.isInteger(h / seq.rows))
|
|
97
|
+
errors.push(`${name}: non-integral cell size`);
|
|
98
|
+
if (seq.frames > seq.columns * seq.rows)
|
|
99
|
+
errors.push(`${name}: frames exceeds grid`);
|
|
100
|
+
rects.push({ name, x0: x, y0: y, x1: x + w, y1: y + h });
|
|
101
|
+
}
|
|
102
|
+
for (let i = 0; i < rects.length; i++) {
|
|
103
|
+
for (let j = i + 1; j < rects.length; j++) {
|
|
104
|
+
const a = rects[i], b = rects[j];
|
|
105
|
+
const overlapX = a.x0 < b.x1 && b.x0 < a.x1;
|
|
106
|
+
const overlapY = a.y0 < b.y1 && b.y0 < a.y1;
|
|
107
|
+
if (overlapX && overlapY) {
|
|
108
|
+
errors.push(`${a.name}/${b.name}: rects overlap`);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const gap = overlapX
|
|
112
|
+
? Math.max(b.y0 - a.y1, a.y0 - b.y1)
|
|
113
|
+
: overlapY
|
|
114
|
+
? Math.max(b.x0 - a.x1, a.x0 - b.x1)
|
|
115
|
+
: Math.min(Math.max(b.x0 - a.x1, a.x0 - b.x1), Math.max(b.y0 - a.y1, a.y0 - b.y1));
|
|
116
|
+
if (gap < 1)
|
|
117
|
+
errors.push(`${a.name}/${b.name}: gutter ${gap}px < 1px`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (errors.length) {
|
|
122
|
+
for (const e of errors)
|
|
123
|
+
io.stderr(`invalid atlas: ${e}`);
|
|
124
|
+
return 1;
|
|
125
|
+
}
|
|
126
|
+
if (!atlas.pages)
|
|
127
|
+
io.stdout(`atlas ok: ${atlas.columns}x${atlas.rows} (${atlas.frames ?? atlas.columns * atlas.rows} frames)`);
|
|
128
|
+
else
|
|
129
|
+
io.stdout(`manifest ok: ${atlas.pages.length} page(s), ${Object.keys(atlas.sequences ?? {}).length} sequences`);
|
|
130
|
+
return 0;
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
io.stderr(`atlas read failed: ${error.message}`);
|
|
134
|
+
return 1;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
if (!(error instanceof Error && error.message.startsWith("CLI_COMMAND_DUPLICATE")))
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
registerCodemod(vfxPoolsToEffectsCodemod());
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
if (!(error instanceof Error && error.message.startsWith("CODEMOD_DUPLICATE")))
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd07/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const feelLintRule: {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
readonly owner: string;
|
|
4
|
+
check(file: {
|
|
5
|
+
readonly path: string;
|
|
6
|
+
readonly text: string;
|
|
7
|
+
}): readonly {
|
|
8
|
+
readonly line: number;
|
|
9
|
+
readonly severity: "error" | "warning";
|
|
10
|
+
readonly message: string;
|
|
11
|
+
}[];
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=feelLint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feelLint.d.ts","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd08/feelLint.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY,EAAE;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAuB9J,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* F-7a C-39 doctor rule `feel/evidence-only` — wraps the lane-08 source scan
|
|
3
|
+
* (`agent-api/feel/lint/feelSourceScan.ts`) plus the capture-gate and
|
|
4
|
+
* Math.random heuristics from the original rule. Registered from
|
|
5
|
+
* `commands/prd08/index.ts`; hosted by `aura3d doctor --look` (PRD 13).
|
|
6
|
+
*/
|
|
7
|
+
import { scanFeelSource } from "../../../../engine/dist/agent-api/feel/lint/feelSourceScan.js";
|
|
8
|
+
export const feelLintRule = {
|
|
9
|
+
code: "feel/evidence-only",
|
|
10
|
+
owner: "prd08",
|
|
11
|
+
check(file) {
|
|
12
|
+
const rows = [...scanFeelSource(file.text)];
|
|
13
|
+
const src = file.text;
|
|
14
|
+
const gated = /(capture|evidence|VISUAL_CAPTURE|screenshot|diagnostic)/i;
|
|
15
|
+
let m;
|
|
16
|
+
const lineOf = (i) => src.slice(0, i).split("\n").length;
|
|
17
|
+
const gateRe = /if\s*\(([^)]{0,160})\)\s*\{[^}]{0,900}?\b(shake|punch|fovKick|trauma|hitStop)\b/g;
|
|
18
|
+
while ((m = gateRe.exec(src))) {
|
|
19
|
+
if (!gated.test(m[1]))
|
|
20
|
+
continue;
|
|
21
|
+
rows.push({ line: lineOf(m.index), severity: "warning", message: "feel call gated behind a capture/evidence branch — feel must reach pixels every frame, not only during captures (PRD-08 §9.5)" });
|
|
22
|
+
}
|
|
23
|
+
if (/\b(shake|trauma|punch|juice)\b/.test(src)) {
|
|
24
|
+
const rndRe = /Math\.random\(\)/g;
|
|
25
|
+
while ((m = rndRe.exec(src))) {
|
|
26
|
+
rows.push({ line: lineOf(m.index), severity: "error", message: "Math.random() in a file applying camera feel — use seeded feel/Noise (determinism, repo rule)" });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return rows;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=feelLint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feelLint.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd08/feelLint.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AAE9F,MAAM,CAAC,MAAM,YAAY,GAIrB;IACF,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,OAAO;IACd,KAAK,CAAC,IAAsD;QAC1D,MAAM,IAAI,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,MAAM,KAAK,GAAG,0DAA0D,CAAC;QACzE,IAAI,CAAyB,CAAC;QAC9B,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,MAAM,GAAG,kFAAkF,CAAC;QAClG,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;gBAAE,SAAS;YACjC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,+HAA+H,EAAE,CAAC,CAAC;QACtM,CAAC;QACD,IAAI,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,mBAAmB,CAAC;YAClC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,+FAA+F,EAAE,CAAC,CAAC;YACpK,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd08/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C-39 lane command registrations — prd08.
|
|
3
|
+
*
|
|
4
|
+
* Registers the `camera-cast` codemod and the `feel/evidence-only` doctor rule
|
|
5
|
+
* (CONTRACTS.md C-39; implementations live in tools/camera-cast-codemod/).
|
|
6
|
+
* and `prd08 motion-report` (S9: renders the motion-scene capture report).
|
|
7
|
+
*/
|
|
8
|
+
import { registerCliCommand, registerCodemod, registerDoctorRule } from "../../contracts/commands.js";
|
|
9
|
+
import { cameraCastCodemod } from "../../../../../tools/camera-cast-codemod/index.js";
|
|
10
|
+
import { feelLintRule } from "./feelLint.js";
|
|
11
|
+
import { motionReportCommand } from "./motionReport.js";
|
|
12
|
+
registerCodemod(cameraCastCodemod);
|
|
13
|
+
registerDoctorRule(feelLintRule);
|
|
14
|
+
registerCliCommand(motionReportCommand);
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd08/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,eAAe,CAAC,iBAAiB,CAAC,CAAC;AACnC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACjC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AAExC,OAAO,EAAE,CAAC"}
|