@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,86 @@
1
+ import type { AuraLibraryEntryShape, AuraLibraryManifestShape } from "@aura3d/asset-index";
2
+ import type { AuraCliAssetEntry } from "./asset-core-types.js";
3
+ /**
4
+ * PRD-05 §6.6 curated library.
5
+ *
6
+ * `aura.library.json` at the project root declares kits (the §6.6 table:
7
+ * characters/humanoid-pbr, vehicles/road, hdri, …) and entries. Each entry is
8
+ * an admitted asset whose bytes live under `assets/library/<kit>/`; a library
9
+ * member outranks every remote candidate in `assets search`/`resolve` (the
10
+ * `library` membership + `lookDevApproved` + `artDirection` terms in
11
+ * scoring.ts) and resolves by local copy instead of a network pull.
12
+ */
13
+ export declare const LIBRARY_SCHEMA = "aura3d.library/1.0";
14
+ export declare const LIBRARY_MANIFEST_FILE = "aura.library.json";
15
+ export declare const LIBRARY_DIR = "assets/library";
16
+ export interface AuraLibraryKit {
17
+ readonly id: string;
18
+ readonly artDirection?: string;
19
+ /** Human description of the kit contract (the §6.6 table row). */
20
+ readonly contents?: string;
21
+ readonly consumers?: readonly string[];
22
+ }
23
+ /**
24
+ * Library entry: the manifest-1.1 fields curated intake needs plus the
25
+ * adapter-facing shape (`AuraLibraryEntryShape`) it must satisfy. Kept as a
26
+ * standalone interface — `AuraCliAssetEntry` and the adapter shape disagree
27
+ * on a few field types, and satisfying both structurally is enough.
28
+ */
29
+ export interface AuraLibraryEntry extends AuraLibraryEntryShape {
30
+ readonly kit: string;
31
+ readonly sha256?: string;
32
+ readonly url?: string;
33
+ readonly hash?: string;
34
+ readonly outputPath?: string;
35
+ readonly role?: AuraCliAssetEntry["role"];
36
+ readonly quality?: AuraCliAssetEntry["quality"];
37
+ readonly admission?: AuraCliAssetEntry["admission"];
38
+ readonly lookDev?: AuraCliAssetEntry["lookDev"];
39
+ readonly derived?: AuraCliAssetEntry["derived"];
40
+ readonly provenance?: AuraCliAssetEntry["provenance"];
41
+ readonly gameplayCamera?: AuraCliAssetEntry["gameplayCamera"];
42
+ /** §6.7 HDRI environment entries: dominant-light direction (unit, equirect centroid of p99.9 luminance). */
43
+ readonly sunDirection?: readonly [number, number, number];
44
+ /** §6.7 HDRI: 99th-percentile relative luminance. */
45
+ readonly luminanceP99?: number;
46
+ /** §6.7 HDRI: estimated scene white balance (McCamy CCT). */
47
+ readonly whiteBalanceK?: number;
48
+ /**
49
+ * §6.6 intake record: the §6.2 optimize profile this entry is admitted under
50
+ * and where it stands (`pending` = optimize not yet run; `done` = derived
51
+ * written; `not-needed` = non-model formats like .hdr/.zip texture sets).
52
+ */
53
+ readonly optimizePlan?: {
54
+ readonly profile?: string;
55
+ readonly state: "pending" | "done" | "not-needed";
56
+ readonly notes?: string;
57
+ };
58
+ }
59
+ export interface AuraLibraryManifest extends AuraLibraryManifestShape {
60
+ readonly kits: readonly AuraLibraryKit[];
61
+ readonly entries: readonly AuraLibraryEntry[];
62
+ }
63
+ export declare function libraryManifestPath(projectDir: string): string;
64
+ export declare function readAuraLibrary(projectDir: string): AuraLibraryManifest | undefined;
65
+ export declare function writeAuraLibrary(projectDir: string, manifest: AuraLibraryManifest): void;
66
+ export interface LibraryAddOptions {
67
+ readonly projectDir: string;
68
+ readonly kit: string;
69
+ readonly entryId: string;
70
+ readonly sourceFile: string;
71
+ readonly entry: Omit<AuraLibraryEntry, "id" | "kit" | "libraryPath">;
72
+ /** Absolute target dir override (defaults to assets/library/<kit>/). */
73
+ readonly targetDir?: string;
74
+ }
75
+ export declare function addLibraryEntry(options: LibraryAddOptions): AuraLibraryEntry;
76
+ export interface LibrarySyncIssue {
77
+ readonly entryId: string;
78
+ readonly kit: string;
79
+ readonly issue: string;
80
+ }
81
+ /** Verify every entry's bytes exist and hash-match; returns the issue list (empty = clean). */
82
+ export declare function syncAuraLibrary(projectDir: string): {
83
+ readonly manifest: AuraLibraryManifest;
84
+ readonly issues: readonly LibrarySyncIssue[];
85
+ };
86
+ //# sourceMappingURL=library-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-manifest.d.ts","sourceRoot":"","sources":["../../../../packages/aura3d-cli/src/library-manifest.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D;;;;;;;;;GASG;AAEH,eAAO,MAAM,cAAc,uBAAuB,CAAC;AACnD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,WAAW,mBAAmB,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAC9D,4GAA4G;IAC5G,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,qDAAqD;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC;QAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACnE,QAAQ,CAAC,IAAI,EAAE,SAAS,cAAc,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC/C;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAQnF;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CASxF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,KAAK,GAAG,aAAa,CAAC,CAAC;IACrE,wEAAwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAqC5E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,CAgB5I"}
@@ -0,0 +1,95 @@
1
+ import { createHash } from "node:crypto";
2
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync, writeFileSync, } from "node:fs";
3
+ import { extname, join, resolve } from "node:path";
4
+ /**
5
+ * PRD-05 §6.6 curated library.
6
+ *
7
+ * `aura.library.json` at the project root declares kits (the §6.6 table:
8
+ * characters/humanoid-pbr, vehicles/road, hdri, …) and entries. Each entry is
9
+ * an admitted asset whose bytes live under `assets/library/<kit>/`; a library
10
+ * member outranks every remote candidate in `assets search`/`resolve` (the
11
+ * `library` membership + `lookDevApproved` + `artDirection` terms in
12
+ * scoring.ts) and resolves by local copy instead of a network pull.
13
+ */
14
+ export const LIBRARY_SCHEMA = "aura3d.library/1.0";
15
+ export const LIBRARY_MANIFEST_FILE = "aura.library.json";
16
+ export const LIBRARY_DIR = "assets/library";
17
+ export function libraryManifestPath(projectDir) {
18
+ return join(projectDir, LIBRARY_MANIFEST_FILE);
19
+ }
20
+ export function readAuraLibrary(projectDir) {
21
+ const path = libraryManifestPath(projectDir);
22
+ if (!existsSync(path))
23
+ return undefined;
24
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
25
+ if (parsed.schema !== LIBRARY_SCHEMA) {
26
+ throw new Error(`aura.library.json: unsupported schema "${parsed.schema}" (expected ${LIBRARY_SCHEMA})`);
27
+ }
28
+ return parsed;
29
+ }
30
+ export function writeAuraLibrary(projectDir, manifest) {
31
+ const path = libraryManifestPath(projectDir);
32
+ const out = {
33
+ ...manifest,
34
+ schema: LIBRARY_SCHEMA,
35
+ kits: [...manifest.kits],
36
+ entries: [...manifest.entries],
37
+ };
38
+ writeFileSync(path, `${JSON.stringify(out, null, 2)}\n`);
39
+ }
40
+ export function addLibraryEntry(options) {
41
+ const manifest = readAuraLibrary(options.projectDir) ?? {
42
+ schema: LIBRARY_SCHEMA,
43
+ kits: [],
44
+ entries: [],
45
+ };
46
+ const kit = manifest.kits.find((k) => k.id === options.kit);
47
+ if (!kit) {
48
+ throw new Error(`aura.library.json has no kit "${options.kit}" — declare it in kits[] first (§6.6 table).`);
49
+ }
50
+ if (manifest.entries.some((e) => e.kit === options.kit && e.id === options.entryId)) {
51
+ throw new Error(`library entry "${options.entryId}" already exists in kit "${options.kit}"`);
52
+ }
53
+ const ext = extname(options.sourceFile);
54
+ const targetDir = options.targetDir ?? join(options.projectDir, LIBRARY_DIR, options.kit);
55
+ mkdirSync(targetDir, { recursive: true });
56
+ const fileName = `${options.entryId}${ext}`;
57
+ const dest = join(targetDir, fileName);
58
+ copyFileSync(resolve(options.sourceFile), dest);
59
+ const libraryPath = `${LIBRARY_DIR}/${options.kit}/${fileName}`;
60
+ const bytes = statSync(dest).size;
61
+ const sha256 = createHash("sha256").update(readFileSync(dest)).digest("hex");
62
+ const entry = {
63
+ ...options.entry,
64
+ id: options.entryId,
65
+ kit: options.kit,
66
+ libraryPath,
67
+ sizeBytes: bytes,
68
+ sha256,
69
+ };
70
+ writeAuraLibrary(options.projectDir, {
71
+ ...manifest,
72
+ entries: [...manifest.entries, entry],
73
+ });
74
+ return entry;
75
+ }
76
+ /** Verify every entry's bytes exist and hash-match; returns the issue list (empty = clean). */
77
+ export function syncAuraLibrary(projectDir) {
78
+ const manifest = readAuraLibrary(projectDir);
79
+ if (!manifest)
80
+ throw new Error(`no ${LIBRARY_MANIFEST_FILE} found under ${projectDir}`);
81
+ const issues = [];
82
+ for (const entry of manifest.entries) {
83
+ const file = join(projectDir, entry.libraryPath);
84
+ if (!existsSync(file)) {
85
+ issues.push({ entryId: entry.id, kit: entry.kit, issue: `missing file ${entry.libraryPath}` });
86
+ continue;
87
+ }
88
+ const sha = createHash("sha256").update(readFileSync(file)).digest("hex");
89
+ if (entry.sha256 && sha !== entry.sha256) {
90
+ issues.push({ entryId: entry.id, kit: entry.kit, issue: `sha256 drift: manifest ${entry.sha256.slice(0, 12)}… vs file ${sha.slice(0, 12)}…` });
91
+ }
92
+ }
93
+ return { manifest, issues };
94
+ }
95
+ //# sourceMappingURL=library-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-manifest.js","sourceRoot":"","sources":["../../../../packages/aura3d-cli/src/library-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAInD;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAoD5C,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,IAAI,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAwB,CAAC;IAC7E,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,MAAM,eAAe,cAAc,GAAG,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,QAA6B;IAChF,MAAM,IAAI,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG;QACV,GAAG,QAAQ;QACX,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;QACxB,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;KAC/B,CAAC;IACF,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAYD,MAAM,UAAU,eAAe,CAAC,OAA0B;IACxD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;QACtD,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,iCAAiC,OAAO,CAAC,GAAG,8CAA8C,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,CAAC,OAAO,4BAA4B,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1F,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAqB;QAC9B,GAAG,OAAO,CAAC,KAAK;QAChB,EAAE,EAAE,OAAO,CAAC,OAAO;QACnB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,WAAW;QACX,SAAS,EAAE,KAAK;QAChB,MAAM;KACP,CAAC;IACF,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE;QACnC,GAAG,QAAQ;QACX,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;KACtC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAQD,+FAA+F;AAC/F,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,qBAAqB,gBAAgB,UAAU,EAAE,CAAC,CAAC;IACxF,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC/F,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1E,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,0BAA0B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACjJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * PRD-13 T2.16 — `look capture` command body.
3
+ * Registered as C-39 command `look capture` from commands/prd13/index.ts.
4
+ *
5
+ * `--runner gh-actions` (default): dispatches the scaffolded project's own
6
+ * `.github/workflows/aura3d-lookdev.yml` through the user's `gh` CLI auth —
7
+ * the command never sets or reads tokens itself — polls the run, then
8
+ * downloads the `lookdev` artifact into `--out` (default dist/lookdev/<round>).
9
+ *
10
+ * `--runner local`: runs the project's Playwright screenshot spec directly.
11
+ * Available only where the local environment permits it (Playwright package
12
+ * installed); the lane-wide remote-execution rule makes gh-actions the
13
+ * supported path on Devin/CI machines.
14
+ *
15
+ * Always exits 0 on a completed capture even when lint findings exist —
16
+ * lint.json is evidence, not a gate (the judge consumes it).
17
+ */
18
+ import type { AuraCliCommand } from "../contracts/commands.js";
19
+ export interface LookCaptureDeps {
20
+ /** Injected process runner (tests mock it); default spawns real commands. */
21
+ readonly exec?: (command: string, args: readonly string[], cwd: string) => {
22
+ readonly status: number;
23
+ readonly stdout: string;
24
+ readonly stderr: string;
25
+ };
26
+ /** Poll delay between gh run status checks (ms); tests pass 0. */
27
+ readonly pollMs?: number;
28
+ /** Max polls before giving up on a dispatched run. */
29
+ readonly maxPolls?: number;
30
+ /** Sleep implementation (tests inject a no-op). */
31
+ readonly sleep?: (ms: number) => void;
32
+ }
33
+ export interface LookCaptureResult {
34
+ readonly ok: boolean;
35
+ readonly runner: "gh-actions" | "local";
36
+ readonly outDir: string;
37
+ readonly pngs: readonly string[];
38
+ readonly appliedLookPath?: string;
39
+ readonly lintPath?: string;
40
+ readonly lintErrors: number;
41
+ readonly error?: string;
42
+ }
43
+ /** Next free round number under <cwd>/dist/lookdev/. */
44
+ export declare function nextLookdevRound(cwd: string): number;
45
+ export declare function runLookCapture(argv: readonly string[], io: {
46
+ readonly cwd: string;
47
+ stdout(s: string): void;
48
+ stderr(s: string): void;
49
+ }, deps?: LookCaptureDeps): Promise<number>;
50
+ export declare const lookCaptureCommand: AuraCliCommand;
51
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/look/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzJ,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AA8BD,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOpD;AAqDD,wBAAsB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsGzL;AAED,eAAO,MAAM,kBAAkB,EAAE,cAMhC,CAAC"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * PRD-13 T2.16 — `look capture` command body.
3
+ * Registered as C-39 command `look capture` from commands/prd13/index.ts.
4
+ *
5
+ * `--runner gh-actions` (default): dispatches the scaffolded project's own
6
+ * `.github/workflows/aura3d-lookdev.yml` through the user's `gh` CLI auth —
7
+ * the command never sets or reads tokens itself — polls the run, then
8
+ * downloads the `lookdev` artifact into `--out` (default dist/lookdev/<round>).
9
+ *
10
+ * `--runner local`: runs the project's Playwright screenshot spec directly.
11
+ * Available only where the local environment permits it (Playwright package
12
+ * installed); the lane-wide remote-execution rule makes gh-actions the
13
+ * supported path on Devin/CI machines.
14
+ *
15
+ * Always exits 0 on a completed capture even when lint findings exist —
16
+ * lint.json is evidence, not a gate (the judge consumes it).
17
+ */
18
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
19
+ import { spawnSync } from "node:child_process";
20
+ import { join, resolve } from "node:path";
21
+ function parseArgs(argv) {
22
+ const flags = new Map();
23
+ const switches = new Set();
24
+ for (let i = 0; i < argv.length; i++) {
25
+ const arg = argv[i];
26
+ if (arg.startsWith("--")) {
27
+ const next = argv[i + 1];
28
+ if (next !== undefined && !next.startsWith("--")) {
29
+ flags.set(arg.slice(2), next);
30
+ i += 1;
31
+ }
32
+ else {
33
+ switches.add(arg.slice(2));
34
+ }
35
+ }
36
+ }
37
+ return { flags, switches };
38
+ }
39
+ function defaultExec(command, args, cwd) {
40
+ const result = spawnSync(command, [...args], { cwd, encoding: "utf8", shell: process.platform === "win32" });
41
+ return { status: result.status ?? 1, stdout: String(result.stdout ?? ""), stderr: String(result.stderr ?? "") };
42
+ }
43
+ /** Next free round number under <cwd>/dist/lookdev/. */
44
+ export function nextLookdevRound(cwd) {
45
+ const root = resolve(cwd, "dist/lookdev");
46
+ if (!existsSync(root))
47
+ return 1;
48
+ const rounds = readdirSync(root, { withFileTypes: true })
49
+ .filter((entry) => entry.isDirectory() && /^\d+$/.test(entry.name))
50
+ .map((entry) => Number(entry.name));
51
+ return rounds.length === 0 ? 1 : Math.max(...rounds) + 1;
52
+ }
53
+ /** Collect .png files anywhere under dir (artifacts may nest). */
54
+ function collectPngs(dir) {
55
+ const out = [];
56
+ const visit = (d) => {
57
+ for (const entry of readdirSync(d, { withFileTypes: true })) {
58
+ const path = join(d, entry.name);
59
+ if (entry.isDirectory())
60
+ visit(path);
61
+ else if (entry.name.endsWith(".png"))
62
+ out.push(path);
63
+ }
64
+ };
65
+ if (existsSync(dir))
66
+ visit(dir);
67
+ return out.sort();
68
+ }
69
+ /**
70
+ * Emit appliedLook.json + lint.json next to the captures. Sources, in order:
71
+ * tests/reports/screenshot.json profile fields (the T3.12 screenshot spec
72
+ * writes lint findings into the report), then any lint.json/appLook.json the
73
+ * artifact already carried.
74
+ */
75
+ function emitLookReports(outDir) {
76
+ let appliedLook;
77
+ let lint;
78
+ const screenshotJson = join(outDir, "screenshot.json");
79
+ if (existsSync(screenshotJson)) {
80
+ try {
81
+ const report = JSON.parse(readFileSync(screenshotJson, "utf8"));
82
+ const profile = report.profile ?? {};
83
+ appliedLook = profile.appliedLook ?? profile.look;
84
+ lint = profile.lint;
85
+ }
86
+ catch { /* tolerate malformed report; emit empty files below */ }
87
+ }
88
+ for (const name of ["appliedLook.json", "applied-look.json"]) {
89
+ const candidate = join(outDir, name);
90
+ if (appliedLook === undefined && existsSync(candidate)) {
91
+ try {
92
+ appliedLook = JSON.parse(readFileSync(candidate, "utf8"));
93
+ }
94
+ catch { /* ignore */ }
95
+ }
96
+ }
97
+ const lintCandidate = join(outDir, "lint.json");
98
+ if (lint === undefined && existsSync(lintCandidate)) {
99
+ try {
100
+ lint = JSON.parse(readFileSync(lintCandidate, "utf8"));
101
+ }
102
+ catch { /* ignore */ }
103
+ }
104
+ const appliedLookPath = join(outDir, "appliedLook.json");
105
+ writeFileSync(appliedLookPath, `${JSON.stringify(appliedLook ?? {}, null, 2)}\n`);
106
+ const lintPath = join(outDir, "lint.json");
107
+ writeFileSync(lintPath, `${JSON.stringify(lint ?? { findings: [] }, null, 2)}\n`);
108
+ const findings = lint?.findings ?? [];
109
+ const lintErrors = findings.filter((finding) => finding.severity === "error").length;
110
+ return { appliedLookPath, lintPath, lintErrors };
111
+ }
112
+ export async function runLookCapture(argv, io, deps = {}) {
113
+ const { flags, switches } = parseArgs(argv);
114
+ const asJson = switches.has("json");
115
+ const runner = flags.get("runner") ?? "gh-actions";
116
+ if (runner !== "gh-actions" && runner !== "local") {
117
+ io.stderr(`unknown --runner "${runner}"; use gh-actions or local`);
118
+ return 2;
119
+ }
120
+ const exec = deps.exec ?? defaultExec;
121
+ const sleepBuffer = new Int32Array(new SharedArrayBuffer(4));
122
+ const sleep = deps.sleep ?? ((ms) => Atomics.wait(sleepBuffer, 0, 0, ms));
123
+ const pollMs = deps.pollMs ?? 5000;
124
+ const maxPolls = deps.maxPolls ?? 120;
125
+ const outDir = resolve(io.cwd, flags.get("out") ?? `dist/lookdev/${nextLookdevRound(io.cwd)}`);
126
+ mkdirSync(outDir, { recursive: true });
127
+ const shots = flags.get("shots");
128
+ const viewports = flags.get("viewports");
129
+ const finish = (result) => {
130
+ if (asJson) {
131
+ io.stdout(JSON.stringify(result, null, 2));
132
+ }
133
+ else {
134
+ if (!result.ok)
135
+ io.stderr(result.error ?? "capture failed");
136
+ for (const png of result.pngs)
137
+ io.stdout(`png: ${png}`);
138
+ if (result.appliedLookPath)
139
+ io.stdout(`appliedLook: ${result.appliedLookPath}`);
140
+ if (result.lintPath)
141
+ io.stdout(`lint: ${result.lintPath} (${result.lintErrors} error findings — reported, not gating)`);
142
+ }
143
+ // Spec: exit 0 on completed capture even when lint has errors.
144
+ return result.ok ? 0 : 2;
145
+ };
146
+ if (runner === "local") {
147
+ const playwrightBin = join(io.cwd, "node_modules", ".bin", process.platform === "win32" ? "playwright.cmd" : "playwright");
148
+ if (!existsSync(playwrightBin) && exec("pnpm", ["exec", "playwright", "--version"], io.cwd).status !== 0) {
149
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: "local runner unavailable: playwright is not installed in this project (use --runner gh-actions)" });
150
+ }
151
+ // shots/viewports reach the spec through the same env vars the
152
+ // aura3d-lookdev.yml workflow sets (A3D_LOOKDEV_SHOTS/VIEWPORTS); exec()
153
+ // spawns with inherited env, so callers/tests set them on the process.
154
+ void shots;
155
+ void viewports;
156
+ const result = exec("pnpm", ["exec", "playwright", "test", "tests/screenshot.spec.ts", "--reporter=line", "--workers=1"], io.cwd);
157
+ if (result.status !== 0) {
158
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: `local playwright run failed: ${result.stderr || result.stdout}` });
159
+ }
160
+ const reportsDir = resolve(io.cwd, "tests/reports");
161
+ for (const file of collectPngs(reportsDir)) {
162
+ const dest = join(outDir, file.slice(reportsDir.length + 1));
163
+ mkdirSync(join(dest, ".."), { recursive: true });
164
+ writeFileSync(dest, readFileSync(file));
165
+ }
166
+ for (const json of ["screenshot.json", "appliedLook.json", "lint.json"]) {
167
+ const src = join(reportsDir, json);
168
+ if (existsSync(src))
169
+ writeFileSync(join(outDir, json), readFileSync(src));
170
+ }
171
+ const reports = emitLookReports(outDir);
172
+ return finish({ ok: true, runner, outDir, pngs: collectPngs(outDir), ...reports });
173
+ }
174
+ // --runner gh-actions: use the user's gh auth; never set/read tokens.
175
+ if (exec("gh", ["--version"], io.cwd).status !== 0) {
176
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: "gh CLI not found; install https://cli.github.com or use --runner local" });
177
+ }
178
+ const workflowFile = resolve(io.cwd, ".github/workflows/aura3d-lookdev.yml");
179
+ if (!existsSync(workflowFile)) {
180
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: "no .github/workflows/aura3d-lookdev.yml in this project (templates ship it by default)" });
181
+ }
182
+ const dispatchArgs = ["workflow", "run", "aura3d-lookdev.yml"];
183
+ if (shots)
184
+ dispatchArgs.push("-f", `shots=${shots}`);
185
+ if (viewports)
186
+ dispatchArgs.push("-f", `viewports=${viewports}`);
187
+ const dispatch = exec("gh", dispatchArgs, io.cwd);
188
+ if (dispatch.status !== 0) {
189
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: `gh workflow run failed: ${dispatch.stderr || dispatch.stdout}` });
190
+ }
191
+ // Poll the newest run of the workflow until it completes.
192
+ let runId;
193
+ for (let poll = 0; poll < maxPolls; poll++) {
194
+ const list = exec("gh", ["run", "list", "--workflow=aura3d-lookdev.yml", "--limit", "1", "--json", "databaseId,status,conclusion"], io.cwd);
195
+ if (list.status === 0) {
196
+ try {
197
+ const [run] = JSON.parse(list.stdout);
198
+ if (run?.databaseId !== undefined) {
199
+ runId = String(run.databaseId);
200
+ if (run.status === "completed") {
201
+ if (run.conclusion === "success")
202
+ break;
203
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: `look-dev run ${runId} concluded ${run.conclusion}` });
204
+ }
205
+ }
206
+ }
207
+ catch { /* gh emitted non-JSON; keep polling */ }
208
+ }
209
+ sleep(pollMs);
210
+ }
211
+ if (!runId) {
212
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: "no aura3d-lookdev run appeared after dispatch" });
213
+ }
214
+ // Completed? Re-check status once more after the loop exits on success only.
215
+ const download = exec("gh", ["run", "download", runId, "--name", "lookdev", "--dir", outDir], io.cwd);
216
+ if (download.status !== 0) {
217
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: `gh run download failed: ${download.stderr || download.stdout}` });
218
+ }
219
+ const reports = emitLookReports(outDir);
220
+ return finish({ ok: true, runner, outDir, pngs: collectPngs(outDir), ...reports });
221
+ }
222
+ export const lookCaptureCommand = {
223
+ name: "look capture",
224
+ owner: "prd13",
225
+ summary: "Capture look-dev screenshots via the project's lookdev workflow (gh-actions) or local Playwright",
226
+ usage: "aura3d look capture [--route /] [--shots opening,mid,action] [--viewports desktop,mobile] [--runner gh-actions|local] [--out dist/lookdev/<n>] [--json]",
227
+ run: (argv, io) => runLookCapture(argv, io)
228
+ };
229
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/look/capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * PRD-13 T2.17 — `look judge` + `look rubric` command bodies.
3
+ * Registered as C-39 commands from commands/prd13/index.ts.
4
+ *
5
+ * `look judge --validate <file>` validates a LookJudgement and reports the
6
+ * per-category scores, weakest category and next-change hint.
7
+ * `--judge prism` delegates to C-32 judgeWithPrism when the provider ships it;
8
+ * while the export is absent the command exits 2 with `judge-unavailable`
9
+ * rather than fabricating a score (no new provider code here).
10
+ */
11
+ import type { AuraCliCommand } from "../contracts/commands.js";
12
+ export declare function runLookJudge(argv: readonly string[], io: {
13
+ readonly cwd: string;
14
+ stdout(s: string): void;
15
+ stderr(s: string): void;
16
+ }): Promise<number>;
17
+ export declare function runLookRubric(argv: readonly string[], io: {
18
+ readonly cwd: string;
19
+ stdout(s: string): void;
20
+ stderr(s: string): void;
21
+ }): number;
22
+ export declare const lookJudgeCommand: AuraCliCommand;
23
+ export declare const lookRubricCommand: AuraCliCommand;
24
+ //# sourceMappingURL=judge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/look/judge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAyB/D,wBAAsB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwE3J;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,CA4B7I;AAED,eAAO,MAAM,gBAAgB,EAAE,cAM9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,cAM/B,CAAC"}