@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
@@ -0,0 +1,243 @@
1
+ 'use strict';
2
+
3
+ // src/resilience/ResiliencePatterns.ts
4
+ var CircuitBreakerState = /* @__PURE__ */ ((CircuitBreakerState2) => {
5
+ CircuitBreakerState2["CLOSED"] = "CLOSED";
6
+ CircuitBreakerState2["OPEN"] = "OPEN";
7
+ CircuitBreakerState2["HALF_OPEN"] = "HALF_OPEN";
8
+ return CircuitBreakerState2;
9
+ })(CircuitBreakerState || {});
10
+ var CircuitBreaker = class {
11
+ constructor(config = {}) {
12
+ this.state = "CLOSED" /* CLOSED */;
13
+ this.failureCount = 0;
14
+ this.successCount = 0;
15
+ this.lastFailureTime = null;
16
+ this.failures = [];
17
+ this.config = {
18
+ failureThreshold: 5,
19
+ successThreshold: 2,
20
+ resetTimeoutMs: 6e4,
21
+ // 1 minute
22
+ windowMs: 3e4,
23
+ // 30 seconds
24
+ isRetryable: (err) => err instanceof Error,
25
+ ...config
26
+ };
27
+ }
28
+ /**
29
+ * Execute function with circuit breaker protection
30
+ */
31
+ async execute(fn) {
32
+ if (this.state === "OPEN" /* OPEN */) {
33
+ if (Date.now() - (this.lastFailureTime || 0) > this.config.resetTimeoutMs) {
34
+ this.state = "HALF_OPEN" /* HALF_OPEN */;
35
+ this.successCount = 0;
36
+ } else {
37
+ throw new Error(`Circuit breaker is OPEN. Retry after ${this.config.resetTimeoutMs}ms`);
38
+ }
39
+ }
40
+ try {
41
+ const result = await fn();
42
+ this.onSuccess();
43
+ return result;
44
+ } catch (error) {
45
+ this.onFailure(error);
46
+ throw error;
47
+ }
48
+ }
49
+ onSuccess() {
50
+ this.failureCount = 0;
51
+ this.failures = this.failures.filter((f) => Date.now() - f.timestamp < this.config.windowMs);
52
+ if (this.state === "HALF_OPEN" /* HALF_OPEN */) {
53
+ this.successCount++;
54
+ if (this.successCount >= this.config.successThreshold) {
55
+ this.state = "CLOSED" /* CLOSED */;
56
+ }
57
+ }
58
+ }
59
+ onFailure(error) {
60
+ this.lastFailureTime = Date.now();
61
+ this.failureCount++;
62
+ this.failures.push({ timestamp: Date.now(), error });
63
+ this.failures = this.failures.filter((f) => Date.now() - f.timestamp < this.config.windowMs);
64
+ if (this.state === "HALF_OPEN" /* HALF_OPEN */) {
65
+ this.state = "OPEN" /* OPEN */;
66
+ } else if (this.failureCount >= this.config.failureThreshold) {
67
+ this.state = "OPEN" /* OPEN */;
68
+ console.error(`Circuit breaker OPEN after ${this.failureCount} failures: ${error.message}`);
69
+ }
70
+ }
71
+ get currentState() {
72
+ return this.state;
73
+ }
74
+ /**
75
+ * Get current circuit breaker state (accessor method)
76
+ */
77
+ getState() {
78
+ if (this.state === "OPEN" /* OPEN */ && Date.now() - (this.lastFailureTime || 0) > this.config.resetTimeoutMs) {
79
+ return "HALF_OPEN" /* HALF_OPEN */;
80
+ }
81
+ return this.state;
82
+ }
83
+ /**
84
+ * Get circuit breaker metrics
85
+ */
86
+ getMetrics() {
87
+ return {
88
+ state: this.state,
89
+ totalFailures: this.failureCount,
90
+ totalSuccesses: this.successCount,
91
+ lastFailureTime: this.lastFailureTime,
92
+ totalRequests: this.failureCount + this.successCount
93
+ };
94
+ }
95
+ };
96
+ async function retryWithBackoff(fn, config = {}) {
97
+ const cfg = {
98
+ maxAttempts: 3,
99
+ initialBackoffMs: 100,
100
+ maxBackoffMs: 1e4,
101
+ multiplier: 2,
102
+ jitter: true,
103
+ isRetryable: (err, attempt) => attempt < cfg.maxAttempts,
104
+ ...config
105
+ };
106
+ let lastError = null;
107
+ for (let attempt = 1; attempt <= cfg.maxAttempts; attempt++) {
108
+ try {
109
+ return await fn();
110
+ } catch (error) {
111
+ lastError = error;
112
+ if (!cfg.isRetryable(lastError, attempt)) {
113
+ throw lastError;
114
+ }
115
+ if (attempt < cfg.maxAttempts) {
116
+ const backoff = Math.min(
117
+ cfg.initialBackoffMs * Math.pow(cfg.multiplier, attempt - 1),
118
+ cfg.maxBackoffMs
119
+ );
120
+ const jitteredBackoff = cfg.jitter ? backoff * (0.5 + Math.random() * 0.5) : backoff;
121
+ console.warn(
122
+ `Attempt ${attempt} failed: ${lastError.message}. Retrying in ${Math.round(jitteredBackoff)}ms`
123
+ );
124
+ await sleep(jitteredBackoff);
125
+ }
126
+ }
127
+ }
128
+ throw lastError || new Error("Max retry attempts exceeded");
129
+ }
130
+ var Bulkhead = class {
131
+ constructor(config = {}) {
132
+ this.running = 0;
133
+ this.queue = [];
134
+ this.config = {
135
+ maxConcurrent: 10,
136
+ queueSize: 100,
137
+ timeoutMs: 3e4,
138
+ ...config
139
+ };
140
+ }
141
+ /**
142
+ * Execute function within bulkhead
143
+ */
144
+ async execute(fn) {
145
+ if (this.queue.length >= this.config.queueSize) {
146
+ throw new Error("Bulkhead queue full - too many pending operations");
147
+ }
148
+ return new Promise((resolve, reject) => {
149
+ const timeoutId = setTimeout(() => {
150
+ const idx = this.queue.findIndex((item) => item.resolve === resolve);
151
+ if (idx !== -1) {
152
+ this.queue.splice(idx, 1);
153
+ }
154
+ reject(new Error("Bulkhead operation timeout"));
155
+ }, this.config.timeoutMs);
156
+ this.queue.push({
157
+ fn,
158
+ // @ts-expect-error
159
+ resolve,
160
+ reject,
161
+ timeoutId
162
+ });
163
+ this.processQueue();
164
+ });
165
+ }
166
+ processQueue() {
167
+ while (this.running < this.config.maxConcurrent && this.queue.length > 0) {
168
+ const item = this.queue.shift();
169
+ if (!item) break;
170
+ this.running++;
171
+ item.fn().then((result) => {
172
+ clearTimeout(item.timeoutId);
173
+ item.resolve(result);
174
+ }).catch((error) => {
175
+ clearTimeout(item.timeoutId);
176
+ item.reject(error);
177
+ }).finally(() => {
178
+ this.running--;
179
+ this.processQueue();
180
+ });
181
+ }
182
+ }
183
+ get stats() {
184
+ return {
185
+ running: this.running,
186
+ queued: this.queue.length
187
+ };
188
+ }
189
+ /**
190
+ * Get bulkhead state (accessor method)
191
+ */
192
+ getState() {
193
+ return {
194
+ running: this.running,
195
+ queued: this.queue.length,
196
+ maxConcurrent: this.config.maxConcurrent
197
+ };
198
+ }
199
+ /**
200
+ * Get bulkhead metrics
201
+ */
202
+ getMetrics() {
203
+ return {
204
+ running: this.running,
205
+ queued: this.queue.length,
206
+ utilizationPercent: this.running / this.config.maxConcurrent * 100,
207
+ queueUtilizationPercent: this.queue.length / this.config.queueSize * 100
208
+ };
209
+ }
210
+ };
211
+ async function fallbackChain(strategies) {
212
+ let lastError = null;
213
+ for (let i = 0; i < strategies.length; i++) {
214
+ try {
215
+ const result = await strategies[i]();
216
+ return result;
217
+ } catch (error) {
218
+ lastError = error;
219
+ console.warn(`Strategy ${i + 1} failed: ${lastError.message}`);
220
+ }
221
+ }
222
+ throw lastError || new Error("All fallback strategies failed");
223
+ }
224
+ function sleep(ms) {
225
+ return new Promise((resolve) => setTimeout(resolve, ms));
226
+ }
227
+ async function withTimeout(promise, timeoutMs) {
228
+ return Promise.race([
229
+ promise,
230
+ new Promise(
231
+ (_, reject) => setTimeout(() => reject(new Error(`Operation timeout after ${timeoutMs}ms`)), timeoutMs)
232
+ )
233
+ ]);
234
+ }
235
+
236
+ exports.Bulkhead = Bulkhead;
237
+ exports.CircuitBreaker = CircuitBreaker;
238
+ exports.CircuitBreakerState = CircuitBreakerState;
239
+ exports.fallbackChain = fallbackChain;
240
+ exports.retryWithBackoff = retryWithBackoff;
241
+ exports.withTimeout = withTimeout;
242
+ //# sourceMappingURL=chunk-OSYNRVOV.cjs.map
243
+ //# sourceMappingURL=chunk-OSYNRVOV.cjs.map
@@ -1,7 +1,8 @@
1
- import { init_DomainBlockCompilerMixin, compileDomainBlocks, inputToUnity, compileInputBlock, navigationToUnity, compileNavigationBlock, renderingToUnity, compileRenderingBlock, proceduralToUnity, compileProceduralBlock, web3ToUnity, compileWeb3Block, architectureToUnity, compileArchitectureBlock, musicToUnity, compileMusicBlock, educationToUnity, compileEducationBlock, datavizToUnity, compileDataVizBlock, iotToUnity, compileIoTBlock, compileRoboticsBlock, roboticsToUnity, compileHealthcareBlock, healthcareToUnity, compilePaymentBlock, paymentToUnity, compileNarrativeBlock, narrativeToUnity, compileWeatherBlock, weatherToUnity, compileAudioSourceBlock, audioSourceToUnity, compilePostProcessingBlock, postProcessingToUnity, compileParticleBlock, particlesToUnity, compilePhysicsBlock, physicsToUnity, compileMaterialBlock, materialToUnity } from './chunk-YQK5JNFK.js';
2
- import { init_CompilerBase, CompilerBase } from './chunk-6XSERL6L.js';
3
- import { __export, __esm } from './chunk-2CWOLHTE.js';
4
- import { ANSCapabilityPath } from '@holoscript/platform';
1
+ import { init_PlatformConditionalCompilerMixin, createPlatformTarget, PlatformConditionalCompilerMixin } from './chunk-GZG4KA4E.js';
2
+ import { init_DomainBlockCompilerMixin, compileDomainBlocks, inputToUnity, compileInputBlock, navigationToUnity, compileNavigationBlock, renderingToUnity, compileRenderingBlock, proceduralToUnity, compileProceduralBlock, web3ToUnity, compileWeb3Block, architectureToUnity, compileArchitectureBlock, musicToUnity, compileMusicBlock, educationToUnity, compileEducationBlock, datavizToUnity, compileDataVizBlock, iotToUnity, compileIoTBlock, compileRoboticsBlock, roboticsToUnity, compileHealthcareBlock, healthcareToUnity, compilePaymentBlock, paymentToUnity, compileNarrativeBlock, narrativeToUnity, compileWeatherBlock, weatherToUnity, compileAudioSourceBlock, audioSourceToUnity, compilePostProcessingBlock, postProcessingToUnity, compileParticleBlock, particlesToUnity, compilePhysicsBlock, physicsToUnity, compileMaterialBlock, materialToUnity } from './chunk-W55Z7QIX.js';
3
+ import { init_CompilerBase, CompilerBase } from './chunk-QTPMJRGS.js';
4
+ import { __export, __esm } from './chunk-OL46QLBJ.js';
5
+ import { ANSCapabilityPath } from '@holoscript/core-types/ans';
5
6
 
6
7
  // src/compiler/UnityCompiler.ts
7
8
  var UnityCompiler_exports = {};
@@ -13,6 +14,7 @@ var init_UnityCompiler = __esm({
13
14
  "src/compiler/UnityCompiler.ts"() {
14
15
  init_CompilerBase();
15
16
  init_DomainBlockCompilerMixin();
17
+ init_PlatformConditionalCompilerMixin();
16
18
  UnityCompiler = class extends CompilerBase {
17
19
  constructor(options = {}) {
18
20
  super();
@@ -23,14 +25,23 @@ var init_UnityCompiler = __esm({
23
25
  namespace: options.namespace || "HoloScene",
24
26
  className: options.className || "GeneratedScene",
25
27
  useURP: options.useURP ?? true,
26
- indent: options.indent || " "
28
+ indent: options.indent || " ",
29
+ provenanceHash: options.provenanceHash ?? "",
30
+ holomapPointCloud: options.holomapPointCloud
27
31
  };
32
+ if (options.platformTarget) {
33
+ this._platformTarget = typeof options.platformTarget === "string" ? createPlatformTarget(options.platformTarget) : options.platformTarget;
34
+ }
28
35
  }
29
36
  getRequiredCapability() {
30
37
  return ANSCapabilityPath.UNITY;
31
38
  }
32
39
  compile(composition, agentToken, outputPath) {
33
40
  this.validateCompilerAccess(agentToken, outputPath);
41
+ if (this._platformTarget) {
42
+ const platformMixin = new PlatformConditionalCompilerMixin();
43
+ composition = platformMixin.filterForPlatform(composition, this._platformTarget);
44
+ }
34
45
  this.lines = [];
35
46
  this.indentLevel = 0;
36
47
  this.emit("// Auto-generated by HoloScript UnityCompiler");
@@ -38,6 +49,9 @@ var init_UnityCompiler = __esm({
38
49
  `// Source: composition "${this.escapeStringValue(composition.name, "CSharp")}"`
39
50
  );
40
51
  this.emit("// Do not edit manually \u2014 regenerate from .holo source");
52
+ if (this.options.provenanceHash) {
53
+ this.emit(`// Provenance Hash: ${this.options.provenanceHash}`);
54
+ }
41
55
  this.emit("");
42
56
  this.emit("using UnityEngine;");
43
57
  this.emit("using UnityEngine.UI;");
@@ -101,6 +115,7 @@ var init_UnityCompiler = __esm({
101
115
  }
102
116
  }
103
117
  }
118
+ this.emitHolomapPointCloudLoader();
104
119
  this.indentLevel--;
105
120
  this.emit("}");
106
121
  this.emit("");
@@ -127,6 +142,75 @@ var init_UnityCompiler = __esm({
127
142
  this.emit("}");
128
143
  return this.lines.join("\n");
129
144
  }
145
+ emitHolomapPointCloudLoader() {
146
+ const h = this.options.holomapPointCloud;
147
+ if (!h || h.pointCount < 1) return;
148
+ this.emit(" // --- HoloMap point cloud (base64 \u2192 Mesh topology Points) ---");
149
+ this.emit(" {");
150
+ const posLit = this.chunkBase64CSharpLiteral(h.positionsB64);
151
+ const colLit = this.chunkBase64CSharpLiteral(h.colorsB64);
152
+ this.emit(` string holomapPosB64 = ${posLit};`);
153
+ this.emit(` string holomapColB64 = ${colLit};`);
154
+ this.emit(` int holomapN = ${h.pointCount};`);
155
+ this.emit(
156
+ " byte[] holomapPos = System.Convert.FromBase64String(holomapPosB64);"
157
+ );
158
+ this.emit(
159
+ " byte[] holomapCol = System.Convert.FromBase64String(holomapColB64);"
160
+ );
161
+ this.emit(" if (holomapPos.Length >= holomapN * 12 && holomapCol.Length >= holomapN * 3)");
162
+ this.emit(" {");
163
+ this.emit(
164
+ ' var holomapGo = new GameObject("HoloMapReconstructionPoints");'
165
+ );
166
+ this.emit(" holomapGo.transform.SetParent(transform, false);");
167
+ this.emit(" var mesh = new Mesh();");
168
+ this.emit(
169
+ " mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;"
170
+ );
171
+ this.emit(" var verts = new Vector3[holomapN];");
172
+ this.emit(" var cols = new Color32[holomapN];");
173
+ this.emit(" var idx = new int[holomapN];");
174
+ this.emit(" for (int i = 0; i < holomapN; i++)");
175
+ this.emit(" {");
176
+ this.emit(
177
+ " int p = i * 12; int c = i * 3;"
178
+ );
179
+ this.emit(
180
+ " verts[i] = new Vector3(System.BitConverter.ToSingle(holomapPos, p), System.BitConverter.ToSingle(holomapPos, p + 4), System.BitConverter.ToSingle(holomapPos, p + 8));"
181
+ );
182
+ this.emit(
183
+ " cols[i] = new Color32(holomapCol[c], holomapCol[c + 1], holomapCol[c + 2], 255);"
184
+ );
185
+ this.emit(" idx[i] = i;");
186
+ this.emit(" }");
187
+ this.emit(" mesh.vertices = verts;");
188
+ this.emit(" mesh.colors32 = cols;");
189
+ this.emit(" mesh.SetIndices(idx, MeshTopology.Points, 0, true);");
190
+ this.emit(" mesh.RecalculateBounds();");
191
+ this.emit(" var mf = holomapGo.AddComponent<MeshFilter>();");
192
+ this.emit(" mf.sharedMesh = mesh;");
193
+ this.emit(" var mr = holomapGo.AddComponent<MeshRenderer>();");
194
+ this.emit(
195
+ ' var sh = Shader.Find("Universal Render Pipeline/Unlit");'
196
+ );
197
+ this.emit(
198
+ ' if (sh == null) sh = Shader.Find("Unlit/Color");'
199
+ );
200
+ this.emit(' mr.sharedMaterial = sh != null ? new Material(sh) : new Material(Shader.Find("Hidden/InternalErrorShader"));');
201
+ this.emit(" }");
202
+ this.emit(" }");
203
+ }
204
+ /** Concatenated string literals so very large MCP payloads stay valid C#. */
205
+ chunkBase64CSharpLiteral(b64) {
206
+ const chunk = 4096;
207
+ if (b64.length <= chunk) return `"${b64}"`;
208
+ const parts = [];
209
+ for (let i = 0; i < b64.length; i += chunk) {
210
+ parts.push(`"${b64.slice(i, i + chunk)}"`);
211
+ }
212
+ return parts.join(" + ");
213
+ }
130
214
  compileDomainBlocks(composition) {
131
215
  const domainBlocks = composition.domainBlocks ?? [];
132
216
  if (domainBlocks.length === 0) return;
@@ -690,5 +774,5 @@ var init_UnityCompiler = __esm({
690
774
  });
691
775
 
692
776
  export { UnityCompiler, UnityCompiler_exports, init_UnityCompiler };
693
- //# sourceMappingURL=chunk-TEWCN33Y.js.map
694
- //# sourceMappingURL=chunk-TEWCN33Y.js.map
777
+ //# sourceMappingURL=chunk-P7YIA5LN.js.map
778
+ //# sourceMappingURL=chunk-P7YIA5LN.js.map
@@ -0,0 +1,220 @@
1
+ 'use strict';
2
+
3
+ // src/testing/DeterminismHarness.ts
4
+ function getGlobal() {
5
+ return globalThis ?? {};
6
+ }
7
+ function detectRuntime() {
8
+ const g = getGlobal();
9
+ if (typeof g.window !== "undefined" && typeof g.document !== "undefined") {
10
+ return "browser";
11
+ }
12
+ if (typeof g.process !== "undefined" && g.process.versions?.node) {
13
+ return "node";
14
+ }
15
+ return "unknown";
16
+ }
17
+ function detectBrowserFromUserAgent(ua) {
18
+ if (!ua) return {};
19
+ let browser;
20
+ let os;
21
+ if (/Firefox\//.test(ua)) browser = "firefox";
22
+ else if (/Edg\//.test(ua)) browser = "edge";
23
+ else if (/Chrome\//.test(ua)) browser = "chromium";
24
+ else if (/Safari\//.test(ua)) browser = "safari";
25
+ if (/Windows NT/.test(ua)) os = "windows";
26
+ else if (/Mac OS X/.test(ua)) os = "macos";
27
+ else if (/Linux/.test(ua)) os = "linux";
28
+ else if (/Android/.test(ua)) os = "android";
29
+ else if (/iPhone|iPad/.test(ua)) os = "ios";
30
+ return { browser, os };
31
+ }
32
+ async function captureEnvironment(annotations = {}) {
33
+ const runtime = detectRuntime();
34
+ const g = getGlobal();
35
+ const info = { runtime };
36
+ if (Object.keys(annotations).length > 0) info.annotations = { ...annotations };
37
+ if (runtime === "browser") {
38
+ const nav = g.navigator;
39
+ const ua = nav?.userAgent;
40
+ info.browser = { userAgent: ua, ...detectBrowserFromUserAgent(ua) };
41
+ if (nav?.gpu?.requestAdapter) {
42
+ try {
43
+ const adapter = await nav.gpu.requestAdapter();
44
+ let gpuInfo = adapter?.info;
45
+ if (!gpuInfo && adapter?.requestAdapterInfo) {
46
+ gpuInfo = await adapter.requestAdapterInfo();
47
+ }
48
+ if (gpuInfo) {
49
+ info.gpu = {
50
+ vendor: gpuInfo.vendor,
51
+ architecture: gpuInfo.architecture,
52
+ device: gpuInfo.device,
53
+ description: gpuInfo.description,
54
+ backend: "webgpu"
55
+ };
56
+ }
57
+ } catch {
58
+ }
59
+ }
60
+ } else if (runtime === "node") {
61
+ const proc = g.process;
62
+ if (proc) {
63
+ info.node = {
64
+ version: proc.versions?.node ?? "unknown",
65
+ arch: proc.arch ?? "unknown",
66
+ platform: proc.platform ?? "unknown"
67
+ };
68
+ }
69
+ }
70
+ return info;
71
+ }
72
+ function toUint8Array(input) {
73
+ if (input instanceof Uint8Array) return input;
74
+ if (typeof TextEncoder !== "undefined") {
75
+ return new TextEncoder().encode(input);
76
+ }
77
+ const bytes = new Uint8Array(input.length);
78
+ for (let i = 0; i < input.length; i++) bytes[i] = input.charCodeAt(i) & 255;
79
+ return bytes;
80
+ }
81
+ function fnv1a64Hex(bytes) {
82
+ let hash = 0xcbf29ce484222325n;
83
+ const prime = 0x100000001b3n;
84
+ const mask = 0xffffffffffffffffn;
85
+ for (let i = 0; i < bytes.length; i++) {
86
+ hash = (hash ^ BigInt(bytes[i])) & mask;
87
+ hash = hash * prime & mask;
88
+ }
89
+ return hash.toString(16).padStart(16, "0");
90
+ }
91
+ async function hashBytes(input, algo = "sha256") {
92
+ const bytes = toUint8Array(input);
93
+ if (algo === "sha256") {
94
+ const g = getGlobal();
95
+ const subtle = g.crypto?.subtle;
96
+ if (subtle && typeof subtle.digest === "function") {
97
+ try {
98
+ const digest = await subtle.digest("SHA-256", bytes);
99
+ const view = new Uint8Array(digest);
100
+ let hex = "";
101
+ for (let i = 0; i < view.length; i++) hex += view[i].toString(16).padStart(2, "0");
102
+ return `sha256:${hex}`;
103
+ } catch {
104
+ }
105
+ }
106
+ }
107
+ return `fnv1a-64:${fnv1a64Hex(bytes)}`;
108
+ }
109
+ var DeterminismHarness = class {
110
+ constructor(options = {}) {
111
+ this.options = {
112
+ captureOutput: options.captureOutput ?? false,
113
+ hashAlgorithm: options.hashAlgorithm ?? "sha256",
114
+ annotations: options.annotations ?? {}
115
+ };
116
+ }
117
+ /**
118
+ * Run a probe function, capture environment, hash the output,
119
+ * return a structured ProbeResult. Never throws — errors are
120
+ * caught and reported on the result's `error` field with a
121
+ * sentinel outputHash of `error:<message>`.
122
+ */
123
+ async probe(name, fn, annotations = {}) {
124
+ const timestamp = Date.now();
125
+ const mergedAnnotations = { ...this.options.annotations, ...annotations };
126
+ const environment = await captureEnvironment(mergedAnnotations);
127
+ const started = typeof performance !== "undefined" ? performance.now() : timestamp;
128
+ let output;
129
+ let error;
130
+ try {
131
+ output = await fn();
132
+ } catch (err) {
133
+ error = err instanceof Error ? err.message : String(err);
134
+ }
135
+ const ended = typeof performance !== "undefined" ? performance.now() : Date.now();
136
+ const durationMs = Math.max(0, ended - started);
137
+ if (error !== void 0 || output === void 0) {
138
+ return {
139
+ name,
140
+ timestamp,
141
+ environment,
142
+ durationMs,
143
+ outputHash: `error:${error ?? "no-output"}`,
144
+ outputSize: 0,
145
+ error
146
+ };
147
+ }
148
+ const outputHash = await hashBytes(output, this.options.hashAlgorithm);
149
+ const outputSize = output instanceof Uint8Array ? output.byteLength : toUint8Array(output).byteLength;
150
+ const result = {
151
+ name,
152
+ timestamp,
153
+ environment,
154
+ durationMs,
155
+ outputHash,
156
+ outputSize
157
+ };
158
+ if (this.options.captureOutput) result.output = output;
159
+ return result;
160
+ }
161
+ /**
162
+ * Compare a collection of probe results and report whether they
163
+ * agree. Groups results by hash so the caller can see which
164
+ * environments produced which outputs.
165
+ */
166
+ static compareResults(results) {
167
+ if (results.length === 0) {
168
+ return {
169
+ probeName: "(empty)",
170
+ totalResults: 0,
171
+ uniqueHashes: 0,
172
+ divergent: false,
173
+ groups: [],
174
+ summary: "No results supplied to compare."
175
+ };
176
+ }
177
+ const probeName = results[0].name;
178
+ const byHash = /* @__PURE__ */ new Map();
179
+ for (const r of results) {
180
+ const existing = byHash.get(r.outputHash);
181
+ if (existing) existing.push(r);
182
+ else byHash.set(r.outputHash, [r]);
183
+ }
184
+ const groups = Array.from(byHash.entries()).map(([hash, rs]) => ({
185
+ hash,
186
+ results: rs,
187
+ environments: rs.map((r) => describeEnvironment(r.environment))
188
+ }));
189
+ const divergent = groups.length > 1;
190
+ const summary = divergent ? `DIVERGENT: ${groups.length} distinct hashes across ${results.length} runs of "${probeName}".` : `CONVERGENT: all ${results.length} runs of "${probeName}" produced hash ${groups[0].hash}.`;
191
+ return {
192
+ probeName,
193
+ totalResults: results.length,
194
+ uniqueHashes: groups.length,
195
+ divergent,
196
+ groups,
197
+ summary
198
+ };
199
+ }
200
+ };
201
+ function describeEnvironment(env) {
202
+ const parts = [env.runtime];
203
+ if (env.browser?.browser) parts.push(env.browser.browser);
204
+ if (env.browser?.os) parts.push(env.browser.os);
205
+ if (env.node) parts.push(`node ${env.node.version} ${env.node.platform}/${env.node.arch}`);
206
+ if (env.gpu?.vendor) parts.push(`gpu:${env.gpu.vendor}${env.gpu.architecture ? "/" + env.gpu.architecture : ""}`);
207
+ if (env.annotations) {
208
+ for (const [k, v] of Object.entries(env.annotations)) {
209
+ parts.push(`${k}=${v}`);
210
+ }
211
+ }
212
+ return parts.join(" | ");
213
+ }
214
+
215
+ exports.DeterminismHarness = DeterminismHarness;
216
+ exports.captureEnvironment = captureEnvironment;
217
+ exports.describeEnvironment = describeEnvironment;
218
+ exports.hashBytes = hashBytes;
219
+ //# sourceMappingURL=chunk-PGANYCAG.cjs.map
220
+ //# sourceMappingURL=chunk-PGANYCAG.cjs.map