@holoscript/core 8.0.7 → 8.0.9

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 (462) hide show
  1. package/bin/holoscript.cjs +5 -1
  2. package/dist/GLTFPipeline-L76YTXKA.js +15 -0
  3. package/dist/GLTFPipeline-ZWJN7GI6.cjs +36 -0
  4. package/dist/HoloCompositionParser-K76KTEEE.js +12 -0
  5. package/dist/HoloCompositionParser-UZH6Y4HO.cjs +45 -0
  6. package/dist/HoloScriptCodeParser-2D4ERFUZ.js +6 -0
  7. package/dist/HoloScriptCodeParser-UDRLDA7I.cjs +23 -0
  8. package/dist/HoloScriptPlusParser-FTMCGWXD.js +13 -0
  9. package/dist/HoloScriptPlusParser-LQR5GIKF.cjs +30 -0
  10. package/dist/HoloScriptRuntime-UTRLJI5L.js +12 -0
  11. package/dist/HoloScriptRuntime-YBYXJHJN.cjs +21 -0
  12. package/dist/SceneIRCompiler-63KA3M2F.js +17 -0
  13. package/dist/SceneIRCompiler-KWUFHZ4O.cjs +42 -0
  14. package/dist/{USDZExporter-AUHZODOF.cjs → USDZExporter-ML4UMIGC.cjs} +3 -3
  15. package/dist/{USDZExporter-GXB4AUSG.js → USDZExporter-ZFKLQ76G.js} +3 -3
  16. package/dist/agents/index.cjs +1 -1
  17. package/dist/agents/index.js +1 -1
  18. package/dist/audit/AuditLogger.d.ts +106 -0
  19. package/dist/audit/AuditQueryBuilder.d.ts +79 -0
  20. package/dist/audit/ComplianceReporter.d.ts +90 -0
  21. package/dist/audit/index.d.ts +13 -0
  22. package/dist/{chunk-FGMDMJM7.js → chunk-2BYAUHBO.js} +3 -3
  23. package/dist/{chunk-EDPYCLRC.cjs → chunk-2E6PP5UE.cjs} +83 -59
  24. package/dist/{chunk-GASCWJK5.js → chunk-2EGGAZT3.js} +65 -287
  25. package/dist/{chunk-SIEXCILW.js → chunk-2I3XAGMF.js} +3 -3
  26. package/dist/{chunk-OS533P33.cjs → chunk-2KKOYZYI.cjs} +1074 -1655
  27. package/dist/chunk-2MQKNDNH.js +51 -0
  28. package/dist/{chunk-7DMMMBCY.cjs → chunk-2X3IPCBK.cjs} +10 -10
  29. package/dist/chunk-2ZOTBO25.cjs +202 -0
  30. package/dist/chunk-356N4NPM.cjs +152 -0
  31. package/dist/{chunk-X3GJPRVK.cjs → chunk-36NPLOI4.cjs} +92 -81
  32. package/dist/{chunk-SLU6UPJI.cjs → chunk-37HHY7RH.cjs} +5 -5
  33. package/dist/{chunk-YDPEHCCI.cjs → chunk-3CDDRUER.cjs} +3 -118
  34. package/dist/chunk-3F7ZZWIN.js +1651 -0
  35. package/dist/chunk-3ILD7TKP.cjs +187 -0
  36. package/dist/{chunk-X27QRG4C.cjs → chunk-3IUHTGDD.cjs} +153 -41
  37. package/dist/{chunk-PXNZ6TME.js → chunk-4376VHNJ.js} +60 -36
  38. package/dist/{chunk-YKGPCZEE.cjs → chunk-4FIBOJW6.cjs} +10 -10
  39. package/dist/chunk-4Q7RKQQI.cjs +14195 -0
  40. package/dist/{chunk-YCM6QQRT.cjs → chunk-566ZB4LZ.cjs} +180 -8
  41. package/dist/{chunk-2Y3V22SG.js → chunk-5CURIYGT.js} +3 -3
  42. package/dist/{chunk-QBWNJXNR.js → chunk-5FYMCVBY.js} +5 -5
  43. package/dist/{chunk-ZA34AN3R.js → chunk-5LVFTGKH.js} +841 -12
  44. package/dist/chunk-63AUAIL6.js +48 -0
  45. package/dist/chunk-655FATJU.js +110 -0
  46. package/dist/{chunk-TQ377OLB.cjs → chunk-65S62L4D.cjs} +28 -22
  47. package/dist/chunk-6NTAZN5Z.cjs +502 -0
  48. package/dist/chunk-6TRX6AR2.js +9376 -0
  49. package/dist/chunk-6ZCCLKS2.cjs +51 -0
  50. package/dist/{chunk-MDR235RZ.js → chunk-734OB5SK.js} +721 -8
  51. package/dist/{chunk-Q2Q34NF3.js → chunk-77QI552M.js} +6 -6
  52. package/dist/{chunk-WKX5AMOY.js → chunk-7I74JWPW.js} +3 -3
  53. package/dist/{chunk-5FSKKMR7.cjs → chunk-7IDJDMPU.cjs} +232 -4
  54. package/dist/chunk-7VBKRGIZ.cjs +847 -0
  55. package/dist/{chunk-KCPHASCO.js → chunk-AATYYLYK.js} +5 -5
  56. package/dist/{chunk-WFKVS2K4.cjs → chunk-AUZRKIHQ.cjs} +1101 -55
  57. package/dist/{chunk-DTGBOSEM.cjs → chunk-AWXFEAQL.cjs} +12 -12
  58. package/dist/{chunk-THCK6ECW.js → chunk-B3CWTCK2.js} +231 -3
  59. package/dist/chunk-BCP4E7MD.cjs +997 -0
  60. package/dist/chunk-BG7RPYJP.js +91 -0
  61. package/dist/{chunk-VF257YKO.js → chunk-BP4KTMLY.js} +117 -5
  62. package/dist/{chunk-YN6IETRZ.js → chunk-BQJ3YBF3.js} +6424 -987
  63. package/dist/{chunk-KOUAQL2B.cjs → chunk-CANAL6CT.cjs} +1569 -168
  64. package/dist/{chunk-FDSGHPAK.js → chunk-CBSDJF3B.js} +3 -3
  65. package/dist/{chunk-FEWUHQNM.cjs → chunk-CFVK26P4.cjs} +4 -4
  66. package/dist/{chunk-M7K4LE66.cjs → chunk-CI33NINL.cjs} +4 -4
  67. package/dist/{chunk-2OWDB4FB.js → chunk-CKV5NYAE.js} +6 -6
  68. package/dist/{chunk-LPS5AMQD.cjs → chunk-CM4NHXVO.cjs} +24 -24
  69. package/dist/chunk-D3HSRXYB.js +115 -0
  70. package/dist/{chunk-FNHJRI32.js → chunk-DBH3D2MU.js} +1561 -160
  71. package/dist/{chunk-GW3LKD5C.js → chunk-DJNH4HFW.js} +3 -3
  72. package/dist/{chunk-2GCNOI2U.cjs → chunk-DN6F4DHH.cjs} +9 -3
  73. package/dist/chunk-DQRJ5RJG.js +432 -0
  74. package/dist/{chunk-C7ZBSV2Q.js → chunk-DUG3OQAS.js} +106 -43
  75. package/dist/chunk-ECUYJOJ2.cjs +199 -0
  76. package/dist/chunk-EEMTCAK7.js +182 -0
  77. package/dist/{chunk-3SKLAUDD.cjs → chunk-EI3J6LTW.cjs} +359 -581
  78. package/dist/{chunk-SSSN7VAM.js → chunk-EM2OGPYE.js} +4 -4
  79. package/dist/{chunk-56VOWURB.cjs → chunk-ENZCIQZC.cjs} +522 -453
  80. package/dist/chunk-ESBXUYOC.cjs +836 -0
  81. package/dist/{chunk-L5U4W6JC.js → chunk-ESSEF6U2.js} +4 -4
  82. package/dist/chunk-ET3AN4W3.js +824 -0
  83. package/dist/chunk-EXKSFGSX.cjs +14 -14
  84. package/dist/{chunk-I76GIKN7.cjs → chunk-F3YT6GUF.cjs} +17 -17
  85. package/dist/{chunk-WRWEX5ZF.js → chunk-F75DZBBI.js} +3 -3
  86. package/dist/{chunk-4JGRWHZJ.js → chunk-FG6PYGIZ.js} +12 -6
  87. package/dist/chunk-FGGJQRLZ.js +14 -14
  88. package/dist/{chunk-SXOSDZD6.js → chunk-FWCHPCD4.js} +128 -10
  89. package/dist/{chunk-XW6IXEQH.cjs → chunk-G35CAQ7I.cjs} +5 -5
  90. package/dist/{chunk-7VMGP2FW.js → chunk-G6KACNMO.js} +132 -188
  91. package/dist/{chunk-FJPADH77.cjs → chunk-GAWJJAGT.cjs} +6 -6
  92. package/dist/chunk-GGR7QUKK.cjs +4724 -0
  93. package/dist/chunk-GIBF4BHH.js +14098 -0
  94. package/dist/{chunk-AWB7QYY6.cjs → chunk-GILYQ5VH.cjs} +6 -6
  95. package/dist/{chunk-FWVYAMNW.cjs → chunk-GKFCHGCM.cjs} +4 -4
  96. package/dist/{chunk-Y3ZFVUUU.js → chunk-GLEJ2TLS.js} +3 -3
  97. package/dist/{chunk-3GWWJT7L.js → chunk-GP3OKSKT.js} +13 -13
  98. package/dist/chunk-GTIPOEHN.js +196 -0
  99. package/dist/{chunk-LMJ5EBV7.cjs → chunk-GZPUA2TL.cjs} +16 -15
  100. package/dist/{chunk-IELX2OKI.js → chunk-H4LJ4HEA.js} +3 -115
  101. package/dist/{chunk-ACVWFGBI.cjs → chunk-HCX4SMFK.cjs} +3 -3
  102. package/dist/{chunk-HYNTS5CP.js → chunk-HHRZ6STP.js} +24 -2
  103. package/dist/chunk-HIDEIEFG.js +48 -0
  104. package/dist/{chunk-W6RW64BB.cjs → chunk-HSWBIDZM.cjs} +228 -5
  105. package/dist/{chunk-GSOUNWEL.js → chunk-HVX7QQYK.js} +1035 -1616
  106. package/dist/{chunk-TRCGG42I.cjs → chunk-IFW5IW4L.cjs} +6502 -1019
  107. package/dist/{chunk-F5LKJ6F5.cjs → chunk-IJU6AS67.cjs} +32 -28
  108. package/dist/{chunk-TVANHNJ7.js → chunk-IK6Z2HNC.js} +173 -3
  109. package/dist/{chunk-QGMUTVVH.cjs → chunk-IS7NTKY5.cjs} +20 -20
  110. package/dist/{chunk-YFVQWSNJ.js → chunk-IXWGYWH6.js} +3 -3
  111. package/dist/chunk-J2DAS2PL.js +148 -0
  112. package/dist/chunk-JBQXZIWB.js +148 -0
  113. package/dist/chunk-JBYBMBMW.js +261 -0
  114. package/dist/{chunk-LWUOUCYL.js → chunk-JEJ7TT54.js} +5 -5
  115. package/dist/{chunk-DUCB6LGL.js → chunk-JOTCTHN5.js} +211 -5
  116. package/dist/{chunk-47RUFYKR.js → chunk-K56UVEXV.js} +3 -3
  117. package/dist/{chunk-XSFNHP2E.js → chunk-KB26H447.js} +3 -3
  118. package/dist/{chunk-3NGDZZR4.js → chunk-KEYG7HGY.js} +430 -37
  119. package/dist/{chunk-DY72BMU5.js → chunk-KFVNCW4Q.js} +4 -4
  120. package/dist/chunk-KPGC7SK2.js +192 -0
  121. package/dist/chunk-KROXXBK5.cjs +53 -0
  122. package/dist/{chunk-ZPZAVHXL.cjs → chunk-LB3ZZMKT.cjs} +137 -19
  123. package/dist/chunk-LDYZWNJW.cjs +1654 -0
  124. package/dist/{chunk-ULMSSHCJ.cjs → chunk-LMB555QB.cjs} +405 -38
  125. package/dist/{chunk-CBJY23VL.js → chunk-MD4IVS42.js} +3 -3
  126. package/dist/{chunk-VMLKSV26.js → chunk-MDDWEBCX.js} +226 -3
  127. package/dist/chunk-MUWH4QK5.cjs +94 -0
  128. package/dist/{chunk-T6W3Z3SH.cjs → chunk-N2ILK7BF.cjs} +4 -4
  129. package/dist/{chunk-6EX3I5P4.cjs → chunk-N74QRJGP.cjs} +6 -6
  130. package/dist/chunk-NFFHLX37.cjs +132 -0
  131. package/dist/chunk-NJSYWX7H.js +190 -0
  132. package/dist/{chunk-SH5PPVK7.cjs → chunk-NQN5LFN4.cjs} +165 -221
  133. package/dist/chunk-NTQRFOPP.cjs +56 -0
  134. package/dist/{chunk-YFWRJW4B.js → chunk-NWMJPTVL.js} +51 -55
  135. package/dist/{chunk-63ZGNR2T.cjs → chunk-OC6GV5QH.cjs} +42 -42
  136. package/dist/{chunk-7E7GCQCK.js → chunk-OG3MBHM3.js} +9 -3
  137. package/dist/chunk-OMNHTCS4.cjs +264 -0
  138. package/dist/chunk-OQXB6NNC.cjs +117 -0
  139. package/dist/{chunk-Y57W2CT5.cjs → chunk-OV46CCA2.cjs} +51 -55
  140. package/dist/{chunk-6PRZIHGL.cjs → chunk-OV6HHKLE.cjs} +21 -266
  141. package/dist/{chunk-C37BHB7N.cjs → chunk-P26YYPOO.cjs} +5 -5
  142. package/dist/{chunk-2BZHWUSR.cjs → chunk-P7JEKJTZ.cjs} +16 -16
  143. package/dist/{chunk-NGBXXZLL.cjs → chunk-PDXX5UI4.cjs} +45 -45
  144. package/dist/{chunk-FHQFPYV4.js → chunk-PJFTTSKE.js} +8 -7
  145. package/dist/{chunk-GVFJ6T4S.cjs → chunk-PVODJEJ7.cjs} +721 -8
  146. package/dist/{chunk-ZZ7RO2UQ.js → chunk-Q265VZJ4.js} +3 -3
  147. package/dist/{chunk-E7JP3BS3.cjs → chunk-Q47JEE2C.cjs} +4 -4
  148. package/dist/chunk-QBY7LRN2.js +281 -0
  149. package/dist/{chunk-Z6PMDS4G.js → chunk-QDQWKSU3.js} +1090 -53
  150. package/dist/{chunk-GH6C2QGW.cjs → chunk-QEDMOGF3.cjs} +857 -16
  151. package/dist/{chunk-5WUNN6ZN.cjs → chunk-QHSAVOOL.cjs} +24 -2
  152. package/dist/chunk-QJNCDVYM.cjs +137 -0
  153. package/dist/chunk-QM7FJB5W.js +4717 -0
  154. package/dist/chunk-QQFB4RT2.cjs +448 -0
  155. package/dist/chunk-QSYBHQAD.cjs +196 -0
  156. package/dist/{chunk-UGXHYIWT.cjs → chunk-QUJ3ZB55.cjs} +28 -28
  157. package/dist/{chunk-2YSNA2F2.cjs → chunk-QVJMDVYZ.cjs} +5 -5
  158. package/dist/chunk-RAJMAX6D.js +131 -0
  159. package/dist/{chunk-VVKVQZI6.js → chunk-RAN3ECAS.js} +3 -3
  160. package/dist/chunk-RKGUZBOC.js +79 -0
  161. package/dist/{chunk-HLFDZ35S.cjs → chunk-RRQIAJLQ.cjs} +8 -8
  162. package/dist/{chunk-PABONWKI.js → chunk-RXQNRZ5F.js} +3 -3
  163. package/dist/{chunk-7ZHYEITD.cjs → chunk-S4O7CFHQ.cjs} +10 -11
  164. package/dist/chunk-SE7ANBGN.js +128 -0
  165. package/dist/{chunk-X2AVEAZM.cjs → chunk-SJIRCTIS.cjs} +176 -2
  166. package/dist/{chunk-WXQ57LAO.js → chunk-SQXAZHDG.js} +4 -4
  167. package/dist/chunk-SR73L5ZP.cjs +84 -0
  168. package/dist/{chunk-OABEO6HH.js → chunk-SZOLTWWD.js} +2349 -214
  169. package/dist/{chunk-5JEU52DW.js → chunk-TPZ3BN2D.js} +3 -3
  170. package/dist/{chunk-QFU53KRH.js → chunk-TSTFYGGX.js} +4 -5
  171. package/dist/{chunk-EBS32AJI.cjs → chunk-TZCFKZ6Z.cjs} +5 -5
  172. package/dist/chunk-UCVZXQ63.js +724 -0
  173. package/dist/chunk-UGQ3QNV6.js +992 -0
  174. package/dist/chunk-UNMVGZVW.js +142 -0
  175. package/dist/{chunk-TEVX443G.js → chunk-UTUD6GJI.js} +178 -6
  176. package/dist/chunk-UXBYA7DV.cjs +155 -0
  177. package/dist/chunk-V6GXFSK7.cjs +443 -0
  178. package/dist/chunk-VHORVGCG.cjs +761 -0
  179. package/dist/{chunk-B4EKV6HQ.js → chunk-VKCTYLDN.js} +500 -442
  180. package/dist/{chunk-O3MGZDCT.cjs → chunk-VTEXJOSD.cjs} +63 -63
  181. package/dist/chunk-VVAAZITA.cjs +287 -0
  182. package/dist/{chunk-V7AKE5VT.cjs → chunk-W2GA3EQB.cjs} +435 -42
  183. package/dist/chunk-W4GABFCR.js +37 -0
  184. package/dist/chunk-WKEK4NCA.js +490 -0
  185. package/dist/{chunk-5A4TCHOC.cjs → chunk-WNYXT4TE.cjs} +4 -4
  186. package/dist/{chunk-S762UEV5.js → chunk-WTH23ISI.js} +6 -6
  187. package/dist/{chunk-BTKZGHAV.js → chunk-WWNCM473.js} +10 -6
  188. package/dist/{chunk-7X5PNIQJ.js → chunk-X3YFRH6K.js} +27 -25
  189. package/dist/{chunk-4YNYPHH3.cjs → chunk-X75H75UY.cjs} +2351 -213
  190. package/dist/{chunk-LYJJI7ZK.cjs → chunk-XCUDDFKC.cjs} +216 -9
  191. package/dist/chunk-YAO4HPJL.cjs +120 -0
  192. package/dist/chunk-YKY2JBER.cjs +9443 -0
  193. package/dist/chunk-YP5CHEYU.cjs +154 -0
  194. package/dist/{chunk-WRNEH5MO.js → chunk-YW3I2FQL.js} +18 -7
  195. package/dist/{chunk-BRNUPDHJ.js → chunk-Z557DVYN.js} +386 -19
  196. package/dist/{chunk-VSACG2AR.js → chunk-Z6LZUYZF.js} +21 -264
  197. package/dist/chunk-ZHPMP447.cjs +43 -0
  198. package/dist/{chunk-LODTHGST.cjs → chunk-ZK7KX5CD.cjs} +133 -70
  199. package/dist/{chunk-CCPSNT6B.cjs → chunk-ZRPALBQB.cjs} +5 -5
  200. package/dist/chunk-ZVFHPMC5.js +824 -0
  201. package/dist/chunk-ZVQMKUGJ.js +443 -0
  202. package/dist/cli/holoscript-runner.cjs +86 -48
  203. package/dist/cli/holoscript-runner.js +54 -16
  204. package/dist/codebase/index.cjs +1 -1
  205. package/dist/codebase/index.js +1 -1
  206. package/dist/compiler/agent-inference.cjs +11 -11
  207. package/dist/compiler/agent-inference.js +9 -6
  208. package/dist/compiler/android-xr.cjs +13 -12
  209. package/dist/compiler/android-xr.js +11 -10
  210. package/dist/compiler/android.cjs +12 -12
  211. package/dist/compiler/android.js +10 -10
  212. package/dist/compiler/business-quest.cjs +10 -10
  213. package/dist/compiler/business-quest.js +2 -2
  214. package/dist/compiler/coco.cjs +1 -1
  215. package/dist/compiler/coco.js +1 -1
  216. package/dist/compiler/context.cjs +9 -9
  217. package/dist/compiler/context.js +6 -6
  218. package/dist/compiler/daimon-seed.cjs +36 -0
  219. package/dist/compiler/daimon-seed.js +12 -0
  220. package/dist/compiler/domain-block-utils.cjs +205 -156
  221. package/dist/compiler/domain-block-utils.js +8 -7
  222. package/dist/compiler/dtdl.cjs +10 -10
  223. package/dist/compiler/dtdl.js +7 -7
  224. package/dist/compiler/gltf-pipeline.cjs +9 -9
  225. package/dist/compiler/gltf-pipeline.js +2 -2
  226. package/dist/compiler/godot.cjs +10 -9
  227. package/dist/compiler/godot.js +9 -8
  228. package/dist/compiler/incremental.cjs +11 -11
  229. package/dist/compiler/incremental.js +6 -6
  230. package/dist/compiler/index.cjs +2585 -3273
  231. package/dist/compiler/index.d.ts +149 -35
  232. package/dist/compiler/index.js +2197 -3102
  233. package/dist/compiler/ios.cjs +11 -11
  234. package/dist/compiler/ios.js +9 -9
  235. package/dist/compiler/llm-provider-capabilities.cjs +9 -9
  236. package/dist/compiler/llm-provider-capabilities.js +6 -6
  237. package/dist/compiler/nodetoy.cjs +1 -1
  238. package/dist/compiler/nodetoy.js +1 -1
  239. package/dist/compiler/openxr.cjs +11 -10
  240. package/dist/compiler/openxr.js +10 -9
  241. package/dist/compiler/remotion.cjs +1 -1
  242. package/dist/compiler/remotion.js +1 -1
  243. package/dist/compiler/reproducibility.cjs +1 -1
  244. package/dist/compiler/reproducibility.js +1 -1
  245. package/dist/compiler/sdf.cjs +11 -10
  246. package/dist/compiler/sdf.js +9 -8
  247. package/dist/compiler/semantic-scene.cjs +7 -7
  248. package/dist/compiler/semantic-scene.js +2 -2
  249. package/dist/compiler/state.cjs +9 -9
  250. package/dist/compiler/state.js +7 -7
  251. package/dist/compiler/trait-composition.cjs +11 -11
  252. package/dist/compiler/trait-composition.js +7 -7
  253. package/dist/compiler/traits/ProvenanceSemiring.d.ts +167 -0
  254. package/dist/compiler/traits/Semiring.d.ts +26 -0
  255. package/dist/compiler/unity.cjs +11 -10
  256. package/dist/compiler/unity.js +10 -9
  257. package/dist/compiler/unreal.cjs +12 -11
  258. package/dist/compiler/unreal.js +10 -9
  259. package/dist/compiler/urdf.cjs +18 -17
  260. package/dist/compiler/urdf.js +9 -8
  261. package/dist/compiler/usd-physics.cjs +11 -10
  262. package/dist/compiler/usd-physics.js +8 -7
  263. package/dist/compiler/visionos.cjs +11 -10
  264. package/dist/compiler/visionos.js +10 -9
  265. package/dist/compiler/vrchat.cjs +11 -10
  266. package/dist/compiler/vrchat.js +9 -8
  267. package/dist/compiler/wasm.cjs +14 -13
  268. package/dist/compiler/wasm.js +9 -8
  269. package/dist/compiler/webgpu.cjs +10 -9
  270. package/dist/compiler/webgpu.js +9 -8
  271. package/dist/constants.cjs +398 -0
  272. package/dist/constants.js +9 -0
  273. package/dist/coordinators/index.cjs +4 -1
  274. package/dist/coordinators/index.js +4 -1
  275. package/dist/debugger.cjs +11 -9
  276. package/dist/debugger.js +9 -7
  277. package/dist/{dist-ACXG6IH5.cjs → dist-GRMOP2UL.cjs} +341 -65
  278. package/dist/{dist-VD4L6V7Q.js → dist-ZBUKU2JG.js} +333 -63
  279. package/dist/entries/interop.cjs +23 -23
  280. package/dist/entries/interop.js +3 -3
  281. package/dist/entries/scripting.cjs +12 -11
  282. package/dist/entries/scripting.js +8 -7
  283. package/dist/evolution/index.cjs +66 -0
  284. package/dist/evolution/index.d.ts +162 -0
  285. package/dist/evolution/index.js +17 -0
  286. package/dist/hololand/index.cjs +41 -37
  287. package/dist/hololand/index.js +3 -3
  288. package/dist/index.cjs +12394 -3224
  289. package/dist/index.d.ts +260 -18
  290. package/dist/index.js +10755 -2182
  291. package/dist/keyword-registry/PluginKeywordRegistry.d.ts +138 -0
  292. package/dist/keyword-registry/index.cjs +29 -0
  293. package/dist/keyword-registry/index.d.ts +1 -0
  294. package/dist/keyword-registry/index.js +4 -0
  295. package/dist/math/tropical-spmv.cjs +11 -11
  296. package/dist/math/tropical-spmv.d.ts +1 -0
  297. package/dist/math/tropical-spmv.js +2 -2
  298. package/dist/math/tropicalSpmv.d.ts +43 -0
  299. package/dist/math/vec3.cjs +1 -1
  300. package/dist/math/vec3.js +1 -1
  301. package/dist/matter/StagedMatter.d.ts +82 -0
  302. package/dist/matter/index.cjs +17 -0
  303. package/dist/matter/index.d.ts +1 -0
  304. package/dist/matter/index.js +4 -0
  305. package/dist/{ml-dsa-Z7JDKW4L.js → ml-dsa-J6VKVT4K.js} +3 -3
  306. package/dist/{ml-dsa-FSKBTE3W.cjs → ml-dsa-MTIK4ZUQ.cjs} +23 -23
  307. package/dist/paper-0c-spike/index.cjs +1 -1
  308. package/dist/paper-0c-spike/index.js +1 -1
  309. package/dist/parameter-envelope/ParameterEnvelope.d.ts +128 -0
  310. package/dist/parameter-envelope/index.cjs +17 -0
  311. package/dist/parameter-envelope/index.d.ts +2 -0
  312. package/dist/parameter-envelope/index.js +4 -0
  313. package/dist/parser/HoloCompositionTypes.d.ts +2013 -0
  314. package/dist/parser/PipelineParser.d.ts +162 -0
  315. package/dist/parser.cjs +36 -20
  316. package/dist/parser.js +13 -9
  317. package/dist/plugin-manifest/ManifestAutoLoader.d.ts +35 -0
  318. package/dist/plugin-manifest/PluginManifest.d.ts +156 -0
  319. package/dist/plugin-manifest/index.cjs +25 -0
  320. package/dist/plugin-manifest/index.d.ts +2 -0
  321. package/dist/plugin-manifest/index.js +4 -0
  322. package/dist/plugin-solver-contract/PluginSolverContract.d.ts +288 -0
  323. package/dist/plugin-solver-contract/index.cjs +41 -0
  324. package/dist/plugin-solver-contract/index.d.ts +1 -0
  325. package/dist/plugin-solver-contract/index.js +4 -0
  326. package/dist/policy/ContentPolicyGate.d.ts +51 -0
  327. package/dist/policy/PolicyPack.d.ts +120 -0
  328. package/dist/policy/blocklist.d.ts +32 -0
  329. package/dist/policy/defaults.d.ts +44 -0
  330. package/dist/policy/index.cjs +106 -0
  331. package/dist/policy/index.d.ts +17 -0
  332. package/dist/policy/index.js +5 -0
  333. package/dist/policy/jsonLogic.d.ts +31 -0
  334. package/dist/policy/types.d.ts +174 -0
  335. package/dist/proof-composition/ProofCompositionLaw.d.ts +93 -0
  336. package/dist/proof-composition/index.cjs +25 -0
  337. package/dist/proof-composition/index.d.ts +1 -0
  338. package/dist/proof-composition/index.js +4 -0
  339. package/dist/receipts/hash-policy.d.ts +85 -0
  340. package/dist/reconstruction/index.cjs +75 -47
  341. package/dist/reconstruction/index.js +5 -5
  342. package/dist/runtime/plugin-trait-registrar.d.ts +36 -0
  343. package/dist/runtime.cjs +81 -79
  344. package/dist/runtime.js +9 -7
  345. package/dist/scene-presets-EDKYZ5GW.js +4 -0
  346. package/dist/scene-presets-NCW2CFRS.cjs +17 -0
  347. package/dist/self-improvement/index.cjs +1 -1
  348. package/dist/self-improvement/index.js +1 -1
  349. package/dist/{src-PT2FERDV.cjs → src-G3D7ZATQ.cjs} +545 -21
  350. package/dist/{src-J6CM4AUR.js → src-UXYA7HM6.js} +539 -16
  351. package/dist/storage/index.cjs +10 -10
  352. package/dist/storage/index.js +3 -3
  353. package/dist/testing.cjs +1 -1
  354. package/dist/testing.js +1 -1
  355. package/dist/tools/index.cjs +3631 -0
  356. package/dist/tools/index.js +3581 -0
  357. package/dist/traitDocs/traitDocs.cjs +9 -9
  358. package/dist/traitDocs/traitDocs.d.ts +1 -0
  359. package/dist/traitDocs/traitDocs.js +3 -3
  360. package/dist/traits/ControlLoopTrait.d.ts +154 -0
  361. package/dist/traits/KinematicChainTrait.d.ts +116 -0
  362. package/dist/traits/SensorSamplingTrait.d.ts +154 -0
  363. package/dist/traits/TraitTypes.d.ts +270 -0
  364. package/dist/traits/TransactionTrait.d.ts +121 -0
  365. package/dist/traits/botanical-lotus.cjs +54 -50
  366. package/dist/traits/botanical-lotus.js +2 -5
  367. package/dist/traits/control-loop.cjs +21 -0
  368. package/dist/traits/control-loop.d.ts +1 -0
  369. package/dist/traits/control-loop.js +4 -0
  370. package/dist/traits/engines/cloth-verlet.d.ts +65 -0
  371. package/dist/traits/engines/index.cjs +19 -19
  372. package/dist/traits/engines/index.d.ts +15 -275
  373. package/dist/traits/engines/index.js +3 -3
  374. package/dist/traits/engines/motion-data-schema.d.ts +119 -0
  375. package/dist/traits/engines/motion-matching.d.ts +102 -0
  376. package/dist/traits/engines/noise.d.ts +25 -0
  377. package/dist/traits/engines/onnx-adapter.d.ts +173 -0
  378. package/dist/traits/engines/onnx-motion-matching.d.ts +163 -0
  379. package/dist/traits/engines/pfnn-network.d.ts +92 -0
  380. package/dist/traits/engines/synthetic-walk-cycle.d.ts +38 -0
  381. package/dist/traits/engines/tensor-ops.d.ts +15 -0
  382. package/dist/traits/index.cjs +2789 -1259
  383. package/dist/traits/index.d.ts +35 -0
  384. package/dist/traits/index.js +1692 -411
  385. package/dist/traits/kinematic-chain.cjs +25 -0
  386. package/dist/traits/kinematic-chain.d.ts +1 -0
  387. package/dist/traits/kinematic-chain.js +4 -0
  388. package/dist/traits/sensor-sampling.cjs +33 -0
  389. package/dist/traits/sensor-sampling.d.ts +1 -0
  390. package/dist/traits/sensor-sampling.js +4 -0
  391. package/dist/traits/simulation-solver-factory.cjs +1 -1
  392. package/dist/traits/simulation-solver-factory.js +1 -1
  393. package/dist/traits/transaction.cjs +29 -0
  394. package/dist/traits/transaction.d.ts +1 -0
  395. package/dist/traits/transaction.js +4 -0
  396. package/dist/traits/webcam-gaze.cjs +1 -1
  397. package/dist/traits/webcam-gaze.js +1 -1
  398. package/dist/type-checker.cjs +7 -6
  399. package/dist/type-checker.js +5 -4
  400. package/dist/types/AdvancedTypeSystem.d.ts +489 -0
  401. package/dist/types/HoloScriptPlus.d.ts +810 -0
  402. package/dist/types/base.d.ts +248 -0
  403. package/dist/types.d.ts +799 -0
  404. package/dist/world/index.cjs +3 -4
  405. package/dist/world/index.js +3 -4
  406. package/dist/world-model/index.cjs +1 -1
  407. package/dist/world-model/index.js +1 -1
  408. package/dist/wot/index.cjs +1 -1
  409. package/dist/wot/index.js +1 -1
  410. package/package.json +80 -13
  411. package/dist/GLTFPipeline-3EJLL3TS.cjs +0 -38
  412. package/dist/GLTFPipeline-3OWJV2VK.js +0 -17
  413. package/dist/HoloScriptPlusParser-ADWRY5OS.cjs +0 -698
  414. package/dist/HoloScriptPlusParser-JLJDXHSC.js +0 -693
  415. package/dist/HoloScriptPlusParser-QCGFPWIL.cjs +0 -27
  416. package/dist/HoloScriptPlusParser-WENAFEFV.js +0 -10
  417. package/dist/HoloScriptRuntime-GGRVEU4T.cjs +0 -19
  418. package/dist/HoloScriptRuntime-GJK6VJPH.js +0 -10
  419. package/dist/chunk-22Q5A6RV.js +0 -979
  420. package/dist/chunk-4C57PR42.js +0 -468
  421. package/dist/chunk-4W5G5QVL.cjs +0 -847
  422. package/dist/chunk-5ET6L4NS.js +0 -487
  423. package/dist/chunk-C4GSLCHE.cjs +0 -7153
  424. package/dist/chunk-F2G6CWFT.js +0 -7089
  425. package/dist/chunk-G6PNEASF.cjs +0 -814
  426. package/dist/chunk-GTA4Q3A3.js +0 -1491
  427. package/dist/chunk-HCCQLAA4.cjs +0 -74
  428. package/dist/chunk-HFSVMKM3.cjs +0 -72
  429. package/dist/chunk-KAIVDEIG.cjs +0 -4539
  430. package/dist/chunk-KQU64CIX.cjs +0 -1508
  431. package/dist/chunk-MSYSQ2AJ.js +0 -4533
  432. package/dist/chunk-NHJLP37F.js +0 -70
  433. package/dist/chunk-NHYRRAGI.cjs +0 -490
  434. package/dist/chunk-OIQYIIO3.cjs +0 -473
  435. package/dist/chunk-OL46QLBJ.js +0 -61
  436. package/dist/chunk-SKZPC5AG.cjs +0 -984
  437. package/dist/chunk-SLHLXUMO.js +0 -445
  438. package/dist/chunk-UOIGFQXC.cjs +0 -9750
  439. package/dist/chunk-UOL6Y5TD.cjs +0 -759
  440. package/dist/chunk-UVFI7XIR.cjs +0 -452
  441. package/dist/chunk-VEPGBETF.js +0 -844
  442. package/dist/chunk-XQ5MWMP2.js +0 -756
  443. package/dist/chunk-XT6JY5W5.js +0 -9684
  444. package/dist/chunk-YRRAUB35.js +0 -811
  445. package/dist/compiler/GasOptimizationAnalyzer.d.ts +0 -73
  446. package/dist/compiler/NFTMarketplaceCompiler.d.ts +0 -23
  447. package/dist/compiler/ar.cjs +0 -23
  448. package/dist/compiler/ar.js +0 -11
  449. package/dist/compiler/babylon.cjs +0 -21
  450. package/dist/compiler/babylon.js +0 -15
  451. package/dist/compiler/multi-layer.cjs +0 -24
  452. package/dist/compiler/multi-layer.js +0 -15
  453. package/dist/compiler/playcanvas.cjs +0 -19
  454. package/dist/compiler/playcanvas.js +0 -13
  455. package/dist/compiler/r3f.cjs +0 -39
  456. package/dist/compiler/r3f.d.ts +0 -22
  457. package/dist/compiler/r3f.js +0 -17
  458. package/dist/compiler/vrr.cjs +0 -24
  459. package/dist/compiler/vrr.js +0 -12
  460. package/dist/parser/NFTMarketplaceTypes.d.ts +0 -191
  461. package/dist/playwright-3AT3AKTV.cjs +0 -98673
  462. package/dist/playwright-VZPDVUEQ.js +0 -98660
@@ -1,4 +1,4 @@
1
- import { __esm, __export, __toCommonJS } from './chunk-OL46QLBJ.js';
1
+ import { __esm, __export, __toCommonJS } from './chunk-W4GABFCR.js';
2
2
 
3
3
  // ../plugins/qm-bridge/src/QmSolver.ts
4
4
  function requireCapability(backend, capability) {
@@ -77,6 +77,19 @@ var init_QmSolver = __esm({
77
77
  qmMm: false,
78
78
  // Stage 3
79
79
  maxAtoms: 200
80
+ },
81
+ quantinuum: {
82
+ molecular: true,
83
+ // logical-qubit VQE for small molecules
84
+ periodic: false,
85
+ semiEmpirical: false,
86
+ nmrGiao: false,
87
+ tdDft: false,
88
+ postHf: false,
89
+ transitionStates: false,
90
+ qmMm: false,
91
+ maxAtoms: 8
92
+ // logical qubits are scarce; small molecules on encoded qubits
80
93
  }
81
94
  };
82
95
  }
@@ -460,6 +473,336 @@ var init_ibm_quantum = __esm({
460
473
  }
461
474
  });
462
475
 
476
+ // ../plugins/qm-bridge/src/backends/quantinuum.ts
477
+ var quantinuum_exports = {};
478
+ __export(quantinuum_exports, {
479
+ QuantinuumBackend: () => QuantinuumBackend
480
+ });
481
+ var QuantinuumBackend;
482
+ var init_quantinuum = __esm({
483
+ "../plugins/qm-bridge/src/backends/quantinuum.ts"() {
484
+ init_QmSolver();
485
+ QuantinuumBackend = class {
486
+ constructor(config) {
487
+ this.mode = "steady-state";
488
+ this.fieldNames = ["total_energy"];
489
+ this.scale = "quantum";
490
+ this.backend = "quantinuum";
491
+ this.lastEnergy = null;
492
+ this.lastResult = null;
493
+ this.config = config;
494
+ this.qmConfig = config;
495
+ }
496
+ // ── SimSolver lifecycle ──────────────────────────────────────────────────
497
+ step(_dt) {
498
+ }
499
+ solve() {
500
+ }
501
+ getField(name) {
502
+ if (name === "total_energy") {
503
+ if (this.lastEnergy === null) {
504
+ throw new Error(
505
+ "[quantinuum] No energy computed yet. Call computeEnergy or runLogicalVQE first."
506
+ );
507
+ }
508
+ return new Float64Array([this.lastEnergy]);
509
+ }
510
+ throw new Error(`[quantinuum] Unknown field '${name}'. Available fields: total_energy`);
511
+ }
512
+ getStats() {
513
+ return {
514
+ backend: this.backend,
515
+ executionMode: this.config.executionMode ?? "sim",
516
+ codeFamily: this.config.codeFamily ?? "steane",
517
+ codeDistance: this.config.codeDistance ?? 3,
518
+ lastEnergy: this.lastEnergy,
519
+ lastConverged: this.lastResult?.converged ?? null,
520
+ lastLogicalErrorRate: this.lastResult?.logicalErrorRate ?? null,
521
+ lastAcceptanceFraction: this.lastResult?.postSelection.acceptanceFraction ?? null
522
+ };
523
+ }
524
+ dispose() {
525
+ this.lastEnergy = null;
526
+ this.lastResult = null;
527
+ }
528
+ reset() {
529
+ this.dispose();
530
+ }
531
+ // ── Implemented capabilities ────────────────────────────────────────────
532
+ /**
533
+ * Compute ground-state energy via logical-qubit VQE.
534
+ *
535
+ * Drop-in compatible with the QmEnergyResult shape so a logical run can stand
536
+ * in for Psi4 in energy-only workflows. Nuclear repulsion is estimated
537
+ * classically from the geometry (same approach as the IBM backend).
538
+ */
539
+ async computeEnergy(molecule) {
540
+ requireCapability("quantinuum", "molecular");
541
+ const vqe = await this.runLogicalVQE(molecule);
542
+ const nucRepulsion = this._estimateNuclearRepulsion(molecule);
543
+ const result = {
544
+ totalEnergy: vqe.groundStateEnergy,
545
+ electronicEnergy: vqe.groundStateEnergy - nucRepulsion,
546
+ nuclearRepulsionEnergy: nucRepulsion,
547
+ scfIterations: vqe.optimizerIterations,
548
+ converged: vqe.converged,
549
+ solverConfig: this.qmConfig,
550
+ wallTimeSeconds: vqe.wallTimeSeconds
551
+ };
552
+ this.lastEnergy = result.totalEnergy;
553
+ return result;
554
+ }
555
+ /** Geometry optimisation is not supported — use Psi4, then validate energy here. */
556
+ async optimizeGeometry(_molecule) {
557
+ throw new Error(
558
+ "[quantinuum] Quantinuum backend does not support geometry optimization. Use Psi4 for optimization, then quantinuum for logical-qubit energy validation."
559
+ );
560
+ }
561
+ /**
562
+ * Run VQE on logical (error-corrected) qubits and return the full QEC bookkeeping.
563
+ *
564
+ * Builds a JSON payload describing the molecule + encoding, invokes
565
+ * quantinuum_execute.py, and maps the response onto QuantinuumQECResult — which
566
+ * carries logical-vs-physical error AND the post-selection acceptance fraction.
567
+ */
568
+ async runLogicalVQE(molecule) {
569
+ requireCapability("quantinuum", "molecular");
570
+ const startTime = performance.now();
571
+ const executionMode = this.config.executionMode ?? "sim";
572
+ const input = {
573
+ task: "logical_vqe",
574
+ molecule: {
575
+ atoms: molecule.atoms.map((a) => ({ symbol: a.symbol, x: a.x, y: a.y, z: a.z })),
576
+ charge: molecule.charge ?? 0,
577
+ multiplicity: molecule.multiplicity ?? 1,
578
+ units: molecule.units ?? "angstrom"
579
+ },
580
+ method: this.qmConfig.basis ?? "sto-3g",
581
+ ansatz_layers: this.config.ansatzLayers ?? 1,
582
+ max_iterations: this.config.maxOptimizerIterations ?? 100,
583
+ execution_mode: executionMode,
584
+ device: this.config.device ?? null,
585
+ code_family: this.config.codeFamily ?? "steane",
586
+ code_distance: this.config.codeDistance ?? 3,
587
+ rounds: this.config.rounds ?? 1,
588
+ physical_error_rate: this.config.physicalErrorRate ?? 1e-3
589
+ };
590
+ const raw = await this._runPythonBridge(input);
591
+ if (raw.error) {
592
+ throw new Error(`[quantinuum] logical VQE failed: ${raw.error}`);
593
+ }
594
+ const wallTime = raw.wall_time_seconds ?? (performance.now() - startTime) / 1e3;
595
+ const executionBackend = raw.execution_backend === "quantinuum" ? "quantinuum" : "quantinuum-sim";
596
+ const result = {
597
+ groundStateEnergy: raw.ground_state_energy ?? 0,
598
+ converged: raw.converged ?? false,
599
+ optimizerIterations: raw.optimizer_iterations ?? 0,
600
+ finalCost: raw.final_cost ?? 0,
601
+ numQubits: raw.num_qubits ?? raw.physical_qubits ?? 0,
602
+ circuitDepth: raw.circuit_depth ?? 0,
603
+ executionBackend,
604
+ jobId: raw.job_id,
605
+ wallTimeSeconds: wallTime,
606
+ solverConfig: this.qmConfig,
607
+ logicalQubits: raw.logical_qubits ?? 0,
608
+ physicalQubits: raw.physical_qubits ?? 0,
609
+ codeFamily: raw.code_family ?? (this.config.codeFamily ?? "steane"),
610
+ codeDistance: raw.code_distance ?? (this.config.codeDistance ?? 3),
611
+ rounds: raw.rounds ?? (this.config.rounds ?? 1),
612
+ physicalErrorRate: raw.physical_error_rate ?? (this.config.physicalErrorRate ?? 1e-3),
613
+ logicalErrorRate: raw.logical_error_rate ?? 0,
614
+ postSelection: {
615
+ used: raw.post_selection_used ?? false,
616
+ acceptanceFraction: raw.acceptance_fraction ?? 1
617
+ }
618
+ };
619
+ this.lastResult = result;
620
+ this.lastEnergy = result.groundStateEnergy;
621
+ return result;
622
+ }
623
+ /**
624
+ * VQERunnerTrait / QmSolver compatibility shim: returns the plain VQEResult slice
625
+ * of the logical run, so the Quantinuum backend is usable anywhere `runVQE` is.
626
+ */
627
+ async runVQE(molecule, _ansatzLayers = 1) {
628
+ return this.runLogicalVQE(molecule);
629
+ }
630
+ /**
631
+ * Map a logical-VQE result onto a `cael-quantum-v1.qec` receipt — the honest,
632
+ * cross-vendor record. A post-selected result keeps `post_selection.used=true`
633
+ * and a sub-1.0 acceptance fraction, so the suppression figure can never be
634
+ * quoted without the discard rate that produced it.
635
+ */
636
+ async toQecReceipt(result) {
637
+ const isHw = result.executionBackend === "quantinuum";
638
+ const suppression = result.logicalErrorRate > 0 ? result.physicalErrorRate / result.logicalErrorRate : null;
639
+ const base = {
640
+ schema: "cael-quantum-v1.qec",
641
+ kind: "qec_logical_vqe_receipt",
642
+ created_at: (/* @__PURE__ */ new Date()).toISOString(),
643
+ tier: isHw ? "hardware" : "simulate",
644
+ claim_boundary: isHw ? "Logical-qubit VQE on real Quantinuum H-series hardware (error-corrected)." : "Local classical surrogate of logical-qubit error suppression; NOT hardware and NOT a full stabiliser simulation. Verifies pipeline + receipt only.",
645
+ code: {
646
+ family: result.codeFamily,
647
+ name: `${result.codeFamily}-d${result.codeDistance}`,
648
+ distance: result.codeDistance,
649
+ logical_qubits: result.logicalQubits,
650
+ physical_qubits: result.physicalQubits
651
+ },
652
+ noise_model: isHw ? "hardware" : "depolarizing-surrogate",
653
+ decoder: result.codeFamily === "none" ? "none" : "lookup-table",
654
+ rounds: result.rounds,
655
+ measurement: {
656
+ physical_error_rate: result.physicalErrorRate,
657
+ logical_error_rate: result.logicalErrorRate,
658
+ suppression_factor_physical_over_logical: suppression,
659
+ ground_state_energy: result.groundStateEnergy,
660
+ converged: result.converged
661
+ },
662
+ post_selection: {
663
+ used: result.postSelection.used,
664
+ acceptance_fraction: result.postSelection.acceptanceFraction,
665
+ note: "A fair logical-vs-physical suppression figure must be scaled by acceptance_fraction; a sub-1.0 fraction means shots were discarded."
666
+ }
667
+ };
668
+ const { createHash } = await import('crypto');
669
+ const payload_hash = createHash("sha256").update(
670
+ JSON.stringify({
671
+ schema: base.schema,
672
+ code: base.code,
673
+ noise_model: base.noise_model,
674
+ decoder: base.decoder,
675
+ rounds: base.rounds,
676
+ measurement: base.measurement,
677
+ post_selection: base.post_selection
678
+ })
679
+ ).digest("hex");
680
+ return { ...base, payload_hash, receipt_id: `qec-${payload_hash.slice(0, 16)}` };
681
+ }
682
+ // ── Unsupported classical QM methods ─────────────────────────────────────
683
+ async computeVibrations() {
684
+ throw new Error(this._unsupportedMsg("computeVibrations"));
685
+ }
686
+ async computeChargeDensity() {
687
+ throw new Error(this._unsupportedMsg("computeChargeDensity"));
688
+ }
689
+ async computeBandStructure() {
690
+ throw new Error(this._unsupportedMsg("computeBandStructure"));
691
+ }
692
+ async computeDipoleMoment() {
693
+ throw new Error(this._unsupportedMsg("computeDipoleMoment"));
694
+ }
695
+ async computeDftMaterials() {
696
+ throw new Error(this._unsupportedMsg("computeDftMaterials"));
697
+ }
698
+ async computeNmrSpectrum() {
699
+ throw new Error(this._unsupportedMsg("computeNmrSpectrum"));
700
+ }
701
+ async computeSemiEmpiricalEnergy() {
702
+ throw new Error(this._unsupportedMsg("computeSemiEmpiricalEnergy"));
703
+ }
704
+ async computeTransitionState() {
705
+ throw new Error(this._unsupportedMsg("computeTransitionState"));
706
+ }
707
+ async computeQmMm() {
708
+ throw new Error(this._unsupportedMsg("computeQmMm"));
709
+ }
710
+ // ── Private helpers ──────────────────────────────────────────────────────
711
+ /**
712
+ * Invoke the Python bridge with a JSON payload. The token is passed through the
713
+ * child environment (QUANTINUUM_API_KEY), never the argv JSON, so it cannot leak
714
+ * into process listings or logs. Mirrors the IBM backend's secret discipline.
715
+ */
716
+ async _runPythonBridge(input) {
717
+ const { execFile } = await import('child_process');
718
+ const { promisify } = await import('util');
719
+ const execFileAsync = promisify(execFile);
720
+ const scriptPath = this.config.scriptPath ?? new URL("../../../../../../scripts/quantinuum_execute.py", import.meta.url).pathname;
721
+ const pythonExe = process.env.QISKIT_PYTHON ?? (process.platform === "win32" ? "C:\\Python314\\python.exe" : "python3");
722
+ const bridgeInput = { ...input };
723
+ delete bridgeInput["api_token"];
724
+ delete bridgeInput["apiToken"];
725
+ const apiToken = this._resolveApiToken();
726
+ const childEnv = apiToken ? { ...process.env, QUANTINUUM_API_KEY: apiToken } : process.env;
727
+ const { stdout, stderr } = await execFileAsync(
728
+ pythonExe,
729
+ [scriptPath, JSON.stringify(bridgeInput)],
730
+ { maxBuffer: 10 * 1024 * 1024, env: childEnv }
731
+ );
732
+ if (stderr) {
733
+ const fatal = stderr.split("\n").filter(
734
+ (l) => l.includes("Error:") || l.includes("Traceback") || l.includes("SyntaxError")
735
+ );
736
+ if (fatal.length > 0) {
737
+ throw new Error(`[quantinuum] Python bridge error: ${fatal.join("\n")}`);
738
+ }
739
+ }
740
+ return JSON.parse(stdout);
741
+ }
742
+ _resolveApiToken() {
743
+ if (this.config.apiToken) {
744
+ return this.config.apiToken;
745
+ }
746
+ if (typeof process !== "undefined" && process.env["QUANTINUUM_API_KEY"]) {
747
+ return process.env["QUANTINUUM_API_KEY"];
748
+ }
749
+ return null;
750
+ }
751
+ /** Estimate nuclear repulsion from pairwise Coulomb (Hartree, a.u.). */
752
+ _estimateNuclearRepulsion(molecule) {
753
+ const ANGSTROM_TO_BOHR = 1.8897259886;
754
+ const atomicNumbers = {
755
+ H: 1,
756
+ He: 2,
757
+ Li: 3,
758
+ Be: 4,
759
+ B: 5,
760
+ C: 6,
761
+ N: 7,
762
+ O: 8,
763
+ F: 9,
764
+ Ne: 10,
765
+ Na: 11,
766
+ Mg: 12,
767
+ Al: 13,
768
+ Si: 14,
769
+ P: 15,
770
+ S: 16,
771
+ Cl: 17,
772
+ Ar: 18,
773
+ K: 19,
774
+ Ca: 20,
775
+ Fe: 26,
776
+ Co: 27,
777
+ Ni: 28,
778
+ Cu: 29,
779
+ Zn: 30
780
+ };
781
+ const atoms = molecule.atoms;
782
+ let repulsion = 0;
783
+ for (let i = 0; i < atoms.length; i++) {
784
+ for (let j = i + 1; j < atoms.length; j++) {
785
+ const ai = atoms[i];
786
+ const aj = atoms[j];
787
+ if (ai === void 0 || aj === void 0) continue;
788
+ const zi = atomicNumbers[ai.symbol] ?? 6;
789
+ const zj = atomicNumbers[aj.symbol] ?? 6;
790
+ const dx = (ai.x - aj.x) * ANGSTROM_TO_BOHR;
791
+ const dy = (ai.y - aj.y) * ANGSTROM_TO_BOHR;
792
+ const dz = (ai.z - aj.z) * ANGSTROM_TO_BOHR;
793
+ const r = Math.sqrt(dx * dx + dy * dy + dz * dz);
794
+ if (r > 0) repulsion += zi * zj / r;
795
+ }
796
+ }
797
+ return repulsion;
798
+ }
799
+ _unsupportedMsg(methodName) {
800
+ return `[quantinuum] ${methodName} is not supported. Quantinuum backend supports logical-qubit VQE (computeEnergy / runLogicalVQE / runVQE) only. Use Psi4 or TBLite for classical QM methods.`;
801
+ }
802
+ };
803
+ }
804
+ });
805
+
463
806
  // ../plugins/qm-bridge/src/index.ts
464
807
  init_QmSolver();
465
808
 
@@ -887,9 +1230,21 @@ var Psi4Backend = class {
887
1230
  "1H": 31.882,
888
1231
  "13C": 184.133
889
1232
  };
890
- const nucleusLabels = molecule.atoms.map(
891
- (a) => `${getAtomicNumber(a.symbol) === 1 ? "1" : a.symbol}H`
892
- );
1233
+ const nmrIsotopeLabel = (symbol) => {
1234
+ switch (symbol) {
1235
+ case "H":
1236
+ return "1H";
1237
+ case "C":
1238
+ return "13C";
1239
+ case "N":
1240
+ return "15N";
1241
+ case "P":
1242
+ return "31P";
1243
+ default:
1244
+ return symbol;
1245
+ }
1246
+ };
1247
+ const nucleusLabels = molecule.atoms.map((a) => nmrIsotopeLabel(a.symbol));
893
1248
  const shieldings = raw.shieldings ?? new Array(molecule.atoms.length).fill(0);
894
1249
  const chemicalShifts = shieldings.map((s, i) => {
895
1250
  const label = nucleusLabels[i]?.replace(/\d+/, "") || "1H";
@@ -965,15 +1320,57 @@ var Psi4Backend = class {
965
1320
  /**
966
1321
  * Run a Psi4 input script and parse the JSON result.
967
1322
  *
968
- * In production, this invokes `psi4` as a subprocess. In test/mock mode,
969
- * the result is synthesized. The bridge pattern keeps Psi4 (a C++/Python
970
- * application) outside the HoloScript Node.js process.
1323
+ * When psi4Path is '__mock__' or unset, returns synthesised mock data so
1324
+ * the CAEL recording pipeline can be validated end-to-end without a Psi4
1325
+ * installation. When psi4Path is any other value (a real binary path),
1326
+ * the script is written to a temp file, psi4 is spawned as a subprocess,
1327
+ * and the %%QM_RESULT%% marker is parsed from stdout. If the spawn fails
1328
+ * (e.g. binary not found), an error is thrown — silent fallback to mock
1329
+ * would be "verifier theater" (a bridge that always returns mock data is
1330
+ * indistinguishable from a broken bridge).
971
1331
  */
972
1332
  async runPsi4(inputScript) {
973
1333
  if (!this.psi4Path || this.psi4Path === "__mock__") {
974
1334
  return this.mockPsi4Result(inputScript);
975
1335
  }
976
- return this.mockPsi4Result(inputScript);
1336
+ const { execFile } = await import('child_process');
1337
+ const { promisify } = await import('util');
1338
+ const os = await import('os');
1339
+ const path = await import('path');
1340
+ const fs = await import('fs/promises');
1341
+ const execFileAsync = promisify(execFile);
1342
+ const tmpDir = os.tmpdir();
1343
+ const inputPath = path.join(tmpDir, `holoscript_psi4_${Date.now()}.py`);
1344
+ const outputPath = path.join(tmpDir, `holoscript_psi4_${Date.now()}.out`);
1345
+ try {
1346
+ await fs.writeFile(inputPath, inputScript, "utf8");
1347
+ const { stdout, stderr } = await execFileAsync(
1348
+ this.psi4Path,
1349
+ ["-i", inputPath, "-o", outputPath],
1350
+ { maxBuffer: 10 * 1024 * 1024 }
1351
+ );
1352
+ if (stderr) {
1353
+ const fatal = stderr.split("\n").filter(
1354
+ (l) => l.includes("Error:") || l.includes("Traceback") || l.includes("SyntaxError")
1355
+ );
1356
+ if (fatal.length > 0) {
1357
+ throw new Error(`[psi4] Subprocess error: ${fatal.join("\n")}`);
1358
+ }
1359
+ }
1360
+ const marker = "%%QM_RESULT%%";
1361
+ const markerIdx = stdout.indexOf(marker);
1362
+ if (markerIdx === -1) {
1363
+ throw new Error("[psi4] Output did not contain %%QM_RESULT%% marker");
1364
+ }
1365
+ const jsonStr = stdout.slice(markerIdx + marker.length).trim().split("\n")[0] ?? "";
1366
+ return JSON.parse(jsonStr);
1367
+ } catch (err) {
1368
+ const msg = err instanceof Error ? err.message : String(err);
1369
+ throw new Error(`[psi4] Failed to run psi4 at '${this.psi4Path}': ${msg}`);
1370
+ } finally {
1371
+ await fs.unlink(inputPath).catch(() => void 0);
1372
+ await fs.unlink(outputPath).catch(() => void 0);
1373
+ }
977
1374
  }
978
1375
  /** Mock result for testing without Psi4 installed. */
979
1376
  mockPsi4Result(_input) {
@@ -1232,11 +1629,74 @@ var QuantumEspressoBackend = class {
1232
1629
  throw new Error("[qm-bridge] Quantum ESPRESSO does not support QM/MM. Use psi4 backend.");
1233
1630
  }
1234
1631
  // ── Subprocess bridge ──────────────────────────────────────────────────
1235
- async runQe(_input) {
1632
+ /**
1633
+ * Run pw.x with the given SCF input and parse the output.
1634
+ *
1635
+ * When pwPath is '__mock__', returns synthesised results for testing
1636
+ * without a QE installation. When pwPath is any other value, the input is
1637
+ * written to a temp directory, pw.x is spawned with stdin redirect, and
1638
+ * the output is parsed for total energy, Fermi energy, and band gap.
1639
+ * If the spawn fails, an error is thrown — silent fallback to mock would
1640
+ * be verifier theater.
1641
+ *
1642
+ * Output parsing targets QE 7.x XML output (in the ./tmp/holoscript_qm.save/
1643
+ * directory) or falls back to stdout pattern matching.
1644
+ */
1645
+ async runQe(input) {
1236
1646
  if (this.pwPath === "__mock__") {
1237
1647
  return this.mockQeResult();
1238
1648
  }
1239
- return this.mockQeResult();
1649
+ const { execFile } = await import('child_process');
1650
+ const { promisify } = await import('util');
1651
+ const os = await import('os');
1652
+ const path = await import('path');
1653
+ const fs = await import('fs/promises');
1654
+ const execFileAsync = promisify(execFile);
1655
+ const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "holoscript_qe_"));
1656
+ const inputPath = path.join(tmpDir, "pw.in");
1657
+ const outputPath = path.join(tmpDir, "pw.out");
1658
+ try {
1659
+ const patchedInput = input.replace("outdir = './tmp'", `outdir = '${tmpDir}/tmp'`);
1660
+ await fs.writeFile(inputPath, patchedInput, "utf8");
1661
+ const { stdout, stderr } = await execFileAsync(
1662
+ this.pwPath,
1663
+ ["-in", inputPath],
1664
+ {
1665
+ cwd: tmpDir,
1666
+ maxBuffer: 50 * 1024 * 1024,
1667
+ env: { ...process.env, OMP_NUM_THREADS: "1" }
1668
+ }
1669
+ );
1670
+ await fs.writeFile(outputPath, stdout, "utf8").catch(() => void 0);
1671
+ if (stderr) {
1672
+ const fatal = stderr.split("\n").filter((l) => l.includes("Error") || l.includes("Traceback") || l.includes("forrtl"));
1673
+ if (fatal.length > 0) {
1674
+ throw new Error(`[quantum-espresso] pw.x stderr: ${fatal.join("\n")}`);
1675
+ }
1676
+ }
1677
+ const energyMatch = stdout.match(/!\s+total energy\s+=\s+([-\d.]+)\s+Ry/);
1678
+ const totalEnergy = energyMatch?.[1] !== void 0 ? parseFloat(energyMatch[1]) : void 0;
1679
+ const fermiMatch = stdout.match(/the Fermi energy is\s+([-\d.]+)\s+ev/i);
1680
+ const fermiEnergy = fermiMatch?.[1] !== void 0 ? parseFloat(fermiMatch[1]) : void 0;
1681
+ const convMatch = stdout.match(/convergence has been achieved in\s+(\d+)/i);
1682
+ const converged = convMatch !== null;
1683
+ const scfIterations = convMatch?.[1] !== void 0 ? parseInt(convMatch[1], 10) : 0;
1684
+ return {
1685
+ total_energy: totalEnergy,
1686
+ fermi_energy: fermiEnergy,
1687
+ band_gap: void 0,
1688
+ // Requires post-processing with bands.x
1689
+ is_metallic: fermiEnergy !== void 0 && totalEnergy !== void 0,
1690
+ scf_iterations: scfIterations,
1691
+ converged,
1692
+ band_energies: []
1693
+ };
1694
+ } catch (err) {
1695
+ const msg = err instanceof Error ? err.message : String(err);
1696
+ throw new Error(`[quantum-espresso] Failed to run pw.x at '${this.pwPath}': ${msg}`);
1697
+ } finally {
1698
+ await fs.rm(tmpDir, { recursive: true, force: true }).catch(() => void 0);
1699
+ }
1240
1700
  }
1241
1701
  mockQeResult() {
1242
1702
  return {
@@ -1355,12 +1815,61 @@ var TBLiteBackend = class {
1355
1815
  throw new Error("[qm-bridge] TBLite does not support QM/MM. Use psi4 backend.");
1356
1816
  }
1357
1817
  // ── Subprocess bridge ──────────────────────────────────────────────────
1818
+ /**
1819
+ * Invoke xtb for a single-point (--sp) or geometry optimisation (--opt).
1820
+ *
1821
+ * When xtbPath is '__mock__', returns synthesised results so tests that do
1822
+ * not have xtb installed can still exercise the interface. When xtbPath is
1823
+ * any other value, the XYZ input is written to a temp directory, xtb is
1824
+ * spawned, and the JSON output (xtb --json writes xtbout.json) is parsed.
1825
+ * If the spawn fails, an error is thrown — silent fallback to mock would
1826
+ * be verifier theater.
1827
+ */
1358
1828
  async runXtb(molecule, task) {
1359
- this.moleculeToXyz(molecule);
1360
1829
  if (this.xtbPath === "__mock__") {
1361
1830
  return this.mockXtbResult(molecule, task);
1362
1831
  }
1363
- return this.mockXtbResult(molecule, task);
1832
+ const xyz = this.moleculeToXyz(molecule);
1833
+ const { execFile } = await import('child_process');
1834
+ const { promisify } = await import('util');
1835
+ const os = await import('os');
1836
+ const path = await import('path');
1837
+ const fs = await import('fs/promises');
1838
+ const execFileAsync = promisify(execFile);
1839
+ const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "holoscript_xtb_"));
1840
+ const inputPath = path.join(tmpDir, "input.xyz");
1841
+ const jsonOutputPath = path.join(tmpDir, "xtbout.json");
1842
+ try {
1843
+ await fs.writeFile(inputPath, xyz, "utf8");
1844
+ const args = [inputPath, task, "--json", "--namespace", "xtbout"];
1845
+ if (this.xtbMethod === "GFN0-xTB") args.push("--gfn", "0");
1846
+ else if (this.xtbMethod === "GFN1-xTB") args.push("--gfn", "1");
1847
+ const { stderr } = await execFileAsync(this.xtbPath, args, {
1848
+ cwd: tmpDir,
1849
+ maxBuffer: 10 * 1024 * 1024
1850
+ });
1851
+ if (stderr) {
1852
+ const fatal = stderr.split("\n").filter((l) => l.includes("ERROR") || l.includes("Traceback"));
1853
+ if (fatal.length > 0) {
1854
+ throw new Error(`[tblite] xtb stderr: ${fatal.join("\n")}`);
1855
+ }
1856
+ }
1857
+ const jsonRaw = await fs.readFile(jsonOutputPath, "utf8");
1858
+ const parsed = JSON.parse(jsonRaw);
1859
+ return {
1860
+ total_energy: typeof parsed["total energy"] === "number" ? parsed["total energy"] : void 0,
1861
+ converged: true,
1862
+ scf_iterations: typeof parsed["number of iterations taken for SCC"] === "number" ? parsed["number of iterations taken for SCC"] : void 0,
1863
+ dipole_moment: Array.isArray(parsed["dipole"]) ? parsed["dipole"] : void 0,
1864
+ gradient_norm: typeof parsed["gradient norm"] === "number" ? parsed["gradient norm"] : void 0,
1865
+ opt_steps: typeof parsed["optimization steps"] === "number" ? parsed["optimization steps"] : void 0
1866
+ };
1867
+ } catch (err) {
1868
+ const msg = err instanceof Error ? err.message : String(err);
1869
+ throw new Error(`[tblite] Failed to run xtb at '${this.xtbPath}': ${msg}`);
1870
+ } finally {
1871
+ await fs.rm(tmpDir, { recursive: true, force: true }).catch(() => void 0);
1872
+ }
1364
1873
  }
1365
1874
  /** Convert molecule to XYZ format for xtb input. */
1366
1875
  moleculeToXyz(molecule) {
@@ -2045,11 +2554,17 @@ var PySCFBackend = class {
2045
2554
  };
2046
2555
 
2047
2556
  // ../plugins/qm-bridge/src/index.ts
2557
+ init_quantinuum();
2048
2558
  init_ibm_quantum();
2559
+ init_quantinuum();
2049
2560
  function createIBMQuantumBackend(config) {
2050
2561
  const { IBMQuantumBackend: IBMQuantumBackend2 } = (init_ibm_quantum(), __toCommonJS(ibm_quantum_exports));
2051
2562
  return new IBMQuantumBackend2(config);
2052
2563
  }
2564
+ function createQuantinuumBackend(config) {
2565
+ const { QuantinuumBackend: QuantinuumBackend2 } = (init_quantinuum(), __toCommonJS(quantinuum_exports));
2566
+ return new QuantinuumBackend2(config);
2567
+ }
2053
2568
  function createQmSolver(config) {
2054
2569
  switch (config.backend) {
2055
2570
  case "psi4":
@@ -2062,14 +2577,19 @@ function createQmSolver(config) {
2062
2577
  return new IBMQuantumBackend(config);
2063
2578
  case "pyscf":
2064
2579
  return new PySCFBackend(config);
2580
+ case "quantinuum":
2581
+ return new QuantinuumBackend(config);
2065
2582
  default:
2066
2583
  throw new Error(
2067
- `[qm-bridge] Unknown backend: '${config.backend}'. Supported: psi4, quantum-espresso, tblite, ibm-quantum, pyscf`
2584
+ `[qm-bridge] Unknown backend: '${config.backend}'. Supported: psi4, quantum-espresso, tblite, ibm-quantum, pyscf, quantinuum`
2068
2585
  );
2069
2586
  }
2070
2587
  }
2071
2588
  function selectQmBackend(questionType) {
2072
2589
  const q = questionType.toLowerCase();
2590
+ if (q.includes("quantinuum") || q.includes("logical qubit") || q.includes("error-corrected") || q.includes("error corrected") || q.includes("error correction") || q.includes("qec") || q.includes("carbon code") || q.includes("tesseract") || q.includes("h-series") || q.includes("fault-tolerant") || q.includes("fault tolerant")) {
2591
+ return "quantinuum";
2592
+ }
2073
2593
  if (q.includes("vqe") || q.includes("variational quantum") || q.includes("quantum circuit") || q.includes("qaoa") || q.includes("qubo") || q.includes("ibm quantum") || q.includes("quantum hardware")) {
2074
2594
  return "ibm-quantum";
2075
2595
  }
@@ -2108,6 +2628,9 @@ function getDefaultQmConfig(backend, questionType) {
2108
2628
  case "ibm-quantum": {
2109
2629
  return { backend: "ibm-quantum", method: "vqe", basis: "sto-3g" };
2110
2630
  }
2631
+ case "quantinuum": {
2632
+ return { backend: "quantinuum", method: "vqe", basis: "sto-3g" };
2633
+ }
2111
2634
  case "pyscf": {
2112
2635
  if (q.includes("phonon") || q.includes("dos") || q.includes("density of states")) {
2113
2636
  return { backend: "pyscf", method: "pbe", basis: "sto-3g" };
@@ -2126,6 +2649,6 @@ function getDefaultQmConfig(backend, questionType) {
2126
2649
  }
2127
2650
  var VERSION = "0.1.0";
2128
2651
 
2129
- export { IBMQuantumBackend, Psi4Backend, PySCFBackend, QM_ACCEPTANCE_CRITERIA, QM_BACKEND_CAPABILITIES, QuantumEspressoBackend, TBLiteBackend, VERSION, computeMeasurementBasis, createIBMQuantumBackend, createQmSolver, estimateMeasurementCost, getDefaultQmConfig, groupPauliTerms, parsePauliList, paulisCommute, qmConfigToCael, qmResultToCaelSummary, requireCapability, selectQmBackend, verifyQmAcceptance };
2130
- //# sourceMappingURL=src-J6CM4AUR.js.map
2131
- //# sourceMappingURL=src-J6CM4AUR.js.map
2652
+ export { IBMQuantumBackend, Psi4Backend, PySCFBackend, QM_ACCEPTANCE_CRITERIA, QM_BACKEND_CAPABILITIES, QuantinuumBackend, QuantumEspressoBackend, TBLiteBackend, VERSION, computeMeasurementBasis, createIBMQuantumBackend, createQmSolver, createQuantinuumBackend, estimateMeasurementCost, getDefaultQmConfig, groupPauliTerms, parsePauliList, paulisCommute, qmConfigToCael, qmResultToCaelSummary, requireCapability, selectQmBackend, verifyQmAcceptance };
2653
+ //# sourceMappingURL=src-UXYA7HM6.js.map
2654
+ //# sourceMappingURL=src-UXYA7HM6.js.map