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