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