@holoscript/core 6.0.4 → 6.1.2

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 (351) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -3
  3. package/bin/holoscript.cjs +3 -0
  4. package/dist/GLTFPipeline-SFIORFJU.js +16 -0
  5. package/dist/GLTFPipeline-VNNDPONV.cjs +37 -0
  6. package/dist/{HoloScriptPlusParser-BN6KVRCM.js → HoloScriptPlusParser-7FBIFUFC.js} +6 -5
  7. package/dist/{HoloScriptPlusParser-NC5FE6AL.cjs → HoloScriptPlusParser-A2W7OCN2.cjs} +17 -16
  8. package/dist/HoloScriptPlusParser-F2Z56FJR.js +10 -0
  9. package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +27 -0
  10. package/dist/{USDZExporter-UWGWNMMD.cjs → USDZExporter-3FWJ25JI.cjs} +344 -16
  11. package/dist/{USDZExporter-NTMBNTDB.js → USDZExporter-D2HQLQYK.js} +344 -16
  12. package/dist/agents/index.cjs +19 -0
  13. package/dist/agents/index.d.ts +100 -0
  14. package/dist/agents/index.js +17 -0
  15. package/dist/chunk-22W6NGYN.js +725 -0
  16. package/dist/{chunk-5OEOHAAW.cjs → chunk-27MPVJVZ.cjs} +64 -28
  17. package/dist/{chunk-RVYPEYPX.js → chunk-2A7FURVO.js} +44 -8
  18. package/dist/{chunk-XCWFGZAA.js → chunk-2B7WVIDZ.js} +11 -8
  19. package/dist/{chunk-NDQNIJEH.js → chunk-2BSMSUCE.js} +250 -24
  20. package/dist/chunk-2HLIGOKU.cjs +5546 -0
  21. package/dist/{chunk-EONILVMF.js → chunk-2M2DPHKB.js} +4 -4
  22. package/dist/{chunk-G7CT3EMP.cjs → chunk-2YSNA2F2.cjs} +319 -47
  23. package/dist/{chunk-IWI6J7FX.js → chunk-33XCOVE3.js} +5 -5
  24. package/dist/chunk-3FOKASKO.cjs +348 -0
  25. package/dist/{chunk-DXJQDCFL.js → chunk-4C57PR42.js} +3 -3
  26. package/dist/{chunk-MPXBVFHQ.js → chunk-4N4SXXWF.js} +4 -3
  27. package/dist/chunk-4PDEPEQW.cjs +41 -0
  28. package/dist/chunk-4R6HPSHJ.js +2176 -0
  29. package/dist/chunk-4R6SBXDB.js +45 -0
  30. package/dist/chunk-4SY77NA4.cjs +413 -0
  31. package/dist/{chunk-YCXFCXDS.js → chunk-4UUKPCY4.js} +668 -110
  32. package/dist/{chunk-LGGRPKTV.cjs → chunk-52ULD552.cjs} +114 -35
  33. package/dist/{chunk-L4G4RLXX.js → chunk-5CKA5SXU.js} +438 -22
  34. package/dist/chunk-5FSKKMR7.cjs +2092 -0
  35. package/dist/{chunk-FF3Q7ADR.js → chunk-5JEU52DW.js} +5 -3
  36. package/dist/chunk-5N54COB6.cjs +327 -0
  37. package/dist/chunk-5S7RKFGR.cjs +446 -0
  38. package/dist/{chunk-KED34ILP.js → chunk-6ASWLXXN.js} +21 -9
  39. package/dist/chunk-6CTRH7HT.cjs +1985 -0
  40. package/dist/{chunk-CAUCGUEA.cjs → chunk-6EX3I5P4.cjs} +6 -6
  41. package/dist/chunk-6FGQNDR4.js +5731 -0
  42. package/dist/{chunk-72EQECGT.cjs → chunk-6KMK2UXT.cjs} +122 -46
  43. package/dist/{chunk-G4VZTCIB.js → chunk-6L4VE27M.js} +33 -23
  44. package/dist/{chunk-ATSKSYVE.cjs → chunk-6S6TKNEA.cjs} +6478 -1738
  45. package/dist/chunk-77V4GTCA.js +596 -0
  46. package/dist/{chunk-ZP4D3CSX.cjs → chunk-7AD52FRS.cjs} +16 -16
  47. package/dist/chunk-A6KINLZJ.js +236 -0
  48. package/dist/chunk-AIA52I7T.cjs +543 -0
  49. package/dist/chunk-AIX25INK.cjs +602 -0
  50. package/dist/{chunk-B5TCIAPQ.cjs → chunk-AO4I2Z7M.cjs} +17 -18
  51. package/dist/{chunk-Q5SJOGHQ.cjs → chunk-BPICAGBV.cjs} +324 -199
  52. package/dist/chunk-BRQJKJGT.cjs +20 -0
  53. package/dist/{chunk-3FXV5S25.cjs → chunk-C37BHB7N.cjs} +6 -3
  54. package/dist/{chunk-XUTX5CBW.js → chunk-CBJY23VL.js} +3 -3
  55. package/dist/chunk-CIWWXYHZ.cjs +50 -0
  56. package/dist/{chunk-XXINBTZK.cjs → chunk-DIL6DDDN.cjs} +101 -45
  57. package/dist/chunk-DMXC24WV.js +404 -0
  58. package/dist/{chunk-PMGODDJA.cjs → chunk-DTGBOSEM.cjs} +12 -12
  59. package/dist/chunk-E7JP3BS3.cjs +61 -0
  60. package/dist/{chunk-HJJLD366.js → chunk-EKBKLK7P.js} +3 -3
  61. package/dist/chunk-EKYL4PE3.cjs +404 -0
  62. package/dist/{chunk-UPJBDCVF.js → chunk-EMMC5CSQ.js} +12 -8
  63. package/dist/{chunk-GGHSW2NN.js → chunk-EOBB6A4B.js} +6389 -1718
  64. package/dist/chunk-EOFNVCM6.js +325 -0
  65. package/dist/{chunk-FHQVYCH2.js → chunk-ER4GATIU.js} +7 -7
  66. package/dist/{chunk-N5FTS757.cjs → chunk-EXKSFGSX.cjs} +7 -148
  67. package/dist/{chunk-LK5IAVH6.cjs → chunk-EXUP2BUM.cjs} +27 -27
  68. package/dist/chunk-FDSGHPAK.js +130 -0
  69. package/dist/chunk-FEWUHQNM.cjs +144 -0
  70. package/dist/{chunk-5TOFIR6L.js → chunk-FGGJQRLZ.js} +5 -142
  71. package/dist/chunk-FHP6LXJS.js +415 -0
  72. package/dist/{chunk-7LCYLPW2.cjs → chunk-FJPADH77.cjs} +7 -4
  73. package/dist/{chunk-T36DDXSF.js → chunk-FXKTYFYA.js} +150 -25
  74. package/dist/chunk-G2LS3RFO.js +623 -0
  75. package/dist/chunk-GCMWDSBZ.cjs +729 -0
  76. package/dist/chunk-GJNCFRJU.cjs +125 -0
  77. package/dist/{chunk-Q4QX3AET.cjs → chunk-GMP623FG.cjs} +16 -13
  78. package/dist/{chunk-XD6IYDUX.js → chunk-GN3KDX4W.js} +119 -43
  79. package/dist/{chunk-QLEAOI3Q.cjs → chunk-GQYKQSTC.cjs} +10 -10
  80. package/dist/chunk-GTU2Z2WW.cjs +262 -0
  81. package/dist/chunk-GZG4KA4E.js +529 -0
  82. package/dist/{chunk-BND3ST2K.cjs → chunk-H3MGK7TX.cjs} +42 -32
  83. package/dist/{chunk-XRKWN5PL.cjs → chunk-H5DZIHJP.cjs} +14 -18
  84. package/dist/{chunk-Z34RLXRA.cjs → chunk-HANL7K2Q.cjs} +65 -50
  85. package/dist/{chunk-3SAK5KFL.cjs → chunk-HCCQLAA4.cjs} +2 -11
  86. package/dist/{chunk-LXJ4667L.cjs → chunk-HGVXZDSK.cjs} +108 -20
  87. package/dist/{chunk-3FJCK5XA.js → chunk-HRODTEEO.js} +30 -10
  88. package/dist/{chunk-HQUEA5R6.cjs → chunk-HZCQO4JM.cjs} +6 -6
  89. package/dist/{chunk-S565K7NK.js → chunk-I2O7TW6B.js} +12 -8
  90. package/dist/chunk-IHESJZSW.js +4490 -0
  91. package/dist/{chunk-FSF7EQVA.cjs → chunk-IRWWS72C.cjs} +63 -22
  92. package/dist/{chunk-5O6TQC6M.cjs → chunk-IVIA7K75.cjs} +689 -127
  93. package/dist/chunk-IVY74O6C.js +247 -0
  94. package/dist/chunk-J32ZJZJH.js +554 -0
  95. package/dist/chunk-J56PTA46.cjs +639 -0
  96. package/dist/chunk-JD7CIZ33.js +1949 -0
  97. package/dist/{chunk-T7LEXZUZ.cjs → chunk-JIYN45TV.cjs} +14 -15
  98. package/dist/{chunk-FFKU7BTK.cjs → chunk-KHPCJRI3.cjs} +24 -21
  99. package/dist/chunk-KKFZ3B6J.cjs +557 -0
  100. package/dist/chunk-KPJL34Y7.cjs +186 -0
  101. package/dist/{chunk-HE7ULERA.cjs → chunk-KQTPCYTG.cjs} +128 -44
  102. package/dist/{chunk-OFKWH2IP.js → chunk-KX76JUQY.js} +3 -3
  103. package/dist/{chunk-33LSUQDD.cjs → chunk-L63H3SQ4.cjs} +43 -31
  104. package/dist/{chunk-K6EKD26I.js → chunk-LAOCQJ2M.js} +64 -8
  105. package/dist/chunk-LM2VU56C.cjs +37 -0
  106. package/dist/chunk-M56JSP4A.js +400 -0
  107. package/dist/chunk-MBOOR7X4.js +18 -0
  108. package/dist/{chunk-XWPNTWDN.cjs → chunk-MJVIRCUV.cjs} +31 -27
  109. package/dist/{chunk-SDAMZIRE.js → chunk-MSMIFMBL.js} +135 -18
  110. package/dist/{chunk-56IF4NTA.js → chunk-MXFUTKCO.js} +18 -18
  111. package/dist/{chunk-6UEHYZ7V.cjs → chunk-MXJ5SS53.cjs} +447 -31
  112. package/dist/chunk-MYY4PMWX.cjs +264 -0
  113. package/dist/chunk-N75IH2HY.js +258 -0
  114. package/dist/{chunk-GVUR45UF.cjs → chunk-NG77ATEW.cjs} +7 -6
  115. package/dist/chunk-NW5G5FBQ.js +215 -0
  116. package/dist/{chunk-E3FWRT3Z.js → chunk-OEFY723R.js} +28 -13
  117. package/dist/chunk-OEV5RMZO.cjs +3042 -0
  118. package/dist/{chunk-X4ZF6CNE.cjs → chunk-OIQYIIO3.cjs} +7 -7
  119. package/dist/{chunk-2CWOLHTE.js → chunk-OL46QLBJ.js} +3 -11
  120. package/dist/chunk-OPZ7XDDI.js +487 -0
  121. package/dist/chunk-OSYNRVOV.cjs +243 -0
  122. package/dist/{chunk-TEWCN33Y.js → chunk-P7YIA5LN.js} +91 -7
  123. package/dist/chunk-PGANYCAG.cjs +220 -0
  124. package/dist/{chunk-CS2EMTGF.js → chunk-QAVXL2IH.js} +62 -21
  125. package/dist/{chunk-T4NKMBDL.js → chunk-QCCBXSCE.js} +1666 -756
  126. package/dist/{chunk-F4IULT7N.js → chunk-QPOQ7VPI.js} +16 -13
  127. package/dist/{chunk-6XSERL6L.js → chunk-QTPMJRGS.js} +3108 -2827
  128. package/dist/{chunk-F3HH56EB.cjs → chunk-QWNQ523V.cjs} +1730 -823
  129. package/dist/{chunk-R7MA7QWV.js → chunk-R3IVNY6P.js} +102 -23
  130. package/dist/chunk-R75BSDH7.cjs +50 -0
  131. package/dist/chunk-RAXUF5DF.cjs +2196 -0
  132. package/dist/{chunk-BF2235SI.cjs → chunk-RMHC2VG7.cjs} +2876 -2592
  133. package/dist/chunk-RUXGBKPS.cjs +4517 -0
  134. package/dist/{chunk-UERJ3YJV.js → chunk-S5IFXW6E.js} +113 -9
  135. package/dist/{chunk-27LWW5FU.cjs → chunk-S6YWHCKV.cjs} +5 -5
  136. package/dist/{chunk-WB4Z63GG.js → chunk-SIEXCILW.js} +3 -3
  137. package/dist/{chunk-CLYEIWA5.cjs → chunk-SLU6UPJI.cjs} +5 -3
  138. package/dist/{chunk-LZ266PCM.cjs → chunk-T5J7ZKP3.cjs} +446 -60
  139. package/dist/chunk-TDCNJHWO.js +341 -0
  140. package/dist/{chunk-IHOUYQIA.js → chunk-TG7O4WBC.js} +5 -5
  141. package/dist/chunk-THCK6ECW.js +2085 -0
  142. package/dist/chunk-TJHVSBP2.js +439 -0
  143. package/dist/chunk-TK74TR4H.js +5541 -0
  144. package/dist/{chunk-CDPGV4DN.js → chunk-U4NBQJBY.js} +14 -15
  145. package/dist/{chunk-NOZZ46QU.js → chunk-UD3DSHZM.js} +10 -14
  146. package/dist/chunk-UDMYRFDZ.js +3038 -0
  147. package/dist/{chunk-WDW67DZB.cjs → chunk-UOIGFQXC.cjs} +90 -68
  148. package/dist/{chunk-BU7VWW2K.js → chunk-URG2SJLK.js} +14 -15
  149. package/dist/{chunk-EQV4R3EV.cjs → chunk-V73NPPTM.cjs} +152 -35
  150. package/dist/chunk-VECQYRXL.js +474 -0
  151. package/dist/chunk-VEXPG4WN.js +1989 -0
  152. package/dist/{chunk-LDP5OK6G.js → chunk-VMLKSV26.js} +5 -5
  153. package/dist/{chunk-5BGSECRJ.cjs → chunk-VSK7W3O5.cjs} +47 -27
  154. package/dist/chunk-VVKVQZI6.js +55 -0
  155. package/dist/{chunk-YQK5JNFK.js → chunk-W55Z7QIX.js} +103 -15
  156. package/dist/{chunk-KSGXLT74.cjs → chunk-W6P2GBHH.cjs} +3 -3
  157. package/dist/{chunk-IBDG74G2.cjs → chunk-W6RW64BB.cjs} +7 -7
  158. package/dist/chunk-WDT3JTGM.cjs +483 -0
  159. package/dist/{chunk-HPS76H7Q.js → chunk-WKX5AMOY.js} +3 -3
  160. package/dist/chunk-WNNE3PO3.js +34 -0
  161. package/dist/{chunk-XG23EUQX.cjs → chunk-WRLUBRKS.cjs} +538 -312
  162. package/dist/{chunk-IFNQFCTM.js → chunk-WRNEH5MO.js} +79 -8
  163. package/dist/{chunk-54FHG2MX.js → chunk-WRWEX5ZF.js} +7 -4
  164. package/dist/{chunk-KCQ5NDYC.cjs → chunk-X3GJPRVK.cjs} +154 -80
  165. package/dist/{chunk-7AGYRWKW.cjs → chunk-XFXGA5IW.cjs} +126 -22
  166. package/dist/{chunk-TQSZUOW5.cjs → chunk-XHIV6326.cjs} +4 -4
  167. package/dist/chunk-XJAN7CZG.cjs +432 -0
  168. package/dist/chunk-XL6INWKT.js +121 -0
  169. package/dist/{chunk-E3UALNFA.js → chunk-XMWZG36H.js} +4 -4
  170. package/dist/{chunk-BKIGPPVM.js → chunk-XSFNHP2E.js} +6 -3
  171. package/dist/{chunk-H5Z7NASB.js → chunk-XT6JY5W5.js} +25 -3
  172. package/dist/chunk-XXZJEFKW.cjs +490 -0
  173. package/dist/chunk-Y3MWXQSB.cjs +5737 -0
  174. package/dist/chunk-YF2I3MV3.js +46 -0
  175. package/dist/{chunk-V3NN3HPP.js → chunk-YIMN575O.js} +437 -52
  176. package/dist/chunk-YIVFJNYV.js +176 -0
  177. package/dist/{chunk-MD6KDHVE.cjs → chunk-YKGPCZEE.cjs} +10 -10
  178. package/dist/chunk-YQELFNJV.js +39 -0
  179. package/dist/chunk-Z5XMPRNC.cjs +5390 -0
  180. package/dist/{chunk-3FYZOR7S.cjs → chunk-ZDSYWBIE.cjs} +18 -18
  181. package/dist/{chunk-6TZPZCOJ.cjs → chunk-ZKSS47EV.cjs} +24 -19
  182. package/dist/chunk-ZUL5AVTX.cjs +1993 -0
  183. package/dist/chunk-ZXBZVXDW.js +5386 -0
  184. package/dist/{chunk-DMG7C4H2.js → chunk-ZZ7RO2UQ.js} +312 -44
  185. package/dist/cli/holoscript-runner.cjs +200 -204
  186. package/dist/cli/holoscript-runner.js +144 -148
  187. package/dist/codebase/index.cjs +1 -1
  188. package/dist/codebase/index.js +1 -1
  189. package/dist/compiler/agent-inference.cjs +10 -7
  190. package/dist/compiler/agent-inference.js +6 -3
  191. package/dist/compiler/android-xr.cjs +12 -7
  192. package/dist/compiler/android-xr.js +10 -5
  193. package/dist/compiler/android.cjs +12 -8
  194. package/dist/compiler/android.js +10 -6
  195. package/dist/compiler/ar.cjs +9 -6
  196. package/dist/compiler/ar.js +7 -4
  197. package/dist/compiler/babylon.cjs +12 -8
  198. package/dist/compiler/babylon.js +11 -7
  199. package/dist/compiler/business-quest.cjs +43 -0
  200. package/dist/compiler/business-quest.js +4 -0
  201. package/dist/compiler/coco.cjs +1 -1
  202. package/dist/compiler/coco.js +1 -1
  203. package/dist/compiler/context.cjs +25 -0
  204. package/dist/compiler/context.d.ts +28 -0
  205. package/dist/compiler/context.js +8 -0
  206. package/dist/compiler/domain-block-utils.cjs +155 -152
  207. package/dist/compiler/domain-block-utils.js +7 -4
  208. package/dist/compiler/dtdl.cjs +10 -7
  209. package/dist/compiler/dtdl.js +7 -4
  210. package/dist/compiler/gltf-pipeline.cjs +9 -9
  211. package/dist/compiler/gltf-pipeline.js +2 -2
  212. package/dist/compiler/godot.cjs +9 -6
  213. package/dist/compiler/godot.js +8 -5
  214. package/dist/compiler/incremental.cjs +12 -7
  215. package/dist/compiler/incremental.js +7 -2
  216. package/dist/compiler/index.cjs +3550 -268
  217. package/dist/compiler/index.d.ts +404 -21
  218. package/dist/compiler/index.js +3280 -138
  219. package/dist/compiler/ios.cjs +11 -8
  220. package/dist/compiler/ios.js +9 -6
  221. package/dist/compiler/llm-provider-capabilities.cjs +25 -0
  222. package/dist/compiler/llm-provider-capabilities.d.ts +43 -0
  223. package/dist/compiler/llm-provider-capabilities.js +8 -0
  224. package/dist/compiler/multi-layer.cjs +14 -10
  225. package/dist/compiler/multi-layer.js +13 -9
  226. package/dist/compiler/nodetoy.cjs +5 -5
  227. package/dist/compiler/nodetoy.js +2 -2
  228. package/dist/compiler/openxr.cjs +10 -6
  229. package/dist/compiler/openxr.js +9 -5
  230. package/dist/compiler/playcanvas.cjs +10 -7
  231. package/dist/compiler/playcanvas.js +9 -6
  232. package/dist/compiler/r3f.cjs +17 -13
  233. package/dist/compiler/r3f.d.ts +22 -0
  234. package/dist/compiler/r3f.js +12 -8
  235. package/dist/compiler/remotion.cjs +1 -1
  236. package/dist/compiler/remotion.js +1 -1
  237. package/dist/compiler/reproducibility.cjs +1 -1
  238. package/dist/compiler/reproducibility.js +1 -1
  239. package/dist/compiler/sdf.cjs +10 -7
  240. package/dist/compiler/sdf.js +8 -5
  241. package/dist/compiler/semantic-scene.cjs +1 -1
  242. package/dist/compiler/semantic-scene.js +1 -1
  243. package/dist/compiler/state.cjs +9 -5
  244. package/dist/compiler/state.js +7 -3
  245. package/dist/compiler/trait-composition.cjs +11 -7
  246. package/dist/compiler/trait-composition.js +7 -3
  247. package/dist/compiler/unity.cjs +10 -6
  248. package/dist/compiler/unity.js +9 -5
  249. package/dist/compiler/unreal.cjs +11 -7
  250. package/dist/compiler/unreal.js +9 -5
  251. package/dist/compiler/urdf.cjs +20 -13
  252. package/dist/compiler/urdf.js +8 -5
  253. package/dist/compiler/usd-physics.cjs +10 -7
  254. package/dist/compiler/usd-physics.js +7 -4
  255. package/dist/compiler/visionos.cjs +10 -6
  256. package/dist/compiler/visionos.js +9 -5
  257. package/dist/compiler/vrchat.cjs +10 -7
  258. package/dist/compiler/vrchat.js +8 -5
  259. package/dist/compiler/vrr.cjs +10 -7
  260. package/dist/compiler/vrr.js +8 -5
  261. package/dist/compiler/wasm.cjs +13 -10
  262. package/dist/compiler/wasm.js +8 -5
  263. package/dist/compiler/webgpu.cjs +9 -6
  264. package/dist/compiler/webgpu.js +8 -5
  265. package/dist/constants.d.ts +3 -2
  266. package/dist/coordinators/index.cjs +1266 -0
  267. package/dist/coordinators/index.d.ts +260 -0
  268. package/dist/coordinators/index.js +1259 -0
  269. package/dist/debugger.cjs +9 -7
  270. package/dist/debugger.js +7 -5
  271. package/dist/entries/interop.cjs +23 -21
  272. package/dist/entries/interop.js +5 -3
  273. package/dist/entries/scripting.cjs +18 -18
  274. package/dist/entries/scripting.js +8 -8
  275. package/dist/hololand/index.cjs +146 -0
  276. package/dist/hololand/index.d.ts +70 -0
  277. package/dist/hololand/index.js +5 -0
  278. package/dist/index.cjs +20332 -18121
  279. package/dist/index.d.ts +1477 -40
  280. package/dist/index.js +19451 -17638
  281. package/dist/math/tropical-spmv.cjs +45 -0
  282. package/dist/math/tropical-spmv.js +4 -0
  283. package/dist/math/vec3.cjs +14 -14
  284. package/dist/math/vec3.js +2 -2
  285. package/dist/{ml-dsa-PHCWUBPX.cjs → ml-dsa-FSKBTE3W.cjs} +177 -90
  286. package/dist/{ml-dsa-WYLJHJO6.js → ml-dsa-Z7JDKW4L.js} +158 -71
  287. package/dist/paper-0c-spike/index.cjs +150 -0
  288. package/dist/paper-0c-spike/index.d.ts +29 -0
  289. package/dist/paper-0c-spike/index.js +141 -0
  290. package/dist/parser.cjs +45 -11
  291. package/dist/parser.d.ts +11 -0
  292. package/dist/parser.js +10 -8
  293. package/dist/{playwright-RL6GY4F7.cjs → playwright-3AT3AKTV.cjs} +1985 -1985
  294. package/dist/{playwright-5OSAPTNH.js → playwright-VZPDVUEQ.js} +3 -3
  295. package/dist/reconstruction/index.cjs +153 -0
  296. package/dist/reconstruction/index.d.ts +105 -0
  297. package/dist/reconstruction/index.js +8 -0
  298. package/dist/runtime.cjs +7 -5
  299. package/dist/runtime.js +6 -4
  300. package/dist/self-improvement/index.cjs +563 -0
  301. package/dist/self-improvement/index.js +545 -0
  302. package/dist/storage/index.cjs +10 -9
  303. package/dist/storage/index.js +3 -2
  304. package/dist/testing.cjs +25 -0
  305. package/dist/testing.d.ts +70 -0
  306. package/dist/testing.js +4 -0
  307. package/dist/tools/index.d.ts +22 -1
  308. package/dist/traitDocs/traitDocs.cjs +33 -0
  309. package/dist/traitDocs/traitDocs.d.ts +69 -0
  310. package/dist/traitDocs/traitDocs.js +7 -0
  311. package/dist/traits/botanical-lotus.cjs +41 -0
  312. package/dist/traits/botanical-lotus.d.ts +172 -0
  313. package/dist/traits/botanical-lotus.js +4 -0
  314. package/dist/traits/engines/index.cjs +520 -0
  315. package/dist/traits/engines/index.js +380 -0
  316. package/dist/traits/index.cjs +17630 -7881
  317. package/dist/traits/index.d.ts +197 -0
  318. package/dist/traits/index.js +16573 -7193
  319. package/dist/traits/simulation-solver-factory.cjs +13 -0
  320. package/dist/traits/simulation-solver-factory.d.ts +23 -0
  321. package/dist/traits/simulation-solver-factory.js +4 -0
  322. package/dist/traits/webcam-gaze.cjs +35 -0
  323. package/dist/traits/webcam-gaze.d.ts +17 -0
  324. package/dist/traits/webcam-gaze.js +4 -0
  325. package/dist/type-checker.cjs +6 -5
  326. package/dist/type-checker.js +4 -3
  327. package/dist/world/index.cjs +947 -0
  328. package/dist/world/index.d.ts +147 -0
  329. package/dist/world/index.js +939 -0
  330. package/dist/world-model/index.cjs +1446 -0
  331. package/dist/world-model/index.d.ts +119 -0
  332. package/dist/world-model/index.js +1414 -0
  333. package/dist/wot/index.cjs +29 -0
  334. package/dist/wot/index.js +4 -0
  335. package/package.json +153 -61
  336. package/dist/GLTFPipeline-DEN36VNK.js +0 -12
  337. package/dist/GLTFPipeline-YPCAK236.cjs +0 -33
  338. package/dist/chunk-4XSNJCLC.cjs +0 -1859
  339. package/dist/chunk-A7PIMZGU.js +0 -263
  340. package/dist/chunk-BWFJEM5A.js +0 -5419
  341. package/dist/chunk-CBJSLA2E.cjs +0 -5423
  342. package/dist/chunk-K3JDKWGI.cjs +0 -270
  343. package/dist/chunk-LSW7P7ML.js +0 -3675
  344. package/dist/chunk-MEASWI2Y.js +0 -126
  345. package/dist/chunk-NCUKG4SK.cjs +0 -3075
  346. package/dist/chunk-Q5JT3YML.cjs +0 -129
  347. package/dist/chunk-QGKNANZ3.js +0 -3071
  348. package/dist/chunk-S2N5TNMA.js +0 -1855
  349. package/dist/chunk-TSH3MSQU.cjs +0 -129
  350. package/dist/chunk-WGMEAYBG.js +0 -126
  351. package/dist/chunk-X6SEAXAX.cjs +0 -3681
@@ -1,24 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var chunkG7CT3EMP_cjs = require('../chunk-G7CT3EMP.cjs');
5
- var chunkTQSZUOW5_cjs = require('../chunk-TQSZUOW5.cjs');
6
- var chunkCLYEIWA5_cjs = require('../chunk-CLYEIWA5.cjs');
7
- var chunkLZ266PCM_cjs = require('../chunk-LZ266PCM.cjs');
8
- require('../chunk-GVUR45UF.cjs');
9
- require('../chunk-XG23EUQX.cjs');
10
- require('../chunk-KCQ5NDYC.cjs');
11
- require('../chunk-PMGODDJA.cjs');
12
- require('../chunk-MD6KDHVE.cjs');
13
- require('../chunk-CAUCGUEA.cjs');
14
- require('../chunk-3SAK5KFL.cjs');
4
+ var chunk2YSNA2F2_cjs = require('../chunk-2YSNA2F2.cjs');
5
+ var chunkSLU6UPJI_cjs = require('../chunk-SLU6UPJI.cjs');
6
+ var chunkXHIV6326_cjs = require('../chunk-XHIV6326.cjs');
7
+ var chunkR75BSDH7_cjs = require('../chunk-R75BSDH7.cjs');
8
+ var chunkT5J7ZKP3_cjs = require('../chunk-T5J7ZKP3.cjs');
9
+ require('../chunk-NG77ATEW.cjs');
10
+ require('../chunk-WRLUBRKS.cjs');
11
+ require('../chunk-X3GJPRVK.cjs');
12
+ require('../chunk-DTGBOSEM.cjs');
13
+ require('../chunk-YKGPCZEE.cjs');
14
+ require('../chunk-6EX3I5P4.cjs');
15
+ var chunkE7JP3BS3_cjs = require('../chunk-E7JP3BS3.cjs');
16
+ require('../chunk-HCCQLAA4.cjs');
15
17
  require('dotenv/config');
16
18
  var fs = require('fs');
17
19
  var path = require('path');
18
20
  var readline = require('readline');
19
21
  var child_process = require('child_process');
20
22
  var crypto = require('crypto');
21
- var runtime = require('@holoscript/engine/runtime');
22
23
 
23
24
  function _interopNamespace(e) {
24
25
  if (e && e.__esModule) return e;
@@ -42,6 +43,12 @@ var fs__namespace = /*#__PURE__*/_interopNamespace(fs);
42
43
  var path__namespace = /*#__PURE__*/_interopNamespace(path);
43
44
  var readline__namespace = /*#__PURE__*/_interopNamespace(readline);
44
45
 
46
+ chunkE7JP3BS3_cjs.init_safeJsonParse();
47
+ var engineRuntimeModule;
48
+ async function loadEngineRuntime() {
49
+ engineRuntimeModule ?? (engineRuntimeModule = await import('@holoscript/engine/runtime'));
50
+ return engineRuntimeModule;
51
+ }
45
52
  function defaultModelForProvider(provider) {
46
53
  switch (provider) {
47
54
  case "xai":
@@ -52,7 +59,7 @@ function defaultModelForProvider(provider) {
52
59
  return "brittney-qwen-v23:latest";
53
60
  case "anthropic":
54
61
  default:
55
- return "claude-sonnet-4-20250514";
62
+ return "claude-sonnet-4-6";
56
63
  }
57
64
  }
58
65
  function defaultToolProfileForProvider(provider) {
@@ -231,151 +238,108 @@ function parseArgs(argv) {
231
238
  }
232
239
  return opts;
233
240
  }
234
- function extractChatText(data) {
235
- const d = data;
236
- return d?.content?.[0]?.text ?? d?.choices?.[0]?.message?.content ?? d?.message?.content ?? d?.response ?? "";
237
- }
238
- function extractTokenUsage(data) {
239
- const d = data;
240
- const inputTokens = d?.usage?.input_tokens ?? d?.usage?.prompt_tokens ?? d?.prompt_eval_count ?? 0;
241
- const outputTokens = d?.usage?.output_tokens ?? d?.usage?.completion_tokens ?? d?.eval_count ?? 0;
242
- return {
243
- inputTokens: Number.isFinite(inputTokens) ? Number(inputTokens) : 0,
244
- outputTokens: Number.isFinite(outputTokens) ? Number(outputTokens) : 0
245
- };
246
- }
247
- function createDaemonLLMProvider(opts) {
241
+ async function createDaemonLLMProvider(opts) {
242
+ const {
243
+ AnthropicAdapter,
244
+ XAIAdapter,
245
+ OpenAIAdapter,
246
+ LocalLLMAdapter
247
+ } = await import('@holoscript/llm-provider');
248
248
  if (opts.provider === "anthropic") {
249
+ const adapter2 = new AnthropicAdapter({
250
+ apiKey: process.env.ANTHROPIC_API_KEY || "",
251
+ defaultModel: opts.model
252
+ });
249
253
  return {
250
254
  chat: async ({ system, prompt, maxTokens }) => {
251
- const apiKey = process.env.ANTHROPIC_API_KEY;
252
- if (!apiKey) throw new Error("ANTHROPIC_API_KEY not set");
253
- const response = await fetch("https://api.anthropic.com/v1/messages", {
254
- method: "POST",
255
- headers: {
256
- "x-api-key": apiKey,
257
- "anthropic-version": "2023-06-01",
258
- "content-type": "application/json"
259
- },
260
- body: JSON.stringify({
261
- model: opts.model,
262
- max_tokens: maxTokens || 4096,
263
- system,
264
- messages: [{ role: "user", content: prompt }]
265
- })
255
+ const result = await adapter2.complete({
256
+ messages: [
257
+ { role: "system", content: system },
258
+ { role: "user", content: prompt }
259
+ ],
260
+ maxTokens: maxTokens || 4096,
261
+ temperature: 0.2
266
262
  });
267
- if (!response.ok) {
268
- const body = await response.text().catch(() => "");
269
- throw new Error(`Anthropic API ${response.status}: ${body.slice(0, 200)}`);
270
- }
271
- const data = await response.json();
272
- const usage = extractTokenUsage(data);
273
263
  return {
274
- text: extractChatText(data),
275
- inputTokens: usage.inputTokens,
276
- outputTokens: usage.outputTokens
264
+ text: result.content,
265
+ inputTokens: result.usage?.promptTokens ?? 0,
266
+ outputTokens: result.usage?.completionTokens ?? 0
277
267
  };
278
268
  }
279
269
  };
280
270
  }
281
271
  if (opts.provider === "xai") {
272
+ const adapter2 = new XAIAdapter({
273
+ apiKey: process.env.XAI_API_KEY || "",
274
+ defaultModel: opts.model
275
+ });
282
276
  return {
283
277
  chat: async ({ system, prompt, maxTokens }) => {
284
- const apiKey = process.env.XAI_API_KEY;
285
- if (!apiKey) throw new Error("XAI_API_KEY not set");
286
- const response = await fetch("https://api.x.ai/v1/chat/completions", {
287
- method: "POST",
288
- headers: {
289
- Authorization: `Bearer ${apiKey}`,
290
- "content-type": "application/json"
291
- },
292
- body: JSON.stringify({
293
- model: opts.model,
294
- max_tokens: maxTokens || 4096,
295
- temperature: 0.2,
296
- messages: [
297
- { role: "system", content: system },
298
- { role: "user", content: prompt }
299
- ]
300
- })
278
+ const result = await adapter2.complete({
279
+ messages: [
280
+ { role: "system", content: system },
281
+ { role: "user", content: prompt }
282
+ ],
283
+ maxTokens: maxTokens || 4096,
284
+ temperature: 0.2
301
285
  });
302
- if (!response.ok) {
303
- const body = await response.text().catch(() => "");
304
- throw new Error(`xAI API ${response.status}: ${body.slice(0, 200)}`);
305
- }
306
- const data = await response.json();
307
- const usage = extractTokenUsage(data);
308
286
  return {
309
- text: extractChatText(data),
310
- inputTokens: usage.inputTokens,
311
- outputTokens: usage.outputTokens
287
+ text: result.content,
288
+ inputTokens: result.usage?.promptTokens ?? 0,
289
+ outputTokens: result.usage?.completionTokens ?? 0
312
290
  };
313
291
  }
314
292
  };
315
293
  }
316
294
  if (opts.provider === "openai") {
295
+ const adapter2 = new OpenAIAdapter({
296
+ apiKey: process.env.OPENAI_API_KEY || "",
297
+ defaultModel: opts.model,
298
+ ...process.env.OPENAI_BASE_URL && { baseURL: process.env.OPENAI_BASE_URL }
299
+ });
317
300
  return {
318
301
  chat: async ({ system, prompt, maxTokens }) => {
319
- const apiKey = process.env.OPENAI_API_KEY;
320
- if (!apiKey) throw new Error("OPENAI_API_KEY not set");
321
- const baseUrl = process.env.OPENAI_BASE_URL || "https://api.openai.com/v1";
322
- const response = await fetch(`${baseUrl}/chat/completions`, {
323
- method: "POST",
324
- headers: {
325
- Authorization: `Bearer ${apiKey}`,
326
- "content-type": "application/json"
327
- },
328
- body: JSON.stringify({
329
- model: opts.model,
330
- max_tokens: maxTokens || 4096,
331
- temperature: 0.2,
332
- messages: [
333
- { role: "system", content: system },
334
- { role: "user", content: prompt }
335
- ]
336
- })
302
+ const result = await adapter2.complete({
303
+ messages: [
304
+ { role: "system", content: system },
305
+ { role: "user", content: prompt }
306
+ ],
307
+ maxTokens: maxTokens || 4096,
308
+ temperature: 0.2
337
309
  });
338
- if (!response.ok) {
339
- const body = await response.text().catch(() => "");
340
- throw new Error(`OpenAI API ${response.status}: ${body.slice(0, 200)}`);
341
- }
342
- const data = await response.json();
343
- const usage = extractTokenUsage(data);
344
310
  return {
345
- text: extractChatText(data),
346
- inputTokens: usage.inputTokens,
347
- outputTokens: usage.outputTokens
311
+ text: result.content,
312
+ inputTokens: result.usage?.promptTokens ?? 0,
313
+ outputTokens: result.usage?.completionTokens ?? 0
348
314
  };
349
315
  }
350
316
  };
351
317
  }
318
+ const ollamaUrl = process.env.OLLAMA_BASE_URL || process.env.OLLAMA_URL;
319
+ if (!ollamaUrl) {
320
+ throw new Error(
321
+ "Ollama selected but OLLAMA_BASE_URL/OLLAMA_URL not set. Use --provider anthropic|xai|openai or set OLLAMA_BASE_URL in .env"
322
+ );
323
+ }
324
+ const adapter = new LocalLLMAdapter({
325
+ baseURL: ollamaUrl,
326
+ defaultModel: opts.model,
327
+ timeoutMs: 12e4
328
+ });
352
329
  return {
353
330
  chat: async ({ system, prompt }) => {
354
- const baseUrl = process.env.OLLAMA_BASE_URL || process.env.OLLAMA_URL;
355
- if (!baseUrl) throw new Error("Ollama selected but OLLAMA_BASE_URL/OLLAMA_URL not set. Use --provider anthropic|xai|openai or set OLLAMA_BASE_URL in .env");
356
- const response = await fetch(`${baseUrl}/api/generate`, {
357
- method: "POST",
358
- headers: { "content-type": "application/json" },
359
- body: JSON.stringify({
360
- model: opts.model,
361
- system,
362
- prompt,
363
- stream: false,
364
- options: {
365
- temperature: 0.2
366
- }
367
- })
331
+ const result = await adapter.complete({
332
+ messages: [
333
+ { role: "system", content: system },
334
+ { role: "user", content: prompt }
335
+ ],
336
+ maxTokens: 4096,
337
+ temperature: 0.2
368
338
  });
369
- if (!response.ok) {
370
- const body = await response.text().catch(() => "");
371
- throw new Error(`Ollama API ${response.status}: ${body.slice(0, 200)}`);
372
- }
373
- const data = await response.json();
374
- const usage = extractTokenUsage(data);
375
339
  return {
376
- text: extractChatText(data),
377
- inputTokens: usage.inputTokens,
378
- outputTokens: usage.outputTokens
340
+ text: result.content,
341
+ inputTokens: result.usage?.promptTokens ?? 0,
342
+ outputTokens: result.usage?.completionTokens ?? 0
379
343
  };
380
344
  }
381
345
  };
@@ -475,6 +439,33 @@ function runTicks(runtime, count) {
475
439
  runtime.tick();
476
440
  }
477
441
  }
442
+ function getDaemonState(runtime, key) {
443
+ if (typeof key === "string") {
444
+ if (typeof runtime.get === "function") {
445
+ return runtime.get(key);
446
+ }
447
+ const value = runtime.getState(key);
448
+ if (value && typeof value === "object" && key in value) {
449
+ return value[key];
450
+ }
451
+ return value;
452
+ }
453
+ if (typeof runtime.getAllState === "function") {
454
+ return runtime.getAllState();
455
+ }
456
+ return runtime.getState();
457
+ }
458
+ function setDaemonState(runtime, key, value) {
459
+ if (typeof runtime.set === "function") {
460
+ runtime.set(key, value);
461
+ return;
462
+ }
463
+ if (runtime.setState.length <= 1) {
464
+ runtime.setState({ [key]: value });
465
+ return;
466
+ }
467
+ runtime.setState(key, value);
468
+ }
478
469
  async function runDaemon(runtime, opts) {
479
470
  const supportsEvents = typeof runtime.emit === "function";
480
471
  const supportsStats = typeof runtime.getStats === "function";
@@ -535,7 +526,7 @@ async function runDaemon(runtime, opts) {
535
526
  if (!raw) return;
536
527
  let command;
537
528
  try {
538
- command = JSON.parse(raw);
529
+ command = chunkE7JP3BS3_cjs.readJson(raw);
539
530
  } catch {
540
531
  send({ type: "daemon:error", error: "Invalid JSON command" });
541
532
  return;
@@ -559,14 +550,14 @@ async function runDaemon(runtime, opts) {
559
550
  }
560
551
  case "state:get": {
561
552
  const key = command?.key;
562
- const value = typeof key === "string" ? runtime.getState(key) : runtime.getAllState?.();
553
+ const value = getDaemonState(runtime, key);
563
554
  send({ type: "daemon:ok", op, key, value });
564
555
  break;
565
556
  }
566
557
  case "state:set": {
567
558
  const key = command?.key;
568
559
  if (typeof key === "string") {
569
- runtime.setState(key, command.value);
560
+ setDaemonState(runtime, key, command.value);
570
561
  send({ type: "daemon:ok", op, key });
571
562
  } else {
572
563
  send({ type: "daemon:error", op, error: "state:set requires string key" });
@@ -693,21 +684,22 @@ async function runScript(opts) {
693
684
  const source = fs__namespace.readFileSync(filePath, "utf-8");
694
685
  const ext = path__namespace.extname(filePath);
695
686
  console.log(`[holoscript] Running ${path__namespace.basename(filePath)} (target: ${opts.target})`);
696
- const parseResult = chunkLZ266PCM_cjs.parse(source);
687
+ const parseResult = chunkT5J7ZKP3_cjs.parse(source);
697
688
  const ast = parseResult.ast;
698
689
  if (opts.debug) {
699
690
  console.log(`[holoscript] Parsed ${ast.body?.length || 0} top-level nodes`);
700
691
  console.log(`[holoscript] File type: ${ext}`);
701
692
  }
702
- const profile = opts.profile === "headless" ? runtime.HEADLESS_PROFILE : runtime.getProfile(opts.profile);
703
- const runtime$1 = runtime.createHeadlessRuntime(ast, {
693
+ const { createHeadlessRuntime, getProfile, HEADLESS_PROFILE } = await loadEngineRuntime();
694
+ const profile = opts.profile === "headless" ? HEADLESS_PROFILE : getProfile(opts.profile);
695
+ const runtime = createHeadlessRuntime(ast, {
704
696
  profile,
705
697
  tickRate: 10,
706
698
  debug: opts.debug,
707
699
  hostCapabilities: createNodeHostCapabilities(path__namespace.dirname(filePath))
708
700
  });
709
- chunkG7CT3EMP_cjs.registerStdlib(
710
- runtime$1,
701
+ chunk2YSNA2F2_cjs.registerStdlib(
702
+ runtime,
711
703
  {
712
704
  policy: {
713
705
  rootDir: path__namespace.dirname(filePath),
@@ -723,28 +715,28 @@ async function runScript(opts) {
723
715
  hostCapabilities: createNodeHostCapabilities(path__namespace.dirname(filePath))
724
716
  }
725
717
  );
726
- new chunkCLYEIWA5_cjs.InteropContext(path__namespace.dirname(filePath));
718
+ new chunkSLU6UPJI_cjs.InteropContext(path__namespace.dirname(filePath));
727
719
  if (opts.debug) {
728
720
  console.log(`[holoscript] Profile: ${profile.name}`);
729
721
  console.log(`[holoscript] Interop context: ${path__namespace.dirname(filePath)}`);
730
722
  }
731
- runtime$1.start();
723
+ runtime.start();
732
724
  if (opts.daemon) {
733
725
  if (opts.debug) {
734
726
  console.log("[holoscript] Entering daemon mode");
735
727
  }
736
- await runDaemon(runtime$1, opts);
728
+ await runDaemon(runtime, opts);
737
729
  return;
738
730
  }
739
- runTicks(runtime$1, opts.ticks);
740
- runtime$1.stop();
741
- const stats = runtime$1.getStats();
731
+ runTicks(runtime, opts.ticks);
732
+ runtime.stop();
733
+ const stats = runtime.getStats();
742
734
  console.log(
743
735
  `[holoscript] Complete \u2014 ${stats.tickCount} ticks, ${stats.nodesProcessed} nodes processed`
744
736
  );
745
737
  if (opts.watch) {
746
738
  console.log(`[holoscript] Watching for changes... (Ctrl+C to stop)`);
747
- const watcher = new chunkTQSZUOW5_cjs.HotReloadWatcher({
739
+ const watcher = new chunkXHIV6326_cjs.HotReloadWatcher({
748
740
  watchPaths: [path__namespace.dirname(filePath)],
749
741
  extensions: [".hs", ".hsplus", ".holo"],
750
742
  debounceMs: 300,
@@ -756,10 +748,10 @@ async function runScript(opts) {
756
748
  console.log(`[holoscript] Re-running ${path__namespace.basename(filePath)}...`);
757
749
  try {
758
750
  const newSource = fs__namespace.readFileSync(filePath, "utf-8");
759
- const newParseResult = chunkLZ266PCM_cjs.parse(newSource);
751
+ const newParseResult = chunkT5J7ZKP3_cjs.parse(newSource);
760
752
  const newAst = newParseResult.ast;
761
- const newRuntime = runtime.createHeadlessRuntime(newAst, {
762
- profile: opts.profile === "headless" ? runtime.HEADLESS_PROFILE : runtime.getProfile(opts.profile),
753
+ const newRuntime = createHeadlessRuntime(newAst, {
754
+ profile: opts.profile === "headless" ? HEADLESS_PROFILE : getProfile(opts.profile),
763
755
  tickRate: 10,
764
756
  debug: opts.debug,
765
757
  hostCapabilities: createNodeHostCapabilities(path__namespace.dirname(filePath))
@@ -792,21 +784,23 @@ async function testScript(opts) {
792
784
  }
793
785
  const source = fs__namespace.readFileSync(filePath, "utf-8");
794
786
  console.log(`[holoscript test] Running tests in ${path__namespace.basename(filePath)}`);
795
- const parseResult = chunkLZ266PCM_cjs.parse(source);
787
+ const parseResult = chunkT5J7ZKP3_cjs.parse(source);
796
788
  const ast = parseResult.ast;
797
- const profile = runtime.HEADLESS_PROFILE;
798
- const runtime$1 = runtime.createHeadlessRuntime(ast, { profile, tickRate: 10, debug: opts.debug });
799
- runtime$1.start();
800
- for (let i = 0; i < 50; i++) runtime$1.tick();
801
- const runner = new chunkTQSZUOW5_cjs.ScriptTestRunner({
789
+ const { createHeadlessRuntime, HEADLESS_PROFILE } = await loadEngineRuntime();
790
+ const profile = HEADLESS_PROFILE;
791
+ const runtime = createHeadlessRuntime(ast, { profile, tickRate: 10, debug: opts.debug });
792
+ runtime.start();
793
+ const runtimeAccess = runtime;
794
+ for (let i = 0; i < 50; i++) runtimeAccess.tick();
795
+ const runner = new chunkXHIV6326_cjs.ScriptTestRunner({
802
796
  debug: opts.debug,
803
- runtimeState: runtime$1.getState()
797
+ runtimeState: runtimeAccess.getState()
804
798
  });
805
799
  const scriptResults = runner.runTestsFromSource(source, filePath);
806
- const runtimeState = runtime$1.getState();
807
- const compositionState = Object.keys(runtimeState).length > 0 ? runtimeState : chunkG7CT3EMP_cjs.CompositionTestRunner.extractStateFromSource(source);
808
- const computedDefs = chunkG7CT3EMP_cjs.CompositionTestRunner.extractComputedFromSource(source);
809
- const compositionRunner = new chunkG7CT3EMP_cjs.CompositionTestRunner(compositionState, computedDefs, {
800
+ const runtimeState = runtimeAccess.getState();
801
+ const compositionState = Object.keys(runtimeState).length > 0 ? runtimeState : chunk2YSNA2F2_cjs.CompositionTestRunner.extractStateFromSource(source);
802
+ const computedDefs = chunk2YSNA2F2_cjs.CompositionTestRunner.extractComputedFromSource(source);
803
+ const compositionRunner = new chunk2YSNA2F2_cjs.CompositionTestRunner(compositionState, computedDefs, {
810
804
  debug: opts.debug
811
805
  });
812
806
  const compositionResults = compositionRunner.runTestsFromSource(source);
@@ -869,7 +863,7 @@ function compileScript(opts) {
869
863
  }
870
864
  console.log(`[holoscript compile] @gotcha check passed (no critical violations)`);
871
865
  }
872
- const compileResult = chunkLZ266PCM_cjs.parse(source);
866
+ const compileResult = chunkT5J7ZKP3_cjs.parse(source);
873
867
  if (!compileResult.success) {
874
868
  console.error(`[holoscript compile] Failed to parse: ${compileResult.errors?.[0]?.message}`);
875
869
  process.exit(1);
@@ -948,7 +942,7 @@ async function deployScript(opts) {
948
942
  const fileName = path__namespace.basename(filePath);
949
943
  const title = path__namespace.basename(filePath, path__namespace.extname(filePath));
950
944
  console.log(`Parsing ${fileName}...`);
951
- const ast = chunkLZ266PCM_cjs.parse(source);
945
+ const ast = chunkT5J7ZKP3_cjs.parse(source);
952
946
  if (ast.errors && ast.errors.length > 0) {
953
947
  console.error("Parse errors:");
954
948
  for (const err of ast.errors) {
@@ -957,7 +951,7 @@ async function deployScript(opts) {
957
951
  process.exit(1);
958
952
  }
959
953
  const license = opts.license || "free";
960
- const provenance = chunkG7CT3EMP_cjs.generateProvenance(source, ast, {
954
+ const provenance = chunkR75BSDH7_cjs.generateProvenance(source, ast, {
961
955
  author: opts.author || "anonymous",
962
956
  license
963
957
  });
@@ -969,7 +963,7 @@ async function deployScript(opts) {
969
963
  path: imp.path,
970
964
  license: "free"
971
965
  }));
972
- const licenseCheck = chunkG7CT3EMP_cjs.checkLicenseCompatibility(license, importedLicenses);
966
+ const licenseCheck = chunk2YSNA2F2_cjs.checkLicenseCompatibility(license, importedLicenses);
973
967
  if (licenseCheck.warnings.length > 0) {
974
968
  for (const w of licenseCheck.warnings) {
975
969
  console.log(` Warning: ${w}`);
@@ -988,20 +982,20 @@ async function deployScript(opts) {
988
982
  }
989
983
  const serverUrl = opts.serverUrl.replace(/\/$/, "");
990
984
  if (opts.publish) {
991
- const priceWei = chunkG7CT3EMP_cjs.ethToWei(opts.price || "0");
985
+ const priceWei = chunk2YSNA2F2_cjs.ethToWei(opts.price || "0");
992
986
  const importChain = provenance.imports.map((imp, i) => ({
993
987
  contentHash: imp.hash || `import-${i}`,
994
988
  author: imp.author || imp.path,
995
989
  depth: 1,
996
990
  children: []
997
991
  }));
998
- const revenuePreview = chunkG7CT3EMP_cjs.calculateRevenueDistribution(
992
+ const revenuePreview = chunk2YSNA2F2_cjs.calculateRevenueDistribution(
999
993
  priceWei,
1000
994
  provenance.author || "anonymous",
1001
995
  importChain
1002
996
  );
1003
997
  console.log("\nRevenue distribution:");
1004
- for (const line of chunkG7CT3EMP_cjs.formatRevenueDistribution(revenuePreview)) {
998
+ for (const line of chunk2YSNA2F2_cjs.formatRevenueDistribution(revenuePreview)) {
1005
999
  console.log(` ${line}`);
1006
1000
  }
1007
1001
  console.log(`
@@ -1040,7 +1034,7 @@ Publishing to protocol at ${serverUrl}...`);
1040
1034
  license: provenance.license,
1041
1035
  publishMode: provenance.publishMode,
1042
1036
  price: opts.price || "0",
1043
- referralBps: chunkG7CT3EMP_cjs.PROTOCOL_CONSTANTS.DEFAULT_REFERRAL_BPS,
1037
+ referralBps: chunk2YSNA2F2_cjs.PROTOCOL_CONSTANTS.DEFAULT_REFERRAL_BPS,
1044
1038
  metadataURI: `${serverUrl}/metadata/${provenance.hash}`,
1045
1039
  mintAsNFT: opts.mintNft,
1046
1040
  // Include scene data for CDN deploy
@@ -1168,7 +1162,7 @@ function absorbScript(opts) {
1168
1162
  console.log(
1169
1163
  `[holoscript absorb] ${path__namespace.basename(filePath)} (${language}) \u2192 ${path__namespace.basename(outputPath)}`
1170
1164
  );
1171
- const processor = new chunkTQSZUOW5_cjs.AbsorbProcessor();
1165
+ const processor = new chunkXHIV6326_cjs.AbsorbProcessor();
1172
1166
  const result = processor.absorb({ language, filePath, content });
1173
1167
  fs__namespace.writeFileSync(outputPath, result.generatedHSPlus, "utf-8");
1174
1168
  console.log(`[holoscript absorb] Extracted:`);
@@ -1310,7 +1304,7 @@ async function daemonScript(opts) {
1310
1304
  const { createDaemonActions, getDaemonFileState } = await import('@holoscript/absorb-service/daemon');
1311
1305
  const repoRoot = findGitRoot(path__namespace.dirname(filePath));
1312
1306
  const source = fs__namespace.readFileSync(filePath, "utf-8");
1313
- const parseResult = chunkLZ266PCM_cjs.parse(source);
1307
+ const parseResult = chunkT5J7ZKP3_cjs.parse(source);
1314
1308
  if (!parseResult.success || !parseResult.ast) {
1315
1309
  const errors = parseResult.errors?.map((e) => e.message).join(", ") || "unknown";
1316
1310
  console.error(`[daemon] Parse failed: ${errors}`);
@@ -1328,7 +1322,7 @@ async function daemonScript(opts) {
1328
1322
  const lockData = { pid: process.pid, time: Date.now(), heartbeat: Date.now() };
1329
1323
  if (fs__namespace.existsSync(lockFile)) {
1330
1324
  try {
1331
- const existing = JSON.parse(fs__namespace.readFileSync(lockFile, "utf-8"));
1325
+ const existing = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(lockFile, "utf-8"));
1332
1326
  const staleMs = 12e4;
1333
1327
  if (Date.now() - existing.heartbeat < staleMs) {
1334
1328
  console.error(
@@ -1438,7 +1432,7 @@ async function daemonScript(opts) {
1438
1432
  );
1439
1433
  }
1440
1434
  }
1441
- const llm = createDaemonLLMProvider(opts);
1435
+ const llm = await createDaemonLLMProvider(opts);
1442
1436
  const defaultFocusRotation = [
1443
1437
  "typefix",
1444
1438
  "coverage",
@@ -1497,14 +1491,14 @@ async function daemonScript(opts) {
1497
1491
  let daemonState = { ...daemonStateDefaults };
1498
1492
  if (fs__namespace.existsSync(stateFile)) {
1499
1493
  try {
1500
- daemonState = { ...daemonState, ...JSON.parse(fs__namespace.readFileSync(stateFile, "utf-8")) };
1494
+ daemonState = { ...daemonState, ...chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(stateFile, "utf-8")) };
1501
1495
  } catch {
1502
1496
  }
1503
1497
  }
1504
1498
  const fileStateFile = path__namespace.join(stateDir, "daemon-file-state.json");
1505
1499
  if (fs__namespace.existsSync(fileStateFile)) {
1506
1500
  try {
1507
- const fileState = JSON.parse(fs__namespace.readFileSync(fileStateFile, "utf-8"));
1501
+ const fileState = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(fileStateFile, "utf-8"));
1508
1502
  config.committedFiles = fileState.committed || [];
1509
1503
  config.failedFiles = fileState.failures || {};
1510
1504
  } catch {
@@ -1523,6 +1517,7 @@ async function daemonScript(opts) {
1523
1517
  cleanup();
1524
1518
  process.exit(1);
1525
1519
  }
1520
+ const { createHeadlessRuntime, HEADLESS_PROFILE } = await loadEngineRuntime();
1526
1521
  let convergenceStreak = 0;
1527
1522
  const CONVERGENCE_THRESHOLD = 3;
1528
1523
  let cycle = 0;
@@ -1534,7 +1529,7 @@ async function daemonScript(opts) {
1534
1529
  let wisdomEntries = [];
1535
1530
  try {
1536
1531
  if (fs__namespace.existsSync(wisdomFile)) {
1537
- wisdomEntries = JSON.parse(fs__namespace.readFileSync(wisdomFile, "utf-8"));
1532
+ wisdomEntries = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(wisdomFile, "utf-8"));
1538
1533
  }
1539
1534
  } catch {
1540
1535
  }
@@ -1565,7 +1560,7 @@ async function daemonScript(opts) {
1565
1560
  ...opts,
1566
1561
  provider: cycleProvider,
1567
1562
  model: cycleModel};
1568
- const cycleLlm = createDaemonLLMProvider(cycleOpts);
1563
+ const cycleLlm = await createDaemonLLMProvider(cycleOpts);
1569
1564
  config.provider = cycleProvider;
1570
1565
  config.model = cycleModel;
1571
1566
  config.toolProfile = cycleToolProfile;
@@ -1581,7 +1576,7 @@ async function daemonScript(opts) {
1581
1576
  [daemon] === Cycle ${cycle + 1}${opts.alwaysOn ? "" : `/${opts.cycles}`} | Focus: ${focus} ===`
1582
1577
  );
1583
1578
  }
1584
- const cycleAST = JSON.parse(JSON.stringify(compositionAST));
1579
+ const cycleAST = chunkE7JP3BS3_cjs.jsonClone(compositionAST);
1585
1580
  materializeTraits(cycleAST);
1586
1581
  const bbValues = {
1587
1582
  focus,
@@ -1593,20 +1588,20 @@ async function daemonScript(opts) {
1593
1588
  if (opts.debug) {
1594
1589
  console.log(`[daemon] Blackboard injection: focus=${focus}, daemon_file=${filePath}`);
1595
1590
  }
1596
- const runtime$1 = runtime.createHeadlessRuntime(cycleAST, {
1597
- profile: runtime.HEADLESS_PROFILE,
1591
+ const runtime = createHeadlessRuntime(cycleAST, {
1592
+ profile: HEADLESS_PROFILE,
1598
1593
  tickRate: 10,
1599
1594
  debug: opts.debug,
1600
1595
  hostCapabilities: createNodeHostCapabilities(repoRoot)
1601
1596
  });
1602
- activeRuntime = runtime$1;
1597
+ activeRuntime = runtime;
1603
1598
  for (const [name, handler] of Object.entries(actions)) {
1604
- runtime$1.registerAction(name, handler);
1599
+ runtime.registerAction(name, handler);
1605
1600
  }
1606
1601
  for (const [name, handler] of Object.entries(runtimeSkillActions)) {
1607
- runtime$1.registerAction(name, handler);
1602
+ runtime.registerAction(name, handler);
1608
1603
  }
1609
- daemonResult.wireTraitListeners(runtime$1);
1604
+ daemonResult.wireTraitListeners(runtime);
1610
1605
  const maxWaitMs = opts.timeout * 60 * 1e3;
1611
1606
  const btResult = await new Promise(
1612
1607
  (resolve2) => {
@@ -1617,7 +1612,7 @@ async function daemonScript(opts) {
1617
1612
  resolve2({ status: "timeout", blackboard: {} });
1618
1613
  }
1619
1614
  }, maxWaitMs);
1620
- runtime$1.on("bt_complete", (payload) => {
1615
+ runtime.on("bt_complete", (payload) => {
1621
1616
  if (!resolved) {
1622
1617
  resolved = true;
1623
1618
  clearTimeout(timeout);
@@ -1628,20 +1623,20 @@ async function daemonScript(opts) {
1628
1623
  });
1629
1624
  }
1630
1625
  });
1631
- runtime$1.start();
1626
+ runtime.start();
1632
1627
  }
1633
1628
  );
1634
1629
  const btStatus = btResult.status;
1635
1630
  const btBlackboard = btResult.blackboard;
1636
1631
  const durationSec = ((Date.now() - cycleStart) / 1e3).toFixed(1);
1637
- const stats = runtime$1.getStats();
1632
+ const stats = runtime.getStats();
1638
1633
  const inputTokens = btBlackboard.inputTokens || 0;
1639
1634
  const outputTokens = btBlackboard.outputTokens || 0;
1640
1635
  const qualityAfter = btBlackboard.quality_after || daemonState.lastQuality;
1641
1636
  const costUSD = inputTokens * 3 / 1e6 + outputTokens * 15 / 1e6;
1642
1637
  const committed = btBlackboard.committed_count || 0;
1643
1638
  const qualityDelta = qualityAfter - (config.qualityBefore || 0);
1644
- runtime$1.emit("daemon:cycle_raw_telemetry", {
1639
+ runtime.emit("daemon:cycle_raw_telemetry", {
1645
1640
  focus,
1646
1641
  ticks: stats.updateCount,
1647
1642
  inputTokens,
@@ -1651,20 +1646,20 @@ async function daemonScript(opts) {
1651
1646
  costUSD,
1652
1647
  committed: committed > 0
1653
1648
  });
1654
- runtime$1.emit("daemon:raw_quality", { value: qualityAfter, focus });
1649
+ runtime.emit("daemon:raw_quality", { value: qualityAfter, focus });
1655
1650
  const totalTokens = inputTokens + outputTokens;
1656
1651
  const costEfficiency = costUSD > 0 ? Math.min(1, qualityAfter * totalTokens / (costUSD * 5e5)) : qualityAfter;
1657
- runtime$1.emit("feedback:update_metric", { name: "cost_efficiency", value: costEfficiency });
1652
+ runtime.emit("feedback:update_metric", { name: "cost_efficiency", value: costEfficiency });
1658
1653
  const candidateCount = Array.isArray(btBlackboard.candidates) ? btBlackboard.candidates.length : 0;
1659
1654
  const emergenceRatio = candidateCount > 0 ? Math.min(1, committed / candidateCount) : 0;
1660
- runtime$1.emit("feedback:update_metric", { name: "emergence_ratio", value: emergenceRatio });
1655
+ runtime.emit("feedback:update_metric", { name: "emergence_ratio", value: emergenceRatio });
1661
1656
  const wisdomCount = btBlackboard.wisdomCount || 0;
1662
1657
  const regenerativeHealth = Math.min(1, wisdomCount / 200);
1663
- runtime$1.emit("feedback:update_metric", {
1658
+ runtime.emit("feedback:update_metric", {
1664
1659
  name: "regenerative_health",
1665
1660
  value: regenerativeHealth
1666
1661
  });
1667
- runtime$1.stop();
1662
+ runtime.stop();
1668
1663
  activeRuntime = null;
1669
1664
  const telemetryRecord = {
1670
1665
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -1861,7 +1856,7 @@ async function holoMeshDaemonScript(opts) {
1861
1856
  }
1862
1857
  const rawSource = fs__namespace.readFileSync(filePath, "utf-8");
1863
1858
  const source = rawSource.replace(/^#(version|target|mode)\s+.*/gm, "");
1864
- const parseResult = chunkLZ266PCM_cjs.parse(source);
1859
+ const parseResult = chunkT5J7ZKP3_cjs.parse(source);
1865
1860
  if (!parseResult.success || !parseResult.ast) {
1866
1861
  const errors = parseResult.errors?.map((e) => e.message).join(", ") || "unknown";
1867
1862
  console.error(`[holomesh-daemon] Parse failed: ${errors}`);
@@ -1877,7 +1872,7 @@ async function holoMeshDaemonScript(opts) {
1877
1872
  const lockData = { pid: process.pid, time: Date.now(), heartbeat: Date.now() };
1878
1873
  if (fs__namespace.existsSync(lockFile)) {
1879
1874
  try {
1880
- const existing = JSON.parse(fs__namespace.readFileSync(lockFile, "utf-8"));
1875
+ const existing = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(lockFile, "utf-8"));
1881
1876
  if (Date.now() - existing.heartbeat < 12e4) {
1882
1877
  console.error(
1883
1878
  `[holomesh-daemon] Another daemon is running (PID ${existing.pid}). Remove ${lockFile} to force.`
@@ -1956,24 +1951,25 @@ async function holoMeshDaemonScript(opts) {
1956
1951
  console.log(
1957
1952
  `[holomesh-daemon] ${Object.keys(actions).length} action handlers registered${v2Enabled ? ` (V2 P2P enabled, DID: ${localAgentDid})` : ""}${walletEnabled ? " (V3 Wallet enabled)" : ""}`
1958
1953
  );
1954
+ const { createHeadlessRuntime, HEADLESS_PROFILE } = await loadEngineRuntime();
1959
1955
  let cycle = 0;
1960
1956
  while (opts.alwaysOn || cycle < opts.cycles) {
1961
1957
  console.log(
1962
1958
  `
1963
1959
  [holomesh-daemon] === Cycle ${cycle + 1}${opts.alwaysOn ? "" : `/${opts.cycles}`} ===`
1964
1960
  );
1965
- const cycleAST = JSON.parse(JSON.stringify(compositionAST));
1961
+ const cycleAST = chunkE7JP3BS3_cjs.jsonClone(compositionAST);
1966
1962
  materializeTraits(cycleAST);
1967
- const runtime$1 = runtime.createHeadlessRuntime(cycleAST, {
1968
- profile: runtime.HEADLESS_PROFILE,
1963
+ const runtime = createHeadlessRuntime(cycleAST, {
1964
+ profile: HEADLESS_PROFILE,
1969
1965
  tickRate: 1,
1970
1966
  debug: opts.debug,
1971
1967
  hostCapabilities: createNodeHostCapabilities(path__namespace.dirname(filePath))
1972
1968
  });
1973
1969
  for (const [name, handler] of Object.entries(actions)) {
1974
- runtime$1.registerAction(name, handler);
1970
+ runtime.registerAction(name, handler);
1975
1971
  }
1976
- wireTraitListeners(runtime$1);
1972
+ wireTraitListeners(runtime);
1977
1973
  const maxWaitMs = (opts.timeout ?? 5) * 60 * 1e3;
1978
1974
  const btResult = await new Promise((resolve2) => {
1979
1975
  let resolved = false;
@@ -1983,16 +1979,16 @@ async function holoMeshDaemonScript(opts) {
1983
1979
  resolve2({ status: "timeout" });
1984
1980
  }
1985
1981
  }, maxWaitMs);
1986
- runtime$1.on("bt_complete", () => {
1982
+ runtime.on("bt_complete", () => {
1987
1983
  if (!resolved) {
1988
1984
  resolved = true;
1989
1985
  clearTimeout(timeout);
1990
1986
  resolve2({ status: "complete" });
1991
1987
  }
1992
1988
  });
1993
- runtime$1.start();
1989
+ runtime.start();
1994
1990
  });
1995
- runtime$1.stop();
1991
+ runtime.stop();
1996
1992
  console.log(`[holomesh-daemon] Cycle ${cycle + 1} ${btResult.status}`);
1997
1993
  cycle++;
1998
1994
  if (opts.alwaysOn || cycle < opts.cycles) {
@@ -2029,7 +2025,7 @@ async function daemonStatus(jsonOutput = false) {
2029
2025
  let lastHeartbeat = 0;
2030
2026
  if (fs__namespace.existsSync(lockFile)) {
2031
2027
  try {
2032
- const lock = JSON.parse(fs__namespace.readFileSync(lockFile, "utf-8"));
2028
+ const lock = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(lockFile, "utf-8"));
2033
2029
  lockPid = lock.pid;
2034
2030
  lastHeartbeat = lock.heartbeat;
2035
2031
  isRunning = Date.now() - lastHeartbeat < 12e4;
@@ -2040,7 +2036,7 @@ async function daemonStatus(jsonOutput = false) {
2040
2036
  let ds = {};
2041
2037
  if (fs__namespace.existsSync(stateFile)) {
2042
2038
  try {
2043
- ds = JSON.parse(fs__namespace.readFileSync(stateFile, "utf-8"));
2039
+ ds = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(stateFile, "utf-8"));
2044
2040
  } catch {
2045
2041
  }
2046
2042
  }
@@ -2051,7 +2047,7 @@ async function daemonStatus(jsonOutput = false) {
2051
2047
  };
2052
2048
  if (fs__namespace.existsSync(fileStateFile)) {
2053
2049
  try {
2054
- fileState = JSON.parse(fs__namespace.readFileSync(fileStateFile, "utf-8"));
2050
+ fileState = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(fileStateFile, "utf-8"));
2055
2051
  } catch {
2056
2052
  }
2057
2053
  }
@@ -2059,7 +2055,7 @@ async function daemonStatus(jsonOutput = false) {
2059
2055
  let wisdomCount = 0;
2060
2056
  if (fs__namespace.existsSync(wisdomFile)) {
2061
2057
  try {
2062
- wisdomCount = JSON.parse(fs__namespace.readFileSync(wisdomFile, "utf-8")).length;
2058
+ wisdomCount = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(wisdomFile, "utf-8")).length;
2063
2059
  } catch {
2064
2060
  }
2065
2061
  }
@@ -2067,7 +2063,7 @@ async function daemonStatus(jsonOutput = false) {
2067
2063
  let ledger = [];
2068
2064
  if (fs__namespace.existsSync(ledgerFile)) {
2069
2065
  try {
2070
- ledger = JSON.parse(fs__namespace.readFileSync(ledgerFile, "utf-8"));
2066
+ ledger = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(ledgerFile, "utf-8"));
2071
2067
  } catch {
2072
2068
  }
2073
2069
  }
@@ -2079,7 +2075,7 @@ async function daemonStatus(jsonOutput = false) {
2079
2075
  const lines = fs__namespace.readFileSync(telemetryFile, "utf-8").split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
2080
2076
  telemetryCount = lines.length;
2081
2077
  if (lines.length > 0) {
2082
- lastTelemetry = JSON.parse(lines[lines.length - 1]);
2078
+ lastTelemetry = chunkE7JP3BS3_cjs.readJson(lines[lines.length - 1]);
2083
2079
  }
2084
2080
  } catch {
2085
2081
  }