@holoscript/core 8.0.8 → 8.0.9

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 (462) hide show
  1. package/bin/holoscript.cjs +5 -1
  2. package/dist/GLTFPipeline-L76YTXKA.js +15 -0
  3. package/dist/GLTFPipeline-ZWJN7GI6.cjs +36 -0
  4. package/dist/HoloCompositionParser-K76KTEEE.js +12 -0
  5. package/dist/HoloCompositionParser-UZH6Y4HO.cjs +45 -0
  6. package/dist/HoloScriptCodeParser-2D4ERFUZ.js +6 -0
  7. package/dist/HoloScriptCodeParser-UDRLDA7I.cjs +23 -0
  8. package/dist/HoloScriptPlusParser-FTMCGWXD.js +13 -0
  9. package/dist/HoloScriptPlusParser-LQR5GIKF.cjs +30 -0
  10. package/dist/HoloScriptRuntime-UTRLJI5L.js +12 -0
  11. package/dist/HoloScriptRuntime-YBYXJHJN.cjs +21 -0
  12. package/dist/SceneIRCompiler-63KA3M2F.js +17 -0
  13. package/dist/SceneIRCompiler-KWUFHZ4O.cjs +42 -0
  14. package/dist/{USDZExporter-AUHZODOF.cjs → USDZExporter-ML4UMIGC.cjs} +3 -3
  15. package/dist/{USDZExporter-GXB4AUSG.js → USDZExporter-ZFKLQ76G.js} +3 -3
  16. package/dist/agents/index.cjs +1 -1
  17. package/dist/agents/index.js +1 -1
  18. package/dist/audit/AuditLogger.d.ts +106 -0
  19. package/dist/audit/AuditQueryBuilder.d.ts +79 -0
  20. package/dist/audit/ComplianceReporter.d.ts +90 -0
  21. package/dist/audit/index.d.ts +13 -0
  22. package/dist/{chunk-FGMDMJM7.js → chunk-2BYAUHBO.js} +3 -3
  23. package/dist/{chunk-EDPYCLRC.cjs → chunk-2E6PP5UE.cjs} +83 -59
  24. package/dist/{chunk-GASCWJK5.js → chunk-2EGGAZT3.js} +65 -287
  25. package/dist/{chunk-SIEXCILW.js → chunk-2I3XAGMF.js} +3 -3
  26. package/dist/{chunk-OS533P33.cjs → chunk-2KKOYZYI.cjs} +1074 -1655
  27. package/dist/chunk-2MQKNDNH.js +51 -0
  28. package/dist/{chunk-7DMMMBCY.cjs → chunk-2X3IPCBK.cjs} +10 -10
  29. package/dist/chunk-2ZOTBO25.cjs +202 -0
  30. package/dist/chunk-356N4NPM.cjs +152 -0
  31. package/dist/{chunk-X3GJPRVK.cjs → chunk-36NPLOI4.cjs} +92 -81
  32. package/dist/{chunk-SLU6UPJI.cjs → chunk-37HHY7RH.cjs} +5 -5
  33. package/dist/{chunk-YDPEHCCI.cjs → chunk-3CDDRUER.cjs} +3 -118
  34. package/dist/chunk-3F7ZZWIN.js +1651 -0
  35. package/dist/chunk-3ILD7TKP.cjs +187 -0
  36. package/dist/{chunk-X27QRG4C.cjs → chunk-3IUHTGDD.cjs} +153 -41
  37. package/dist/{chunk-PXNZ6TME.js → chunk-4376VHNJ.js} +60 -36
  38. package/dist/{chunk-YKGPCZEE.cjs → chunk-4FIBOJW6.cjs} +10 -10
  39. package/dist/chunk-4Q7RKQQI.cjs +14195 -0
  40. package/dist/{chunk-YCM6QQRT.cjs → chunk-566ZB4LZ.cjs} +180 -8
  41. package/dist/{chunk-2Y3V22SG.js → chunk-5CURIYGT.js} +3 -3
  42. package/dist/{chunk-QBWNJXNR.js → chunk-5FYMCVBY.js} +5 -5
  43. package/dist/{chunk-ZA34AN3R.js → chunk-5LVFTGKH.js} +841 -12
  44. package/dist/chunk-63AUAIL6.js +48 -0
  45. package/dist/chunk-655FATJU.js +110 -0
  46. package/dist/{chunk-TQ377OLB.cjs → chunk-65S62L4D.cjs} +28 -22
  47. package/dist/chunk-6NTAZN5Z.cjs +502 -0
  48. package/dist/chunk-6TRX6AR2.js +9376 -0
  49. package/dist/chunk-6ZCCLKS2.cjs +51 -0
  50. package/dist/{chunk-MDR235RZ.js → chunk-734OB5SK.js} +721 -8
  51. package/dist/{chunk-Q2Q34NF3.js → chunk-77QI552M.js} +6 -6
  52. package/dist/{chunk-WKX5AMOY.js → chunk-7I74JWPW.js} +3 -3
  53. package/dist/{chunk-5FSKKMR7.cjs → chunk-7IDJDMPU.cjs} +232 -4
  54. package/dist/chunk-7VBKRGIZ.cjs +847 -0
  55. package/dist/{chunk-KCPHASCO.js → chunk-AATYYLYK.js} +5 -5
  56. package/dist/{chunk-WFKVS2K4.cjs → chunk-AUZRKIHQ.cjs} +1101 -55
  57. package/dist/{chunk-DTGBOSEM.cjs → chunk-AWXFEAQL.cjs} +12 -12
  58. package/dist/{chunk-THCK6ECW.js → chunk-B3CWTCK2.js} +231 -3
  59. package/dist/chunk-BCP4E7MD.cjs +997 -0
  60. package/dist/chunk-BG7RPYJP.js +91 -0
  61. package/dist/{chunk-VF257YKO.js → chunk-BP4KTMLY.js} +117 -5
  62. package/dist/{chunk-YN6IETRZ.js → chunk-BQJ3YBF3.js} +6424 -987
  63. package/dist/{chunk-KOUAQL2B.cjs → chunk-CANAL6CT.cjs} +1569 -168
  64. package/dist/{chunk-FDSGHPAK.js → chunk-CBSDJF3B.js} +3 -3
  65. package/dist/{chunk-FEWUHQNM.cjs → chunk-CFVK26P4.cjs} +4 -4
  66. package/dist/{chunk-M7K4LE66.cjs → chunk-CI33NINL.cjs} +4 -4
  67. package/dist/{chunk-2OWDB4FB.js → chunk-CKV5NYAE.js} +6 -6
  68. package/dist/{chunk-LPS5AMQD.cjs → chunk-CM4NHXVO.cjs} +24 -24
  69. package/dist/chunk-D3HSRXYB.js +115 -0
  70. package/dist/{chunk-FNHJRI32.js → chunk-DBH3D2MU.js} +1561 -160
  71. package/dist/{chunk-GW3LKD5C.js → chunk-DJNH4HFW.js} +3 -3
  72. package/dist/{chunk-2GCNOI2U.cjs → chunk-DN6F4DHH.cjs} +9 -3
  73. package/dist/chunk-DQRJ5RJG.js +432 -0
  74. package/dist/{chunk-C7ZBSV2Q.js → chunk-DUG3OQAS.js} +106 -43
  75. package/dist/chunk-ECUYJOJ2.cjs +199 -0
  76. package/dist/chunk-EEMTCAK7.js +182 -0
  77. package/dist/{chunk-3SKLAUDD.cjs → chunk-EI3J6LTW.cjs} +359 -581
  78. package/dist/{chunk-SSSN7VAM.js → chunk-EM2OGPYE.js} +4 -4
  79. package/dist/{chunk-56VOWURB.cjs → chunk-ENZCIQZC.cjs} +522 -453
  80. package/dist/chunk-ESBXUYOC.cjs +836 -0
  81. package/dist/{chunk-L5U4W6JC.js → chunk-ESSEF6U2.js} +4 -4
  82. package/dist/chunk-ET3AN4W3.js +824 -0
  83. package/dist/chunk-EXKSFGSX.cjs +14 -14
  84. package/dist/{chunk-I76GIKN7.cjs → chunk-F3YT6GUF.cjs} +17 -17
  85. package/dist/{chunk-WRWEX5ZF.js → chunk-F75DZBBI.js} +3 -3
  86. package/dist/{chunk-4JGRWHZJ.js → chunk-FG6PYGIZ.js} +12 -6
  87. package/dist/chunk-FGGJQRLZ.js +14 -14
  88. package/dist/{chunk-SXOSDZD6.js → chunk-FWCHPCD4.js} +128 -10
  89. package/dist/{chunk-XW6IXEQH.cjs → chunk-G35CAQ7I.cjs} +5 -5
  90. package/dist/{chunk-7VMGP2FW.js → chunk-G6KACNMO.js} +132 -188
  91. package/dist/{chunk-FJPADH77.cjs → chunk-GAWJJAGT.cjs} +6 -6
  92. package/dist/chunk-GGR7QUKK.cjs +4724 -0
  93. package/dist/chunk-GIBF4BHH.js +14098 -0
  94. package/dist/{chunk-AWB7QYY6.cjs → chunk-GILYQ5VH.cjs} +6 -6
  95. package/dist/{chunk-FWVYAMNW.cjs → chunk-GKFCHGCM.cjs} +4 -4
  96. package/dist/{chunk-Y3ZFVUUU.js → chunk-GLEJ2TLS.js} +3 -3
  97. package/dist/{chunk-3GWWJT7L.js → chunk-GP3OKSKT.js} +13 -13
  98. package/dist/chunk-GTIPOEHN.js +196 -0
  99. package/dist/{chunk-LMJ5EBV7.cjs → chunk-GZPUA2TL.cjs} +16 -15
  100. package/dist/{chunk-IELX2OKI.js → chunk-H4LJ4HEA.js} +3 -115
  101. package/dist/{chunk-ACVWFGBI.cjs → chunk-HCX4SMFK.cjs} +3 -3
  102. package/dist/{chunk-HYNTS5CP.js → chunk-HHRZ6STP.js} +24 -2
  103. package/dist/chunk-HIDEIEFG.js +48 -0
  104. package/dist/{chunk-W6RW64BB.cjs → chunk-HSWBIDZM.cjs} +228 -5
  105. package/dist/{chunk-GSOUNWEL.js → chunk-HVX7QQYK.js} +1035 -1616
  106. package/dist/{chunk-TRCGG42I.cjs → chunk-IFW5IW4L.cjs} +6502 -1019
  107. package/dist/{chunk-F5LKJ6F5.cjs → chunk-IJU6AS67.cjs} +32 -28
  108. package/dist/{chunk-TVANHNJ7.js → chunk-IK6Z2HNC.js} +173 -3
  109. package/dist/{chunk-QGMUTVVH.cjs → chunk-IS7NTKY5.cjs} +20 -20
  110. package/dist/{chunk-YFVQWSNJ.js → chunk-IXWGYWH6.js} +3 -3
  111. package/dist/chunk-J2DAS2PL.js +148 -0
  112. package/dist/chunk-JBQXZIWB.js +148 -0
  113. package/dist/chunk-JBYBMBMW.js +261 -0
  114. package/dist/{chunk-LWUOUCYL.js → chunk-JEJ7TT54.js} +5 -5
  115. package/dist/{chunk-DUCB6LGL.js → chunk-JOTCTHN5.js} +211 -5
  116. package/dist/{chunk-47RUFYKR.js → chunk-K56UVEXV.js} +3 -3
  117. package/dist/{chunk-XSFNHP2E.js → chunk-KB26H447.js} +3 -3
  118. package/dist/{chunk-3NGDZZR4.js → chunk-KEYG7HGY.js} +430 -37
  119. package/dist/{chunk-DY72BMU5.js → chunk-KFVNCW4Q.js} +4 -4
  120. package/dist/chunk-KPGC7SK2.js +192 -0
  121. package/dist/chunk-KROXXBK5.cjs +53 -0
  122. package/dist/{chunk-ZPZAVHXL.cjs → chunk-LB3ZZMKT.cjs} +137 -19
  123. package/dist/chunk-LDYZWNJW.cjs +1654 -0
  124. package/dist/{chunk-ULMSSHCJ.cjs → chunk-LMB555QB.cjs} +405 -38
  125. package/dist/{chunk-CBJY23VL.js → chunk-MD4IVS42.js} +3 -3
  126. package/dist/{chunk-VMLKSV26.js → chunk-MDDWEBCX.js} +226 -3
  127. package/dist/chunk-MUWH4QK5.cjs +94 -0
  128. package/dist/{chunk-T6W3Z3SH.cjs → chunk-N2ILK7BF.cjs} +4 -4
  129. package/dist/{chunk-6EX3I5P4.cjs → chunk-N74QRJGP.cjs} +6 -6
  130. package/dist/chunk-NFFHLX37.cjs +132 -0
  131. package/dist/chunk-NJSYWX7H.js +190 -0
  132. package/dist/{chunk-SH5PPVK7.cjs → chunk-NQN5LFN4.cjs} +165 -221
  133. package/dist/chunk-NTQRFOPP.cjs +56 -0
  134. package/dist/{chunk-YFWRJW4B.js → chunk-NWMJPTVL.js} +51 -55
  135. package/dist/{chunk-63ZGNR2T.cjs → chunk-OC6GV5QH.cjs} +42 -42
  136. package/dist/{chunk-7E7GCQCK.js → chunk-OG3MBHM3.js} +9 -3
  137. package/dist/chunk-OMNHTCS4.cjs +264 -0
  138. package/dist/chunk-OQXB6NNC.cjs +117 -0
  139. package/dist/{chunk-Y57W2CT5.cjs → chunk-OV46CCA2.cjs} +51 -55
  140. package/dist/{chunk-6PRZIHGL.cjs → chunk-OV6HHKLE.cjs} +21 -266
  141. package/dist/{chunk-C37BHB7N.cjs → chunk-P26YYPOO.cjs} +5 -5
  142. package/dist/{chunk-2BZHWUSR.cjs → chunk-P7JEKJTZ.cjs} +16 -16
  143. package/dist/{chunk-NGBXXZLL.cjs → chunk-PDXX5UI4.cjs} +45 -45
  144. package/dist/{chunk-FHQFPYV4.js → chunk-PJFTTSKE.js} +8 -7
  145. package/dist/{chunk-GVFJ6T4S.cjs → chunk-PVODJEJ7.cjs} +721 -8
  146. package/dist/{chunk-ZZ7RO2UQ.js → chunk-Q265VZJ4.js} +3 -3
  147. package/dist/{chunk-E7JP3BS3.cjs → chunk-Q47JEE2C.cjs} +4 -4
  148. package/dist/chunk-QBY7LRN2.js +281 -0
  149. package/dist/{chunk-Z6PMDS4G.js → chunk-QDQWKSU3.js} +1090 -53
  150. package/dist/{chunk-GH6C2QGW.cjs → chunk-QEDMOGF3.cjs} +857 -16
  151. package/dist/{chunk-5WUNN6ZN.cjs → chunk-QHSAVOOL.cjs} +24 -2
  152. package/dist/chunk-QJNCDVYM.cjs +137 -0
  153. package/dist/chunk-QM7FJB5W.js +4717 -0
  154. package/dist/chunk-QQFB4RT2.cjs +448 -0
  155. package/dist/chunk-QSYBHQAD.cjs +196 -0
  156. package/dist/{chunk-UGXHYIWT.cjs → chunk-QUJ3ZB55.cjs} +28 -28
  157. package/dist/{chunk-2YSNA2F2.cjs → chunk-QVJMDVYZ.cjs} +5 -5
  158. package/dist/chunk-RAJMAX6D.js +131 -0
  159. package/dist/{chunk-VVKVQZI6.js → chunk-RAN3ECAS.js} +3 -3
  160. package/dist/chunk-RKGUZBOC.js +79 -0
  161. package/dist/{chunk-HLFDZ35S.cjs → chunk-RRQIAJLQ.cjs} +8 -8
  162. package/dist/{chunk-PABONWKI.js → chunk-RXQNRZ5F.js} +3 -3
  163. package/dist/{chunk-7ZHYEITD.cjs → chunk-S4O7CFHQ.cjs} +10 -11
  164. package/dist/chunk-SE7ANBGN.js +128 -0
  165. package/dist/{chunk-X2AVEAZM.cjs → chunk-SJIRCTIS.cjs} +176 -2
  166. package/dist/{chunk-WXQ57LAO.js → chunk-SQXAZHDG.js} +4 -4
  167. package/dist/chunk-SR73L5ZP.cjs +84 -0
  168. package/dist/{chunk-OABEO6HH.js → chunk-SZOLTWWD.js} +2349 -214
  169. package/dist/{chunk-5JEU52DW.js → chunk-TPZ3BN2D.js} +3 -3
  170. package/dist/{chunk-QFU53KRH.js → chunk-TSTFYGGX.js} +4 -5
  171. package/dist/{chunk-EBS32AJI.cjs → chunk-TZCFKZ6Z.cjs} +5 -5
  172. package/dist/chunk-UCVZXQ63.js +724 -0
  173. package/dist/chunk-UGQ3QNV6.js +992 -0
  174. package/dist/chunk-UNMVGZVW.js +142 -0
  175. package/dist/{chunk-TEVX443G.js → chunk-UTUD6GJI.js} +178 -6
  176. package/dist/chunk-UXBYA7DV.cjs +155 -0
  177. package/dist/chunk-V6GXFSK7.cjs +443 -0
  178. package/dist/chunk-VHORVGCG.cjs +761 -0
  179. package/dist/{chunk-B4EKV6HQ.js → chunk-VKCTYLDN.js} +500 -442
  180. package/dist/{chunk-O3MGZDCT.cjs → chunk-VTEXJOSD.cjs} +63 -63
  181. package/dist/chunk-VVAAZITA.cjs +287 -0
  182. package/dist/{chunk-V7AKE5VT.cjs → chunk-W2GA3EQB.cjs} +435 -42
  183. package/dist/chunk-W4GABFCR.js +37 -0
  184. package/dist/chunk-WKEK4NCA.js +490 -0
  185. package/dist/{chunk-5A4TCHOC.cjs → chunk-WNYXT4TE.cjs} +4 -4
  186. package/dist/{chunk-S762UEV5.js → chunk-WTH23ISI.js} +6 -6
  187. package/dist/{chunk-BTKZGHAV.js → chunk-WWNCM473.js} +10 -6
  188. package/dist/{chunk-7X5PNIQJ.js → chunk-X3YFRH6K.js} +27 -25
  189. package/dist/{chunk-4YNYPHH3.cjs → chunk-X75H75UY.cjs} +2351 -213
  190. package/dist/{chunk-LYJJI7ZK.cjs → chunk-XCUDDFKC.cjs} +216 -9
  191. package/dist/chunk-YAO4HPJL.cjs +120 -0
  192. package/dist/chunk-YKY2JBER.cjs +9443 -0
  193. package/dist/chunk-YP5CHEYU.cjs +154 -0
  194. package/dist/{chunk-WRNEH5MO.js → chunk-YW3I2FQL.js} +18 -7
  195. package/dist/{chunk-BRNUPDHJ.js → chunk-Z557DVYN.js} +386 -19
  196. package/dist/{chunk-VSACG2AR.js → chunk-Z6LZUYZF.js} +21 -264
  197. package/dist/chunk-ZHPMP447.cjs +43 -0
  198. package/dist/{chunk-LODTHGST.cjs → chunk-ZK7KX5CD.cjs} +133 -70
  199. package/dist/{chunk-CCPSNT6B.cjs → chunk-ZRPALBQB.cjs} +5 -5
  200. package/dist/chunk-ZVFHPMC5.js +824 -0
  201. package/dist/chunk-ZVQMKUGJ.js +443 -0
  202. package/dist/cli/holoscript-runner.cjs +86 -48
  203. package/dist/cli/holoscript-runner.js +54 -16
  204. package/dist/codebase/index.cjs +1 -1
  205. package/dist/codebase/index.js +1 -1
  206. package/dist/compiler/agent-inference.cjs +11 -11
  207. package/dist/compiler/agent-inference.js +9 -6
  208. package/dist/compiler/android-xr.cjs +13 -12
  209. package/dist/compiler/android-xr.js +11 -10
  210. package/dist/compiler/android.cjs +12 -12
  211. package/dist/compiler/android.js +10 -10
  212. package/dist/compiler/business-quest.cjs +10 -10
  213. package/dist/compiler/business-quest.js +2 -2
  214. package/dist/compiler/coco.cjs +1 -1
  215. package/dist/compiler/coco.js +1 -1
  216. package/dist/compiler/context.cjs +9 -9
  217. package/dist/compiler/context.js +6 -6
  218. package/dist/compiler/daimon-seed.cjs +36 -0
  219. package/dist/compiler/daimon-seed.js +12 -0
  220. package/dist/compiler/domain-block-utils.cjs +205 -156
  221. package/dist/compiler/domain-block-utils.js +8 -7
  222. package/dist/compiler/dtdl.cjs +10 -10
  223. package/dist/compiler/dtdl.js +7 -7
  224. package/dist/compiler/gltf-pipeline.cjs +9 -9
  225. package/dist/compiler/gltf-pipeline.js +2 -2
  226. package/dist/compiler/godot.cjs +10 -9
  227. package/dist/compiler/godot.js +9 -8
  228. package/dist/compiler/incremental.cjs +11 -11
  229. package/dist/compiler/incremental.js +6 -6
  230. package/dist/compiler/index.cjs +2585 -3273
  231. package/dist/compiler/index.d.ts +149 -35
  232. package/dist/compiler/index.js +2197 -3102
  233. package/dist/compiler/ios.cjs +11 -11
  234. package/dist/compiler/ios.js +9 -9
  235. package/dist/compiler/llm-provider-capabilities.cjs +9 -9
  236. package/dist/compiler/llm-provider-capabilities.js +6 -6
  237. package/dist/compiler/nodetoy.cjs +1 -1
  238. package/dist/compiler/nodetoy.js +1 -1
  239. package/dist/compiler/openxr.cjs +11 -10
  240. package/dist/compiler/openxr.js +10 -9
  241. package/dist/compiler/remotion.cjs +1 -1
  242. package/dist/compiler/remotion.js +1 -1
  243. package/dist/compiler/reproducibility.cjs +1 -1
  244. package/dist/compiler/reproducibility.js +1 -1
  245. package/dist/compiler/sdf.cjs +11 -10
  246. package/dist/compiler/sdf.js +9 -8
  247. package/dist/compiler/semantic-scene.cjs +7 -7
  248. package/dist/compiler/semantic-scene.js +2 -2
  249. package/dist/compiler/state.cjs +9 -9
  250. package/dist/compiler/state.js +7 -7
  251. package/dist/compiler/trait-composition.cjs +11 -11
  252. package/dist/compiler/trait-composition.js +7 -7
  253. package/dist/compiler/traits/ProvenanceSemiring.d.ts +167 -0
  254. package/dist/compiler/traits/Semiring.d.ts +26 -0
  255. package/dist/compiler/unity.cjs +11 -10
  256. package/dist/compiler/unity.js +10 -9
  257. package/dist/compiler/unreal.cjs +12 -11
  258. package/dist/compiler/unreal.js +10 -9
  259. package/dist/compiler/urdf.cjs +18 -17
  260. package/dist/compiler/urdf.js +9 -8
  261. package/dist/compiler/usd-physics.cjs +11 -10
  262. package/dist/compiler/usd-physics.js +8 -7
  263. package/dist/compiler/visionos.cjs +11 -10
  264. package/dist/compiler/visionos.js +10 -9
  265. package/dist/compiler/vrchat.cjs +11 -10
  266. package/dist/compiler/vrchat.js +9 -8
  267. package/dist/compiler/wasm.cjs +14 -13
  268. package/dist/compiler/wasm.js +9 -8
  269. package/dist/compiler/webgpu.cjs +10 -9
  270. package/dist/compiler/webgpu.js +9 -8
  271. package/dist/constants.cjs +398 -0
  272. package/dist/constants.js +9 -0
  273. package/dist/coordinators/index.cjs +4 -1
  274. package/dist/coordinators/index.js +4 -1
  275. package/dist/debugger.cjs +11 -9
  276. package/dist/debugger.js +9 -7
  277. package/dist/{dist-ACXG6IH5.cjs → dist-GRMOP2UL.cjs} +341 -65
  278. package/dist/{dist-VD4L6V7Q.js → dist-ZBUKU2JG.js} +333 -63
  279. package/dist/entries/interop.cjs +23 -23
  280. package/dist/entries/interop.js +3 -3
  281. package/dist/entries/scripting.cjs +12 -11
  282. package/dist/entries/scripting.js +8 -7
  283. package/dist/evolution/index.cjs +66 -0
  284. package/dist/evolution/index.d.ts +162 -0
  285. package/dist/evolution/index.js +17 -0
  286. package/dist/hololand/index.cjs +41 -37
  287. package/dist/hololand/index.js +3 -3
  288. package/dist/index.cjs +12394 -3224
  289. package/dist/index.d.ts +260 -18
  290. package/dist/index.js +10755 -2182
  291. package/dist/keyword-registry/PluginKeywordRegistry.d.ts +138 -0
  292. package/dist/keyword-registry/index.cjs +29 -0
  293. package/dist/keyword-registry/index.d.ts +1 -0
  294. package/dist/keyword-registry/index.js +4 -0
  295. package/dist/math/tropical-spmv.cjs +11 -11
  296. package/dist/math/tropical-spmv.d.ts +1 -0
  297. package/dist/math/tropical-spmv.js +2 -2
  298. package/dist/math/tropicalSpmv.d.ts +43 -0
  299. package/dist/math/vec3.cjs +1 -1
  300. package/dist/math/vec3.js +1 -1
  301. package/dist/matter/StagedMatter.d.ts +82 -0
  302. package/dist/matter/index.cjs +17 -0
  303. package/dist/matter/index.d.ts +1 -0
  304. package/dist/matter/index.js +4 -0
  305. package/dist/{ml-dsa-Z7JDKW4L.js → ml-dsa-J6VKVT4K.js} +3 -3
  306. package/dist/{ml-dsa-FSKBTE3W.cjs → ml-dsa-MTIK4ZUQ.cjs} +23 -23
  307. package/dist/paper-0c-spike/index.cjs +1 -1
  308. package/dist/paper-0c-spike/index.js +1 -1
  309. package/dist/parameter-envelope/ParameterEnvelope.d.ts +128 -0
  310. package/dist/parameter-envelope/index.cjs +17 -0
  311. package/dist/parameter-envelope/index.d.ts +2 -0
  312. package/dist/parameter-envelope/index.js +4 -0
  313. package/dist/parser/HoloCompositionTypes.d.ts +2013 -0
  314. package/dist/parser/PipelineParser.d.ts +162 -0
  315. package/dist/parser.cjs +36 -20
  316. package/dist/parser.js +13 -9
  317. package/dist/plugin-manifest/ManifestAutoLoader.d.ts +35 -0
  318. package/dist/plugin-manifest/PluginManifest.d.ts +156 -0
  319. package/dist/plugin-manifest/index.cjs +25 -0
  320. package/dist/plugin-manifest/index.d.ts +2 -0
  321. package/dist/plugin-manifest/index.js +4 -0
  322. package/dist/plugin-solver-contract/PluginSolverContract.d.ts +288 -0
  323. package/dist/plugin-solver-contract/index.cjs +41 -0
  324. package/dist/plugin-solver-contract/index.d.ts +1 -0
  325. package/dist/plugin-solver-contract/index.js +4 -0
  326. package/dist/policy/ContentPolicyGate.d.ts +51 -0
  327. package/dist/policy/PolicyPack.d.ts +120 -0
  328. package/dist/policy/blocklist.d.ts +32 -0
  329. package/dist/policy/defaults.d.ts +44 -0
  330. package/dist/policy/index.cjs +106 -0
  331. package/dist/policy/index.d.ts +17 -0
  332. package/dist/policy/index.js +5 -0
  333. package/dist/policy/jsonLogic.d.ts +31 -0
  334. package/dist/policy/types.d.ts +174 -0
  335. package/dist/proof-composition/ProofCompositionLaw.d.ts +93 -0
  336. package/dist/proof-composition/index.cjs +25 -0
  337. package/dist/proof-composition/index.d.ts +1 -0
  338. package/dist/proof-composition/index.js +4 -0
  339. package/dist/receipts/hash-policy.d.ts +85 -0
  340. package/dist/reconstruction/index.cjs +75 -47
  341. package/dist/reconstruction/index.js +5 -5
  342. package/dist/runtime/plugin-trait-registrar.d.ts +36 -0
  343. package/dist/runtime.cjs +81 -79
  344. package/dist/runtime.js +9 -7
  345. package/dist/scene-presets-EDKYZ5GW.js +4 -0
  346. package/dist/scene-presets-NCW2CFRS.cjs +17 -0
  347. package/dist/self-improvement/index.cjs +1 -1
  348. package/dist/self-improvement/index.js +1 -1
  349. package/dist/{src-PT2FERDV.cjs → src-G3D7ZATQ.cjs} +545 -21
  350. package/dist/{src-J6CM4AUR.js → src-UXYA7HM6.js} +539 -16
  351. package/dist/storage/index.cjs +10 -10
  352. package/dist/storage/index.js +3 -3
  353. package/dist/testing.cjs +1 -1
  354. package/dist/testing.js +1 -1
  355. package/dist/tools/index.cjs +3631 -0
  356. package/dist/tools/index.js +3581 -0
  357. package/dist/traitDocs/traitDocs.cjs +9 -9
  358. package/dist/traitDocs/traitDocs.d.ts +1 -0
  359. package/dist/traitDocs/traitDocs.js +3 -3
  360. package/dist/traits/ControlLoopTrait.d.ts +154 -0
  361. package/dist/traits/KinematicChainTrait.d.ts +116 -0
  362. package/dist/traits/SensorSamplingTrait.d.ts +154 -0
  363. package/dist/traits/TraitTypes.d.ts +270 -0
  364. package/dist/traits/TransactionTrait.d.ts +121 -0
  365. package/dist/traits/botanical-lotus.cjs +54 -50
  366. package/dist/traits/botanical-lotus.js +2 -5
  367. package/dist/traits/control-loop.cjs +21 -0
  368. package/dist/traits/control-loop.d.ts +1 -0
  369. package/dist/traits/control-loop.js +4 -0
  370. package/dist/traits/engines/cloth-verlet.d.ts +65 -0
  371. package/dist/traits/engines/index.cjs +19 -19
  372. package/dist/traits/engines/index.d.ts +15 -275
  373. package/dist/traits/engines/index.js +3 -3
  374. package/dist/traits/engines/motion-data-schema.d.ts +119 -0
  375. package/dist/traits/engines/motion-matching.d.ts +102 -0
  376. package/dist/traits/engines/noise.d.ts +25 -0
  377. package/dist/traits/engines/onnx-adapter.d.ts +173 -0
  378. package/dist/traits/engines/onnx-motion-matching.d.ts +163 -0
  379. package/dist/traits/engines/pfnn-network.d.ts +92 -0
  380. package/dist/traits/engines/synthetic-walk-cycle.d.ts +38 -0
  381. package/dist/traits/engines/tensor-ops.d.ts +15 -0
  382. package/dist/traits/index.cjs +2789 -1259
  383. package/dist/traits/index.d.ts +35 -0
  384. package/dist/traits/index.js +1692 -411
  385. package/dist/traits/kinematic-chain.cjs +25 -0
  386. package/dist/traits/kinematic-chain.d.ts +1 -0
  387. package/dist/traits/kinematic-chain.js +4 -0
  388. package/dist/traits/sensor-sampling.cjs +33 -0
  389. package/dist/traits/sensor-sampling.d.ts +1 -0
  390. package/dist/traits/sensor-sampling.js +4 -0
  391. package/dist/traits/simulation-solver-factory.cjs +1 -1
  392. package/dist/traits/simulation-solver-factory.js +1 -1
  393. package/dist/traits/transaction.cjs +29 -0
  394. package/dist/traits/transaction.d.ts +1 -0
  395. package/dist/traits/transaction.js +4 -0
  396. package/dist/traits/webcam-gaze.cjs +1 -1
  397. package/dist/traits/webcam-gaze.js +1 -1
  398. package/dist/type-checker.cjs +7 -6
  399. package/dist/type-checker.js +5 -4
  400. package/dist/types/AdvancedTypeSystem.d.ts +489 -0
  401. package/dist/types/HoloScriptPlus.d.ts +810 -0
  402. package/dist/types/base.d.ts +248 -0
  403. package/dist/types.d.ts +799 -0
  404. package/dist/world/index.cjs +3 -4
  405. package/dist/world/index.js +3 -4
  406. package/dist/world-model/index.cjs +1 -1
  407. package/dist/world-model/index.js +1 -1
  408. package/dist/wot/index.cjs +1 -1
  409. package/dist/wot/index.js +1 -1
  410. package/package.json +113 -46
  411. package/dist/GLTFPipeline-3EJLL3TS.cjs +0 -38
  412. package/dist/GLTFPipeline-3OWJV2VK.js +0 -17
  413. package/dist/HoloScriptPlusParser-ADWRY5OS.cjs +0 -698
  414. package/dist/HoloScriptPlusParser-JLJDXHSC.js +0 -693
  415. package/dist/HoloScriptPlusParser-QCGFPWIL.cjs +0 -27
  416. package/dist/HoloScriptPlusParser-WENAFEFV.js +0 -10
  417. package/dist/HoloScriptRuntime-GGRVEU4T.cjs +0 -19
  418. package/dist/HoloScriptRuntime-GJK6VJPH.js +0 -10
  419. package/dist/chunk-22Q5A6RV.js +0 -979
  420. package/dist/chunk-4C57PR42.js +0 -468
  421. package/dist/chunk-4W5G5QVL.cjs +0 -847
  422. package/dist/chunk-5ET6L4NS.js +0 -487
  423. package/dist/chunk-C4GSLCHE.cjs +0 -7153
  424. package/dist/chunk-F2G6CWFT.js +0 -7089
  425. package/dist/chunk-G6PNEASF.cjs +0 -814
  426. package/dist/chunk-GTA4Q3A3.js +0 -1491
  427. package/dist/chunk-HCCQLAA4.cjs +0 -74
  428. package/dist/chunk-HFSVMKM3.cjs +0 -72
  429. package/dist/chunk-KAIVDEIG.cjs +0 -4539
  430. package/dist/chunk-KQU64CIX.cjs +0 -1508
  431. package/dist/chunk-MSYSQ2AJ.js +0 -4533
  432. package/dist/chunk-NHJLP37F.js +0 -70
  433. package/dist/chunk-NHYRRAGI.cjs +0 -490
  434. package/dist/chunk-OIQYIIO3.cjs +0 -473
  435. package/dist/chunk-OL46QLBJ.js +0 -61
  436. package/dist/chunk-SKZPC5AG.cjs +0 -984
  437. package/dist/chunk-SLHLXUMO.js +0 -445
  438. package/dist/chunk-UOIGFQXC.cjs +0 -9750
  439. package/dist/chunk-UOL6Y5TD.cjs +0 -759
  440. package/dist/chunk-UVFI7XIR.cjs +0 -452
  441. package/dist/chunk-VEPGBETF.js +0 -844
  442. package/dist/chunk-XQ5MWMP2.js +0 -756
  443. package/dist/chunk-XT6JY5W5.js +0 -9684
  444. package/dist/chunk-YRRAUB35.js +0 -811
  445. package/dist/compiler/GasOptimizationAnalyzer.d.ts +0 -73
  446. package/dist/compiler/NFTMarketplaceCompiler.d.ts +0 -23
  447. package/dist/compiler/ar.cjs +0 -23
  448. package/dist/compiler/ar.js +0 -11
  449. package/dist/compiler/babylon.cjs +0 -21
  450. package/dist/compiler/babylon.js +0 -15
  451. package/dist/compiler/multi-layer.cjs +0 -24
  452. package/dist/compiler/multi-layer.js +0 -15
  453. package/dist/compiler/playcanvas.cjs +0 -19
  454. package/dist/compiler/playcanvas.js +0 -13
  455. package/dist/compiler/r3f.cjs +0 -39
  456. package/dist/compiler/r3f.d.ts +0 -22
  457. package/dist/compiler/r3f.js +0 -17
  458. package/dist/compiler/vrr.cjs +0 -24
  459. package/dist/compiler/vrr.js +0 -12
  460. package/dist/parser/NFTMarketplaceTypes.d.ts +0 -191
  461. package/dist/playwright-3AT3AKTV.cjs +0 -98673
  462. package/dist/playwright-VZPDVUEQ.js +0 -98660
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkILRBGFVD_cjs = require('./chunk-ILRBGFVD.cjs');
4
+ var chunkNTQRFOPP_cjs = require('./chunk-NTQRFOPP.cjs');
4
5
 
5
6
  // src/HoloScriptPersistenceParser.ts
6
7
  var HoloScriptPersistenceParser = class {
@@ -145,8 +146,10 @@ var CODE_SECURITY_CONFIG = {
145
146
  "__proto__",
146
147
  "fs",
147
148
  "child_process",
148
- "exec",
149
- "spawn"
149
+ "exec"
150
+ // NOTE: 'spawn' is intentionally excluded — it is a valid .hs game-logic keyword
151
+ // (MMO entity spawn rules). The security gate uses word-boundary regex, so
152
+ // node-API 'spawn' from child_process cannot slip through via game code anyway.
150
153
  ]
151
154
  };
152
155
  function stripCommentsAndStrings(code) {
@@ -305,11 +308,41 @@ var HoloScriptCodeParser = class {
305
308
  "on_collision",
306
309
  "on_enter",
307
310
  "on_exit",
311
+ // Domain-neutral interaction / lifecycle reaction triggers
312
+ "on_grab",
313
+ "on_release",
314
+ "on_use",
315
+ "on_hover",
316
+ "on_proximity",
317
+ "on_signal",
318
+ "on_input",
319
+ "on_tick",
320
+ // Movement statement clause keywords (`move x to [..] over 2 via glide`)
321
+ "over",
322
+ "via",
323
+ "easing",
324
+ // Movement reaction triggers (routes to ReactionCategory 'movement').
325
+ // Sourced from the locomotion SSOT so the keyword set and reactionCategory()
326
+ // share exactly one list — never edit these names in two places.
327
+ ...chunkNTQRFOPP_cjs.LOCOMOTION_REACTION_TRIGGERS,
308
328
  "using",
309
329
  "memory",
310
330
  "semantic",
311
331
  "episodic",
312
- "procedural"
332
+ "procedural",
333
+ "pcg_graph",
334
+ "density_filter",
335
+ "slope_mask",
336
+ "snap_to_terrain",
337
+ // MMO / game-logic keywords (Phase: game-logic constructs)
338
+ "ability",
339
+ "loot_table",
340
+ "authority",
341
+ "on_combat",
342
+ "on_death",
343
+ "on_spawn",
344
+ "on_cast"
345
+ // 'spawn' already present above (line ~304); Set deduplicates, listed here for readability
313
346
  ]);
314
347
  }
315
348
  /**
@@ -770,6 +803,48 @@ var HoloScriptCodeParser = class {
770
803
  return this.parseZone();
771
804
  case "memory":
772
805
  return this.parseMemory();
806
+ // MMO / game-logic constructs
807
+ case "ability":
808
+ return this.parseAbility();
809
+ case "loot_table":
810
+ return this.parseLootTable();
811
+ case "spawn":
812
+ return this.parseSpawnRule();
813
+ case "authority":
814
+ return this.parseAuthorityBlock();
815
+ // Reactions — domain-neutral event blocks. Combat triggers kept for
816
+ // back-compat; interaction & lifecycle triggers generalize the layer.
817
+ case "on_combat":
818
+ case "on_death":
819
+ case "on_spawn":
820
+ case "on_cast":
821
+ case "on_interact":
822
+ case "on_collision":
823
+ case "on_proximity":
824
+ case "on_grab":
825
+ case "on_release":
826
+ case "on_use":
827
+ case "on_hover":
828
+ case "on_enter":
829
+ case "on_exit":
830
+ case "on_signal":
831
+ case "on_input":
832
+ case "on_tick":
833
+ // Movement reactions
834
+ case "on_move":
835
+ case "on_walk":
836
+ case "on_run":
837
+ case "on_jump":
838
+ case "on_land":
839
+ case "on_strafe":
840
+ case "on_teleport":
841
+ return this.parseGameEventBlock();
842
+ // Movements — first-class movement statement (serves F.118 VR locomotion)
843
+ case "move":
844
+ return this.parseMove();
845
+ // Actions — domain-neutral verb declaration (general form of `ability`)
846
+ case "action":
847
+ return this.parseActionDecl();
773
848
  default:
774
849
  return this.parseExpressionStatement();
775
850
  }
@@ -971,19 +1046,19 @@ var HoloScriptCodeParser = class {
971
1046
  position: [0, 0, 0]
972
1047
  };
973
1048
  }
974
- const exports$1 = [];
1049
+ const exports = [];
975
1050
  if (this.check("punctuation", "{")) {
976
1051
  this.advance();
977
1052
  while (!this.check("punctuation", "}") && this.position < this.tokens.length) {
978
1053
  const name = this.expectIdentifier();
979
- if (name) exports$1.push(name);
1054
+ if (name) exports.push(name);
980
1055
  if (this.check("punctuation", ",")) this.advance();
981
1056
  }
982
1057
  this.expect("punctuation", "}");
983
1058
  }
984
1059
  return {
985
1060
  type: "export",
986
- exports: exports$1,
1061
+ exports,
987
1062
  position: [0, 0, 0]
988
1063
  };
989
1064
  }
@@ -1144,6 +1219,41 @@ var HoloScriptCodeParser = class {
1144
1219
  const bindings = this.parseBindingsBlock();
1145
1220
  return { type: "bindings", bindings };
1146
1221
  }
1222
+ const GAME_LOGIC_ANNOTATIONS = /* @__PURE__ */ new Set([
1223
+ "server_side",
1224
+ "client_side",
1225
+ "replicated",
1226
+ "cooldown",
1227
+ "mana_cost",
1228
+ "damage_type",
1229
+ "drop_chance",
1230
+ // Ability-stat annotations carrying an inline value (e.g. `@range 30`,
1231
+ // `@gcd 1.5s`, `@cast_time 2s`, `@authority server`).
1232
+ "range",
1233
+ "gcd",
1234
+ "cast_time",
1235
+ "authority",
1236
+ "authority_envelope"
1237
+ ]);
1238
+ if (GAME_LOGIC_ANNOTATIONS.has(name)) {
1239
+ let value;
1240
+ const next = this.currentToken();
1241
+ if (next && next.type !== "newline" && next.value !== "{" && next.value !== "}") {
1242
+ let raw = "";
1243
+ while (this.position < this.tokens.length) {
1244
+ const t = this.currentToken();
1245
+ if (!t || t.type === "newline" || t.value === ";" || t.value === "{") break;
1246
+ raw += t.value;
1247
+ this.advance();
1248
+ }
1249
+ value = raw.trim() || void 0;
1250
+ }
1251
+ return {
1252
+ type: "trait",
1253
+ name,
1254
+ config: value !== void 0 ? { value } : {}
1255
+ };
1256
+ }
1147
1257
  if (name.startsWith("on_")) {
1148
1258
  let body = "";
1149
1259
  if (this.check("punctuation", "{")) {
@@ -2070,6 +2180,609 @@ var HoloScriptCodeParser = class {
2070
2180
  /**
2071
2181
  * Parse generic expression statement (e.g. function call or assignment)
2072
2182
  */
2183
+ // ===========================================================================
2184
+ // MMO / GAME-LOGIC PARSERS
2185
+ // ===========================================================================
2186
+ /**
2187
+ * Parse ability declaration.
2188
+ *
2189
+ * Syntax:
2190
+ * ability <name> {
2191
+ * @cooldown 5s
2192
+ * @mana_cost 30
2193
+ * @damage_type fire
2194
+ * @range 30
2195
+ * on_cast(target) { ... }
2196
+ * on_hit { ... }
2197
+ * on_miss { ... }
2198
+ * <key>: <value>
2199
+ * }
2200
+ *
2201
+ * Compiles to a generic `game-ability` AST node. The downstream compiler maps
2202
+ * this to CombatAbilityTrait handler entries.
2203
+ */
2204
+ parseAbility() {
2205
+ this.expect("keyword", "ability");
2206
+ const name = this.expectName() || `ability_${Date.now()}`;
2207
+ const properties = {};
2208
+ const directives = [];
2209
+ const eventBlocks = [];
2210
+ let damageFormula;
2211
+ if (this.check("punctuation", "{")) {
2212
+ this.advance();
2213
+ while (!this.check("punctuation", "}") && this.position < this.tokens.length) {
2214
+ this.skipNewlines();
2215
+ if (this.check("punctuation", "}")) break;
2216
+ const token = this.currentToken();
2217
+ if (token?.type === "punctuation" && token.value === "@") {
2218
+ const dir = this.parseDirective();
2219
+ if (dir) directives.push(dir);
2220
+ this.skipNewlines();
2221
+ continue;
2222
+ }
2223
+ if ((token?.type === "keyword" || token?.type === "identifier") && token.value === "damage_formula") {
2224
+ damageFormula = this.parseDamageFormula();
2225
+ this.skipNewlines();
2226
+ continue;
2227
+ }
2228
+ const nextAfterIdent = (token?.type === "keyword" || token?.type === "identifier") && this.tokens[this.position + 1]?.value === "{";
2229
+ if (nextAfterIdent) {
2230
+ const blockKey = token.value;
2231
+ this.advance();
2232
+ let raw = "";
2233
+ if (this.check("punctuation", "{")) {
2234
+ this.advance();
2235
+ let depth = 1;
2236
+ while (depth > 0 && this.position < this.tokens.length) {
2237
+ const t = this.advance();
2238
+ if (t.value === "{") depth++;
2239
+ else if (t.value === "}") {
2240
+ depth--;
2241
+ if (depth === 0) break;
2242
+ }
2243
+ raw += (t.type === "string" ? JSON.stringify(t.value) : t.value) + " ";
2244
+ }
2245
+ }
2246
+ properties[blockKey] = raw.trim();
2247
+ this.skipNewlines();
2248
+ continue;
2249
+ }
2250
+ if ((token?.type === "keyword" || token?.type === "identifier") && token.value.startsWith("on_")) {
2251
+ const event = token.value;
2252
+ this.advance();
2253
+ const params = [];
2254
+ if (this.check("punctuation", "(")) {
2255
+ this.advance();
2256
+ while (!this.check("punctuation", ")") && this.position < this.tokens.length) {
2257
+ const p = this.expectIdentifier();
2258
+ if (p) params.push(p);
2259
+ if (this.check("punctuation", ",")) this.advance();
2260
+ }
2261
+ this.expect("punctuation", ")");
2262
+ }
2263
+ let body = "";
2264
+ if (this.check("punctuation", "{")) {
2265
+ this.advance();
2266
+ let depth = 1;
2267
+ while (depth > 0 && this.position < this.tokens.length) {
2268
+ const t = this.advance();
2269
+ if (t.value === "{") depth++;
2270
+ else if (t.value === "}") {
2271
+ depth--;
2272
+ if (depth === 0) break;
2273
+ }
2274
+ body += (t.type === "string" ? JSON.stringify(t.value) : t.value) + " ";
2275
+ }
2276
+ }
2277
+ eventBlocks.push({ event, params, body: body.trim() });
2278
+ this.skipNewlines();
2279
+ continue;
2280
+ }
2281
+ const prop = this.parseProperty();
2282
+ if (prop) {
2283
+ properties[prop.key] = prop.value;
2284
+ } else {
2285
+ this.advance();
2286
+ }
2287
+ this.skipNewlines();
2288
+ }
2289
+ this.expect("punctuation", "}");
2290
+ }
2291
+ const abilityNode = {
2292
+ type: "game-ability",
2293
+ name,
2294
+ properties,
2295
+ directives: directives.length > 0 ? directives : void 0,
2296
+ eventBlocks: eventBlocks.length > 0 ? eventBlocks : void 0,
2297
+ damageFormula,
2298
+ position: [0, 0, 0]
2299
+ };
2300
+ return abilityNode;
2301
+ }
2302
+ /**
2303
+ * Parse a `damage_formula { ... }` sub-block inside an ability declaration.
2304
+ *
2305
+ * Accepted fields (all optional; safe defaults apply):
2306
+ * base: number — flat pre-scaling damage (default 0)
2307
+ * scaling: string — expression emitted verbatim (default "0")
2308
+ * crit_multiplier: number — damage multiplier on crit (default 1.5)
2309
+ * crit_chance: string — 0-1 expression (default "0.05")
2310
+ * resist_school: string — elemental school name (default "")
2311
+ *
2312
+ * Any other key-value pairs are collected into the `raw` bag for
2313
+ * forward-compatibility and passed through to the compiler.
2314
+ */
2315
+ parseDamageFormula() {
2316
+ this.advance();
2317
+ const raw = {};
2318
+ if (this.check("punctuation", "{")) {
2319
+ this.advance();
2320
+ while (!this.check("punctuation", "}") && this.position < this.tokens.length) {
2321
+ this.skipNewlines();
2322
+ if (this.check("punctuation", "}")) break;
2323
+ const prop = this.parseProperty();
2324
+ if (prop) {
2325
+ raw[prop.key] = prop.value;
2326
+ } else {
2327
+ this.advance();
2328
+ }
2329
+ this.skipNewlines();
2330
+ }
2331
+ this.expect("punctuation", "}");
2332
+ }
2333
+ const coerceNum = (v, fallback) => {
2334
+ if (typeof v === "number" && Number.isFinite(v)) return v;
2335
+ if (typeof v === "string") {
2336
+ const n = Number(v.trim());
2337
+ if (Number.isFinite(n)) return n;
2338
+ }
2339
+ return fallback;
2340
+ };
2341
+ const coerceStr = (v, fallback) => {
2342
+ if (typeof v === "string" && v.trim().length > 0) return v.trim();
2343
+ if (typeof v === "number") return String(v);
2344
+ return fallback;
2345
+ };
2346
+ return {
2347
+ base: coerceNum(raw["base"], 0),
2348
+ scaling: coerceStr(raw["scaling"], "0"),
2349
+ critMultiplier: coerceNum(raw["crit_multiplier"] ?? raw["critMultiplier"], 1.5),
2350
+ critChance: coerceStr(raw["crit_chance"] ?? raw["critChance"], "0.05"),
2351
+ resistSchool: coerceStr(raw["resist_school"] ?? raw["resistSchool"], ""),
2352
+ raw
2353
+ };
2354
+ }
2355
+ /**
2356
+ * Parse spawn declaration.
2357
+ *
2358
+ * Syntax:
2359
+ * spawn <name> {
2360
+ * entity: goblin_warrior
2361
+ * zone: ironveil_outskirts
2362
+ * max_count: 8
2363
+ * respawn_interval: 120s
2364
+ * loot_table: goblin_drops
2365
+ * faction: goblin_clan
2366
+ * }
2367
+ *
2368
+ * Compiles to a generic `game-spawn` AST node. The MMO compiler uses this
2369
+ * for load-balancing across shards.
2370
+ */
2371
+ parseSpawnRule() {
2372
+ this.expect("keyword", "spawn");
2373
+ const name = this.expectName() || `spawn_${Date.now()}`;
2374
+ const properties = {};
2375
+ const directives = [];
2376
+ if (this.check("punctuation", "{")) {
2377
+ this.advance();
2378
+ while (!this.check("punctuation", "}") && this.position < this.tokens.length) {
2379
+ this.skipNewlines();
2380
+ if (this.check("punctuation", "}")) break;
2381
+ const t = this.currentToken();
2382
+ if (t?.type === "punctuation" && t.value === "@") {
2383
+ const dir = this.parseDirective();
2384
+ if (dir) directives.push(dir);
2385
+ } else {
2386
+ const prop = this.parseProperty();
2387
+ if (prop) {
2388
+ properties[prop.key] = prop.value;
2389
+ } else {
2390
+ this.advance();
2391
+ }
2392
+ }
2393
+ this.skipNewlines();
2394
+ }
2395
+ this.expect("punctuation", "}");
2396
+ }
2397
+ const spawnNode = {
2398
+ type: "game-spawn",
2399
+ name,
2400
+ properties,
2401
+ directives: directives.length > 0 ? directives : void 0,
2402
+ position: [0, 0, 0]
2403
+ };
2404
+ return spawnNode;
2405
+ }
2406
+ /**
2407
+ * Parse loot_table declaration.
2408
+ *
2409
+ * Syntax:
2410
+ * loot_table <name> {
2411
+ * item <item_name> { @drop_chance 0.15 }
2412
+ * gold { @amount 50..200 }
2413
+ * }
2414
+ *
2415
+ * Compiles to a generic `game-loot-table` AST node.
2416
+ */
2417
+ parseLootTable() {
2418
+ this.expect("keyword", "loot_table");
2419
+ const name = this.expectName() || `loot_${Date.now()}`;
2420
+ const entries = [];
2421
+ if (this.check("punctuation", "{")) {
2422
+ this.advance();
2423
+ while (!this.check("punctuation", "}") && this.position < this.tokens.length) {
2424
+ this.skipNewlines();
2425
+ if (this.check("punctuation", "}")) break;
2426
+ const token = this.currentToken();
2427
+ if (!token) break;
2428
+ const kind = token.value;
2429
+ this.advance();
2430
+ let entryName = kind;
2431
+ const next = this.currentToken();
2432
+ if (next && (next.type === "identifier" || next.type === "keyword") && next.value !== "{") {
2433
+ entryName = next.value;
2434
+ this.advance();
2435
+ }
2436
+ const entryProps = {};
2437
+ const entryDirs = [];
2438
+ if (this.check("punctuation", "{")) {
2439
+ this.advance();
2440
+ while (!this.check("punctuation", "}") && this.position < this.tokens.length) {
2441
+ this.skipNewlines();
2442
+ if (this.check("punctuation", "}")) break;
2443
+ const t = this.currentToken();
2444
+ if (t?.type === "punctuation" && t.value === "@") {
2445
+ const dir = this.parseDirective();
2446
+ if (dir) entryDirs.push(dir);
2447
+ } else {
2448
+ const prop = this.parseProperty();
2449
+ if (prop) {
2450
+ entryProps[prop.key] = prop.value;
2451
+ } else {
2452
+ this.advance();
2453
+ }
2454
+ }
2455
+ this.skipNewlines();
2456
+ }
2457
+ this.expect("punctuation", "}");
2458
+ }
2459
+ entries.push({ kind, name: entryName, properties: entryProps, directives: entryDirs });
2460
+ this.skipNewlines();
2461
+ }
2462
+ this.expect("punctuation", "}");
2463
+ }
2464
+ const lootNode = {
2465
+ type: "game-loot-table",
2466
+ name,
2467
+ entries,
2468
+ position: [0, 0, 0]
2469
+ };
2470
+ return lootNode;
2471
+ }
2472
+ /**
2473
+ * Parse authority declaration.
2474
+ *
2475
+ * Syntax:
2476
+ * authority <name> {
2477
+ * model: server_authoritative
2478
+ * sync_rate: 20hz
2479
+ * server_reconcile: true
2480
+ * }
2481
+ *
2482
+ * Compiles to a generic `game-authority` AST node. The networked compilation
2483
+ * pass maps this to the correct authority model per target runtime.
2484
+ */
2485
+ parseAuthorityBlock() {
2486
+ this.expect("keyword", "authority");
2487
+ const name = this.expectName() || `authority_${Date.now()}`;
2488
+ const properties = {};
2489
+ if (this.check("punctuation", "{")) {
2490
+ this.advance();
2491
+ while (!this.check("punctuation", "}") && this.position < this.tokens.length) {
2492
+ this.skipNewlines();
2493
+ if (this.check("punctuation", "}")) break;
2494
+ const prop = this.parseProperty();
2495
+ if (prop) {
2496
+ properties[prop.key] = prop.value;
2497
+ } else {
2498
+ this.advance();
2499
+ }
2500
+ this.skipNewlines();
2501
+ }
2502
+ this.expect("punctuation", "}");
2503
+ }
2504
+ const authorityNode = {
2505
+ type: "game-authority",
2506
+ name,
2507
+ properties,
2508
+ position: [0, 0, 0]
2509
+ };
2510
+ return authorityNode;
2511
+ }
2512
+ /**
2513
+ * Parse top-level game event blocks: on_combat, on_death, on_spawn, on_cast.
2514
+ *
2515
+ * Syntax:
2516
+ * on_death { drop_loot: goblin_drops; trigger_event: "mob_killed" }
2517
+ * on_spawn { set_state: alive }
2518
+ *
2519
+ * These may appear as top-level declarations on entity/npc blocks or inside
2520
+ * ability blocks. Returns a generic `game-event-block` AST node.
2521
+ */
2522
+ parseGameEventBlock() {
2523
+ const token = this.currentToken();
2524
+ const eventName = token?.value || "on_unknown";
2525
+ this.advance();
2526
+ const params = [];
2527
+ if (this.check("punctuation", "(")) {
2528
+ this.advance();
2529
+ while (!this.check("punctuation", ")") && this.position < this.tokens.length) {
2530
+ const p = this.expectIdentifier();
2531
+ if (p) params.push(p);
2532
+ if (this.check("punctuation", ",")) this.advance();
2533
+ }
2534
+ this.expect("punctuation", ")");
2535
+ }
2536
+ const properties = {};
2537
+ let body = "";
2538
+ if (this.check("punctuation", "{")) {
2539
+ this.advance();
2540
+ let depth = 1;
2541
+ while (depth > 0 && this.position < this.tokens.length) {
2542
+ const t = this.currentToken();
2543
+ if (t.value === "{") depth++;
2544
+ else if (t.value === "}") {
2545
+ depth--;
2546
+ if (depth === 0) {
2547
+ this.advance();
2548
+ break;
2549
+ }
2550
+ }
2551
+ body += (t.type === "string" ? JSON.stringify(t.value) : t.value) + " ";
2552
+ this.advance();
2553
+ }
2554
+ }
2555
+ const eventNode = {
2556
+ type: "game-event-block",
2557
+ name: eventName,
2558
+ params,
2559
+ body: body.trim(),
2560
+ category: this.reactionCategory(eventName),
2561
+ properties,
2562
+ position: [0, 0, 0]
2563
+ };
2564
+ return eventNode;
2565
+ }
2566
+ /** Map a trigger keyword to its routing bucket (see ReactionCategory). */
2567
+ reactionCategory(trigger) {
2568
+ if (chunkNTQRFOPP_cjs.isLocomotionReactionTrigger(trigger)) return "movement";
2569
+ switch (trigger) {
2570
+ case "on_interact":
2571
+ case "on_grab":
2572
+ case "on_release":
2573
+ case "on_use":
2574
+ case "on_hover":
2575
+ return "interaction";
2576
+ case "on_collision":
2577
+ case "on_proximity":
2578
+ return "collision";
2579
+ case "on_spawn":
2580
+ case "on_death":
2581
+ case "on_enter":
2582
+ case "on_exit":
2583
+ case "on_tick":
2584
+ return "lifecycle";
2585
+ case "on_combat":
2586
+ case "on_cast":
2587
+ return "combat";
2588
+ case "on_signal":
2589
+ case "on_input":
2590
+ return "signal";
2591
+ default:
2592
+ return "custom";
2593
+ }
2594
+ }
2595
+ /**
2596
+ * Parse a movement statement:
2597
+ * move <target> to [x, y, z] // move to a position
2598
+ * move <target> to otherEntity // follow / seek an entity
2599
+ * move <target> to [..] over 2 via glide easing ease_in_out
2600
+ *
2601
+ * `target` is optional and defaults to `self`. Clause order after `to` is
2602
+ * free (`over` / `via` / `easing` may appear in any order).
2603
+ */
2604
+ parseMove() {
2605
+ this.expect("keyword", "move");
2606
+ let target = "self";
2607
+ if (!this.check("keyword", "to")) {
2608
+ const tt = this.currentToken();
2609
+ if (tt && (tt.type === "identifier" || tt.type === "keyword")) {
2610
+ target = tt.value;
2611
+ this.advance();
2612
+ }
2613
+ }
2614
+ if (!this.check("keyword", "to")) {
2615
+ this.errors.push(this.createError("HS001", "Expected 'to' in move statement", this.currentToken()));
2616
+ return null;
2617
+ }
2618
+ this.advance();
2619
+ let destination;
2620
+ if (this.check("punctuation", "[")) {
2621
+ destination = this.parseVector3OrZero();
2622
+ } else {
2623
+ destination = this.expectIdentifier() || "origin";
2624
+ }
2625
+ let duration;
2626
+ let mode;
2627
+ let easing;
2628
+ let guard = 0;
2629
+ while (this.position < this.tokens.length && guard++ < 8) {
2630
+ if (this.check("keyword", "over")) {
2631
+ this.advance();
2632
+ const n = this.currentToken();
2633
+ if (n && n.type === "number") {
2634
+ duration = parseFloat(n.value);
2635
+ this.advance();
2636
+ }
2637
+ } else if (this.check("keyword", "via")) {
2638
+ this.advance();
2639
+ mode = this.expectIdentifier() || void 0;
2640
+ } else if (this.check("keyword", "easing")) {
2641
+ this.advance();
2642
+ easing = this.expectIdentifier() || void 0;
2643
+ } else {
2644
+ break;
2645
+ }
2646
+ }
2647
+ const node = {
2648
+ type: "movement",
2649
+ target,
2650
+ destination,
2651
+ duration,
2652
+ mode,
2653
+ easing,
2654
+ properties: {},
2655
+ position: [0, 0, 0]
2656
+ };
2657
+ return node;
2658
+ }
2659
+ /** Parse a `[x, y, z]` literal, tolerating missing components as 0. */
2660
+ parseVector3OrZero() {
2661
+ const out = [];
2662
+ if (this.check("punctuation", "[")) {
2663
+ this.advance();
2664
+ while (!this.check("punctuation", "]") && this.position < this.tokens.length) {
2665
+ const t = this.currentToken();
2666
+ if (t && t.type === "number") out.push(parseFloat(t.value));
2667
+ this.advance();
2668
+ if (this.check("punctuation", ",")) this.advance();
2669
+ }
2670
+ if (this.check("punctuation", "]")) this.advance();
2671
+ }
2672
+ return [out[0] ?? 0, out[1] ?? 0, out[2] ?? 0];
2673
+ }
2674
+ /**
2675
+ * Parse a domain-neutral action declaration:
2676
+ * action open(target) {
2677
+ * @requires { distance < 2 }
2678
+ * @cooldown 1s
2679
+ * effect { state.open = true }
2680
+ * animation: door_swing
2681
+ * @server_side
2682
+ * }
2683
+ *
2684
+ * This is the general form of the MMO `ability`: any verb with preconditions,
2685
+ * cost, cooldown, effects, and an animation binding. `@server_side` /
2686
+ * `@client_side` / `@replicated` are collected as directive flags.
2687
+ */
2688
+ parseActionDecl() {
2689
+ this.expect("keyword", "action");
2690
+ const name = this.expectIdentifier();
2691
+ if (!name) return null;
2692
+ const params = [];
2693
+ if (this.check("punctuation", "(")) {
2694
+ this.advance();
2695
+ while (!this.check("punctuation", ")") && this.position < this.tokens.length) {
2696
+ const p = this.expectIdentifier();
2697
+ if (p) params.push(p);
2698
+ if (this.check("punctuation", ",")) this.advance();
2699
+ }
2700
+ this.expect("punctuation", ")");
2701
+ }
2702
+ const clauses = [];
2703
+ const flags = [];
2704
+ const properties = {};
2705
+ if (this.check("punctuation", "{")) {
2706
+ this.advance();
2707
+ while (!this.check("punctuation", "}") && this.position < this.tokens.length) {
2708
+ this.skipNewlines();
2709
+ if (this.check("punctuation", "}")) break;
2710
+ const t = this.currentToken();
2711
+ if (!t) break;
2712
+ if (t.value === "@") {
2713
+ this.advance();
2714
+ const dirName = this.expectIdentifier() || "";
2715
+ if (this.check("punctuation", "{")) {
2716
+ clauses.push({ kind: dirName, body: this.consumeBracedBody() });
2717
+ } else {
2718
+ let raw = "";
2719
+ while (this.position < this.tokens.length) {
2720
+ const n = this.currentToken();
2721
+ if (!n || n.type === "newline" || n.value === ";" || n.value === "{" || n.value === "}") break;
2722
+ if (n.type === "keyword" && this.keywordSet.has(n.value.toLowerCase())) break;
2723
+ raw += n.value;
2724
+ this.advance();
2725
+ }
2726
+ if (raw.trim()) {
2727
+ clauses.push({ kind: dirName, body: raw.trim() });
2728
+ } else {
2729
+ flags.push(dirName);
2730
+ }
2731
+ }
2732
+ continue;
2733
+ }
2734
+ if (t.type === "identifier" && this.tokens[this.position + 1]?.value === "{") {
2735
+ const clauseName = t.value;
2736
+ this.advance();
2737
+ clauses.push({ kind: clauseName, body: this.consumeBracedBody() });
2738
+ continue;
2739
+ }
2740
+ const prop = this.parseProperty();
2741
+ if (prop) {
2742
+ properties[prop.key] = prop.value;
2743
+ } else {
2744
+ this.advance();
2745
+ }
2746
+ this.skipNewlines();
2747
+ }
2748
+ this.expect("punctuation", "}");
2749
+ }
2750
+ const node = {
2751
+ type: "action-decl",
2752
+ name,
2753
+ params,
2754
+ clauses,
2755
+ flags,
2756
+ properties,
2757
+ position: [0, 0, 0]
2758
+ };
2759
+ return node;
2760
+ }
2761
+ /** Consume a `{ ... }` block (assumes the `{` is current) and return its raw inner text. */
2762
+ consumeBracedBody() {
2763
+ let body = "";
2764
+ if (this.check("punctuation", "{")) {
2765
+ this.advance();
2766
+ let depth = 1;
2767
+ while (depth > 0 && this.position < this.tokens.length) {
2768
+ const t = this.currentToken();
2769
+ if (t.value === "{") depth++;
2770
+ else if (t.value === "}") {
2771
+ depth--;
2772
+ if (depth === 0) {
2773
+ this.advance();
2774
+ break;
2775
+ }
2776
+ }
2777
+ body += (t.type === "string" ? JSON.stringify(t.value) : t.value) + " ";
2778
+ this.advance();
2779
+ }
2780
+ }
2781
+ return body.trim();
2782
+ }
2783
+ // ===========================================================================
2784
+ // END MMO / GAME-LOGIC PARSERS
2785
+ // ===========================================================================
2073
2786
  parseExpressionStatement() {
2074
2787
  let expression = "";
2075
2788
  let parenDepth = 0;
@@ -2517,5 +3230,5 @@ var HoloScriptCodeParser = class {
2517
3230
  exports.ERROR_CODES = ERROR_CODES;
2518
3231
  exports.HoloScriptCodeParser = HoloScriptCodeParser;
2519
3232
  exports.ParserPools = ParserPools;
2520
- //# sourceMappingURL=chunk-GVFJ6T4S.cjs.map
2521
- //# sourceMappingURL=chunk-GVFJ6T4S.cjs.map
3233
+ //# sourceMappingURL=chunk-PVODJEJ7.cjs.map
3234
+ //# sourceMappingURL=chunk-PVODJEJ7.cjs.map