@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,94 @@
|
|
|
1
|
+
import type { AuraCliCommand } from "../../contracts/commands.js";
|
|
2
|
+
export declare const MOTION_SCENE_IDS: readonly ["prd08-motion-chase-speed", "prd08-motion-impact-shake", "prd08-motion-flight-bank", "prd08-motion-collision", "prd08-motion-rail-shot", "prd08-motion-pacing-120"];
|
|
3
|
+
interface MotionMetricsShape {
|
|
4
|
+
readonly samples: number;
|
|
5
|
+
readonly maxEyeStep: number;
|
|
6
|
+
readonly meanEyeSpeed: number;
|
|
7
|
+
readonly hitchRatio: number;
|
|
8
|
+
readonly fovRange: readonly [number, number];
|
|
9
|
+
readonly rollRangeDeg: readonly [number, number];
|
|
10
|
+
readonly eyeToSubject: {
|
|
11
|
+
readonly min: number;
|
|
12
|
+
readonly mean: number;
|
|
13
|
+
readonly max: number;
|
|
14
|
+
};
|
|
15
|
+
readonly insideColliderSteps: number;
|
|
16
|
+
readonly energyPeak: number;
|
|
17
|
+
readonly energyEnd: number;
|
|
18
|
+
readonly subjectStepCv: number;
|
|
19
|
+
}
|
|
20
|
+
interface MotionExtraShape {
|
|
21
|
+
readonly driver: string;
|
|
22
|
+
readonly rig: string;
|
|
23
|
+
readonly cameraLive?: boolean;
|
|
24
|
+
readonly dt: number;
|
|
25
|
+
readonly metrics: MotionMetricsShape;
|
|
26
|
+
readonly strip?: {
|
|
27
|
+
readonly frames: number;
|
|
28
|
+
readonly lumaVariance: readonly number[];
|
|
29
|
+
readonly dataUrl: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
interface EngineResultShape {
|
|
33
|
+
readonly status: string;
|
|
34
|
+
readonly error?: string;
|
|
35
|
+
readonly screenshot?: string | null;
|
|
36
|
+
readonly payload?: {
|
|
37
|
+
readonly engineVersion?: string;
|
|
38
|
+
readonly qrFlags?: readonly string[];
|
|
39
|
+
readonly capabilityLog?: readonly {
|
|
40
|
+
readonly feature: string;
|
|
41
|
+
readonly status: string;
|
|
42
|
+
readonly detail: string;
|
|
43
|
+
}[];
|
|
44
|
+
readonly extra?: {
|
|
45
|
+
readonly motion?: MotionExtraShape;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
interface CaptureReportShape {
|
|
50
|
+
readonly environment?: {
|
|
51
|
+
readonly gpu?: {
|
|
52
|
+
readonly renderer?: string;
|
|
53
|
+
} | null;
|
|
54
|
+
readonly githubRunId?: string | null;
|
|
55
|
+
readonly browserVersion?: string;
|
|
56
|
+
};
|
|
57
|
+
readonly scenes?: readonly {
|
|
58
|
+
readonly scene: string;
|
|
59
|
+
readonly engines: Readonly<Record<string, EngineResultShape>>;
|
|
60
|
+
}[];
|
|
61
|
+
}
|
|
62
|
+
export interface MotionCheck {
|
|
63
|
+
readonly name: string;
|
|
64
|
+
readonly pass: boolean;
|
|
65
|
+
readonly detail: string;
|
|
66
|
+
}
|
|
67
|
+
export interface MotionEngineRow {
|
|
68
|
+
readonly scene: string;
|
|
69
|
+
readonly engine: string;
|
|
70
|
+
readonly status: string;
|
|
71
|
+
readonly rig: string;
|
|
72
|
+
readonly cameraLive: boolean | null;
|
|
73
|
+
readonly metrics: MotionMetricsShape | null;
|
|
74
|
+
readonly stripFrames: number;
|
|
75
|
+
readonly blankTiles: number;
|
|
76
|
+
readonly checks: readonly MotionCheck[];
|
|
77
|
+
readonly gaps: readonly string[];
|
|
78
|
+
readonly stripDataUrl?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface MotionReportResult {
|
|
81
|
+
readonly ok: boolean;
|
|
82
|
+
readonly failures: readonly string[];
|
|
83
|
+
readonly rows: readonly MotionEngineRow[];
|
|
84
|
+
readonly gpu: string;
|
|
85
|
+
readonly runId: string | null;
|
|
86
|
+
}
|
|
87
|
+
export declare function buildMotionReport(report: CaptureReportShape, opts?: {
|
|
88
|
+
readonly scenes?: readonly string[];
|
|
89
|
+
readonly engines?: readonly string[];
|
|
90
|
+
}): MotionReportResult;
|
|
91
|
+
export declare function renderMotionMarkdown(result: MotionReportResult, stripPaths?: Readonly<Record<string, string>>): string;
|
|
92
|
+
export declare const motionReportCommand: AuraCliCommand;
|
|
93
|
+
export {};
|
|
94
|
+
//# sourceMappingURL=motionReport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motionReport.d.ts","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd08/motionReport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C-39 `aura3d prd08 motion-report` (PRD-08 S9). Reads the capture
|
|
3
|
+
* `report.json` written by `benchmarks/quality-rebuild/capture.mjs` for the six
|
|
4
|
+
* `prd08-motion-*` scenes and writes:
|
|
5
|
+
*
|
|
6
|
+
* <out>/motion-report.md per-scene, per-engine trajectory metrics + strips
|
|
7
|
+
* <out>/motion-report.json the same summary, machine-readable
|
|
8
|
+
* <out>/strips/<scene>.<engine>.strip.png 12-tile strips from extra.motion
|
|
9
|
+
*
|
|
10
|
+
* Fails closed (exit 1) when the evidence is incomplete: report missing, an
|
|
11
|
+
* expected scene or engine absent, a capture not `ready`, `extra.motion`
|
|
12
|
+
* missing, fewer strip tiles than the spec asks for, or a blank strip tile.
|
|
13
|
+
* Criterion checks (no inside-geometry frames, hit energy, FOV widening,
|
|
14
|
+
* interpolated pacing) are reported per engine for the review rubric; they are
|
|
15
|
+
* not a gate here — the motion review (review-rubric.md) judges them.
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
18
|
+
import { dirname, join, relative, resolve } from "node:path";
|
|
19
|
+
export const MOTION_SCENE_IDS = [
|
|
20
|
+
"prd08-motion-chase-speed",
|
|
21
|
+
"prd08-motion-impact-shake",
|
|
22
|
+
"prd08-motion-flight-bank",
|
|
23
|
+
"prd08-motion-collision",
|
|
24
|
+
"prd08-motion-rail-shot",
|
|
25
|
+
"prd08-motion-pacing-120"
|
|
26
|
+
];
|
|
27
|
+
const DEFAULT_REPORT = "benchmarks/quality-rebuild/out/prd08-motion/report.json";
|
|
28
|
+
const EXPECTED_STRIP_FRAMES = 12;
|
|
29
|
+
const BLANK_VARIANCE = 2;
|
|
30
|
+
function criterionChecks(scene, m) {
|
|
31
|
+
const checks = [];
|
|
32
|
+
if (scene.endsWith("chase-speed")) {
|
|
33
|
+
checks.push({ name: "speed FOV widens", pass: m.fovRange[1] - m.fovRange[0] > 1, detail: `fov ${m.fovRange[0]}–${m.fovRange[1]}°` });
|
|
34
|
+
checks.push({ name: "no lag oscillation (hitch < 1)", pass: m.hitchRatio < 1, detail: `hitch ${m.hitchRatio}` });
|
|
35
|
+
}
|
|
36
|
+
else if (scene.endsWith("impact-shake")) {
|
|
37
|
+
checks.push({ name: "hit reaches the camera", pass: m.energyPeak > 0.05, detail: `energy peak ${m.energyPeak}` });
|
|
38
|
+
checks.push({ name: "shake decays", pass: m.energyEnd < m.energyPeak, detail: `end ${m.energyEnd} < peak ${m.energyPeak}` });
|
|
39
|
+
}
|
|
40
|
+
else if (scene.endsWith("flight-bank")) {
|
|
41
|
+
checks.push({ name: "camera banks", pass: Math.max(Math.abs(m.rollRangeDeg[0]), Math.abs(m.rollRangeDeg[1])) > 0.5, detail: `roll ${m.rollRangeDeg[0]}…${m.rollRangeDeg[1]}°` });
|
|
42
|
+
}
|
|
43
|
+
else if (scene.endsWith("collision")) {
|
|
44
|
+
checks.push({ name: "no inside-geometry frames", pass: m.insideColliderSteps === 0, detail: `${m.insideColliderSteps} steps inside a column` });
|
|
45
|
+
checks.push({ name: "probe pulled the eye in", pass: m.eyeToSubject.min < m.eyeToSubject.max - 0.25, detail: `eye→subject ${m.eyeToSubject.min}–${m.eyeToSubject.max}` });
|
|
46
|
+
}
|
|
47
|
+
else if (scene.endsWith("rail-shot")) {
|
|
48
|
+
checks.push({ name: "no knot hitch (hitch < 0.25)", pass: m.hitchRatio < 0.25, detail: `hitch ${m.hitchRatio}` });
|
|
49
|
+
}
|
|
50
|
+
else if (scene.endsWith("pacing-120")) {
|
|
51
|
+
checks.push({ name: "120 Hz presents evenly spaced (step CV < 0.35)", pass: m.subjectStepCv < 0.35, detail: `subject step CV ${m.subjectStepCv}` });
|
|
52
|
+
}
|
|
53
|
+
return checks;
|
|
54
|
+
}
|
|
55
|
+
export function buildMotionReport(report, opts = {}) {
|
|
56
|
+
const scenes = opts.scenes ?? MOTION_SCENE_IDS;
|
|
57
|
+
const engines = opts.engines ?? ["aura3d", "three"];
|
|
58
|
+
const failures = [];
|
|
59
|
+
const rows = [];
|
|
60
|
+
for (const scene of scenes) {
|
|
61
|
+
const entry = report.scenes?.find((candidate) => candidate.scene === scene);
|
|
62
|
+
if (!entry) {
|
|
63
|
+
failures.push(`${scene}: not in report.json`);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
for (const engine of engines) {
|
|
67
|
+
const result = entry.engines[engine];
|
|
68
|
+
if (!result) {
|
|
69
|
+
failures.push(`${scene}/${engine}: no capture`);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const motion = result.payload?.extra?.motion;
|
|
73
|
+
const variances = motion?.strip?.lumaVariance ?? [];
|
|
74
|
+
const blankTiles = variances.filter((v) => v <= BLANK_VARIANCE).length;
|
|
75
|
+
const gaps = (result.payload?.capabilityLog ?? []).filter((c) => c.status === "missing" || c.status === "partial").map((c) => `${c.feature} (${c.status}): ${c.detail}`);
|
|
76
|
+
if (result.status !== "ready")
|
|
77
|
+
failures.push(`${scene}/${engine}: status ${result.status}${result.error ? ` — ${result.error.split("\n")[0]}` : ""}`);
|
|
78
|
+
if (!motion)
|
|
79
|
+
failures.push(`${scene}/${engine}: payload.extra.motion missing`);
|
|
80
|
+
else {
|
|
81
|
+
if ((motion.strip?.frames ?? 0) < EXPECTED_STRIP_FRAMES)
|
|
82
|
+
failures.push(`${scene}/${engine}: strip has ${motion.strip?.frames ?? 0}/${EXPECTED_STRIP_FRAMES} tiles`);
|
|
83
|
+
if (blankTiles > 0)
|
|
84
|
+
failures.push(`${scene}/${engine}: ${blankTiles} blank strip tile(s)`);
|
|
85
|
+
if (engine === "aura3d" && motion.cameraLive !== true)
|
|
86
|
+
failures.push(`${scene}/${engine}: app.camera is the stub — capture without --flags camera?`);
|
|
87
|
+
}
|
|
88
|
+
rows.push({
|
|
89
|
+
scene,
|
|
90
|
+
engine,
|
|
91
|
+
status: result.status,
|
|
92
|
+
rig: motion?.rig ?? "-",
|
|
93
|
+
cameraLive: motion?.cameraLive ?? null,
|
|
94
|
+
metrics: motion?.metrics ?? null,
|
|
95
|
+
stripFrames: motion?.strip?.frames ?? 0,
|
|
96
|
+
blankTiles,
|
|
97
|
+
checks: motion ? criterionChecks(scene, motion.metrics) : [],
|
|
98
|
+
gaps,
|
|
99
|
+
...(motion?.strip?.dataUrl ? { stripDataUrl: motion.strip.dataUrl } : {})
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return { ok: failures.length === 0, failures, rows, gpu: String(report.environment?.gpu?.renderer ?? "unknown"), runId: report.environment?.githubRunId ?? null };
|
|
104
|
+
}
|
|
105
|
+
const fmt = (x) => (x === undefined ? "-" : String(x));
|
|
106
|
+
export function renderMotionMarkdown(result, stripPaths = {}) {
|
|
107
|
+
const lines = [];
|
|
108
|
+
lines.push("# PRD-08 S9 motion report");
|
|
109
|
+
lines.push("");
|
|
110
|
+
lines.push(`- GPU: ${result.gpu}`);
|
|
111
|
+
lines.push(`- GitHub run: ${result.runId ?? "local"}`);
|
|
112
|
+
lines.push(`- Evidence: ${result.ok ? "complete" : "INCOMPLETE"} (${result.rows.length} engine captures)`);
|
|
113
|
+
lines.push("- three.js r0.185.1 rows are C-30 `admittedAsReference` behavioural references on identical scripted inputs — no parity claim.");
|
|
114
|
+
lines.push("- Criterion checks below are review aids for `benchmarks/quality-rebuild/motion/review-rubric.md`, not gates.");
|
|
115
|
+
lines.push("");
|
|
116
|
+
if (result.failures.length > 0) {
|
|
117
|
+
lines.push("## Evidence failures");
|
|
118
|
+
lines.push("");
|
|
119
|
+
for (const failure of result.failures)
|
|
120
|
+
lines.push(`- ${failure}`);
|
|
121
|
+
lines.push("");
|
|
122
|
+
}
|
|
123
|
+
lines.push("## Summary");
|
|
124
|
+
lines.push("");
|
|
125
|
+
lines.push("| scene | engine | status | rig | strip | max eye step | mean eye speed | hitch | fov range | roll range ° | eye→subject min/mean/max | inside steps | energy peak/end | subject step CV |");
|
|
126
|
+
lines.push("|---|---|---|---|---|---|---|---|---|---|---|---|---|---|");
|
|
127
|
+
for (const row of result.rows) {
|
|
128
|
+
const m = row.metrics;
|
|
129
|
+
lines.push(`| ${row.scene} | ${row.engine} | ${row.status} | ${row.rig} | ${row.stripFrames} (${row.blankTiles} blank) | ${fmt(m?.maxEyeStep)} | ${fmt(m?.meanEyeSpeed)} | ${fmt(m?.hitchRatio)} | ${m ? `${m.fovRange[0]}–${m.fovRange[1]}` : "-"} | ${m ? `${m.rollRangeDeg[0]}…${m.rollRangeDeg[1]}` : "-"} | ${m ? `${m.eyeToSubject.min}/${m.eyeToSubject.mean}/${m.eyeToSubject.max}` : "-"} | ${fmt(m?.insideColliderSteps)} | ${m ? `${m.energyPeak}/${m.energyEnd}` : "-"} | ${fmt(m?.subjectStepCv)} |`);
|
|
130
|
+
}
|
|
131
|
+
lines.push("");
|
|
132
|
+
for (const scene of [...new Set(result.rows.map((row) => row.scene))]) {
|
|
133
|
+
lines.push(`## ${scene}`);
|
|
134
|
+
lines.push("");
|
|
135
|
+
for (const row of result.rows.filter((candidate) => candidate.scene === scene)) {
|
|
136
|
+
lines.push(`### ${row.engine}`);
|
|
137
|
+
lines.push("");
|
|
138
|
+
const strip = stripPaths[`${row.scene}.${row.engine}`];
|
|
139
|
+
if (strip)
|
|
140
|
+
lines.push(``, "");
|
|
141
|
+
for (const check of row.checks)
|
|
142
|
+
lines.push(`- [${check.pass ? "x" : " "}] ${check.name} — ${check.detail}`);
|
|
143
|
+
for (const gap of row.gaps)
|
|
144
|
+
lines.push(`- gap: ${gap}`);
|
|
145
|
+
lines.push("");
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return lines.join("\n");
|
|
149
|
+
}
|
|
150
|
+
function readFlag(argv, name) {
|
|
151
|
+
const index = argv.indexOf(name);
|
|
152
|
+
const value = index >= 0 ? argv[index + 1] : undefined;
|
|
153
|
+
return value && !value.startsWith("--") ? value : undefined;
|
|
154
|
+
}
|
|
155
|
+
export const motionReportCommand = {
|
|
156
|
+
name: "prd08 motion-report",
|
|
157
|
+
owner: "prd08",
|
|
158
|
+
summary: "Render the PRD-08 S9 motion-scene capture report (strips + trajectory metrics) as markdown; fails on incomplete evidence.",
|
|
159
|
+
usage: "aura3d prd08 motion-report [--report <report.json>] [--out <dir>] [--scenes <id,id>] [--engines aura3d,three]",
|
|
160
|
+
async run(argv, io) {
|
|
161
|
+
const reportPath = resolve(io.cwd, readFlag(argv, "--report") ?? DEFAULT_REPORT);
|
|
162
|
+
const outDir = resolve(io.cwd, readFlag(argv, "--out") ?? join(dirname(reportPath), "motion-report"));
|
|
163
|
+
if (!existsSync(reportPath)) {
|
|
164
|
+
io.stderr(`prd08 motion-report: ${reportPath} not found (run capture.mjs for the prd08-motion-* scenes first)`);
|
|
165
|
+
return 1;
|
|
166
|
+
}
|
|
167
|
+
let report;
|
|
168
|
+
try {
|
|
169
|
+
report = JSON.parse(readFileSync(reportPath, "utf8"));
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
io.stderr(`prd08 motion-report: cannot parse ${reportPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
173
|
+
return 1;
|
|
174
|
+
}
|
|
175
|
+
const scenes = readFlag(argv, "--scenes")?.split(",").filter(Boolean);
|
|
176
|
+
const engines = readFlag(argv, "--engines")?.split(",").filter(Boolean);
|
|
177
|
+
const result = buildMotionReport(report, { ...(scenes ? { scenes } : {}), ...(engines ? { engines } : {}) });
|
|
178
|
+
mkdirSync(join(outDir, "strips"), { recursive: true });
|
|
179
|
+
const stripPaths = {};
|
|
180
|
+
for (const row of result.rows) {
|
|
181
|
+
const match = row.stripDataUrl?.match(/^data:image\/png;base64,(.+)$/);
|
|
182
|
+
if (!match)
|
|
183
|
+
continue;
|
|
184
|
+
const file = join(outDir, "strips", `${row.scene}.${row.engine}.strip.png`);
|
|
185
|
+
writeFileSync(file, Buffer.from(match[1], "base64"));
|
|
186
|
+
stripPaths[`${row.scene}.${row.engine}`] = relative(outDir, file);
|
|
187
|
+
}
|
|
188
|
+
writeFileSync(join(outDir, "motion-report.md"), renderMotionMarkdown(result, stripPaths));
|
|
189
|
+
const summary = { ...result, rows: result.rows.map(({ stripDataUrl: _strip, ...rest }) => rest) };
|
|
190
|
+
writeFileSync(join(outDir, "motion-report.json"), JSON.stringify(summary, null, 2));
|
|
191
|
+
io.stdout(`prd08 motion-report: ${result.rows.length} captures → ${join(outDir, "motion-report.md")}`);
|
|
192
|
+
for (const failure of result.failures)
|
|
193
|
+
io.stderr(`prd08 motion-report: ${failure}`);
|
|
194
|
+
return result.ok ? 0 : 1;
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=motionReport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motionReport.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd08/motionReport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codemod `prd09-audio-wrapper` (PRD-09 §10 step 5): flags raw DOM/WebAudio
|
|
3
|
+
* entry points for replacement with `game.audio`/`createGameAudio`; rewrites
|
|
4
|
+
* the mechanical cases (`new Audio(`, `document.createElement("audio")`,
|
|
5
|
+
* `new AudioContext(`) and reports the rest.
|
|
6
|
+
*/
|
|
7
|
+
import type { AuraCodemod } from "../../../contracts/commands.js";
|
|
8
|
+
export declare const audioWrapperCodemod: AuraCodemod;
|
|
9
|
+
//# sourceMappingURL=audio-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-wrapper.d.ts","sourceRoot":"","sources":["../../../../../../../packages/aura3d-cli/src/commands/prd09/codemods/audio-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,eAAO,MAAM,mBAAmB,EAAE,WAyBjC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export const audioWrapperCodemod = {
|
|
2
|
+
name: "prd09-audio-wrapper",
|
|
3
|
+
owner: "prd09",
|
|
4
|
+
description: "Route raw audio entry points through the game audio surface (PRD-09 step 5).",
|
|
5
|
+
transform(source, fileName) {
|
|
6
|
+
const rows = [];
|
|
7
|
+
const out = [];
|
|
8
|
+
source.split("\n").forEach((line, i) => {
|
|
9
|
+
let next = line;
|
|
10
|
+
if (/new\s+Audio\s*\(/.test(line)) {
|
|
11
|
+
next = line.replace(/new\s+Audio\s*\(/, "game.audio.element(");
|
|
12
|
+
rows.push({ file: fileName, line: i + 1, construct: "new Audio(...)", mapping: "approximate", target: "game.audio.element(...)" });
|
|
13
|
+
}
|
|
14
|
+
else if (/document\.createElement\(["']audio["']\)/.test(line)) {
|
|
15
|
+
next = line.replace(/document\.createElement\(["']audio["']\)/, 'game.audio.element()');
|
|
16
|
+
rows.push({ file: fileName, line: i + 1, construct: 'document.createElement("audio")', mapping: "approximate", target: "game.audio.element()" });
|
|
17
|
+
}
|
|
18
|
+
else if (/new\s+AudioContext\s*\(/.test(line)) {
|
|
19
|
+
next = line.replace(/new\s+AudioContext\s*\(/, "game.audio.context(");
|
|
20
|
+
rows.push({ file: fileName, line: i + 1, construct: "new AudioContext(...)", mapping: "approximate", target: "game.audio.context(...)" });
|
|
21
|
+
}
|
|
22
|
+
else if (/HTMLAudioElement|AudioBufferSourceNode|createOscillator|\.play\(\)/.test(line)) {
|
|
23
|
+
rows.push({ file: fileName, line: i + 1, construct: line.trim(), mapping: "none", note: "audio surface — review manually" });
|
|
24
|
+
}
|
|
25
|
+
out.push(next);
|
|
26
|
+
});
|
|
27
|
+
return { code: out.join("\n"), rows };
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=audio-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-wrapper.js","sourceRoot":"","sources":["../../../../../../../packages/aura3d-cli/src/commands/prd09/codemods/audio-wrapper.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,mBAAmB,GAAgB;IAC9C,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,8EAA8E;IAC3F,SAAS,CAAC,MAAM,EAAE,QAAQ;QACxB,MAAM,IAAI,GAAmI,EAAE,CAAC;QAChJ,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;gBAC/D,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACrI,CAAC;iBAAM,IAAI,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,0CAA0C,EAAE,sBAAsB,CAAC,CAAC;gBACxF,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,iCAAiC,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;YACnJ,CAAC;iBAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;gBACtE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC5I,CAAC;iBAAM,IAAI,oEAAoE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3F,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC,CAAC;YAC/H,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codemod `prd09-capture-branches` (PRD-09 §10 step 3): unwraps
|
|
3
|
+
* `?capture=review`-style branches so the production arm survives and the
|
|
4
|
+
* review arm is dropped. Conservative: only rewrites `cond ? REVIEW : PROD`
|
|
5
|
+
* / `cond ? PROD : REVIEW` ternaries and `if (capture) { ... }` statement
|
|
6
|
+
* blocks it can resolve; everything else is reported as a `none` row.
|
|
7
|
+
*/
|
|
8
|
+
import type { AuraCodemod } from "../../../contracts/commands.js";
|
|
9
|
+
export declare const captureBranchesCodemod: AuraCodemod;
|
|
10
|
+
//# sourceMappingURL=capture-branches.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture-branches.d.ts","sourceRoot":"","sources":["../../../../../../../packages/aura3d-cli/src/commands/prd09/codemods/capture-branches.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIlE,eAAO,MAAM,sBAAsB,EAAE,WAuCpC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const CAPTURE_COND = /(\w+|\([^)]*\))\s*(?:===?\s*|!==?\s*)\s*["']?(?:capture|review)["']?|(?:searchParams|params)\.get\(["']capture["']\)|["']capture=review["']|\b(?:review|capture|isReview|isCapture|captureMode|reviewCapture)\b/i;
|
|
2
|
+
export const captureBranchesCodemod = {
|
|
3
|
+
name: "prd09-capture-branches",
|
|
4
|
+
owner: "prd09",
|
|
5
|
+
description: "Remove `?capture=review` branches; keep the production arm (PRD-09 step 3).",
|
|
6
|
+
transform(source, fileName) {
|
|
7
|
+
const rows = [];
|
|
8
|
+
const lines = source.split("\n");
|
|
9
|
+
const out = [];
|
|
10
|
+
for (let i = 0; i < lines.length; i++) {
|
|
11
|
+
const line = lines[i];
|
|
12
|
+
const ternary = line.match(/(.*)=\s*([^?]+)\?\s*([^:]+):\s*([^;]+)(;.*)$/);
|
|
13
|
+
if (ternary && CAPTURE_COND.test(ternary[2])) {
|
|
14
|
+
const [, lhs, cond, a, b, tail] = ternary;
|
|
15
|
+
// Convention: `captureFlag ? reviewPath : productionPath` — the true
|
|
16
|
+
// arm is entered only when the review flag is set, so the else arm is
|
|
17
|
+
// the shipped behaviour. Textual check is a fallback for inverted
|
|
18
|
+
// conds (`!review ? prod : review`).
|
|
19
|
+
const negated = /^\s*!/.test(cond.trim());
|
|
20
|
+
const aIsReview = /review|capture|preview/i.test(a);
|
|
21
|
+
const bIsReview = /review|capture|preview/i.test(b);
|
|
22
|
+
let keep;
|
|
23
|
+
let note;
|
|
24
|
+
if (aIsReview && !bIsReview) {
|
|
25
|
+
keep = b;
|
|
26
|
+
note = "kept production arm (true arm is review-marked)";
|
|
27
|
+
}
|
|
28
|
+
else if (bIsReview && !aIsReview) {
|
|
29
|
+
keep = a;
|
|
30
|
+
note = "kept production arm (else arm is review-marked)";
|
|
31
|
+
}
|
|
32
|
+
else if (!negated) {
|
|
33
|
+
keep = b;
|
|
34
|
+
note = "kept else arm as production (capture-flag convention)";
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
keep = a;
|
|
38
|
+
note = "kept true arm under negated capture condition";
|
|
39
|
+
}
|
|
40
|
+
out.push(`${lhs}= ${keep.trim()}${tail}`);
|
|
41
|
+
rows.push({ file: fileName, line: i + 1, construct: cond.trim(), mapping: "approximate", target: keep.trim(), note });
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (CAPTURE_COND.test(line) && /(if|else if)\s*\(/.test(line)) {
|
|
45
|
+
rows.push({ file: fileName, line: i + 1, construct: line.trim(), mapping: "none", note: "capture if-branch — delete review arm manually" });
|
|
46
|
+
out.push(line);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
out.push(line);
|
|
50
|
+
}
|
|
51
|
+
return { code: out.join("\n"), rows };
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=capture-branches.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture-branches.js","sourceRoot":"","sources":["../../../../../../../packages/aura3d-cli/src/commands/prd09/codemods/capture-branches.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codemod `prd09-evidence-globals` (PRD-09 §10 step 10): rewrites
|
|
3
|
+
* `window.__FOO__ = expr` evidence writes into the pull-model channel
|
|
4
|
+
* `game.evidence.legacyGlobals.set("__FOO__", expr)`.
|
|
5
|
+
*/
|
|
6
|
+
import type { AuraCodemod } from "../../../contracts/commands.js";
|
|
7
|
+
export declare const evidenceGlobalsCodemod: AuraCodemod;
|
|
8
|
+
//# sourceMappingURL=evidence-globals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence-globals.d.ts","sourceRoot":"","sources":["../../../../../../../packages/aura3d-cli/src/commands/prd09/codemods/evidence-globals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIlE,eAAO,MAAM,sBAAsB,EAAE,WAepC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const GLOBAL_WRITE = /^(\s*)(?:window\s*\.\s*)?(__[A-Z][A-Z0-9_]+__)\s*=\s*(.+);?\s*$/;
|
|
2
|
+
export const evidenceGlobalsCodemod = {
|
|
3
|
+
name: "prd09-evidence-globals",
|
|
4
|
+
owner: "prd09",
|
|
5
|
+
description: "Move `__FOO__` window globals onto `game.evidence.legacyGlobals` (PRD-09 step 10).",
|
|
6
|
+
transform(source, fileName) {
|
|
7
|
+
const rows = [];
|
|
8
|
+
const out = source.split("\n").map((line, i) => {
|
|
9
|
+
const m = line.match(GLOBAL_WRITE);
|
|
10
|
+
if (!m)
|
|
11
|
+
return line;
|
|
12
|
+
const [, indent, name, expr] = m;
|
|
13
|
+
rows.push({ file: fileName, line: i + 1, construct: `${name} = ...`, mapping: "exact", target: `legacyGlobals.set("${name}", ...)` });
|
|
14
|
+
return `${indent}game.evidence.legacyGlobals.set("${name}", ${expr.replace(/;+\s*$/, "")});`;
|
|
15
|
+
});
|
|
16
|
+
return { code: out.join("\n"), rows };
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=evidence-globals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence-globals.js","sourceRoot":"","sources":["../../../../../../../packages/aura3d-cli/src/commands/prd09/codemods/evidence-globals.ts"],"names":[],"mappings":"AAOA,MAAM,YAAY,GAAG,iEAAiE,CAAC;AAEvF,MAAM,CAAC,MAAM,sBAAsB,GAAgB;IACjD,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,oFAAoF;IACjG,SAAS,CAAC,MAAM,EAAE,QAAQ;QACxB,MAAM,IAAI,GAAoH,EAAE,CAAC;QACjI,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpB,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,sBAAsB,IAAI,SAAS,EAAE,CAAC,CAAC;YACtI,OAAO,GAAG,MAAM,oCAAoC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC;QAC/F,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codemod `prd09-perf-script` (PRD-09): removes a route's
|
|
3
|
+
* `evidence:performance` script + the `scripts/write-performance-report.ts`
|
|
4
|
+
* reference from package.json — the shared `aura3d perf-report` replaces it.
|
|
5
|
+
*/
|
|
6
|
+
import type { AuraCodemod } from "../../../contracts/commands.js";
|
|
7
|
+
export declare const perfScriptCodemod: AuraCodemod;
|
|
8
|
+
//# sourceMappingURL=perf-script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perf-script.d.ts","sourceRoot":"","sources":["../../../../../../../packages/aura3d-cli/src/commands/prd09/codemods/perf-script.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,eAAO,MAAM,iBAAiB,EAAE,WAsB/B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const perfScriptCodemod = {
|
|
2
|
+
name: "prd09-perf-script",
|
|
3
|
+
owner: "prd09",
|
|
4
|
+
description: "Drop route-local perf-report scripts for `aura3d perf-report` (PRD-09).",
|
|
5
|
+
transform(source, fileName) {
|
|
6
|
+
const rows = [];
|
|
7
|
+
const lines = source.split("\n");
|
|
8
|
+
const out = [];
|
|
9
|
+
for (let i = 0; i < lines.length; i++) {
|
|
10
|
+
const line = lines[i];
|
|
11
|
+
if (/"evidence:performance"|write-performance-report/.test(line)) {
|
|
12
|
+
rows.push({ file: fileName, line: i + 1, construct: line.trim(), mapping: "exact", note: "replaced by `aura3d perf-report --route <id> --telemetry <json>`" });
|
|
13
|
+
// keep JSON valid: drop a trailing comma on the previous emitted line
|
|
14
|
+
if (out.length && /,\s*$/.test(out[out.length - 1]) && (i + 1 >= lines.length || /^\s*[}\]]/.test(lines[i + 1]))) {
|
|
15
|
+
out[out.length - 1] = out[out.length - 1].replace(/,\s*$/, "");
|
|
16
|
+
}
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
out.push(line);
|
|
20
|
+
}
|
|
21
|
+
return { code: out.join("\n"), rows };
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=perf-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perf-script.js","sourceRoot":"","sources":["../../../../../../../packages/aura3d-cli/src/commands/prd09/codemods/perf-script.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,iBAAiB,GAAgB;IAC5C,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,yEAAyE;IACtF,SAAS,CAAC,MAAM,EAAE,QAAQ;QACxB,MAAM,IAAI,GAAmI,EAAE,CAAC;QAChJ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,iDAAiD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,kEAAkE,EAAE,CAAC,CAAC;gBAC/J,sEAAsE;gBACtE,IAAI,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjH,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACjE,CAAC;gBACD,SAAS;YACX,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C-39 lane command registrations — prd09 registers its `aura3d` commands
|
|
3
|
+
* here via registerCliCommand (CONTRACTS.md): the `sfx admit` command, the
|
|
4
|
+
* shared `perf-report` command and the four migration codemods whose output
|
|
5
|
+
* regenerates the route patch sets when a route's HEAD moves.
|
|
6
|
+
*/
|
|
7
|
+
import "./sfx-admit.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd09/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,aAAa,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C-39 lane command registrations — prd09 registers its `aura3d` commands
|
|
3
|
+
* here via registerCliCommand (CONTRACTS.md): the `sfx admit` command, the
|
|
4
|
+
* shared `perf-report` command and the four migration codemods whose output
|
|
5
|
+
* regenerates the route patch sets when a route's HEAD moves.
|
|
6
|
+
*/
|
|
7
|
+
import "./sfx-admit.js";
|
|
8
|
+
import { registerCliCommand, registerCodemod } from "../../contracts/commands.js";
|
|
9
|
+
import { perfReportCommand } from "./perf-report.js";
|
|
10
|
+
import { captureBranchesCodemod } from "./codemods/capture-branches.js";
|
|
11
|
+
import { audioWrapperCodemod } from "./codemods/audio-wrapper.js";
|
|
12
|
+
import { evidenceGlobalsCodemod } from "./codemods/evidence-globals.js";
|
|
13
|
+
import { perfScriptCodemod } from "./codemods/perf-script.js";
|
|
14
|
+
registerCliCommand(perfReportCommand);
|
|
15
|
+
registerCodemod(captureBranchesCodemod);
|
|
16
|
+
registerCodemod(audioWrapperCodemod);
|
|
17
|
+
registerCodemod(evidenceGlobalsCodemod);
|
|
18
|
+
registerCodemod(perfScriptCodemod);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/aura3d-cli/src/commands/prd09/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AACtC,eAAe,CAAC,sBAAsB,CAAC,CAAC;AACxC,eAAe,CAAC,mBAAmB,CAAC,CAAC;AACrC,eAAe,CAAC,sBAAsB,CAAC,CAAC;AACxC,eAAe,CAAC,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { AuraCliCommand } from "../../contracts/commands.js";
|
|
2
|
+
interface TelemetryPerf {
|
|
3
|
+
/** rAF frame intervals in milliseconds. */
|
|
4
|
+
readonly frameIntervals?: readonly number[];
|
|
5
|
+
readonly samples?: readonly number[];
|
|
6
|
+
}
|
|
7
|
+
interface Telemetry {
|
|
8
|
+
readonly route?: string;
|
|
9
|
+
readonly generatedAt?: string;
|
|
10
|
+
readonly perf?: TelemetryPerf | readonly number[];
|
|
11
|
+
readonly [key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
interface SpanSummary {
|
|
14
|
+
readonly samples: number;
|
|
15
|
+
readonly p50Ms: number;
|
|
16
|
+
readonly p95Ms: number;
|
|
17
|
+
readonly meanMs: number;
|
|
18
|
+
}
|
|
19
|
+
interface PerfReport {
|
|
20
|
+
route: string;
|
|
21
|
+
generatedAt: string;
|
|
22
|
+
producer: string;
|
|
23
|
+
perf: {
|
|
24
|
+
samples: number;
|
|
25
|
+
p50Ms: number;
|
|
26
|
+
p95Ms: number;
|
|
27
|
+
p99Ms: number;
|
|
28
|
+
meanMs: number;
|
|
29
|
+
/** Estimated fps derived from interval statistics, not an engine counter. */
|
|
30
|
+
estFps: number;
|
|
31
|
+
jankFrames: number;
|
|
32
|
+
budget: {
|
|
33
|
+
p95Ms: number;
|
|
34
|
+
pass: boolean;
|
|
35
|
+
};
|
|
36
|
+
/** §17 (16.1-8): CPU spans per subsystem, present when telemetry emits them. */
|
|
37
|
+
cpuSpans?: Record<string, SpanSummary>;
|
|
38
|
+
/** p95 of setInstanceTransforms calls, when the harness records them. */
|
|
39
|
+
instanceTransforms?: SpanSummary;
|
|
40
|
+
/** CDP forced-layout trace totals, when captured. */
|
|
41
|
+
forcedLayout?: {
|
|
42
|
+
events: number;
|
|
43
|
+
totalMs: number;
|
|
44
|
+
};
|
|
45
|
+
/** Baseline rAF p50 comparison (16.1-8: pilot p50 ≤ baseline + 0.5 ms). */
|
|
46
|
+
baseline?: {
|
|
47
|
+
p50Ms: number;
|
|
48
|
+
deltaMs: number;
|
|
49
|
+
pass: boolean;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export declare function buildPerfReport(route: string, telemetry: Telemetry, baselineP50?: number): PerfReport;
|
|
54
|
+
export declare const perfReportCommand: AuraCliCommand;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=perf-report.d.ts.map
|