@holoscript/core 8.0.6 → 8.0.7

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 (248) hide show
  1. package/README.md +34 -34
  2. package/bin/holoscript.cjs +1 -1
  3. package/dist/GLTFPipeline-3EJLL3TS.cjs +38 -0
  4. package/dist/GLTFPipeline-3OWJV2VK.js +17 -0
  5. package/dist/{HoloScriptPlusParser-A2W7OCN2.cjs → HoloScriptPlusParser-ADWRY5OS.cjs} +15 -15
  6. package/dist/{HoloScriptPlusParser-7FBIFUFC.js → HoloScriptPlusParser-JLJDXHSC.js} +4 -4
  7. package/dist/HoloScriptPlusParser-QCGFPWIL.cjs +27 -0
  8. package/dist/{HoloScriptPlusParser-F2Z56FJR.js → HoloScriptPlusParser-WENAFEFV.js} +5 -5
  9. package/dist/HoloScriptRuntime-GGRVEU4T.cjs +19 -0
  10. package/dist/HoloScriptRuntime-GJK6VJPH.js +10 -0
  11. package/dist/{USDZExporter-3FWJ25JI.cjs → USDZExporter-AUHZODOF.cjs} +15 -4
  12. package/dist/{USDZExporter-D2HQLQYK.js → USDZExporter-GXB4AUSG.js} +15 -4
  13. package/dist/{chunk-2GQHTXOK.js → chunk-22Q5A6RV.js} +3 -3
  14. package/dist/{chunk-XHZCF3AS.cjs → chunk-2BZHWUSR.cjs} +27 -15
  15. package/dist/{chunk-XJAN7CZG.cjs → chunk-2GCNOI2U.cjs} +2 -2
  16. package/dist/{chunk-DBPGNHFS.js → chunk-2OWDB4FB.js} +13 -25
  17. package/dist/{chunk-N75IH2HY.js → chunk-2Y3V22SG.js} +5 -14
  18. package/dist/{chunk-MXFUTKCO.js → chunk-33YHE7HX.js} +3 -7
  19. package/dist/{chunk-RCZHLCX2.js → chunk-3GWWJT7L.js} +4 -4
  20. package/dist/{chunk-EK7L4DW7.js → chunk-3NGDZZR4.js} +4 -4
  21. package/dist/{chunk-WRLUBRKS.cjs → chunk-3SKLAUDD.cjs} +2 -2
  22. package/dist/{chunk-KKFZ3B6J.cjs → chunk-3VBO3IYQ.cjs} +2 -2
  23. package/dist/{chunk-YF2I3MV3.js → chunk-47RUFYKR.js} +2 -2
  24. package/dist/{chunk-VHAONJBY.js → chunk-4JGRWHZJ.js} +7 -5
  25. package/dist/{chunk-2J5WZLF5.cjs → chunk-4W5G5QVL.cjs} +26 -26
  26. package/dist/{chunk-GQHQOPXZ.cjs → chunk-4YNYPHH3.cjs} +186 -17
  27. package/dist/{chunk-H5PUZHJV.cjs → chunk-56VOWURB.cjs} +61 -40
  28. package/dist/{chunk-DQRQZB33.cjs → chunk-5A4TCHOC.cjs} +3 -3
  29. package/dist/{chunk-M56JSP4A.js → chunk-5EDVCNRT.js} +2 -2
  30. package/dist/{chunk-YU5RJQPE.js → chunk-5ET6L4NS.js} +3 -3
  31. package/dist/{chunk-A3GFOZAF.cjs → chunk-63ZGNR2T.cjs} +43 -39
  32. package/dist/{chunk-NG77ATEW.cjs → chunk-6PRZIHGL.cjs} +6 -6
  33. package/dist/{chunk-OXGPGQXN.cjs → chunk-7DMMMBCY.cjs} +7 -7
  34. package/dist/{chunk-FHP6LXJS.js → chunk-7E7GCQCK.js} +2 -2
  35. package/dist/{chunk-P4AIF7OQ.js → chunk-7VMGP2FW.js} +44 -28
  36. package/dist/{chunk-7MVLEZB2.js → chunk-7X5PNIQJ.js} +3 -3
  37. package/dist/{chunk-X7QB5PL5.cjs → chunk-7ZHYEITD.cjs} +11 -11
  38. package/dist/{chunk-KPJL34Y7.cjs → chunk-ACVWFGBI.cjs} +2 -2
  39. package/dist/{chunk-QWSB553J.cjs → chunk-AWB7QYY6.cjs} +6 -6
  40. package/dist/{chunk-VATGR4EM.js → chunk-B4EKV6HQ.js} +61 -40
  41. package/dist/{chunk-HBEN5TQR.js → chunk-BRNUPDHJ.js} +5 -5
  42. package/dist/{chunk-F63LYRVE.js → chunk-BTKZGHAV.js} +23 -11
  43. package/dist/{chunk-YTR32ZEB.cjs → chunk-C4GSLCHE.cjs} +300 -125
  44. package/dist/{chunk-CXS3DUKD.js → chunk-C7ZBSV2Q.js} +3 -3
  45. package/dist/{chunk-WOH6LKYT.cjs → chunk-CCPSNT6B.cjs} +12 -7
  46. package/dist/{chunk-NW5G5FBQ.js → chunk-DD2JQ7TS.js} +4 -3
  47. package/dist/{chunk-JD7CIZ33.js → chunk-DUCB6LGL.js} +8 -10
  48. package/dist/{chunk-D63CGNJU.js → chunk-DY72BMU5.js} +3 -3
  49. package/dist/{chunk-AIA52I7T.cjs → chunk-EBS32AJI.cjs} +6 -4
  50. package/dist/{chunk-DCE3LDO3.cjs → chunk-EDPYCLRC.cjs} +52 -62
  51. package/dist/{chunk-NDUX553L.js → chunk-F2G6CWFT.js} +240 -65
  52. package/dist/{chunk-X7LYK5TX.cjs → chunk-F5LKJ6F5.cjs} +43 -31
  53. package/dist/{chunk-LAUFLPB6.js → chunk-FGMDMJM7.js} +10 -5
  54. package/dist/{chunk-P52PPB5R.js → chunk-FHQFPYV4.js} +4 -4
  55. package/dist/{chunk-YIMN575O.js → chunk-FNHJRI32.js} +8 -5
  56. package/dist/{chunk-EXUP2BUM.cjs → chunk-FT6TDR2O.cjs} +27 -27
  57. package/dist/{chunk-BRQJKJGT.cjs → chunk-FWVYAMNW.cjs} +4 -4
  58. package/dist/{chunk-PGANYCAG.cjs → chunk-G25QVBA5.cjs} +4 -3
  59. package/dist/{chunk-5BLWXOIP.cjs → chunk-G6PNEASF.cjs} +13 -13
  60. package/dist/{chunk-2BSMSUCE.js → chunk-GASCWJK5.js} +2 -2
  61. package/dist/{chunk-2VL6SJ33.cjs → chunk-GH6C2QGW.cjs} +12 -21
  62. package/dist/{chunk-JEB5UU3E.js → chunk-GSOUNWEL.js} +35 -27
  63. package/dist/{chunk-QPOQ7VPI.js → chunk-GTA4Q3A3.js} +2 -2
  64. package/dist/{chunk-JIYN45TV.cjs → chunk-GVFJ6T4S.cjs} +3 -7
  65. package/dist/{chunk-IVY74O6C.js → chunk-GVOKJNUN.js} +50 -11
  66. package/dist/{chunk-GZG4KA4E.js → chunk-GW3LKD5C.js} +6 -4
  67. package/dist/{chunk-IBXT6UP3.cjs → chunk-HFSVMKM3.cjs} +14 -14
  68. package/dist/{chunk-E767PVC6.cjs → chunk-HLFDZ35S.cjs} +5 -5
  69. package/dist/{chunk-ZXZ2AL2J.cjs → chunk-I76GIKN7.cjs} +20 -16
  70. package/dist/{chunk-4FDL7JLJ.cjs → chunk-KAIVDEIG.cjs} +145 -60
  71. package/dist/{chunk-X4EBCG4K.js → chunk-KCPHASCO.js} +18 -6
  72. package/dist/{chunk-T5J7ZKP3.cjs → chunk-KOUAQL2B.cjs} +16 -13
  73. package/dist/{chunk-GMP623FG.cjs → chunk-KQU64CIX.cjs} +2 -2
  74. package/dist/{chunk-4DO425P5.js → chunk-L5U4W6JC.js} +4 -4
  75. package/dist/{chunk-HBLKLLG5.cjs → chunk-LMJ5EBV7.cjs} +10 -10
  76. package/dist/{chunk-QWAR3GY6.cjs → chunk-LODTHGST.cjs} +8 -8
  77. package/dist/{chunk-TFUMBR7G.cjs → chunk-LPS5AMQD.cjs} +8 -8
  78. package/dist/{chunk-ISG3TQ2O.js → chunk-LWUOUCYL.js} +9 -5
  79. package/dist/{chunk-6CTRH7HT.cjs → chunk-LYJJI7ZK.cjs} +12 -14
  80. package/dist/{chunk-GTU2Z2WW.cjs → chunk-M7K4LE66.cjs} +5 -14
  81. package/dist/{chunk-URG2SJLK.js → chunk-MDR235RZ.js} +3 -7
  82. package/dist/{chunk-ULXWSPCK.js → chunk-MSYSQ2AJ.js} +101 -16
  83. package/dist/{chunk-TCBJMNXS.cjs → chunk-NGBXXZLL.cjs} +50 -62
  84. package/dist/{chunk-RXU4PQKA.js → chunk-NHJLP37F.js} +6 -6
  85. package/dist/{chunk-NTGBEMYL.cjs → chunk-NHYRRAGI.cjs} +5 -5
  86. package/dist/{chunk-YG3OAHJZ.cjs → chunk-O3MGZDCT.cjs} +89 -52
  87. package/dist/{chunk-GIOYPNTH.js → chunk-OABEO6HH.js} +185 -16
  88. package/dist/{chunk-N5YOAFNA.cjs → chunk-OS533P33.cjs} +37 -29
  89. package/dist/{chunk-IIUFMUTV.js → chunk-PABONWKI.js} +24 -11
  90. package/dist/{chunk-5BQIJG3O.js → chunk-PXNZ6TME.js} +47 -57
  91. package/dist/{chunk-KDZRD6EI.js → chunk-Q2Q34NF3.js} +63 -26
  92. package/dist/{chunk-IS4AEGLU.js → chunk-QBWNJXNR.js} +10 -6
  93. package/dist/{chunk-5IHG2LGT.js → chunk-QFU53KRH.js} +4 -4
  94. package/dist/{chunk-NTJZJ5IP.cjs → chunk-QGMUTVVH.cjs} +17 -17
  95. package/dist/{chunk-MYY4PMWX.cjs → chunk-RUVBFAF7.cjs} +50 -11
  96. package/dist/{chunk-E64LOLJU.js → chunk-S762UEV5.js} +5 -5
  97. package/dist/{chunk-3SBVODUP.cjs → chunk-SH5PPVK7.cjs} +61 -45
  98. package/dist/{chunk-LY4DMQOW.cjs → chunk-SKZPC5AG.cjs} +5 -5
  99. package/dist/{chunk-TJHVSBP2.js → chunk-SLHLXUMO.js} +10 -4
  100. package/dist/{chunk-S6OVFUXD.js → chunk-SSSN7VAM.js} +3 -3
  101. package/dist/{chunk-K5UGRXKR.js → chunk-SXOSDZD6.js} +6 -6
  102. package/dist/{chunk-J32ZJZJH.js → chunk-SYTRBGDS.js} +2 -2
  103. package/dist/{chunk-CIWWXYHZ.cjs → chunk-T6W3Z3SH.cjs} +2 -2
  104. package/dist/{chunk-U36W76U7.js → chunk-TEVX443G.js} +44 -51
  105. package/dist/{chunk-6DOKCECB.cjs → chunk-TQ377OLB.cjs} +23 -21
  106. package/dist/{chunk-YAPPQYJH.cjs → chunk-TRCGG42I.cjs} +195 -152
  107. package/dist/{chunk-H652NHX5.js → chunk-TVANHNJ7.js} +30 -23
  108. package/dist/{chunk-EKBKLK7P.js → chunk-UDE4OZMR.js} +3 -3
  109. package/dist/{chunk-3OIZJNVT.cjs → chunk-UGXHYIWT.cjs} +5 -5
  110. package/dist/{chunk-44GM3P4G.cjs → chunk-ULMSSHCJ.cjs} +21 -21
  111. package/dist/{chunk-3B5NVDHJ.cjs → chunk-UOL6Y5TD.cjs} +18 -18
  112. package/dist/{chunk-5S7RKFGR.cjs → chunk-UVFI7XIR.cjs} +10 -4
  113. package/dist/{chunk-5TIZXMED.cjs → chunk-V7AKE5VT.cjs} +10 -10
  114. package/dist/{chunk-3B7AY37W.js → chunk-VEPGBETF.js} +6 -6
  115. package/dist/{chunk-BKCK3IU6.js → chunk-VF257YKO.js} +4 -4
  116. package/dist/{chunk-4N4SXXWF.js → chunk-VSACG2AR.js} +3 -3
  117. package/dist/{chunk-ZDSYWBIE.cjs → chunk-VW5CRJBE.cjs} +3 -7
  118. package/dist/{chunk-PVWNU4QT.cjs → chunk-WFKVS2K4.cjs} +64 -26
  119. package/dist/{chunk-TDCJ7YPA.js → chunk-WXQ57LAO.js} +3 -3
  120. package/dist/{chunk-NE5CZ2NC.cjs → chunk-X27QRG4C.cjs} +38 -38
  121. package/dist/{chunk-TVHSPJ4N.cjs → chunk-X2AVEAZM.cjs} +30 -23
  122. package/dist/{chunk-C34AJIJO.js → chunk-XQ5MWMP2.js} +4 -4
  123. package/dist/{chunk-TFWYKOOB.cjs → chunk-XW6IXEQH.cjs} +26 -13
  124. package/dist/{chunk-YIVFJNYV.js → chunk-Y3ZFVUUU.js} +2 -2
  125. package/dist/{chunk-TJIMBJ6L.cjs → chunk-Y57W2CT5.cjs} +2 -2
  126. package/dist/{chunk-BFROVZOF.cjs → chunk-YCM6QQRT.cjs} +46 -53
  127. package/dist/{chunk-MBOOR7X4.js → chunk-YFVQWSNJ.js} +3 -3
  128. package/dist/{chunk-ISM4NX6N.js → chunk-YFWRJW4B.js} +2 -2
  129. package/dist/{chunk-6OTFG3EB.js → chunk-YN6IETRZ.js} +179 -136
  130. package/dist/{chunk-NPDNFPTU.js → chunk-YRRAUB35.js} +4 -4
  131. package/dist/{chunk-GCYR3D2K.js → chunk-Z6PMDS4G.js} +61 -23
  132. package/dist/{chunk-DPZXVDGM.js → chunk-ZA34AN3R.js} +8 -17
  133. package/dist/{chunk-EKYL4PE3.cjs → chunk-ZLF4YF3U.cjs} +2 -2
  134. package/dist/{chunk-VFKXK4GR.cjs → chunk-ZPZAVHXL.cjs} +20 -20
  135. package/dist/cli/holoscript-runner.cjs +39 -22
  136. package/dist/cli/holoscript-runner.js +32 -15
  137. package/dist/compiler/GasOptimizationAnalyzer.d.ts +73 -0
  138. package/dist/compiler/NFTMarketplaceCompiler.d.ts +23 -0
  139. package/dist/compiler/agent-inference.cjs +7 -7
  140. package/dist/compiler/agent-inference.js +3 -3
  141. package/dist/compiler/android-xr.cjs +8 -8
  142. package/dist/compiler/android-xr.js +6 -6
  143. package/dist/compiler/android.cjs +6 -6
  144. package/dist/compiler/android.js +4 -4
  145. package/dist/compiler/ar.cjs +6 -6
  146. package/dist/compiler/ar.js +4 -4
  147. package/dist/compiler/babylon.cjs +8 -8
  148. package/dist/compiler/babylon.js +7 -7
  149. package/dist/compiler/business-quest.cjs +9 -9
  150. package/dist/compiler/business-quest.js +1 -1
  151. package/dist/compiler/context.cjs +6 -6
  152. package/dist/compiler/context.js +3 -3
  153. package/dist/compiler/domain-block-utils.cjs +153 -153
  154. package/dist/compiler/domain-block-utils.js +4 -4
  155. package/dist/compiler/dtdl.cjs +7 -7
  156. package/dist/compiler/dtdl.js +4 -4
  157. package/dist/compiler/gltf-pipeline.cjs +8 -8
  158. package/dist/compiler/gltf-pipeline.js +1 -1
  159. package/dist/compiler/godot.cjs +6 -6
  160. package/dist/compiler/godot.js +5 -5
  161. package/dist/compiler/incremental.cjs +8 -8
  162. package/dist/compiler/incremental.js +3 -3
  163. package/dist/compiler/index.cjs +347 -362
  164. package/dist/compiler/index.d.ts +20 -0
  165. package/dist/compiler/index.js +200 -215
  166. package/dist/compiler/ios.cjs +6 -6
  167. package/dist/compiler/ios.js +4 -4
  168. package/dist/compiler/llm-provider-capabilities.cjs +6 -6
  169. package/dist/compiler/llm-provider-capabilities.js +3 -3
  170. package/dist/compiler/multi-layer.cjs +10 -10
  171. package/dist/compiler/multi-layer.js +9 -9
  172. package/dist/compiler/openxr.cjs +7 -7
  173. package/dist/compiler/openxr.js +6 -6
  174. package/dist/compiler/playcanvas.cjs +6 -6
  175. package/dist/compiler/playcanvas.js +5 -5
  176. package/dist/compiler/r3f.cjs +13 -13
  177. package/dist/compiler/r3f.js +8 -8
  178. package/dist/compiler/sdf.cjs +7 -7
  179. package/dist/compiler/sdf.js +5 -5
  180. package/dist/compiler/state.cjs +6 -6
  181. package/dist/compiler/state.js +4 -4
  182. package/dist/compiler/trait-composition.cjs +8 -8
  183. package/dist/compiler/trait-composition.js +4 -4
  184. package/dist/compiler/unity.cjs +7 -7
  185. package/dist/compiler/unity.js +6 -6
  186. package/dist/compiler/unreal.cjs +8 -8
  187. package/dist/compiler/unreal.js +6 -6
  188. package/dist/compiler/urdf.cjs +14 -14
  189. package/dist/compiler/urdf.js +5 -5
  190. package/dist/compiler/usd-physics.cjs +7 -7
  191. package/dist/compiler/usd-physics.js +4 -4
  192. package/dist/compiler/visionos.cjs +7 -7
  193. package/dist/compiler/visionos.js +6 -6
  194. package/dist/compiler/vrchat.cjs +7 -7
  195. package/dist/compiler/vrchat.js +5 -5
  196. package/dist/compiler/vrr.cjs +7 -7
  197. package/dist/compiler/vrr.js +5 -5
  198. package/dist/compiler/wasm.cjs +10 -10
  199. package/dist/compiler/wasm.js +5 -5
  200. package/dist/compiler/webgpu.cjs +6 -6
  201. package/dist/compiler/webgpu.js +5 -5
  202. package/dist/coordinators/index.cjs +27 -10
  203. package/dist/coordinators/index.js +27 -10
  204. package/dist/debugger.cjs +6 -6
  205. package/dist/debugger.js +4 -4
  206. package/dist/entries/scripting.cjs +6 -6
  207. package/dist/entries/scripting.js +2 -2
  208. package/dist/hololand/index.cjs +36 -36
  209. package/dist/hololand/index.js +2 -2
  210. package/dist/index.cjs +1056 -796
  211. package/dist/index.js +440 -180
  212. package/dist/math/tropical-spmv.cjs +10 -10
  213. package/dist/math/tropical-spmv.js +1 -1
  214. package/dist/math/vec3.cjs +13 -13
  215. package/dist/math/vec3.js +1 -1
  216. package/dist/parser/NFTMarketplaceTypes.d.ts +191 -0
  217. package/dist/parser.cjs +16 -16
  218. package/dist/parser.js +5 -5
  219. package/dist/reconstruction/index.cjs +37 -37
  220. package/dist/reconstruction/index.js +4 -4
  221. package/dist/runtime.cjs +274 -76
  222. package/dist/runtime.d.ts +10 -1
  223. package/dist/runtime.js +268 -70
  224. package/dist/self-improvement/index.cjs +12 -4
  225. package/dist/self-improvement/index.js +12 -4
  226. package/dist/{src-HCCCSYP7.js → src-J6CM4AUR.js} +91 -33
  227. package/dist/{src-4ROC227P.cjs → src-PT2FERDV.cjs} +93 -35
  228. package/dist/testing.cjs +5 -5
  229. package/dist/testing.js +1 -1
  230. package/dist/traits/botanical-lotus.cjs +49 -49
  231. package/dist/traits/botanical-lotus.js +2 -2
  232. package/dist/traits/engines/index.cjs +39 -39
  233. package/dist/traits/engines/index.d.ts +279 -0
  234. package/dist/traits/engines/index.js +4 -4
  235. package/dist/traits/index.cjs +881 -773
  236. package/dist/traits/index.js +366 -258
  237. package/dist/world/index.cjs +21 -18
  238. package/dist/world/index.js +21 -18
  239. package/dist/world-model/index.cjs +11 -5
  240. package/dist/world-model/index.d.ts +8 -0
  241. package/dist/world-model/index.js +11 -5
  242. package/package.json +74 -68
  243. package/LICENSE +0 -21
  244. package/dist/GLTFPipeline-PVLTKDBD.cjs +0 -38
  245. package/dist/GLTFPipeline-QPI4I7DL.js +0 -17
  246. package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +0 -27
  247. package/dist/HoloScriptRuntime-6ZGLUCFS.js +0 -10
  248. package/dist/HoloScriptRuntime-ALUASIL2.cjs +0 -19
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunk4FDL7JLJ_cjs = require('./chunk-4FDL7JLJ.cjs');
4
- var chunk5S7RKFGR_cjs = require('./chunk-5S7RKFGR.cjs');
3
+ var chunkKAIVDEIG_cjs = require('./chunk-KAIVDEIG.cjs');
4
+ var chunkUVFI7XIR_cjs = require('./chunk-UVFI7XIR.cjs');
5
5
  var chunkOIQYIIO3_cjs = require('./chunk-OIQYIIO3.cjs');
6
- var chunkAIA52I7T_cjs = require('./chunk-AIA52I7T.cjs');
7
- var chunk2VL6SJ33_cjs = require('./chunk-2VL6SJ33.cjs');
8
- var chunkQWAR3GY6_cjs = require('./chunk-QWAR3GY6.cjs');
9
- var chunkKKFZ3B6J_cjs = require('./chunk-KKFZ3B6J.cjs');
6
+ var chunkEBS32AJI_cjs = require('./chunk-EBS32AJI.cjs');
7
+ var chunkGH6C2QGW_cjs = require('./chunk-GH6C2QGW.cjs');
8
+ var chunkLODTHGST_cjs = require('./chunk-LODTHGST.cjs');
9
+ var chunk3VBO3IYQ_cjs = require('./chunk-3VBO3IYQ.cjs');
10
10
  var chunkE7JP3BS3_cjs = require('./chunk-E7JP3BS3.cjs');
11
11
  var chunkHCCQLAA4_cjs = require('./chunk-HCCQLAA4.cjs');
12
12
  var ans = require('@holoscript/core-types/ans');
@@ -20,8 +20,8 @@ var SHAPE_TO_THREE_GEOMETRY; exports.ThreeJSCompiler = void 0;
20
20
  var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
21
21
  "src/compiler/ThreeJSCompiler.ts"() {
22
22
  chunkOIQYIIO3_cjs.init_TraitCompositor();
23
- chunk5S7RKFGR_cjs.init_ProvenanceSemiring();
24
- chunkQWAR3GY6_cjs.init_CompilerBase();
23
+ chunkUVFI7XIR_cjs.init_ProvenanceSemiring();
24
+ chunkLODTHGST_cjs.init_CompilerBase();
25
25
  SHAPE_TO_THREE_GEOMETRY = {
26
26
  sphere: "SphereGeometry",
27
27
  orb: "SphereGeometry",
@@ -36,7 +36,7 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
36
36
  ring: "TorusGeometry",
37
37
  capsule: "CapsuleGeometry"
38
38
  };
39
- exports.ThreeJSCompiler = class extends chunkQWAR3GY6_cjs.CompilerBase {
39
+ exports.ThreeJSCompiler = class extends chunkLODTHGST_cjs.CompilerBase {
40
40
  constructor(options = {}) {
41
41
  super();
42
42
  this.compilerName = "ThreeJSCompiler";
@@ -146,9 +146,7 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
146
146
  this.emit('import * as THREE from "three";');
147
147
  if (this.options.enablePostProcessing) {
148
148
  this.emit('import { EffectComposer } from "three/addons/postprocessing/EffectComposer.js";');
149
- this.emit(
150
- 'import { RenderPass } from "three/addons/postprocessing/RenderPass.js";'
151
- );
149
+ this.emit('import { RenderPass } from "three/addons/postprocessing/RenderPass.js";');
152
150
  this.emit(
153
151
  'import { UnrealBloomPass } from "three/addons/postprocessing/UnrealBloomPass.js";'
154
152
  );
@@ -159,7 +157,9 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
159
157
  for (const prop of env.properties) {
160
158
  if (prop.key === "background" || prop.key === "skybox" || prop.key === "preset") {
161
159
  if (typeof prop.value === "string" && prop.value.startsWith("#")) {
162
- this.emit(`this.scene.background = new THREE.Color(${this.toThreeColorHex(prop.value)});`);
160
+ this.emit(
161
+ `this.scene.background = new THREE.Color(${this.toThreeColorHex(prop.value)});`
162
+ );
163
163
  } else {
164
164
  this.emit(`// skybox: "${prop.value}" \u2014 load via THREE.CubeTextureLoader`);
165
165
  }
@@ -170,13 +170,9 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
170
170
  const color = this.toThreeColorHex(fog.color ?? "#cccccc");
171
171
  this.emit(`this.scene.fog = new THREE.Fog(${color}, ${near}, ${far});`);
172
172
  } else if (prop.key === "ambient_light") {
173
- this.emit(
174
- `this.scene.add(new THREE.AmbientLight(0xffffff, ${prop.value ?? 0.5}));`
175
- );
173
+ this.emit(`this.scene.add(new THREE.AmbientLight(0xffffff, ${prop.value ?? 0.5}));`);
176
174
  } else if (prop.key === "ground") {
177
- this.emit(
178
- `const groundGeom = new THREE.PlaneGeometry(100, 100);`
179
- );
175
+ this.emit(`const groundGeom = new THREE.PlaneGeometry(100, 100);`);
180
176
  this.emit(
181
177
  `const groundMat = new THREE.MeshStandardMaterial({ color: 0x888888, roughness: 0.8 });`
182
178
  );
@@ -282,10 +278,8 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
282
278
  this.emit(`const ${v} = new THREE.Mesh(${v}Geom, ${v}Mat);`);
283
279
  this.emit(`this.scene.add(${v});`);
284
280
  }
285
- if (position)
286
- this.emit(`${v}.position.set(${position[0]}, ${position[1]}, ${position[2]});`);
287
- if (rotation)
288
- this.emit(`${v}.rotation.set(${rotation[0]}, ${rotation[1]}, ${rotation[2]});`);
281
+ if (position) this.emit(`${v}.position.set(${position[0]}, ${position[1]}, ${position[2]});`);
282
+ if (rotation) this.emit(`${v}.rotation.set(${rotation[0]}, ${rotation[1]}, ${rotation[2]});`);
289
283
  if (scale) {
290
284
  if (Array.isArray(scale)) {
291
285
  this.emit(`${v}.scale.set(${scale[0]}, ${scale[1]}, ${scale[2]});`);
@@ -298,7 +292,7 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
298
292
  (t) => t.name === "physics" || t.name === "collidable"
299
293
  );
300
294
  if (physicsTraits.length > 0) {
301
- const semiring = new chunk5S7RKFGR_cjs.ProvenanceSemiring();
295
+ const semiring = new chunkUVFI7XIR_cjs.ProvenanceSemiring();
302
296
  const applications = physicsTraits.map((t) => ({
303
297
  name: t.name,
304
298
  config: t.config || {},
@@ -326,9 +320,7 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
326
320
  } else if (trait.name === "hoverable") {
327
321
  this.emit(`// @hoverable \u2014 attach raycaster pointer-move handler to ${v}`);
328
322
  } else if (trait.name === "gaussian_splat") {
329
- this.emit(
330
- `// @gaussian_splat \u2014 use @mkkellogg/gaussian-splats-3d or three-splat for ${v}`
331
- );
323
+ this.emit(`// @gaussian_splat \u2014 use @mkkellogg/gaussian-splats-3d or three-splat for ${v}`);
332
324
  } else if (trait.name === "object_tracking") {
333
325
  this.emit(`// @object_tracking \u2014 WebXR hit-test for ${v}`);
334
326
  } else if (trait.name === "eye_tracked") {
@@ -433,10 +425,9 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
433
425
  }
434
426
  case "point": {
435
427
  const distStr = distance !== void 0 ? String(distance) : "0";
436
- this.emit(
437
- `const ${v} = new THREE.PointLight(${colorHex}, ${intStr}, ${distStr});`
438
- );
439
- if (position) this.emit(`${v}.position.set(${position[0]}, ${position[1]}, ${position[2]});`);
428
+ this.emit(`const ${v} = new THREE.PointLight(${colorHex}, ${intStr}, ${distStr});`);
429
+ if (position)
430
+ this.emit(`${v}.position.set(${position[0]}, ${position[1]}, ${position[2]});`);
440
431
  if (castShadow && this.options.enableShadows) this.emit(`${v}.castShadow = true;`);
441
432
  this.emit(`this.scene.add(${v});`);
442
433
  break;
@@ -447,7 +438,8 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
447
438
  this.emit(
448
439
  `const ${v} = new THREE.SpotLight(${colorHex}, ${intStr}, ${distance ?? 0}, ${angleRad}, ${pen});`
449
440
  );
450
- if (position) this.emit(`${v}.position.set(${position[0]}, ${position[1]}, ${position[2]});`);
441
+ if (position)
442
+ this.emit(`${v}.position.set(${position[0]}, ${position[1]}, ${position[2]});`);
451
443
  if (castShadow && this.options.enableShadows) this.emit(`${v}.castShadow = true;`);
452
444
  this.emit(`this.scene.add(${v});`);
453
445
  break;
@@ -477,13 +469,9 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
477
469
  if (near !== void 0) this.emit(`this.camera.near = ${near};`);
478
470
  if (far !== void 0) this.emit(`this.camera.far = ${far};`);
479
471
  if (position)
480
- this.emit(
481
- `this.camera.position.set(${position[0]}, ${position[1]}, ${position[2]});`
482
- );
472
+ this.emit(`this.camera.position.set(${position[0]}, ${position[1]}, ${position[2]});`);
483
473
  if (target) {
484
- this.emit(
485
- `this.camera.lookAt(new THREE.Vector3(${target[0]}, ${target[1]}, ${target[2]}));`
486
- );
474
+ this.emit(`this.camera.lookAt(new THREE.Vector3(${target[0]}, ${target[1]}, ${target[2]}));`);
487
475
  }
488
476
  this.emit(`this.camera.updateProjectionMatrix();`);
489
477
  this.emit("");
@@ -530,9 +518,7 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
530
518
  else if (p.key === "radius") radius = p.value;
531
519
  }
532
520
  if (shape === "sphere") {
533
- this.emit(
534
- `const ${v}Geom = new THREE.SphereGeometry(${radius ?? 5}, 16, 16);`
535
- );
521
+ this.emit(`const ${v}Geom = new THREE.SphereGeometry(${radius ?? 5}, 16, 16);`);
536
522
  } else {
537
523
  const s = Array.isArray(size) ? size : [size ?? 5, size ?? 5, size ?? 5];
538
524
  this.emit(`const ${v}Geom = new THREE.BoxGeometry(${s[0]}, ${s[1]}, ${s[2]});`);
@@ -544,9 +530,7 @@ var init_ThreeJSCompiler = chunkHCCQLAA4_cjs.__esm({
544
530
  if (position) this.emit(`${v}.position.set(${position[0]}, ${position[1]}, ${position[2]});`);
545
531
  this.emit(`this.scene.add(${v}); // trigger zone (invisible)`);
546
532
  if (zone.handlers?.length) {
547
- this.emit(
548
- `// Zone handlers: attach raycaster intersection checks for ${v}`
549
- );
533
+ this.emit(`// Zone handlers: attach raycaster intersection checks for ${v}`);
550
534
  for (const h of zone.handlers) {
551
535
  this.emit(
552
536
  `// on ${this.escapeStringValue(h.event, "TypeScript")}: implement via raycaster.intersectObject(${v})`
@@ -653,9 +637,9 @@ chunkHCCQLAA4_cjs.__export(Native2DCompiler_exports, {
653
637
  exports.Native2DCompiler = void 0;
654
638
  var init_Native2DCompiler = chunkHCCQLAA4_cjs.__esm({
655
639
  "src/compiler/Native2DCompiler.ts"() {
656
- chunkQWAR3GY6_cjs.init_CompilerBase();
640
+ chunkLODTHGST_cjs.init_CompilerBase();
657
641
  chunkE7JP3BS3_cjs.init_safeJsonParse();
658
- exports.Native2DCompiler = class extends chunkQWAR3GY6_cjs.CompilerBase {
642
+ exports.Native2DCompiler = class extends chunkLODTHGST_cjs.CompilerBase {
659
643
  constructor() {
660
644
  super(...arguments);
661
645
  this.compilerName = "Native2DCompiler";
@@ -871,26 +855,156 @@ export default ${safeName}Component;
871
855
  // ============================================================================
872
856
  generateHTMLPage(name, objects, composition) {
873
857
  const content = objects.map((obj) => this.generateHTMLNode(obj)).join("\n ");
874
- let bgColor = "#ffffff";
875
- let color = "#000000";
858
+ let bgColor = "#050510";
859
+ let color = "#ffffff";
876
860
  if (composition.environment?.properties) {
877
861
  const themeProp = composition.environment.properties.find((p) => p.key === "theme");
878
862
  const bgProp = composition.environment.properties.find((p) => p.key === "backgroundColor");
879
- if (themeProp?.value === "dark" || composition.traits?.some((t) => t.name === "theme" && t.config?.dark)) {
863
+ const fgProp = composition.environment.properties.find((p) => p.key === "color");
864
+ if (themeProp?.value === "light") {
865
+ bgColor = bgProp?.value || "#ffffff";
866
+ color = fgProp?.value || "#000000";
867
+ } else if (themeProp?.value === "dark" || !themeProp) {
880
868
  bgColor = bgProp?.value || "#050510";
881
- color = "#ffffff";
869
+ color = fgProp?.value || "#ffffff";
882
870
  }
883
871
  }
872
+ if (composition.traits?.some((t) => t.name === "theme" && t.config?.light)) {
873
+ bgColor = "#ffffff";
874
+ color = "#000000";
875
+ }
884
876
  return `<!DOCTYPE html>
885
877
  <html lang="en">
886
878
  <head>
887
879
  <meta charset="UTF-8">
888
880
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
889
881
  <title>${name}</title>
890
- <script src="https://cdn.tailwindcss.com"></script>
891
882
  <style>
883
+ /* HoloScript Native2D \u2014 minimal Tailwind-compatible utility CSS (no CDN dependency) */
884
+ *, *::before, *::after { box-sizing: border-box; }
892
885
  body { margin: 0; padding: 0; background-color: ${bgColor}; color: ${color}; font-family: system-ui, -apple-system, sans-serif; }
893
- /* Basic resets and custom trait animations to mirror React Framer variants */
886
+ /* --- Typography --- */
887
+ .text-5xl { font-size: 3rem; line-height: 1; }
888
+ .text-3xl { font-size: 1.875rem; line-height: 2.25rem; }
889
+ .text-2xl { font-size: 1.5rem; line-height: 2rem; }
890
+ .text-xl { font-size: 1.25rem; line-height: 1.75rem; }
891
+ .text-lg { font-size: 1.125rem; line-height: 1.75rem; }
892
+ .text-sm { font-size: 0.875rem; line-height: 1.25rem; }
893
+ .text-xs { font-size: 0.75rem; line-height: 1rem; }
894
+ .font-bold { font-weight: 700; }
895
+ .font-semibold { font-weight: 600; }
896
+ .font-medium { font-weight: 500; }
897
+ .tracking-tight { letter-spacing: -0.025em; }
898
+ /* --- Colors --- */
899
+ .text-white { color: #fff; }
900
+ .text-black { color: #000; }
901
+ .text-gray-300 { color: #d1d5db; }
902
+ .text-gray-400 { color: #9ca3af; }
903
+ .text-gray-500 { color: #6b7280; }
904
+ .text-gray-600 { color: #4b5563; }
905
+ /* --- Backgrounds --- */
906
+ .bg-white { background-color: #fff; }
907
+ .bg-gray-800 { background-color: #1f2937; }
908
+ .bg-gray-900 { background-color: #111827; }
909
+ .bg-gray-950 { background-color: #030712; }
910
+ .bg-blue-600 { background-color: #2563eb; }
911
+ .bg-blue-700 { background-color: #1d4ed8; }
912
+ .bg-indigo-600 { background-color: #4f46e5; }
913
+ .bg-indigo-500 { background-color: #6366f1; }
914
+ /* --- Hover states --- */
915
+ .hover\\:bg-blue-700:hover { background-color: #1d4ed8; }
916
+ .hover\\:bg-gray-800:hover { background-color: #1f2937; }
917
+ .hover\\:bg-indigo-500:hover { background-color: #6366f1; }
918
+ .hover\\:text-white:hover { color: #fff; }
919
+ /* --- Spacing --- */
920
+ .px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
921
+ .px-4 { padding-left: 1rem; padding-right: 1rem; }
922
+ .px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
923
+ .px-8 { padding-left: 2rem; padding-right: 2rem; }
924
+ .py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
925
+ .py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
926
+ .py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; }
927
+ .py-4 { padding-top: 1rem; padding-bottom: 1rem; }
928
+ .py-8 { padding-top: 2rem; padding-bottom: 2rem; }
929
+ .py-16 { padding-top: 4rem; padding-bottom: 4rem; }
930
+ .p-4 { padding: 1rem; }
931
+ .p-6 { padding: 1.5rem; }
932
+ .p-8 { padding: 2rem; }
933
+ .mt-2 { margin-top: 0.5rem; }
934
+ .mt-4 { margin-top: 1rem; }
935
+ .mt-6 { margin-top: 1.5rem; }
936
+ .mt-8 { margin-top: 2rem; }
937
+ .mb-2 { margin-bottom: 0.5rem; }
938
+ .mb-4 { margin-bottom: 1rem; }
939
+ .mb-6 { margin-bottom: 1.5rem; }
940
+ .gap-2 { gap: 0.5rem; }
941
+ .gap-4 { gap: 1rem; }
942
+ .gap-6 { gap: 1.5rem; }
943
+ .gap-8 { gap: 2rem; }
944
+ .space-y-2 > * + * { margin-top: 0.5rem; }
945
+ .space-y-4 > * + * { margin-top: 1rem; }
946
+ /* --- Borders & Radius --- */
947
+ .border { border-width: 1px; border-style: solid; }
948
+ .border-gray-600 { border-color: #4b5563; }
949
+ .border-gray-700 { border-color: #374151; }
950
+ .border-gray-800 { border-color: #1f2937; }
951
+ .rounded { border-radius: 0.25rem; }
952
+ .rounded-lg { border-radius: 0.5rem; }
953
+ .rounded-xl { border-radius: 0.75rem; }
954
+ .rounded-2xl { border-radius: 1rem; }
955
+ .rounded-full { border-radius: 9999px; }
956
+ /* --- Shadows --- */
957
+ .shadow { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); }
958
+ .shadow-md { box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1); }
959
+ .shadow-lg { box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1); }
960
+ .shadow-xl { box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1); }
961
+ /* --- Layout --- */
962
+ .flex { display: flex; }
963
+ .inline-flex { display: inline-flex; }
964
+ .grid { display: grid; }
965
+ .block { display: block; }
966
+ .hidden { display: none; }
967
+ .items-center { align-items: center; }
968
+ .items-start { align-items: flex-start; }
969
+ .justify-center { justify-content: center; }
970
+ .justify-between { justify-content: space-between; }
971
+ .flex-col { flex-direction: column; }
972
+ .flex-wrap { flex-wrap: wrap; }
973
+ .flex-1 { flex: 1 1 0%; }
974
+ .w-full { width: 100%; }
975
+ .w-auto { width: auto; }
976
+ .max-w-sm { max-width: 24rem; }
977
+ .max-w-md { max-width: 28rem; }
978
+ .max-w-lg { max-width: 32rem; }
979
+ .max-w-xl { max-width: 36rem; }
980
+ .max-w-2xl { max-width: 42rem; }
981
+ .max-w-3xl { max-width: 48rem; }
982
+ .max-w-4xl { max-width: 56rem; }
983
+ .max-w-5xl { max-width: 64rem; }
984
+ .max-w-6xl { max-width: 72rem; }
985
+ .max-w-7xl { max-width: 80rem; }
986
+ .mx-auto { margin-left: auto; margin-right: auto; }
987
+ .text-center { text-align: center; }
988
+ .text-left { text-align: left; }
989
+ .text-right { text-align: right; }
990
+ .relative { position: relative; }
991
+ .absolute { position: absolute; }
992
+ /* --- Interaction --- */
993
+ .cursor-pointer { cursor: pointer; }
994
+ .select-none { user-select: none; }
995
+ .transition-all { transition: all 0.15s ease; }
996
+ .transition { transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease; }
997
+ .outline-none { outline: none; }
998
+ /* Focus ring for inputs */
999
+ .focus\\:ring-2:focus { box-shadow: 0 0 0 2px rgba(99,102,241,0.5); }
1000
+ .focus\\:ring-indigo-500:focus { box-shadow: 0 0 0 2px #6366f1; }
1001
+ /* --- Opacity --- */
1002
+ .opacity-50 { opacity: 0.5; }
1003
+ .opacity-75 { opacity: 0.75; }
1004
+ /* --- Overflow --- */
1005
+ .overflow-hidden { overflow: hidden; }
1006
+ .overflow-auto { overflow: auto; }
1007
+ /* --- Custom HoloScript trait animations --- */
894
1008
  .glow-btn:hover { box-shadow: 0 0 15px rgba(255,255,255,0.5); }
895
1009
  .lift-card { transition: transform 0.2s ease, box-shadow 0.2s ease; }
896
1010
  .lift-card:hover { transform: translateY(-4px); box-shadow: 0 10px 20px rgba(0,0,0,0.2); }
@@ -940,10 +1054,85 @@ export default ${safeName}Component;
940
1054
  </body>
941
1055
  </html>`;
942
1056
  }
1057
+ /** Build a semantic HTML block for @semantic_entity / @semantic_layout traits.
1058
+ *
1059
+ * HoloScript's `generate_semantic_ui` tool emits 3D-world-style objects
1060
+ * (`mesh`, `text`, `plane`) annotated with semantic traits:
1061
+ * @semantic_entity(stock_table) → config._arg0 = entity name
1062
+ * @semantic_layout(table, columns:["a","b","c"]) → config._arg0 = layout type
1063
+ * @content("Inventory Dashboard") → config._arg0 = text
1064
+ * @color("#16213e") → config._arg0 = bg colour
1065
+ *
1066
+ * Without this handler every semantic object falls through to `tag = 'div'` with
1067
+ * no content. This method maps the semantic vocabulary to real HTML elements so
1068
+ * the compiled page is actually perceivable.
1069
+ */
1070
+ generateSemanticHTMLBlock(traits) {
1071
+ const layoutType = traits.semantic_layout?._arg0 || traits.semantic_layout?.flow || traits.semantic_layout?.layout || traits.semantic_layout?.type;
1072
+ const entityName = traits.semantic_entity?._arg0 || traits.semantic_entity?.type || traits.semantic_entity?.name || traits.semantic_entity?.entity;
1073
+ const bgColor = traits.color?._arg0;
1074
+ const textContent = traits.content?._arg0;
1075
+ if (!layoutType && !entityName) return null;
1076
+ const styleAttr = bgColor ? ` style="background-color:${bgColor};padding:1rem;border-radius:0.5rem;margin-bottom:1rem;"` : ` style="padding:1rem;margin-bottom:1rem;"`;
1077
+ const isTableEntity = !!entityName && (entityName.includes("table") || entityName.includes("grid") || entityName.includes("list"));
1078
+ if (layoutType === "table" || isTableEntity && !layoutType) {
1079
+ const columns = traits.semantic_layout?.columns || [];
1080
+ const headerCells = columns.map(
1081
+ (col) => `<th style="padding:0.5rem 1rem;text-align:left;border-bottom:2px solid #334;">${col}</th>`
1082
+ ).join("");
1083
+ const sampleRow = columns.map((col) => `<td style="padding:0.5rem 1rem;">${col}</td>`).join("");
1084
+ return `<div${styleAttr} data-holo-semantic="table" data-holo-entity="${entityName || ""}">
1085
+ <table style="width:100%;border-collapse:collapse;">
1086
+ <thead><tr>${headerCells}</tr></thead>
1087
+ <tbody>
1088
+ <tr>${sampleRow}</tr>
1089
+ </tbody>
1090
+ </table>
1091
+ </div>`;
1092
+ }
1093
+ if (layoutType === "form" || entityName && entityName.includes("form")) {
1094
+ const fields = traits.semantic_layout?.fields || [];
1095
+ const inputs = fields.map(
1096
+ (f) => `<div style="margin-bottom:0.5rem;"><label style="display:block;margin-bottom:0.25rem;">${f}</label><input type="text" name="${f}" placeholder="${f}" style="width:100%;padding:0.4rem 0.6rem;border:1px solid #556;border-radius:0.25rem;background:#111;color:#eee;" /></div>`
1097
+ ).join("\n");
1098
+ return `<div${styleAttr} data-holo-semantic="form" data-holo-entity="${entityName || ""}">
1099
+ <form onsubmit="return false;">
1100
+ ${inputs}
1101
+ <button type="submit" style="padding:0.4rem 1rem;border-radius:0.25rem;background:#3b82f6;color:#fff;border:none;cursor:pointer;">Submit</button>
1102
+ </form>
1103
+ </div>`;
1104
+ }
1105
+ if (layoutType === "alert_list") {
1106
+ const filterLabel = traits.semantic_layout?.filter || "";
1107
+ return `<div${styleAttr} data-holo-semantic="alert_list" data-holo-entity="${entityName || ""}">
1108
+ <ul style="list-style:none;padding:0;margin:0;" data-holo-filter="${filterLabel}">
1109
+ <li style="padding:0.4rem 0.8rem;border-bottom:1px solid #446;">(no alerts)</li>
1110
+ </ul>
1111
+ </div>`;
1112
+ }
1113
+ if (layoutType === "dashboard_grid" || layoutType) {
1114
+ return `<div${styleAttr} data-holo-semantic="${layoutType}" data-holo-entity="${entityName || ""}"></div>`;
1115
+ }
1116
+ if (entityName && textContent) {
1117
+ const isButton = entityName.includes("button") || entityName.includes("btn") || entityName.includes("submit");
1118
+ if (isButton) {
1119
+ return `<div${styleAttr} data-holo-entity="${entityName}"><button type="button" style="padding:0.4rem 1rem;border-radius:0.25rem;background:#3b82f6;color:#fff;border:none;cursor:pointer;">${textContent}</button></div>`;
1120
+ }
1121
+ return `<div${styleAttr} data-holo-entity="${entityName}"><span>${textContent}</span></div>`;
1122
+ }
1123
+ if (entityName) {
1124
+ return `<div${styleAttr} data-holo-entity="${entityName}"></div>`;
1125
+ }
1126
+ return null;
1127
+ }
943
1128
  generateHTMLNode(obj, opts = {}) {
944
1129
  const node = obj;
945
1130
  const traits = this.extractTraits(obj);
946
1131
  const nodeType = typeof node.type === "string" ? node.type.toLowerCase() : void 0;
1132
+ if (traits.semantic_entity || traits.semantic_layout) {
1133
+ const block = this.generateSemanticHTMLBlock(traits);
1134
+ if (block) return block;
1135
+ }
947
1136
  let tag = traits.theme?.tag || traits.panel?.tag || nodeType || "div";
948
1137
  if ([
949
1138
  "nav",
@@ -1153,8 +1342,8 @@ chunkHCCQLAA4_cjs.__export(A2AAgentCardCompiler_exports, {
1153
1342
  exports.A2AAgentCardCompiler = void 0; var A2AAgentCardCompiler_default;
1154
1343
  var init_A2AAgentCardCompiler = chunkHCCQLAA4_cjs.__esm({
1155
1344
  "src/compiler/A2AAgentCardCompiler.ts"() {
1156
- chunkQWAR3GY6_cjs.init_CompilerBase();
1157
- exports.A2AAgentCardCompiler = class extends chunkQWAR3GY6_cjs.CompilerBase {
1345
+ chunkLODTHGST_cjs.init_CompilerBase();
1346
+ exports.A2AAgentCardCompiler = class extends chunkLODTHGST_cjs.CompilerBase {
1158
1347
  constructor(options = {}) {
1159
1348
  super();
1160
1349
  this.compilerName = "A2AAgentCardCompiler";
@@ -2215,9 +2404,9 @@ chunkHCCQLAA4_cjs.__export(NIRCompiler_exports, {
2215
2404
  exports.NIRCompiler = void 0; var NIRCompiler_default;
2216
2405
  var init_NIRCompiler = chunkHCCQLAA4_cjs.__esm({
2217
2406
  "src/compiler/NIRCompiler.ts"() {
2218
- chunkQWAR3GY6_cjs.init_CompilerBase();
2407
+ chunkLODTHGST_cjs.init_CompilerBase();
2219
2408
  init_NIRTraitMap();
2220
- exports.NIRCompiler = class extends chunkQWAR3GY6_cjs.CompilerBase {
2409
+ exports.NIRCompiler = class extends chunkLODTHGST_cjs.CompilerBase {
2221
2410
  constructor(options = {}) {
2222
2411
  super();
2223
2412
  this.compilerName = "NIRCompiler";
@@ -2593,8 +2782,8 @@ var CodeEditorCompiler = class {
2593
2782
  };
2594
2783
 
2595
2784
  // src/compiler/USDZPipeline.ts
2596
- chunk2VL6SJ33_cjs.init_DomainBlockCompilerMixin();
2597
- chunk4FDL7JLJ_cjs.init_R3FCompiler();
2785
+ chunkGH6C2QGW_cjs.init_DomainBlockCompilerMixin();
2786
+ chunkKAIVDEIG_cjs.init_R3FCompiler();
2598
2787
  function presetString(p, k) {
2599
2788
  const v = p[k];
2600
2789
  return typeof v === "string" ? v : void 0;
@@ -2825,8 +3014,8 @@ ${domainBlocksOutput}` : materials,
2825
3014
  const matName = `Material_${this.sanitizeName(obj.name)}`;
2826
3015
  const mat = { name: matName };
2827
3016
  const presetName = typeof material === "string" ? material : typeof materialPreset === "string" ? materialPreset : void 0;
2828
- if (presetName && chunk4FDL7JLJ_cjs.MATERIAL_PRESETS[presetName]) {
2829
- const preset = chunk4FDL7JLJ_cjs.MATERIAL_PRESETS[presetName];
3017
+ if (presetName && chunkKAIVDEIG_cjs.MATERIAL_PRESETS[presetName]) {
3018
+ const preset = chunkKAIVDEIG_cjs.MATERIAL_PRESETS[presetName];
2830
3019
  const colorStr = presetString(preset, "color");
2831
3020
  if (colorStr) mat.baseColor = this.hexToRGB(colorStr);
2832
3021
  const metal = presetNumber(preset, "metalness");
@@ -3327,59 +3516,59 @@ ${domainBlocksOutput}` : materials,
3327
3516
  generateDomainBlocks(composition) {
3328
3517
  const domainBlocks = composition.domainBlocks ?? [];
3329
3518
  if (domainBlocks.length === 0) return "";
3330
- const compiled = chunk2VL6SJ33_cjs.compileDomainBlocks(
3519
+ const compiled = chunkGH6C2QGW_cjs.compileDomainBlocks(
3331
3520
  domainBlocks,
3332
3521
  {
3333
3522
  material: (block) => {
3334
- const mat = chunk2VL6SJ33_cjs.compileMaterialBlock(block);
3335
- return chunk2VL6SJ33_cjs.materialToUSD(mat);
3523
+ const mat = chunkGH6C2QGW_cjs.compileMaterialBlock(block);
3524
+ return chunkGH6C2QGW_cjs.materialToUSD(mat);
3336
3525
  },
3337
3526
  physics: (block) => {
3338
- const phys = chunk2VL6SJ33_cjs.compilePhysicsBlock(block);
3527
+ const phys = chunkGH6C2QGW_cjs.compilePhysicsBlock(block);
3339
3528
  return `# Physics: ${phys.keyword} "${phys.name || ""}" \u2014 ${JSON.stringify(phys.properties)}`;
3340
3529
  },
3341
3530
  vfx: (block) => {
3342
- const ps = chunk2VL6SJ33_cjs.compileParticleBlock(block);
3343
- return chunk2VL6SJ33_cjs.particlesToUSD(ps);
3531
+ const ps = chunkGH6C2QGW_cjs.compileParticleBlock(block);
3532
+ return chunkGH6C2QGW_cjs.particlesToUSD(ps);
3344
3533
  },
3345
3534
  postfx: (block) => {
3346
- const pp = chunk2VL6SJ33_cjs.compilePostProcessingBlock(block);
3347
- return chunk2VL6SJ33_cjs.postProcessingToUSD(pp);
3535
+ const pp = chunkGH6C2QGW_cjs.compilePostProcessingBlock(block);
3536
+ return chunkGH6C2QGW_cjs.postProcessingToUSD(pp);
3348
3537
  },
3349
3538
  audio: (block) => {
3350
- const audio = chunk2VL6SJ33_cjs.compileAudioSourceBlock(block);
3351
- return chunk2VL6SJ33_cjs.audioSourceToUSD(audio);
3539
+ const audio = chunkGH6C2QGW_cjs.compileAudioSourceBlock(block);
3540
+ return chunkGH6C2QGW_cjs.audioSourceToUSD(audio);
3352
3541
  },
3353
3542
  weather: (block) => {
3354
- const weather = chunk2VL6SJ33_cjs.compileWeatherBlock(block);
3355
- return chunk2VL6SJ33_cjs.weatherToUSD(weather);
3543
+ const weather = chunkGH6C2QGW_cjs.compileWeatherBlock(block);
3544
+ return chunkGH6C2QGW_cjs.weatherToUSD(weather);
3356
3545
  },
3357
3546
  narrative: (block) => {
3358
- const narr = chunk2VL6SJ33_cjs.compileNarrativeBlock(block);
3359
- return chunk2VL6SJ33_cjs.narrativeToUSDA(narr);
3547
+ const narr = chunkGH6C2QGW_cjs.compileNarrativeBlock(block);
3548
+ return chunkGH6C2QGW_cjs.narrativeToUSDA(narr);
3360
3549
  },
3361
3550
  payment: (block) => {
3362
- const pay = chunk2VL6SJ33_cjs.compilePaymentBlock(block);
3363
- return chunk2VL6SJ33_cjs.paymentToUSDA(pay);
3551
+ const pay = chunkGH6C2QGW_cjs.compilePaymentBlock(block);
3552
+ return chunkGH6C2QGW_cjs.paymentToUSDA(pay);
3364
3553
  },
3365
3554
  healthcare: (block) => {
3366
- const h = chunk2VL6SJ33_cjs.compileHealthcareBlock(block);
3367
- return chunk2VL6SJ33_cjs.healthcareToUSDA(h);
3555
+ const h = chunkGH6C2QGW_cjs.compileHealthcareBlock(block);
3556
+ return chunkGH6C2QGW_cjs.healthcareToUSDA(h);
3368
3557
  },
3369
3558
  robotics: (block) => {
3370
- const r = chunk2VL6SJ33_cjs.compileRoboticsBlock(block);
3371
- return chunk2VL6SJ33_cjs.roboticsToUSDA(r);
3559
+ const r = chunkGH6C2QGW_cjs.compileRoboticsBlock(block);
3560
+ return chunkGH6C2QGW_cjs.roboticsToUSDA(r);
3372
3561
  },
3373
- iot: (block) => chunk2VL6SJ33_cjs.iotToUSDA(chunk2VL6SJ33_cjs.compileIoTBlock(block)),
3374
- dataviz: (block) => chunk2VL6SJ33_cjs.datavizToUSDA(chunk2VL6SJ33_cjs.compileDataVizBlock(block)),
3375
- education: (block) => chunk2VL6SJ33_cjs.educationToUSDA(chunk2VL6SJ33_cjs.compileEducationBlock(block)),
3376
- music: (block) => chunk2VL6SJ33_cjs.musicToUSDA(chunk2VL6SJ33_cjs.compileMusicBlock(block)),
3377
- architecture: (block) => chunk2VL6SJ33_cjs.architectureToUSDA(chunk2VL6SJ33_cjs.compileArchitectureBlock(block)),
3378
- web3: (block) => chunk2VL6SJ33_cjs.web3ToUSDA(chunk2VL6SJ33_cjs.compileWeb3Block(block)),
3379
- procedural: (block) => chunk2VL6SJ33_cjs.proceduralToUSDA(chunk2VL6SJ33_cjs.compileProceduralBlock(block)),
3380
- rendering: (block) => chunk2VL6SJ33_cjs.renderingToUSDA(chunk2VL6SJ33_cjs.compileRenderingBlock(block)),
3381
- navigation: (block) => chunk2VL6SJ33_cjs.navigationToUSDA(chunk2VL6SJ33_cjs.compileNavigationBlock(block)),
3382
- input: (block) => chunk2VL6SJ33_cjs.inputToUSDA(chunk2VL6SJ33_cjs.compileInputBlock(block))
3562
+ iot: (block) => chunkGH6C2QGW_cjs.iotToUSDA(chunkGH6C2QGW_cjs.compileIoTBlock(block)),
3563
+ dataviz: (block) => chunkGH6C2QGW_cjs.datavizToUSDA(chunkGH6C2QGW_cjs.compileDataVizBlock(block)),
3564
+ education: (block) => chunkGH6C2QGW_cjs.educationToUSDA(chunkGH6C2QGW_cjs.compileEducationBlock(block)),
3565
+ music: (block) => chunkGH6C2QGW_cjs.musicToUSDA(chunkGH6C2QGW_cjs.compileMusicBlock(block)),
3566
+ architecture: (block) => chunkGH6C2QGW_cjs.architectureToUSDA(chunkGH6C2QGW_cjs.compileArchitectureBlock(block)),
3567
+ web3: (block) => chunkGH6C2QGW_cjs.web3ToUSDA(chunkGH6C2QGW_cjs.compileWeb3Block(block)),
3568
+ procedural: (block) => chunkGH6C2QGW_cjs.proceduralToUSDA(chunkGH6C2QGW_cjs.compileProceduralBlock(block)),
3569
+ rendering: (block) => chunkGH6C2QGW_cjs.renderingToUSDA(chunkGH6C2QGW_cjs.compileRenderingBlock(block)),
3570
+ navigation: (block) => chunkGH6C2QGW_cjs.navigationToUSDA(chunkGH6C2QGW_cjs.compileNavigationBlock(block)),
3571
+ input: (block) => chunkGH6C2QGW_cjs.inputToUSDA(chunkGH6C2QGW_cjs.compileInputBlock(block))
3383
3572
  },
3384
3573
  (block) => `# Domain block: ${block.domain}/${block.keyword} "${block.name}"`
3385
3574
  );
@@ -3410,7 +3599,7 @@ _USDZPipeline.TEXTURE_CHANNEL_MAP = {
3410
3599
  var USDZPipeline = _USDZPipeline;
3411
3600
 
3412
3601
  // src/compiler/GaussianSplattingCompiler.ts
3413
- chunkQWAR3GY6_cjs.init_CompilerBase();
3602
+ chunkLODTHGST_cjs.init_CompilerBase();
3414
3603
  var GAUSSIAN_SPLAT_TRAIT_NAME = "gaussian_splat";
3415
3604
  var MULTIPLAYER_TRAIT_NAME = "multiplayer";
3416
3605
  function detectMultiUserSharedSort(composition) {
@@ -3436,7 +3625,7 @@ function objectHasBothTraits(obj) {
3436
3625
  return false;
3437
3626
  }
3438
3627
  var SHARED_SORT_SHADER_PATH = "packages/engine/src/gpu/shaders/splat-shared-sort.wgsl";
3439
- var GaussianSplattingCompiler = class extends chunkQWAR3GY6_cjs.CompilerBase {
3628
+ var GaussianSplattingCompiler = class extends chunkLODTHGST_cjs.CompilerBase {
3440
3629
  constructor(options = {}) {
3441
3630
  super();
3442
3631
  this.compilerName = "GaussianSplattingCompiler";
@@ -3608,17 +3797,7 @@ var GaussianSplattingCompiler = class extends chunkQWAR3GY6_cjs.CompilerBase {
3608
3797
  c11 *= invLen;
3609
3798
  c12 *= invLen;
3610
3799
  c22 *= invLen;
3611
- const ev = this.jacobiEigenvalues3([
3612
- c00,
3613
- c01,
3614
- c02,
3615
- c01,
3616
- c11,
3617
- c12,
3618
- c02,
3619
- c12,
3620
- c22
3621
- ]);
3800
+ const ev = this.jacobiEigenvalues3([c00, c01, c02, c01, c11, c12, c02, c12, c22]);
3622
3801
  const minScale = 1e-3;
3623
3802
  scales[i * 3] = Math.max(minScale, Math.sqrt(Math.abs(ev.values[0])));
3624
3803
  scales[i * 3 + 1] = Math.max(minScale, Math.sqrt(Math.abs(ev.values[1])));
@@ -4248,11 +4427,7 @@ function computeBounds(anchors) {
4248
4427
  const cx = (minX + maxX) / 2;
4249
4428
  const cy = (minY + maxY) / 2;
4250
4429
  const cz = (minZ + maxZ) / 2;
4251
- const halfSize = Math.max(
4252
- (maxX - minX) / 2,
4253
- (maxY - minY) / 2,
4254
- (maxZ - minZ) / 2
4255
- );
4430
+ const halfSize = Math.max((maxX - minX) / 2, (maxY - minY) / 2, (maxZ - minZ) / 2);
4256
4431
  return {
4257
4432
  min: { x: minX, y: minY, z: minZ },
4258
4433
  max: { x: maxX, y: maxY, z: maxZ },
@@ -5874,7 +6049,7 @@ function quickSafetyCheck(traits, calls, options = {}) {
5874
6049
  }
5875
6050
 
5876
6051
  // src/compiler/platform/CrossRealityTraitRegistry.ts
5877
- chunkAIA52I7T_cjs.init_PlatformConditional();
6052
+ chunkEBS32AJI_cjs.init_PlatformConditional();
5878
6053
  var CATEGORY_DEFAULT_EMBODIMENT = {
5879
6054
  vr: "FullAvatar",
5880
6055
  ar: "FloatingAgent",
@@ -5975,7 +6150,7 @@ var CrossRealityTraitRegistry = class {
5975
6150
  if (trait.applicablePlatforms.length === 0 && trait.applicableCategories.length === 0)
5976
6151
  return true;
5977
6152
  if (trait.applicablePlatforms.includes(platform)) return true;
5978
- const category = chunkAIA52I7T_cjs.platformCategory(platform);
6153
+ const category = chunkEBS32AJI_cjs.platformCategory(platform);
5979
6154
  return trait.applicableCategories.includes(category);
5980
6155
  }
5981
6156
  /** Resolve the default embodiment for a platform */
@@ -5983,13 +6158,13 @@ var CrossRealityTraitRegistry = class {
5983
6158
  if (platform in PLATFORM_EMBODIMENT_OVERRIDES) {
5984
6159
  return PLATFORM_EMBODIMENT_OVERRIDES[platform];
5985
6160
  }
5986
- const category = chunkAIA52I7T_cjs.platformCategory(platform);
6161
+ const category = chunkEBS32AJI_cjs.platformCategory(platform);
5987
6162
  return CATEGORY_DEFAULT_EMBODIMENT[category];
5988
6163
  }
5989
6164
  /** Validate a handoff path at compile time */
5990
6165
  validateHandoffPath(from, to) {
5991
- const fromCat = chunkAIA52I7T_cjs.platformCategory(from);
5992
- const toCat = chunkAIA52I7T_cjs.platformCategory(to);
6166
+ const fromCat = chunkEBS32AJI_cjs.platformCategory(from);
6167
+ const toCat = chunkEBS32AJI_cjs.platformCategory(to);
5993
6168
  if (fromCat === toCat) return { allowed: true, latencyBudgetMs: 100 };
5994
6169
  const rule = HANDOFF_PATH_RULES.find((r) => r.from === fromCat && r.to === toCat);
5995
6170
  if (!rule) return { allowed: true, latencyBudgetMs: 500 };
@@ -6002,7 +6177,7 @@ var CrossRealityTraitRegistry = class {
6002
6177
  }
6003
6178
  /** Get MVC budget for a target platform */
6004
6179
  getMVCBudget(platform) {
6005
- const category = chunkAIA52I7T_cjs.platformCategory(platform);
6180
+ const category = chunkEBS32AJI_cjs.platformCategory(platform);
6006
6181
  return MVC_BUDGET_CONSTRAINTS.find((b) => b.category === category) ?? MVC_BUDGET_CONSTRAINTS[0];
6007
6182
  }
6008
6183
  /** Get total registered trait count */
@@ -6162,7 +6337,7 @@ function createCrossRealityTraitRegistry() {
6162
6337
  }
6163
6338
 
6164
6339
  // src/compiler/platform/ModalitySelector.ts
6165
- chunkAIA52I7T_cjs.init_PlatformConditional();
6340
+ chunkEBS32AJI_cjs.init_PlatformConditional();
6166
6341
  var EMBODIMENT_TO_TARGET = {
6167
6342
  FullAvatar: { primary: "openxr", fallback: "r3f" },
6168
6343
  FloatingAgent: { primary: "visionos", fallback: "r3f" },
@@ -6194,8 +6369,8 @@ var PLATFORM_TARGET_OVERRIDES = {
6194
6369
  };
6195
6370
  function selectModality(platform, options = {}) {
6196
6371
  const reasoning = [];
6197
- const capabilities = chunkAIA52I7T_cjs.PLATFORM_CAPABILITIES[platform];
6198
- const category = chunkAIA52I7T_cjs.platformCategory(platform);
6372
+ const capabilities = chunkEBS32AJI_cjs.PLATFORM_CAPABILITIES[platform];
6373
+ const category = chunkEBS32AJI_cjs.platformCategory(platform);
6199
6374
  let embodiment;
6200
6375
  if (options.forceEmbodiment) {
6201
6376
  embodiment = options.forceEmbodiment;
@@ -6252,16 +6427,16 @@ function selectModality(platform, options = {}) {
6252
6427
  }
6253
6428
  function selectModalityForAll(options = {}) {
6254
6429
  const results = /* @__PURE__ */ new Map();
6255
- for (const platform of Object.keys(chunkAIA52I7T_cjs.PLATFORM_CAPABILITIES)) {
6430
+ for (const platform of Object.keys(chunkEBS32AJI_cjs.PLATFORM_CAPABILITIES)) {
6256
6431
  results.set(platform, selectModality(platform, options));
6257
6432
  }
6258
6433
  return results;
6259
6434
  }
6260
6435
  function bestCategoryForTraits(requiredCapabilities) {
6261
6436
  const categories = [];
6262
- for (const [cat, platforms] of Object.entries(chunkAIA52I7T_cjs.PLATFORM_CATEGORIES)) {
6437
+ for (const [cat, platforms] of Object.entries(chunkEBS32AJI_cjs.PLATFORM_CATEGORIES)) {
6263
6438
  const canSupport = platforms.some((platform) => {
6264
- const caps = chunkAIA52I7T_cjs.PLATFORM_CAPABILITIES[platform];
6439
+ const caps = chunkEBS32AJI_cjs.PLATFORM_CAPABILITIES[platform];
6265
6440
  return Object.entries(requiredCapabilities).every(([key, required]) => {
6266
6441
  if (typeof required === "boolean")
6267
6442
  return !required || caps[key] === true;
@@ -6288,7 +6463,7 @@ var CompilerBridge = class {
6288
6463
  if (this.initialized) return;
6289
6464
  try {
6290
6465
  const [parserModule, compilerModule] = await Promise.all([
6291
- import('./HoloScriptPlusParser-WKHRIH6T.cjs'),
6466
+ import('./HoloScriptPlusParser-QCGFPWIL.cjs'),
6292
6467
  import('./compiler/r3f.cjs')
6293
6468
  ]);
6294
6469
  this.modules = {
@@ -6878,7 +7053,7 @@ if __name__ == '__main__':
6878
7053
  `;
6879
7054
  }
6880
7055
  function compilePipelineSourceToNode(source, options = {}) {
6881
- const parsed = chunkKKFZ3B6J_cjs.parsePipeline(source);
7056
+ const parsed = chunk3VBO3IYQ_cjs.parsePipeline(source);
6882
7057
  if (!parsed.success || !parsed.pipeline) {
6883
7058
  return {
6884
7059
  success: false,
@@ -6891,7 +7066,7 @@ function compilePipelineSourceToNode(source, options = {}) {
6891
7066
  };
6892
7067
  }
6893
7068
  function compilePipelineSourceToPython(source, options = {}) {
6894
- const parsed = chunkKKFZ3B6J_cjs.parsePipeline(source);
7069
+ const parsed = chunk3VBO3IYQ_cjs.parsePipeline(source);
6895
7070
  if (!parsed.success || !parsed.pipeline) {
6896
7071
  return {
6897
7072
  success: false,
@@ -6974,5 +7149,5 @@ exports.runSafetyPass = runSafetyPass;
6974
7149
  exports.selectModality = selectModality;
6975
7150
  exports.selectModalityForAll = selectModalityForAll;
6976
7151
  exports.spatialPartition = spatialPartition;
6977
- //# sourceMappingURL=chunk-YTR32ZEB.cjs.map
6978
- //# sourceMappingURL=chunk-YTR32ZEB.cjs.map
7152
+ //# sourceMappingURL=chunk-C4GSLCHE.cjs.map
7153
+ //# sourceMappingURL=chunk-C4GSLCHE.cjs.map