@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
@@ -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,6 +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-KDB6BUMB.js';
2
- import { init_CompilerBase, init_ANSNamespace, CompilerBase, ANSCapabilityPath } from './chunk-QWKUKVRE.js';
3
- import { __export, __esm } from './chunk-32TWR3HE.js';
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';
4
6
 
5
7
  // src/compiler/UnityCompiler.ts
6
8
  var UnityCompiler_exports = {};
@@ -11,8 +13,8 @@ var UnityCompiler;
11
13
  var init_UnityCompiler = __esm({
12
14
  "src/compiler/UnityCompiler.ts"() {
13
15
  init_CompilerBase();
14
- init_ANSNamespace();
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;
@@ -291,9 +375,7 @@ var init_UnityCompiler = __esm({
291
375
  this.emit(`// WARNING: geometry "model" without source \u2014 placeholder cube`);
292
376
  this.emit(`var ${varName}GO = GameObject.CreatePrimitive(PrimitiveType.Cube);`);
293
377
  }
294
- this.emit(
295
- `${varName}GO.name = "${this.escapeStringValue(obj.name, "CSharp")}";`
296
- );
378
+ this.emit(`${varName}GO.name = "${this.escapeStringValue(obj.name, "CSharp")}";`);
297
379
  this.emit(`${varName}GO.transform.SetParent(${parentVar});`);
298
380
  } else if (isSparkles) {
299
381
  this.emit(
@@ -315,9 +397,7 @@ var init_UnityCompiler = __esm({
315
397
  };
316
398
  const primitive = primitiveMap[meshType] || "PrimitiveType.Cube";
317
399
  this.emit(`var ${varName}GO = GameObject.CreatePrimitive(${primitive});`);
318
- this.emit(
319
- `${varName}GO.name = "${this.escapeStringValue(obj.name, "CSharp")}";`
320
- );
400
+ this.emit(`${varName}GO.name = "${this.escapeStringValue(obj.name, "CSharp")}";`);
321
401
  this.emit(`${varName}GO.transform.SetParent(${parentVar});`);
322
402
  }
323
403
  const pos = this.findObjProp(obj, "position");
@@ -694,5 +774,5 @@ var init_UnityCompiler = __esm({
694
774
  });
695
775
 
696
776
  export { UnityCompiler, UnityCompiler_exports, init_UnityCompiler };
697
- //# sourceMappingURL=chunk-HUFNKFA6.js.map
698
- //# sourceMappingURL=chunk-HUFNKFA6.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