@holoscript/core 6.0.3 → 6.1.1

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 (368) hide show
  1. package/README.md +40 -40
  2. package/bin/holoscript.cjs +3 -0
  3. package/dist/GLTFPipeline-SFIORFJU.js +16 -0
  4. package/dist/GLTFPipeline-VNNDPONV.cjs +37 -0
  5. package/dist/{HoloScriptPlusParser-BZR5DELQ.js → HoloScriptPlusParser-7FBIFUFC.js} +6 -5
  6. package/dist/{HoloScriptPlusParser-SBMYDNXO.cjs → HoloScriptPlusParser-A2W7OCN2.cjs} +17 -16
  7. package/dist/HoloScriptPlusParser-F2Z56FJR.js +10 -0
  8. package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +27 -0
  9. package/dist/{USDZExporter-MHEHXZB4.cjs → USDZExporter-3FWJ25JI.cjs} +344 -16
  10. package/dist/{USDZExporter-YA55ZS35.js → USDZExporter-D2HQLQYK.js} +344 -16
  11. package/dist/agents/index.cjs +19 -0
  12. package/dist/agents/index.d.ts +100 -0
  13. package/dist/agents/index.js +17 -0
  14. package/dist/chunk-22W6NGYN.js +725 -0
  15. package/dist/{chunk-XSUZMPVQ.cjs → chunk-27MPVJVZ.cjs} +64 -28
  16. package/dist/{chunk-W76ETJTI.js → chunk-2A7FURVO.js} +44 -8
  17. package/dist/{chunk-C7BNX4XJ.js → chunk-2B7WVIDZ.js} +11 -8
  18. package/dist/chunk-2BSMSUCE.js +1941 -0
  19. package/dist/chunk-2HLIGOKU.cjs +5546 -0
  20. package/dist/{chunk-GC3YU46J.js → chunk-2M2DPHKB.js} +4 -4
  21. package/dist/{chunk-A6GO3DPZ.cjs → chunk-2YSNA2F2.cjs} +321 -49
  22. package/dist/{chunk-ZL6VJ6SN.js → chunk-33XCOVE3.js} +5 -5
  23. package/dist/chunk-3FOKASKO.cjs +348 -0
  24. package/dist/{chunk-XSF76QRU.js → chunk-4C57PR42.js} +3 -3
  25. package/dist/chunk-4N4SXXWF.js +769 -0
  26. package/dist/chunk-4PDEPEQW.cjs +41 -0
  27. package/dist/chunk-4R6SBXDB.js +45 -0
  28. package/dist/chunk-4SY77NA4.cjs +413 -0
  29. package/dist/{chunk-74YCHHTE.js → chunk-4UUKPCY4.js} +670 -116
  30. package/dist/{chunk-VZNKJZTT.cjs → chunk-52ULD552.cjs} +178 -113
  31. package/dist/{chunk-65RFOWZI.js → chunk-5CKA5SXU.js} +441 -23
  32. package/dist/chunk-5FSKKMR7.cjs +2092 -0
  33. package/dist/{chunk-FF3Q7ADR.js → chunk-5JEU52DW.js} +5 -3
  34. package/dist/chunk-5N54COB6.cjs +327 -0
  35. package/dist/chunk-5S7RKFGR.cjs +446 -0
  36. package/dist/{chunk-EJA7G2C4.cjs → chunk-5WUNN6ZN.cjs} +2 -2
  37. package/dist/{chunk-ELLQPFAF.js → chunk-6ASWLXXN.js} +24 -10
  38. package/dist/chunk-6CTRH7HT.cjs +1985 -0
  39. package/dist/{chunk-ARNKA274.cjs → chunk-6EX3I5P4.cjs} +6 -6
  40. package/dist/chunk-6FGQNDR4.js +5731 -0
  41. package/dist/{chunk-X4YVN7H3.cjs → chunk-6KMK2UXT.cjs} +152 -56
  42. package/dist/{chunk-KUJRR4FJ.js → chunk-6L4VE27M.js} +36 -24
  43. package/dist/{chunk-RT7LJRSF.cjs → chunk-6S6TKNEA.cjs} +7357 -8312
  44. package/dist/chunk-77V4GTCA.js +596 -0
  45. package/dist/{chunk-XH7SE4HH.cjs → chunk-7AD52FRS.cjs} +19 -19
  46. package/dist/chunk-7OPW2KO7.cjs +639 -0
  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-WN3YF33G.cjs → chunk-AO4I2Z7M.cjs} +15 -17
  51. package/dist/{chunk-TSWTWZ42.cjs → chunk-BPICAGBV.cjs} +376 -209
  52. package/dist/chunk-BRQJKJGT.cjs +20 -0
  53. package/dist/{chunk-3FXV5S25.cjs → chunk-C37BHB7N.cjs} +6 -3
  54. package/dist/{chunk-XNMEH2BI.js → chunk-CBJY23VL.js} +3 -3
  55. package/dist/chunk-CIWWXYHZ.cjs +50 -0
  56. package/dist/{chunk-NTMZSDXM.cjs → chunk-DIL6DDDN.cjs} +101 -45
  57. package/dist/chunk-DMXC24WV.js +404 -0
  58. package/dist/{chunk-SPDELRRV.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-7N3JIJMT.js → chunk-EMMC5CSQ.js} +12 -8
  63. package/dist/{chunk-EUFLX2PI.js → chunk-EOBB6A4B.js} +7263 -8214
  64. package/dist/chunk-EOFNVCM6.js +325 -0
  65. package/dist/{chunk-NKRKT6V2.js → chunk-ER4GATIU.js} +11 -10
  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-HBZYCASG.js → chunk-FXKTYFYA.js} +203 -36
  74. package/dist/chunk-GCMWDSBZ.cjs +729 -0
  75. package/dist/chunk-GJNCFRJU.cjs +125 -0
  76. package/dist/{chunk-I3XGTIHM.cjs → chunk-GMP623FG.cjs} +16 -13
  77. package/dist/{chunk-CNVM7J3M.js → chunk-GN3KDX4W.js} +149 -53
  78. package/dist/{chunk-WFJIDI2N.cjs → chunk-GQYKQSTC.cjs} +10 -10
  79. package/dist/chunk-GTU2Z2WW.cjs +262 -0
  80. package/dist/chunk-GZG4KA4E.js +529 -0
  81. package/dist/{chunk-DIEDKX5B.cjs → chunk-H3MGK7TX.cjs} +45 -33
  82. package/dist/{chunk-DN7UFU63.cjs → chunk-H5DZIHJP.cjs} +14 -17
  83. package/dist/{chunk-DH5G2JUA.cjs → chunk-HANL7K2Q.cjs} +66 -53
  84. package/dist/{chunk-EGIZHYJP.cjs → chunk-HCCQLAA4.cjs} +2 -13
  85. package/dist/{chunk-HHS6FMOU.cjs → chunk-HGVXZDSK.cjs} +178 -29
  86. package/dist/{chunk-LBPEZQAF.js → chunk-HRODTEEO.js} +30 -10
  87. package/dist/{chunk-ZGTGVSTZ.js → chunk-HYNTS5CP.js} +2 -2
  88. package/dist/{chunk-RE3OKSYF.cjs → chunk-HZCQO4JM.cjs} +6 -6
  89. package/dist/{chunk-NCUHGRTZ.js → chunk-I2O7TW6B.js} +12 -8
  90. package/dist/chunk-IHESJZSW.js +4490 -0
  91. package/dist/{chunk-7H5UNJZD.cjs → chunk-IRWWS72C.cjs} +64 -22
  92. package/dist/{chunk-EMO7HAKJ.cjs → chunk-IVIA7K75.cjs} +691 -133
  93. package/dist/chunk-IVY74O6C.js +247 -0
  94. package/dist/chunk-J32ZJZJH.js +554 -0
  95. package/dist/chunk-JD7CIZ33.js +1949 -0
  96. package/dist/{chunk-7X2IEJIE.cjs → chunk-JIYN45TV.cjs} +41 -42
  97. package/dist/{chunk-XDXZM3ZP.cjs → chunk-KHPCJRI3.cjs} +24 -21
  98. package/dist/chunk-KKFZ3B6J.cjs +557 -0
  99. package/dist/chunk-KPJL34Y7.cjs +186 -0
  100. package/dist/{chunk-7KPI4EKH.cjs → chunk-KQTPCYTG.cjs} +130 -50
  101. package/dist/{chunk-F5LVGHNT.js → chunk-KX76JUQY.js} +3 -3
  102. package/dist/chunk-L4LFINPO.js +623 -0
  103. package/dist/{chunk-2UX5LRAP.cjs → chunk-L63H3SQ4.cjs} +46 -32
  104. package/dist/{chunk-NLPSZT4C.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-PQLGZKMC.cjs → chunk-MJVIRCUV.cjs} +31 -27
  109. package/dist/{chunk-AC4BSHFV.js → chunk-MSMIFMBL.js} +135 -18
  110. package/dist/{chunk-56IF4NTA.js → chunk-MXFUTKCO.js} +18 -18
  111. package/dist/{chunk-NRUB55IT.cjs → chunk-MXJ5SS53.cjs} +450 -32
  112. package/dist/chunk-MXWNGCRS.js +2176 -0
  113. package/dist/chunk-MYY4PMWX.cjs +264 -0
  114. package/dist/chunk-N75IH2HY.js +258 -0
  115. package/dist/chunk-NG77ATEW.cjs +778 -0
  116. package/dist/chunk-NW5G5FBQ.js +215 -0
  117. package/dist/{chunk-4FCZDTD5.js → chunk-OEFY723R.js} +29 -16
  118. package/dist/chunk-OEV5RMZO.cjs +3042 -0
  119. package/dist/{chunk-VSXOIUCF.cjs → chunk-OIQYIIO3.cjs} +7 -7
  120. package/dist/{chunk-32TWR3HE.js → chunk-OL46QLBJ.js} +3 -12
  121. package/dist/chunk-OPZ7XDDI.js +487 -0
  122. package/dist/chunk-OSYNRVOV.cjs +243 -0
  123. package/dist/{chunk-HUFNKFA6.js → chunk-P7YIA5LN.js} +93 -13
  124. package/dist/chunk-PGANYCAG.cjs +220 -0
  125. package/dist/{chunk-CO2VM2DK.js → chunk-QAVXL2IH.js} +62 -20
  126. package/dist/{chunk-BO2OKHIY.js → chunk-QCCBXSCE.js} +1640 -1311
  127. package/dist/{chunk-WYH4GVZ5.js → chunk-QPOQ7VPI.js} +16 -13
  128. package/dist/{chunk-V42NTCFH.js → chunk-QTPMJRGS.js} +2331 -17
  129. package/dist/{chunk-FEFHPUEM.cjs → chunk-QWNQ523V.cjs} +1705 -1382
  130. package/dist/{chunk-VK5AXKO3.js → chunk-R3IVNY6P.js} +166 -101
  131. package/dist/chunk-R75BSDH7.cjs +50 -0
  132. package/dist/{chunk-AIUXRS74.cjs → chunk-RMHC2VG7.cjs} +2358 -41
  133. package/dist/chunk-RUXGBKPS.cjs +4517 -0
  134. package/dist/{chunk-PLMYCCA4.js → chunk-S5IFXW6E.js} +113 -9
  135. package/dist/{chunk-27LWW5FU.cjs → chunk-S6YWHCKV.cjs} +5 -5
  136. package/dist/{chunk-SUCBB66F.js → chunk-SIEXCILW.js} +3 -3
  137. package/dist/{chunk-CLYEIWA5.cjs → chunk-SLU6UPJI.cjs} +5 -3
  138. package/dist/{chunk-H6WMMLQK.cjs → chunk-T5J7ZKP3.cjs} +454 -61
  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-BU5ZAFMC.js → chunk-U4NBQJBY.js} +11 -13
  145. package/dist/{chunk-Y5MUAYTO.js → chunk-UD3DSHZM.js} +10 -13
  146. package/dist/chunk-UDMYRFDZ.js +3038 -0
  147. package/dist/{chunk-PPULB4GG.cjs → chunk-UOIGFQXC.cjs} +90 -68
  148. package/dist/{chunk-EPWRXL6S.js → chunk-URG2SJLK.js} +41 -42
  149. package/dist/{chunk-VJVCD5T5.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-4SMUJFHL.js → chunk-VMLKSV26.js} +9 -6
  153. package/dist/{chunk-HKCVM6OK.cjs → chunk-VSK7W3O5.cjs} +47 -27
  154. package/dist/chunk-VVKVQZI6.js +55 -0
  155. package/dist/{chunk-KDB6BUMB.js → chunk-W55Z7QIX.js} +172 -25
  156. package/dist/{chunk-BY3B7ZYV.cjs → chunk-W6P2GBHH.cjs} +3 -3
  157. package/dist/{chunk-PBA6NXCT.cjs → chunk-W6RW64BB.cjs} +11 -8
  158. package/dist/chunk-WDT3JTGM.cjs +483 -0
  159. package/dist/{chunk-26TLYBFD.js → chunk-WKX5AMOY.js} +3 -3
  160. package/dist/chunk-WNNE3PO3.js +34 -0
  161. package/dist/chunk-WRLUBRKS.cjs +1943 -0
  162. package/dist/chunk-WRNEH5MO.js +3169 -0
  163. package/dist/{chunk-54FHG2MX.js → chunk-WRWEX5ZF.js} +7 -4
  164. package/dist/chunk-X3GJPRVK.cjs +3246 -0
  165. package/dist/{chunk-4KJ2R7VP.cjs → chunk-XFXGA5IW.cjs} +126 -22
  166. package/dist/{chunk-L3Z2HIWJ.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-KYM4XRFG.js → chunk-XMWZG36H.js} +4 -4
  170. package/dist/{chunk-BKIGPPVM.js → chunk-XSFNHP2E.js} +6 -3
  171. package/dist/{chunk-ODGMVILH.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-CMYAWUX3.js → chunk-YIMN575O.js} +445 -53
  176. package/dist/chunk-YIVFJNYV.js +176 -0
  177. package/dist/{chunk-V2ILLPHK.cjs → chunk-YKGPCZEE.cjs} +10 -10
  178. package/dist/chunk-YQELFNJV.js +39 -0
  179. package/dist/chunk-YSCKYJOB.cjs +2196 -0
  180. package/dist/chunk-Z5XMPRNC.cjs +5390 -0
  181. package/dist/{chunk-3FYZOR7S.cjs → chunk-ZDSYWBIE.cjs} +18 -18
  182. package/dist/{chunk-CQDOF3G7.cjs → chunk-ZKSS47EV.cjs} +24 -19
  183. package/dist/chunk-ZUL5AVTX.cjs +1993 -0
  184. package/dist/chunk-ZXBZVXDW.js +5386 -0
  185. package/dist/{chunk-AW7WAELW.js → chunk-ZZ7RO2UQ.js} +314 -46
  186. package/dist/cli/holoscript-runner.cjs +203 -206
  187. package/dist/cli/holoscript-runner.js +147 -150
  188. package/dist/codebase/index.cjs +1 -1
  189. package/dist/codebase/index.d.ts +25 -0
  190. package/dist/codebase/index.js +1 -1
  191. package/dist/compiler/agent-inference.cjs +10 -8
  192. package/dist/compiler/agent-inference.js +6 -4
  193. package/dist/compiler/android-xr.cjs +12 -8
  194. package/dist/compiler/android-xr.js +10 -6
  195. package/dist/compiler/android.cjs +12 -9
  196. package/dist/compiler/android.js +10 -7
  197. package/dist/compiler/ar.cjs +9 -7
  198. package/dist/compiler/ar.js +7 -5
  199. package/dist/compiler/babylon.cjs +12 -9
  200. package/dist/compiler/babylon.js +11 -8
  201. package/dist/compiler/business-quest.cjs +43 -0
  202. package/dist/compiler/business-quest.js +4 -0
  203. package/dist/compiler/coco.cjs +1 -1
  204. package/dist/compiler/coco.js +1 -1
  205. package/dist/compiler/context.cjs +25 -0
  206. package/dist/compiler/context.d.ts +28 -0
  207. package/dist/compiler/context.js +8 -0
  208. package/dist/compiler/domain-block-utils.cjs +161 -151
  209. package/dist/compiler/domain-block-utils.js +7 -5
  210. package/dist/compiler/dtdl.cjs +10 -8
  211. package/dist/compiler/dtdl.js +7 -5
  212. package/dist/compiler/gltf-pipeline.cjs +9 -9
  213. package/dist/compiler/gltf-pipeline.js +2 -2
  214. package/dist/compiler/godot.cjs +9 -7
  215. package/dist/compiler/godot.js +8 -6
  216. package/dist/compiler/incremental.cjs +12 -8
  217. package/dist/compiler/incremental.js +7 -3
  218. package/dist/compiler/index.cjs +5152 -814
  219. package/dist/compiler/index.d.ts +404 -21
  220. package/dist/compiler/index.js +5063 -859
  221. package/dist/compiler/ios.cjs +11 -9
  222. package/dist/compiler/ios.js +9 -7
  223. package/dist/compiler/llm-provider-capabilities.cjs +25 -0
  224. package/dist/compiler/llm-provider-capabilities.d.ts +43 -0
  225. package/dist/compiler/llm-provider-capabilities.js +8 -0
  226. package/dist/compiler/multi-layer.cjs +14 -17
  227. package/dist/compiler/multi-layer.js +13 -10
  228. package/dist/compiler/nodetoy.cjs +5 -5
  229. package/dist/compiler/nodetoy.js +2 -2
  230. package/dist/compiler/openxr.cjs +10 -7
  231. package/dist/compiler/openxr.js +9 -6
  232. package/dist/compiler/playcanvas.cjs +10 -8
  233. package/dist/compiler/playcanvas.js +9 -7
  234. package/dist/compiler/r3f.cjs +17 -14
  235. package/dist/compiler/r3f.d.ts +22 -0
  236. package/dist/compiler/r3f.js +12 -9
  237. package/dist/compiler/remotion.cjs +1 -1
  238. package/dist/compiler/remotion.js +1 -1
  239. package/dist/compiler/reproducibility.cjs +1 -1
  240. package/dist/compiler/reproducibility.js +1 -1
  241. package/dist/compiler/sdf.cjs +10 -8
  242. package/dist/compiler/sdf.js +8 -6
  243. package/dist/compiler/semantic-scene.cjs +7 -7
  244. package/dist/compiler/semantic-scene.js +2 -2
  245. package/dist/compiler/state.cjs +9 -6
  246. package/dist/compiler/state.js +7 -4
  247. package/dist/compiler/trait-composition.cjs +11 -8
  248. package/dist/compiler/trait-composition.js +7 -4
  249. package/dist/compiler/unity.cjs +10 -7
  250. package/dist/compiler/unity.js +9 -6
  251. package/dist/compiler/unreal.cjs +11 -8
  252. package/dist/compiler/unreal.js +9 -6
  253. package/dist/compiler/urdf.cjs +20 -14
  254. package/dist/compiler/urdf.js +8 -6
  255. package/dist/compiler/usd-physics.cjs +10 -8
  256. package/dist/compiler/usd-physics.js +7 -5
  257. package/dist/compiler/visionos.cjs +10 -7
  258. package/dist/compiler/visionos.js +9 -6
  259. package/dist/compiler/vrchat.cjs +10 -8
  260. package/dist/compiler/vrchat.js +8 -6
  261. package/dist/compiler/vrr.cjs +10 -8
  262. package/dist/compiler/vrr.js +8 -6
  263. package/dist/compiler/wasm.cjs +13 -11
  264. package/dist/compiler/wasm.js +8 -6
  265. package/dist/compiler/webgpu.cjs +9 -7
  266. package/dist/compiler/webgpu.js +8 -6
  267. package/dist/constants.d.ts +4 -0
  268. package/dist/coordinators/index.cjs +1266 -0
  269. package/dist/coordinators/index.d.ts +260 -0
  270. package/dist/coordinators/index.js +1259 -0
  271. package/dist/debugger.cjs +9 -7
  272. package/dist/debugger.js +7 -5
  273. package/dist/entries/interop.cjs +23 -21
  274. package/dist/entries/interop.d.ts +9 -0
  275. package/dist/entries/interop.js +5 -3
  276. package/dist/entries/scripting.cjs +18 -17
  277. package/dist/entries/scripting.d.ts +7 -0
  278. package/dist/entries/scripting.js +8 -7
  279. package/dist/hololand/index.cjs +146 -0
  280. package/dist/hololand/index.d.ts +70 -0
  281. package/dist/hololand/index.js +5 -0
  282. package/dist/index.cjs +21396 -39967
  283. package/dist/index.d.ts +1496 -40
  284. package/dist/index.js +21066 -40142
  285. package/dist/math/tropical-spmv.cjs +45 -0
  286. package/dist/math/tropical-spmv.js +4 -0
  287. package/dist/math/vec3.cjs +14 -14
  288. package/dist/math/vec3.js +2 -2
  289. package/dist/ml-dsa-FSKBTE3W.cjs +1265 -0
  290. package/dist/ml-dsa-Z7JDKW4L.js +1265 -0
  291. package/dist/paper-0c-spike/index.cjs +150 -0
  292. package/dist/paper-0c-spike/index.d.ts +29 -0
  293. package/dist/paper-0c-spike/index.js +141 -0
  294. package/dist/parser.cjs +45 -10
  295. package/dist/parser.d.ts +11 -0
  296. package/dist/parser.js +10 -7
  297. package/dist/{playwright-7DTEQCBD.cjs → playwright-3AT3AKTV.cjs} +1985 -1985
  298. package/dist/{playwright-BIZXMLD2.js → playwright-VZPDVUEQ.js} +3 -3
  299. package/dist/reconstruction/index.cjs +153 -0
  300. package/dist/reconstruction/index.d.ts +105 -0
  301. package/dist/reconstruction/index.js +8 -0
  302. package/dist/runtime.cjs +7 -5
  303. package/dist/runtime.js +6 -4
  304. package/dist/self-improvement/index.cjs +563 -0
  305. package/dist/self-improvement/index.d.ts +0 -48
  306. package/dist/self-improvement/index.js +545 -0
  307. package/dist/storage/index.cjs +10 -9
  308. package/dist/storage/index.d.ts +24 -0
  309. package/dist/storage/index.js +3 -2
  310. package/dist/testing.cjs +25 -0
  311. package/dist/testing.d.ts +70 -0
  312. package/dist/testing.js +4 -0
  313. package/dist/tools/index.d.ts +33 -0
  314. package/dist/traitDocs/traitDocs.cjs +33 -0
  315. package/dist/traitDocs/traitDocs.d.ts +69 -0
  316. package/dist/traitDocs/traitDocs.js +7 -0
  317. package/dist/traits/botanical-lotus.cjs +41 -0
  318. package/dist/traits/botanical-lotus.d.ts +172 -0
  319. package/dist/traits/botanical-lotus.js +4 -0
  320. package/dist/traits/engines/index.cjs +520 -0
  321. package/dist/traits/engines/index.d.ts +111 -0
  322. package/dist/traits/engines/index.js +380 -0
  323. package/dist/traits/index.cjs +14387 -4320
  324. package/dist/traits/index.d.ts +197 -0
  325. package/dist/traits/index.js +16455 -6958
  326. package/dist/traits/simulation-solver-factory.cjs +13 -0
  327. package/dist/traits/simulation-solver-factory.d.ts +23 -0
  328. package/dist/traits/simulation-solver-factory.js +4 -0
  329. package/dist/traits/webcam-gaze.cjs +35 -0
  330. package/dist/traits/webcam-gaze.d.ts +17 -0
  331. package/dist/traits/webcam-gaze.js +4 -0
  332. package/dist/type-checker.cjs +6 -5
  333. package/dist/type-checker.js +4 -3
  334. package/dist/world/index.cjs +947 -0
  335. package/dist/world/index.d.ts +147 -0
  336. package/dist/world/index.js +939 -0
  337. package/dist/world-model/index.cjs +1446 -0
  338. package/dist/world-model/index.d.ts +119 -0
  339. package/dist/world-model/index.js +1414 -0
  340. package/dist/wot/index.cjs +7 -7
  341. package/dist/wot/index.js +2 -2
  342. package/package.json +150 -23
  343. package/dist/GLTFPipeline-3KLWWUQO.cjs +0 -34
  344. package/dist/GLTFPipeline-LYII2ZVQ.js +0 -13
  345. package/dist/chunk-3KEU5QYY.cjs +0 -175
  346. package/dist/chunk-6OQBLABR.js +0 -5240
  347. package/dist/chunk-6WNCRE6F.js +0 -126
  348. package/dist/chunk-C2QHVHZF.js +0 -4066
  349. package/dist/chunk-CN4NOESF.cjs +0 -416
  350. package/dist/chunk-DXVCEFZB.js +0 -2027
  351. package/dist/chunk-ENV7K6XA.js +0 -282
  352. package/dist/chunk-H7XMORZI.js +0 -2731
  353. package/dist/chunk-HAN4V3PF.cjs +0 -2037
  354. package/dist/chunk-HF4OFY25.cjs +0 -4097
  355. package/dist/chunk-LER4WXW5.cjs +0 -286
  356. package/dist/chunk-M6FU6S22.js +0 -2911
  357. package/dist/chunk-MWEFR6YQ.js +0 -1857
  358. package/dist/chunk-PJMOXFPR.cjs +0 -1861
  359. package/dist/chunk-QHVVVN47.cjs +0 -2033
  360. package/dist/chunk-QWKUKVRE.js +0 -2026
  361. package/dist/chunk-UITWA6DV.cjs +0 -2829
  362. package/dist/chunk-UQW6SLM5.js +0 -172
  363. package/dist/chunk-WUXIRGZP.cjs +0 -2915
  364. package/dist/chunk-X67XRI2T.js +0 -410
  365. package/dist/chunk-Y7VK5TH3.cjs +0 -129
  366. package/dist/chunk-YCMQQQ5U.cjs +0 -5244
  367. package/dist/post-quantum-JTTAAGO3.cjs +0 -6
  368. package/dist/post-quantum-RVPVDEPI.js +0 -4
@@ -1,23 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- var chunkA6GO3DPZ_cjs = require('../chunk-A6GO3DPZ.cjs');
5
- var chunkL3Z2HIWJ_cjs = require('../chunk-L3Z2HIWJ.cjs');
6
- var chunkCLYEIWA5_cjs = require('../chunk-CLYEIWA5.cjs');
7
- var chunkH6WMMLQK_cjs = require('../chunk-H6WMMLQK.cjs');
8
- require('../chunk-HAN4V3PF.cjs');
9
- require('../chunk-UITWA6DV.cjs');
10
- require('../chunk-SPDELRRV.cjs');
11
- require('../chunk-V2ILLPHK.cjs');
12
- require('../chunk-ARNKA274.cjs');
13
- require('../chunk-EGIZHYJP.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');
14
17
  require('dotenv/config');
15
18
  var fs = require('fs');
16
19
  var path = require('path');
17
20
  var readline = require('readline');
18
21
  var child_process = require('child_process');
19
22
  var crypto = require('crypto');
20
- var runtime = require('@holoscript/engine/runtime');
21
23
 
22
24
  function _interopNamespace(e) {
23
25
  if (e && e.__esModule) return e;
@@ -41,6 +43,12 @@ var fs__namespace = /*#__PURE__*/_interopNamespace(fs);
41
43
  var path__namespace = /*#__PURE__*/_interopNamespace(path);
42
44
  var readline__namespace = /*#__PURE__*/_interopNamespace(readline);
43
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
+ }
44
52
  function defaultModelForProvider(provider) {
45
53
  switch (provider) {
46
54
  case "xai":
@@ -51,7 +59,7 @@ function defaultModelForProvider(provider) {
51
59
  return "brittney-qwen-v23:latest";
52
60
  case "anthropic":
53
61
  default:
54
- return "claude-sonnet-4-20250514";
62
+ return "claude-sonnet-4-6";
55
63
  }
56
64
  }
57
65
  function defaultToolProfileForProvider(provider) {
@@ -230,151 +238,108 @@ function parseArgs(argv) {
230
238
  }
231
239
  return opts;
232
240
  }
233
- function extractChatText(data) {
234
- const d = data;
235
- return d?.content?.[0]?.text ?? d?.choices?.[0]?.message?.content ?? d?.message?.content ?? d?.response ?? "";
236
- }
237
- function extractTokenUsage(data) {
238
- const d = data;
239
- const inputTokens = d?.usage?.input_tokens ?? d?.usage?.prompt_tokens ?? d?.prompt_eval_count ?? 0;
240
- const outputTokens = d?.usage?.output_tokens ?? d?.usage?.completion_tokens ?? d?.eval_count ?? 0;
241
- return {
242
- inputTokens: Number.isFinite(inputTokens) ? Number(inputTokens) : 0,
243
- outputTokens: Number.isFinite(outputTokens) ? Number(outputTokens) : 0
244
- };
245
- }
246
- function createDaemonLLMProvider(opts) {
241
+ async function createDaemonLLMProvider(opts) {
242
+ const {
243
+ AnthropicAdapter,
244
+ XAIAdapter,
245
+ OpenAIAdapter,
246
+ LocalLLMAdapter
247
+ } = await import('@holoscript/llm-provider');
247
248
  if (opts.provider === "anthropic") {
249
+ const adapter2 = new AnthropicAdapter({
250
+ apiKey: process.env.ANTHROPIC_API_KEY || "",
251
+ defaultModel: opts.model
252
+ });
248
253
  return {
249
254
  chat: async ({ system, prompt, maxTokens }) => {
250
- const apiKey = process.env.ANTHROPIC_API_KEY;
251
- if (!apiKey) throw new Error("ANTHROPIC_API_KEY not set");
252
- const response = await fetch("https://api.anthropic.com/v1/messages", {
253
- method: "POST",
254
- headers: {
255
- "x-api-key": apiKey,
256
- "anthropic-version": "2023-06-01",
257
- "content-type": "application/json"
258
- },
259
- body: JSON.stringify({
260
- model: opts.model,
261
- max_tokens: maxTokens || 4096,
262
- system,
263
- messages: [{ role: "user", content: prompt }]
264
- })
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
265
262
  });
266
- if (!response.ok) {
267
- const body = await response.text().catch(() => "");
268
- throw new Error(`Anthropic API ${response.status}: ${body.slice(0, 200)}`);
269
- }
270
- const data = await response.json();
271
- const usage = extractTokenUsage(data);
272
263
  return {
273
- text: extractChatText(data),
274
- inputTokens: usage.inputTokens,
275
- outputTokens: usage.outputTokens
264
+ text: result.content,
265
+ inputTokens: result.usage?.promptTokens ?? 0,
266
+ outputTokens: result.usage?.completionTokens ?? 0
276
267
  };
277
268
  }
278
269
  };
279
270
  }
280
271
  if (opts.provider === "xai") {
272
+ const adapter2 = new XAIAdapter({
273
+ apiKey: process.env.XAI_API_KEY || "",
274
+ defaultModel: opts.model
275
+ });
281
276
  return {
282
277
  chat: async ({ system, prompt, maxTokens }) => {
283
- const apiKey = process.env.XAI_API_KEY;
284
- if (!apiKey) throw new Error("XAI_API_KEY not set");
285
- const response = await fetch("https://api.x.ai/v1/chat/completions", {
286
- method: "POST",
287
- headers: {
288
- Authorization: `Bearer ${apiKey}`,
289
- "content-type": "application/json"
290
- },
291
- body: JSON.stringify({
292
- model: opts.model,
293
- max_tokens: maxTokens || 4096,
294
- temperature: 0.2,
295
- messages: [
296
- { role: "system", content: system },
297
- { role: "user", content: prompt }
298
- ]
299
- })
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
300
285
  });
301
- if (!response.ok) {
302
- const body = await response.text().catch(() => "");
303
- throw new Error(`xAI API ${response.status}: ${body.slice(0, 200)}`);
304
- }
305
- const data = await response.json();
306
- const usage = extractTokenUsage(data);
307
286
  return {
308
- text: extractChatText(data),
309
- inputTokens: usage.inputTokens,
310
- outputTokens: usage.outputTokens
287
+ text: result.content,
288
+ inputTokens: result.usage?.promptTokens ?? 0,
289
+ outputTokens: result.usage?.completionTokens ?? 0
311
290
  };
312
291
  }
313
292
  };
314
293
  }
315
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
+ });
316
300
  return {
317
301
  chat: async ({ system, prompt, maxTokens }) => {
318
- const apiKey = process.env.OPENAI_API_KEY;
319
- if (!apiKey) throw new Error("OPENAI_API_KEY not set");
320
- const baseUrl = process.env.OPENAI_BASE_URL || "https://api.openai.com/v1";
321
- const response = await fetch(`${baseUrl}/chat/completions`, {
322
- method: "POST",
323
- headers: {
324
- Authorization: `Bearer ${apiKey}`,
325
- "content-type": "application/json"
326
- },
327
- body: JSON.stringify({
328
- model: opts.model,
329
- max_tokens: maxTokens || 4096,
330
- temperature: 0.2,
331
- messages: [
332
- { role: "system", content: system },
333
- { role: "user", content: prompt }
334
- ]
335
- })
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
336
309
  });
337
- if (!response.ok) {
338
- const body = await response.text().catch(() => "");
339
- throw new Error(`OpenAI API ${response.status}: ${body.slice(0, 200)}`);
340
- }
341
- const data = await response.json();
342
- const usage = extractTokenUsage(data);
343
310
  return {
344
- text: extractChatText(data),
345
- inputTokens: usage.inputTokens,
346
- outputTokens: usage.outputTokens
311
+ text: result.content,
312
+ inputTokens: result.usage?.promptTokens ?? 0,
313
+ outputTokens: result.usage?.completionTokens ?? 0
347
314
  };
348
315
  }
349
316
  };
350
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
+ });
351
329
  return {
352
330
  chat: async ({ system, prompt }) => {
353
- const baseUrl = process.env.OLLAMA_BASE_URL || process.env.OLLAMA_URL;
354
- 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");
355
- const response = await fetch(`${baseUrl}/api/generate`, {
356
- method: "POST",
357
- headers: { "content-type": "application/json" },
358
- body: JSON.stringify({
359
- model: opts.model,
360
- system,
361
- prompt,
362
- stream: false,
363
- options: {
364
- temperature: 0.2
365
- }
366
- })
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
367
338
  });
368
- if (!response.ok) {
369
- const body = await response.text().catch(() => "");
370
- throw new Error(`Ollama API ${response.status}: ${body.slice(0, 200)}`);
371
- }
372
- const data = await response.json();
373
- const usage = extractTokenUsage(data);
374
339
  return {
375
- text: extractChatText(data),
376
- inputTokens: usage.inputTokens,
377
- outputTokens: usage.outputTokens
340
+ text: result.content,
341
+ inputTokens: result.usage?.promptTokens ?? 0,
342
+ outputTokens: result.usage?.completionTokens ?? 0
378
343
  };
379
344
  }
380
345
  };
@@ -474,6 +439,33 @@ function runTicks(runtime, count) {
474
439
  runtime.tick();
475
440
  }
476
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
+ }
477
469
  async function runDaemon(runtime, opts) {
478
470
  const supportsEvents = typeof runtime.emit === "function";
479
471
  const supportsStats = typeof runtime.getStats === "function";
@@ -534,7 +526,7 @@ async function runDaemon(runtime, opts) {
534
526
  if (!raw) return;
535
527
  let command;
536
528
  try {
537
- command = JSON.parse(raw);
529
+ command = chunkE7JP3BS3_cjs.readJson(raw);
538
530
  } catch {
539
531
  send({ type: "daemon:error", error: "Invalid JSON command" });
540
532
  return;
@@ -558,14 +550,14 @@ async function runDaemon(runtime, opts) {
558
550
  }
559
551
  case "state:get": {
560
552
  const key = command?.key;
561
- const value = typeof key === "string" ? runtime.getState(key) : runtime.getAllState?.();
553
+ const value = getDaemonState(runtime, key);
562
554
  send({ type: "daemon:ok", op, key, value });
563
555
  break;
564
556
  }
565
557
  case "state:set": {
566
558
  const key = command?.key;
567
559
  if (typeof key === "string") {
568
- runtime.setState(key, command.value);
560
+ setDaemonState(runtime, key, command.value);
569
561
  send({ type: "daemon:ok", op, key });
570
562
  } else {
571
563
  send({ type: "daemon:error", op, error: "state:set requires string key" });
@@ -692,21 +684,22 @@ async function runScript(opts) {
692
684
  const source = fs__namespace.readFileSync(filePath, "utf-8");
693
685
  const ext = path__namespace.extname(filePath);
694
686
  console.log(`[holoscript] Running ${path__namespace.basename(filePath)} (target: ${opts.target})`);
695
- const parseResult = chunkH6WMMLQK_cjs.parse(source);
687
+ const parseResult = chunkT5J7ZKP3_cjs.parse(source);
696
688
  const ast = parseResult.ast;
697
689
  if (opts.debug) {
698
690
  console.log(`[holoscript] Parsed ${ast.body?.length || 0} top-level nodes`);
699
691
  console.log(`[holoscript] File type: ${ext}`);
700
692
  }
701
- const profile = opts.profile === "headless" ? runtime.HEADLESS_PROFILE : runtime.getProfile(opts.profile);
702
- 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, {
703
696
  profile,
704
697
  tickRate: 10,
705
698
  debug: opts.debug,
706
699
  hostCapabilities: createNodeHostCapabilities(path__namespace.dirname(filePath))
707
700
  });
708
- chunkA6GO3DPZ_cjs.registerStdlib(
709
- runtime$1,
701
+ chunk2YSNA2F2_cjs.registerStdlib(
702
+ runtime,
710
703
  {
711
704
  policy: {
712
705
  rootDir: path__namespace.dirname(filePath),
@@ -722,28 +715,28 @@ async function runScript(opts) {
722
715
  hostCapabilities: createNodeHostCapabilities(path__namespace.dirname(filePath))
723
716
  }
724
717
  );
725
- new chunkCLYEIWA5_cjs.InteropContext(path__namespace.dirname(filePath));
718
+ new chunkSLU6UPJI_cjs.InteropContext(path__namespace.dirname(filePath));
726
719
  if (opts.debug) {
727
720
  console.log(`[holoscript] Profile: ${profile.name}`);
728
721
  console.log(`[holoscript] Interop context: ${path__namespace.dirname(filePath)}`);
729
722
  }
730
- runtime$1.start();
723
+ runtime.start();
731
724
  if (opts.daemon) {
732
725
  if (opts.debug) {
733
726
  console.log("[holoscript] Entering daemon mode");
734
727
  }
735
- await runDaemon(runtime$1, opts);
728
+ await runDaemon(runtime, opts);
736
729
  return;
737
730
  }
738
- runTicks(runtime$1, opts.ticks);
739
- runtime$1.stop();
740
- const stats = runtime$1.getStats();
731
+ runTicks(runtime, opts.ticks);
732
+ runtime.stop();
733
+ const stats = runtime.getStats();
741
734
  console.log(
742
735
  `[holoscript] Complete \u2014 ${stats.tickCount} ticks, ${stats.nodesProcessed} nodes processed`
743
736
  );
744
737
  if (opts.watch) {
745
738
  console.log(`[holoscript] Watching for changes... (Ctrl+C to stop)`);
746
- const watcher = new chunkL3Z2HIWJ_cjs.HotReloadWatcher({
739
+ const watcher = new chunkXHIV6326_cjs.HotReloadWatcher({
747
740
  watchPaths: [path__namespace.dirname(filePath)],
748
741
  extensions: [".hs", ".hsplus", ".holo"],
749
742
  debounceMs: 300,
@@ -755,10 +748,10 @@ async function runScript(opts) {
755
748
  console.log(`[holoscript] Re-running ${path__namespace.basename(filePath)}...`);
756
749
  try {
757
750
  const newSource = fs__namespace.readFileSync(filePath, "utf-8");
758
- const newParseResult = chunkH6WMMLQK_cjs.parse(newSource);
751
+ const newParseResult = chunkT5J7ZKP3_cjs.parse(newSource);
759
752
  const newAst = newParseResult.ast;
760
- const newRuntime = runtime.createHeadlessRuntime(newAst, {
761
- 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),
762
755
  tickRate: 10,
763
756
  debug: opts.debug,
764
757
  hostCapabilities: createNodeHostCapabilities(path__namespace.dirname(filePath))
@@ -791,21 +784,23 @@ async function testScript(opts) {
791
784
  }
792
785
  const source = fs__namespace.readFileSync(filePath, "utf-8");
793
786
  console.log(`[holoscript test] Running tests in ${path__namespace.basename(filePath)}`);
794
- const parseResult = chunkH6WMMLQK_cjs.parse(source);
787
+ const parseResult = chunkT5J7ZKP3_cjs.parse(source);
795
788
  const ast = parseResult.ast;
796
- const profile = runtime.HEADLESS_PROFILE;
797
- const runtime$1 = runtime.createHeadlessRuntime(ast, { profile, tickRate: 10, debug: opts.debug });
798
- runtime$1.start();
799
- for (let i = 0; i < 50; i++) runtime$1.tick();
800
- const runner = new chunkL3Z2HIWJ_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({
801
796
  debug: opts.debug,
802
- runtimeState: runtime$1.getState()
797
+ runtimeState: runtimeAccess.getState()
803
798
  });
804
799
  const scriptResults = runner.runTestsFromSource(source, filePath);
805
- const runtimeState = runtime$1.getState();
806
- const compositionState = Object.keys(runtimeState).length > 0 ? runtimeState : chunkA6GO3DPZ_cjs.CompositionTestRunner.extractStateFromSource(source);
807
- const computedDefs = chunkA6GO3DPZ_cjs.CompositionTestRunner.extractComputedFromSource(source);
808
- const compositionRunner = new chunkA6GO3DPZ_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, {
809
804
  debug: opts.debug
810
805
  });
811
806
  const compositionResults = compositionRunner.runTestsFromSource(source);
@@ -868,7 +863,7 @@ function compileScript(opts) {
868
863
  }
869
864
  console.log(`[holoscript compile] @gotcha check passed (no critical violations)`);
870
865
  }
871
- const compileResult = chunkH6WMMLQK_cjs.parse(source);
866
+ const compileResult = chunkT5J7ZKP3_cjs.parse(source);
872
867
  if (!compileResult.success) {
873
868
  console.error(`[holoscript compile] Failed to parse: ${compileResult.errors?.[0]?.message}`);
874
869
  process.exit(1);
@@ -947,7 +942,7 @@ async function deployScript(opts) {
947
942
  const fileName = path__namespace.basename(filePath);
948
943
  const title = path__namespace.basename(filePath, path__namespace.extname(filePath));
949
944
  console.log(`Parsing ${fileName}...`);
950
- const ast = chunkH6WMMLQK_cjs.parse(source);
945
+ const ast = chunkT5J7ZKP3_cjs.parse(source);
951
946
  if (ast.errors && ast.errors.length > 0) {
952
947
  console.error("Parse errors:");
953
948
  for (const err of ast.errors) {
@@ -956,7 +951,7 @@ async function deployScript(opts) {
956
951
  process.exit(1);
957
952
  }
958
953
  const license = opts.license || "free";
959
- const provenance = chunkA6GO3DPZ_cjs.generateProvenance(source, ast, {
954
+ const provenance = chunkR75BSDH7_cjs.generateProvenance(source, ast, {
960
955
  author: opts.author || "anonymous",
961
956
  license
962
957
  });
@@ -968,7 +963,7 @@ async function deployScript(opts) {
968
963
  path: imp.path,
969
964
  license: "free"
970
965
  }));
971
- const licenseCheck = chunkA6GO3DPZ_cjs.checkLicenseCompatibility(license, importedLicenses);
966
+ const licenseCheck = chunk2YSNA2F2_cjs.checkLicenseCompatibility(license, importedLicenses);
972
967
  if (licenseCheck.warnings.length > 0) {
973
968
  for (const w of licenseCheck.warnings) {
974
969
  console.log(` Warning: ${w}`);
@@ -987,20 +982,20 @@ async function deployScript(opts) {
987
982
  }
988
983
  const serverUrl = opts.serverUrl.replace(/\/$/, "");
989
984
  if (opts.publish) {
990
- const priceWei = chunkA6GO3DPZ_cjs.ethToWei(opts.price || "0");
985
+ const priceWei = chunk2YSNA2F2_cjs.ethToWei(opts.price || "0");
991
986
  const importChain = provenance.imports.map((imp, i) => ({
992
987
  contentHash: imp.hash || `import-${i}`,
993
988
  author: imp.author || imp.path,
994
989
  depth: 1,
995
990
  children: []
996
991
  }));
997
- const revenuePreview = chunkA6GO3DPZ_cjs.calculateRevenueDistribution(
992
+ const revenuePreview = chunk2YSNA2F2_cjs.calculateRevenueDistribution(
998
993
  priceWei,
999
994
  provenance.author || "anonymous",
1000
995
  importChain
1001
996
  );
1002
997
  console.log("\nRevenue distribution:");
1003
- for (const line of chunkA6GO3DPZ_cjs.formatRevenueDistribution(revenuePreview)) {
998
+ for (const line of chunk2YSNA2F2_cjs.formatRevenueDistribution(revenuePreview)) {
1004
999
  console.log(` ${line}`);
1005
1000
  }
1006
1001
  console.log(`
@@ -1039,7 +1034,7 @@ Publishing to protocol at ${serverUrl}...`);
1039
1034
  license: provenance.license,
1040
1035
  publishMode: provenance.publishMode,
1041
1036
  price: opts.price || "0",
1042
- referralBps: chunkA6GO3DPZ_cjs.PROTOCOL_CONSTANTS.DEFAULT_REFERRAL_BPS,
1037
+ referralBps: chunk2YSNA2F2_cjs.PROTOCOL_CONSTANTS.DEFAULT_REFERRAL_BPS,
1043
1038
  metadataURI: `${serverUrl}/metadata/${provenance.hash}`,
1044
1039
  mintAsNFT: opts.mintNft,
1045
1040
  // Include scene data for CDN deploy
@@ -1167,7 +1162,7 @@ function absorbScript(opts) {
1167
1162
  console.log(
1168
1163
  `[holoscript absorb] ${path__namespace.basename(filePath)} (${language}) \u2192 ${path__namespace.basename(outputPath)}`
1169
1164
  );
1170
- const processor = new chunkL3Z2HIWJ_cjs.AbsorbProcessor();
1165
+ const processor = new chunkXHIV6326_cjs.AbsorbProcessor();
1171
1166
  const result = processor.absorb({ language, filePath, content });
1172
1167
  fs__namespace.writeFileSync(outputPath, result.generatedHSPlus, "utf-8");
1173
1168
  console.log(`[holoscript absorb] Extracted:`);
@@ -1309,7 +1304,7 @@ async function daemonScript(opts) {
1309
1304
  const { createDaemonActions, getDaemonFileState } = await import('@holoscript/absorb-service/daemon');
1310
1305
  const repoRoot = findGitRoot(path__namespace.dirname(filePath));
1311
1306
  const source = fs__namespace.readFileSync(filePath, "utf-8");
1312
- const parseResult = chunkH6WMMLQK_cjs.parse(source);
1307
+ const parseResult = chunkT5J7ZKP3_cjs.parse(source);
1313
1308
  if (!parseResult.success || !parseResult.ast) {
1314
1309
  const errors = parseResult.errors?.map((e) => e.message).join(", ") || "unknown";
1315
1310
  console.error(`[daemon] Parse failed: ${errors}`);
@@ -1327,7 +1322,7 @@ async function daemonScript(opts) {
1327
1322
  const lockData = { pid: process.pid, time: Date.now(), heartbeat: Date.now() };
1328
1323
  if (fs__namespace.existsSync(lockFile)) {
1329
1324
  try {
1330
- const existing = JSON.parse(fs__namespace.readFileSync(lockFile, "utf-8"));
1325
+ const existing = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(lockFile, "utf-8"));
1331
1326
  const staleMs = 12e4;
1332
1327
  if (Date.now() - existing.heartbeat < staleMs) {
1333
1328
  console.error(
@@ -1437,7 +1432,7 @@ async function daemonScript(opts) {
1437
1432
  );
1438
1433
  }
1439
1434
  }
1440
- const llm = createDaemonLLMProvider(opts);
1435
+ const llm = await createDaemonLLMProvider(opts);
1441
1436
  const defaultFocusRotation = [
1442
1437
  "typefix",
1443
1438
  "coverage",
@@ -1496,14 +1491,14 @@ async function daemonScript(opts) {
1496
1491
  let daemonState = { ...daemonStateDefaults };
1497
1492
  if (fs__namespace.existsSync(stateFile)) {
1498
1493
  try {
1499
- daemonState = { ...daemonState, ...JSON.parse(fs__namespace.readFileSync(stateFile, "utf-8")) };
1494
+ daemonState = { ...daemonState, ...chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(stateFile, "utf-8")) };
1500
1495
  } catch {
1501
1496
  }
1502
1497
  }
1503
1498
  const fileStateFile = path__namespace.join(stateDir, "daemon-file-state.json");
1504
1499
  if (fs__namespace.existsSync(fileStateFile)) {
1505
1500
  try {
1506
- const fileState = JSON.parse(fs__namespace.readFileSync(fileStateFile, "utf-8"));
1501
+ const fileState = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(fileStateFile, "utf-8"));
1507
1502
  config.committedFiles = fileState.committed || [];
1508
1503
  config.failedFiles = fileState.failures || {};
1509
1504
  } catch {
@@ -1522,6 +1517,7 @@ async function daemonScript(opts) {
1522
1517
  cleanup();
1523
1518
  process.exit(1);
1524
1519
  }
1520
+ const { createHeadlessRuntime, HEADLESS_PROFILE } = await loadEngineRuntime();
1525
1521
  let convergenceStreak = 0;
1526
1522
  const CONVERGENCE_THRESHOLD = 3;
1527
1523
  let cycle = 0;
@@ -1533,7 +1529,7 @@ async function daemonScript(opts) {
1533
1529
  let wisdomEntries = [];
1534
1530
  try {
1535
1531
  if (fs__namespace.existsSync(wisdomFile)) {
1536
- wisdomEntries = JSON.parse(fs__namespace.readFileSync(wisdomFile, "utf-8"));
1532
+ wisdomEntries = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(wisdomFile, "utf-8"));
1537
1533
  }
1538
1534
  } catch {
1539
1535
  }
@@ -1564,7 +1560,7 @@ async function daemonScript(opts) {
1564
1560
  ...opts,
1565
1561
  provider: cycleProvider,
1566
1562
  model: cycleModel};
1567
- const cycleLlm = createDaemonLLMProvider(cycleOpts);
1563
+ const cycleLlm = await createDaemonLLMProvider(cycleOpts);
1568
1564
  config.provider = cycleProvider;
1569
1565
  config.model = cycleModel;
1570
1566
  config.toolProfile = cycleToolProfile;
@@ -1580,7 +1576,7 @@ async function daemonScript(opts) {
1580
1576
  [daemon] === Cycle ${cycle + 1}${opts.alwaysOn ? "" : `/${opts.cycles}`} | Focus: ${focus} ===`
1581
1577
  );
1582
1578
  }
1583
- const cycleAST = JSON.parse(JSON.stringify(compositionAST));
1579
+ const cycleAST = chunkE7JP3BS3_cjs.jsonClone(compositionAST);
1584
1580
  materializeTraits(cycleAST);
1585
1581
  const bbValues = {
1586
1582
  focus,
@@ -1592,20 +1588,20 @@ async function daemonScript(opts) {
1592
1588
  if (opts.debug) {
1593
1589
  console.log(`[daemon] Blackboard injection: focus=${focus}, daemon_file=${filePath}`);
1594
1590
  }
1595
- const runtime$1 = runtime.createHeadlessRuntime(cycleAST, {
1596
- profile: runtime.HEADLESS_PROFILE,
1591
+ const runtime = createHeadlessRuntime(cycleAST, {
1592
+ profile: HEADLESS_PROFILE,
1597
1593
  tickRate: 10,
1598
1594
  debug: opts.debug,
1599
1595
  hostCapabilities: createNodeHostCapabilities(repoRoot)
1600
1596
  });
1601
- activeRuntime = runtime$1;
1597
+ activeRuntime = runtime;
1602
1598
  for (const [name, handler] of Object.entries(actions)) {
1603
- runtime$1.registerAction(name, handler);
1599
+ runtime.registerAction(name, handler);
1604
1600
  }
1605
1601
  for (const [name, handler] of Object.entries(runtimeSkillActions)) {
1606
- runtime$1.registerAction(name, handler);
1602
+ runtime.registerAction(name, handler);
1607
1603
  }
1608
- daemonResult.wireTraitListeners(runtime$1);
1604
+ daemonResult.wireTraitListeners(runtime);
1609
1605
  const maxWaitMs = opts.timeout * 60 * 1e3;
1610
1606
  const btResult = await new Promise(
1611
1607
  (resolve2) => {
@@ -1616,7 +1612,7 @@ async function daemonScript(opts) {
1616
1612
  resolve2({ status: "timeout", blackboard: {} });
1617
1613
  }
1618
1614
  }, maxWaitMs);
1619
- runtime$1.on("bt_complete", (payload) => {
1615
+ runtime.on("bt_complete", (payload) => {
1620
1616
  if (!resolved) {
1621
1617
  resolved = true;
1622
1618
  clearTimeout(timeout);
@@ -1627,20 +1623,20 @@ async function daemonScript(opts) {
1627
1623
  });
1628
1624
  }
1629
1625
  });
1630
- runtime$1.start();
1626
+ runtime.start();
1631
1627
  }
1632
1628
  );
1633
1629
  const btStatus = btResult.status;
1634
1630
  const btBlackboard = btResult.blackboard;
1635
1631
  const durationSec = ((Date.now() - cycleStart) / 1e3).toFixed(1);
1636
- const stats = runtime$1.getStats();
1632
+ const stats = runtime.getStats();
1637
1633
  const inputTokens = btBlackboard.inputTokens || 0;
1638
1634
  const outputTokens = btBlackboard.outputTokens || 0;
1639
1635
  const qualityAfter = btBlackboard.quality_after || daemonState.lastQuality;
1640
1636
  const costUSD = inputTokens * 3 / 1e6 + outputTokens * 15 / 1e6;
1641
1637
  const committed = btBlackboard.committed_count || 0;
1642
1638
  const qualityDelta = qualityAfter - (config.qualityBefore || 0);
1643
- runtime$1.emit("daemon:cycle_raw_telemetry", {
1639
+ runtime.emit("daemon:cycle_raw_telemetry", {
1644
1640
  focus,
1645
1641
  ticks: stats.updateCount,
1646
1642
  inputTokens,
@@ -1650,20 +1646,20 @@ async function daemonScript(opts) {
1650
1646
  costUSD,
1651
1647
  committed: committed > 0
1652
1648
  });
1653
- runtime$1.emit("daemon:raw_quality", { value: qualityAfter, focus });
1649
+ runtime.emit("daemon:raw_quality", { value: qualityAfter, focus });
1654
1650
  const totalTokens = inputTokens + outputTokens;
1655
1651
  const costEfficiency = costUSD > 0 ? Math.min(1, qualityAfter * totalTokens / (costUSD * 5e5)) : qualityAfter;
1656
- runtime$1.emit("feedback:update_metric", { name: "cost_efficiency", value: costEfficiency });
1652
+ runtime.emit("feedback:update_metric", { name: "cost_efficiency", value: costEfficiency });
1657
1653
  const candidateCount = Array.isArray(btBlackboard.candidates) ? btBlackboard.candidates.length : 0;
1658
1654
  const emergenceRatio = candidateCount > 0 ? Math.min(1, committed / candidateCount) : 0;
1659
- runtime$1.emit("feedback:update_metric", { name: "emergence_ratio", value: emergenceRatio });
1655
+ runtime.emit("feedback:update_metric", { name: "emergence_ratio", value: emergenceRatio });
1660
1656
  const wisdomCount = btBlackboard.wisdomCount || 0;
1661
1657
  const regenerativeHealth = Math.min(1, wisdomCount / 200);
1662
- runtime$1.emit("feedback:update_metric", {
1658
+ runtime.emit("feedback:update_metric", {
1663
1659
  name: "regenerative_health",
1664
1660
  value: regenerativeHealth
1665
1661
  });
1666
- runtime$1.stop();
1662
+ runtime.stop();
1667
1663
  activeRuntime = null;
1668
1664
  const telemetryRecord = {
1669
1665
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -1854,13 +1850,13 @@ async function holoMeshDaemonScript(opts) {
1854
1850
  console.error(`Error: File not found: ${filePath}`);
1855
1851
  process.exit(1);
1856
1852
  }
1857
- if (!process.env.MCP_API_KEY) {
1858
- console.error("[holomesh-daemon] MCP_API_KEY environment variable is required");
1853
+ if (!process.env.HOLOSCRIPT_API_KEY) {
1854
+ console.error("[holomesh-daemon] HOLOSCRIPT_API_KEY environment variable is required");
1859
1855
  process.exit(1);
1860
1856
  }
1861
1857
  const rawSource = fs__namespace.readFileSync(filePath, "utf-8");
1862
1858
  const source = rawSource.replace(/^#(version|target|mode)\s+.*/gm, "");
1863
- const parseResult = chunkH6WMMLQK_cjs.parse(source);
1859
+ const parseResult = chunkT5J7ZKP3_cjs.parse(source);
1864
1860
  if (!parseResult.success || !parseResult.ast) {
1865
1861
  const errors = parseResult.errors?.map((e) => e.message).join(", ") || "unknown";
1866
1862
  console.error(`[holomesh-daemon] Parse failed: ${errors}`);
@@ -1876,7 +1872,7 @@ async function holoMeshDaemonScript(opts) {
1876
1872
  const lockData = { pid: process.pid, time: Date.now(), heartbeat: Date.now() };
1877
1873
  if (fs__namespace.existsSync(lockFile)) {
1878
1874
  try {
1879
- const existing = JSON.parse(fs__namespace.readFileSync(lockFile, "utf-8"));
1875
+ const existing = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(lockFile, "utf-8"));
1880
1876
  if (Date.now() - existing.heartbeat < 12e4) {
1881
1877
  console.error(
1882
1878
  `[holomesh-daemon] Another daemon is running (PID ${existing.pid}). Remove ${lockFile} to force.`
@@ -1927,7 +1923,7 @@ async function holoMeshDaemonScript(opts) {
1927
1923
  }
1928
1924
  const meshConfig = {
1929
1925
  orchestratorUrl: process.env.MCP_ORCHESTRATOR_URL || "https://mcp-orchestrator-production-45f9.up.railway.app",
1930
- apiKey: process.env.MCP_API_KEY,
1926
+ apiKey: process.env.HOLOSCRIPT_API_KEY,
1931
1927
  workspace: process.env.HOLOMESH_WORKSPACE || "ai-ecosystem",
1932
1928
  agentName: process.env.HOLOMESH_AGENT_NAME || "holomesh-agent",
1933
1929
  discoveryIntervalMs: 5 * 60 * 1e3,
@@ -1955,24 +1951,25 @@ async function holoMeshDaemonScript(opts) {
1955
1951
  console.log(
1956
1952
  `[holomesh-daemon] ${Object.keys(actions).length} action handlers registered${v2Enabled ? ` (V2 P2P enabled, DID: ${localAgentDid})` : ""}${walletEnabled ? " (V3 Wallet enabled)" : ""}`
1957
1953
  );
1954
+ const { createHeadlessRuntime, HEADLESS_PROFILE } = await loadEngineRuntime();
1958
1955
  let cycle = 0;
1959
1956
  while (opts.alwaysOn || cycle < opts.cycles) {
1960
1957
  console.log(
1961
1958
  `
1962
1959
  [holomesh-daemon] === Cycle ${cycle + 1}${opts.alwaysOn ? "" : `/${opts.cycles}`} ===`
1963
1960
  );
1964
- const cycleAST = JSON.parse(JSON.stringify(compositionAST));
1961
+ const cycleAST = chunkE7JP3BS3_cjs.jsonClone(compositionAST);
1965
1962
  materializeTraits(cycleAST);
1966
- const runtime$1 = runtime.createHeadlessRuntime(cycleAST, {
1967
- profile: runtime.HEADLESS_PROFILE,
1963
+ const runtime = createHeadlessRuntime(cycleAST, {
1964
+ profile: HEADLESS_PROFILE,
1968
1965
  tickRate: 1,
1969
1966
  debug: opts.debug,
1970
1967
  hostCapabilities: createNodeHostCapabilities(path__namespace.dirname(filePath))
1971
1968
  });
1972
1969
  for (const [name, handler] of Object.entries(actions)) {
1973
- runtime$1.registerAction(name, handler);
1970
+ runtime.registerAction(name, handler);
1974
1971
  }
1975
- wireTraitListeners(runtime$1);
1972
+ wireTraitListeners(runtime);
1976
1973
  const maxWaitMs = (opts.timeout ?? 5) * 60 * 1e3;
1977
1974
  const btResult = await new Promise((resolve2) => {
1978
1975
  let resolved = false;
@@ -1982,16 +1979,16 @@ async function holoMeshDaemonScript(opts) {
1982
1979
  resolve2({ status: "timeout" });
1983
1980
  }
1984
1981
  }, maxWaitMs);
1985
- runtime$1.on("bt_complete", () => {
1982
+ runtime.on("bt_complete", () => {
1986
1983
  if (!resolved) {
1987
1984
  resolved = true;
1988
1985
  clearTimeout(timeout);
1989
1986
  resolve2({ status: "complete" });
1990
1987
  }
1991
1988
  });
1992
- runtime$1.start();
1989
+ runtime.start();
1993
1990
  });
1994
- runtime$1.stop();
1991
+ runtime.stop();
1995
1992
  console.log(`[holomesh-daemon] Cycle ${cycle + 1} ${btResult.status}`);
1996
1993
  cycle++;
1997
1994
  if (opts.alwaysOn || cycle < opts.cycles) {
@@ -2028,7 +2025,7 @@ async function daemonStatus(jsonOutput = false) {
2028
2025
  let lastHeartbeat = 0;
2029
2026
  if (fs__namespace.existsSync(lockFile)) {
2030
2027
  try {
2031
- const lock = JSON.parse(fs__namespace.readFileSync(lockFile, "utf-8"));
2028
+ const lock = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(lockFile, "utf-8"));
2032
2029
  lockPid = lock.pid;
2033
2030
  lastHeartbeat = lock.heartbeat;
2034
2031
  isRunning = Date.now() - lastHeartbeat < 12e4;
@@ -2039,7 +2036,7 @@ async function daemonStatus(jsonOutput = false) {
2039
2036
  let ds = {};
2040
2037
  if (fs__namespace.existsSync(stateFile)) {
2041
2038
  try {
2042
- ds = JSON.parse(fs__namespace.readFileSync(stateFile, "utf-8"));
2039
+ ds = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(stateFile, "utf-8"));
2043
2040
  } catch {
2044
2041
  }
2045
2042
  }
@@ -2050,7 +2047,7 @@ async function daemonStatus(jsonOutput = false) {
2050
2047
  };
2051
2048
  if (fs__namespace.existsSync(fileStateFile)) {
2052
2049
  try {
2053
- fileState = JSON.parse(fs__namespace.readFileSync(fileStateFile, "utf-8"));
2050
+ fileState = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(fileStateFile, "utf-8"));
2054
2051
  } catch {
2055
2052
  }
2056
2053
  }
@@ -2058,7 +2055,7 @@ async function daemonStatus(jsonOutput = false) {
2058
2055
  let wisdomCount = 0;
2059
2056
  if (fs__namespace.existsSync(wisdomFile)) {
2060
2057
  try {
2061
- wisdomCount = JSON.parse(fs__namespace.readFileSync(wisdomFile, "utf-8")).length;
2058
+ wisdomCount = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(wisdomFile, "utf-8")).length;
2062
2059
  } catch {
2063
2060
  }
2064
2061
  }
@@ -2066,7 +2063,7 @@ async function daemonStatus(jsonOutput = false) {
2066
2063
  let ledger = [];
2067
2064
  if (fs__namespace.existsSync(ledgerFile)) {
2068
2065
  try {
2069
- ledger = JSON.parse(fs__namespace.readFileSync(ledgerFile, "utf-8"));
2066
+ ledger = chunkE7JP3BS3_cjs.readJson(fs__namespace.readFileSync(ledgerFile, "utf-8"));
2070
2067
  } catch {
2071
2068
  }
2072
2069
  }
@@ -2078,7 +2075,7 @@ async function daemonStatus(jsonOutput = false) {
2078
2075
  const lines = fs__namespace.readFileSync(telemetryFile, "utf-8").split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
2079
2076
  telemetryCount = lines.length;
2080
2077
  if (lines.length > 0) {
2081
- lastTelemetry = JSON.parse(lines[lines.length - 1]);
2078
+ lastTelemetry = chunkE7JP3BS3_cjs.readJson(lines[lines.length - 1]);
2082
2079
  }
2083
2080
  } catch {
2084
2081
  }