@hypersoniclabs/helix-cli 0.1.7 → 0.1.24-helix3.438

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 (1715) hide show
  1. package/README.md +631 -8
  2. package/assets/bridge/metahuman-eye-baked.png +0 -0
  3. package/assets/item-def-sounds/Common/A_DryShot.ogg +0 -0
  4. package/assets/item-def-sounds/Common/A_LMG_CloseCoverA.ogg +0 -0
  5. package/assets/item-def-sounds/Common/A_LMG_CloseCoverB.ogg +0 -0
  6. package/assets/item-def-sounds/Common/A_LMG_InsertMag.ogg +0 -0
  7. package/assets/item-def-sounds/Common/A_LMG_RemoveMag.ogg +0 -0
  8. package/assets/item-def-sounds/Common/A_Pistol_InsertMag_001.ogg +0 -0
  9. package/assets/item-def-sounds/Common/A_Pistol_InsertMag_002.ogg +0 -0
  10. package/assets/item-def-sounds/Common/A_Pistol_InsertMag_003.ogg +0 -0
  11. package/assets/item-def-sounds/Common/A_Pistol_RemoveMag_001.ogg +0 -0
  12. package/assets/item-def-sounds/Common/A_Pistol_RemoveMag_002.ogg +0 -0
  13. package/assets/item-def-sounds/Common/A_Pistol_RemoveMag_003.ogg +0 -0
  14. package/assets/item-def-sounds/Common/A_Rifle_ChargingHandle_001.ogg +0 -0
  15. package/assets/item-def-sounds/Common/A_Rifle_ChargingHandle_002.ogg +0 -0
  16. package/assets/item-def-sounds/Common/A_Rifle_ChargingHandle_003.ogg +0 -0
  17. package/assets/item-def-sounds/Common/A_Rifle_InsertMag_001.ogg +0 -0
  18. package/assets/item-def-sounds/Common/A_Rifle_InsertMag_002.ogg +0 -0
  19. package/assets/item-def-sounds/Common/A_Rifle_InsertMag_003.ogg +0 -0
  20. package/assets/item-def-sounds/Common/A_Rifle_RemoveMag_001.ogg +0 -0
  21. package/assets/item-def-sounds/Common/A_Rifle_RemoveMag_002.ogg +0 -0
  22. package/assets/item-def-sounds/Common/A_Rifle_RemoveMag_003.ogg +0 -0
  23. package/assets/item-def-sounds/Common/A_SMG_ChargingHandle_001.ogg +0 -0
  24. package/assets/item-def-sounds/Common/A_SMG_ChargingHandle_002.ogg +0 -0
  25. package/assets/item-def-sounds/Common/A_SMG_ChargingHandle_003.ogg +0 -0
  26. package/assets/item-def-sounds/Common/A_Sniper_ChargingHandle.ogg +0 -0
  27. package/assets/item-def-sounds/Common/A_Sniper_RemoveMag_001.ogg +0 -0
  28. package/assets/item-def-sounds/Common/A_Sniper_RemoveMag_002.ogg +0 -0
  29. package/assets/item-def-sounds/Common/A_Sniper_RemoveMag_003.ogg +0 -0
  30. package/assets/item-def-sounds/Explosions/Explosions_Grenade_Punch-Close_01.ogg +0 -0
  31. package/assets/item-def-sounds/Explosions/Explosions_Grenade_Punch-Close_02.ogg +0 -0
  32. package/assets/item-def-sounds/Explosions/Explosions_Grenade_Punch-Close_03.ogg +0 -0
  33. package/assets/item-def-sounds/LMG/A_LWS-32_Shot_001.ogg +0 -0
  34. package/assets/item-def-sounds/LMG/A_LWS-32_Shot_002.ogg +0 -0
  35. package/assets/item-def-sounds/LMG/A_LWS-32_Shot_003.ogg +0 -0
  36. package/assets/item-def-sounds/Pistol/A_Gaston_Shot_001.ogg +0 -0
  37. package/assets/item-def-sounds/Pistol/A_Gaston_Shot_002.ogg +0 -0
  38. package/assets/item-def-sounds/Pistol/A_Gaston_Shot_003.ogg +0 -0
  39. package/assets/item-def-sounds/Rifle/A_KAL_Shot_001.ogg +0 -0
  40. package/assets/item-def-sounds/Rifle/A_KAL_Shot_002.ogg +0 -0
  41. package/assets/item-def-sounds/Rifle/A_KAL_Shot_003.ogg +0 -0
  42. package/assets/item-def-sounds/SMG/A_Bison_InsertMag.ogg +0 -0
  43. package/assets/item-def-sounds/SMG/A_Bison_RemoveMag.ogg +0 -0
  44. package/assets/item-def-sounds/SMG/A_Bison_Shot_001.ogg +0 -0
  45. package/assets/item-def-sounds/SMG/A_Bison_Shot_002.ogg +0 -0
  46. package/assets/item-def-sounds/SMG/A_Bison_Shot_003.ogg +0 -0
  47. package/assets/item-def-sounds/Shotgun/A_DB-12_Shot_001.ogg +0 -0
  48. package/assets/item-def-sounds/Shotgun/A_DB-12_Shot_002.ogg +0 -0
  49. package/assets/item-def-sounds/Shotgun/A_DB-12_Shot_003.ogg +0 -0
  50. package/assets/item-def-sounds/Sniper/A_CS-446_Shot_001.ogg +0 -0
  51. package/assets/item-def-sounds/Sniper/A_CS-446_Shot_002.ogg +0 -0
  52. package/assets/item-def-sounds/Sniper/A_CS-446_Shot_003.ogg +0 -0
  53. package/bridge-plugins/helix.bridge.unreal/bin/unreal-skeletal-mesh-extract.js +812 -0
  54. package/bridge-plugins/helix.bridge.unreal/bridge-plugin.json +40 -0
  55. package/bridge-plugins/helix.bridge.unreal/test/exporter.test.js +418 -0
  56. package/bridge-plugins/helix.bridge.unreal/test/handler.test.js +417 -0
  57. package/bridge-plugins/helix.bridge.unreal/unreal/export_skeletal_mesh.py +384 -0
  58. package/bridge-recipes/cyberpunk/cyberpunk-female-bone-map.json +476 -0
  59. package/bridge-recipes/sims4/README.md +43 -0
  60. package/bridge-recipes/sims4/sims4-female-bone-map.json +65 -0
  61. package/bridge-recipes/unreal/character-customizer/README.md +58 -0
  62. package/bridge-recipes/unreal/character-customizer/all.json +13 -0
  63. package/bridge-recipes/unreal/character-customizer/base-male-body.json +6 -0
  64. package/bridge-recipes/unreal/character-customizer/base-male-head.json +6 -0
  65. package/bridge-recipes/unreal/character-customizer/beard.addon.json +1 -0
  66. package/bridge-recipes/unreal/character-customizer/beard.json +6 -0
  67. package/bridge-recipes/unreal/character-customizer/bottom.addon.json +1 -0
  68. package/bridge-recipes/unreal/character-customizer/bottom.json +6 -0
  69. package/bridge-recipes/unreal/character-customizer/eyewear.addon.json +1 -0
  70. package/bridge-recipes/unreal/character-customizer/eyewear.json +6 -0
  71. package/bridge-recipes/unreal/character-customizer/footwear.addon.json +1 -0
  72. package/bridge-recipes/unreal/character-customizer/footwear.json +6 -0
  73. package/bridge-recipes/unreal/character-customizer/hair.addon.json +1 -0
  74. package/bridge-recipes/unreal/character-customizer/hair.json +6 -0
  75. package/bridge-recipes/unreal/character-customizer/test/recipes.test.js +74 -0
  76. package/bridge-recipes/unreal/character-customizer/top.addon.json +1 -0
  77. package/bridge-recipes/unreal/character-customizer/top.json +6 -0
  78. package/bridge-recipes/unreal/helix-character-creator-female/README.md +57 -0
  79. package/bridge-recipes/unreal/helix-character-creator-female/all.json +18 -0
  80. package/bridge-recipes/unreal/helix-character-creator-female/back.addon.json +1 -0
  81. package/bridge-recipes/unreal/helix-character-creator-female/back.json +1 -0
  82. package/bridge-recipes/unreal/helix-character-creator-female/base-female-face.json +1 -0
  83. package/bridge-recipes/unreal/helix-character-creator-female/base-female.json +1 -0
  84. package/bridge-recipes/unreal/helix-character-creator-female/bottom.addon.json +1 -0
  85. package/bridge-recipes/unreal/helix-character-creator-female/bottom.json +1 -0
  86. package/bridge-recipes/unreal/helix-character-creator-female/eyewear.addon.json +1 -0
  87. package/bridge-recipes/unreal/helix-character-creator-female/eyewear.json +1 -0
  88. package/bridge-recipes/unreal/helix-character-creator-female/female-basic-t-shirt.addon.json +1 -0
  89. package/bridge-recipes/unreal/helix-character-creator-female/female-basic-t-shirt.json +1 -0
  90. package/bridge-recipes/unreal/helix-character-creator-female/female-batch-hair.json +23 -0
  91. package/bridge-recipes/unreal/helix-character-creator-female/female-batch-nebula-urbanghost.json +7 -0
  92. package/bridge-recipes/unreal/helix-character-creator-female/female-batch-singles.json +19 -0
  93. package/bridge-recipes/unreal/helix-character-creator-female/female-batch5.json +19 -0
  94. package/bridge-recipes/unreal/helix-character-creator-female/female-batch6.json +19 -0
  95. package/bridge-recipes/unreal/helix-character-creator-female/female-batch7.json +11 -0
  96. package/bridge-recipes/unreal/helix-character-creator-female/female-cap-2.addon.json +1 -0
  97. package/bridge-recipes/unreal/helix-character-creator-female/female-cap-2.json +1 -0
  98. package/bridge-recipes/unreal/helix-character-creator-female/female-cap.addon.json +1 -0
  99. package/bridge-recipes/unreal/helix-character-creator-female/female-cap.json +1 -0
  100. package/bridge-recipes/unreal/helix-character-creator-female/female-cargo-pants.addon.json +1 -0
  101. package/bridge-recipes/unreal/helix-character-creator-female/female-cargo-pants.json +1 -0
  102. package/bridge-recipes/unreal/helix-character-creator-female/female-carnival-mask-3.addon.json +1 -0
  103. package/bridge-recipes/unreal/helix-character-creator-female/female-carnival-mask-3.json +1 -0
  104. package/bridge-recipes/unreal/helix-character-creator-female/female-chain.addon.json +1 -0
  105. package/bridge-recipes/unreal/helix-character-creator-female/female-chain.json +1 -0
  106. package/bridge-recipes/unreal/helix-character-creator-female/female-clare-pants.addon.json +1 -0
  107. package/bridge-recipes/unreal/helix-character-creator-female/female-clare-pants.json +1 -0
  108. package/bridge-recipes/unreal/helix-character-creator-female/female-clare-shoes.addon.json +1 -0
  109. package/bridge-recipes/unreal/helix-character-creator-female/female-clare-shoes.json +1 -0
  110. package/bridge-recipes/unreal/helix-character-creator-female/female-clare-top.addon.json +1 -0
  111. package/bridge-recipes/unreal/helix-character-creator-female/female-clare-top.json +1 -0
  112. package/bridge-recipes/unreal/helix-character-creator-female/female-compression-bodysuit-2.addon.json +1 -0
  113. package/bridge-recipes/unreal/helix-character-creator-female/female-compression-bodysuit-2.json +1 -0
  114. package/bridge-recipes/unreal/helix-character-creator-female/female-compression-bodysuit.addon.json +1 -0
  115. package/bridge-recipes/unreal/helix-character-creator-female/female-compression-bodysuit.json +1 -0
  116. package/bridge-recipes/unreal/helix-character-creator-female/female-eye-hole-mask-2.addon.json +1 -0
  117. package/bridge-recipes/unreal/helix-character-creator-female/female-eye-hole-mask-2.json +1 -0
  118. package/bridge-recipes/unreal/helix-character-creator-female/female-eye-patch.addon.json +1 -0
  119. package/bridge-recipes/unreal/helix-character-creator-female/female-eye-patch.json +1 -0
  120. package/bridge-recipes/unreal/helix-character-creator-female/female-firefight-outfit.addon.json +1 -0
  121. package/bridge-recipes/unreal/helix-character-creator-female/female-firefight-outfit.json +1 -0
  122. package/bridge-recipes/unreal/helix-character-creator-female/female-fruity-pants.addon.json +1 -0
  123. package/bridge-recipes/unreal/helix-character-creator-female/female-fruity-pants.json +1 -0
  124. package/bridge-recipes/unreal/helix-character-creator-female/female-fruity-sneakers.addon.json +1 -0
  125. package/bridge-recipes/unreal/helix-character-creator-female/female-fruity-sneakers.json +1 -0
  126. package/bridge-recipes/unreal/helix-character-creator-female/female-fruity-top.addon.json +1 -0
  127. package/bridge-recipes/unreal/helix-character-creator-female/female-fruity-top.json +1 -0
  128. package/bridge-recipes/unreal/helix-character-creator-female/female-gamer-mask.addon.json +1 -0
  129. package/bridge-recipes/unreal/helix-character-creator-female/female-gamer-mask.json +1 -0
  130. package/bridge-recipes/unreal/helix-character-creator-female/female-guy-fawkes-mask.addon.json +1 -0
  131. package/bridge-recipes/unreal/helix-character-creator-female/female-guy-fawkes-mask.json +1 -0
  132. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a1.addon.json +1 -0
  133. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a1.json +1 -0
  134. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a10.addon.json +1 -0
  135. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a10.json +1 -0
  136. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a11.addon.json +1 -0
  137. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a11.json +1 -0
  138. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a12.addon.json +1 -0
  139. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a12.json +1 -0
  140. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a13.addon.json +1 -0
  141. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a13.json +1 -0
  142. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a14.addon.json +1 -0
  143. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a14.json +1 -0
  144. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a15.addon.json +1 -0
  145. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a15.json +1 -0
  146. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a16.addon.json +1 -0
  147. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a16.json +1 -0
  148. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a17.addon.json +1 -0
  149. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a17.json +1 -0
  150. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a18.addon.json +1 -0
  151. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a18.json +1 -0
  152. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a19.addon.json +1 -0
  153. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a19.json +1 -0
  154. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a2.addon.json +1 -0
  155. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a2.json +1 -0
  156. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a20.addon.json +1 -0
  157. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a20.json +1 -0
  158. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a21.addon.json +1 -0
  159. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a21.json +1 -0
  160. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a3.addon.json +1 -0
  161. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a3.json +1 -0
  162. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a4.addon.json +1 -0
  163. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a4.json +1 -0
  164. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a5.addon.json +1 -0
  165. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a5.json +1 -0
  166. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a6.addon.json +1 -0
  167. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a6.json +1 -0
  168. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a7.addon.json +1 -0
  169. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a7.json +1 -0
  170. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a8.addon.json +1 -0
  171. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a8.json +1 -0
  172. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a9.addon.json +1 -0
  173. package/bridge-recipes/unreal/helix-character-creator-female/female-hair-a9.json +1 -0
  174. package/bridge-recipes/unreal/helix-character-creator-female/female-high-waist-tailored-trousers.addon.json +1 -0
  175. package/bridge-recipes/unreal/helix-character-creator-female/female-high-waist-tailored-trousers.json +1 -0
  176. package/bridge-recipes/unreal/helix-character-creator-female/female-hogwarts-pants.addon.json +1 -0
  177. package/bridge-recipes/unreal/helix-character-creator-female/female-hogwarts-pants.json +1 -0
  178. package/bridge-recipes/unreal/helix-character-creator-female/female-hoody.addon.json +1 -0
  179. package/bridge-recipes/unreal/helix-character-creator-female/female-hoody.json +1 -0
  180. package/bridge-recipes/unreal/helix-character-creator-female/female-jacket-6.addon.json +1 -0
  181. package/bridge-recipes/unreal/helix-character-creator-female/female-jacket-6.json +1 -0
  182. package/bridge-recipes/unreal/helix-character-creator-female/female-joker-mask.addon.json +1 -0
  183. package/bridge-recipes/unreal/helix-character-creator-female/female-joker-mask.json +1 -0
  184. package/bridge-recipes/unreal/helix-character-creator-female/female-kombes-brown.addon.json +1 -0
  185. package/bridge-recipes/unreal/helix-character-creator-female/female-kombes-brown.json +1 -0
  186. package/bridge-recipes/unreal/helix-character-creator-female/female-kombes.addon.json +1 -0
  187. package/bridge-recipes/unreal/helix-character-creator-female/female-kombes.json +1 -0
  188. package/bridge-recipes/unreal/helix-character-creator-female/female-marshmallow-mask.addon.json +1 -0
  189. package/bridge-recipes/unreal/helix-character-creator-female/female-marshmallow-mask.json +1 -0
  190. package/bridge-recipes/unreal/helix-character-creator-female/female-maska.addon.json +1 -0
  191. package/bridge-recipes/unreal/helix-character-creator-female/female-maska.json +1 -0
  192. package/bridge-recipes/unreal/helix-character-creator-female/female-nebula-executive-pants.addon.json +1 -0
  193. package/bridge-recipes/unreal/helix-character-creator-female/female-nebula-executive-pants.json +1 -0
  194. package/bridge-recipes/unreal/helix-character-creator-female/female-nebula-executive-shoes.addon.json +1 -0
  195. package/bridge-recipes/unreal/helix-character-creator-female/female-nebula-executive-shoes.json +1 -0
  196. package/bridge-recipes/unreal/helix-character-creator-female/female-ninza-costume.addon.json +1 -0
  197. package/bridge-recipes/unreal/helix-character-creator-female/female-ninza-costume.json +1 -0
  198. package/bridge-recipes/unreal/helix-character-creator-female/female-orange-kombes.addon.json +1 -0
  199. package/bridge-recipes/unreal/helix-character-creator-female/female-orange-kombes.json +1 -0
  200. package/bridge-recipes/unreal/helix-character-creator-female/female-panama.addon.json +1 -0
  201. package/bridge-recipes/unreal/helix-character-creator-female/female-panama.json +1 -0
  202. package/bridge-recipes/unreal/helix-character-creator-female/female-panda-bag-2.addon.json +1 -0
  203. package/bridge-recipes/unreal/helix-character-creator-female/female-panda-bag-2.json +1 -0
  204. package/bridge-recipes/unreal/helix-character-creator-female/female-pantslow.addon.json +1 -0
  205. package/bridge-recipes/unreal/helix-character-creator-female/female-pantslow.json +1 -0
  206. package/bridge-recipes/unreal/helix-character-creator-female/female-paper-bag-mask.addon.json +1 -0
  207. package/bridge-recipes/unreal/helix-character-creator-female/female-paper-bag-mask.json +1 -0
  208. package/bridge-recipes/unreal/helix-character-creator-female/female-pig-mask.addon.json +1 -0
  209. package/bridge-recipes/unreal/helix-character-creator-female/female-pig-mask.json +1 -0
  210. package/bridge-recipes/unreal/helix-character-creator-female/female-police-uniform.addon.json +1 -0
  211. package/bridge-recipes/unreal/helix-character-creator-female/female-police-uniform.json +1 -0
  212. package/bridge-recipes/unreal/helix-character-creator-female/female-prison-outfit.addon.json +1 -0
  213. package/bridge-recipes/unreal/helix-character-creator-female/female-prison-outfit.json +1 -0
  214. package/bridge-recipes/unreal/helix-character-creator-female/female-short-b4low.addon.json +1 -0
  215. package/bridge-recipes/unreal/helix-character-creator-female/female-short-b4low.json +1 -0
  216. package/bridge-recipes/unreal/helix-character-creator-female/female-short-swimming.addon.json +1 -0
  217. package/bridge-recipes/unreal/helix-character-creator-female/female-short-swimming.json +1 -0
  218. package/bridge-recipes/unreal/helix-character-creator-female/female-shortlow.addon.json +1 -0
  219. package/bridge-recipes/unreal/helix-character-creator-female/female-shortlow.json +1 -0
  220. package/bridge-recipes/unreal/helix-character-creator-female/female-shorts-b3.addon.json +1 -0
  221. package/bridge-recipes/unreal/helix-character-creator-female/female-shorts-b3.json +1 -0
  222. package/bridge-recipes/unreal/helix-character-creator-female/female-sterile-gloves.addon.json +1 -0
  223. package/bridge-recipes/unreal/helix-character-creator-female/female-sterile-gloves.json +1 -0
  224. package/bridge-recipes/unreal/helix-character-creator-female/female-surgeon-mask.addon.json +1 -0
  225. package/bridge-recipes/unreal/helix-character-creator-female/female-surgeon-mask.json +1 -0
  226. package/bridge-recipes/unreal/helix-character-creator-female/female-swat.addon.json +1 -0
  227. package/bridge-recipes/unreal/helix-character-creator-female/female-swat.json +1 -0
  228. package/bridge-recipes/unreal/helix-character-creator-female/female-top.addon.json +1 -0
  229. package/bridge-recipes/unreal/helix-character-creator-female/female-top.json +1 -0
  230. package/bridge-recipes/unreal/helix-character-creator-female/female-topx1.addon.json +1 -0
  231. package/bridge-recipes/unreal/helix-character-creator-female/female-topx1.json +1 -0
  232. package/bridge-recipes/unreal/helix-character-creator-female/female-urban-ghost-hoodie.addon.json +1 -0
  233. package/bridge-recipes/unreal/helix-character-creator-female/female-urban-ghost-hoodie.json +1 -0
  234. package/bridge-recipes/unreal/helix-character-creator-female/female-urban-ghost-mask.addon.json +1 -0
  235. package/bridge-recipes/unreal/helix-character-creator-female/female-urban-ghost-mask.json +1 -0
  236. package/bridge-recipes/unreal/helix-character-creator-female/female-urban-ghost-pants.addon.json +1 -0
  237. package/bridge-recipes/unreal/helix-character-creator-female/female-urban-ghost-pants.json +1 -0
  238. package/bridge-recipes/unreal/helix-character-creator-female/female-warehouse-uniform.addon.json +1 -0
  239. package/bridge-recipes/unreal/helix-character-creator-female/female-warehouse-uniform.json +1 -0
  240. package/bridge-recipes/unreal/helix-character-creator-female/female-wide-top.addon.json +1 -0
  241. package/bridge-recipes/unreal/helix-character-creator-female/female-wide-top.json +1 -0
  242. package/bridge-recipes/unreal/helix-character-creator-female/female-wolf-set.addon.json +1 -0
  243. package/bridge-recipes/unreal/helix-character-creator-female/female-wolf-set.json +1 -0
  244. package/bridge-recipes/unreal/helix-character-creator-female/female-woman-mask-3.addon.json +1 -0
  245. package/bridge-recipes/unreal/helix-character-creator-female/female-woman-mask-3.json +1 -0
  246. package/bridge-recipes/unreal/helix-character-creator-female/female-women-out-2.addon.json +1 -0
  247. package/bridge-recipes/unreal/helix-character-creator-female/female-women-out-2.json +1 -0
  248. package/bridge-recipes/unreal/helix-character-creator-female/footwear.addon.json +1 -0
  249. package/bridge-recipes/unreal/helix-character-creator-female/footwear.json +1 -0
  250. package/bridge-recipes/unreal/helix-character-creator-female/gloves.addon.json +1 -0
  251. package/bridge-recipes/unreal/helix-character-creator-female/gloves.json +1 -0
  252. package/bridge-recipes/unreal/helix-character-creator-female/hair.addon.json +1 -0
  253. package/bridge-recipes/unreal/helix-character-creator-female/hair.json +1 -0
  254. package/bridge-recipes/unreal/helix-character-creator-female/headwear.addon.json +1 -0
  255. package/bridge-recipes/unreal/helix-character-creator-female/headwear.json +1 -0
  256. package/bridge-recipes/unreal/helix-character-creator-female/mask.addon.json +1 -0
  257. package/bridge-recipes/unreal/helix-character-creator-female/mask.json +1 -0
  258. package/bridge-recipes/unreal/helix-character-creator-female/neck.addon.json +1 -0
  259. package/bridge-recipes/unreal/helix-character-creator-female/neck.json +1 -0
  260. package/bridge-recipes/unreal/helix-character-creator-female/outfit.addon.json +1 -0
  261. package/bridge-recipes/unreal/helix-character-creator-female/outfit.json +1 -0
  262. package/bridge-recipes/unreal/helix-character-creator-female/top.addon.json +1 -0
  263. package/bridge-recipes/unreal/helix-character-creator-female/top.json +1 -0
  264. package/bridge-recipes/unreal/helix-character-creator-male/README.md +15 -0
  265. package/bridge-recipes/unreal/helix-character-creator-male/all.json +18 -0
  266. package/bridge-recipes/unreal/helix-character-creator-male/back.addon.json +1 -0
  267. package/bridge-recipes/unreal/helix-character-creator-male/back.json +1 -0
  268. package/bridge-recipes/unreal/helix-character-creator-male/base-male-face.json +6 -0
  269. package/bridge-recipes/unreal/helix-character-creator-male/base-male.json +6 -0
  270. package/bridge-recipes/unreal/helix-character-creator-male/bottom.addon.json +1 -0
  271. package/bridge-recipes/unreal/helix-character-creator-male/bottom.json +1 -0
  272. package/bridge-recipes/unreal/helix-character-creator-male/eyewear.addon.json +1 -0
  273. package/bridge-recipes/unreal/helix-character-creator-male/eyewear.json +1 -0
  274. package/bridge-recipes/unreal/helix-character-creator-male/footwear.addon.json +1 -0
  275. package/bridge-recipes/unreal/helix-character-creator-male/footwear.json +1 -0
  276. package/bridge-recipes/unreal/helix-character-creator-male/gloves.addon.json +1 -0
  277. package/bridge-recipes/unreal/helix-character-creator-male/gloves.json +1 -0
  278. package/bridge-recipes/unreal/helix-character-creator-male/hair.addon.json +1 -0
  279. package/bridge-recipes/unreal/helix-character-creator-male/hair.json +1 -0
  280. package/bridge-recipes/unreal/helix-character-creator-male/headwear.addon.json +1 -0
  281. package/bridge-recipes/unreal/helix-character-creator-male/headwear.json +1 -0
  282. package/bridge-recipes/unreal/helix-character-creator-male/male-batch-hair.json +23 -0
  283. package/bridge-recipes/unreal/helix-character-creator-male/male-batch-nebula-urbanghost.json +7 -0
  284. package/bridge-recipes/unreal/helix-character-creator-male/male-batch-uniforms.json +10 -0
  285. package/bridge-recipes/unreal/helix-character-creator-male/male-batch6-slot2.json +7 -0
  286. package/bridge-recipes/unreal/helix-character-creator-male/male-batch7-slot3.json +6 -0
  287. package/bridge-recipes/unreal/helix-character-creator-male/male-batch8-combined.json +11 -0
  288. package/bridge-recipes/unreal/helix-character-creator-male/male-boots-25.addon.json +1 -0
  289. package/bridge-recipes/unreal/helix-character-creator-male/male-cargo-pants.addon.json +1 -0
  290. package/bridge-recipes/unreal/helix-character-creator-male/male-cargo-pants.json +1 -0
  291. package/bridge-recipes/unreal/helix-character-creator-male/male-carnival-mask-2.addon.json +1 -0
  292. package/bridge-recipes/unreal/helix-character-creator-male/male-carnival-mask-2.json +1 -0
  293. package/bridge-recipes/unreal/helix-character-creator-male/male-carnival-mask-3.addon.json +1 -0
  294. package/bridge-recipes/unreal/helix-character-creator-male/male-carnival-mask-3.json +1 -0
  295. package/bridge-recipes/unreal/helix-character-creator-male/male-clare-pants.addon.json +1 -0
  296. package/bridge-recipes/unreal/helix-character-creator-male/male-clare-pants.json +1 -0
  297. package/bridge-recipes/unreal/helix-character-creator-male/male-clare-shoes.addon.json +1 -0
  298. package/bridge-recipes/unreal/helix-character-creator-male/male-clare-shoes.json +1 -0
  299. package/bridge-recipes/unreal/helix-character-creator-male/male-clare-top.addon.json +1 -0
  300. package/bridge-recipes/unreal/helix-character-creator-male/male-clare-top.json +1 -0
  301. package/bridge-recipes/unreal/helix-character-creator-male/male-diamond-hands.addon.json +1 -0
  302. package/bridge-recipes/unreal/helix-character-creator-male/male-diamond-hands.json +1 -0
  303. package/bridge-recipes/unreal/helix-character-creator-male/male-doctor-outfit.addon.json +1 -0
  304. package/bridge-recipes/unreal/helix-character-creator-male/male-doctor-outfit.json +1 -0
  305. package/bridge-recipes/unreal/helix-character-creator-male/male-eye-hole-mask-2.addon.json +1 -0
  306. package/bridge-recipes/unreal/helix-character-creator-male/male-eye-hole-mask-2.json +1 -0
  307. package/bridge-recipes/unreal/helix-character-creator-male/male-eye-hole-mask.addon.json +1 -0
  308. package/bridge-recipes/unreal/helix-character-creator-male/male-eye-hole-mask.json +1 -0
  309. package/bridge-recipes/unreal/helix-character-creator-male/male-eye-patch.addon.json +1 -0
  310. package/bridge-recipes/unreal/helix-character-creator-male/male-eye-patch.json +1 -0
  311. package/bridge-recipes/unreal/helix-character-creator-male/male-fb-cargo-pants-2.addon.json +1 -0
  312. package/bridge-recipes/unreal/helix-character-creator-male/male-fb-cargo-pants-2.json +1 -0
  313. package/bridge-recipes/unreal/helix-character-creator-male/male-fb-cargo-pants.addon.json +1 -0
  314. package/bridge-recipes/unreal/helix-character-creator-male/male-fb-puffy.addon.json +1 -0
  315. package/bridge-recipes/unreal/helix-character-creator-male/male-fb-puffy.json +1 -0
  316. package/bridge-recipes/unreal/helix-character-creator-male/male-firefight-outfit.addon.json +1 -0
  317. package/bridge-recipes/unreal/helix-character-creator-male/male-firefight-outfit.json +1 -0
  318. package/bridge-recipes/unreal/helix-character-creator-male/male-gamer-mask-2.addon.json +1 -0
  319. package/bridge-recipes/unreal/helix-character-creator-male/male-gamer-mask-2.json +1 -0
  320. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a1.addon.json +1 -0
  321. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a1.json +1 -0
  322. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a10.addon.json +1 -0
  323. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a10.json +1 -0
  324. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a11.addon.json +1 -0
  325. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a11.json +1 -0
  326. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a12.addon.json +1 -0
  327. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a12.json +1 -0
  328. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a13.addon.json +1 -0
  329. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a13.json +1 -0
  330. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a14.addon.json +1 -0
  331. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a14.json +1 -0
  332. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a15.addon.json +1 -0
  333. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a15.json +1 -0
  334. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a16.addon.json +1 -0
  335. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a16.json +1 -0
  336. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a17.addon.json +1 -0
  337. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a17.json +1 -0
  338. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a18.addon.json +1 -0
  339. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a18.json +1 -0
  340. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a19.addon.json +1 -0
  341. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a19.json +1 -0
  342. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a2.addon.json +1 -0
  343. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a2.json +1 -0
  344. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a20.addon.json +1 -0
  345. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a20.json +1 -0
  346. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a21.addon.json +1 -0
  347. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a21.json +1 -0
  348. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a3.addon.json +1 -0
  349. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a3.json +1 -0
  350. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a4.addon.json +1 -0
  351. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a4.json +1 -0
  352. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a5.addon.json +1 -0
  353. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a5.json +1 -0
  354. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a6.addon.json +1 -0
  355. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a6.json +1 -0
  356. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a7.addon.json +1 -0
  357. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a7.json +1 -0
  358. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a8.addon.json +1 -0
  359. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a8.json +1 -0
  360. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a9.addon.json +1 -0
  361. package/bridge-recipes/unreal/helix-character-creator-male/male-hair-a9.json +1 -0
  362. package/bridge-recipes/unreal/helix-character-creator-male/male-kombes-brown-v2.addon.json +1 -0
  363. package/bridge-recipes/unreal/helix-character-creator-male/male-kombes-brown-v2.json +1 -0
  364. package/bridge-recipes/unreal/helix-character-creator-male/male-kombes-brown.addon.json +1 -0
  365. package/bridge-recipes/unreal/helix-character-creator-male/male-man-mask-3.addon.json +1 -0
  366. package/bridge-recipes/unreal/helix-character-creator-male/male-marshmallow-mask.addon.json +1 -0
  367. package/bridge-recipes/unreal/helix-character-creator-male/male-marshmallow-mask.json +1 -0
  368. package/bridge-recipes/unreal/helix-character-creator-male/male-mikejack-jacket.addon.json +1 -0
  369. package/bridge-recipes/unreal/helix-character-creator-male/male-nebula-executive-coat.addon.json +1 -0
  370. package/bridge-recipes/unreal/helix-character-creator-male/male-nebula-executive-coat.json +1 -0
  371. package/bridge-recipes/unreal/helix-character-creator-male/male-nebula-executive-pants.addon.json +1 -0
  372. package/bridge-recipes/unreal/helix-character-creator-male/male-nebula-executive-pants.json +1 -0
  373. package/bridge-recipes/unreal/helix-character-creator-male/male-nebula-executive-shoes.addon.json +1 -0
  374. package/bridge-recipes/unreal/helix-character-creator-male/male-nebula-executive-shoes.json +1 -0
  375. package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-gloves.addon.json +1 -0
  376. package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-gloves.json +1 -0
  377. package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-mantle.addon.json +1 -0
  378. package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-mantle.json +1 -0
  379. package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-tunic.addon.json +1 -0
  380. package/bridge-recipes/unreal/helix-character-creator-male/male-neo-arcane-heir-tunic.json +1 -0
  381. package/bridge-recipes/unreal/helix-character-creator-male/male-orangekombes.addon.json +1 -0
  382. package/bridge-recipes/unreal/helix-character-creator-male/male-orangekombes.json +1 -0
  383. package/bridge-recipes/unreal/helix-character-creator-male/male-out2-boots.addon.json +1 -0
  384. package/bridge-recipes/unreal/helix-character-creator-male/male-out2-boots.json +1 -0
  385. package/bridge-recipes/unreal/helix-character-creator-male/male-panda-bag-2.addon.json +1 -0
  386. package/bridge-recipes/unreal/helix-character-creator-male/male-panda-bag-2.json +1 -0
  387. package/bridge-recipes/unreal/helix-character-creator-male/male-pants-2.addon.json +1 -0
  388. package/bridge-recipes/unreal/helix-character-creator-male/male-pants-2.json +1 -0
  389. package/bridge-recipes/unreal/helix-character-creator-male/male-paper-bag-mask.addon.json +1 -0
  390. package/bridge-recipes/unreal/helix-character-creator-male/male-paper-bag-mask.json +1 -0
  391. package/bridge-recipes/unreal/helix-character-creator-male/male-pig-mask.addon.json +1 -0
  392. package/bridge-recipes/unreal/helix-character-creator-male/male-pig-mask.json +1 -0
  393. package/bridge-recipes/unreal/helix-character-creator-male/male-police-uniform.addon.json +1 -0
  394. package/bridge-recipes/unreal/helix-character-creator-male/male-police-uniform.json +1 -0
  395. package/bridge-recipes/unreal/helix-character-creator-male/male-prison-outfit.addon.json +1 -0
  396. package/bridge-recipes/unreal/helix-character-creator-male/male-prison-outfit.json +1 -0
  397. package/bridge-recipes/unreal/helix-character-creator-male/male-puffer-jacket.addon.json +1 -0
  398. package/bridge-recipes/unreal/helix-character-creator-male/male-puffer-jacket.json +1 -0
  399. package/bridge-recipes/unreal/helix-character-creator-male/male-pullover-hoodie.addon.json +1 -0
  400. package/bridge-recipes/unreal/helix-character-creator-male/male-pullover-hoodie.json +1 -0
  401. package/bridge-recipes/unreal/helix-character-creator-male/male-robber-mask.addon.json +1 -0
  402. package/bridge-recipes/unreal/helix-character-creator-male/male-robber-mask.json +1 -0
  403. package/bridge-recipes/unreal/helix-character-creator-male/male-short-swimming.addon.json +1 -0
  404. package/bridge-recipes/unreal/helix-character-creator-male/male-short-swimming.json +1 -0
  405. package/bridge-recipes/unreal/helix-character-creator-male/male-sinth-ascetic-jacket.addon.json +1 -0
  406. package/bridge-recipes/unreal/helix-character-creator-male/male-sinth-ascetic-jacket.json +1 -0
  407. package/bridge-recipes/unreal/helix-character-creator-male/male-sip-cap.addon.json +1 -0
  408. package/bridge-recipes/unreal/helix-character-creator-male/male-sip-cap.json +1 -0
  409. package/bridge-recipes/unreal/helix-character-creator-male/male-socks.addon.json +1 -0
  410. package/bridge-recipes/unreal/helix-character-creator-male/male-socks.json +1 -0
  411. package/bridge-recipes/unreal/helix-character-creator-male/male-surgeon-mask.addon.json +1 -0
  412. package/bridge-recipes/unreal/helix-character-creator-male/male-surgeon-mask.json +1 -0
  413. package/bridge-recipes/unreal/helix-character-creator-male/male-tech-hoodie.addon.json +1 -0
  414. package/bridge-recipes/unreal/helix-character-creator-male/male-tech-hoodie.json +1 -0
  415. package/bridge-recipes/unreal/helix-character-creator-male/male-urban-ghost-hoodie.addon.json +1 -0
  416. package/bridge-recipes/unreal/helix-character-creator-male/male-urban-ghost-hoodie.json +1 -0
  417. package/bridge-recipes/unreal/helix-character-creator-male/male-urban-ghost-mask.addon.json +1 -0
  418. package/bridge-recipes/unreal/helix-character-creator-male/male-urban-ghost-mask.json +1 -0
  419. package/bridge-recipes/unreal/helix-character-creator-male/male-urban-ghost-pants.addon.json +1 -0
  420. package/bridge-recipes/unreal/helix-character-creator-male/male-urban-ghost-pants.json +1 -0
  421. package/bridge-recipes/unreal/helix-character-creator-male/male-warehouse-uniform.addon.json +1 -0
  422. package/bridge-recipes/unreal/helix-character-creator-male/male-warehouse-uniform.json +1 -0
  423. package/bridge-recipes/unreal/helix-character-creator-male/mask.addon.json +1 -0
  424. package/bridge-recipes/unreal/helix-character-creator-male/mask.json +1 -0
  425. package/bridge-recipes/unreal/helix-character-creator-male/neck.addon.json +1 -0
  426. package/bridge-recipes/unreal/helix-character-creator-male/neck.json +1 -0
  427. package/bridge-recipes/unreal/helix-character-creator-male/outfit.addon.json +1 -0
  428. package/bridge-recipes/unreal/helix-character-creator-male/outfit.json +1 -0
  429. package/bridge-recipes/unreal/helix-character-creator-male/palette-pilot.json +1 -0
  430. package/bridge-recipes/unreal/helix-character-creator-male/test/recipes.test.js +122 -0
  431. package/bridge-recipes/unreal/helix-character-creator-male/top.addon.json +1 -0
  432. package/bridge-recipes/unreal/helix-character-creator-male/top.json +1 -0
  433. package/bridge-recipes/unreal/helix-character-creator-male/variants/bottom-nopalette.addon.json +1 -0
  434. package/bridge-recipes/unreal/helix-character-creator-male/variants/headwear-nopalette.addon.json +1 -0
  435. package/bridge-recipes/unreal/helix-character-creator-male/variants/neck-nopalette.addon.json +1 -0
  436. package/dist/ability.d.ts +2 -2
  437. package/dist/ability.js +6 -5
  438. package/dist/ability.js.map +1 -1
  439. package/dist/achievement.d.ts +123 -0
  440. package/dist/achievement.js +400 -0
  441. package/dist/achievement.js.map +1 -0
  442. package/dist/api.d.ts +19 -1
  443. package/dist/api.js +80 -6
  444. package/dist/api.js.map +1 -1
  445. package/dist/assets.d.ts +595 -0
  446. package/dist/assets.js +1121 -0
  447. package/dist/assets.js.map +1 -0
  448. package/dist/audioCommand.d.ts +65 -0
  449. package/dist/audioCommand.js +181 -0
  450. package/dist/audioCommand.js.map +1 -0
  451. package/dist/bakeBodyRegionsCli.d.ts +19 -0
  452. package/dist/bakeBodyRegionsCli.js +25 -0
  453. package/dist/bakeBodyRegionsCli.js.map +1 -0
  454. package/dist/bakeLighting.d.ts +173 -0
  455. package/dist/bakeLighting.js +452 -0
  456. package/dist/bakeLighting.js.map +1 -0
  457. package/dist/bridge/bridge.testutil.d.ts +105 -0
  458. package/dist/bridge/bridge.testutil.js +259 -0
  459. package/dist/bridge/bridge.testutil.js.map +1 -0
  460. package/dist/bridge/characterAddon.d.ts +47 -0
  461. package/dist/bridge/characterAddon.js +146 -0
  462. package/dist/bridge/characterAddon.js.map +1 -0
  463. package/dist/bridge/detect.d.ts +4 -0
  464. package/dist/bridge/detect.js +154 -0
  465. package/dist/bridge/detect.js.map +1 -0
  466. package/dist/bridge/execute.d.ts +3 -0
  467. package/dist/bridge/execute.js +206 -0
  468. package/dist/bridge/execute.js.map +1 -0
  469. package/dist/bridge/glb.d.ts +60 -0
  470. package/dist/bridge/glb.js +81 -0
  471. package/dist/bridge/glb.js.map +1 -0
  472. package/dist/bridge/hash.d.ts +6 -0
  473. package/dist/bridge/hash.js +40 -0
  474. package/dist/bridge/hash.js.map +1 -0
  475. package/dist/bridge/index.d.ts +11 -0
  476. package/dist/bridge/index.js +28 -0
  477. package/dist/bridge/index.js.map +1 -0
  478. package/dist/bridge/internal/artifacts.d.ts +5 -0
  479. package/dist/bridge/internal/artifacts.js +31 -0
  480. package/dist/bridge/internal/artifacts.js.map +1 -0
  481. package/dist/bridge/internal/builtInExecution.d.ts +4 -0
  482. package/dist/bridge/internal/builtInExecution.js +514 -0
  483. package/dist/bridge/internal/builtInExecution.js.map +1 -0
  484. package/dist/bridge/internal/externalExecution.d.ts +12 -0
  485. package/dist/bridge/internal/externalExecution.js +261 -0
  486. package/dist/bridge/internal/externalExecution.js.map +1 -0
  487. package/dist/bridge/internal/outputReservation.d.ts +13 -0
  488. package/dist/bridge/internal/outputReservation.js +151 -0
  489. package/dist/bridge/internal/outputReservation.js.map +1 -0
  490. package/dist/bridge/internal/snapshots.d.ts +32 -0
  491. package/dist/bridge/internal/snapshots.js +562 -0
  492. package/dist/bridge/internal/snapshots.js.map +1 -0
  493. package/dist/bridge/management.d.ts +40 -0
  494. package/dist/bridge/management.js +333 -0
  495. package/dist/bridge/management.js.map +1 -0
  496. package/dist/bridge/manifest.d.ts +8 -0
  497. package/dist/bridge/manifest.js +192 -0
  498. package/dist/bridge/manifest.js.map +1 -0
  499. package/dist/bridge/metahuman.d.ts +26 -0
  500. package/dist/bridge/metahuman.js +332 -0
  501. package/dist/bridge/metahuman.js.map +1 -0
  502. package/dist/bridge/planner.d.ts +9 -0
  503. package/dist/bridge/planner.js +246 -0
  504. package/dist/bridge/planner.js.map +1 -0
  505. package/dist/bridge/plugins.d.ts +17 -0
  506. package/dist/bridge/plugins.js +307 -0
  507. package/dist/bridge/plugins.js.map +1 -0
  508. package/dist/bridge/resolution.d.ts +8 -0
  509. package/dist/bridge/resolution.js +55 -0
  510. package/dist/bridge/resolution.js.map +1 -0
  511. package/dist/bridge/types.d.ts +247 -0
  512. package/dist/bridge/types.js +60 -0
  513. package/dist/bridge/types.js.map +1 -0
  514. package/dist/bridge/validate.d.ts +12 -0
  515. package/dist/bridge/validate.js +370 -0
  516. package/dist/bridge/validate.js.map +1 -0
  517. package/dist/bridge/zipSource.d.ts +27 -0
  518. package/dist/bridge/zipSource.js +90 -0
  519. package/dist/bridge/zipSource.js.map +1 -0
  520. package/dist/browser/hostSlots.d.ts +57 -0
  521. package/dist/browser/hostSlots.js +371 -0
  522. package/dist/browser/hostSlots.js.map +1 -0
  523. package/dist/browser/launch.d.ts +25 -0
  524. package/dist/browser/launch.js +74 -0
  525. package/dist/browser/launch.js.map +1 -0
  526. package/dist/browser/nonSystemChrome.d.ts +15 -0
  527. package/dist/browser/nonSystemChrome.js +91 -0
  528. package/dist/browser/nonSystemChrome.js.map +1 -0
  529. package/dist/builds/index.d.ts +54 -0
  530. package/dist/builds/index.js +215 -0
  531. package/dist/builds/index.js.map +1 -0
  532. package/dist/bundle.d.ts +35 -2
  533. package/dist/bundle.js +437 -20
  534. package/dist/bundle.js.map +1 -1
  535. package/dist/canary/cli.d.ts +17 -0
  536. package/dist/canary/cli.js +95 -0
  537. package/dist/canary/cli.js.map +1 -0
  538. package/dist/canary/index.d.ts +4 -0
  539. package/dist/canary/index.js +21 -0
  540. package/dist/canary/index.js.map +1 -0
  541. package/dist/canary/inventory.d.ts +46 -0
  542. package/dist/canary/inventory.js +499 -0
  543. package/dist/canary/inventory.js.map +1 -0
  544. package/dist/canary/pacifica.d.ts +51 -0
  545. package/dist/canary/pacifica.js +247 -0
  546. package/dist/canary/pacifica.js.map +1 -0
  547. package/dist/canary/plan.d.ts +115 -0
  548. package/dist/canary/plan.js +479 -0
  549. package/dist/canary/plan.js.map +1 -0
  550. package/dist/character/addonPushOut.d.ts +66 -0
  551. package/dist/character/addonPushOut.js +211 -0
  552. package/dist/character/addonPushOut.js.map +1 -0
  553. package/dist/character/avatarPreflight.d.ts +92 -0
  554. package/dist/character/avatarPreflight.js +261 -0
  555. package/dist/character/avatarPreflight.js.map +1 -0
  556. package/dist/character/bakeBodyRegions.d.ts +80 -0
  557. package/dist/character/bakeBodyRegions.js +190 -0
  558. package/dist/character/bakeBodyRegions.js.map +1 -0
  559. package/dist/character/baseColorGuard.d.ts +62 -0
  560. package/dist/character/baseColorGuard.js +141 -0
  561. package/dist/character/baseColorGuard.js.map +1 -0
  562. package/dist/character/bodyGeometryGuard.d.ts +243 -0
  563. package/dist/character/bodyGeometryGuard.js +417 -0
  564. package/dist/character/bodyGeometryGuard.js.map +1 -0
  565. package/dist/character/bodyRegionHide.d.ts +57 -0
  566. package/dist/character/bodyRegionHide.js +97 -0
  567. package/dist/character/bodyRegionHide.js.map +1 -0
  568. package/dist/character/composeBaseMale.d.ts +25 -0
  569. package/dist/character/composeBaseMale.js +712 -0
  570. package/dist/character/composeBaseMale.js.map +1 -0
  571. package/dist/character/esm.js +3 -1
  572. package/dist/character/esm.js.map +1 -1
  573. package/dist/character/faceManifest.d.ts +53 -0
  574. package/dist/character/faceManifest.js +256 -0
  575. package/dist/character/faceManifest.js.map +1 -0
  576. package/dist/character/fbx.d.ts +70 -0
  577. package/dist/character/fbx.js +396 -0
  578. package/dist/character/fbx.js.map +1 -0
  579. package/dist/character/fitGarmentFile.d.ts +39 -0
  580. package/dist/character/fitGarmentFile.js +53 -0
  581. package/dist/character/fitGarmentFile.js.map +1 -0
  582. package/dist/character/helixPalette.d.ts +68 -0
  583. package/dist/character/helixPalette.js +183 -0
  584. package/dist/character/helixPalette.js.map +1 -0
  585. package/dist/character/hideCoverage.d.ts +135 -0
  586. package/dist/character/hideCoverage.js +450 -0
  587. package/dist/character/hideCoverage.js.map +1 -0
  588. package/dist/character/imageLimits.d.ts +3 -0
  589. package/dist/character/imageLimits.js +7 -0
  590. package/dist/character/imageLimits.js.map +1 -0
  591. package/dist/character/importCharacter.d.ts +188 -10
  592. package/dist/character/importCharacter.js +854 -76
  593. package/dist/character/importCharacter.js.map +1 -1
  594. package/dist/character/importTrust.d.ts +11 -0
  595. package/dist/character/importTrust.js +56 -0
  596. package/dist/character/importTrust.js.map +1 -0
  597. package/dist/character/ktx2Decode.d.ts +11 -0
  598. package/dist/character/ktx2Decode.js +87 -0
  599. package/dist/character/ktx2Decode.js.map +1 -0
  600. package/dist/character/mat4.d.ts +7 -0
  601. package/dist/character/mat4.js +25 -2
  602. package/dist/character/mat4.js.map +1 -1
  603. package/dist/character/meshyToHelixMap.d.ts +14 -0
  604. package/dist/character/meshyToHelixMap.js +155 -3
  605. package/dist/character/meshyToHelixMap.js.map +1 -1
  606. package/dist/character/metahumanToHelixMap.d.ts +2 -0
  607. package/dist/character/metahumanToHelixMap.js +34 -0
  608. package/dist/character/metahumanToHelixMap.js.map +1 -0
  609. package/dist/character/normalMapGuard.d.ts +59 -0
  610. package/dist/character/normalMapGuard.js +139 -0
  611. package/dist/character/normalMapGuard.js.map +1 -0
  612. package/dist/character/quat.js +2 -2
  613. package/dist/character/quat.js.map +1 -1
  614. package/dist/character/reframeSkeletonFile.d.ts +19 -0
  615. package/dist/character/reframeSkeletonFile.js +45 -0
  616. package/dist/character/reframeSkeletonFile.js.map +1 -0
  617. package/dist/character/repairLodSkeletonsFile.d.ts +25 -0
  618. package/dist/character/repairLodSkeletonsFile.js +49 -0
  619. package/dist/character/repairLodSkeletonsFile.js.map +1 -0
  620. package/dist/character/restFrameGuard.d.ts +52 -0
  621. package/dist/character/restFrameGuard.js +90 -0
  622. package/dist/character/restFrameGuard.js.map +1 -0
  623. package/dist/character/slotBudgets.d.ts +37 -0
  624. package/dist/character/slotBudgets.generated.d.ts +15 -0
  625. package/dist/character/slotBudgets.generated.js +110 -0
  626. package/dist/character/slotBudgets.generated.js.map +1 -0
  627. package/dist/character/slotBudgets.js +45 -0
  628. package/dist/character/slotBudgets.js.map +1 -0
  629. package/dist/character/stages/atlasMaterials.d.ts +53 -0
  630. package/dist/character/stages/atlasMaterials.js +246 -0
  631. package/dist/character/stages/atlasMaterials.js.map +1 -0
  632. package/dist/character/stages/bakeTexture.d.ts +28 -7
  633. package/dist/character/stages/bakeTexture.js +586 -108
  634. package/dist/character/stages/bakeTexture.js.map +1 -1
  635. package/dist/character/stages/conform.d.ts +54 -9
  636. package/dist/character/stages/conform.js +686 -113
  637. package/dist/character/stages/conform.js.map +1 -1
  638. package/dist/character/stages/earClearance.d.ts +105 -0
  639. package/dist/character/stages/earClearance.js +480 -0
  640. package/dist/character/stages/earClearance.js.map +1 -0
  641. package/dist/character/stages/faceRegion.d.ts +55 -0
  642. package/dist/character/stages/faceRegion.js +183 -0
  643. package/dist/character/stages/faceRegion.js.map +1 -0
  644. package/dist/character/stages/firstPersonHide.d.ts +42 -0
  645. package/dist/character/stages/firstPersonHide.js +140 -0
  646. package/dist/character/stages/firstPersonHide.js.map +1 -0
  647. package/dist/character/stages/joinPerMesh.d.ts +18 -0
  648. package/dist/character/stages/joinPerMesh.js +46 -0
  649. package/dist/character/stages/joinPerMesh.js.map +1 -0
  650. package/dist/character/stages/ktx2.d.ts +6 -4
  651. package/dist/character/stages/ktx2.js +81 -29
  652. package/dist/character/stages/ktx2.js.map +1 -1
  653. package/dist/character/stages/limbBridge.d.ts +114 -0
  654. package/dist/character/stages/limbBridge.js +1286 -0
  655. package/dist/character/stages/limbBridge.js.map +1 -0
  656. package/dist/character/stages/mergeLods.d.ts +19 -0
  657. package/dist/character/stages/mergeLods.js +58 -2
  658. package/dist/character/stages/mergeLods.js.map +1 -1
  659. package/dist/character/stages/poseAwareFit.d.ts +192 -0
  660. package/dist/character/stages/poseAwareFit.js +417 -0
  661. package/dist/character/stages/poseAwareFit.js.map +1 -0
  662. package/dist/character/stages/poseFit/math.d.ts +141 -0
  663. package/dist/character/stages/poseFit/math.js +514 -0
  664. package/dist/character/stages/poseFit/math.js.map +1 -0
  665. package/dist/character/stages/poseFit/measure.d.ts +88 -0
  666. package/dist/character/stages/poseFit/measure.js +148 -0
  667. package/dist/character/stages/poseFit/measure.js.map +1 -0
  668. package/dist/character/stages/poseFit/model.d.ts +46 -0
  669. package/dist/character/stages/poseFit/model.js +147 -0
  670. package/dist/character/stages/poseFit/model.js.map +1 -0
  671. package/dist/character/stages/poseFit/offsetField.d.ts +76 -0
  672. package/dist/character/stages/poseFit/offsetField.js +249 -0
  673. package/dist/character/stages/poseFit/offsetField.js.map +1 -0
  674. package/dist/character/stages/poseFit/posing.d.ts +52 -0
  675. package/dist/character/stages/poseFit/posing.js +330 -0
  676. package/dist/character/stages/poseFit/posing.js.map +1 -0
  677. package/dist/character/stages/poseFit/testRig.d.ts +31 -0
  678. package/dist/character/stages/poseFit/testRig.js +85 -0
  679. package/dist/character/stages/poseFit/testRig.js.map +1 -0
  680. package/dist/character/stages/reframeSkeletonToHost.d.ts +35 -0
  681. package/dist/character/stages/reframeSkeletonToHost.js +111 -0
  682. package/dist/character/stages/reframeSkeletonToHost.js.map +1 -0
  683. package/dist/character/stages/report.js +0 -2
  684. package/dist/character/stages/report.js.map +1 -1
  685. package/dist/character/stages/resizeTextures.js +4 -4
  686. package/dist/character/stages/resizeTextures.js.map +1 -1
  687. package/dist/character/stages/retarget.d.ts +26 -2
  688. package/dist/character/stages/retarget.js +52 -4
  689. package/dist/character/stages/retarget.js.map +1 -1
  690. package/dist/character/stages/retargetClip.d.ts +6 -2
  691. package/dist/character/stages/retargetClip.js +109 -17
  692. package/dist/character/stages/retargetClip.js.map +1 -1
  693. package/dist/character/stages/sanitizeMaterials.d.ts +39 -0
  694. package/dist/character/stages/sanitizeMaterials.js +136 -0
  695. package/dist/character/stages/sanitizeMaterials.js.map +1 -0
  696. package/dist/character/stages/simplifyMesh.js +6 -3
  697. package/dist/character/stages/simplifyMesh.js.map +1 -1
  698. package/dist/character/stages/splitFacePrimitive.js +0 -2
  699. package/dist/character/stages/splitFacePrimitive.js.map +1 -1
  700. package/dist/character/stages/splitSharedLodSkeletons.d.ts +31 -0
  701. package/dist/character/stages/splitSharedLodSkeletons.js +104 -0
  702. package/dist/character/stages/splitSharedLodSkeletons.js.map +1 -0
  703. package/dist/character/stages/unifyMaterial.d.ts +66 -0
  704. package/dist/character/stages/unifyMaterial.js +136 -0
  705. package/dist/character/stages/unifyMaterial.js.map +1 -0
  706. package/dist/character/stages/vrmDynamics.d.ts +144 -0
  707. package/dist/character/stages/vrmDynamics.js +421 -0
  708. package/dist/character/stages/vrmDynamics.js.map +1 -0
  709. package/dist/character/stages/vrmFace.d.ts +82 -0
  710. package/dist/character/stages/vrmFace.js +280 -0
  711. package/dist/character/stages/vrmFace.js.map +1 -0
  712. package/dist/character/stages/weldedSimplify.d.ts +15 -1
  713. package/dist/character/stages/weldedSimplify.js +90 -9
  714. package/dist/character/stages/weldedSimplify.js.map +1 -1
  715. package/dist/character/testutil/meshyBridgeFixture.d.ts +33 -0
  716. package/dist/character/testutil/meshyBridgeFixture.js +219 -0
  717. package/dist/character/testutil/meshyBridgeFixture.js.map +1 -0
  718. package/dist/character/testutil/meshyHead.d.ts +19 -0
  719. package/dist/character/testutil/meshyHead.js +99 -0
  720. package/dist/character/testutil/meshyHead.js.map +1 -0
  721. package/dist/character/testutil/meshyRig.d.ts +17 -0
  722. package/dist/character/testutil/meshyRig.js +117 -0
  723. package/dist/character/testutil/meshyRig.js.map +1 -0
  724. package/dist/character/testutil/slotBudgetExpectations.d.ts +11 -0
  725. package/dist/character/testutil/slotBudgetExpectations.js +21 -0
  726. package/dist/character/testutil/slotBudgetExpectations.js.map +1 -0
  727. package/dist/character/testutil/syntheticRig.d.ts +12 -1
  728. package/dist/character/testutil/syntheticRig.js +88 -3
  729. package/dist/character/testutil/syntheticRig.js.map +1 -1
  730. package/dist/character/unrealMaterialSidecar.d.ts +94 -0
  731. package/dist/character/unrealMaterialSidecar.js +879 -0
  732. package/dist/character/unrealMaterialSidecar.js.map +1 -0
  733. package/dist/character/untrustedSource.d.ts +54 -0
  734. package/dist/character/untrustedSource.js +181 -0
  735. package/dist/character/untrustedSource.js.map +1 -0
  736. package/dist/character/vrmCharacter.d.ts +156 -0
  737. package/dist/character/vrmCharacter.js +678 -0
  738. package/dist/character/vrmCharacter.js.map +1 -0
  739. package/dist/config.d.ts +5 -0
  740. package/dist/config.js +72 -24
  741. package/dist/config.js.map +1 -1
  742. package/dist/continuum/adminPackagePinCommand.d.ts +14 -0
  743. package/dist/continuum/adminPackagePinCommand.js +46 -0
  744. package/dist/continuum/adminPackagePinCommand.js.map +1 -0
  745. package/dist/continuum/adminPackagePublishCommand.d.ts +13 -0
  746. package/dist/continuum/adminPackagePublishCommand.js +22 -0
  747. package/dist/continuum/adminPackagePublishCommand.js.map +1 -0
  748. package/dist/continuum/authoring.d.ts +52 -0
  749. package/dist/continuum/authoring.js +143 -0
  750. package/dist/continuum/authoring.js.map +1 -0
  751. package/dist/continuum/characterMigrationGenerator.d.ts +17 -0
  752. package/dist/continuum/characterMigrationGenerator.js +242 -0
  753. package/dist/continuum/characterMigrationGenerator.js.map +1 -0
  754. package/dist/continuum/cli.d.ts +69 -0
  755. package/dist/continuum/cli.js +145 -0
  756. package/dist/continuum/cli.js.map +1 -0
  757. package/dist/continuum/cliAuthority.d.ts +17 -0
  758. package/dist/continuum/cliAuthority.js +28 -0
  759. package/dist/continuum/cliAuthority.js.map +1 -0
  760. package/dist/continuum/client.d.ts +103 -0
  761. package/dist/continuum/client.js +190 -0
  762. package/dist/continuum/client.js.map +1 -0
  763. package/dist/continuum/homeScenePackage.d.ts +159 -0
  764. package/dist/continuum/homeScenePackage.js +267 -0
  765. package/dist/continuum/homeScenePackage.js.map +1 -0
  766. package/dist/continuum/homeScenePackageCommand.d.ts +44 -0
  767. package/dist/continuum/homeScenePackageCommand.js +107 -0
  768. package/dist/continuum/homeScenePackageCommand.js.map +1 -0
  769. package/dist/continuum/identity.d.ts +4 -0
  770. package/dist/continuum/identity.js +20 -0
  771. package/dist/continuum/identity.js.map +1 -0
  772. package/dist/continuum/index.d.ts +11 -0
  773. package/dist/continuum/index.js +28 -0
  774. package/dist/continuum/index.js.map +1 -0
  775. package/dist/continuum/missingNormals.d.ts +48 -0
  776. package/dist/continuum/missingNormals.js +99 -0
  777. package/dist/continuum/missingNormals.js.map +1 -0
  778. package/dist/continuum/objectUpload.d.ts +64 -0
  779. package/dist/continuum/objectUpload.js +375 -0
  780. package/dist/continuum/objectUpload.js.map +1 -0
  781. package/dist/continuum/pull.d.ts +22 -0
  782. package/dist/continuum/pull.js +47 -0
  783. package/dist/continuum/pull.js.map +1 -0
  784. package/dist/continuum/sourceBundle.d.ts +18 -0
  785. package/dist/continuum/sourceBundle.js +160 -0
  786. package/dist/continuum/sourceBundle.js.map +1 -0
  787. package/dist/continuum/state.d.ts +41 -0
  788. package/dist/continuum/state.js +198 -0
  789. package/dist/continuum/state.js.map +1 -0
  790. package/dist/continuum/types.d.ts +156 -0
  791. package/dist/continuum/types.js +6 -0
  792. package/dist/continuum/types.js.map +1 -0
  793. package/dist/continuum/workflow.d.ts +62 -0
  794. package/dist/continuum/workflow.js +592 -0
  795. package/dist/continuum/workflow.js.map +1 -0
  796. package/dist/cs2/areas.d.ts +41 -0
  797. package/dist/cs2/areas.js +82 -0
  798. package/dist/cs2/areas.js.map +1 -0
  799. package/dist/cs2/binary.d.ts +10 -0
  800. package/dist/cs2/binary.js +59 -0
  801. package/dist/cs2/binary.js.map +1 -0
  802. package/dist/cs2/cityLegacy.d.ts +29 -0
  803. package/dist/cs2/cityLegacy.js +48 -0
  804. package/dist/cs2/cityLegacy.js.map +1 -0
  805. package/dist/cs2/convert/areas.d.ts +32 -0
  806. package/dist/cs2/convert/areas.js +96 -0
  807. package/dist/cs2/convert/areas.js.map +1 -0
  808. package/dist/cs2/convert/glb.d.ts +48 -0
  809. package/dist/cs2/convert/glb.js +178 -0
  810. package/dist/cs2/convert/glb.js.map +1 -0
  811. package/dist/cs2/convert/markings.d.ts +96 -0
  812. package/dist/cs2/convert/markings.js +329 -0
  813. package/dist/cs2/convert/markings.js.map +1 -0
  814. package/dist/cs2/convert/nodeSeams.d.ts +20 -0
  815. package/dist/cs2/convert/nodeSeams.js +164 -0
  816. package/dist/cs2/convert/nodeSeams.js.map +1 -0
  817. package/dist/cs2/convert/roadBake.d.ts +112 -0
  818. package/dist/cs2/convert/roadBake.js +290 -0
  819. package/dist/cs2/convert/roadBake.js.map +1 -0
  820. package/dist/cs2/convert/roads.d.ts +110 -0
  821. package/dist/cs2/convert/roads.js +419 -0
  822. package/dist/cs2/convert/roads.js.map +1 -0
  823. package/dist/cs2/convert/terrain.d.ts +67 -0
  824. package/dist/cs2/convert/terrain.js +141 -0
  825. package/dist/cs2/convert/terrain.js.map +1 -0
  826. package/dist/cs2/convert/terrainConform.d.ts +58 -0
  827. package/dist/cs2/convert/terrainConform.js +284 -0
  828. package/dist/cs2/convert/terrainConform.js.map +1 -0
  829. package/dist/cs2/convert/treeRoadClearance.d.ts +17 -0
  830. package/dist/cs2/convert/treeRoadClearance.js +78 -0
  831. package/dist/cs2/convert/treeRoadClearance.js.map +1 -0
  832. package/dist/cs2/convert/trees.d.ts +33 -0
  833. package/dist/cs2/convert/trees.js +68 -0
  834. package/dist/cs2/convert/trees.js.map +1 -0
  835. package/dist/cs2/csm2.d.ts +58 -0
  836. package/dist/cs2/csm2.js +188 -0
  837. package/dist/cs2/csm2.js.map +1 -0
  838. package/dist/cs2/fixtures.d.ts +5 -0
  839. package/dist/cs2/fixtures.js +15 -0
  840. package/dist/cs2/fixtures.js.map +1 -0
  841. package/dist/cs2/impostors.d.ts +31 -0
  842. package/dist/cs2/impostors.js +42 -0
  843. package/dist/cs2/impostors.js.map +1 -0
  844. package/dist/cs2/index.d.ts +22 -0
  845. package/dist/cs2/index.js +191 -0
  846. package/dist/cs2/index.js.map +1 -0
  847. package/dist/cs2/inspect.d.ts +81 -0
  848. package/dist/cs2/inspect.js +181 -0
  849. package/dist/cs2/inspect.js.map +1 -0
  850. package/dist/cs2/lods.d.ts +22 -0
  851. package/dist/cs2/lods.js +136 -0
  852. package/dist/cs2/lods.js.map +1 -0
  853. package/dist/cs2/materials.d.ts +43 -0
  854. package/dist/cs2/materials.js +137 -0
  855. package/dist/cs2/materials.js.map +1 -0
  856. package/dist/cs2/placements.d.ts +57 -0
  857. package/dist/cs2/placements.js +116 -0
  858. package/dist/cs2/placements.js.map +1 -0
  859. package/dist/cs2/roadPieces.d.ts +79 -0
  860. package/dist/cs2/roadPieces.js +263 -0
  861. package/dist/cs2/roadPieces.js.map +1 -0
  862. package/dist/cs2/roads.d.ts +92 -0
  863. package/dist/cs2/roads.js +329 -0
  864. package/dist/cs2/roads.js.map +1 -0
  865. package/dist/cs2/terrain.d.ts +37 -0
  866. package/dist/cs2/terrain.js +91 -0
  867. package/dist/cs2/terrain.js.map +1 -0
  868. package/dist/cs2/types.d.ts +444 -0
  869. package/dist/cs2/types.js +22 -0
  870. package/dist/cs2/types.js.map +1 -0
  871. package/dist/cs2/water.d.ts +26 -0
  872. package/dist/cs2/water.js +58 -0
  873. package/dist/cs2/water.js.map +1 -0
  874. package/dist/currency.d.ts +94 -0
  875. package/dist/currency.js +425 -0
  876. package/dist/currency.js.map +1 -0
  877. package/dist/dev/devServer.d.ts +53 -0
  878. package/dist/dev/devServer.js +228 -0
  879. package/dist/dev/devServer.js.map +1 -0
  880. package/dist/dev/shellPage.d.ts +3 -0
  881. package/dist/dev/shellPage.js +297 -0
  882. package/dist/dev/shellPage.js.map +1 -0
  883. package/dist/dev/state.d.ts +84 -0
  884. package/dist/dev/state.js +265 -0
  885. package/dist/dev/state.js.map +1 -0
  886. package/dist/device.d.ts +104 -0
  887. package/dist/device.js +2744 -0
  888. package/dist/device.js.map +1 -0
  889. package/dist/deviceActionValidation.d.ts +21 -0
  890. package/dist/deviceActionValidation.js +460 -0
  891. package/dist/deviceActionValidation.js.map +1 -0
  892. package/dist/distribution.d.ts +69 -0
  893. package/dist/distribution.js +138 -0
  894. package/dist/distribution.js.map +1 -0
  895. package/dist/enginePins.d.ts +45 -0
  896. package/dist/enginePins.js +134 -0
  897. package/dist/enginePins.js.map +1 -0
  898. package/dist/gesture/axisReference.d.ts +22 -0
  899. package/dist/gesture/axisReference.js +32 -0
  900. package/dist/gesture/axisReference.js.map +1 -0
  901. package/dist/gesture/capture.d.ts +84 -0
  902. package/dist/gesture/capture.js +303 -0
  903. package/dist/gesture/capture.js.map +1 -0
  904. package/dist/gesture/harnessPage.d.ts +23 -0
  905. package/dist/gesture/harnessPage.js +153 -0
  906. package/dist/gesture/harnessPage.js.map +1 -0
  907. package/dist/gesture/inspect.d.ts +189 -0
  908. package/dist/gesture/inspect.js +678 -0
  909. package/dist/gesture/inspect.js.map +1 -0
  910. package/dist/gesture/rig.d.ts +12 -0
  911. package/dist/gesture/rig.js +111 -0
  912. package/dist/gesture/rig.js.map +1 -0
  913. package/dist/gesture/worldRuntime.d.ts +65 -0
  914. package/dist/gesture/worldRuntime.js +110 -0
  915. package/dist/gesture/worldRuntime.js.map +1 -0
  916. package/dist/glb/draw-calls.d.ts +60 -0
  917. package/dist/glb/draw-calls.js +160 -0
  918. package/dist/glb/draw-calls.js.map +1 -0
  919. package/dist/glb/glb-summary.d.ts +68 -0
  920. package/dist/glb/glb-summary.js +450 -0
  921. package/dist/glb/glb-summary.js.map +1 -0
  922. package/dist/glb/index.d.ts +12 -0
  923. package/dist/glb/index.js +24 -0
  924. package/dist/glb/index.js.map +1 -0
  925. package/dist/glb/smooth-normals.d.ts +98 -0
  926. package/dist/glb/smooth-normals.js +395 -0
  927. package/dist/glb/smooth-normals.js.map +1 -0
  928. package/dist/index.d.ts +1 -1
  929. package/dist/index.js +6786 -128
  930. package/dist/index.js.map +1 -1
  931. package/dist/init.d.ts +35 -1
  932. package/dist/init.js +1115 -47
  933. package/dist/init.js.map +1 -1
  934. package/dist/install.d.ts +16 -5
  935. package/dist/install.js +123 -23
  936. package/dist/install.js.map +1 -1
  937. package/dist/interactable.d.ts +154 -0
  938. package/dist/interactable.js +1219 -0
  939. package/dist/interactable.js.map +1 -0
  940. package/dist/item.d.ts +217 -0
  941. package/dist/item.js +892 -0
  942. package/dist/item.js.map +1 -0
  943. package/dist/itemDef/distribute.d.ts +17 -0
  944. package/dist/itemDef/distribute.js +29 -0
  945. package/dist/itemDef/distribute.js.map +1 -0
  946. package/dist/itemDef/emoteRules.d.ts +85 -0
  947. package/dist/itemDef/emoteRules.js +368 -0
  948. package/dist/itemDef/emoteRules.js.map +1 -0
  949. package/dist/itemDef/gunConfigRules.d.ts +24 -0
  950. package/dist/itemDef/gunConfigRules.js +300 -0
  951. package/dist/itemDef/gunConfigRules.js.map +1 -0
  952. package/dist/itemDef/inspect.d.ts +19 -0
  953. package/dist/itemDef/inspect.js +144 -0
  954. package/dist/itemDef/inspect.js.map +1 -0
  955. package/dist/itemDef/scaffold.d.ts +41 -0
  956. package/dist/itemDef/scaffold.js +303 -0
  957. package/dist/itemDef/scaffold.js.map +1 -0
  958. package/dist/itemDef/tables.d.ts +81 -0
  959. package/dist/itemDef/tables.js +226 -0
  960. package/dist/itemDef/tables.js.map +1 -0
  961. package/dist/itemDef/validate.d.ts +30 -0
  962. package/dist/itemDef/validate.js +175 -0
  963. package/dist/itemDef/validate.js.map +1 -0
  964. package/dist/itemPublishVersion.d.ts +46 -0
  965. package/dist/itemPublishVersion.js +242 -0
  966. package/dist/itemPublishVersion.js.map +1 -0
  967. package/dist/itemSearch.d.ts +128 -0
  968. package/dist/itemSearch.js +140 -0
  969. package/dist/itemSearch.js.map +1 -0
  970. package/dist/itemSetVersion.d.ts +77 -0
  971. package/dist/itemSetVersion.js +170 -0
  972. package/dist/itemSetVersion.js.map +1 -0
  973. package/dist/itemThumbnail.d.ts +40 -0
  974. package/dist/itemThumbnail.js +116 -0
  975. package/dist/itemThumbnail.js.map +1 -0
  976. package/dist/lib.d.ts +571 -7
  977. package/dist/lib.js +1178 -15
  978. package/dist/lib.js.map +1 -1
  979. package/dist/looks.d.ts +103 -0
  980. package/dist/looks.js +102 -0
  981. package/dist/looks.js.map +1 -0
  982. package/dist/materials/availability.d.ts +8 -0
  983. package/dist/materials/availability.js +22 -0
  984. package/dist/materials/availability.js.map +1 -0
  985. package/dist/materials/identity.d.ts +30 -0
  986. package/dist/materials/identity.js +68 -0
  987. package/dist/materials/identity.js.map +1 -0
  988. package/dist/materials/pins.d.ts +23 -0
  989. package/dist/materials/pins.js +93 -0
  990. package/dist/materials/pins.js.map +1 -0
  991. package/dist/mesh/surfaceBvh.d.ts +13 -0
  992. package/dist/mesh/surfaceBvh.js +197 -0
  993. package/dist/mesh/surfaceBvh.js.map +1 -0
  994. package/dist/module-validation.d.ts +2 -0
  995. package/dist/module-validation.js +24 -0
  996. package/dist/module-validation.js.map +1 -0
  997. package/dist/money.d.ts +183 -0
  998. package/dist/money.js +299 -0
  999. package/dist/money.js.map +1 -0
  1000. package/dist/npc/capture.d.ts +41 -0
  1001. package/dist/npc/capture.js +99 -0
  1002. package/dist/npc/capture.js.map +1 -0
  1003. package/dist/npc/format.d.ts +2 -0
  1004. package/dist/npc/format.js +102 -0
  1005. package/dist/npc/format.js.map +1 -0
  1006. package/dist/npc/inspect.d.ts +23 -0
  1007. package/dist/npc/inspect.js +54 -0
  1008. package/dist/npc/inspect.js.map +1 -0
  1009. package/dist/npc/metrics.d.ts +132 -0
  1010. package/dist/npc/metrics.js +214 -0
  1011. package/dist/npc/metrics.js.map +1 -0
  1012. package/dist/npc/session.d.ts +35 -0
  1013. package/dist/npc/session.js +172 -0
  1014. package/dist/npc/session.js.map +1 -0
  1015. package/dist/pack/locomotionReference.d.ts +40 -0
  1016. package/dist/pack/locomotionReference.js +132 -0
  1017. package/dist/pack/locomotionReference.js.map +1 -0
  1018. package/dist/pack/scaffold.d.ts +15 -0
  1019. package/dist/pack/scaffold.js +144 -0
  1020. package/dist/pack/scaffold.js.map +1 -0
  1021. package/dist/pack/validate.d.ts +67 -0
  1022. package/dist/pack/validate.js +317 -0
  1023. package/dist/pack/validate.js.map +1 -0
  1024. package/dist/package.d.ts +14 -1
  1025. package/dist/package.js +106 -7
  1026. package/dist/package.js.map +1 -1
  1027. package/dist/paletteShowcase.d.ts +183 -0
  1028. package/dist/paletteShowcase.js +454 -0
  1029. package/dist/paletteShowcase.js.map +1 -0
  1030. package/dist/paletteShowcaseProfiles.d.ts +112 -0
  1031. package/dist/paletteShowcaseProfiles.js +121 -0
  1032. package/dist/paletteShowcaseProfiles.js.map +1 -0
  1033. package/dist/paths.d.ts +4 -0
  1034. package/dist/paths.js +11 -0
  1035. package/dist/paths.js.map +1 -0
  1036. package/dist/placementRequest.d.ts +37 -0
  1037. package/dist/placementRequest.js +220 -0
  1038. package/dist/placementRequest.js.map +1 -0
  1039. package/dist/placements/assets.d.ts +7 -0
  1040. package/dist/placements/assets.js +114 -0
  1041. package/dist/placements/assets.js.map +1 -0
  1042. package/dist/placements/attachFoliageLods.d.ts +4 -0
  1043. package/dist/placements/attachFoliageLods.js +70 -0
  1044. package/dist/placements/attachFoliageLods.js.map +1 -0
  1045. package/dist/placements/attachImpostors.d.ts +3 -0
  1046. package/dist/placements/attachImpostors.js +51 -0
  1047. package/dist/placements/attachImpostors.js.map +1 -0
  1048. package/dist/placements/authored.d.ts +11 -0
  1049. package/dist/placements/authored.js +65 -0
  1050. package/dist/placements/authored.js.map +1 -0
  1051. package/dist/placements/bake.d.ts +2 -0
  1052. package/dist/placements/bake.js +235 -0
  1053. package/dist/placements/bake.js.map +1 -0
  1054. package/dist/placements/captureHost.d.ts +4 -0
  1055. package/dist/placements/captureHost.js +125 -0
  1056. package/dist/placements/captureHost.js.map +1 -0
  1057. package/dist/placements/foliageCapture.d.ts +2 -0
  1058. package/dist/placements/foliageCapture.js +98 -0
  1059. package/dist/placements/foliageCapture.js.map +1 -0
  1060. package/dist/placements/foliageCards.d.ts +17 -0
  1061. package/dist/placements/foliageCards.js +120 -0
  1062. package/dist/placements/foliageCards.js.map +1 -0
  1063. package/dist/placements/foliageLods.d.ts +8 -0
  1064. package/dist/placements/foliageLods.js +240 -0
  1065. package/dist/placements/foliageLods.js.map +1 -0
  1066. package/dist/placements/foliageTexture.d.ts +4 -0
  1067. package/dist/placements/foliageTexture.js +91 -0
  1068. package/dist/placements/foliageTexture.js.map +1 -0
  1069. package/dist/placements/impostorCapture.d.ts +2 -0
  1070. package/dist/placements/impostorCapture.js +111 -0
  1071. package/dist/placements/impostorCapture.js.map +1 -0
  1072. package/dist/placements/impostors.d.ts +18 -0
  1073. package/dist/placements/impostors.js +279 -0
  1074. package/dist/placements/impostors.js.map +1 -0
  1075. package/dist/placements/source.d.ts +53 -0
  1076. package/dist/placements/source.js +111 -0
  1077. package/dist/placements/source.js.map +1 -0
  1078. package/dist/product.d.ts +84 -0
  1079. package/dist/product.js +285 -0
  1080. package/dist/product.js.map +1 -0
  1081. package/dist/publications.d.ts +116 -0
  1082. package/dist/publications.js +180 -0
  1083. package/dist/publications.js.map +1 -0
  1084. package/dist/publishDuplicateGuard.d.ts +92 -0
  1085. package/dist/publishDuplicateGuard.js +128 -0
  1086. package/dist/publishDuplicateGuard.js.map +1 -0
  1087. package/dist/realizability.d.ts +36 -0
  1088. package/dist/realizability.js +269 -0
  1089. package/dist/realizability.js.map +1 -0
  1090. package/dist/resolve.d.ts +7 -1
  1091. package/dist/resolve.js +77 -11
  1092. package/dist/resolve.js.map +1 -1
  1093. package/dist/sceneElements/compiler.d.ts +21 -0
  1094. package/dist/sceneElements/compiler.js +976 -0
  1095. package/dist/sceneElements/compiler.js.map +1 -0
  1096. package/dist/sceneElements/continuum.d.ts +54 -0
  1097. package/dist/sceneElements/continuum.js +451 -0
  1098. package/dist/sceneElements/continuum.js.map +1 -0
  1099. package/dist/sceneElements/devices.d.ts +12 -0
  1100. package/dist/sceneElements/devices.js +212 -0
  1101. package/dist/sceneElements/devices.js.map +1 -0
  1102. package/dist/sceneElements/meshCells.d.ts +49 -0
  1103. package/dist/sceneElements/meshCells.js +174 -0
  1104. package/dist/sceneElements/meshCells.js.map +1 -0
  1105. package/dist/sceneElements/types.d.ts +261 -0
  1106. package/dist/sceneElements/types.js +3 -0
  1107. package/dist/sceneElements/types.js.map +1 -0
  1108. package/dist/sceneHlod/approximate.d.ts +23 -0
  1109. package/dist/sceneHlod/approximate.js +171 -0
  1110. package/dist/sceneHlod/approximate.js.map +1 -0
  1111. package/dist/sceneHlod/artifact.d.ts +3 -0
  1112. package/dist/sceneHlod/artifact.js +29 -0
  1113. package/dist/sceneHlod/artifact.js.map +1 -0
  1114. package/dist/sceneHlod/bakeSurface.d.ts +2 -0
  1115. package/dist/sceneHlod/bakeSurface.js +59 -0
  1116. package/dist/sceneHlod/bakeSurface.js.map +1 -0
  1117. package/dist/sceneHlod/basisEncoder.d.ts +3 -0
  1118. package/dist/sceneHlod/basisEncoder.js +68 -0
  1119. package/dist/sceneHlod/basisEncoder.js.map +1 -0
  1120. package/dist/sceneHlod/cellArtifact.d.ts +17 -0
  1121. package/dist/sceneHlod/cellArtifact.js +78 -0
  1122. package/dist/sceneHlod/cellArtifact.js.map +1 -0
  1123. package/dist/sceneHlod/commands.d.ts +2 -0
  1124. package/dist/sceneHlod/commands.js +114 -0
  1125. package/dist/sceneHlod/commands.js.map +1 -0
  1126. package/dist/sceneHlod/complete.d.ts +78 -0
  1127. package/dist/sceneHlod/complete.js +261 -0
  1128. package/dist/sceneHlod/complete.js.map +1 -0
  1129. package/dist/sceneHlod/completePrototype.d.ts +39 -0
  1130. package/dist/sceneHlod/completePrototype.js +121 -0
  1131. package/dist/sceneHlod/completePrototype.js.map +1 -0
  1132. package/dist/sceneHlod/geometry.d.ts +6 -0
  1133. package/dist/sceneHlod/geometry.js +101 -0
  1134. package/dist/sceneHlod/geometry.js.map +1 -0
  1135. package/dist/sceneHlod/imageSampling.d.ts +11 -0
  1136. package/dist/sceneHlod/imageSampling.js +100 -0
  1137. package/dist/sceneHlod/imageSampling.js.map +1 -0
  1138. package/dist/sceneHlod/refinement.d.ts +46 -0
  1139. package/dist/sceneHlod/refinement.js +204 -0
  1140. package/dist/sceneHlod/refinement.js.map +1 -0
  1141. package/dist/sceneHlod/scene.d.ts +80 -0
  1142. package/dist/sceneHlod/scene.js +264 -0
  1143. package/dist/sceneHlod/scene.js.map +1 -0
  1144. package/dist/sceneHlod/sharedAtlas.d.ts +37 -0
  1145. package/dist/sceneHlod/sharedAtlas.js +84 -0
  1146. package/dist/sceneHlod/sharedAtlas.js.map +1 -0
  1147. package/dist/sceneHlod/source.d.ts +17 -0
  1148. package/dist/sceneHlod/source.js +241 -0
  1149. package/dist/sceneHlod/source.js.map +1 -0
  1150. package/dist/sceneHlod/textureCodec.d.ts +4 -0
  1151. package/dist/sceneHlod/textureCodec.js +66 -0
  1152. package/dist/sceneHlod/textureCodec.js.map +1 -0
  1153. package/dist/sceneHlod/transfer.d.ts +8 -0
  1154. package/dist/sceneHlod/transfer.js +147 -0
  1155. package/dist/sceneHlod/transfer.js.map +1 -0
  1156. package/dist/sceneHlod/types.d.ts +69 -0
  1157. package/dist/sceneHlod/types.js +3 -0
  1158. package/dist/sceneHlod/types.js.map +1 -0
  1159. package/dist/sceneImport/archive.d.ts +30 -0
  1160. package/dist/sceneImport/archive.js +336 -0
  1161. package/dist/sceneImport/archive.js.map +1 -0
  1162. package/dist/sceneImport/bistroMaterialBake.d.ts +20 -0
  1163. package/dist/sceneImport/bistroMaterialBake.js +169 -0
  1164. package/dist/sceneImport/bistroMaterialBake.js.map +1 -0
  1165. package/dist/sceneImport/bistroTexturePlan.d.ts +6 -0
  1166. package/dist/sceneImport/bistroTexturePlan.js +23 -0
  1167. package/dist/sceneImport/bistroTexturePlan.js.map +1 -0
  1168. package/dist/sceneImport/compiler.d.ts +36 -0
  1169. package/dist/sceneImport/compiler.js +251 -0
  1170. package/dist/sceneImport/compiler.js.map +1 -0
  1171. package/dist/sceneImport/composeMounts.d.ts +159 -0
  1172. package/dist/sceneImport/composeMounts.js +687 -0
  1173. package/dist/sceneImport/composeMounts.js.map +1 -0
  1174. package/dist/sceneImport/defaultMaterials.d.ts +45 -0
  1175. package/dist/sceneImport/defaultMaterials.js +121 -0
  1176. package/dist/sceneImport/defaultMaterials.js.map +1 -0
  1177. package/dist/sceneImport/externalTextures.d.ts +44 -0
  1178. package/dist/sceneImport/externalTextures.js +146 -0
  1179. package/dist/sceneImport/externalTextures.js.map +1 -0
  1180. package/dist/sceneImport/fbx.d.ts +101 -0
  1181. package/dist/sceneImport/fbx.js +307 -0
  1182. package/dist/sceneImport/fbx.js.map +1 -0
  1183. package/dist/sceneImport/glbSplit.d.ts +24 -0
  1184. package/dist/sceneImport/glbSplit.js +95 -0
  1185. package/dist/sceneImport/glbSplit.js.map +1 -0
  1186. package/dist/sceneImport/gltfIo.d.ts +32 -0
  1187. package/dist/sceneImport/gltfIo.js +39 -0
  1188. package/dist/sceneImport/gltfIo.js.map +1 -0
  1189. package/dist/sceneImport/helsinkiTiles.d.ts +31 -0
  1190. package/dist/sceneImport/helsinkiTiles.js +52 -0
  1191. package/dist/sceneImport/helsinkiTiles.js.map +1 -0
  1192. package/dist/sceneImport/materials/binding.d.ts +16 -0
  1193. package/dist/sceneImport/materials/binding.js +42 -0
  1194. package/dist/sceneImport/materials/binding.js.map +1 -0
  1195. package/dist/sceneImport/materials/catalog.d.ts +36 -0
  1196. package/dist/sceneImport/materials/catalog.js +233 -0
  1197. package/dist/sceneImport/materials/catalog.js.map +1 -0
  1198. package/dist/sceneImport/materials/index.d.ts +4 -0
  1199. package/dist/sceneImport/materials/index.js +21 -0
  1200. package/dist/sceneImport/materials/index.js.map +1 -0
  1201. package/dist/sceneImport/materials/matcher.d.ts +33 -0
  1202. package/dist/sceneImport/materials/matcher.js +127 -0
  1203. package/dist/sceneImport/materials/matcher.js.map +1 -0
  1204. package/dist/sceneImport/materials/recipe.d.ts +30 -0
  1205. package/dist/sceneImport/materials/recipe.js +134 -0
  1206. package/dist/sceneImport/materials/recipe.js.map +1 -0
  1207. package/dist/sceneImport/multiAsset.d.ts +79 -0
  1208. package/dist/sceneImport/multiAsset.js +535 -0
  1209. package/dist/sceneImport/multiAsset.js.map +1 -0
  1210. package/dist/sceneImport/multiAssetSpawn.d.ts +40 -0
  1211. package/dist/sceneImport/multiAssetSpawn.js +98 -0
  1212. package/dist/sceneImport/multiAssetSpawn.js.map +1 -0
  1213. package/dist/sceneImport/obj.d.ts +41 -0
  1214. package/dist/sceneImport/obj.js +276 -0
  1215. package/dist/sceneImport/obj.js.map +1 -0
  1216. package/dist/sceneImport/package.d.ts +104 -0
  1217. package/dist/sceneImport/package.js +1004 -0
  1218. package/dist/sceneImport/package.js.map +1 -0
  1219. package/dist/sceneImport/packageReader.d.ts +10 -0
  1220. package/dist/sceneImport/packageReader.js +250 -0
  1221. package/dist/sceneImport/packageReader.js.map +1 -0
  1222. package/dist/sceneImport/proxy.d.ts +100 -0
  1223. package/dist/sceneImport/proxy.js +334 -0
  1224. package/dist/sceneImport/proxy.js.map +1 -0
  1225. package/dist/sceneImport/publish.d.ts +47 -0
  1226. package/dist/sceneImport/publish.js +98 -0
  1227. package/dist/sceneImport/publish.js.map +1 -0
  1228. package/dist/sceneImport/semantic.d.ts +75 -0
  1229. package/dist/sceneImport/semantic.js +296 -0
  1230. package/dist/sceneImport/semantic.js.map +1 -0
  1231. package/dist/sceneImport/spawnProbe.d.ts +55 -0
  1232. package/dist/sceneImport/spawnProbe.js +159 -0
  1233. package/dist/sceneImport/spawnProbe.js.map +1 -0
  1234. package/dist/sceneImport/streamLayout.d.ts +96 -0
  1235. package/dist/sceneImport/streamLayout.js +203 -0
  1236. package/dist/sceneImport/streamLayout.js.map +1 -0
  1237. package/dist/sceneImport/textureDecode.d.ts +21 -0
  1238. package/dist/sceneImport/textureDecode.js +292 -0
  1239. package/dist/sceneImport/textureDecode.js.map +1 -0
  1240. package/dist/sceneImport/types.d.ts +84 -0
  1241. package/dist/sceneImport/types.js +58 -0
  1242. package/dist/sceneImport/types.js.map +1 -0
  1243. package/dist/scenePerformance.d.ts +162 -0
  1244. package/dist/scenePerformance.js +905 -0
  1245. package/dist/scenePerformance.js.map +1 -0
  1246. package/dist/screenshot/captureScreenshots.d.ts +36 -0
  1247. package/dist/screenshot/captureScreenshots.js +229 -0
  1248. package/dist/screenshot/captureScreenshots.js.map +1 -0
  1249. package/dist/screenshot/encodeImagePreview.d.ts +5 -0
  1250. package/dist/screenshot/encodeImagePreview.js +42 -0
  1251. package/dist/screenshot/encodeImagePreview.js.map +1 -0
  1252. package/dist/screenshot/publishThumbnail.d.ts +4 -0
  1253. package/dist/screenshot/publishThumbnail.js +56 -0
  1254. package/dist/screenshot/publishThumbnail.js.map +1 -0
  1255. package/dist/screenshot/staticServe.d.ts +14 -0
  1256. package/dist/screenshot/staticServe.js +120 -0
  1257. package/dist/screenshot/staticServe.js.map +1 -0
  1258. package/dist/source-archive.d.ts +101 -0
  1259. package/dist/source-archive.js +309 -0
  1260. package/dist/source-archive.js.map +1 -0
  1261. package/dist/stdioBlocking.d.ts +1 -0
  1262. package/dist/stdioBlocking.js +9 -0
  1263. package/dist/stdioBlocking.js.map +1 -0
  1264. package/dist/terrain/bake.d.ts +40 -0
  1265. package/dist/terrain/bake.js +318 -0
  1266. package/dist/terrain/bake.js.map +1 -0
  1267. package/dist/terrain/generate.d.ts +21 -0
  1268. package/dist/terrain/generate.js +239 -0
  1269. package/dist/terrain/generate.js.map +1 -0
  1270. package/dist/terrain/grid.d.ts +48 -0
  1271. package/dist/terrain/grid.js +133 -0
  1272. package/dist/terrain/grid.js.map +1 -0
  1273. package/dist/terrain/import.d.ts +40 -0
  1274. package/dist/terrain/import.js +252 -0
  1275. package/dist/terrain/import.js.map +1 -0
  1276. package/dist/terrain/index.d.ts +11 -0
  1277. package/dist/terrain/index.js +88 -0
  1278. package/dist/terrain/index.js.map +1 -0
  1279. package/dist/terrain/inspect.d.ts +35 -0
  1280. package/dist/terrain/inspect.js +115 -0
  1281. package/dist/terrain/inspect.js.map +1 -0
  1282. package/dist/terrain/island.d.ts +31 -0
  1283. package/dist/terrain/island.js +128 -0
  1284. package/dist/terrain/island.js.map +1 -0
  1285. package/dist/terrain/noise.d.ts +79 -0
  1286. package/dist/terrain/noise.js +162 -0
  1287. package/dist/terrain/noise.js.map +1 -0
  1288. package/dist/terrain/normals.d.ts +21 -0
  1289. package/dist/terrain/normals.js +55 -0
  1290. package/dist/terrain/normals.js.map +1 -0
  1291. package/dist/terrain/presets/alpine.json +20 -0
  1292. package/dist/terrain/presets/coast.json +20 -0
  1293. package/dist/terrain/presets/desert.json +22 -0
  1294. package/dist/terrain/presets/forest.json +20 -0
  1295. package/dist/terrain/presets/meadow.json +20 -0
  1296. package/dist/terrain/presets/volcanic.json +22 -0
  1297. package/dist/terrain/presets.d.ts +29 -0
  1298. package/dist/terrain/presets.js +128 -0
  1299. package/dist/terrain/presets.js.map +1 -0
  1300. package/dist/terrain/source.d.ts +42 -0
  1301. package/dist/terrain/source.js +241 -0
  1302. package/dist/terrain/source.js.map +1 -0
  1303. package/dist/terrain/tile.d.ts +92 -0
  1304. package/dist/terrain/tile.js +268 -0
  1305. package/dist/terrain/tile.js.map +1 -0
  1306. package/dist/textureAudit.d.ts +23 -0
  1307. package/dist/textureAudit.js +192 -0
  1308. package/dist/textureAudit.js.map +1 -0
  1309. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1310. package/dist/unreal/avatarMode.d.ts +21 -0
  1311. package/dist/unreal/avatarMode.js +33 -0
  1312. package/dist/unreal/avatarMode.js.map +1 -0
  1313. package/dist/unreal/delivery.d.ts +46 -0
  1314. package/dist/unreal/delivery.js +89 -0
  1315. package/dist/unreal/delivery.js.map +1 -0
  1316. package/dist/unreal/doctor.d.ts +50 -0
  1317. package/dist/unreal/doctor.js +102 -0
  1318. package/dist/unreal/doctor.js.map +1 -0
  1319. package/dist/unreal/package.d.ts +80 -0
  1320. package/dist/unreal/package.js +273 -0
  1321. package/dist/unreal/package.js.map +1 -0
  1322. package/dist/unreal/release.d.ts +41 -0
  1323. package/dist/unreal/release.js +122 -0
  1324. package/dist/unreal/release.js.map +1 -0
  1325. package/dist/unreal.d.ts +30 -0
  1326. package/dist/unreal.js +362 -0
  1327. package/dist/unreal.js.map +1 -0
  1328. package/dist/unrealCandidate.d.ts +213 -0
  1329. package/dist/unrealCandidate.js +765 -0
  1330. package/dist/unrealCandidate.js.map +1 -0
  1331. package/dist/unrealManifest.d.ts +74 -0
  1332. package/dist/unrealManifest.js +354 -0
  1333. package/dist/unrealManifest.js.map +1 -0
  1334. package/dist/unrealPublish.d.ts +111 -0
  1335. package/dist/unrealPublish.js +331 -0
  1336. package/dist/unrealPublish.js.map +1 -0
  1337. package/dist/vault.d.ts +121 -0
  1338. package/dist/vault.js +136 -0
  1339. package/dist/vault.js.map +1 -0
  1340. package/dist/vehicle/addOnDefinition.d.ts +19 -0
  1341. package/dist/vehicle/addOnDefinition.js +21 -0
  1342. package/dist/vehicle/addOnDefinition.js.map +1 -0
  1343. package/dist/vehicle/addon.d.ts +158 -0
  1344. package/dist/vehicle/addon.js +441 -0
  1345. package/dist/vehicle/addon.js.map +1 -0
  1346. package/dist/vehicle/addonDefinitionGuard.d.ts +53 -0
  1347. package/dist/vehicle/addonDefinitionGuard.js +206 -0
  1348. package/dist/vehicle/addonDefinitionGuard.js.map +1 -0
  1349. package/dist/vehicle/addonPublished.d.ts +80 -0
  1350. package/dist/vehicle/addonPublished.js +221 -0
  1351. package/dist/vehicle/addonPublished.js.map +1 -0
  1352. package/dist/vehicle/audio.d.ts +259 -0
  1353. package/dist/vehicle/audio.js +1069 -0
  1354. package/dist/vehicle/audio.js.map +1 -0
  1355. package/dist/vehicle/audioDefects.d.ts +125 -0
  1356. package/dist/vehicle/audioDefects.js +591 -0
  1357. package/dist/vehicle/audioDefects.js.map +1 -0
  1358. package/dist/vehicle/audioDistinct.d.ts +62 -0
  1359. package/dist/vehicle/audioDistinct.js +479 -0
  1360. package/dist/vehicle/audioDistinct.js.map +1 -0
  1361. package/dist/vehicle/audioImport.d.ts +217 -0
  1362. package/dist/vehicle/audioImport.js +610 -0
  1363. package/dist/vehicle/audioImport.js.map +1 -0
  1364. package/dist/vehicle/audioProvenance.d.ts +47 -0
  1365. package/dist/vehicle/audioProvenance.js +364 -0
  1366. package/dist/vehicle/audioProvenance.js.map +1 -0
  1367. package/dist/vehicle/audioReference.d.ts +36 -0
  1368. package/dist/vehicle/audioReference.js +176 -0
  1369. package/dist/vehicle/audioReference.js.map +1 -0
  1370. package/dist/vehicle/audioSlots.d.ts +27 -0
  1371. package/dist/vehicle/audioSlots.js +43 -0
  1372. package/dist/vehicle/audioSlots.js.map +1 -0
  1373. package/dist/vehicle/audioSpectral.d.ts +71 -0
  1374. package/dist/vehicle/audioSpectral.js +534 -0
  1375. package/dist/vehicle/audioSpectral.js.map +1 -0
  1376. package/dist/vehicle/cabinCheck.d.ts +209 -0
  1377. package/dist/vehicle/cabinCheck.js +799 -0
  1378. package/dist/vehicle/cabinCheck.js.map +1 -0
  1379. package/dist/vehicle/drive.d.ts +66 -0
  1380. package/dist/vehicle/drive.js +228 -0
  1381. package/dist/vehicle/drive.js.map +1 -0
  1382. package/dist/vehicle/enginePolicy.d.ts +68 -0
  1383. package/dist/vehicle/enginePolicy.js +209 -0
  1384. package/dist/vehicle/enginePolicy.js.map +1 -0
  1385. package/dist/vehicle/hostFrame.d.ts +78 -0
  1386. package/dist/vehicle/hostFrame.js +136 -0
  1387. package/dist/vehicle/hostFrame.js.map +1 -0
  1388. package/dist/vehicle/inspectionSheets.d.ts +42 -0
  1389. package/dist/vehicle/inspectionSheets.js +173 -0
  1390. package/dist/vehicle/inspectionSheets.js.map +1 -0
  1391. package/dist/vehicle/keyboardLaunch.d.ts +189 -0
  1392. package/dist/vehicle/keyboardLaunch.js +340 -0
  1393. package/dist/vehicle/keyboardLaunch.js.map +1 -0
  1394. package/dist/vehicle/lampCoverage.d.ts +49 -0
  1395. package/dist/vehicle/lampCoverage.js +252 -0
  1396. package/dist/vehicle/lampCoverage.js.map +1 -0
  1397. package/dist/vehicle/mintAddOn.d.ts +110 -0
  1398. package/dist/vehicle/mintAddOn.js +321 -0
  1399. package/dist/vehicle/mintAddOn.js.map +1 -0
  1400. package/dist/vehicle/mintVehicle.d.ts +189 -0
  1401. package/dist/vehicle/mintVehicle.js +417 -0
  1402. package/dist/vehicle/mintVehicle.js.map +1 -0
  1403. package/dist/vehicle/paintHue.d.ts +89 -0
  1404. package/dist/vehicle/paintHue.js +248 -0
  1405. package/dist/vehicle/paintHue.js.map +1 -0
  1406. package/dist/vehicle/panelCoverage.d.ts +37 -0
  1407. package/dist/vehicle/panelCoverage.js +93 -0
  1408. package/dist/vehicle/panelCoverage.js.map +1 -0
  1409. package/dist/vehicle/platform.d.ts +71 -0
  1410. package/dist/vehicle/platform.js +144 -0
  1411. package/dist/vehicle/platform.js.map +1 -0
  1412. package/dist/vehicle/preview.d.ts +339 -0
  1413. package/dist/vehicle/preview.js +854 -0
  1414. package/dist/vehicle/preview.js.map +1 -0
  1415. package/dist/vehicle/previewAddon.d.ts +197 -0
  1416. package/dist/vehicle/previewAddon.js +520 -0
  1417. package/dist/vehicle/previewAddon.js.map +1 -0
  1418. package/dist/vehicle/previewSeats.d.ts +102 -0
  1419. package/dist/vehicle/previewSeats.js +190 -0
  1420. package/dist/vehicle/previewSeats.js.map +1 -0
  1421. package/dist/vehicle/publish.d.ts +78 -0
  1422. package/dist/vehicle/publish.js +111 -0
  1423. package/dist/vehicle/publish.js.map +1 -0
  1424. package/dist/vehicle/recheckListed.d.ts +87 -0
  1425. package/dist/vehicle/recheckListed.js +200 -0
  1426. package/dist/vehicle/recheckListed.js.map +1 -0
  1427. package/dist/vehicle/renditionManifest.d.ts +10 -0
  1428. package/dist/vehicle/renditionManifest.js +56 -0
  1429. package/dist/vehicle/renditionManifest.js.map +1 -0
  1430. package/dist/vehicle/sealCheck.d.ts +30 -0
  1431. package/dist/vehicle/sealCheck.js +59 -0
  1432. package/dist/vehicle/sealCheck.js.map +1 -0
  1433. package/dist/vehicle/simulate.d.ts +219 -0
  1434. package/dist/vehicle/simulate.js +536 -0
  1435. package/dist/vehicle/simulate.js.map +1 -0
  1436. package/dist/vehicle/simulateRuntime.d.ts +76 -0
  1437. package/dist/vehicle/simulateRuntime.js +252 -0
  1438. package/dist/vehicle/simulateRuntime.js.map +1 -0
  1439. package/dist/vehicle/testutil/sourcedAudio.d.ts +13 -0
  1440. package/dist/vehicle/testutil/sourcedAudio.js +96 -0
  1441. package/dist/vehicle/testutil/sourcedAudio.js.map +1 -0
  1442. package/dist/vehicle/validate.d.ts +225 -0
  1443. package/dist/vehicle/validate.js +956 -0
  1444. package/dist/vehicle/validate.js.map +1 -0
  1445. package/dist/vehicle/wheelDesign.d.ts +98 -0
  1446. package/dist/vehicle/wheelDesign.js +276 -0
  1447. package/dist/vehicle/wheelDesign.js.map +1 -0
  1448. package/dist/verifySubPath.d.ts +69 -0
  1449. package/dist/verifySubPath.js +458 -0
  1450. package/dist/verifySubPath.js.map +1 -0
  1451. package/dist/visualQa/animation.d.ts +57 -0
  1452. package/dist/visualQa/animation.js +503 -0
  1453. package/dist/visualQa/animation.js.map +1 -0
  1454. package/dist/visualQa/avatar.d.ts +3 -0
  1455. package/dist/visualQa/avatar.js +443 -0
  1456. package/dist/visualQa/avatar.js.map +1 -0
  1457. package/dist/visualQa/avatarMath.d.ts +180 -0
  1458. package/dist/visualQa/avatarMath.js +318 -0
  1459. package/dist/visualQa/avatarMath.js.map +1 -0
  1460. package/dist/visualQa/avatarPreview.d.ts +26 -0
  1461. package/dist/visualQa/avatarPreview.js +167 -0
  1462. package/dist/visualQa/avatarPreview.js.map +1 -0
  1463. package/dist/visualQa/avatarPreviewMath.d.ts +189 -0
  1464. package/dist/visualQa/avatarPreviewMath.js +696 -0
  1465. package/dist/visualQa/avatarPreviewMath.js.map +1 -0
  1466. package/dist/visualQa/avatarPreviewProbe.d.ts +7 -0
  1467. package/dist/visualQa/avatarPreviewProbe.js +181 -0
  1468. package/dist/visualQa/avatarPreviewProbe.js.map +1 -0
  1469. package/dist/visualQa/avatarProbe.d.ts +1 -0
  1470. package/dist/visualQa/avatarProbe.js +264 -0
  1471. package/dist/visualQa/avatarProbe.js.map +1 -0
  1472. package/dist/visualQa/browser.d.ts +116 -0
  1473. package/dist/visualQa/browser.js +817 -0
  1474. package/dist/visualQa/browser.js.map +1 -0
  1475. package/dist/visualQa/candidate.d.ts +116 -0
  1476. package/dist/visualQa/candidate.js +265 -0
  1477. package/dist/visualQa/candidate.js.map +1 -0
  1478. package/dist/visualQa/checklists.d.ts +31 -0
  1479. package/dist/visualQa/checklists.js +160 -0
  1480. package/dist/visualQa/checklists.js.map +1 -0
  1481. package/dist/visualQa/command.d.ts +110 -0
  1482. package/dist/visualQa/command.js +521 -0
  1483. package/dist/visualQa/command.js.map +1 -0
  1484. package/dist/visualQa/commonAsserts.d.ts +68 -0
  1485. package/dist/visualQa/commonAsserts.js +239 -0
  1486. package/dist/visualQa/commonAsserts.js.map +1 -0
  1487. package/dist/visualQa/contactSheet.d.ts +32 -0
  1488. package/dist/visualQa/contactSheet.js +153 -0
  1489. package/dist/visualQa/contactSheet.js.map +1 -0
  1490. package/dist/visualQa/critic.d.ts +18 -0
  1491. package/dist/visualQa/critic.js +179 -0
  1492. package/dist/visualQa/critic.js.map +1 -0
  1493. package/dist/visualQa/emotePage.d.ts +10 -0
  1494. package/dist/visualQa/emotePage.js +249 -0
  1495. package/dist/visualQa/emotePage.js.map +1 -0
  1496. package/dist/visualQa/evidenceOverlay.d.ts +74 -0
  1497. package/dist/visualQa/evidenceOverlay.js +268 -0
  1498. package/dist/visualQa/evidenceOverlay.js.map +1 -0
  1499. package/dist/visualQa/harness.d.ts +57 -0
  1500. package/dist/visualQa/harness.js +3 -0
  1501. package/dist/visualQa/harness.js.map +1 -0
  1502. package/dist/visualQa/hosted.d.ts +152 -0
  1503. package/dist/visualQa/hosted.js +367 -0
  1504. package/dist/visualQa/hosted.js.map +1 -0
  1505. package/dist/visualQa/labelLimit.d.ts +12 -0
  1506. package/dist/visualQa/labelLimit.js +31 -0
  1507. package/dist/visualQa/labelLimit.js.map +1 -0
  1508. package/dist/visualQa/mirror.d.ts +36 -0
  1509. package/dist/visualQa/mirror.js +98 -0
  1510. package/dist/visualQa/mirror.js.map +1 -0
  1511. package/dist/visualQa/moveUx.d.ts +44 -0
  1512. package/dist/visualQa/moveUx.js +103 -0
  1513. package/dist/visualQa/moveUx.js.map +1 -0
  1514. package/dist/visualQa/pinnedChrome.d.ts +63 -0
  1515. package/dist/visualQa/pinnedChrome.js +214 -0
  1516. package/dist/visualQa/pinnedChrome.js.map +1 -0
  1517. package/dist/visualQa/resolve.d.ts +88 -0
  1518. package/dist/visualQa/resolve.js +248 -0
  1519. package/dist/visualQa/resolve.js.map +1 -0
  1520. package/dist/visualQa/scene.d.ts +14 -0
  1521. package/dist/visualQa/scene.js +688 -0
  1522. package/dist/visualQa/scene.js.map +1 -0
  1523. package/dist/visualQa/shot.d.ts +2 -0
  1524. package/dist/visualQa/shot.js +27 -0
  1525. package/dist/visualQa/shot.js.map +1 -0
  1526. package/dist/visualQa/signIn.d.ts +35 -0
  1527. package/dist/visualQa/signIn.js +144 -0
  1528. package/dist/visualQa/signIn.js.map +1 -0
  1529. package/dist/visualQa/submitBudget.d.ts +25 -0
  1530. package/dist/visualQa/submitBudget.js +82 -0
  1531. package/dist/visualQa/submitBudget.js.map +1 -0
  1532. package/dist/visualQa/types.d.ts +195 -0
  1533. package/dist/visualQa/types.js +12 -0
  1534. package/dist/visualQa/types.js.map +1 -0
  1535. package/dist/visualQa/vehicle.d.ts +130 -0
  1536. package/dist/visualQa/vehicle.js +2002 -0
  1537. package/dist/visualQa/vehicle.js.map +1 -0
  1538. package/dist/visualQa/vehicleAddonProbe.d.ts +1 -0
  1539. package/dist/visualQa/vehicleAddonProbe.js +115 -0
  1540. package/dist/visualQa/vehicleAddonProbe.js.map +1 -0
  1541. package/dist/visualQa/vehicleCabinFit.d.ts +78 -0
  1542. package/dist/visualQa/vehicleCabinFit.js +55 -0
  1543. package/dist/visualQa/vehicleCabinFit.js.map +1 -0
  1544. package/dist/visualQa/vehicleClearance.d.ts +135 -0
  1545. package/dist/visualQa/vehicleClearance.js +299 -0
  1546. package/dist/visualQa/vehicleClearance.js.map +1 -0
  1547. package/dist/visualQa/vehicleDriveAlive.d.ts +55 -0
  1548. package/dist/visualQa/vehicleDriveAlive.js +103 -0
  1549. package/dist/visualQa/vehicleDriveAlive.js.map +1 -0
  1550. package/dist/visualQa/vehicleGrip.d.ts +156 -0
  1551. package/dist/visualQa/vehicleGrip.js +439 -0
  1552. package/dist/visualQa/vehicleGrip.js.map +1 -0
  1553. package/dist/visualQa/vehicleInspection.d.ts +70 -0
  1554. package/dist/visualQa/vehicleInspection.js +318 -0
  1555. package/dist/visualQa/vehicleInspection.js.map +1 -0
  1556. package/dist/visualQa/vehicleLamps.d.ts +120 -0
  1557. package/dist/visualQa/vehicleLamps.js +377 -0
  1558. package/dist/visualQa/vehicleLamps.js.map +1 -0
  1559. package/dist/visualQa/vehicleMath.d.ts +440 -0
  1560. package/dist/visualQa/vehicleMath.js +967 -0
  1561. package/dist/visualQa/vehicleMath.js.map +1 -0
  1562. package/dist/visualQa/vehicleOccupants.d.ts +66 -0
  1563. package/dist/visualQa/vehicleOccupants.js +448 -0
  1564. package/dist/visualQa/vehicleOccupants.js.map +1 -0
  1565. package/dist/visualQa/vehiclePenetration.d.ts +172 -0
  1566. package/dist/visualQa/vehiclePenetration.js +1157 -0
  1567. package/dist/visualQa/vehiclePenetration.js.map +1 -0
  1568. package/dist/visualQa/vehiclePoses.d.ts +25 -0
  1569. package/dist/visualQa/vehiclePoses.js +56 -0
  1570. package/dist/visualQa/vehiclePoses.js.map +1 -0
  1571. package/dist/visualQa/vehiclePosture.d.ts +78 -0
  1572. package/dist/visualQa/vehiclePosture.js +263 -0
  1573. package/dist/visualQa/vehiclePosture.js.map +1 -0
  1574. package/dist/visualQa/vehiclePreview.d.ts +103 -0
  1575. package/dist/visualQa/vehiclePreview.js +312 -0
  1576. package/dist/visualQa/vehiclePreview.js.map +1 -0
  1577. package/dist/visualQa/vehicleProbe.d.ts +3 -0
  1578. package/dist/visualQa/vehicleProbe.js +670 -0
  1579. package/dist/visualQa/vehicleProbe.js.map +1 -0
  1580. package/dist/visualQa/vehicleStance.d.ts +108 -0
  1581. package/dist/visualQa/vehicleStance.js +200 -0
  1582. package/dist/visualQa/vehicleStance.js.map +1 -0
  1583. package/dist/visualQa/viewer.d.ts +6 -0
  1584. package/dist/visualQa/viewer.js +750 -0
  1585. package/dist/visualQa/viewer.js.map +1 -0
  1586. package/dist/visualQa/viewerGeometry.d.ts +116 -0
  1587. package/dist/visualQa/viewerGeometry.js +476 -0
  1588. package/dist/visualQa/viewerGeometry.js.map +1 -0
  1589. package/dist/visualQa/viewerPage.d.ts +11 -0
  1590. package/dist/visualQa/viewerPage.js +414 -0
  1591. package/dist/visualQa/viewerPage.js.map +1 -0
  1592. package/dist/visualQa/webgpuSelfTest.d.ts +52 -0
  1593. package/dist/visualQa/webgpuSelfTest.js +113 -0
  1594. package/dist/visualQa/webgpuSelfTest.js.map +1 -0
  1595. package/dist/visualQa/winChrome.d.ts +92 -0
  1596. package/dist/visualQa/winChrome.js +445 -0
  1597. package/dist/visualQa/winChrome.js.map +1 -0
  1598. package/dist/visualQa/worldWalk.d.ts +59 -0
  1599. package/dist/visualQa/worldWalk.js +523 -0
  1600. package/dist/visualQa/worldWalk.js.map +1 -0
  1601. package/dist/visualQa/worldWalkMath.d.ts +263 -0
  1602. package/dist/visualQa/worldWalkMath.js +873 -0
  1603. package/dist/visualQa/worldWalkMath.js.map +1 -0
  1604. package/dist/visualQa/worldWalkProbe.d.ts +1 -0
  1605. package/dist/visualQa/worldWalkProbe.js +206 -0
  1606. package/dist/visualQa/worldWalkProbe.js.map +1 -0
  1607. package/dist/visualsConfig.d.ts +65 -0
  1608. package/dist/visualsConfig.js +1333 -0
  1609. package/dist/visualsConfig.js.map +1 -0
  1610. package/dist/voiceCommand.d.ts +11 -0
  1611. package/dist/voiceCommand.js +101 -0
  1612. package/dist/voiceCommand.js.map +1 -0
  1613. package/dist/world/analyze.d.ts +51 -0
  1614. package/dist/world/analyze.js +767 -0
  1615. package/dist/world/analyze.js.map +1 -0
  1616. package/dist/world/baseline.d.ts +33 -0
  1617. package/dist/world/baseline.js +111 -0
  1618. package/dist/world/baseline.js.map +1 -0
  1619. package/dist/world/canonicalize.d.ts +7 -0
  1620. package/dist/world/canonicalize.js +110 -0
  1621. package/dist/world/canonicalize.js.map +1 -0
  1622. package/dist/world/diff.d.ts +18 -0
  1623. package/dist/world/diff.js +58 -0
  1624. package/dist/world/diff.js.map +1 -0
  1625. package/dist/world/focus.d.ts +11 -0
  1626. package/dist/world/focus.js +161 -0
  1627. package/dist/world/focus.js.map +1 -0
  1628. package/dist/world/format.d.ts +6 -0
  1629. package/dist/world/format.js +125 -0
  1630. package/dist/world/format.js.map +1 -0
  1631. package/dist/world/readWorldMetrics.d.ts +10 -0
  1632. package/dist/world/readWorldMetrics.js +31 -0
  1633. package/dist/world/readWorldMetrics.js.map +1 -0
  1634. package/dist/world/snapshotTypes.d.ts +59 -0
  1635. package/dist/world/snapshotTypes.js +8 -0
  1636. package/dist/world/snapshotTypes.js.map +1 -0
  1637. package/dist/world/snapshotWorld.d.ts +16 -0
  1638. package/dist/world/snapshotWorld.js +142 -0
  1639. package/dist/world/snapshotWorld.js.map +1 -0
  1640. package/dist/world/wiring.d.ts +21 -0
  1641. package/dist/world/wiring.js +73 -0
  1642. package/dist/world/wiring.js.map +1 -0
  1643. package/dist/world/zones.d.ts +23 -0
  1644. package/dist/world/zones.js +134 -0
  1645. package/dist/world/zones.js.map +1 -0
  1646. package/docs/bridge.md +304 -0
  1647. package/docs/device-hand-reach.md +44 -0
  1648. package/docs/scene-hlod.md +139 -0
  1649. package/docs/vehicle-audio-import.md +299 -0
  1650. package/docs/vehicle-simulate.md +165 -0
  1651. package/docs/visual-qa-candidate-versions.md +71 -0
  1652. package/docs/visual-qa.md +462 -0
  1653. package/package.json +69 -4
  1654. package/plugins/beamng-vehicle/README.md +129 -0
  1655. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  1656. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  1657. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  1658. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  1659. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  1660. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  1661. package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
  1662. package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
  1663. package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
  1664. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
  1665. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
  1666. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
  1667. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
  1668. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
  1669. package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
  1670. package/plugins/beamng-vehicle/bin/beamng-vehicle.mjs +1295 -0
  1671. package/plugins/beamng-vehicle/bin/beamng_abs.py +408 -0
  1672. package/plugins/beamng-vehicle/bin/beamng_audio.py +394 -0
  1673. package/plugins/beamng-vehicle/bin/beamng_engine.py +184 -0
  1674. package/plugins/beamng-vehicle/bin/beamng_expression.py +373 -0
  1675. package/plugins/beamng-vehicle/bin/beamng_jbeam.py +858 -0
  1676. package/plugins/beamng-vehicle/bin/beamng_materials.py +261 -0
  1677. package/plugins/beamng-vehicle/bin/beamng_stock_events.py +171 -0
  1678. package/plugins/beamng-vehicle/bin/convert-beamng.py +1563 -0
  1679. package/plugins/beamng-vehicle/bin/fmod_studio.py +524 -0
  1680. package/plugins/beamng-vehicle/bin/fsb5.py +304 -0
  1681. package/plugins/beamng-vehicle/bin/index-beamng-common.mjs +16 -0
  1682. package/plugins/beamng-vehicle/bin/index-beamng.py +69 -0
  1683. package/plugins/beamng-vehicle/bin/lower-beamng.py +2399 -0
  1684. package/plugins/beamng-vehicle/bin/sim_audio.py +250 -0
  1685. package/plugins/beamng-vehicle/bin/sim_audio_ac.py +378 -0
  1686. package/plugins/beamng-vehicle/bin/sim_audio_beamng.py +878 -0
  1687. package/plugins/beamng-vehicle/bin/sim_audio_fixtures.py +287 -0
  1688. package/plugins/beamng-vehicle/bin/sim_audio_import.py +135 -0
  1689. package/plugins/beamng-vehicle/bin/test_beamng_engine.py +124 -0
  1690. package/plugins/beamng-vehicle/bin/test_beamng_jbeam.py +383 -0
  1691. package/plugins/beamng-vehicle/bin/test_beamng_precedence.py +134 -0
  1692. package/plugins/beamng-vehicle/bin/test_sim_audio.py +249 -0
  1693. package/plugins/beamng-vehicle/bridge-plugin.json +55 -0
  1694. package/plugins/beamng-vehicle/controller-adapters/beamng-0.39.4-abs.json +52 -0
  1695. package/plugins/beamng-vehicle/lib/common-dependency.mjs +357 -0
  1696. package/plugins/beamng-vehicle/lib/dae-scan.mjs +40 -0
  1697. package/plugins/beamng-vehicle/lib/file-identity.mjs +46 -0
  1698. package/plugins/beamng-vehicle/lib/material-semantics.mjs +312 -0
  1699. package/plugins/beamng-vehicle/lib/palette-contract.mjs +6 -0
  1700. package/plugins/beamng-vehicle/lib/vehicle-qa.mjs +567 -0
  1701. package/plugins/beamng-vehicle/lib/vehicle-source.mjs +247 -0
  1702. package/plugins/beamng-vehicle/profiles/source-compatibility.json +14 -0
  1703. package/plugins/beamng-vehicle/vendor/vehicle-package-v2.mjs +6451 -0
  1704. package/vendor/README.md +63 -0
  1705. package/vendor/ability-manifest.mjs +527 -6
  1706. package/vendor/audits/asset-credits.mjs +96 -0
  1707. package/vendor/audits/check-loaders.mjs +80 -0
  1708. package/vendor/audits/perf-gate.mjs +759 -0
  1709. package/vendor/audits/prove-live.mjs +307 -0
  1710. package/vendor/audits/source-audit.mjs +530 -0
  1711. package/vendor/audits/world-audit.mjs +439 -0
  1712. package/vendor/capture-body.glb +0 -0
  1713. package/vendor/capture-face.glb +0 -0
  1714. package/vendor/installed-index.mjs +1 -1
  1715. package/vendor/vehicle-package-v2.mjs +6451 -0
package/dist/init.js CHANGED
@@ -1,57 +1,676 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.slugify = slugify;
37
+ exports.sdkDependencySpec = sdkDependencySpec;
3
38
  exports.initTemplate = initTemplate;
39
+ exports.initTemplateWithTerrain = initTemplateWithTerrain;
4
40
  const node_fs_1 = require("node:fs");
5
41
  const node_path_1 = require("node:path");
6
- // Minimal no-build starter: plain Three.js from a CDN import map, no bundler.
7
- // The SDK-integrated Vite templates (template-spinning-scene, template-hangout)
8
- // are the real starting points; this exists so `helix init` works standalone.
9
- const TEMPLATE_FILES = {
10
- 'helix.json': (slug) => JSON.stringify({
11
- helixVersion: '0.1',
12
- title: 'My HELIX World',
13
- slug,
42
+ const config_1 = require("./config");
43
+ const compiler_1 = require("./sceneElements/compiler");
44
+ const types_1 = require("./sceneImport/types");
45
+ // Pinned ranges for a freshly scaffolded world. engine-core is pinned by DEFAULT (not left to an
46
+ // upgrade pass) because every engine-core tool needs BOTH halves — the pin AND a matching in-world
47
+ // call — and a world scaffolded without them cannot be measured or captured at all until someone
48
+ // retrofits both. main.ts below makes both calls: world.ready() for `helix world inspect` /
49
+ // inspect_world / world_metrics, and screenshots.register() + screenshots.ready() for `helix
50
+ // screenshot` / capture_world_screenshot.
51
+ //
52
+ // >= 0.1.2 is what the screenshot `hide` option needs (added in 0.1.1); do not loosen it.
53
+ const SYSTEM_PINS = {
54
+ 'humanoid-character': '^0.3',
55
+ 'engine-core': '^0.1.2',
56
+ };
57
+ // A scene world's environment IS the streamed Scene v2 document, so it pins the two systems that
58
+ // realize it — and main.ts below calls both (the pin-without-its-call trap above).
59
+ //
60
+ // >= 0.1.9 is the first @helix/visual carrying the GI contributor lane `attachSceneVisuals` drives
61
+ // (0.1.8 is the maintainers' fidelity-contract release, without it). @helix/scene 0.3 is the line with
62
+ // Scene HLOD, activation volumes and distant trees; the 0.2 line keeps serving worlds that pinned it.
63
+ const SCENE_SYSTEM_PINS = {
64
+ scene: '^0.3',
65
+ visual: '^0.1.9',
66
+ };
67
+ /** The starter document's folder under public/scene/ — `?scene=<folder>` picks between documents. */
68
+ const SCENE_FOLDER = 'mall';
69
+ // The starter terrain: 4 x 4 tiles at 1 m per sample (256 m each), generated from a FIXED seed so two scaffolds of the same
70
+ // preset produce byte-identical ground, and read back by the compiler from the folder beside the document.
71
+ const TERRAIN_FOLDER = 'terrain';
72
+ const STARTER_TERRAIN_TILES = 4;
73
+ const STARTER_TERRAIN_SEED = 4242;
74
+ // The starter scene, compiled OFFLINE at scaffold time. This is a copy of the CLI's own
75
+ // examples/minimal-mall.elements.json: `examples/` is not in package.json `files`, so it does not
76
+ // reach the published package and cannot be read from disk at scaffold time.
77
+ const MALL_ELEMENTS = `{
78
+ "format": "helix.scene-elements",
79
+ "version": 1,
80
+ "id": "scene.example.mall",
81
+ "title": "Minimal Mall",
82
+ "spawn": { "position": [0, 1.9, 4], "rotationYDeg": 180 },
83
+ "buildings": [
84
+ {
85
+ "id": "building.mall",
86
+ "type": "building",
87
+ "elements": [
88
+ {
89
+ "id": "floor.ground",
90
+ "type": "floor",
91
+ "center": [0, 0],
92
+ "elevation": -0.1,
93
+ "size": [20, 12],
94
+ "thickness": 0.2
95
+ },
96
+ {
97
+ "id": "wall.north",
98
+ "type": "wall",
99
+ "start": [-10, -6],
100
+ "end": [10, -6],
101
+ "height": 4,
102
+ "thickness": 0.25
103
+ },
104
+ {
105
+ "id": "ceiling.main",
106
+ "type": "ceiling",
107
+ "center": [0, 0],
108
+ "elevation": 4,
109
+ "size": [20, 12],
110
+ "thickness": 0.2
111
+ }
112
+ ]
113
+ }
114
+ ]
115
+ }
116
+ `;
117
+ /** The mall, and — when the scaffold generated one — the terrain it stands on. */
118
+ function starterElements(terrain) {
119
+ const elements = JSON.parse(MALL_ELEMENTS);
120
+ if (!terrain)
121
+ return elements;
122
+ elements.terrain = { type: 'terrain', id: 'ground', source: terrain.source };
123
+ elements.buildings[0].position = [0, terrain.groundY, 0];
124
+ elements.spawn.position = [0, terrain.groundY + 1.9, 4];
125
+ return elements;
126
+ }
127
+ // Compiling here (rather than shipping a pre-sealed document) keeps the pin and the bytes provably
128
+ // the same object: `revision` and `integrity.sha256` come off the document the scaffold just wrote.
129
+ function compileStarterScene(terrain) {
130
+ const scene = (0, compiler_1.compileSceneElements)(starterElements(terrain?.terrain ?? null), terrain ? { baseDir: terrain.baseDir } : {});
131
+ return {
132
+ document: (0, types_1.serializeSceneDocument)(scene),
133
+ pin: {
134
+ kind: 'scene-v2',
135
+ id: scene.id,
136
+ revision: scene.revision,
137
+ integrity: { sha256: scene.integrity.sha256 },
138
+ },
139
+ };
140
+ }
141
+ function slugify(value) {
142
+ return value
143
+ .toLowerCase()
144
+ .replace(/[^a-z0-9-]+/g, '-')
145
+ .replace(/^-+|-+$/g, '')
146
+ .slice(0, 50)
147
+ .padEnd(3, '0');
148
+ }
149
+ function manifest(opts, scenePin) {
150
+ // A scene world is a multiplayer world whose environment is streamed rather than built in code.
151
+ const multiplayer = opts.kind === 'multiplayer' || opts.kind === 'scene';
152
+ const base = {
153
+ // v0.3 adds the multiplayer block + the reserved voice.* permissions; a single-player character
154
+ // world stays on v0.2. Both carry `systems`, which is what `helix install` resolves.
155
+ helixVersion: multiplayer ? '0.3' : '0.2',
156
+ title: opts.title,
157
+ slug: opts.slug,
14
158
  entry: 'index.html',
15
- maxPlayers: 1,
16
- permissions: [],
159
+ maxPlayers: multiplayer ? opts.maxPlayers : 1,
160
+ permissions: multiplayer
161
+ ? ['auth.profile', 'multiplayer', 'voice.proximity']
162
+ : ['auth.profile'],
17
163
  supportsMobile: true,
18
164
  contentRating: 'everyone',
19
- }, null, 2) + '\n',
20
- 'index.html': () => `<!doctype html>
165
+ systems: {
166
+ ...SYSTEM_PINS,
167
+ ...(opts.kind === 'scene' ? SCENE_SYSTEM_PINS : {}),
168
+ },
169
+ ...(multiplayer
170
+ ? {
171
+ multiplayer: {
172
+ // Proximity voice is ON by default in every multiplayer world — remove this block AND
173
+ // the fail-soft join in main.ts only for a deliberately silent world.
174
+ voice: { mode: 'proximity' },
175
+ },
176
+ }
177
+ : {}),
178
+ // The environment a published scene world streams. `integrity.sha256` is the AUTHORITATIVE
179
+ // address (documents are content-addressed); id/revision are advisory display text.
180
+ ...(scenePin ? { scene: scenePin } : {}),
181
+ };
182
+ return `${JSON.stringify(base, null, 2)}\n`;
183
+ }
184
+ function sdkDependencySpec(scope = config_1.HELIX_SCOPE) {
185
+ return scope === '@hypersoniclabs'
186
+ ? '^0.1.0'
187
+ : `npm:${scope}/helix-sdk@latest`;
188
+ }
189
+ function packageJson(slug) {
190
+ return `${JSON.stringify({
191
+ name: slug,
192
+ version: '0.1.0',
193
+ private: true,
194
+ type: 'module',
195
+ scripts: {
196
+ dev: 'vite',
197
+ build: 'vite build',
198
+ preview: 'vite preview',
199
+ typecheck: 'tsc --noEmit',
200
+ },
201
+ dependencies: {
202
+ // Keep source imports stable while resolving the SDK from the same
203
+ // environment scope as this CLI build. A helix3 scaffold that silently
204
+ // installs the production SDK starts stale and contradicts doctor/MCP.
205
+ '@hypersoniclabs/helix-sdk': sdkDependencySpec(),
206
+ },
207
+ devDependencies: {
208
+ // Rapier is a devDependency like three: the build externalizes it and the browser resolves
209
+ // the bare specifier through the import map, while types + `helix dev` use the local copy.
210
+ '@dimforge/rapier3d-compat': '^0.14.0',
211
+ '@types/three': '^0.185.4',
212
+ three: '^0.185.1',
213
+ typescript: '~5.7.3',
214
+ vite: '^6.0.0',
215
+ },
216
+ }, null, 2)}\n`;
217
+ }
218
+ const VITE_CONFIG = `import { defineConfig } from 'vite';
219
+ import { fileURLToPath } from 'node:url';
220
+
221
+ // base: './' is REQUIRED. A published world is served from a nested path
222
+ // (…/instant-worlds/<id>/<build>/), never the origin root, so root-absolute asset URLs 404 in
223
+ // production while working perfectly in local preview. A relative base is what makes one build work
224
+ // at both. \`helix verify-subpath dist\` proves it.
225
+ //
226
+ // \`three\`, \`@dimforge/rapier3d-compat\`, and platform-owned \`@helix/*\` systems stay EXTERNAL:
227
+ // the browser resolves the bare specifiers
228
+ // through the import map in index.html (written by \`helix install\`) to the platform-hosted single
229
+ // instances, so the world, the platform system, and the runtime abilities all share ONE of each —
230
+ // and the ~2 MB Rapier module is downloaded once per player, not baked into every world bundle.
231
+ //
232
+ // Test locally with \`npm run build\` + \`npm run preview\` — NOT the dev server, which rewrites bare
233
+ // imports and hides whether the import map is correct.
234
+ export default defineConfig({
235
+ base: './',
236
+ resolve: {
237
+ alias: {
238
+ // \`helix install\` materializes the resolved systems here. Every engine-core SUBPATH alias must
239
+ // come BEFORE the root '@helix/engine-core' entry — rollup substitutes by prefix in object
240
+ // order, and a root alias listed first mangles a subpath import into an ENOENT.
241
+ '@helix/engine-core/inspect': fileURLToPath(new URL('./public/helix_modules/engine-core/inspect/index.js', import.meta.url)),
242
+ '@helix/engine-core/screenshot': fileURLToPath(new URL('./public/helix_modules/engine-core/screenshot/index.js', import.meta.url)),
243
+ '@helix/engine-core/world-camera': fileURLToPath(new URL('./public/helix_modules/engine-core/world-camera/index.js', import.meta.url)),
244
+ '@helix/engine-core': fileURLToPath(new URL('./public/helix_modules/engine-core/index.js', import.meta.url)),
245
+ '@helix/humanoid-character': fileURLToPath(new URL('./public/helix_modules/humanoid-character/index.js', import.meta.url)),
246
+ // Scene-world systems. An alias is inert until something imports it, so these are harmless in a
247
+ // world that pins neither — the subpath-before-root rule above applies to '@helix/scene' too.
248
+ '@helix/scene/visual': fileURLToPath(new URL('./public/helix_modules/scene/visual/index.js', import.meta.url)),
249
+ '@helix/scene': fileURLToPath(new URL('./public/helix_modules/scene/index.js', import.meta.url)),
250
+ '@helix/visual': fileURLToPath(new URL('./public/helix_modules/visual/index.js', import.meta.url)),
251
+ },
252
+ },
253
+ build: {
254
+ target: 'es2022',
255
+ rollupOptions: { external: (id) => id === 'three' || id === '@dimforge/rapier3d-compat' || id.startsWith('@helix/') },
256
+ },
257
+ });
258
+ `;
259
+ const TSCONFIG = `${JSON.stringify({
260
+ compilerOptions: {
261
+ target: 'ES2022',
262
+ module: 'ESNext',
263
+ moduleResolution: 'bundler',
264
+ lib: ['ES2022', 'DOM', 'DOM.Iterable'],
265
+ strict: true,
266
+ noEmit: true,
267
+ skipLibCheck: true,
268
+ resolveJsonModule: true,
269
+ isolatedModules: true,
270
+ types: ['vite/client'],
271
+ paths: {
272
+ '@helix/humanoid-character': [
273
+ './public/helix_modules/humanoid-character/index.d.ts',
274
+ ],
275
+ // One entry per engine-core subpath the world can import, plus the root. TypeScript matches
276
+ // `paths` by longest pattern rather than object order, so ordering is cosmetic here — but it
277
+ // mirrors vite.config.ts, where the order IS load-bearing.
278
+ '@helix/engine-core/inspect': [
279
+ './public/helix_modules/engine-core/inspect/index.d.ts',
280
+ ],
281
+ '@helix/engine-core/screenshot': [
282
+ './public/helix_modules/engine-core/screenshot/index.d.ts',
283
+ ],
284
+ '@helix/engine-core/world-camera': [
285
+ './public/helix_modules/engine-core/world-camera/index.d.ts',
286
+ ],
287
+ '@helix/engine-core': [
288
+ './public/helix_modules/engine-core/index.d.ts',
289
+ ],
290
+ '@helix/scene/visual': [
291
+ './public/helix_modules/scene/visual/index.d.ts',
292
+ ],
293
+ '@helix/scene': [
294
+ './public/helix_modules/scene/index.d.ts',
295
+ ],
296
+ '@helix/visual': [
297
+ './public/helix_modules/visual/index.d.ts',
298
+ ],
299
+ },
300
+ },
301
+ include: ['src'],
302
+ }, null, 2)}\n`;
303
+ const GITIGNORE = `node_modules/
304
+ dist/
305
+ # Resolved system/ability CODE — re-created by \`helix install\` from helix.lock.json.
306
+ public/helix_modules/
307
+ `;
308
+ // Durable, machine-readable proof for the mobile audit. The generated HUD also exposes the same
309
+ // contract marker in the live DOM; this file survives bundling so validation does not guess from a
310
+ // fragile source regex. A custom implementation may replace provider with "custom" while keeping
311
+ // the required capabilities honest and proving them in touch QA.
312
+ const MOBILE_CONTROLS_CONTRACT = `${JSON.stringify({
313
+ version: 1,
314
+ provider: '@helix/humanoid-character',
315
+ capabilities: ['move', 'look', 'zoom', 'jump'],
316
+ }, null, 2)}\n`;
317
+ // How a scene world is LIT — the per-world visual contract `helix validate` audits and `helix
318
+ // bake-lighting` patches. sceneVisualsConfig() overlays what the scene itself declares (its authored
319
+ // sun, probe box, exposure band) on top of this before the runtime parses it.
320
+ const VISUALS_CONFIG = `${JSON.stringify({
321
+ version: 1,
322
+ mode: 'dynamic',
323
+ timeOfDay: {
324
+ hours: 10,
325
+ cycleSeconds: 0,
326
+ latitudeDeg: 10,
327
+ declinationDeg: 0,
328
+ noonAzimuthDeg: 130,
329
+ },
330
+ }, null, 2)}\n`;
331
+ // Read at the BUNDLE root: vite copies public/ verbatim into dist/, which is what `helix publish`
332
+ // uploads, so this file is what makes the local documents dev-only rather than merely intended.
333
+ const HELIXIGNORE = `# gitignore-style, read at the bundle root. A published world resolves its scene from the pin in helix.json, so
334
+ # the documents under scene/ are a DEV OVERRIDE that must never ride into the bundle vite copies into dist/.
335
+ scene/
336
+ terrain/
337
+ `;
338
+ // GENERATED by `helix install`; emitted as placeholders so `npm run typecheck` and an editor both
339
+ // work in a freshly scaffolded project, before install has ever run.
340
+ const RUNTIME_STUB = `// GENERATED by \`helix install\` — do not hand-edit. These are placeholders until you run install,
341
+ // which fills them from the resolved system: the hosted three version, its module URL + KTX2
342
+ // transcoder path on the platform CDN, and the system's CDN asset base (from helix.lock.json).
343
+ export const THREE_VERSION = '';
344
+ export const THREE_MODULE_URL = '';
345
+ export const TRANSCODER_PATH = '/runtime/basis/';
346
+ export const SYSTEM_ASSET_BASE = '';
347
+ `;
348
+ const escapeHtml = (value) => value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
349
+ function indexHtml(title) {
350
+ const escaped = escapeHtml(title);
351
+ return `<!doctype html>
21
352
  <html lang="en">
22
353
  <head>
23
354
  <meta charset="utf-8" />
24
355
  <meta name="viewport" content="width=device-width, initial-scale=1" />
25
- <title>My HELIX World</title>
26
- <style>html, body { margin: 0; height: 100%; overflow: hidden; background: #0a0a12; }</style>
356
+ <title>${escaped}</title>
357
+ <!-- data: favicon stops the browser's automatic /favicon.ico probe — that request escapes the
358
+ bundle's sub-path and 404s at the CDN in production for every published world. -->
359
+ <link rel="icon" href="data:," />
360
+ <!-- helix:three:start -->
361
+ <!-- \`helix install\` writes the import map here, pointing the bare \`three\` specifier at the
362
+ platform-hosted single instance. Until you run install it stays empty (the build won't load). -->
27
363
  <script type="importmap">
28
- { "imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.172.0/build/three.module.js" } }
364
+ { "imports": { "three": "" } }
29
365
  </script>
366
+ <!-- helix:three:end -->
367
+ <style>
368
+ html, body { margin: 0; height: 100%; overflow: hidden; background: #14161a; }
369
+ #hud {
370
+ position: fixed; top: 12px; left: 12px; z-index: 10;
371
+ font: 12px/1.5 ui-monospace, monospace; color: #cdd6e0; white-space: pre;
372
+ background: rgba(20, 22, 26, 0.7); border: 1px solid #39424e;
373
+ border-radius: 6px; padding: 8px 10px;
374
+ }
375
+ #controls-hint {
376
+ position: fixed; left: 50%; bottom: 28px; z-index: 10; transform: translateX(-50%);
377
+ max-width: min(560px, calc(100vw - 32px)); padding: 10px 14px; border-radius: 999px;
378
+ color: #eef4fb; background: rgba(20, 22, 26, 0.72); border: 1px solid rgba(205, 214, 224, 0.28);
379
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.22); backdrop-filter: blur(14px);
380
+ font: 500 13px/1.4 system-ui, sans-serif; text-align: center; pointer-events: none;
381
+ opacity: 1; transition: opacity 0.35s ease, transform 0.35s ease;
382
+ }
383
+ #controls-hint.hidden { opacity: 0; transform: translate(-50%, 6px); }
384
+ /* Loading overlay — painted on HTML parse (before any JS downloads → no flash). */
385
+ #loading {
386
+ position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center;
387
+ background: #14161a; color: #cdd6e0; font: 13px/1.5 ui-monospace, monospace;
388
+ opacity: 1; transition: opacity 0.4s ease;
389
+ }
390
+ html[data-helix-hosted-loading] #loading { display: none; }
391
+ #loading.done { opacity: 0; pointer-events: none; }
392
+ #loading .card { width: min(360px, 76vw); text-align: center; }
393
+ #loading .eyebrow { font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: #6cc7ff; opacity: 0.75; }
394
+ #loading .title { margin: 6px 0 18px; font-size: 16px; font-weight: 600; color: #e6edf5; }
395
+ #loading .bar { height: 6px; border-radius: 3px; background: #232830; overflow: hidden; }
396
+ #loading #bar { width: 30%; height: 100%; border-radius: 3px; background: #6cc7ff; animation: helix-marquee 1.1s ease-in-out infinite; }
397
+ #loading.determinate #bar { animation: none; transition: width 0.25s ease; }
398
+ #loading.working #bar { animation: helix-pulse 1s ease-in-out infinite; }
399
+ #loading.error #bar { animation: none; width: 100% !important; background: #e5675e; }
400
+ #loading-text { margin-top: 12px; color: #9aa7b4; }
401
+ @keyframes helix-marquee { 0% { transform: translateX(-110%); } 100% { transform: translateX(370%); } }
402
+ @keyframes helix-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }
403
+ </style>
30
404
  </head>
31
405
  <body>
32
- <script type="module" src="main.js"></script>
406
+ <script>
407
+ // The host owns the overlay only when it explicitly asks and this is an iframe.
408
+ if (window.parent !== window && new URLSearchParams(location.search).get('helixHostedLoading') === '1') {
409
+ document.documentElement.setAttribute('data-helix-hosted-loading', '');
410
+ }
411
+ </script>
412
+ <div id="loading">
413
+ <div class="card">
414
+ <div class="eyebrow">HELIX Instant</div>
415
+ <div class="title">${escaped}</div>
416
+ <div class="bar"><div id="bar"></div></div>
417
+ <div id="loading-text">Starting…</div>
418
+ </div>
419
+ </div>
420
+ <div id="hud">Loading…</div>
421
+ <div id="controls-hint" aria-live="polite"></div>
422
+ <script type="module" src="/src/main.ts"></script>
33
423
  </body>
34
424
  </html>
35
- `,
36
- 'main.js': () => `import * as THREE from 'three';
425
+ `;
426
+ }
427
+ const LOADING_TS = `// Standalone owns the HTML overlay; the hosted shell owns it with ?helixHostedLoading=1.
428
+ // Readiness means the first rendered frame, not the SDK handshake or an asset manager batch.
429
+ import * as THREE from 'three';
430
+
431
+ export type LoadingScreen = {
432
+ /** Register an extra async unit of work so it counts on the bar. Returns its completion callback. */
433
+ task: (label?: string) => () => void;
434
+ done: () => void;
435
+ error: (message: string) => void;
436
+ };
437
+
438
+ export function createLoadingScreen(): LoadingScreen {
439
+ const root = document.getElementById('loading');
440
+ const bar = document.getElementById('bar');
441
+ const text = document.getElementById('loading-text');
442
+ const hosted = window.parent !== window && new URLSearchParams(location.search).get('helixHostedLoading') === '1';
443
+ let parentOrigin = '*';
444
+ try {
445
+ const origin = new URL(document.referrer).origin;
446
+ if (origin !== 'null') parentOrigin = origin;
447
+ } catch { /* An opaque or absent referrer has no target origin; the shell validates our frame. */ }
448
+ let extraTotal = 0;
449
+ let extraDone = 0;
450
+ let assetsTotal = 0;
451
+ let assetsDone = 0;
452
+ let fraction = 0;
453
+ const progress = () => {
454
+ const total = assetsTotal + extraTotal;
455
+ if (total > 0) fraction = Math.max(fraction, Math.min(1, (assetsDone + extraDone) / total));
456
+ return { loaded: fraction * total, total };
457
+ };
458
+ let state: 'loading' | 'ready' | 'error' = 'loading';
459
+ let label = 'Starting…';
460
+ const manager = THREE.DefaultLoadingManager;
461
+ const previousProgress = manager.onProgress;
462
+
463
+ const report = (error?: string) => {
464
+ if (!hosted) return;
465
+ const { total } = progress();
466
+ window.parent.postMessage({
467
+ type: 'helix:loading', state, label: label.slice(0, 160),
468
+ ...(total > 0 ? { loaded: fraction, total: 1 } : {}),
469
+ ...(error !== undefined ? { error: error.slice(0, 2000) } : {}),
470
+ }, parentOrigin);
471
+ };
472
+ const render = () => {
473
+ if (state !== 'loading') return;
474
+ const { total } = progress();
475
+ if (text) text.textContent = label;
476
+ if (root && bar && total > 0) {
477
+ root.classList.add('determinate');
478
+ bar.style.width = \`\${Math.min(100, Math.round(fraction * 100))}%\`;
479
+ }
480
+ report();
481
+ };
482
+ const fail = (message: string) => {
483
+ if (state !== 'loading') return;
484
+ const details = message || 'World startup failed';
485
+ state = 'error';
486
+ label = details;
487
+ root?.classList.add('error');
488
+ if (text) text.textContent = details;
489
+ report(details);
490
+ };
491
+ const onProgress: NonNullable<typeof manager.onProgress> = (url, loaded, total) => {
492
+ assetsDone = loaded;
493
+ assetsTotal = total;
494
+ label = 'Loading assets…';
495
+ render();
496
+ previousProgress?.call(manager, url, loaded, total);
497
+ };
498
+ manager.onProgress = onProgress;
499
+ // Claim the loading lifecycle synchronously, before Helix.init() sends its handshake.
500
+ report();
501
+
502
+ return {
503
+ task(taskLabel) {
504
+ if (state !== 'loading') return () => {};
505
+ extraTotal += 1;
506
+ if (taskLabel) label = taskLabel;
507
+ render();
508
+ let settled = false;
509
+ return () => {
510
+ if (settled || state !== 'loading') return;
511
+ settled = true;
512
+ extraDone += 1;
513
+ render();
514
+ };
515
+ },
516
+ done() {
517
+ if (state !== 'loading') return;
518
+ state = 'ready';
519
+ label = 'Ready';
520
+ if (text) text.textContent = label;
521
+ if (manager.onProgress === onProgress) manager.onProgress = previousProgress;
522
+ if (hosted) root?.remove();
523
+ else {
524
+ root?.classList.remove('working');
525
+ root?.classList.add('done');
526
+ setTimeout(() => root?.remove(), 500);
527
+ }
528
+ report();
529
+ },
530
+ error: fail,
531
+ };
532
+ }
533
+
534
+ // New facades expose honest initial equipped presentation readiness; older pinned facades
535
+ // have already assembled their compatible body by create(). Never wait on swap events.
536
+ export async function waitForInitialAvatar(character: unknown, loading: LoadingScreen, deadlineMs = 45_000): Promise<void> {
537
+ const facade = character as { initialAvatarReady?: PromiseLike<{ status: string }> };
538
+ if (!facade.initialAvatarReady || typeof facade.initialAvatarReady.then !== 'function') {
539
+ const finish = loading.task('Using compatible avatar…');
540
+ console.info('[HELIX] This character module uses its assembled compatible avatar; equipped-avatar readiness is unavailable.');
541
+ finish();
542
+ return;
543
+ }
544
+ const finish = loading.task('Loading your avatar…');
545
+ let timeout: ReturnType<typeof setTimeout> | undefined;
546
+ try {
547
+ const result = await Promise.race([
548
+ facade.initialAvatarReady,
549
+ new Promise<never>((_, reject) => {
550
+ timeout = setTimeout(() => reject(new Error('Your avatar did not finish loading. Try again.')), deadlineMs);
551
+ }),
552
+ ]);
553
+ if (!result || typeof result !== 'object') throw new Error('Your avatar reported an invalid readiness state. Try again.');
554
+ if (result.status === 'failed' || result.status === 'disposed') throw new Error('Your avatar could not be prepared. Try again.');
555
+ if (result.status !== 'ready' && result.status !== 'fallback') throw new Error('Your avatar reported an invalid readiness state. Try again.');
556
+ if (result.status === 'fallback') {
557
+ loading.task('Using compatible avatar…')();
558
+ console.info('[HELIX] The character module recovered a usable fallback avatar.');
559
+ }
560
+ finish();
561
+ } finally {
562
+ if (timeout !== undefined) clearTimeout(timeout);
563
+ }
564
+ }
565
+ `;
566
+ // The one line this scaffold is most careful about:
567
+ //
568
+ // new URL('helix_modules/', document.baseURI).href
569
+ //
570
+ // NOT '/helix_modules'. A published world is served from …/instant-worlds/<id>/<build>/, so a
571
+ // root-absolute path 404s and loadInstalledAbilities THROWS — the world renders nothing but an error
572
+ // bar. Every local gate passes anyway, because they all serve dist/ from a root. `helix
573
+ // verify-subpath` (which `helix publish` runs) is the check that catches it.
574
+ function mainTs(kind, title) {
575
+ const multiplayer = kind === 'multiplayer';
576
+ return `import * as THREE from 'three';
577
+ import { Helix } from '@hypersoniclabs/helix-sdk';
578
+ import {
579
+ CharacterMultiplayer,
580
+ InputService,
581
+ RapierBody,
582
+ createMobileControls,
583
+ loadInstalledAbilities,
584
+ } from '@helix/humanoid-character';
585
+ import { world } from '@helix/engine-core/inspect';
586
+ import { screenshots } from '@helix/engine-core/screenshot';
587
+ import { SYSTEM_ASSET_BASE, TRANSCODER_PATH } from './helix.runtime';
588
+ import { createLoadingScreen, waitForInitialAvatar } from './loading';
589
+
590
+ // ${title} — a HELIX Instant ${multiplayer ? 'multiplayer' : 'character'} world.
591
+ //
592
+ // Flow: RapierBody.create builds the world physics → CharacterMultiplayer.create assembles the platform
593
+ // character, universal avatar, camera and emote wheel → loadInstalledAbilities loads whatever
594
+ // \`helix install\` resolved (fly, swim, …). join:false keeps a character world solo without removing
595
+ // its platform-owned avatar/emote/input features.
596
+ //
597
+ // Test with \`npm run build\` + \`npm run preview\`, NOT the dev server: dev rewrites bare imports and
598
+ // hides whether the import map is correct.
599
+
600
+ const SPAWN = { x: 0, y: 0.2, z: 0 };
601
+
602
+ // The world's cover shot. A placeholder pose framing the spawn area — ADJUST position/lookAt/fov to
603
+ // frame whatever you actually build, then rebuild so the shot is stable for everyone. Registering is
604
+ // a no-op during normal play; it only activates under ?helixScreenshot=1, which \`helix screenshot\`
605
+ // and capture_world_screenshot pass. Add \`warmupMs\` if your scene needs physics to settle first.
606
+ screenshots.register('hero', { position: [12, 8, -20], lookAt: [0, 2, 0], fov: 55 });
607
+
608
+ const hud = document.getElementById('hud')!;
609
+ const controlsHint = document.getElementById('controls-hint')!;
610
+ const loading = createLoadingScreen();
37
611
 
38
612
  const scene = new THREE.Scene();
39
- const camera = new THREE.PerspectiveCamera(70, innerWidth / innerHeight, 0.1, 100);
40
- camera.position.z = 3;
613
+ scene.background = new THREE.Color(0x14161a);
614
+ const camera = new THREE.PerspectiveCamera(60, innerWidth / innerHeight, 0.05, 200);
615
+
616
+ /**
617
+ * Procedural sky/ground gradient used as the scene ENVIRONMENT (HYPR-5290).
618
+ * PBR materials need an environment to reflect: without one, metals and glossy
619
+ * surfaces render flat black no matter how many lights the scene has. A tiny
620
+ * equirect gradient gives them real ambient reflections with zero assets and no
621
+ * three/examples import (which would bundle a second copy of three next to the
622
+ * platform-hosted one). Keep an environment set; retint per the world's mood.
623
+ */
624
+ function createGradientEnvironment(sky: THREE.Color, horizon: THREE.Color, ground: THREE.Color): THREE.DataTexture {
625
+ // 64x32 (2:1 equirect). Keep real dimensions: a few-pixel-wide texture renders
626
+ // BLACK — the renderer's cube-UV conversion cannot sample it (measured).
627
+ const width = 64, height = 32;
628
+ const data = new Uint8Array(width * height * 4);
629
+ const c = new THREE.Color();
630
+ for (let y = 0; y < height; y++) {
631
+ // Row 0 is the BOTTOM of an equirect map (ground), row height-1 the zenith.
632
+ const t = y / (height - 1);
633
+ if (t < 0.5) c.lerpColors(ground, horizon, t * 2);
634
+ else c.lerpColors(horizon, sky, (t - 0.5) * 2);
635
+ for (let x = 0; x < width; x++) {
636
+ const i = (y * width + x) * 4;
637
+ data[i] = Math.round(c.r * 255);
638
+ data[i + 1] = Math.round(c.g * 255);
639
+ data[i + 2] = Math.round(c.b * 255);
640
+ data[i + 3] = 255;
641
+ }
642
+ }
643
+ const texture = new THREE.DataTexture(data, width, height);
644
+ texture.mapping = THREE.EquirectangularReflectionMapping;
645
+ texture.colorSpace = THREE.SRGBColorSpace;
646
+ texture.magFilter = THREE.LinearFilter;
647
+ texture.minFilter = THREE.LinearFilter;
648
+ texture.needsUpdate = true;
649
+ return texture;
650
+ }
651
+ // Matches the hemisphere light below so ambience and reflections agree.
652
+ scene.environment = createGradientEnvironment(
653
+ new THREE.Color(0x9ecbff),
654
+ new THREE.Color(0xe8ddc8),
655
+ new THREE.Color(0x40382a),
656
+ );
41
657
 
42
658
  const renderer = new THREE.WebGLRenderer({ antialias: true });
43
659
  renderer.setSize(innerWidth, innerHeight);
660
+ renderer.setPixelRatio(Math.min(devicePixelRatio, 2));
661
+ renderer.outputColorSpace = THREE.SRGBColorSpace;
662
+ renderer.toneMapping = THREE.ACESFilmicToneMapping;
663
+ renderer.shadowMap.enabled = true;
664
+ renderer.shadowMap.type = THREE.PCFSoftShadowMap;
44
665
  document.body.appendChild(renderer.domElement);
45
666
 
46
- const cube = new THREE.Mesh(
47
- new THREE.BoxGeometry(),
48
- new THREE.MeshStandardMaterial({ color: 0x7c4dff }),
49
- );
50
- scene.add(cube);
51
- scene.add(new THREE.AmbientLight(0xffffff, 0.4));
52
- const light = new THREE.DirectionalLight(0xffffff, 1.2);
53
- light.position.set(2, 3, 4);
54
- scene.add(light);
667
+ scene.add(new THREE.HemisphereLight(0xbfd4ff, 0x40382a, 0.9));
668
+ const sun = new THREE.DirectionalLight(0xffffff, 2.2);
669
+ sun.position.set(6, 12, 4);
670
+ sun.castShadow = true;
671
+ sun.shadow.mapSize.set(1024, 1024);
672
+ sun.shadow.normalBias = 0.02;
673
+ scene.add(sun);
55
674
 
56
675
  addEventListener('resize', () => {
57
676
  camera.aspect = innerWidth / innerHeight;
@@ -59,29 +678,478 @@ addEventListener('resize', () => {
59
678
  renderer.setSize(innerWidth, innerHeight);
60
679
  });
61
680
 
62
- renderer.setAnimationLoop(() => {
63
- cube.rotation.x += 0.01;
64
- cube.rotation.y += 0.013;
65
- renderer.render(scene, camera);
681
+ async function main(): Promise<void> {
682
+ const finishStartup = loading.task('Preparing world…');
683
+ // RapierBody.create is a static async factory — the constructor is private.
684
+ const body = await RapierBody.create({ position: SPAWN });
685
+ body.addStaticCuboid({ x: 24, y: 0.5, z: 24 }, { x: 0, y: -0.5, z: 0 }); // floor, top at y=0
686
+
687
+ const floor = new THREE.Mesh(
688
+ new THREE.BoxGeometry(48, 1, 48),
689
+ new THREE.MeshStandardMaterial({ color: 0x2a3138, roughness: 0.95 }),
690
+ );
691
+ floor.position.y = -0.5;
692
+ floor.receiveShadow = true;
693
+ scene.add(floor);
694
+ scene.add(new THREE.GridHelper(48, 48, 0x39424e, 0x232830));
695
+
696
+ // ONE world-owned InputService, injected into the character. Register every game key on this
697
+ // router — never a raw addEventListener — so bindings stay device-correct (keyboard/pad/touch),
698
+ // rebindable, and inert while a menu context is pushed. Never bind the platform-reserved keys
699
+ // (Escape = the tablet, KeyB = voice push-to-talk, backtick = the debug overlay).
700
+ const input = new InputService();
701
+ // An injected InputService is world-owned, so the world also owns its desktop DOM wiring.
702
+ // This preserves keyboard, mouse drag/pointer-lock, wheel, and gamepad alongside touch.
703
+ input.attach(window as never);
704
+ input.attachPointer(renderer.domElement as never, document as never, { dragLook: true });
705
+
706
+ // Tunables live in the system's published CONFIG, not the TS class API — read them via
707
+ // get_package_manifest("humanoid-character") or the character-world recipe. Never guess keys.
708
+ const character = await CharacterMultiplayer.create({
709
+ helix: Helix,
710
+ renderer,
711
+ scene,
712
+ camera,
713
+ body,
714
+ input,
715
+ domElement: renderer.domElement,
716
+ assetBase: SYSTEM_ASSET_BASE,
717
+ transcoderPath: TRANSCODER_PATH,
718
+ spawn: SPAWN,
719
+ // Platform features stay individually overridable: pass emotes:false, emoteWheel:false,
720
+ // universalAvatars:false or localControl:false when the world needs it. Keep helix.json systems as ranges
721
+ // (^0.3): never pin an exact engine version to get a fix — promote the fix instead.
722
+ join: ${multiplayer ? 'true' : 'false'},
723
+ character: {
724
+ character: {
725
+ spawn: SPAWN,
726
+ camera: { mode: 'third-person', lookSensitivity: 1.2 },
727
+ },
728
+ locomotion: { runSpeed: 5.5 },
729
+ },
730
+ });
731
+
732
+ // Keep rendering while the initial equipped avatar settles, and reveal only a frame
733
+ // rendered after readiness. The public Promise includes native fallback recovery.
734
+ let avatarBootReady = false;
735
+ void waitForInitialAvatar(character, loading).then(() => { avatarBootReady = true; }).catch((error: unknown) => {
736
+ loading.error(error instanceof Error ? error.message : String(error));
737
+ });
738
+
739
+ // CharacterMultiplayer registers the platform actions (including \`emote\`) on the injected
740
+ // InputService. Format binding-aware onboarding only after those actions exist.
741
+ const desktopHint = (captured: boolean): string => {
742
+ const cameraHint = captured
743
+ ? 'Move mouse to look · Scroll to zoom'
744
+ : 'Click world to control camera';
745
+ return input.hasAction('emote')
746
+ ? input.format(\`\${cameraHint} · Hold {emote} for emote wheel\`)
747
+ : cameraHint;
748
+ };
749
+ controlsHint.textContent = desktopHint(false);
750
+ renderer.domElement.addEventListener('click', () => {
751
+ controlsHint.textContent = desktopHint(true);
752
+ setTimeout(() => controlsHint.classList.add('hidden'), 4500);
753
+ }, { once: true });
754
+
755
+ // Everything \`helix install\` resolved. Resolve the modules base against document.baseURI so it
756
+ // works at the origin root (local preview) AND at the nested path a published world is served
757
+ // from — a root-absolute '/helix_modules' 404s in production and throws.
758
+ const modulesBase = new URL('helix_modules/', document.baseURI).href;
759
+ const installed = await loadInstalledAbilities(modulesBase, character.local);
760
+ if (installed.length) {
761
+ console.info(\`abilities installed: \${installed.map((a) => a.manifest.id).join(', ')}\`);
762
+ }
763
+
764
+ // Default mobile controls are a platform system, not per-world UI. They render from the actions
765
+ // registered above (including installed abilities), drive this SAME InputService, and remain
766
+ // fully replaceable/configurable. Use actions: [{ id, label, order, placement, visible }] for
767
+ // safe text/layout overrides; register a custom action with touch: 'button' or 'hold' to add it.
768
+ const mobileControls = createMobileControls(input, {
769
+ surface: renderer.domElement,
770
+ // The host can reserve space above the world without reaching across the iframe boundary.
771
+ platformTopOffset: 0,
772
+ });
773
+
774
+ // Player-facing control text NEVER hardcodes key names — format() expands {action} tokens to the
775
+ // CURRENT binding for the active device, so it stays correct across pad/keyboard and rebinds.
776
+ const clock = new THREE.Clock();
777
+ let firstFrame = true;
778
+ renderer.setAnimationLoop(() => {
779
+ const dt = Math.min(clock.getDelta(), 0.1);
780
+ mobileControls.update(); // before character.update(): delivers this frame's pinch/context state
781
+ character.update(dt);
782
+ if (body.position.y < -10) character.local.respawn(); // fell off the world
783
+ renderer.render(scene, camera);
784
+ if (firstFrame && avatarBootReady) {
785
+ firstFrame = false;
786
+ finishStartup();
787
+ loading.done();
788
+ }
789
+ hud.textContent = mobileControls.active
790
+ ? 'Drag to look · Pinch to zoom'
791
+ : input.format(\`{move} move · {jump} jump · {sprint} sprint · Click + move mouse to look · Scroll zoom\${input.hasAction('emote') ? ' · Hold {emote} for emote wheel' : ''}\`);
792
+ if (mobileControls.active) controlsHint.classList.add('hidden');
793
+ });
794
+
795
+ // Measurement hook for \`helix world inspect\` / inspect_world. A cheap no-op during normal play —
796
+ // it only activates under ?helixInspect=1. Call it at the END of boot, once the scene is built.
797
+ world.ready({ scene, body, spawn: SPAWN });
798
+
799
+ // The other half of the screenshot integration — the pin alone is NOT enough, so this ships wired.
800
+ // Both halves are required: \`helix screenshot\` / capture_world_screenshot wait on
801
+ // window.__helixScreenshots.ready and time out after 60s without this call. It must run at the END
802
+ // of boot, once the scene is built — a capture drives THIS renderer/scene/camera, applying the
803
+ // registered pose for one frame and restoring it after; no separate camera is created.
804
+ //
805
+ // \`hide\` blanks the local body for the whole screenshot session: headless captures run logged out,
806
+ // so the player renders as the bare default mannequin — rarely what you want in a cover shot. Drop
807
+ // it if you deliberately want the character in frame. Until you build something, that leaves the
808
+ // hero shot as bare floor + grid: the capture is working, the scene is just still empty.
809
+ screenshots.ready({ renderer, scene, camera, hide: [character.local.model] });
810
+ }
811
+
812
+ main().catch((err: unknown) => {
813
+ const message = err instanceof Error ? err.message : String(err);
814
+ console.error(err);
815
+ loading.error(message);
816
+ hud.textContent = \`ERROR: \${message}\\nDid you run \\\`helix install\\\`?\`;
817
+ });
818
+ `;
819
+ }
820
+ // The scene kind's boot. It diverges from mainTs() in one load-bearing way — the environment is a
821
+ // sealed Scene v2 document, so it is READ BEFORE the renderer exists (the header below says why).
822
+ function sceneMainTs(title) {
823
+ return `import * as THREE from 'three';
824
+ import { Helix } from '@hypersoniclabs/helix-sdk';
825
+ import {
826
+ CharacterMultiplayer,
827
+ InputService,
828
+ RapierBody,
829
+ createMobileControls,
830
+ loadInstalledAbilities,
831
+ } from '@helix/humanoid-character';
832
+ import { createVisualRuntime, type VisualRuntime } from '@helix/visual';
833
+ import {
834
+ createHttpSceneApi,
835
+ createSceneLoaders,
836
+ createSceneWorld,
837
+ loadSceneDocument,
838
+ type EnvironmentPin,
839
+ } from '@helix/scene';
840
+ import { attachSceneVisuals, sceneVisualsConfig } from '@helix/scene/visual';
841
+ import { world } from '@helix/engine-core/inspect';
842
+ import { screenshots } from '@helix/engine-core/screenshot';
843
+ import { SYSTEM_ASSET_BASE, TRANSCODER_PATH } from './helix.runtime';
844
+ import { createLoadingScreen, waitForInitialAvatar } from './loading';
845
+
846
+ // ${title} — a HELIX Instant SCENE world. Its ENVIRONMENT is a published HELIX Scene v2 document
847
+ // streamed by @helix/scene and lit by @helix/visual's runtime: geometry, materials, authored lights,
848
+ // spawn and collision all come from the scene. No floor, no props, no hand-placed lights live here.
849
+ //
850
+ // BOOT ORDER IS AN INVARIANT. The document is read FIRST because the scene's own lighting shapes the
851
+ // runtime's config: \`sceneVisualsConfig\` folds its authored sun, probe box and exposure band into
852
+ // helix.visuals.json before \`createVisualRuntime\` parses it. The runtime comes next: it OWNS the
853
+ // renderer (the scene loaders need it for KTX2 detection) and bakes its first probe field over a
854
+ // still-empty room; the scene's geometry reaches that field a debounce later, through the contributor
855
+ // lane \`attachSceneVisuals\` opens. \`loaded\` is handed back to \`createSceneWorld\` so the document
856
+ // is fetched and verified once, not twice.
857
+ //
858
+ // Test with \`npm run build\` + \`npm run preview\`, NOT the dev server: dev rewrites bare imports and
859
+ // hides whether the import map is correct.
860
+
861
+ // Where the body starts until the scene's own spawn is known; the character is created with the real one.
862
+ const PLACEHOLDER_SPAWN = { x: 0, y: 1, z: 0 };
863
+
864
+ // \`?quality=low\` overrides the tier the runtime would pick itself; anything unrecognized means \`auto\`.
865
+ const QUALITY_LEVELS = ['minimal', 'low', 'medium', 'high', 'ultra', 'auto'] as const;
866
+ const QUALITY_PARAM = new URLSearchParams(location.search).get('quality');
867
+ const QUALITY = QUALITY_LEVELS.find((level) => level === QUALITY_PARAM) ?? 'auto';
868
+
869
+ // The backend the scene resolves its pin and its Vault surfaces through. Inside HELIX the shell
870
+ // announces it on \`helix:init\`, which is why Helix.init() runs before the document is fetched;
871
+ // \`?api=\` is the standalone-dev override (the local dev-stack serves it on :5000).
872
+ function apiBaseUrl(): string {
873
+ const override = new URLSearchParams(location.search).get('api');
874
+ return override ?? Helix.multiplayer.resolveApiBase(null) ?? 'http://localhost:5000';
875
+ }
876
+
877
+ // How this world is LIT lives in public/helix.visuals.json — the per-world visual contract \`helix
878
+ // validate\` audits and \`helix bake-lighting\` patches. Fetched raw; the runtime's parser owns validation.
879
+ async function loadVisualsConfig(): Promise<unknown> {
880
+ const response = await fetch(new URL('helix.visuals.json', document.baseURI));
881
+ if (!response.ok) throw new Error(\`helix.visuals.json failed to load — HTTP \${response.status}\`);
882
+ return response.json();
883
+ }
884
+
885
+ // One folder per document under public/scene/ — \`?scene=<folder>\` picks between them. DEV ONLY: a
886
+ // published world names the same identity in helix.json and the runtime resolves it content-addressed.
887
+ async function loadScenePin(): Promise<{ name: string; pin: EnvironmentPin }> {
888
+ const name = new URLSearchParams(location.search).get('scene') ?? '${SCENE_FOLDER}';
889
+ const response = await fetch(new URL(\`scene/\${name}/pin.json\`, document.baseURI));
890
+ if (!response.ok) throw new Error(\`scene/\${name}/pin.json failed to load — HTTP \${response.status}\`);
891
+ const pin = (await response.json()) as EnvironmentPin;
892
+ // A document's OWN url is the bundle base every \`bundle\` resource resolves against, so the
893
+ // per-folder layout is what keeps each document's web/*.glb beside it — never a shared scene/ root.
894
+ if (pin.kind === 'scene-v2') pin.documentUrl = new URL(\`scene/\${name}/scene.helix-scene.json\`, document.baseURI).href;
895
+ return { name, pin };
896
+ }
897
+
898
+ const hud = document.getElementById('hud')!;
899
+ const controlsHint = document.getElementById('controls-hint')!;
900
+ const loading = createLoadingScreen();
901
+
902
+ const scene = new THREE.Scene();
903
+ const camera = new THREE.PerspectiveCamera(60, innerWidth / innerHeight, 0.05, 200);
904
+
905
+ // The runtime owns the renderer (and the sky, the sun, the shadow rig and the post stack) — the world
906
+ // only supplies the canvas it draws into.
907
+ const canvas = document.createElement('canvas');
908
+ canvas.style.cssText = 'position:fixed;inset:0;display:block;width:100%;height:100%';
909
+ document.body.appendChild(canvas);
910
+
911
+ let visuals: VisualRuntime | null = null;
912
+
913
+ addEventListener('resize', () => {
914
+ camera.aspect = innerWidth / innerHeight;
915
+ camera.updateProjectionMatrix();
916
+ visuals?.setSize({ width: innerWidth, height: innerHeight });
66
917
  });
67
- `,
68
- };
69
- function initTemplate(targetDir) {
70
- if ((0, node_fs_1.existsSync)(targetDir))
71
- throw new Error(`directory already exists: ${targetDir}`);
72
- const slug = (0, node_path_1.basename)(targetDir)
73
- .toLowerCase()
74
- .replace(/[^a-z0-9-]+/g, '-')
75
- .replace(/^-+|-+$/g, '')
76
- .slice(0, 50)
77
- .padEnd(3, '0');
918
+
919
+ async function main(): Promise<void> {
920
+ const finishStartup = loading.task('Preparing world…');
921
+ // Before the document: the shell's \`helix:init\` is where the platform API base comes from.
922
+ await Helix.init();
923
+
924
+ // The physics body exists before the scene so the scene's colliders register through it (the one
925
+ // sanctioned static path: RapierBody mirrors statics into the shared and ragdoll worlds).
926
+ const body = await RapierBody.create({ position: PLACEHOLDER_SPAWN });
927
+
928
+ const api = createHttpSceneApi({ apiBaseUrl: apiBaseUrl() });
929
+ const { name, pin } = await loadScenePin();
930
+ const loaded = await loadSceneDocument({ api, pin });
931
+ const config = await sceneVisualsConfig(loaded, await loadVisualsConfig(), { api });
932
+
933
+ visuals = await createVisualRuntime({
934
+ canvas,
935
+ scene,
936
+ camera,
937
+ config,
938
+ quality: QUALITY,
939
+ size: { width: innerWidth, height: innerHeight },
940
+ });
941
+ const renderer = visuals.renderer;
942
+
943
+ const sceneWorld = await createSceneWorld({
944
+ renderer,
945
+ scene,
946
+ camera,
947
+ api,
948
+ loaders: createSceneLoaders(renderer, { transcoderPath: TRANSCODER_PATH }),
949
+ pin,
950
+ loaded,
951
+ colliders: body,
952
+ // The runtime's sun and probe field ARE the light here: realizing the document's own directional
953
+ // sun and its legacy ambient/hemisphere fills on top would double every lit surface.
954
+ lighting: { realizeAuthoredSun: false, realizeLegacyFills: false },
955
+ viewportHeightPx: () => innerHeight,
956
+ onError: (error) => console.warn('[scene]', error),
957
+ });
958
+ // The scene root becomes one GI contributor and every activated node is adopted (materials, shadow
959
+ // policy); the probe field picks the streamed geometry up one debounce later.
960
+ const sceneVisuals = attachSceneVisuals(sceneWorld, visuals);
961
+
962
+ const spawn = sceneWorld.spawn?.position ?? PLACEHOLDER_SPAWN;
963
+ body.teleport(spawn);
964
+ console.info(\`[scene] \${name} · \${sceneWorld.loaded.scene.id}@\${sceneWorld.loaded.scene.revision}\`
965
+ + \` · spawn \${spawn.x.toFixed(1)},\${spawn.y.toFixed(1)},\${spawn.z.toFixed(1)}\`
966
+ + \` · colliders \${sceneWorld.colliders()} · adopted \${sceneVisuals.stats().adopted}\`);
967
+
968
+ // ONE world-owned InputService, injected into the character. Register every game key on this
969
+ // router — never a raw addEventListener — so bindings stay device-correct (keyboard/pad/touch),
970
+ // rebindable, and inert while a menu context is pushed. Never bind the platform-reserved keys
971
+ // (Escape = the tablet, KeyB = voice push-to-talk, backtick = the debug overlay).
972
+ const input = new InputService();
973
+ input.attach(window as never);
974
+ input.attachPointer(renderer.domElement as never, document as never, { dragLook: true });
975
+
976
+ // Tunables live in the system's published CONFIG, not the TS class API — read them via
977
+ // get_package_manifest("humanoid-character") or the character-world recipe. Never guess keys.
978
+ const character = await CharacterMultiplayer.create({
979
+ helix: Helix,
980
+ renderer,
981
+ scene,
982
+ camera,
983
+ body,
984
+ input,
985
+ domElement: renderer.domElement,
986
+ assetBase: SYSTEM_ASSET_BASE,
987
+ transcoderPath: TRANSCODER_PATH,
988
+ spawn,
989
+ join: true,
990
+ character: {
991
+ character: { spawn, camera: { mode: 'third-person', lookSensitivity: 1.2 } },
992
+ locomotion: { runSpeed: 5.5 },
993
+ },
994
+ });
995
+
996
+ // Keep rendering while the initial equipped avatar settles, and reveal only a frame
997
+ // rendered after readiness. The public Promise includes native fallback recovery.
998
+ let avatarBootReady = false;
999
+ void waitForInitialAvatar(character, loading).then(() => { avatarBootReady = true; }).catch((error: unknown) => {
1000
+ loading.error(error instanceof Error ? error.message : String(error));
1001
+ });
1002
+
1003
+ const desktopHint = (captured: boolean): string => {
1004
+ const cameraHint = captured
1005
+ ? 'Move mouse to look · Scroll to zoom'
1006
+ : 'Click world to control camera';
1007
+ return input.hasAction('emote')
1008
+ ? input.format(\`\${cameraHint} · Hold {emote} for emote wheel\`)
1009
+ : cameraHint;
1010
+ };
1011
+ controlsHint.textContent = desktopHint(false);
1012
+ renderer.domElement.addEventListener('click', () => {
1013
+ controlsHint.textContent = desktopHint(true);
1014
+ setTimeout(() => controlsHint.classList.add('hidden'), 4500);
1015
+ }, { once: true });
1016
+
1017
+ // Everything \`helix install\` resolved. Resolve the modules base against document.baseURI so it
1018
+ // works at the origin root (local preview) AND at the nested path a published world is served
1019
+ // from — a root-absolute '/helix_modules' 404s in production and throws.
1020
+ const modulesBase = new URL('helix_modules/', document.baseURI).href;
1021
+ const installed = await loadInstalledAbilities(modulesBase, character.local);
1022
+ if (installed.length) {
1023
+ console.info(\`abilities installed: \${installed.map((a) => a.manifest.id).join(', ')}\`);
1024
+ }
1025
+
1026
+ // Default mobile controls are a platform system, not per-world UI. They render from the actions
1027
+ // registered above (including installed abilities), drive this SAME InputService, and remain
1028
+ // fully replaceable/configurable.
1029
+ const mobileControls = createMobileControls(input, { surface: renderer.domElement, platformTopOffset: 0 });
1030
+
1031
+ // The camera only reached its real pose once the facade placed the player: re-aim everything that lags.
1032
+ visuals.catchUp();
1033
+
1034
+ const clock = new THREE.Clock();
1035
+ let firstFrame = true;
1036
+ renderer.setAnimationLoop(() => {
1037
+ const dt = Math.min(clock.getDelta(), 0.1);
1038
+ mobileControls.update(); // before character.update(): delivers this frame's pinch/context state
1039
+ sceneWorld.tick(dt); // residency on the scene's cadence; colliders follow the resident meshes
1040
+ character.update(dt);
1041
+ if (body.position.y < -10) character.local.respawn(); // fell out of the scene
1042
+ visuals?.tick(dt); // the clock, the sun, the cadences — and the frame's own render
1043
+ if (firstFrame && avatarBootReady) {
1044
+ firstFrame = false;
1045
+ finishStartup();
1046
+ loading.done();
1047
+ }
1048
+ hud.textContent = mobileControls.active
1049
+ ? 'Drag to look · Pinch to zoom'
1050
+ : input.format(\`{move} move · {jump} jump · {sprint} sprint · Click + move mouse to look · Scroll zoom\${input.hasAction('emote') ? ' · Hold {emote} for emote wheel' : ''}\`);
1051
+ if (mobileControls.active) controlsHint.classList.add('hidden');
1052
+ });
1053
+
1054
+ // Measurement hook for \`helix world inspect\` / inspect_world. A cheap no-op during normal play —
1055
+ // it only activates under ?helixInspect=1. Call it at the END of boot, once the scene is built.
1056
+ world.ready({ scene, body, spawn });
1057
+
1058
+ // The world's cover shot, framed off the scene's own spawn. Registering is a no-op during normal
1059
+ // play; it only activates under ?helixScreenshot=1, which \`helix screenshot\` and
1060
+ // capture_world_screenshot pass. The graded frame comes off the runtime's POST STACK, so the
1061
+ // capture must render through \`tick\` — a bare renderer.render would photograph the linear frame.
1062
+ screenshots.register('hero', {
1063
+ position: [spawn.x + 6, spawn.y + 4, spawn.z + 8],
1064
+ lookAt: [spawn.x, spawn.y + 1, spawn.z],
1065
+ fov: 55,
1066
+ });
1067
+ screenshots.ready({
1068
+ renderer: {
1069
+ render: () => visuals?.tick(0),
1070
+ domElement: renderer.domElement,
1071
+ setSize: (width, height) => visuals?.setSize({ width, height }),
1072
+ getPixelRatio: () => renderer.getPixelRatio(),
1073
+ setPixelRatio: (ratio) => renderer.setPixelRatio(ratio),
1074
+ },
1075
+ scene,
1076
+ camera,
1077
+ hide: [character.local.model],
1078
+ });
1079
+ }
1080
+
1081
+ main().catch((err: unknown) => {
1082
+ const message = err instanceof Error ? err.message : String(err);
1083
+ console.error(err);
1084
+ loading.error(message);
1085
+ hud.textContent = \`ERROR: \${message}\\nDid you run \\\`helix install\\\`?\`;
1086
+ });
1087
+ `;
1088
+ }
1089
+ function initTemplate(targetDir, options = {}) {
1090
+ const kind = options.kind ?? 'character';
1091
+ // Compiled offline, here, so the manifest pin and the bytes under public/scene/ are one object.
1092
+ return writeScaffold(targetDir, options, kind === 'scene' ? compileStarterScene() : null);
1093
+ }
1094
+ /**
1095
+ * `helix init --kind scene --terrain <preset>`: the same scaffold, over a generated 1 km x 1 km landform.
1096
+ * The mall keeps its authored footprint and is lifted onto the flat plateau the generator leaves at the spawn.
1097
+ */
1098
+ async function initTemplateWithTerrain(targetDir, options) {
1099
+ const { bakeTerrainSplats, generateTerrain, loadPreset, tileTerrain, writeTerrainSource } = await Promise.resolve().then(() => __importStar(require('./terrain')));
1100
+ const sceneDir = (0, node_path_1.join)(targetDir, 'public', 'scene', SCENE_FOLDER);
1101
+ const grid = generateTerrain({
1102
+ seed: STARTER_TERRAIN_SEED,
1103
+ tilesX: STARTER_TERRAIN_TILES,
1104
+ tilesZ: STARTER_TERRAIN_TILES,
1105
+ preset: options.terrain,
1106
+ });
1107
+ const baked = await bakeTerrainSplats(tileTerrain(grid), loadPreset(options.terrain), { grid });
1108
+ await writeTerrainSource((0, node_path_1.join)(sceneDir, TERRAIN_FOLDER), baked);
1109
+ const centre = ((grid.samplesZ - 1) / 2) * grid.samplesX + (grid.samplesX - 1) / 2;
1110
+ const groundY = Math.round(grid.heights[centre] * 100) / 100;
1111
+ const starter = compileStarterScene({ baseDir: sceneDir, terrain: { source: TERRAIN_FOLDER, groundY } });
1112
+ const result = writeScaffold(targetDir, { ...options, kind: 'scene' }, starter);
1113
+ result.created.push(`public/scene/${SCENE_FOLDER}/${TERRAIN_FOLDER}/`);
1114
+ return result;
1115
+ }
1116
+ function writeScaffold(targetDir, options, starter) {
1117
+ const kind = options.kind ?? 'character';
1118
+ const slug = slugify(options.slug ?? (0, node_path_1.basename)(targetDir));
1119
+ const title = options.title ?? 'My HELIX World';
1120
+ const maxPlayers = options.maxPlayers ?? 8;
1121
+ const files = {
1122
+ 'package.json': packageJson(slug),
1123
+ 'vite.config.ts': VITE_CONFIG,
1124
+ 'tsconfig.json': TSCONFIG,
1125
+ '.gitignore': GITIGNORE,
1126
+ 'index.html': indexHtml(title),
1127
+ 'public/helix.json': manifest({ title, slug, kind, maxPlayers }, starter?.pin),
1128
+ 'public/helix.controls.json': MOBILE_CONTROLS_CONTRACT,
1129
+ 'src/main.ts': kind === 'scene' ? sceneMainTs(title) : mainTs(kind, title),
1130
+ 'src/loading.ts': LOADING_TS,
1131
+ 'src/helix.runtime.ts': RUNTIME_STUB,
1132
+ ...(starter
1133
+ ? {
1134
+ 'public/helix.visuals.json': VISUALS_CONFIG,
1135
+ 'public/.helixignore': HELIXIGNORE,
1136
+ [`public/scene/${SCENE_FOLDER}/scene.helix-scene.json`]: starter.document,
1137
+ [`public/scene/${SCENE_FOLDER}/pin.json`]: `${JSON.stringify(starter.pin, null, 2)}\n`,
1138
+ }
1139
+ : {}),
1140
+ };
78
1141
  const created = [];
79
- for (const [path, render] of Object.entries(TEMPLATE_FILES)) {
1142
+ const skipped = [];
1143
+ for (const [path, contents] of Object.entries(files)) {
80
1144
  const absolute = (0, node_path_1.join)(targetDir, path);
1145
+ if ((0, node_fs_1.existsSync)(absolute) && !options.overwrite) {
1146
+ skipped.push(path);
1147
+ continue;
1148
+ }
81
1149
  (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(absolute), { recursive: true });
82
- (0, node_fs_1.writeFileSync)(absolute, render(slug), 'utf8');
1150
+ (0, node_fs_1.writeFileSync)(absolute, contents, 'utf8');
83
1151
  created.push(path);
84
1152
  }
85
- return created;
1153
+ return { created, skipped };
86
1154
  }
87
1155
  //# sourceMappingURL=init.js.map