create-aura3d 1.3.2 → 1.4.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.
Files changed (226) hide show
  1. package/dist/cli.js +10 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +11 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/showcase-spec-artifacts.d.ts +104 -0
  8. package/dist/showcase-spec-artifacts.d.ts.map +1 -0
  9. package/dist/showcase-spec-artifacts.js +142 -0
  10. package/dist/showcase-spec-artifacts.js.map +1 -0
  11. package/dist/showcase-spec-category-plan.d.ts +15 -0
  12. package/dist/showcase-spec-category-plan.d.ts.map +1 -0
  13. package/dist/showcase-spec-category-plan.js +45 -0
  14. package/dist/showcase-spec-category-plan.js.map +1 -0
  15. package/dist/showcase-spec-compiler.d.ts +5 -0
  16. package/dist/showcase-spec-compiler.d.ts.map +1 -0
  17. package/dist/showcase-spec-compiler.js +240 -0
  18. package/dist/showcase-spec-compiler.js.map +1 -0
  19. package/dist/showcase-spec-evidence.d.ts +7 -0
  20. package/dist/showcase-spec-evidence.d.ts.map +1 -0
  21. package/dist/showcase-spec-evidence.js +815 -0
  22. package/dist/showcase-spec-evidence.js.map +1 -0
  23. package/dist/showcase-spec-game-geometry-extractor.d.ts +21 -0
  24. package/dist/showcase-spec-game-geometry-extractor.d.ts.map +1 -0
  25. package/dist/showcase-spec-game-geometry-extractor.js +725 -0
  26. package/dist/showcase-spec-game-geometry-extractor.js.map +1 -0
  27. package/dist/showcase-spec-game-replacement-evidence.d.ts +14 -0
  28. package/dist/showcase-spec-game-replacement-evidence.d.ts.map +1 -0
  29. package/dist/showcase-spec-game-replacement-evidence.js +219 -0
  30. package/dist/showcase-spec-game-replacement-evidence.js.map +1 -0
  31. package/dist/showcase-spec-game-template-evidence.d.ts +72 -0
  32. package/dist/showcase-spec-game-template-evidence.d.ts.map +1 -0
  33. package/dist/showcase-spec-game-template-evidence.js +435 -0
  34. package/dist/showcase-spec-game-template-evidence.js.map +1 -0
  35. package/dist/showcase-spec-gameplay-evidence.d.ts +3 -0
  36. package/dist/showcase-spec-gameplay-evidence.d.ts.map +1 -0
  37. package/dist/showcase-spec-gameplay-evidence.js +108 -0
  38. package/dist/showcase-spec-gameplay-evidence.js.map +1 -0
  39. package/dist/showcase-spec-parser.d.ts +3 -0
  40. package/dist/showcase-spec-parser.d.ts.map +1 -0
  41. package/dist/showcase-spec-parser.js +662 -0
  42. package/dist/showcase-spec-parser.js.map +1 -0
  43. package/dist/showcase-spec-platformer-artifacts.d.ts +3 -0
  44. package/dist/showcase-spec-platformer-artifacts.d.ts.map +1 -0
  45. package/dist/showcase-spec-platformer-artifacts.js +276 -0
  46. package/dist/showcase-spec-platformer-artifacts.js.map +1 -0
  47. package/dist/showcase-spec-racing-artifacts.d.ts +3 -0
  48. package/dist/showcase-spec-racing-artifacts.d.ts.map +1 -0
  49. package/dist/showcase-spec-racing-artifacts.js +273 -0
  50. package/dist/showcase-spec-racing-artifacts.js.map +1 -0
  51. package/dist/showcase-spec-replacement-apply.d.ts +10 -0
  52. package/dist/showcase-spec-replacement-apply.d.ts.map +1 -0
  53. package/dist/showcase-spec-replacement-apply.js +166 -0
  54. package/dist/showcase-spec-replacement-apply.js.map +1 -0
  55. package/dist/showcase-spec-replacement-candidates.d.ts +16 -0
  56. package/dist/showcase-spec-replacement-candidates.d.ts.map +1 -0
  57. package/dist/showcase-spec-replacement-candidates.js +244 -0
  58. package/dist/showcase-spec-replacement-candidates.js.map +1 -0
  59. package/dist/showcase-spec-replacement-game-geometry.d.ts +4 -0
  60. package/dist/showcase-spec-replacement-game-geometry.d.ts.map +1 -0
  61. package/dist/showcase-spec-replacement-game-geometry.js +175 -0
  62. package/dist/showcase-spec-replacement-game-geometry.js.map +1 -0
  63. package/dist/showcase-spec-replacement-manifest.d.ts +41 -0
  64. package/dist/showcase-spec-replacement-manifest.d.ts.map +1 -0
  65. package/dist/showcase-spec-replacement-manifest.js +62 -0
  66. package/dist/showcase-spec-replacement-manifest.js.map +1 -0
  67. package/dist/showcase-spec-replacement-values.d.ts +9 -0
  68. package/dist/showcase-spec-replacement-values.d.ts.map +1 -0
  69. package/dist/showcase-spec-replacement-values.js +41 -0
  70. package/dist/showcase-spec-replacement-values.js.map +1 -0
  71. package/dist/showcase-spec-replacement.d.ts +13 -0
  72. package/dist/showcase-spec-replacement.d.ts.map +1 -0
  73. package/dist/showcase-spec-replacement.js +144 -0
  74. package/dist/showcase-spec-replacement.js.map +1 -0
  75. package/dist/showcase-spec-types.d.ts +304 -0
  76. package/dist/showcase-spec-types.d.ts.map +1 -0
  77. package/dist/showcase-spec-types.js +2 -0
  78. package/dist/showcase-spec-types.js.map +1 -0
  79. package/package.json +21 -2
  80. package/templates/animation-channel/package.json +1 -1
  81. package/templates/animation-channel/tests/screenshot.spec.ts +16 -0
  82. package/templates/animation-studio/index.html +12 -0
  83. package/templates/animation-studio/node_modules.publish-aside/.vite/deps/_metadata.json +8 -0
  84. package/templates/animation-studio/node_modules.publish-aside/.vite/deps/package.json +3 -0
  85. package/templates/animation-studio/package.json +1 -1
  86. package/templates/animation-studio/scripts/animation-scene.ts +1 -1
  87. package/templates/animation-studio/scripts/asset-motion-probe.ts +7 -1
  88. package/templates/animation-studio/scripts/author-office-scene.ts +1 -1
  89. package/templates/animation-studio/scripts/build-characters.ts +1 -1
  90. package/templates/animation-studio/scripts/render-live.ts +24 -0
  91. package/templates/animation-studio/src/director/director-heuristics.ts +2 -2
  92. package/templates/animation-studio/src/director/{prompt-to-scene.ts → prompt-scene.ts} +74 -6
  93. package/templates/animation-studio/studio/src/App.tsx +146 -78
  94. package/templates/animation-studio/studio/src/components/Console.tsx +8 -2
  95. package/templates/animation-studio/studio/src/components/Inspector.tsx +57 -1
  96. package/templates/animation-studio/studio/src/components/Stage.tsx +10 -5
  97. package/templates/animation-studio/studio/src/components/Timeline.tsx +49 -2
  98. package/templates/animation-studio/studio/src/state/mapDocument.ts +13 -2
  99. package/templates/animation-studio/studio/src/state/sceneTool.ts +20 -9
  100. package/templates/animation-studio/studio/src/state/types.ts +8 -0
  101. package/templates/animation-studio/tests/route-health.spec.ts +33 -0
  102. package/templates/animation-studio/tests/screenshot.spec.ts +30 -0
  103. package/templates/character-controller/package.json +1 -1
  104. package/templates/character-controller/src/main.ts +18 -1
  105. package/templates/cinematic-scene/package.json +1 -1
  106. package/templates/cinematic-scene/tests/screenshot.spec.ts +3 -3
  107. package/templates/episode-builder/package.json +1 -1
  108. package/templates/episode-builder/tests/screenshot.spec.ts +15 -0
  109. package/templates/falling-blocks-starter/README.md +18 -0
  110. package/templates/falling-blocks-starter/index.html +23 -0
  111. package/templates/falling-blocks-starter/package.json +21 -0
  112. package/templates/falling-blocks-starter/playwright.config.ts +12 -0
  113. package/templates/falling-blocks-starter/public/aura-assets/showcaseBlockfallCabinet.679d52fe.glb +0 -0
  114. package/templates/falling-blocks-starter/public/aura-assets/showcaseBlockfallCabinet.thumb.svg +1 -0
  115. package/templates/falling-blocks-starter/src/aura-assets.ts +20 -0
  116. package/templates/falling-blocks-starter/src/main.ts +358 -0
  117. package/templates/falling-blocks-starter/tests/playable.spec.ts +85 -0
  118. package/templates/falling-blocks-starter/tests/route-health.spec.ts +34 -0
  119. package/templates/falling-blocks-starter/tsconfig.json +13 -0
  120. package/templates/fighting-game/package.json +1 -1
  121. package/templates/fighting-game/tests/screenshot.spec.ts +15 -0
  122. package/templates/mini-game/README.md +13 -0
  123. package/templates/mini-game/index.html +1 -1
  124. package/templates/mini-game/package.json +2 -2
  125. package/templates/mini-game/src/main.ts +251 -21
  126. package/templates/mini-game/tests/playable.spec.ts +49 -0
  127. package/templates/mini-game/tests/screenshot.spec.ts +37 -32
  128. package/templates/product-viewer/package.json +1 -1
  129. package/templates/product-viewer/tests/screenshot.spec.ts +4 -4
  130. package/templates/prompt-animation-channel/package.json +1 -1
  131. package/templates/prompt-animation-channel/tests/screenshot.spec.ts +15 -0
  132. package/templates/racing-starter/README.md +27 -0
  133. package/templates/racing-starter/index.html +23 -0
  134. package/templates/racing-starter/package.json +21 -0
  135. package/templates/racing-starter/playwright.config.ts +12 -0
  136. package/templates/racing-starter/public/aura-assets/showcaseCleanSportsCar.1c69283f.glb +0 -0
  137. package/templates/racing-starter/public/aura-assets/showcaseCleanSportsCar.thumb.svg +1 -0
  138. package/templates/racing-starter/public/aura-assets/showcaseReadableKartCircuit.5cbb912e.glb +0 -0
  139. package/templates/racing-starter/public/aura-assets/showcaseReadableKartCircuit.thumb.svg +1 -0
  140. package/templates/racing-starter/src/aura-assets.ts +36 -0
  141. package/templates/racing-starter/src/main.ts +280 -0
  142. package/templates/racing-starter/tests/playable.spec.ts +93 -0
  143. package/templates/racing-starter/tests/route-health.spec.ts +40 -0
  144. package/templates/racing-starter/tsconfig.json +13 -0
  145. package/templates/three-compat-architecture-interior/index.html +16 -0
  146. package/templates/three-compat-architecture-interior/package.json +21 -0
  147. package/templates/three-compat-architecture-interior/playwright.config.ts +14 -0
  148. package/templates/three-compat-architecture-interior/src/main.ts +27 -0
  149. package/templates/three-compat-architecture-interior/tests/route-health.spec.ts +16 -0
  150. package/templates/three-compat-architecture-interior/tests/screenshot.spec.ts +15 -0
  151. package/templates/three-compat-architecture-interior/tsconfig.json +19 -0
  152. package/templates/three-compat-asset-inspector/index.html +16 -0
  153. package/templates/three-compat-asset-inspector/package.json +21 -0
  154. package/templates/three-compat-asset-inspector/playwright.config.ts +14 -0
  155. package/templates/three-compat-asset-inspector/src/main.ts +17 -0
  156. package/templates/three-compat-asset-inspector/tests/route-health.spec.ts +16 -0
  157. package/templates/three-compat-asset-inspector/tests/screenshot.spec.ts +15 -0
  158. package/templates/three-compat-asset-inspector/tsconfig.json +19 -0
  159. package/templates/three-compat-character-viewer/index.html +16 -0
  160. package/templates/three-compat-character-viewer/package.json +21 -0
  161. package/templates/three-compat-character-viewer/playwright.config.ts +14 -0
  162. package/templates/three-compat-character-viewer/src/main.ts +17 -0
  163. package/templates/three-compat-character-viewer/tests/route-health.spec.ts +16 -0
  164. package/templates/three-compat-character-viewer/tests/screenshot.spec.ts +15 -0
  165. package/templates/three-compat-character-viewer/tsconfig.json +19 -0
  166. package/templates/three-compat-custom-threejs-migration/index.html +16 -0
  167. package/templates/three-compat-custom-threejs-migration/package.json +21 -0
  168. package/templates/three-compat-custom-threejs-migration/playwright.config.ts +14 -0
  169. package/templates/three-compat-custom-threejs-migration/src/main.ts +16 -0
  170. package/templates/three-compat-custom-threejs-migration/tests/route-health.spec.ts +16 -0
  171. package/templates/three-compat-custom-threejs-migration/tests/screenshot.spec.ts +15 -0
  172. package/templates/three-compat-custom-threejs-migration/tsconfig.json +19 -0
  173. package/templates/three-compat-large-scene/index.html +16 -0
  174. package/templates/three-compat-large-scene/package.json +21 -0
  175. package/templates/three-compat-large-scene/playwright.config.ts +14 -0
  176. package/templates/three-compat-large-scene/src/main.ts +31 -0
  177. package/templates/three-compat-large-scene/tests/route-health.spec.ts +16 -0
  178. package/templates/three-compat-large-scene/tests/screenshot.spec.ts +15 -0
  179. package/templates/three-compat-large-scene/tsconfig.json +19 -0
  180. package/templates/three-compat-material-authoring/index.html +16 -0
  181. package/templates/three-compat-material-authoring/package.json +21 -0
  182. package/templates/three-compat-material-authoring/playwright.config.ts +14 -0
  183. package/templates/three-compat-material-authoring/src/main.ts +33 -0
  184. package/templates/three-compat-material-authoring/tests/route-health.spec.ts +16 -0
  185. package/templates/three-compat-material-authoring/tests/screenshot.spec.ts +15 -0
  186. package/templates/three-compat-material-authoring/tsconfig.json +19 -0
  187. package/templates/three-compat-postprocess-scene/index.html +16 -0
  188. package/templates/three-compat-postprocess-scene/package.json +21 -0
  189. package/templates/three-compat-postprocess-scene/playwright.config.ts +14 -0
  190. package/templates/three-compat-postprocess-scene/src/main.ts +17 -0
  191. package/templates/three-compat-postprocess-scene/tests/route-health.spec.ts +16 -0
  192. package/templates/three-compat-postprocess-scene/tests/screenshot.spec.ts +15 -0
  193. package/templates/three-compat-postprocess-scene/tsconfig.json +19 -0
  194. package/templates/three-compat-premium-product-viewer/index.html +16 -0
  195. package/templates/three-compat-premium-product-viewer/package.json +21 -0
  196. package/templates/three-compat-premium-product-viewer/playwright.config.ts +14 -0
  197. package/templates/three-compat-premium-product-viewer/src/main.ts +18 -0
  198. package/templates/three-compat-premium-product-viewer/tests/route-health.spec.ts +16 -0
  199. package/templates/three-compat-premium-product-viewer/tests/screenshot.spec.ts +15 -0
  200. package/templates/three-compat-premium-product-viewer/tsconfig.json +19 -0
  201. package/templates/animation-channel/public/aura-assets/moon-garden-feature-frame.png +0 -0
  202. package/templates/animation-channel/tests/reports/prompt-animation/cartoon-sample-episode.png +0 -0
  203. package/templates/animation-studio/dist/episodes/scene/episode-3d.webm +0 -0
  204. package/templates/animation-studio/dist/episodes/scene/frames/action.png +0 -0
  205. package/templates/animation-studio/dist/episodes/scene/frames/dialogue.png +0 -0
  206. package/templates/animation-studio/dist/episodes/scene/frames/final.png +0 -0
  207. package/templates/animation-studio/dist/episodes/scene/frames/first.png +0 -0
  208. package/templates/animation-studio/dist/episodes/scene/frames/mouth-closed.png +0 -0
  209. package/templates/animation-studio/dist/episodes/scene/frames/mouth-open.png +0 -0
  210. package/templates/animation-studio/dist/episodes/scene/render-live-summary.json +0 -5616
  211. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/broken.png +0 -0
  212. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/chefs.png +0 -0
  213. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/customer.png +0 -0
  214. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/worker-1.png +0 -0
  215. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/worker-2.png +0 -0
  216. package/templates/animation-studio/dist/generated/second-scene.document.json +0 -1210
  217. package/templates/animation-studio/dist/generated/studio-edited.document.json +0 -1196
  218. package/templates/animation-studio/dist/scene/inshader-accept.document.json +0 -1
  219. package/templates/animation-studio/dist/scene/inshader-test.document.json +0 -1
  220. package/templates/animation-studio/dist/scene/integ.document.json +0 -1
  221. package/templates/animation-studio/dist/scene/working.document.json +0 -594
  222. package/templates/animation-studio/dist/scene/working.history.json +0 -1
  223. package/templates/animation-studio/studio/dist/assets/index-i8URxOOt.css +0 -1
  224. package/templates/animation-studio/studio/dist/assets/index-pC9hdZ-B.js +0 -11
  225. package/templates/animation-studio/studio/dist/index.html +0 -19
  226. package/templates/animation-studio/tests/reports/animation-studio/hifi-cast-validation.json +0 -938
@@ -0,0 +1,304 @@
1
+ export type ShowcaseSpecClaimLabel = "createAuraApp" | "prototype" | "roadmap";
2
+ export type ShowcaseSpecFinalStatus = "release-ready candidate" | "prototype-blocked" | "internal-diagnostic" | "removed-from-public-showcase";
3
+ export type ShowcaseSpecReplacementRequiredRole = "architecture" | "building" | "character" | "data-station" | "effect-core" | "environment" | "facility" | "industrial" | "level" | "platformer-world" | "stage" | "track" | "vehicle" | "world";
4
+ export interface ShowcaseSpecAssetPolicy {
5
+ readonly allowReplacement: boolean;
6
+ readonly replacementQuery?: string;
7
+ readonly requiredRole?: ShowcaseSpecReplacementRequiredRole;
8
+ readonly minQuality?: "candidate" | "release";
9
+ readonly requireRenderedProbe?: boolean;
10
+ readonly requireDeployPass?: boolean;
11
+ }
12
+ export interface ShowcaseSpecAsset {
13
+ readonly id: string;
14
+ readonly role: string;
15
+ readonly typedRef: string;
16
+ readonly quality: "release" | "candidate" | "prototype";
17
+ readonly hasDurableProvenance: boolean;
18
+ readonly hasRenderedProbe: boolean;
19
+ readonly hasOrientationEvidence: boolean;
20
+ readonly hasForegroundBounds: boolean;
21
+ readonly assetPolicy?: ShowcaseSpecAssetPolicy;
22
+ }
23
+ export interface ShowcaseSpecCapability {
24
+ readonly name: string;
25
+ readonly status: "root-proven" | "partial" | "internal-only" | "roadmap" | "unsupported";
26
+ readonly evidence?: string;
27
+ }
28
+ export type ShowcasePlatformerGameplayRequirement = "movement" | "jump" | "checkpoint" | "progression";
29
+ export type ShowcasePlatformerPlayableSurfaceSource = "asset-bound-playable-surfaces" | "asset-derived-playable-surfaces" | "authored-route-rectangles";
30
+ export type ShowcaseGeometryEvidenceSource = "asset-mesh-extracted" | "manifest-authored" | "manifest-authored-overlay-validated" | "compiler-authored" | "compiler-authored-overlay-validated";
31
+ export interface ShowcaseRacingTrackTopologyPoint {
32
+ readonly x: number;
33
+ readonly z: number;
34
+ readonly width?: number;
35
+ }
36
+ export interface ShowcaseRacingTrackTopologyCheckpoint {
37
+ readonly progress: number;
38
+ readonly width: number;
39
+ }
40
+ export interface ShowcaseGeometryEvidenceRef {
41
+ readonly sourceAsset: string;
42
+ readonly renderedProbe?: string;
43
+ readonly routeOverlay?: string;
44
+ readonly notes: string;
45
+ }
46
+ export interface ShowcaseGeometryModelBounds {
47
+ readonly min: readonly [number, number, number];
48
+ readonly max: readonly [number, number, number];
49
+ }
50
+ export interface ShowcaseRacingTopologyModelAlignment {
51
+ readonly source: ShowcaseGeometryEvidenceSource;
52
+ readonly modelBounds: ShowcaseGeometryModelBounds;
53
+ readonly modelPoint: readonly [number, number, number];
54
+ readonly gamePoint: {
55
+ readonly x: number;
56
+ readonly z: number;
57
+ };
58
+ readonly anchorPairs?: readonly {
59
+ readonly id: string;
60
+ readonly modelPoint: readonly [number, number, number];
61
+ readonly gamePoint: {
62
+ readonly x: number;
63
+ readonly z: number;
64
+ };
65
+ }[];
66
+ readonly evidence: {
67
+ readonly routeOverlay?: string;
68
+ readonly notes: string;
69
+ };
70
+ }
71
+ export interface ShowcasePlatformerSurfaceModelAlignment {
72
+ readonly source: ShowcaseGeometryEvidenceSource;
73
+ readonly modelBounds: ShowcaseGeometryModelBounds;
74
+ readonly modelPoint: readonly [number, number, number];
75
+ readonly gamePoint: {
76
+ readonly x: number;
77
+ readonly y: number;
78
+ };
79
+ readonly anchorPairs?: readonly {
80
+ readonly id: string;
81
+ readonly modelPoint: readonly [number, number, number];
82
+ readonly gamePoint: {
83
+ readonly x: number;
84
+ readonly y: number;
85
+ };
86
+ }[];
87
+ readonly evidence: {
88
+ readonly routeOverlay?: string;
89
+ readonly notes: string;
90
+ };
91
+ }
92
+ export type ShowcaseGameAssetPairEvidenceCategory = "racing" | "platformer";
93
+ export type ShowcaseGameAssetPairEvidenceVerdict = "pass" | "fail";
94
+ export interface ShowcaseGameAssetPairEvidence {
95
+ readonly category: ShowcaseGameAssetPairEvidenceCategory;
96
+ readonly assets: readonly string[];
97
+ readonly screenshotEvidence: string;
98
+ readonly routePrimaryProbe?: string;
99
+ readonly screenshotSha256?: string;
100
+ readonly verdict: ShowcaseGameAssetPairEvidenceVerdict;
101
+ readonly notes: string;
102
+ readonly blockers: readonly string[];
103
+ }
104
+ export interface ShowcaseRacingTrackTopology {
105
+ readonly assetId: string;
106
+ readonly assetHash: string;
107
+ readonly source: ShowcaseGeometryEvidenceSource;
108
+ readonly roadCenterline: readonly ShowcaseRacingTrackTopologyPoint[];
109
+ readonly checkpoints: readonly ShowcaseRacingTrackTopologyCheckpoint[];
110
+ readonly lapLengthMeters?: number;
111
+ readonly estimatedLapSeconds: number;
112
+ readonly confidence: number;
113
+ readonly modelAlignment: ShowcaseRacingTopologyModelAlignment;
114
+ readonly evidence: ShowcaseGeometryEvidenceRef;
115
+ }
116
+ export interface ShowcasePlatformerPlayableSurface {
117
+ readonly id: string;
118
+ readonly x: number;
119
+ readonly y: number;
120
+ readonly width: number;
121
+ readonly height: number;
122
+ readonly kind: "ground" | "platform" | "moving" | "hazard" | "checkpoint" | "finish";
123
+ }
124
+ export interface ShowcasePlatformerPlayableSurfaceMap {
125
+ readonly assetId: string;
126
+ readonly assetHash: string;
127
+ readonly source: ShowcaseGeometryEvidenceSource;
128
+ readonly surfaces: readonly ShowcasePlatformerPlayableSurface[];
129
+ readonly levelLength: number;
130
+ readonly estimatedCompletionSeconds: number;
131
+ readonly characterScaleRatio: number;
132
+ readonly confidence: number;
133
+ readonly modelAlignment: ShowcasePlatformerSurfaceModelAlignment;
134
+ readonly evidence: ShowcaseGeometryEvidenceRef;
135
+ }
136
+ export interface ShowcasePlatformerSpec {
137
+ readonly characterAsset: string;
138
+ readonly worldAssets: readonly string[];
139
+ readonly cameraIntent: "side-scroller";
140
+ readonly layoutConstraints: {
141
+ readonly keepCharacterReadable: boolean;
142
+ readonly uiAvoidsEvidenceArea: boolean;
143
+ };
144
+ readonly gameplayRequirements: readonly ShowcasePlatformerGameplayRequirement[];
145
+ readonly levelDesign: {
146
+ readonly minPlayableSeconds: number;
147
+ readonly minCheckpoints: number;
148
+ readonly requiresHazardRespawn: boolean;
149
+ readonly requiresFinish: boolean;
150
+ readonly authoredLevelFlow: boolean;
151
+ readonly playableSurfaceSource: ShowcasePlatformerPlayableSurfaceSource;
152
+ readonly playableSurfaceLayoutValidated: boolean;
153
+ readonly playableSurfaceEvidence?: string;
154
+ readonly playableSurfaceMap?: ShowcasePlatformerPlayableSurfaceMap;
155
+ readonly assetPairEvidence?: ShowcaseGameAssetPairEvidence;
156
+ readonly characterWorldScaleCompatible: boolean;
157
+ readonly styleCompatible: boolean;
158
+ readonly primitivePrimaryWorldRejected: boolean;
159
+ };
160
+ readonly releaseAssetRequirements: {
161
+ readonly characterRole: "character";
162
+ readonly worldRoles: readonly ("level" | "world" | "stage")[];
163
+ readonly requiresOrientationEvidence: boolean;
164
+ readonly requiresScaleNormalizationEvidence: boolean;
165
+ readonly requiresRenderedProbe: boolean;
166
+ readonly requiresDurableProvenance: boolean;
167
+ readonly requiresSuitabilityReason: boolean;
168
+ };
169
+ }
170
+ export type ShowcaseRacingGameplayRequirement = "throttle" | "steering" | "reset" | "checkpoint" | "lap" | "multi-lap";
171
+ export interface ShowcaseRacingSpec {
172
+ readonly vehicleAsset: string;
173
+ readonly trackAsset: string;
174
+ readonly cameraIntent: "track-overview";
175
+ readonly layoutConstraints: {
176
+ readonly keepVehicleReadable: boolean;
177
+ readonly keepTrackReadable: boolean;
178
+ readonly uiAvoidsEvidenceArea: boolean;
179
+ };
180
+ readonly gameplayRequirements: readonly ShowcaseRacingGameplayRequirement[];
181
+ readonly raceDesign: {
182
+ readonly minCheckpoints: number;
183
+ readonly minLaps: number;
184
+ readonly minLapSeconds: number;
185
+ readonly routeAlignedToTrackAsset: boolean;
186
+ readonly visibleTrackTopology: "asset-bound-road-topology" | "authored-route-over-visible-track" | "mesh-road-topology";
187
+ readonly trackTopologyEvidence?: string;
188
+ readonly trackTopology?: ShowcaseRacingTrackTopology;
189
+ readonly assetPairEvidence?: ShowcaseGameAssetPairEvidence;
190
+ readonly carTrackScaleCompatible: boolean;
191
+ readonly noDebugLocatorDisk: boolean;
192
+ };
193
+ readonly releaseAssetRequirements: {
194
+ readonly vehicleRole: "vehicle";
195
+ readonly trackRole: "track";
196
+ readonly requiresOrientationEvidence: boolean;
197
+ readonly requiresScaleNormalizationEvidence: boolean;
198
+ readonly requiresRenderedProbe: boolean;
199
+ readonly requiresDurableProvenance: boolean;
200
+ readonly requiresSuitabilityReason: boolean;
201
+ };
202
+ }
203
+ export type ShowcaseCategoryPlanKind = "architecture-environment" | "industrial-digital-twin" | "particle-diagnostic" | "data-diagnostic";
204
+ export type ShowcaseCategoryCameraIntent = "architecture-hero" | "industrial-overview" | "diagnostic-core" | "data-observatory";
205
+ export type ShowcaseCategoryBackendClaim = "webgl-particle" | "native-webgpu" | "fallback";
206
+ export interface ShowcaseCategoryPlan {
207
+ readonly kind: ShowcaseCategoryPlanKind;
208
+ readonly primaryAsset: string;
209
+ readonly cameraIntent: ShowcaseCategoryCameraIntent;
210
+ readonly backendClaim?: ShowcaseCategoryBackendClaim;
211
+ readonly layoutConstraints: {
212
+ readonly keepHeroReadable: boolean;
213
+ readonly uiAvoidsEvidenceArea: boolean;
214
+ };
215
+ readonly claims: {
216
+ readonly allowed: readonly string[];
217
+ readonly notAllowed: readonly string[];
218
+ };
219
+ }
220
+ export interface ShowcaseSpec {
221
+ readonly schema: "aura3d-showcase-spec/1.0";
222
+ readonly routeId: string;
223
+ readonly label: string;
224
+ readonly category: string;
225
+ readonly path: string;
226
+ readonly globalName: string;
227
+ readonly claimLabel: ShowcaseSpecClaimLabel;
228
+ readonly publicStatus: ShowcaseSpecFinalStatus;
229
+ readonly layout: {
230
+ readonly heroAsset: string;
231
+ readonly uiPlacement: "left-panel" | "right-panel" | "bottom-bar" | "none";
232
+ };
233
+ readonly platformer?: ShowcasePlatformerSpec;
234
+ readonly racing?: ShowcaseRacingSpec;
235
+ readonly categoryPlan?: ShowcaseCategoryPlan;
236
+ readonly primaryAssets: readonly ShowcaseSpecAsset[];
237
+ readonly evidence: {
238
+ readonly routePrimaryProbe: string;
239
+ readonly routePrimaryScreenshot: string;
240
+ readonly deployCommand: string;
241
+ readonly deployEvidence?: string;
242
+ readonly deployPassed: boolean;
243
+ readonly routePrimaryPassed: boolean;
244
+ readonly gameplayProof?: string;
245
+ readonly gameplayPassed?: boolean;
246
+ readonly releaseAssetProbes?: Readonly<Record<string, string>>;
247
+ };
248
+ readonly capabilities: readonly ShowcaseSpecCapability[];
249
+ }
250
+ export interface CompileShowcaseSpecOptions {
251
+ readonly outputDir: string;
252
+ readonly projectDir?: string;
253
+ }
254
+ export interface CompileShowcaseSpecFileOptions extends CompileShowcaseSpecOptions {
255
+ readonly specPath: string;
256
+ }
257
+ export interface CompileShowcaseSpecReport {
258
+ readonly ok: boolean;
259
+ readonly schema: "aura3d-showcase-spec-compile-report/1.0";
260
+ readonly routeId: string;
261
+ readonly finalStatus: ShowcaseSpecFinalStatus;
262
+ readonly generatedFiles: readonly string[];
263
+ readonly blockers: readonly string[];
264
+ readonly evidenceChecklistPath: string;
265
+ readonly routeGatePatchPath: string;
266
+ readonly rejectedAssets: readonly ShowcaseSpecRejectedAsset[];
267
+ readonly replacementCandidates: readonly ShowcaseSpecReplacementCandidate[];
268
+ readonly selectedReplacement?: ShowcaseSpecSelectedReplacement;
269
+ }
270
+ export interface ShowcaseSpecRejectedAsset {
271
+ readonly id: string;
272
+ readonly reason: "release-probe-blank" | "release-probe-failing" | "release-probe-missing" | "route-primary-clipped" | "route-primary-missing" | "route-primary-unreadable" | "game-asset-pair-failing";
273
+ readonly evidence: string;
274
+ readonly failures: readonly string[];
275
+ }
276
+ export interface ShowcaseSpecReplacementProvenance {
277
+ readonly sourcePage?: string;
278
+ readonly downloadUrl?: string;
279
+ readonly license?: string;
280
+ readonly licenseUrl?: string;
281
+ readonly author?: string;
282
+ readonly assetHash?: string;
283
+ }
284
+ export interface ShowcaseSpecReplacementCandidate {
285
+ readonly id: string;
286
+ readonly role: string;
287
+ readonly typedRef: string;
288
+ readonly score: number;
289
+ readonly reasons: readonly string[];
290
+ readonly penalties: readonly string[];
291
+ readonly provenance: ShowcaseSpecReplacementProvenance;
292
+ readonly evidence?: string;
293
+ readonly accepted: boolean;
294
+ readonly selected: boolean;
295
+ }
296
+ export interface ShowcaseSpecSelectedReplacement {
297
+ readonly replaces: string;
298
+ readonly id: string;
299
+ readonly role: string;
300
+ readonly score: number;
301
+ readonly reasons: readonly string[];
302
+ readonly provenance: ShowcaseSpecReplacementProvenance;
303
+ }
304
+ //# sourceMappingURL=showcase-spec-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-spec-types.d.ts","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=showcase-spec-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-spec-types.js","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-aura3d",
3
- "version": "1.3.2",
3
+ "version": "1.4.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "create-aura3d": "dist/cli.js"
@@ -10,12 +10,28 @@
10
10
  "templates/product-viewer",
11
11
  "templates/cinematic-scene",
12
12
  "templates/mini-game",
13
+ "templates/racing-starter",
14
+ "templates/falling-blocks-starter",
13
15
  "templates/fighting-game",
14
16
  "templates/animation-channel",
15
17
  "templates/prompt-animation-channel",
16
18
  "templates/animation-studio",
17
19
  "templates/episode-builder",
18
- "templates/character-controller"
20
+ "templates/character-controller",
21
+ "templates/three-compat-premium-product-viewer",
22
+ "templates/three-compat-architecture-interior",
23
+ "templates/three-compat-material-authoring",
24
+ "templates/three-compat-asset-inspector",
25
+ "templates/three-compat-character-viewer",
26
+ "templates/three-compat-postprocess-scene",
27
+ "templates/three-compat-custom-threejs-migration",
28
+ "templates/three-compat-large-scene",
29
+ "!templates/**/dist/**",
30
+ "!templates/**/tests/reports/**",
31
+ "!templates/**/*.png",
32
+ "!templates/**/*.jpg",
33
+ "!templates/**/*.jpeg",
34
+ "!templates/**/*.csv"
19
35
  ],
20
36
  "publishConfig": {
21
37
  "access": "public"
@@ -28,6 +44,9 @@
28
44
  },
29
45
  "main": "./dist/index.js",
30
46
  "types": "./dist/index.d.ts",
47
+ "dependencies": {
48
+ "@aura3d/asset-index": "1.4.0"
49
+ },
31
50
  "description": "Scaffold Aura3D browser 3D apps for product viewers, cinematic scenes, mini-games, fighting-game runtimes, prompt-driven animation channels, animation studios, and episode builders.",
32
51
  "keywords": [
33
52
  "create-aura3d",
@@ -12,7 +12,7 @@
12
12
  "test:negative-failed-puppets": "playwright test tests/concept-2-5d.spec.ts tests/puppet-2d.spec.ts tests/image-puppet.spec.ts tests/concept-2-5d-animation.spec.ts tests/puppet-2d-animation.spec.ts tests/image-puppet-animation.spec.ts --workers=1"
13
13
  },
14
14
  "dependencies": {
15
- "@aura3d/engine": "1.3.2"
15
+ "@aura3d/engine": "1.3.3"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@playwright/test": "^1.52.0",
@@ -0,0 +1,16 @@
1
+ import { mkdirSync, writeFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { expect, test } from "@playwright/test";
4
+
5
+ test.setTimeout(60_000);
6
+
7
+ test("Aura3D animation channel screenshot shows content", async ({ page }) => {
8
+ await page.goto("/");
9
+ await expect.poll(() => page.locator("body").getAttribute("data-aura3d-ready"), { timeout: 45_000 }).toBe("true");
10
+ const canvas = page.locator("canvas");
11
+ const screenshot = await page.screenshot({ fullPage: false });
12
+ mkdirSync(resolve("tests/reports"), { recursive: true });
13
+ writeFileSync(resolve("tests/reports/screenshot.png"), screenshot);
14
+ writeFileSync(resolve("tests/reports/screenshot.json"), `${JSON.stringify({ bytes: screenshot.byteLength }, null, 2)}\n`);
15
+ expect(screenshot.byteLength).toBeGreaterThan(1000);
16
+ });
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Aura3D Animation Studio</title>
7
+ </head>
8
+ <body style="margin:0;background:#0b0f1a;">
9
+ <div id="app"></div>
10
+ <script type="module" src="/src/render-live-route.ts"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,8 @@
1
+ {
2
+ "hash": "ffc76a4e",
3
+ "configHash": "a0e1cf88",
4
+ "lockfileHash": "014abcc5",
5
+ "browserHash": "7931f362",
6
+ "optimized": {},
7
+ "chunks": {}
8
+ }
@@ -19,7 +19,7 @@
19
19
  "@aura3d/animation": "1.3.2",
20
20
  "@aura3d/assets": "1.3.2",
21
21
  "@aura3d/core": "1.3.2",
22
- "@aura3d/engine": "1.3.2",
22
+ "@aura3d/engine": "1.3.3",
23
23
  "@aura3d/physics": "1.3.2",
24
24
  "react": "^18.3.1",
25
25
  "react-dom": "^18.3.1",
@@ -33,7 +33,7 @@ import { validateEpisodeDocument } from "../src/animation-episode-validator.js";
33
33
  import { addShot, clearProps, placeProp, removeDialogueLine, removeShot, retimeDialogue, retimeShot, setBlocking, setCamera, setCharacterScale, setDialogueLine, setGesture } from "../src/studio/scene-tools.js";
34
34
  import { compileEpisodeDocument } from "../src/director/compile-episode-document.js";
35
35
  import type { DirectorSceneInput } from "../src/director/director-heuristics.js";
36
- import { generateSceneFromPrompt } from "../src/director/prompt-to-scene.js";
36
+ import { generateSceneFromPrompt } from "../src/director/prompt-scene.js";
37
37
  import { SET_TEMPLATES, getSetTemplate, pickSetForPrompt } from "../src/set-templates.js";
38
38
  import { resolveAsset, resolveLocalGlb, type ResolvedAsset } from "./resolve-asset.js";
39
39
 
@@ -211,9 +211,15 @@ const VOCAB_KEYWORDS: Readonly<Record<StandardClipId, readonly string[]>> = {
211
211
  gesture: ["wave", "waving", "gesture", "greet", "hello", "clap"],
212
212
  point: ["point", "pointing", "aim", "indicate"],
213
213
  nod: ["nod", "nodding", "yes", "agree"],
214
+ wave: ["wave", "waving", "greet", "hello", "goodbye", "farewell"],
214
215
  walk: ["walk", "walking", "stride"],
215
216
  run: ["run", "running", "sprint", "jog"],
216
- react: ["react", "reaction", "surprised", "flinch", "recoil", "hit", "damage", "dodge"]
217
+ react: ["react", "reaction", "surprised", "flinch", "recoil", "hit", "damage", "dodge"],
218
+ sit: ["sit", "sitting", "seat", "seated"],
219
+ shrug: ["shrug", "shrugging", "dunno", "uncertain"],
220
+ cross_arms: ["cross", "arms", "armcross", "defiant", "impatient"],
221
+ salute: ["salute", "saluting", "respect", "military"],
222
+ shake_head: ["shake", "head", "no", "disagree", "deny"]
217
223
  };
218
224
 
219
225
  export interface ClipMotionScore {
@@ -7,7 +7,7 @@
7
7
  import { writeFileSync } from "node:fs";
8
8
  import { resolve, dirname } from "node:path";
9
9
  import { fileURLToPath } from "node:url";
10
- import { generateSceneFromPrompt } from "../src/director/prompt-to-scene.js";
10
+ import { generateSceneFromPrompt } from "../src/director/prompt-scene.js";
11
11
  import { directScene } from "../src/director/director-heuristics.js";
12
12
  import { estimateSpeechDuration } from "../src/episode-document.js";
13
13
 
@@ -1480,7 +1480,7 @@ function main(): void {
1480
1480
  );
1481
1481
  }
1482
1482
  // The generator binds prompt casts to NEUTRAL copies (cast-a/cast-b) of the two leads
1483
- // (see src/director/prompt-to-scene.ts). Re-copy them byte-for-byte from the freshly
1483
+ // (see src/director/prompt-scene.ts). Re-copy them byte-for-byte from the freshly
1484
1484
  // textured leads so the default generated cast picks up the new bitmap textures too.
1485
1485
  if (!LOW_FI) {
1486
1486
  const COPIES: readonly { from: string; to: string }[] = [
@@ -59,6 +59,26 @@ const OUTPUT_DIR = resolve(TEMPLATE_ROOT, process.env.AURA_OUTPUT_DIR ?? "dist/e
59
59
  const FRAMES_DIR = resolve(OUTPUT_DIR, "frames");
60
60
  const VIDEO_PATH = resolve(OUTPUT_DIR, "episode-3d.webm");
61
61
 
62
+ // SSE render-progress contract (read by the studio dev server's /api/render-progress).
63
+ const PROGRESS_PATH = resolve(OUTPUT_DIR, "progress.json");
64
+ /**
65
+ * Atomic progress write: temp file + rename so the 200 ms SSE reader can never observe a
66
+ * partially written JSON (which it would surface as a bogus {label:"unknown", pct:0}).
67
+ * Guards total <= 0 so a zero-frame range can't produce Infinity/NaN pct.
68
+ */
69
+ function writeProgress(current: number, total: number, label: string): void {
70
+ try {
71
+ const pct = total <= 0 ? 100 : Math.round((current / total) * 100);
72
+ const tmp = `${PROGRESS_PATH}.tmp`;
73
+ writeFileSync(tmp, JSON.stringify({ current, total, label, pct, ts: Date.now() }));
74
+ renameSync(tmp, PROGRESS_PATH);
75
+ } catch {}
76
+ }
77
+ // FIRST action of the script: publish an initial 0% entry so the SSE reader never replays a
78
+ // previous render's final 100% (and the stale-file window shrinks to the tsx startup time).
79
+ mkdirSync(OUTPUT_DIR, { recursive: true });
80
+ writeProgress(0, 1, "starting");
81
+
62
82
  // M5 — RESOLUTION / OUTPUT TIERS via AURA_QUALITY:
63
83
  // preview (DEFAULT) = low-fi 480x270 @ 8fps, cheaper post — fast studio iteration.
64
84
  // final = 1080p (1920x1080) @ 24fps with the full post pass and no preview
@@ -507,6 +527,8 @@ async function main(): Promise<void> {
507
527
  `rendering frames ${FIRST_FRAME}..${LAST_FRAME} (${LAST_FRAME - FIRST_FRAME} frames) @ ${FRAME_RATE}fps` +
508
528
  `${PREVIEW_PARTS ? " [preview range]" : ` over ${EPISODE_DURATION}s`} ...`
509
529
  );
530
+ writeProgress(0, LAST_FRAME - FIRST_FRAME, "seeking");
531
+
510
532
  for (let i = FIRST_FRAME; i < LAST_FRAME; i += 1) {
511
533
  const t = i / FRAME_RATE;
512
534
  const result = await seekAndReadPixels(page, t, { burnCaption: false });
@@ -560,6 +582,7 @@ async function main(): Promise<void> {
560
582
  const basePng = await rawRgbaToPng(treated.pixels, WIDTH, HEIGHT);
561
583
  const png = await compositeCaptionPng(basePng, capText, WIDTH, HEIGHT);
562
584
  captured.push({ time: t, png });
585
+ writeProgress(i - FIRST_FRAME + 1, LAST_FRAME - FIRST_FRAME, "capturing");
563
586
 
564
587
  const fidelityId = fidelityFrameIndex.get(i);
565
588
  if (fidelityId) writeFileSync(resolve(FRAMES_DIR, `${fidelityId}.png`), png);
@@ -574,6 +597,7 @@ async function main(): Promise<void> {
574
597
  }
575
598
  }
576
599
 
600
+ writeProgress(LAST_FRAME - FIRST_FRAME, LAST_FRAME - FIRST_FRAME, "finishing");
577
601
  console.log("\n--- staged performance (per beat) ---");
578
602
  for (const beat of stagingByBeat.values()) {
579
603
  const m = beat.characters.find((c) => c.id === "miko");
@@ -409,7 +409,7 @@ const LOW_MOTION = new Set<PerformanceClip>(["idle", "talk"]);
409
409
  * (as speaker OR listener) — unless that character is explicitly `staged` (e.g. a
410
410
  * background extra the director deliberately froze).
411
411
  * It also flags the absence of any gesture or any listener reaction, which the
412
- * prompt-to-scene proof asserts must both be present.
412
+ * prompt-scene proof asserts must both be present.
413
413
  *
414
414
  * `stagedStatic` lists character ids that are *allowed* to be motionless on purpose.
415
415
  */
@@ -462,7 +462,7 @@ export function validateDirectedActing(
462
462
  }
463
463
  }
464
464
 
465
- // (3) Variety asserts the prompt-to-scene proof depends on.
465
+ // (3) Variety asserts the prompt-scene proof depends on.
466
466
  const GESTURE_INTENTS = new Set<PerformanceClip>(["gesture", "point", "nod"]);
467
467
  if (!beats.some((b) => GESTURE_INTENTS.has(b.speakingIntent))) {
468
468
  issues.push({ code: "NO_GESTURE", message: "No speaker ever gestures/points/nods — acting is all talk." });