@holoscript/core 8.0.8 → 8.0.10

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 (463) hide show
  1. package/LICENSE +21 -0
  2. package/bin/holoscript.cjs +5 -1
  3. package/dist/GLTFPipeline-L76YTXKA.js +15 -0
  4. package/dist/GLTFPipeline-ZWJN7GI6.cjs +36 -0
  5. package/dist/HoloCompositionParser-K76KTEEE.js +12 -0
  6. package/dist/HoloCompositionParser-UZH6Y4HO.cjs +45 -0
  7. package/dist/HoloScriptCodeParser-2D4ERFUZ.js +6 -0
  8. package/dist/HoloScriptCodeParser-UDRLDA7I.cjs +23 -0
  9. package/dist/HoloScriptPlusParser-FTMCGWXD.js +13 -0
  10. package/dist/HoloScriptPlusParser-LQR5GIKF.cjs +30 -0
  11. package/dist/HoloScriptRuntime-UTRLJI5L.js +12 -0
  12. package/dist/HoloScriptRuntime-YBYXJHJN.cjs +21 -0
  13. package/dist/SceneIRCompiler-63KA3M2F.js +17 -0
  14. package/dist/SceneIRCompiler-KWUFHZ4O.cjs +42 -0
  15. package/dist/{USDZExporter-AUHZODOF.cjs → USDZExporter-ML4UMIGC.cjs} +3 -3
  16. package/dist/{USDZExporter-GXB4AUSG.js → USDZExporter-ZFKLQ76G.js} +3 -3
  17. package/dist/agents/index.cjs +1 -1
  18. package/dist/agents/index.js +1 -1
  19. package/dist/audit/AuditLogger.d.ts +106 -0
  20. package/dist/audit/AuditQueryBuilder.d.ts +79 -0
  21. package/dist/audit/ComplianceReporter.d.ts +90 -0
  22. package/dist/audit/index.d.ts +13 -0
  23. package/dist/{chunk-FGMDMJM7.js → chunk-2BYAUHBO.js} +3 -3
  24. package/dist/{chunk-EDPYCLRC.cjs → chunk-2E6PP5UE.cjs} +83 -59
  25. package/dist/{chunk-GASCWJK5.js → chunk-2EGGAZT3.js} +65 -287
  26. package/dist/{chunk-SIEXCILW.js → chunk-2I3XAGMF.js} +3 -3
  27. package/dist/{chunk-OS533P33.cjs → chunk-2KKOYZYI.cjs} +1074 -1655
  28. package/dist/chunk-2MQKNDNH.js +51 -0
  29. package/dist/{chunk-7DMMMBCY.cjs → chunk-2X3IPCBK.cjs} +10 -10
  30. package/dist/chunk-2ZOTBO25.cjs +202 -0
  31. package/dist/chunk-356N4NPM.cjs +152 -0
  32. package/dist/{chunk-X3GJPRVK.cjs → chunk-36NPLOI4.cjs} +92 -81
  33. package/dist/{chunk-SLU6UPJI.cjs → chunk-37HHY7RH.cjs} +5 -5
  34. package/dist/{chunk-YDPEHCCI.cjs → chunk-3CDDRUER.cjs} +3 -118
  35. package/dist/chunk-3F7ZZWIN.js +1651 -0
  36. package/dist/chunk-3ILD7TKP.cjs +187 -0
  37. package/dist/{chunk-X27QRG4C.cjs → chunk-3IUHTGDD.cjs} +153 -41
  38. package/dist/{chunk-PXNZ6TME.js → chunk-4376VHNJ.js} +60 -36
  39. package/dist/{chunk-YKGPCZEE.cjs → chunk-4FIBOJW6.cjs} +10 -10
  40. package/dist/chunk-4Q7RKQQI.cjs +14195 -0
  41. package/dist/{chunk-YCM6QQRT.cjs → chunk-566ZB4LZ.cjs} +180 -8
  42. package/dist/{chunk-2Y3V22SG.js → chunk-5CURIYGT.js} +3 -3
  43. package/dist/{chunk-QBWNJXNR.js → chunk-5FYMCVBY.js} +5 -5
  44. package/dist/{chunk-ZA34AN3R.js → chunk-5LVFTGKH.js} +841 -12
  45. package/dist/{chunk-Z6PMDS4G.js → chunk-5OUOMBKK.js} +1090 -53
  46. package/dist/chunk-63AUAIL6.js +48 -0
  47. package/dist/chunk-655FATJU.js +110 -0
  48. package/dist/{chunk-TQ377OLB.cjs → chunk-65S62L4D.cjs} +28 -22
  49. package/dist/chunk-6NTAZN5Z.cjs +502 -0
  50. package/dist/chunk-6TRX6AR2.js +9376 -0
  51. package/dist/chunk-6ZCCLKS2.cjs +51 -0
  52. package/dist/{chunk-MDR235RZ.js → chunk-734OB5SK.js} +721 -8
  53. package/dist/{chunk-Q2Q34NF3.js → chunk-77QI552M.js} +6 -6
  54. package/dist/{chunk-WKX5AMOY.js → chunk-7I74JWPW.js} +3 -3
  55. package/dist/{chunk-5FSKKMR7.cjs → chunk-7IDJDMPU.cjs} +232 -4
  56. package/dist/chunk-7VBKRGIZ.cjs +847 -0
  57. package/dist/{chunk-KCPHASCO.js → chunk-AATYYLYK.js} +5 -5
  58. package/dist/{chunk-DTGBOSEM.cjs → chunk-AWXFEAQL.cjs} +12 -12
  59. package/dist/{chunk-THCK6ECW.js → chunk-B3CWTCK2.js} +231 -3
  60. package/dist/chunk-BCP4E7MD.cjs +997 -0
  61. package/dist/chunk-BG7RPYJP.js +91 -0
  62. package/dist/{chunk-VF257YKO.js → chunk-BP4KTMLY.js} +117 -5
  63. package/dist/{chunk-YN6IETRZ.js → chunk-BQJ3YBF3.js} +6424 -987
  64. package/dist/{chunk-7X5PNIQJ.js → chunk-BXSOEQI3.js} +27 -25
  65. package/dist/{chunk-WFKVS2K4.cjs → chunk-C65C5VED.cjs} +1101 -55
  66. package/dist/{chunk-KOUAQL2B.cjs → chunk-CANAL6CT.cjs} +1569 -168
  67. package/dist/{chunk-FDSGHPAK.js → chunk-CBSDJF3B.js} +3 -3
  68. package/dist/{chunk-FEWUHQNM.cjs → chunk-CFVK26P4.cjs} +4 -4
  69. package/dist/{chunk-M7K4LE66.cjs → chunk-CI33NINL.cjs} +4 -4
  70. package/dist/{chunk-2OWDB4FB.js → chunk-CKV5NYAE.js} +6 -6
  71. package/dist/{chunk-LPS5AMQD.cjs → chunk-CM4NHXVO.cjs} +24 -24
  72. package/dist/chunk-D3HSRXYB.js +115 -0
  73. package/dist/{chunk-FNHJRI32.js → chunk-DBH3D2MU.js} +1561 -160
  74. package/dist/{chunk-GW3LKD5C.js → chunk-DJNH4HFW.js} +3 -3
  75. package/dist/{chunk-2GCNOI2U.cjs → chunk-DN6F4DHH.cjs} +9 -3
  76. package/dist/chunk-DQRJ5RJG.js +432 -0
  77. package/dist/{chunk-C7ZBSV2Q.js → chunk-DUG3OQAS.js} +106 -43
  78. package/dist/chunk-ECUYJOJ2.cjs +199 -0
  79. package/dist/chunk-EEMTCAK7.js +182 -0
  80. package/dist/{chunk-3SKLAUDD.cjs → chunk-EI3J6LTW.cjs} +359 -581
  81. package/dist/{chunk-SSSN7VAM.js → chunk-EM2OGPYE.js} +4 -4
  82. package/dist/{chunk-56VOWURB.cjs → chunk-ENZCIQZC.cjs} +522 -453
  83. package/dist/chunk-ESBXUYOC.cjs +836 -0
  84. package/dist/{chunk-L5U4W6JC.js → chunk-ESSEF6U2.js} +4 -4
  85. package/dist/chunk-ET3AN4W3.js +824 -0
  86. package/dist/chunk-EXKSFGSX.cjs +14 -14
  87. package/dist/{chunk-I76GIKN7.cjs → chunk-F3YT6GUF.cjs} +17 -17
  88. package/dist/{chunk-WRWEX5ZF.js → chunk-F75DZBBI.js} +3 -3
  89. package/dist/{chunk-4JGRWHZJ.js → chunk-FG6PYGIZ.js} +12 -6
  90. package/dist/chunk-FGGJQRLZ.js +14 -14
  91. package/dist/{chunk-SXOSDZD6.js → chunk-FWCHPCD4.js} +128 -10
  92. package/dist/{chunk-XW6IXEQH.cjs → chunk-G35CAQ7I.cjs} +5 -5
  93. package/dist/{chunk-7VMGP2FW.js → chunk-G6KACNMO.js} +132 -188
  94. package/dist/{chunk-FJPADH77.cjs → chunk-GAWJJAGT.cjs} +6 -6
  95. package/dist/chunk-GGR7QUKK.cjs +4724 -0
  96. package/dist/chunk-GIBF4BHH.js +14098 -0
  97. package/dist/{chunk-AWB7QYY6.cjs → chunk-GILYQ5VH.cjs} +6 -6
  98. package/dist/{chunk-FWVYAMNW.cjs → chunk-GKFCHGCM.cjs} +4 -4
  99. package/dist/{chunk-Y3ZFVUUU.js → chunk-GLEJ2TLS.js} +3 -3
  100. package/dist/{chunk-3GWWJT7L.js → chunk-GP3OKSKT.js} +13 -13
  101. package/dist/chunk-GTIPOEHN.js +196 -0
  102. package/dist/{chunk-LMJ5EBV7.cjs → chunk-GZPUA2TL.cjs} +16 -15
  103. package/dist/{chunk-IELX2OKI.js → chunk-H4LJ4HEA.js} +3 -115
  104. package/dist/{chunk-ACVWFGBI.cjs → chunk-HCX4SMFK.cjs} +3 -3
  105. package/dist/{chunk-HYNTS5CP.js → chunk-HHRZ6STP.js} +24 -2
  106. package/dist/chunk-HIDEIEFG.js +48 -0
  107. package/dist/{chunk-W6RW64BB.cjs → chunk-HSWBIDZM.cjs} +228 -5
  108. package/dist/{chunk-GSOUNWEL.js → chunk-HVX7QQYK.js} +1035 -1616
  109. package/dist/{chunk-TRCGG42I.cjs → chunk-IFW5IW4L.cjs} +6502 -1019
  110. package/dist/{chunk-F5LKJ6F5.cjs → chunk-IJU6AS67.cjs} +32 -28
  111. package/dist/{chunk-TVANHNJ7.js → chunk-IK6Z2HNC.js} +173 -3
  112. package/dist/{chunk-QGMUTVVH.cjs → chunk-IS7NTKY5.cjs} +20 -20
  113. package/dist/{chunk-YFVQWSNJ.js → chunk-IXWGYWH6.js} +3 -3
  114. package/dist/chunk-J2DAS2PL.js +148 -0
  115. package/dist/chunk-JBQXZIWB.js +148 -0
  116. package/dist/chunk-JBYBMBMW.js +261 -0
  117. package/dist/{chunk-LWUOUCYL.js → chunk-JEJ7TT54.js} +5 -5
  118. package/dist/{chunk-DUCB6LGL.js → chunk-JOTCTHN5.js} +211 -5
  119. package/dist/{chunk-47RUFYKR.js → chunk-K56UVEXV.js} +3 -3
  120. package/dist/{chunk-XSFNHP2E.js → chunk-KB26H447.js} +3 -3
  121. package/dist/{chunk-3NGDZZR4.js → chunk-KEYG7HGY.js} +430 -37
  122. package/dist/{chunk-DY72BMU5.js → chunk-KFVNCW4Q.js} +4 -4
  123. package/dist/chunk-KPGC7SK2.js +192 -0
  124. package/dist/chunk-KROXXBK5.cjs +53 -0
  125. package/dist/{chunk-ZPZAVHXL.cjs → chunk-LB3ZZMKT.cjs} +137 -19
  126. package/dist/chunk-LDYZWNJW.cjs +1654 -0
  127. package/dist/{chunk-UGXHYIWT.cjs → chunk-LHNHO27U.cjs} +28 -28
  128. package/dist/{chunk-ULMSSHCJ.cjs → chunk-LMB555QB.cjs} +405 -38
  129. package/dist/{chunk-CBJY23VL.js → chunk-MD4IVS42.js} +3 -3
  130. package/dist/{chunk-VMLKSV26.js → chunk-MDDWEBCX.js} +226 -3
  131. package/dist/chunk-MUWH4QK5.cjs +94 -0
  132. package/dist/{chunk-T6W3Z3SH.cjs → chunk-N2ILK7BF.cjs} +4 -4
  133. package/dist/{chunk-6EX3I5P4.cjs → chunk-N74QRJGP.cjs} +6 -6
  134. package/dist/chunk-NFFHLX37.cjs +132 -0
  135. package/dist/chunk-NJSYWX7H.js +190 -0
  136. package/dist/{chunk-SH5PPVK7.cjs → chunk-NQN5LFN4.cjs} +165 -221
  137. package/dist/chunk-NTQRFOPP.cjs +56 -0
  138. package/dist/{chunk-YFWRJW4B.js → chunk-NWMJPTVL.js} +51 -55
  139. package/dist/{chunk-63ZGNR2T.cjs → chunk-OC6GV5QH.cjs} +42 -42
  140. package/dist/{chunk-7E7GCQCK.js → chunk-OG3MBHM3.js} +9 -3
  141. package/dist/chunk-OMNHTCS4.cjs +264 -0
  142. package/dist/chunk-OQXB6NNC.cjs +117 -0
  143. package/dist/{chunk-Y57W2CT5.cjs → chunk-OV46CCA2.cjs} +51 -55
  144. package/dist/{chunk-6PRZIHGL.cjs → chunk-OV6HHKLE.cjs} +21 -266
  145. package/dist/{chunk-C37BHB7N.cjs → chunk-P26YYPOO.cjs} +5 -5
  146. package/dist/{chunk-2BZHWUSR.cjs → chunk-P7JEKJTZ.cjs} +16 -16
  147. package/dist/{chunk-NGBXXZLL.cjs → chunk-PDXX5UI4.cjs} +45 -45
  148. package/dist/{chunk-FHQFPYV4.js → chunk-PJFTTSKE.js} +8 -7
  149. package/dist/{chunk-GVFJ6T4S.cjs → chunk-PVODJEJ7.cjs} +721 -8
  150. package/dist/{chunk-ZZ7RO2UQ.js → chunk-Q265VZJ4.js} +3 -3
  151. package/dist/{chunk-E7JP3BS3.cjs → chunk-Q47JEE2C.cjs} +4 -4
  152. package/dist/chunk-QBY7LRN2.js +281 -0
  153. package/dist/{chunk-GH6C2QGW.cjs → chunk-QEDMOGF3.cjs} +857 -16
  154. package/dist/{chunk-5WUNN6ZN.cjs → chunk-QHSAVOOL.cjs} +24 -2
  155. package/dist/chunk-QJNCDVYM.cjs +137 -0
  156. package/dist/chunk-QM7FJB5W.js +4717 -0
  157. package/dist/chunk-QQFB4RT2.cjs +448 -0
  158. package/dist/chunk-QSYBHQAD.cjs +196 -0
  159. package/dist/{chunk-2YSNA2F2.cjs → chunk-QVJMDVYZ.cjs} +5 -5
  160. package/dist/chunk-RAJMAX6D.js +131 -0
  161. package/dist/{chunk-VVKVQZI6.js → chunk-RAN3ECAS.js} +3 -3
  162. package/dist/chunk-RKGUZBOC.js +79 -0
  163. package/dist/{chunk-HLFDZ35S.cjs → chunk-RRQIAJLQ.cjs} +8 -8
  164. package/dist/{chunk-PABONWKI.js → chunk-RXQNRZ5F.js} +3 -3
  165. package/dist/{chunk-7ZHYEITD.cjs → chunk-S4O7CFHQ.cjs} +10 -11
  166. package/dist/chunk-SE7ANBGN.js +128 -0
  167. package/dist/{chunk-X2AVEAZM.cjs → chunk-SJIRCTIS.cjs} +176 -2
  168. package/dist/{chunk-WXQ57LAO.js → chunk-SQXAZHDG.js} +4 -4
  169. package/dist/chunk-SR73L5ZP.cjs +84 -0
  170. package/dist/{chunk-OABEO6HH.js → chunk-SZOLTWWD.js} +2349 -214
  171. package/dist/{chunk-5JEU52DW.js → chunk-TPZ3BN2D.js} +3 -3
  172. package/dist/{chunk-QFU53KRH.js → chunk-TSTFYGGX.js} +4 -5
  173. package/dist/{chunk-EBS32AJI.cjs → chunk-TZCFKZ6Z.cjs} +5 -5
  174. package/dist/chunk-UCVZXQ63.js +724 -0
  175. package/dist/chunk-UGQ3QNV6.js +992 -0
  176. package/dist/chunk-UNMVGZVW.js +142 -0
  177. package/dist/{chunk-TEVX443G.js → chunk-UTUD6GJI.js} +178 -6
  178. package/dist/chunk-UXBYA7DV.cjs +155 -0
  179. package/dist/chunk-V6GXFSK7.cjs +443 -0
  180. package/dist/chunk-VHORVGCG.cjs +761 -0
  181. package/dist/{chunk-B4EKV6HQ.js → chunk-VKCTYLDN.js} +500 -442
  182. package/dist/{chunk-O3MGZDCT.cjs → chunk-VTEXJOSD.cjs} +63 -63
  183. package/dist/chunk-VVAAZITA.cjs +287 -0
  184. package/dist/{chunk-V7AKE5VT.cjs → chunk-W2GA3EQB.cjs} +435 -42
  185. package/dist/chunk-W4GABFCR.js +37 -0
  186. package/dist/chunk-WKEK4NCA.js +490 -0
  187. package/dist/{chunk-5A4TCHOC.cjs → chunk-WNYXT4TE.cjs} +4 -4
  188. package/dist/{chunk-S762UEV5.js → chunk-WTH23ISI.js} +6 -6
  189. package/dist/{chunk-BTKZGHAV.js → chunk-WWNCM473.js} +10 -6
  190. package/dist/{chunk-4YNYPHH3.cjs → chunk-X75H75UY.cjs} +2351 -213
  191. package/dist/{chunk-LYJJI7ZK.cjs → chunk-XCUDDFKC.cjs} +216 -9
  192. package/dist/chunk-YAO4HPJL.cjs +120 -0
  193. package/dist/chunk-YKY2JBER.cjs +9443 -0
  194. package/dist/chunk-YP5CHEYU.cjs +154 -0
  195. package/dist/{chunk-WRNEH5MO.js → chunk-YW3I2FQL.js} +18 -7
  196. package/dist/{chunk-BRNUPDHJ.js → chunk-Z557DVYN.js} +386 -19
  197. package/dist/{chunk-VSACG2AR.js → chunk-Z6LZUYZF.js} +21 -264
  198. package/dist/chunk-ZHPMP447.cjs +43 -0
  199. package/dist/{chunk-LODTHGST.cjs → chunk-ZK7KX5CD.cjs} +133 -70
  200. package/dist/{chunk-CCPSNT6B.cjs → chunk-ZRPALBQB.cjs} +5 -5
  201. package/dist/chunk-ZVFHPMC5.js +824 -0
  202. package/dist/chunk-ZVQMKUGJ.js +443 -0
  203. package/dist/cli/holoscript-runner.cjs +86 -48
  204. package/dist/cli/holoscript-runner.js +54 -16
  205. package/dist/codebase/index.cjs +1 -1
  206. package/dist/codebase/index.js +1 -1
  207. package/dist/compiler/agent-inference.cjs +11 -11
  208. package/dist/compiler/agent-inference.js +9 -6
  209. package/dist/compiler/android-xr.cjs +13 -12
  210. package/dist/compiler/android-xr.js +11 -10
  211. package/dist/compiler/android.cjs +12 -12
  212. package/dist/compiler/android.js +10 -10
  213. package/dist/compiler/business-quest.cjs +10 -10
  214. package/dist/compiler/business-quest.js +2 -2
  215. package/dist/compiler/coco.cjs +1 -1
  216. package/dist/compiler/coco.js +1 -1
  217. package/dist/compiler/context.cjs +9 -9
  218. package/dist/compiler/context.js +6 -6
  219. package/dist/compiler/daimon-seed.cjs +36 -0
  220. package/dist/compiler/daimon-seed.js +12 -0
  221. package/dist/compiler/domain-block-utils.cjs +205 -156
  222. package/dist/compiler/domain-block-utils.js +8 -7
  223. package/dist/compiler/dtdl.cjs +10 -10
  224. package/dist/compiler/dtdl.js +7 -7
  225. package/dist/compiler/gltf-pipeline.cjs +9 -9
  226. package/dist/compiler/gltf-pipeline.js +2 -2
  227. package/dist/compiler/godot.cjs +10 -9
  228. package/dist/compiler/godot.js +9 -8
  229. package/dist/compiler/incremental.cjs +11 -11
  230. package/dist/compiler/incremental.js +6 -6
  231. package/dist/compiler/index.cjs +2585 -3273
  232. package/dist/compiler/index.d.ts +149 -35
  233. package/dist/compiler/index.js +2197 -3102
  234. package/dist/compiler/ios.cjs +11 -11
  235. package/dist/compiler/ios.js +9 -9
  236. package/dist/compiler/llm-provider-capabilities.cjs +9 -9
  237. package/dist/compiler/llm-provider-capabilities.js +6 -6
  238. package/dist/compiler/nodetoy.cjs +1 -1
  239. package/dist/compiler/nodetoy.js +1 -1
  240. package/dist/compiler/openxr.cjs +11 -10
  241. package/dist/compiler/openxr.js +10 -9
  242. package/dist/compiler/remotion.cjs +1 -1
  243. package/dist/compiler/remotion.js +1 -1
  244. package/dist/compiler/reproducibility.cjs +1 -1
  245. package/dist/compiler/reproducibility.js +1 -1
  246. package/dist/compiler/sdf.cjs +11 -10
  247. package/dist/compiler/sdf.js +9 -8
  248. package/dist/compiler/semantic-scene.cjs +7 -7
  249. package/dist/compiler/semantic-scene.js +2 -2
  250. package/dist/compiler/state.cjs +9 -9
  251. package/dist/compiler/state.js +7 -7
  252. package/dist/compiler/trait-composition.cjs +11 -11
  253. package/dist/compiler/trait-composition.js +7 -7
  254. package/dist/compiler/traits/ProvenanceSemiring.d.ts +167 -0
  255. package/dist/compiler/traits/Semiring.d.ts +26 -0
  256. package/dist/compiler/unity.cjs +11 -10
  257. package/dist/compiler/unity.js +10 -9
  258. package/dist/compiler/unreal.cjs +12 -11
  259. package/dist/compiler/unreal.js +10 -9
  260. package/dist/compiler/urdf.cjs +18 -17
  261. package/dist/compiler/urdf.js +9 -8
  262. package/dist/compiler/usd-physics.cjs +11 -10
  263. package/dist/compiler/usd-physics.js +8 -7
  264. package/dist/compiler/visionos.cjs +11 -10
  265. package/dist/compiler/visionos.js +10 -9
  266. package/dist/compiler/vrchat.cjs +11 -10
  267. package/dist/compiler/vrchat.js +9 -8
  268. package/dist/compiler/wasm.cjs +14 -13
  269. package/dist/compiler/wasm.js +9 -8
  270. package/dist/compiler/webgpu.cjs +10 -9
  271. package/dist/compiler/webgpu.js +9 -8
  272. package/dist/constants.cjs +398 -0
  273. package/dist/constants.js +9 -0
  274. package/dist/coordinators/index.cjs +4 -1
  275. package/dist/coordinators/index.js +4 -1
  276. package/dist/debugger.cjs +11 -9
  277. package/dist/debugger.js +9 -7
  278. package/dist/{dist-ACXG6IH5.cjs → dist-GRMOP2UL.cjs} +341 -65
  279. package/dist/{dist-VD4L6V7Q.js → dist-ZBUKU2JG.js} +333 -63
  280. package/dist/entries/interop.cjs +23 -23
  281. package/dist/entries/interop.js +3 -3
  282. package/dist/entries/scripting.cjs +12 -11
  283. package/dist/entries/scripting.js +8 -7
  284. package/dist/evolution/index.cjs +66 -0
  285. package/dist/evolution/index.d.ts +162 -0
  286. package/dist/evolution/index.js +17 -0
  287. package/dist/hololand/index.cjs +41 -37
  288. package/dist/hololand/index.js +3 -3
  289. package/dist/index.cjs +12394 -3224
  290. package/dist/index.d.ts +260 -18
  291. package/dist/index.js +10755 -2182
  292. package/dist/keyword-registry/PluginKeywordRegistry.d.ts +138 -0
  293. package/dist/keyword-registry/index.cjs +29 -0
  294. package/dist/keyword-registry/index.d.ts +1 -0
  295. package/dist/keyword-registry/index.js +4 -0
  296. package/dist/math/tropical-spmv.cjs +11 -11
  297. package/dist/math/tropical-spmv.d.ts +1 -0
  298. package/dist/math/tropical-spmv.js +2 -2
  299. package/dist/math/tropicalSpmv.d.ts +43 -0
  300. package/dist/math/vec3.cjs +1 -1
  301. package/dist/math/vec3.js +1 -1
  302. package/dist/matter/StagedMatter.d.ts +82 -0
  303. package/dist/matter/index.cjs +17 -0
  304. package/dist/matter/index.d.ts +1 -0
  305. package/dist/matter/index.js +4 -0
  306. package/dist/{ml-dsa-Z7JDKW4L.js → ml-dsa-J6VKVT4K.js} +3 -3
  307. package/dist/{ml-dsa-FSKBTE3W.cjs → ml-dsa-MTIK4ZUQ.cjs} +23 -23
  308. package/dist/paper-0c-spike/index.cjs +1 -1
  309. package/dist/paper-0c-spike/index.js +1 -1
  310. package/dist/parameter-envelope/ParameterEnvelope.d.ts +128 -0
  311. package/dist/parameter-envelope/index.cjs +17 -0
  312. package/dist/parameter-envelope/index.d.ts +2 -0
  313. package/dist/parameter-envelope/index.js +4 -0
  314. package/dist/parser/HoloCompositionTypes.d.ts +2013 -0
  315. package/dist/parser/PipelineParser.d.ts +162 -0
  316. package/dist/parser.cjs +36 -20
  317. package/dist/parser.js +13 -9
  318. package/dist/plugin-manifest/ManifestAutoLoader.d.ts +35 -0
  319. package/dist/plugin-manifest/PluginManifest.d.ts +156 -0
  320. package/dist/plugin-manifest/index.cjs +25 -0
  321. package/dist/plugin-manifest/index.d.ts +2 -0
  322. package/dist/plugin-manifest/index.js +4 -0
  323. package/dist/plugin-solver-contract/PluginSolverContract.d.ts +288 -0
  324. package/dist/plugin-solver-contract/index.cjs +41 -0
  325. package/dist/plugin-solver-contract/index.d.ts +1 -0
  326. package/dist/plugin-solver-contract/index.js +4 -0
  327. package/dist/policy/ContentPolicyGate.d.ts +51 -0
  328. package/dist/policy/PolicyPack.d.ts +120 -0
  329. package/dist/policy/blocklist.d.ts +32 -0
  330. package/dist/policy/defaults.d.ts +44 -0
  331. package/dist/policy/index.cjs +106 -0
  332. package/dist/policy/index.d.ts +17 -0
  333. package/dist/policy/index.js +5 -0
  334. package/dist/policy/jsonLogic.d.ts +31 -0
  335. package/dist/policy/types.d.ts +174 -0
  336. package/dist/proof-composition/ProofCompositionLaw.d.ts +93 -0
  337. package/dist/proof-composition/index.cjs +25 -0
  338. package/dist/proof-composition/index.d.ts +1 -0
  339. package/dist/proof-composition/index.js +4 -0
  340. package/dist/receipts/hash-policy.d.ts +85 -0
  341. package/dist/reconstruction/index.cjs +75 -47
  342. package/dist/reconstruction/index.js +5 -5
  343. package/dist/runtime/plugin-trait-registrar.d.ts +36 -0
  344. package/dist/runtime.cjs +81 -79
  345. package/dist/runtime.js +9 -7
  346. package/dist/scene-presets-EDKYZ5GW.js +4 -0
  347. package/dist/scene-presets-NCW2CFRS.cjs +17 -0
  348. package/dist/self-improvement/index.cjs +1 -1
  349. package/dist/self-improvement/index.js +1 -1
  350. package/dist/{src-PT2FERDV.cjs → src-G3D7ZATQ.cjs} +545 -21
  351. package/dist/{src-J6CM4AUR.js → src-UXYA7HM6.js} +539 -16
  352. package/dist/storage/index.cjs +10 -10
  353. package/dist/storage/index.js +3 -3
  354. package/dist/testing.cjs +1 -1
  355. package/dist/testing.js +1 -1
  356. package/dist/tools/index.cjs +3631 -0
  357. package/dist/tools/index.js +3581 -0
  358. package/dist/traitDocs/traitDocs.cjs +9 -9
  359. package/dist/traitDocs/traitDocs.d.ts +1 -0
  360. package/dist/traitDocs/traitDocs.js +3 -3
  361. package/dist/traits/ControlLoopTrait.d.ts +154 -0
  362. package/dist/traits/KinematicChainTrait.d.ts +116 -0
  363. package/dist/traits/SensorSamplingTrait.d.ts +154 -0
  364. package/dist/traits/TraitTypes.d.ts +270 -0
  365. package/dist/traits/TransactionTrait.d.ts +121 -0
  366. package/dist/traits/botanical-lotus.cjs +54 -50
  367. package/dist/traits/botanical-lotus.js +2 -5
  368. package/dist/traits/control-loop.cjs +21 -0
  369. package/dist/traits/control-loop.d.ts +1 -0
  370. package/dist/traits/control-loop.js +4 -0
  371. package/dist/traits/engines/cloth-verlet.d.ts +65 -0
  372. package/dist/traits/engines/index.cjs +19 -19
  373. package/dist/traits/engines/index.d.ts +15 -275
  374. package/dist/traits/engines/index.js +3 -3
  375. package/dist/traits/engines/motion-data-schema.d.ts +119 -0
  376. package/dist/traits/engines/motion-matching.d.ts +102 -0
  377. package/dist/traits/engines/noise.d.ts +25 -0
  378. package/dist/traits/engines/onnx-adapter.d.ts +173 -0
  379. package/dist/traits/engines/onnx-motion-matching.d.ts +163 -0
  380. package/dist/traits/engines/pfnn-network.d.ts +92 -0
  381. package/dist/traits/engines/synthetic-walk-cycle.d.ts +38 -0
  382. package/dist/traits/engines/tensor-ops.d.ts +15 -0
  383. package/dist/traits/index.cjs +2789 -1259
  384. package/dist/traits/index.d.ts +35 -0
  385. package/dist/traits/index.js +1692 -411
  386. package/dist/traits/kinematic-chain.cjs +25 -0
  387. package/dist/traits/kinematic-chain.d.ts +1 -0
  388. package/dist/traits/kinematic-chain.js +4 -0
  389. package/dist/traits/sensor-sampling.cjs +33 -0
  390. package/dist/traits/sensor-sampling.d.ts +1 -0
  391. package/dist/traits/sensor-sampling.js +4 -0
  392. package/dist/traits/simulation-solver-factory.cjs +1 -1
  393. package/dist/traits/simulation-solver-factory.js +1 -1
  394. package/dist/traits/transaction.cjs +29 -0
  395. package/dist/traits/transaction.d.ts +1 -0
  396. package/dist/traits/transaction.js +4 -0
  397. package/dist/traits/webcam-gaze.cjs +1 -1
  398. package/dist/traits/webcam-gaze.js +1 -1
  399. package/dist/type-checker.cjs +7 -6
  400. package/dist/type-checker.js +5 -4
  401. package/dist/types/AdvancedTypeSystem.d.ts +489 -0
  402. package/dist/types/HoloScriptPlus.d.ts +810 -0
  403. package/dist/types/base.d.ts +248 -0
  404. package/dist/types.d.ts +799 -0
  405. package/dist/world/index.cjs +3 -4
  406. package/dist/world/index.js +3 -4
  407. package/dist/world-model/index.cjs +1 -1
  408. package/dist/world-model/index.js +1 -1
  409. package/dist/wot/index.cjs +1 -1
  410. package/dist/wot/index.js +1 -1
  411. package/package.json +135 -69
  412. package/dist/GLTFPipeline-3EJLL3TS.cjs +0 -38
  413. package/dist/GLTFPipeline-3OWJV2VK.js +0 -17
  414. package/dist/HoloScriptPlusParser-ADWRY5OS.cjs +0 -698
  415. package/dist/HoloScriptPlusParser-JLJDXHSC.js +0 -693
  416. package/dist/HoloScriptPlusParser-QCGFPWIL.cjs +0 -27
  417. package/dist/HoloScriptPlusParser-WENAFEFV.js +0 -10
  418. package/dist/HoloScriptRuntime-GGRVEU4T.cjs +0 -19
  419. package/dist/HoloScriptRuntime-GJK6VJPH.js +0 -10
  420. package/dist/chunk-22Q5A6RV.js +0 -979
  421. package/dist/chunk-4C57PR42.js +0 -468
  422. package/dist/chunk-4W5G5QVL.cjs +0 -847
  423. package/dist/chunk-5ET6L4NS.js +0 -487
  424. package/dist/chunk-C4GSLCHE.cjs +0 -7153
  425. package/dist/chunk-F2G6CWFT.js +0 -7089
  426. package/dist/chunk-G6PNEASF.cjs +0 -814
  427. package/dist/chunk-GTA4Q3A3.js +0 -1491
  428. package/dist/chunk-HCCQLAA4.cjs +0 -74
  429. package/dist/chunk-HFSVMKM3.cjs +0 -72
  430. package/dist/chunk-KAIVDEIG.cjs +0 -4539
  431. package/dist/chunk-KQU64CIX.cjs +0 -1508
  432. package/dist/chunk-MSYSQ2AJ.js +0 -4533
  433. package/dist/chunk-NHJLP37F.js +0 -70
  434. package/dist/chunk-NHYRRAGI.cjs +0 -490
  435. package/dist/chunk-OIQYIIO3.cjs +0 -473
  436. package/dist/chunk-OL46QLBJ.js +0 -61
  437. package/dist/chunk-SKZPC5AG.cjs +0 -984
  438. package/dist/chunk-SLHLXUMO.js +0 -445
  439. package/dist/chunk-UOIGFQXC.cjs +0 -9750
  440. package/dist/chunk-UOL6Y5TD.cjs +0 -759
  441. package/dist/chunk-UVFI7XIR.cjs +0 -452
  442. package/dist/chunk-VEPGBETF.js +0 -844
  443. package/dist/chunk-XQ5MWMP2.js +0 -756
  444. package/dist/chunk-XT6JY5W5.js +0 -9684
  445. package/dist/chunk-YRRAUB35.js +0 -811
  446. package/dist/compiler/GasOptimizationAnalyzer.d.ts +0 -73
  447. package/dist/compiler/NFTMarketplaceCompiler.d.ts +0 -23
  448. package/dist/compiler/ar.cjs +0 -23
  449. package/dist/compiler/ar.js +0 -11
  450. package/dist/compiler/babylon.cjs +0 -21
  451. package/dist/compiler/babylon.js +0 -15
  452. package/dist/compiler/multi-layer.cjs +0 -24
  453. package/dist/compiler/multi-layer.js +0 -15
  454. package/dist/compiler/playcanvas.cjs +0 -19
  455. package/dist/compiler/playcanvas.js +0 -13
  456. package/dist/compiler/r3f.cjs +0 -39
  457. package/dist/compiler/r3f.d.ts +0 -22
  458. package/dist/compiler/r3f.js +0 -17
  459. package/dist/compiler/vrr.cjs +0 -24
  460. package/dist/compiler/vrr.js +0 -12
  461. package/dist/parser/NFTMarketplaceTypes.d.ts +0 -191
  462. package/dist/playwright-3AT3AKTV.cjs +0 -98673
  463. 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