@holoscript/core 7.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/README.md +2 -2
  2. package/bin/holoscript.cjs +3 -0
  3. package/dist/GLTFPipeline-276GE64O.js +16 -0
  4. package/dist/GLTFPipeline-M7WSSJED.cjs +37 -0
  5. package/dist/HoloScriptPlusParser-7FBIFUFC.js +693 -0
  6. package/dist/HoloScriptPlusParser-A2W7OCN2.cjs +698 -0
  7. package/dist/HoloScriptPlusParser-F2Z56FJR.js +10 -0
  8. package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +27 -0
  9. package/dist/HoloScriptRuntime-3URVTKPJ.js +10 -0
  10. package/dist/HoloScriptRuntime-SXEAEU2N.cjs +19 -0
  11. package/dist/USDZExporter-3FWJ25JI.cjs +1037 -0
  12. package/dist/USDZExporter-D2HQLQYK.js +1035 -0
  13. package/dist/agents/index.cjs +19 -0
  14. package/dist/agents/index.d.ts +100 -0
  15. package/dist/agents/index.js +17 -0
  16. package/dist/chunk-23J755AR.js +1046 -0
  17. package/dist/chunk-253GBQZY.cjs +627 -0
  18. package/dist/chunk-25IQCHTO.cjs +781 -0
  19. package/dist/chunk-2BSMSUCE.js +1941 -0
  20. package/dist/chunk-2M2DPHKB.js +762 -0
  21. package/dist/chunk-2YSNA2F2.cjs +1274 -0
  22. package/dist/chunk-3AO425MZ.cjs +886 -0
  23. package/dist/chunk-3FOKASKO.cjs +348 -0
  24. package/dist/chunk-3HYYMEXI.cjs +56578 -0
  25. package/dist/chunk-3NFFOWGG.js +4287 -0
  26. package/dist/chunk-3WZEJHUQ.cjs +116 -0
  27. package/dist/chunk-4C57PR42.js +468 -0
  28. package/dist/chunk-4N4SXXWF.js +769 -0
  29. package/dist/chunk-4PDEPEQW.cjs +41 -0
  30. package/dist/chunk-4R6SBXDB.js +45 -0
  31. package/dist/chunk-4V2E7U7Q.cjs +2015 -0
  32. package/dist/chunk-5FSKKMR7.cjs +2092 -0
  33. package/dist/chunk-5GLCTO44.js +161 -0
  34. package/dist/chunk-5JEU52DW.js +382 -0
  35. package/dist/chunk-5S7RKFGR.cjs +446 -0
  36. package/dist/chunk-5WUNN6ZN.cjs +428 -0
  37. package/dist/chunk-62FBK3B7.js +70 -0
  38. package/dist/chunk-6CTRH7HT.cjs +1985 -0
  39. package/dist/chunk-6DPSFNJB.cjs +847 -0
  40. package/dist/chunk-6EX3I5P4.cjs +130 -0
  41. package/dist/chunk-73FELZVJ.cjs +611 -0
  42. package/dist/chunk-7CUEMLDZ.cjs +6445 -0
  43. package/dist/chunk-7HIASF7S.cjs +814 -0
  44. package/dist/chunk-A6KINLZJ.js +236 -0
  45. package/dist/chunk-AIA52I7T.cjs +543 -0
  46. package/dist/chunk-ANXZFVY2.js +113 -0
  47. package/dist/chunk-AYBXB26F.js +2176 -0
  48. package/dist/chunk-B4TFTDG4.js +449 -0
  49. package/dist/chunk-BE4UJCQT.js +623 -0
  50. package/dist/chunk-BRQJKJGT.cjs +20 -0
  51. package/dist/chunk-C2A5DUMF.cjs +689 -0
  52. package/dist/chunk-C37BHB7N.cjs +636 -0
  53. package/dist/chunk-CBJY23VL.js +126 -0
  54. package/dist/chunk-CIWWXYHZ.cjs +50 -0
  55. package/dist/chunk-CXFDRBQU.cjs +672 -0
  56. package/dist/chunk-D54CNIAJ.cjs +413 -0
  57. package/dist/chunk-DAJXW4KX.js +725 -0
  58. package/dist/chunk-DTGBOSEM.cjs +319 -0
  59. package/dist/chunk-E7JP3BS3.cjs +61 -0
  60. package/dist/chunk-EKBKLK7P.js +1169 -0
  61. package/dist/chunk-EKYL4PE3.cjs +404 -0
  62. package/dist/chunk-EUDQTK7N.cjs +4310 -0
  63. package/dist/chunk-EXKSFGSX.cjs +274 -0
  64. package/dist/chunk-EXUP2BUM.cjs +1173 -0
  65. package/dist/chunk-F43YAA34.js +623 -0
  66. package/dist/chunk-FDSGHPAK.js +130 -0
  67. package/dist/chunk-FEWUHQNM.cjs +144 -0
  68. package/dist/chunk-FGGJQRLZ.js +270 -0
  69. package/dist/chunk-FHP6LXJS.js +415 -0
  70. package/dist/chunk-FJPADH77.cjs +666 -0
  71. package/dist/chunk-FYSPZT4V.cjs +169 -0
  72. package/dist/chunk-GIOYPNTH.js +5575 -0
  73. package/dist/chunk-GJNCFRJU.cjs +125 -0
  74. package/dist/chunk-GMP623FG.cjs +1508 -0
  75. package/dist/chunk-GQHQOPXZ.cjs +5580 -0
  76. package/dist/chunk-GQT4TYKY.cjs +4381 -0
  77. package/dist/chunk-GTU2Z2WW.cjs +262 -0
  78. package/dist/chunk-GYZE55MO.js +2007 -0
  79. package/dist/chunk-GZG4KA4E.js +529 -0
  80. package/dist/chunk-H652NHX5.js +600 -0
  81. package/dist/chunk-HCCQLAA4.cjs +74 -0
  82. package/dist/chunk-HINXWAOD.cjs +1049 -0
  83. package/dist/chunk-HYNTS5CP.js +422 -0
  84. package/dist/chunk-HZSPDCXV.cjs +457 -0
  85. package/dist/chunk-HZTDET3N.js +1399 -0
  86. package/dist/chunk-I6XZ5DZF.cjs +488 -0
  87. package/dist/chunk-ILRBGFVD.cjs +72 -0
  88. package/dist/chunk-IPWSXCCN.js +1183 -0
  89. package/dist/chunk-IUTY5WQ2.cjs +424 -0
  90. package/dist/chunk-IVSZDECV.js +882 -0
  91. package/dist/chunk-IVY74O6C.js +247 -0
  92. package/dist/chunk-IZM5VQZD.js +714 -0
  93. package/dist/chunk-J32ZJZJH.js +554 -0
  94. package/dist/chunk-J6M4FPK5.js +421 -0
  95. package/dist/chunk-JC5YBPSF.cjs +984 -0
  96. package/dist/chunk-JCLBKPMX.js +3813 -0
  97. package/dist/chunk-JD7CIZ33.js +1949 -0
  98. package/dist/chunk-JIYN45TV.cjs +2525 -0
  99. package/dist/chunk-JJBE3TIH.cjs +1189 -0
  100. package/dist/chunk-JX7YL6ZE.js +2252 -0
  101. package/dist/chunk-K4VVR7CN.cjs +2433 -0
  102. package/dist/chunk-KEFNV2WM.cjs +2257 -0
  103. package/dist/chunk-KH4CNH66.cjs +424 -0
  104. package/dist/chunk-KJLB4OPV.js +5731 -0
  105. package/dist/chunk-KKFZ3B6J.cjs +557 -0
  106. package/dist/chunk-KKP7JKN4.cjs +6002 -0
  107. package/dist/chunk-KPJL34Y7.cjs +186 -0
  108. package/dist/chunk-KQCN6AKJ.cjs +3042 -0
  109. package/dist/chunk-KVRSTFNH.cjs +72 -0
  110. package/dist/chunk-LICPB5HZ.cjs +1409 -0
  111. package/dist/chunk-LM2VU56C.cjs +37 -0
  112. package/dist/chunk-M56JSP4A.js +400 -0
  113. package/dist/chunk-MBOOR7X4.js +18 -0
  114. package/dist/chunk-MGE5Z4GS.js +608 -0
  115. package/dist/chunk-MXFUTKCO.js +56 -0
  116. package/dist/chunk-MYY4PMWX.cjs +264 -0
  117. package/dist/chunk-N75IH2HY.js +258 -0
  118. package/dist/chunk-NBMHU6SW.js +669 -0
  119. package/dist/chunk-NG77ATEW.cjs +778 -0
  120. package/dist/chunk-NGKREZ36.js +6384 -0
  121. package/dist/chunk-NHWSN2SD.cjs +718 -0
  122. package/dist/chunk-NV4VMVXU.js +421 -0
  123. package/dist/chunk-NW5G5FBQ.js +215 -0
  124. package/dist/chunk-NXZFOPVD.cjs +5737 -0
  125. package/dist/chunk-OBIYPYYS.cjs +1993 -0
  126. package/dist/chunk-OIQYIIO3.cjs +473 -0
  127. package/dist/chunk-OL46QLBJ.js +61 -0
  128. package/dist/chunk-OMXII44L.js +5386 -0
  129. package/dist/chunk-OR4Q2BGL.cjs +759 -0
  130. package/dist/chunk-OSYNRVOV.cjs +243 -0
  131. package/dist/chunk-PGANYCAG.cjs +220 -0
  132. package/dist/chunk-PHENW4MQ.js +65 -0
  133. package/dist/chunk-PHVRG4I2.js +844 -0
  134. package/dist/chunk-Q56TT7IL.js +483 -0
  135. package/dist/chunk-QPOQ7VPI.js +1491 -0
  136. package/dist/chunk-QPSKHBJP.js +5963 -0
  137. package/dist/chunk-QXH7QDSZ.js +1989 -0
  138. package/dist/chunk-R75BSDH7.cjs +50 -0
  139. package/dist/chunk-RARB3MBR.js +207 -0
  140. package/dist/chunk-RVBHAXFG.js +56160 -0
  141. package/dist/chunk-S3MDHNKB.cjs +490 -0
  142. package/dist/chunk-S4W6Z2MN.js +2426 -0
  143. package/dist/chunk-S6YWHCKV.cjs +410 -0
  144. package/dist/chunk-SIEXCILW.js +229 -0
  145. package/dist/chunk-SJBGLS25.cjs +2196 -0
  146. package/dist/chunk-SLU6UPJI.cjs +410 -0
  147. package/dist/chunk-SMIWS6DE.cjs +212 -0
  148. package/dist/chunk-T2QCTZMO.js +811 -0
  149. package/dist/chunk-T5J7ZKP3.cjs +4885 -0
  150. package/dist/chunk-TDCNJHWO.js +341 -0
  151. package/dist/chunk-TG7O4WBC.js +406 -0
  152. package/dist/chunk-THCK6ECW.js +2085 -0
  153. package/dist/chunk-TJHVSBP2.js +439 -0
  154. package/dist/chunk-TVHSPJ4N.cjs +606 -0
  155. package/dist/chunk-U44IKGG7.cjs +5390 -0
  156. package/dist/chunk-UJXISJBN.js +487 -0
  157. package/dist/chunk-UM6C3CGK.js +4375 -0
  158. package/dist/chunk-UMABK6SI.js +686 -0
  159. package/dist/chunk-UOIGFQXC.cjs +9750 -0
  160. package/dist/chunk-URG2SJLK.js +2521 -0
  161. package/dist/chunk-V6MKC2FZ.js +979 -0
  162. package/dist/chunk-VECQYRXL.js +474 -0
  163. package/dist/chunk-VJ3L7CHT.cjs +169 -0
  164. package/dist/chunk-VMLKSV26.js +1216 -0
  165. package/dist/chunk-VVKVQZI6.js +55 -0
  166. package/dist/chunk-W6RW64BB.cjs +1219 -0
  167. package/dist/chunk-W7VDOASB.cjs +639 -0
  168. package/dist/chunk-WDT3JTGM.cjs +483 -0
  169. package/dist/chunk-WJIHFLMJ.js +404 -0
  170. package/dist/chunk-WKX5AMOY.js +309 -0
  171. package/dist/chunk-WNNE3PO3.js +34 -0
  172. package/dist/chunk-WRKUDAZJ.js +3038 -0
  173. package/dist/chunk-WRLUBRKS.cjs +1943 -0
  174. package/dist/chunk-WRNEH5MO.js +3169 -0
  175. package/dist/chunk-WRWEX5ZF.js +658 -0
  176. package/dist/chunk-X3GJPRVK.cjs +3246 -0
  177. package/dist/chunk-XHIV6326.cjs +793 -0
  178. package/dist/chunk-XIVIE43A.cjs +729 -0
  179. package/dist/chunk-XJAN7CZG.cjs +432 -0
  180. package/dist/chunk-XKTPFXGA.js +164 -0
  181. package/dist/chunk-XL6INWKT.js +121 -0
  182. package/dist/chunk-XSFNHP2E.js +632 -0
  183. package/dist/chunk-XT6JY5W5.js +9684 -0
  184. package/dist/chunk-XUILI4KB.cjs +430 -0
  185. package/dist/chunk-XUUVDHIF.cjs +3962 -0
  186. package/dist/chunk-YF2I3MV3.js +46 -0
  187. package/dist/chunk-YIMN575O.js +4847 -0
  188. package/dist/chunk-YIVFJNYV.js +176 -0
  189. package/dist/chunk-YKGPCZEE.cjs +237 -0
  190. package/dist/chunk-YN6V7R3L.cjs +327 -0
  191. package/dist/chunk-YQELFNJV.js +39 -0
  192. package/dist/chunk-YYXH45E2.js +426 -0
  193. package/dist/chunk-ZBQXLH2L.js +756 -0
  194. package/dist/chunk-ZDSYWBIE.cjs +69 -0
  195. package/dist/chunk-ZU7NIRT6.js +325 -0
  196. package/dist/chunk-ZZ7RO2UQ.js +1243 -0
  197. package/dist/chunk-ZZEI7MV4.js +778 -0
  198. package/dist/cli/holoscript-runner.cjs +2255 -0
  199. package/dist/cli/holoscript-runner.js +2230 -0
  200. package/dist/codebase/index.cjs +336 -0
  201. package/dist/codebase/index.js +331 -0
  202. package/dist/compiler/agent-inference.cjs +31 -0
  203. package/dist/compiler/agent-inference.js +8 -0
  204. package/dist/compiler/android-xr.cjs +24 -0
  205. package/dist/compiler/android-xr.js +14 -0
  206. package/dist/compiler/android.cjs +24 -0
  207. package/dist/compiler/android.js +14 -0
  208. package/dist/compiler/ar.cjs +23 -0
  209. package/dist/compiler/ar.js +11 -0
  210. package/dist/compiler/babylon.cjs +21 -0
  211. package/dist/compiler/babylon.js +15 -0
  212. package/dist/compiler/business-quest.cjs +43 -0
  213. package/dist/compiler/business-quest.js +4 -0
  214. package/dist/compiler/coco.cjs +27 -0
  215. package/dist/compiler/coco.js +4 -0
  216. package/dist/compiler/context.cjs +25 -0
  217. package/dist/compiler/context.d.ts +28 -0
  218. package/dist/compiler/context.js +8 -0
  219. package/dist/compiler/domain-block-utils.cjs +605 -0
  220. package/dist/compiler/domain-block-utils.js +11 -0
  221. package/dist/compiler/dtdl.cjs +27 -0
  222. package/dist/compiler/dtdl.js +11 -0
  223. package/dist/compiler/gltf-pipeline.cjs +39 -0
  224. package/dist/compiler/gltf-pipeline.js +4 -0
  225. package/dist/compiler/godot.cjs +18 -0
  226. package/dist/compiler/godot.js +12 -0
  227. package/dist/compiler/incremental.cjs +34 -0
  228. package/dist/compiler/incremental.js +9 -0
  229. package/dist/compiler/index.cjs +5860 -0
  230. package/dist/compiler/index.d.ts +322 -21
  231. package/dist/compiler/index.js +5525 -0
  232. package/dist/compiler/ios.cjs +23 -0
  233. package/dist/compiler/ios.js +13 -0
  234. package/dist/compiler/llm-provider-capabilities.cjs +25 -0
  235. package/dist/compiler/llm-provider-capabilities.d.ts +43 -0
  236. package/dist/compiler/llm-provider-capabilities.js +8 -0
  237. package/dist/compiler/multi-layer.cjs +24 -0
  238. package/dist/compiler/multi-layer.js +15 -0
  239. package/dist/compiler/nodetoy.cjs +23 -0
  240. package/dist/compiler/nodetoy.js +4 -0
  241. package/dist/compiler/openxr.cjs +19 -0
  242. package/dist/compiler/openxr.js +13 -0
  243. package/dist/compiler/playcanvas.cjs +19 -0
  244. package/dist/compiler/playcanvas.js +13 -0
  245. package/dist/compiler/r3f.cjs +38 -0
  246. package/dist/compiler/r3f.d.ts +22 -0
  247. package/dist/compiler/r3f.js +16 -0
  248. package/dist/compiler/remotion.cjs +23 -0
  249. package/dist/compiler/remotion.js +4 -0
  250. package/dist/compiler/reproducibility.cjs +39 -0
  251. package/dist/compiler/reproducibility.js +4 -0
  252. package/dist/compiler/sdf.cjs +24 -0
  253. package/dist/compiler/sdf.js +12 -0
  254. package/dist/compiler/semantic-scene.cjs +31 -0
  255. package/dist/compiler/semantic-scene.js +4 -0
  256. package/dist/compiler/state.cjs +21 -0
  257. package/dist/compiler/state.js +11 -0
  258. package/dist/compiler/trait-composition.cjs +30 -0
  259. package/dist/compiler/trait-composition.js +9 -0
  260. package/dist/compiler/unity.cjs +19 -0
  261. package/dist/compiler/unity.js +13 -0
  262. package/dist/compiler/unreal.cjs +23 -0
  263. package/dist/compiler/unreal.js +13 -0
  264. package/dist/compiler/urdf.cjs +52 -0
  265. package/dist/compiler/urdf.js +12 -0
  266. package/dist/compiler/usd-physics.cjs +26 -0
  267. package/dist/compiler/usd-physics.js +9 -0
  268. package/dist/compiler/visionos.cjs +19 -0
  269. package/dist/compiler/visionos.js +13 -0
  270. package/dist/compiler/vrchat.cjs +22 -0
  271. package/dist/compiler/vrchat.js +12 -0
  272. package/dist/compiler/vrr.cjs +24 -0
  273. package/dist/compiler/vrr.js +12 -0
  274. package/dist/compiler/wasm.cjs +36 -0
  275. package/dist/compiler/wasm.js +12 -0
  276. package/dist/compiler/webgpu.cjs +18 -0
  277. package/dist/compiler/webgpu.js +12 -0
  278. package/dist/coordinators/index.cjs +1266 -0
  279. package/dist/coordinators/index.d.ts +72 -1
  280. package/dist/coordinators/index.js +1259 -0
  281. package/dist/debugger.cjs +24 -0
  282. package/dist/debugger.js +11 -0
  283. package/dist/entries/interop.cjs +64 -0
  284. package/dist/entries/interop.js +7 -0
  285. package/dist/entries/scripting.cjs +55 -0
  286. package/dist/entries/scripting.js +10 -0
  287. package/dist/hololand/index.cjs +146 -0
  288. package/dist/hololand/index.d.ts +70 -0
  289. package/dist/hololand/index.js +5 -0
  290. package/dist/index.cjs +43233 -0
  291. package/dist/index.d.ts +976 -21
  292. package/dist/index.js +39995 -0
  293. package/dist/math/tropical-spmv.cjs +45 -0
  294. package/dist/math/tropical-spmv.js +4 -0
  295. package/dist/math/vec3.cjs +57 -0
  296. package/dist/math/vec3.js +4 -0
  297. package/dist/ml-dsa-FSKBTE3W.cjs +1265 -0
  298. package/dist/ml-dsa-Z7JDKW4L.js +1265 -0
  299. package/dist/paper-0c-spike/index.cjs +150 -0
  300. package/dist/paper-0c-spike/index.js +141 -0
  301. package/dist/parser.cjs +61 -0
  302. package/dist/parser.d.ts +11 -0
  303. package/dist/parser.js +12 -0
  304. package/dist/playwright-3AT3AKTV.cjs +98673 -0
  305. package/dist/playwright-VZPDVUEQ.js +98660 -0
  306. package/dist/reconstruction/index.cjs +153 -0
  307. package/dist/reconstruction/index.d.ts +29 -2
  308. package/dist/reconstruction/index.js +8 -0
  309. package/dist/runtime.cjs +316 -0
  310. package/dist/runtime.d.ts +61 -0
  311. package/dist/runtime.js +31 -0
  312. package/dist/self-improvement/index.cjs +563 -0
  313. package/dist/self-improvement/index.js +545 -0
  314. package/dist/storage/index.cjs +38 -0
  315. package/dist/storage/index.js +5 -0
  316. package/dist/testing.cjs +25 -0
  317. package/dist/testing.d.ts +70 -0
  318. package/dist/testing.js +4 -0
  319. package/dist/traitDocs/traitDocs.cjs +33 -0
  320. package/dist/traitDocs/traitDocs.js +7 -0
  321. package/dist/traits/botanical-lotus.cjs +41 -0
  322. package/dist/traits/botanical-lotus.d.ts +172 -0
  323. package/dist/traits/botanical-lotus.js +4 -0
  324. package/dist/traits/engines/index.cjs +520 -0
  325. package/dist/traits/engines/index.js +380 -0
  326. package/dist/traits/index.cjs +24409 -0
  327. package/dist/traits/index.d.ts +171 -35
  328. package/dist/traits/index.js +21634 -0
  329. package/dist/traits/simulation-solver-factory.cjs +13 -0
  330. package/dist/traits/simulation-solver-factory.d.ts +23 -0
  331. package/dist/traits/simulation-solver-factory.js +4 -0
  332. package/dist/traits/webcam-gaze.cjs +35 -0
  333. package/dist/traits/webcam-gaze.d.ts +17 -0
  334. package/dist/traits/webcam-gaze.js +4 -0
  335. package/dist/type-checker.cjs +19 -0
  336. package/dist/type-checker.js +6 -0
  337. package/dist/world/index.cjs +947 -0
  338. package/dist/world/index.d.ts +147 -0
  339. package/dist/world/index.js +939 -0
  340. package/dist/world-model/index.cjs +1446 -0
  341. package/dist/world-model/index.d.ts +119 -0
  342. package/dist/world-model/index.js +1414 -0
  343. package/dist/wot/index.cjs +29 -0
  344. package/dist/wot/index.js +4 -0
  345. package/package.json +93 -49
@@ -0,0 +1,623 @@
1
+ import { init_DomainBlockCompilerMixin, compileDomainBlocks, inputToVRChat, compileInputBlock, navigationToVRChat, compileNavigationBlock, renderingToVRChat, compileRenderingBlock, proceduralToVRChat, compileProceduralBlock, web3ToVRChat, compileWeb3Block, architectureToVRChat, compileArchitectureBlock, musicToVRChat, compileMusicBlock, educationToVRChat, compileEducationBlock, datavizToVRChat, compileDataVizBlock, iotToVRChat, compileIoTBlock, compileRoboticsBlock, roboticsToVRChat, compileHealthcareBlock, healthcareToVRChat, compilePaymentBlock, paymentToVRChat, compileNarrativeBlock, narrativeToVRChat, compileWeatherBlock, weatherToUnity, compileAudioSourceBlock, audioSourceToUnity, compilePostProcessingBlock, postProcessingToUnity, compileParticleBlock, particlesToUnity, compilePhysicsBlock, physicsToUnity, compileMaterialBlock, materialToVRChat } from './chunk-JCLBKPMX.js';
2
+ import { init_CompilerBase, CompilerBase } from './chunk-QPSKHBJP.js';
3
+ import { __export, __esm } from './chunk-OL46QLBJ.js';
4
+ import { ANSCapabilityPath } from '@holoscript/core-types/ans';
5
+
6
+ // src/compiler/VRChatCompiler.ts
7
+ var VRChatCompiler_exports = {};
8
+ __export(VRChatCompiler_exports, {
9
+ VRChatCompiler: () => VRChatCompiler,
10
+ compileToVRChat: () => compileToVRChat
11
+ });
12
+ function compileToVRChat(composition, options) {
13
+ const compiler = new VRChatCompiler(options);
14
+ return Promise.resolve(compiler.compile(composition, ""));
15
+ }
16
+ var VRChatCompiler;
17
+ var init_VRChatCompiler = __esm({
18
+ "src/compiler/VRChatCompiler.ts"() {
19
+ init_CompilerBase();
20
+ init_DomainBlockCompilerMixin();
21
+ VRChatCompiler = class extends CompilerBase {
22
+ constructor(options = {}) {
23
+ super();
24
+ this.compilerName = "VRChatCompiler";
25
+ this.lines = [];
26
+ this.indentLevel = 0;
27
+ this.udonScripts = /* @__PURE__ */ new Map();
28
+ this.interactableObjects = [];
29
+ this.worldIdCounter = 0;
30
+ const outputFormat = options.outputFormat ?? (options.useUdonSharp === false ? "udon-assembly" : "udonsharp-csharp");
31
+ this.options = {
32
+ namespace: options.namespace || "HoloWorld",
33
+ className: options.className || "GeneratedWorld",
34
+ worldName: options.worldName || "HoloScript World",
35
+ indent: options.indent || " ",
36
+ sdkVersion: options.sdkVersion || "3.5",
37
+ outputFormat,
38
+ useUdonSharp: options.useUdonSharp ?? outputFormat === "udonsharp-csharp",
39
+ provenanceHash: options.provenanceHash ?? ""
40
+ };
41
+ }
42
+ getRequiredCapability() {
43
+ return ANSCapabilityPath.VRCHAT;
44
+ }
45
+ compile(composition, agentToken, outputPath) {
46
+ this.validateCompilerAccess(agentToken, outputPath);
47
+ this.assertSupportedOutputFormat();
48
+ this.lines = [];
49
+ this.udonScripts.clear();
50
+ this.interactableObjects = [];
51
+ this.indentLevel = 0;
52
+ const mainScript = this.generateMainScript(composition);
53
+ this.generateUdonScripts(composition);
54
+ const prefabHierarchy = this.generatePrefabHierarchy(composition);
55
+ const worldDescriptor = this.generateWorldDescriptor(composition);
56
+ return {
57
+ outputFormat: this.options.outputFormat,
58
+ mainScript,
59
+ udonScripts: this.udonScripts,
60
+ prefabHierarchy,
61
+ worldDescriptor
62
+ };
63
+ }
64
+ assertSupportedOutputFormat() {
65
+ if (this.options.outputFormat === "udonsharp-csharp" && this.options.useUdonSharp) {
66
+ return;
67
+ }
68
+ const requested = this.options.outputFormat === "udonsharp-csharp" ? "non-UdonSharp Udon output" : this.options.outputFormat;
69
+ throw new Error(
70
+ `VRChat ${requested} output is gated: founder direction is Byte/Udon output, but the artifact contract must be confirmed before implementation (Udon Assembly text vs serialized Udon bytecode asset). The current compiler only emits legacy UdonSharp C# with outputFormat: 'udonsharp-csharp' and useUdonSharp: true.`
71
+ );
72
+ }
73
+ generateMainScript(composition) {
74
+ this.lines = [];
75
+ this.indentLevel = 0;
76
+ this.emit("// Auto-generated by HoloScript VRChatCompiler");
77
+ this.emit(
78
+ `// Source: composition "${this.escapeStringValue(composition.name, "CSharp")}"`
79
+ );
80
+ this.emit(`// VRChat SDK: ${this.options.sdkVersion}`);
81
+ this.emit("// Do not edit manually \xE2\u20AC\u201D regenerate from .holo source");
82
+ if (this.options.provenanceHash) {
83
+ this.emit(`// Provenance Hash: ${this.options.provenanceHash}`);
84
+ }
85
+ this.emit("");
86
+ this.emit("using UdonSharp;");
87
+ this.emit("using UnityEngine;");
88
+ this.emit("using VRC.SDKBase;");
89
+ this.emit("using VRC.Udon;");
90
+ this.emit("using VRC.SDK3.Components;");
91
+ if (composition.audio?.length) {
92
+ this.emit("using VRC.SDK3.Components.Audio;");
93
+ }
94
+ this.emit("");
95
+ this.emit(`namespace ${this.options.namespace}`);
96
+ this.emit("{");
97
+ this.indentLevel++;
98
+ this.emit("[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]");
99
+ this.emit(`public class ${this.options.className} : UdonSharpBehaviour`);
100
+ this.emit("{");
101
+ this.indentLevel++;
102
+ if (composition.state) {
103
+ this.emit("// === Synced State ===");
104
+ for (const prop of composition.state.properties) {
105
+ const csType = this.toCSharpType(prop.value);
106
+ const csVal = this.toCSharpValue(prop.value);
107
+ this.emit(
108
+ `[UdonSynced] public ${csType} ${this.escapeStringValue(prop.key, "CSharp")} = ${csVal};`
109
+ );
110
+ }
111
+ this.emit("");
112
+ }
113
+ this.emit("// === Object References ===");
114
+ this.emit('[Header("Scene Objects")]');
115
+ const objects = composition.objects || [];
116
+ for (const obj of objects) {
117
+ const varName = this.sanitizeName(obj.name);
118
+ this.emit(`public GameObject ${varName};`);
119
+ }
120
+ this.emit("");
121
+ this.emit("void Start()");
122
+ this.emit("{");
123
+ this.indentLevel++;
124
+ this.emit('Debug.Log("[HoloWorld] World initialized");');
125
+ if (composition.environment) {
126
+ this.compileEnvironment(composition.environment);
127
+ }
128
+ this.indentLevel--;
129
+ this.emit("}");
130
+ this.emit("");
131
+ this.emit("public override void OnDeserialization()");
132
+ this.emit("{");
133
+ this.indentLevel++;
134
+ this.emit("// Handle synced state updates");
135
+ this.emit("UpdateVisuals();");
136
+ this.indentLevel--;
137
+ this.emit("}");
138
+ this.emit("");
139
+ this.emit("private void UpdateVisuals()");
140
+ this.emit("{");
141
+ this.indentLevel++;
142
+ this.emit("// Update visuals based on synced state");
143
+ this.indentLevel--;
144
+ this.emit("}");
145
+ this.emit("");
146
+ this.emit("public override void OnPlayerJoined(VRCPlayerApi player)");
147
+ this.emit("{");
148
+ this.indentLevel++;
149
+ this.emit("if (player.isLocal)");
150
+ this.emit("{");
151
+ this.indentLevel++;
152
+ this.emit('Debug.Log($"[HoloWorld] Welcome, {player.displayName}!");');
153
+ this.indentLevel--;
154
+ this.emit("}");
155
+ this.indentLevel--;
156
+ this.emit("}");
157
+ this.emit("");
158
+ if (composition.zones) {
159
+ for (const zone of composition.zones) {
160
+ this.compileZoneTriggers(zone);
161
+ }
162
+ }
163
+ if (composition.timelines) {
164
+ for (const tl of composition.timelines) {
165
+ this.compileTimeline(tl);
166
+ }
167
+ }
168
+ if (composition.transitions) {
169
+ for (const tr of composition.transitions) {
170
+ this.compileTransition(tr);
171
+ }
172
+ }
173
+ this.compileVRChatDomainBlocks(composition);
174
+ this.indentLevel--;
175
+ this.emit("}");
176
+ this.indentLevel--;
177
+ this.emit("}");
178
+ return this.lines.join("\n");
179
+ }
180
+ compileVRChatDomainBlocks(composition) {
181
+ const domainBlocks = composition.domainBlocks ?? [];
182
+ if (domainBlocks.length === 0) return;
183
+ this.emit("");
184
+ this.emit("// === v4.2 Domain Blocks (VRChat/Unity) ===");
185
+ let blockIdx = 0;
186
+ const compiled = compileDomainBlocks(
187
+ domainBlocks,
188
+ {
189
+ material: (block) => {
190
+ const mat = compileMaterialBlock(block);
191
+ return materialToVRChat(mat, `db${blockIdx++}`);
192
+ },
193
+ physics: (block) => {
194
+ const phys = compilePhysicsBlock(block);
195
+ return physicsToUnity(phys, `db${blockIdx++}`);
196
+ },
197
+ vfx: (block) => {
198
+ const ps = compileParticleBlock(block);
199
+ return particlesToUnity(ps, `db${blockIdx++}`);
200
+ },
201
+ postfx: (block) => {
202
+ const pp = compilePostProcessingBlock(block);
203
+ return postProcessingToUnity(pp);
204
+ },
205
+ audio: (block) => {
206
+ const audio = compileAudioSourceBlock(block);
207
+ return audioSourceToUnity(audio, `db${blockIdx++}`);
208
+ },
209
+ weather: (block) => {
210
+ const weather = compileWeatherBlock(block);
211
+ return weatherToUnity(weather);
212
+ },
213
+ narrative: (block) => {
214
+ const narr = compileNarrativeBlock(block);
215
+ return narrativeToVRChat(narr);
216
+ },
217
+ payment: (block) => {
218
+ const pay = compilePaymentBlock(block);
219
+ return paymentToVRChat(pay);
220
+ },
221
+ healthcare: (block) => {
222
+ const h = compileHealthcareBlock(block);
223
+ return healthcareToVRChat(h);
224
+ },
225
+ robotics: (block) => {
226
+ const r = compileRoboticsBlock(block);
227
+ return roboticsToVRChat(r);
228
+ },
229
+ iot: (block) => iotToVRChat(compileIoTBlock(block)),
230
+ dataviz: (block) => datavizToVRChat(compileDataVizBlock(block)),
231
+ education: (block) => educationToVRChat(compileEducationBlock(block)),
232
+ music: (block) => musicToVRChat(compileMusicBlock(block)),
233
+ architecture: (block) => architectureToVRChat(compileArchitectureBlock(block)),
234
+ web3: (block) => web3ToVRChat(compileWeb3Block(block)),
235
+ procedural: (block) => proceduralToVRChat(compileProceduralBlock(block)),
236
+ rendering: (block) => renderingToVRChat(compileRenderingBlock(block)),
237
+ navigation: (block) => navigationToVRChat(compileNavigationBlock(block)),
238
+ input: (block) => inputToVRChat(compileInputBlock(block))
239
+ },
240
+ (block) => `// Domain block: ${block.domain}/${block.keyword} "${this.escapeStringValue(block.name, "CSharp")}"`
241
+ );
242
+ for (const line of compiled) {
243
+ for (const l of line.split("\n")) {
244
+ this.emit(l);
245
+ }
246
+ }
247
+ }
248
+ generateUdonScripts(composition) {
249
+ const objects = composition.objects || [];
250
+ for (const obj of objects) {
251
+ if (!obj.traits) continue;
252
+ const hasGrabbable = obj.traits.some((t) => t.name === "grabbable");
253
+ const hasPointable = obj.traits.some((t) => t.name === "pointable" || t.name === "clickable");
254
+ const hasNetworked = obj.traits.some((t) => t.name === "networked" || t.name === "synced");
255
+ const hasPortal = obj.traits.some((t) => t.name === "portal");
256
+ const hasMirror = obj.traits.some((t) => t.name === "mirror");
257
+ if (hasGrabbable || hasPointable || hasNetworked || hasPortal || hasMirror) {
258
+ const script = this.generateObjectUdonScript(obj, {
259
+ hasGrabbable,
260
+ hasPointable,
261
+ hasNetworked,
262
+ hasPortal,
263
+ hasMirror
264
+ });
265
+ this.udonScripts.set(`${this.sanitizeName(obj.name)}Behaviour.cs`, script);
266
+ this.interactableObjects.push(obj.name);
267
+ }
268
+ }
269
+ }
270
+ generateObjectUdonScript(obj, traits) {
271
+ const lines = [];
272
+ const varName = this.sanitizeName(obj.name);
273
+ const className = `${varName}Behaviour`;
274
+ lines.push("// Auto-generated UdonSharp script");
275
+ lines.push(`// Object: ${this.escapeStringValue(obj.name, "CSharp")}`);
276
+ lines.push("");
277
+ lines.push("using UdonSharp;");
278
+ lines.push("using UnityEngine;");
279
+ lines.push("using VRC.SDKBase;");
280
+ lines.push("using VRC.Udon;");
281
+ lines.push("");
282
+ const syncMode = traits.hasNetworked ? "BehaviourSyncMode.Manual" : "BehaviourSyncMode.None";
283
+ lines.push(`[UdonBehaviourSyncMode(${syncMode})]`);
284
+ lines.push(`public class ${className} : UdonSharpBehaviour`);
285
+ lines.push("{");
286
+ if (obj.state?.properties) {
287
+ lines.push(" // === State ===");
288
+ for (const prop of obj.state.properties) {
289
+ const csType = this.toCSharpType(prop.value);
290
+ const csVal = this.toCSharpValue(prop.value);
291
+ const syncAttr = traits.hasNetworked ? "[UdonSynced] " : "";
292
+ lines.push(
293
+ ` ${syncAttr}public ${csType} ${this.escapeStringValue(prop.key, "CSharp")} = ${csVal};`
294
+ );
295
+ }
296
+ lines.push("");
297
+ }
298
+ if (traits.hasGrabbable) {
299
+ lines.push(" // VRC_Pickup compatible");
300
+ lines.push(" public VRC_Pickup pickup;");
301
+ lines.push("");
302
+ lines.push(" public override void OnPickup()");
303
+ lines.push(" {");
304
+ lines.push(' Debug.Log($"[{gameObject.name}] Picked up");');
305
+ if (traits.hasNetworked) {
306
+ lines.push(" Networking.SetOwner(Networking.LocalPlayer, gameObject);");
307
+ lines.push(" RequestSerialization();");
308
+ }
309
+ lines.push(" }");
310
+ lines.push("");
311
+ lines.push(" public override void OnDrop()");
312
+ lines.push(" {");
313
+ lines.push(' Debug.Log($"[{gameObject.name}] Dropped");');
314
+ if (traits.hasNetworked) {
315
+ lines.push(" RequestSerialization();");
316
+ }
317
+ lines.push(" }");
318
+ lines.push("");
319
+ }
320
+ if (traits.hasPointable) {
321
+ lines.push(" public override void Interact()");
322
+ lines.push(" {");
323
+ lines.push(' Debug.Log($"[{gameObject.name}] Interacted");');
324
+ lines.push(" OnInteractHandler();");
325
+ lines.push(" }");
326
+ lines.push("");
327
+ lines.push(" private void OnInteractHandler()");
328
+ lines.push(" {");
329
+ lines.push(" // Custom interaction logic based on traits");
330
+ lines.push(" }");
331
+ lines.push("");
332
+ }
333
+ if (traits.hasPortal) {
334
+ const portalTrait = obj.traits?.find((t) => t.name === "portal");
335
+ const destination = portalTrait?.config?.destination || "wrld_unknown";
336
+ lines.push(' [Header("Portal Settings")]');
337
+ lines.push(` public string destinationWorld = "${destination}";`);
338
+ lines.push("");
339
+ lines.push(" public override void Interact()");
340
+ lines.push(" {");
341
+ lines.push(" // VRChat portal \xE2\u20AC\u201D player will be teleported");
342
+ lines.push(' Debug.Log($"Portal to {destinationWorld}");');
343
+ lines.push(" }");
344
+ lines.push("");
345
+ }
346
+ if (traits.hasNetworked) {
347
+ lines.push(" public override void OnDeserialization()");
348
+ lines.push(" {");
349
+ lines.push(" // Handle network sync");
350
+ lines.push(" UpdateFromNetwork();");
351
+ lines.push(" }");
352
+ lines.push("");
353
+ lines.push(" private void UpdateFromNetwork()");
354
+ lines.push(" {");
355
+ lines.push(" // Apply synced state to visuals");
356
+ lines.push(" }");
357
+ lines.push("");
358
+ }
359
+ lines.push("}");
360
+ return lines.join("\n");
361
+ }
362
+ generatePrefabHierarchy(composition) {
363
+ const lines = [];
364
+ lines.push(
365
+ `# VRChat World Prefab Hierarchy: ${this.escapeStringValue(composition.name, "CSharp")}`
366
+ );
367
+ lines.push("# Generated by HoloScript VRChatCompiler");
368
+ lines.push("");
369
+ lines.push("World Root");
370
+ lines.push("\xE2\u201D\u0153\xE2\u201D\u20AC\xE2\u201D\u20AC Environment");
371
+ if (composition.lights) {
372
+ lines.push("\xE2\u201D\u0153\xE2\u201D\u20AC\xE2\u201D\u20AC Lighting");
373
+ for (const light of composition.lights) {
374
+ lines.push(
375
+ `\xE2\u201D\u201A \xE2\u201D\u201D\xE2\u201D\u20AC\xE2\u201D\u20AC ${this.escapeStringValue(light.name, "CSharp")} (${light.lightType})`
376
+ );
377
+ }
378
+ }
379
+ if (composition.objects) {
380
+ lines.push("\xE2\u201D\u0153\xE2\u201D\u20AC\xE2\u201D\u20AC Objects");
381
+ for (const obj of composition.objects) {
382
+ const traits = obj.traits?.map((t) => `@${this.escapeStringValue(t.name, "CSharp")}`).join(" ") || "";
383
+ lines.push(
384
+ `\xE2\u201D\u201A \xE2\u201D\u201D\xE2\u201D\u20AC\xE2\u201D\u20AC ${this.escapeStringValue(obj.name, "CSharp")} ${traits}`
385
+ );
386
+ }
387
+ }
388
+ if (composition.spatialGroups) {
389
+ for (const group of composition.spatialGroups) {
390
+ lines.push(
391
+ `\xE2\u201D\u0153\xE2\u201D\u20AC\xE2\u201D\u20AC ${this.escapeStringValue(group.name, "CSharp")} (SpatialGroup)`
392
+ );
393
+ for (const child of group.objects || []) {
394
+ lines.push(`\xE2\u201D\u201A \xE2\u201D\u201D\xE2\u201D\u20AC\xE2\u201D\u20AC ${this.escapeStringValue(child.name, "CSharp")}`);
395
+ }
396
+ }
397
+ }
398
+ if (composition.audio) {
399
+ lines.push("\xE2\u201D\u0153\xE2\u201D\u20AC\xE2\u201D\u20AC Audio");
400
+ for (const audio of composition.audio) {
401
+ lines.push(
402
+ `\xE2\u201D\u201A \xE2\u201D\u201D\xE2\u201D\u20AC\xE2\u201D\u20AC ${this.escapeStringValue(audio.name, "CSharp")} (VRCSpatialAudioSource)`
403
+ );
404
+ }
405
+ }
406
+ if (composition.zones) {
407
+ lines.push("\xE2\u201D\u0153\xE2\u201D\u20AC\xE2\u201D\u20AC Zones");
408
+ for (const zone of composition.zones) {
409
+ lines.push(
410
+ `\xE2\u201D\u201A \xE2\u201D\u201D\xE2\u201D\u20AC\xE2\u201D\u20AC ${this.escapeStringValue(zone.name, "CSharp")} (Trigger)`
411
+ );
412
+ }
413
+ }
414
+ lines.push("\xE2\u201D\u0153\xE2\u201D\u20AC\xE2\u201D\u20AC VRCWorld (VRC_World)");
415
+ lines.push("\xE2\u201D\u0153\xE2\u201D\u20AC\xE2\u201D\u20AC Spawn Points");
416
+ lines.push("\xE2\u201D\u201A \xE2\u201D\u201D\xE2\u201D\u20AC\xE2\u201D\u20AC SpawnPoint_0");
417
+ lines.push("\xE2\u201D\u201D\xE2\u201D\u20AC\xE2\u201D\u20AC Player Mods");
418
+ return lines.join("\n");
419
+ }
420
+ generateWorldDescriptor(composition) {
421
+ const lines = [];
422
+ lines.push("// VRC_World Descriptor Settings");
423
+ lines.push(`// World: ${this.options.worldName}`);
424
+ lines.push("");
425
+ lines.push("VRC_SceneDescriptor:");
426
+ lines.push(` worldName: "${this.options.worldName}"`);
427
+ lines.push(` worldId: "wrld_${this.generateWorldId()}"`);
428
+ lines.push(" capacity: 32");
429
+ lines.push(" recommendedCapacity: 16");
430
+ lines.push(" respawnHeightY: -100");
431
+ lines.push(" objectBehaviourAtRespawnHeight: Destroy");
432
+ lines.push(" forbidUserPortals: false");
433
+ lines.push(' unityVersion: "2022.3.22f1"');
434
+ lines.push(` sdkVersion: "${this.options.sdkVersion}"`);
435
+ lines.push("");
436
+ lines.push("SpawnPoints:");
437
+ lines.push(" - position: [0, 0, 0]");
438
+ lines.push(" rotation: [0, 0, 0]");
439
+ lines.push("");
440
+ if (composition.camera) {
441
+ lines.push("ReferenceCamera:");
442
+ lines.push(" near: 0.01");
443
+ lines.push(" far: 1000");
444
+ }
445
+ return lines.join("\n");
446
+ }
447
+ compileEnvironment(env) {
448
+ this.emit("// === Environment Setup ===");
449
+ for (const prop of env.properties) {
450
+ if (prop.key === "skybox" || prop.key === "preset") {
451
+ this.emit(`// Skybox: "${prop.value}" \xE2\u20AC\u201D set via VRChat scene settings`);
452
+ } else if (prop.key === "ambient_light") {
453
+ this.emit(`RenderSettings.ambientIntensity = ${prop.value}f;`);
454
+ } else if (prop.key === "fog" && typeof prop.value === "object") {
455
+ const fog = prop.value;
456
+ this.emit("RenderSettings.fog = true;");
457
+ if (fog.color) this.emit(`RenderSettings.fogColor = ${this.toColor(fog.color)};`);
458
+ }
459
+ }
460
+ }
461
+ compileZoneTriggers(zone) {
462
+ const varName = this.sanitizeName(zone.name);
463
+ this.emit(`// Zone: ${this.escapeStringValue(zone.name, "CSharp")}`);
464
+ this.emit(`public void On${varName}Enter(VRCPlayerApi player)`);
465
+ this.emit("{");
466
+ this.indentLevel++;
467
+ this.emit(
468
+ `Debug.Log($"Player {player.displayName} entered ${this.escapeStringValue(zone.name, "CSharp")}");`
469
+ );
470
+ this.indentLevel--;
471
+ this.emit("}");
472
+ this.emit("");
473
+ this.emit(`public void On${varName}Exit(VRCPlayerApi player)`);
474
+ this.emit("{");
475
+ this.indentLevel++;
476
+ this.emit(
477
+ `Debug.Log($"Player {player.displayName} exited ${this.escapeStringValue(zone.name, "CSharp")}");`
478
+ );
479
+ this.indentLevel--;
480
+ this.emit("}");
481
+ this.emit("");
482
+ }
483
+ compileTimeline(timeline) {
484
+ const name = this.sanitizeName(timeline.name);
485
+ this.emit(`// Timeline: ${this.escapeStringValue(timeline.name, "CSharp")}`);
486
+ this.emit(`public void Play${name}()`);
487
+ this.emit("{");
488
+ this.indentLevel++;
489
+ this.emit(`SendCustomEventDelayedSeconds("${name}Step0", 0f);`);
490
+ this.indentLevel--;
491
+ this.emit("}");
492
+ this.emit("");
493
+ for (let i = 0; i < timeline.entries.length; i++) {
494
+ const entry = timeline.entries[i];
495
+ const nextDelay = i < timeline.entries.length - 1 ? timeline.entries[i + 1].time - entry.time : 0;
496
+ this.emit(`public void ${name}Step${i}()`);
497
+ this.emit("{");
498
+ this.indentLevel++;
499
+ if (entry.action.kind === "animate") {
500
+ this.emit(`// Animate ${entry.action.target}`);
501
+ } else if (entry.action.kind === "emit") {
502
+ this.emit(`SendCustomEvent("${entry.action.event}");`);
503
+ } else if (entry.action.kind === "call") {
504
+ this.emit(`${entry.action.method}();`);
505
+ }
506
+ if (nextDelay > 0) {
507
+ this.emit(`SendCustomEventDelayedSeconds("${name}Step${i + 1}", ${nextDelay}f);`);
508
+ } else if (timeline.loop && i === timeline.entries.length - 1) {
509
+ this.emit(`SendCustomEventDelayedSeconds("${name}Step0", 0.1f);`);
510
+ }
511
+ this.indentLevel--;
512
+ this.emit("}");
513
+ this.emit("");
514
+ }
515
+ }
516
+ compileTransition(transition) {
517
+ const name = this.sanitizeName(transition.name);
518
+ this.emit(`// Transition: ${this.escapeStringValue(transition.name, "CSharp")}`);
519
+ this.emit(`public void ${name}Transition()`);
520
+ this.emit("{");
521
+ this.indentLevel++;
522
+ const dest = transition.properties.find((p) => p.key === "destination" || p.key === "to");
523
+ if (dest) {
524
+ this.emit(`// Transition to: ${dest.value}`);
525
+ }
526
+ this.indentLevel--;
527
+ this.emit("}");
528
+ this.emit("");
529
+ }
530
+ generateWorldId() {
531
+ const seq = this.worldIdCounter++;
532
+ const hex = seq.toString(16).padStart(8, "0");
533
+ return `${hex}-0000-0000-0000-000000000000`;
534
+ }
535
+ // === Utility Methods ===
536
+ emit(line) {
537
+ const indent = this.options.indent.repeat(this.indentLevel);
538
+ this.lines.push(indent + line);
539
+ }
540
+ sanitizeName(name) {
541
+ return name.replace(/[^a-zA-Z0-9_]/g, "_").replace(/^[0-9]/, "_$&");
542
+ }
543
+ toCSharpType(value) {
544
+ if (value === null) return "object";
545
+ if (typeof value === "boolean") return "bool";
546
+ if (typeof value === "number") return Number.isInteger(value) ? "int" : "float";
547
+ if (typeof value === "string") return "string";
548
+ if (Array.isArray(value)) {
549
+ if (value.length === 3 && value.every((v) => typeof v === "number")) return "Vector3";
550
+ if (value.length === 4 && value.every((v) => typeof v === "number")) return "Quaternion";
551
+ return "object[]";
552
+ }
553
+ return "object";
554
+ }
555
+ toCSharpValue(value) {
556
+ if (value === null) return "null";
557
+ if (typeof value === "boolean") return value ? "true" : "false";
558
+ if (typeof value === "number") return Number.isInteger(value) ? `${value}` : `${value}f`;
559
+ if (typeof value === "string") return `"${this.escapeStringValue(value, "CSharp")}"`;
560
+ if (Array.isArray(value)) {
561
+ if (value.length === 3 && value.every((v) => typeof v === "number")) {
562
+ return `new Vector3(${value[0]}f, ${value[1]}f, ${value[2]}f)`;
563
+ }
564
+ if (value.length === 4 && value.every((v) => typeof v === "number")) {
565
+ return `new Quaternion(${value[0]}f, ${value[1]}f, ${value[2]}f, ${value[3]}f)`;
566
+ }
567
+ }
568
+ return "null";
569
+ }
570
+ toColor(value) {
571
+ if (typeof value === "string") {
572
+ if (value.startsWith("#")) {
573
+ const hex = value.slice(1);
574
+ if (hex.length === 6) {
575
+ const r = parseInt(hex.slice(0, 2), 16) / 255;
576
+ const g = parseInt(hex.slice(2, 4), 16) / 255;
577
+ const b = parseInt(hex.slice(4, 6), 16) / 255;
578
+ return `new Color(${r}f, ${g}f, ${b}f)`;
579
+ }
580
+ }
581
+ const colors = {
582
+ red: "Color.red",
583
+ green: "Color.green",
584
+ blue: "Color.blue",
585
+ white: "Color.white",
586
+ black: "Color.black",
587
+ yellow: "Color.yellow",
588
+ cyan: "Color.cyan",
589
+ magenta: "Color.magenta"
590
+ };
591
+ return colors[value.toLowerCase()] || "Color.white";
592
+ }
593
+ if (Array.isArray(value) && value.length >= 3) {
594
+ const [r, g, b, a = 1] = value;
595
+ return `new Color(${r}f, ${g}f, ${b}f, ${a}f)`;
596
+ }
597
+ return "Color.white";
598
+ }
599
+ // Collect all trait names for import optimization
600
+ collectAllTraits(composition) {
601
+ const traits = [];
602
+ const addTraits = (obj) => {
603
+ if (obj.traits) {
604
+ for (const t of obj.traits) {
605
+ if (!traits.includes(t.name)) traits.push(t.name);
606
+ }
607
+ }
608
+ };
609
+ for (const obj of composition.objects || []) addTraits(obj);
610
+ for (const group of composition.spatialGroups || []) {
611
+ for (const child of group.objects || []) {
612
+ addTraits(child);
613
+ }
614
+ }
615
+ return traits;
616
+ }
617
+ };
618
+ }
619
+ });
620
+
621
+ export { VRChatCompiler, VRChatCompiler_exports, compileToVRChat, init_VRChatCompiler };
622
+ //# sourceMappingURL=chunk-BE4UJCQT.js.map
623
+ //# sourceMappingURL=chunk-BE4UJCQT.js.map
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var chunkCIWWXYHZ_cjs = require('./chunk-CIWWXYHZ.cjs');
4
+
5
+ // src/reconstruction/simulationContractBinding.ts
6
+ function assertHoloMapManifestContract(m) {
7
+ if (m.version !== "1.0.0") {
8
+ throw new Error(`HoloMap manifest version ${m.version} is not v1.0 contract`);
9
+ }
10
+ if (m.simulationContract.kind !== chunkCIWWXYHZ_cjs.HOLOMAP_SIMULATION_CONTRACT_KIND) {
11
+ throw new Error(`Unexpected SimulationContract kind: ${m.simulationContract.kind}`);
12
+ }
13
+ if (!m.simulationContract.replayFingerprint || m.simulationContract.replayFingerprint.length < 8) {
14
+ throw new Error("HoloMap manifest missing replayFingerprint");
15
+ }
16
+ }
17
+
18
+ exports.assertHoloMapManifestContract = assertHoloMapManifestContract;
19
+ //# sourceMappingURL=chunk-BRQJKJGT.cjs.map
20
+ //# sourceMappingURL=chunk-BRQJKJGT.cjs.map