@holoscript/core 7.0.0 → 8.0.0
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.
- package/README.md +2 -2
- package/bin/holoscript.cjs +3 -0
- package/dist/GLTFPipeline-276GE64O.js +16 -0
- package/dist/GLTFPipeline-M7WSSJED.cjs +37 -0
- package/dist/HoloScriptPlusParser-7FBIFUFC.js +693 -0
- package/dist/HoloScriptPlusParser-A2W7OCN2.cjs +698 -0
- package/dist/HoloScriptPlusParser-F2Z56FJR.js +10 -0
- package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +27 -0
- package/dist/HoloScriptRuntime-3URVTKPJ.js +10 -0
- package/dist/HoloScriptRuntime-SXEAEU2N.cjs +19 -0
- package/dist/USDZExporter-3FWJ25JI.cjs +1037 -0
- package/dist/USDZExporter-D2HQLQYK.js +1035 -0
- package/dist/agents/index.cjs +19 -0
- package/dist/agents/index.d.ts +100 -0
- package/dist/agents/index.js +17 -0
- package/dist/chunk-23J755AR.js +1046 -0
- package/dist/chunk-253GBQZY.cjs +627 -0
- package/dist/chunk-25IQCHTO.cjs +781 -0
- package/dist/chunk-2BSMSUCE.js +1941 -0
- package/dist/chunk-2M2DPHKB.js +762 -0
- package/dist/chunk-2YSNA2F2.cjs +1274 -0
- package/dist/chunk-3AO425MZ.cjs +886 -0
- package/dist/chunk-3FOKASKO.cjs +348 -0
- package/dist/chunk-3HYYMEXI.cjs +56578 -0
- package/dist/chunk-3NFFOWGG.js +4287 -0
- package/dist/chunk-3WZEJHUQ.cjs +116 -0
- package/dist/chunk-4C57PR42.js +468 -0
- package/dist/chunk-4N4SXXWF.js +769 -0
- package/dist/chunk-4PDEPEQW.cjs +41 -0
- package/dist/chunk-4R6SBXDB.js +45 -0
- package/dist/chunk-4V2E7U7Q.cjs +2015 -0
- package/dist/chunk-5FSKKMR7.cjs +2092 -0
- package/dist/chunk-5GLCTO44.js +161 -0
- package/dist/chunk-5JEU52DW.js +382 -0
- package/dist/chunk-5S7RKFGR.cjs +446 -0
- package/dist/chunk-5WUNN6ZN.cjs +428 -0
- package/dist/chunk-62FBK3B7.js +70 -0
- package/dist/chunk-6CTRH7HT.cjs +1985 -0
- package/dist/chunk-6DPSFNJB.cjs +847 -0
- package/dist/chunk-6EX3I5P4.cjs +130 -0
- package/dist/chunk-73FELZVJ.cjs +611 -0
- package/dist/chunk-7CUEMLDZ.cjs +6445 -0
- package/dist/chunk-7HIASF7S.cjs +814 -0
- package/dist/chunk-A6KINLZJ.js +236 -0
- package/dist/chunk-AIA52I7T.cjs +543 -0
- package/dist/chunk-ANXZFVY2.js +113 -0
- package/dist/chunk-AYBXB26F.js +2176 -0
- package/dist/chunk-B4TFTDG4.js +449 -0
- package/dist/chunk-BE4UJCQT.js +623 -0
- package/dist/chunk-BRQJKJGT.cjs +20 -0
- package/dist/chunk-C2A5DUMF.cjs +689 -0
- package/dist/chunk-C37BHB7N.cjs +636 -0
- package/dist/chunk-CBJY23VL.js +126 -0
- package/dist/chunk-CIWWXYHZ.cjs +50 -0
- package/dist/chunk-CXFDRBQU.cjs +672 -0
- package/dist/chunk-D54CNIAJ.cjs +413 -0
- package/dist/chunk-DAJXW4KX.js +725 -0
- package/dist/chunk-DTGBOSEM.cjs +319 -0
- package/dist/chunk-E7JP3BS3.cjs +61 -0
- package/dist/chunk-EKBKLK7P.js +1169 -0
- package/dist/chunk-EKYL4PE3.cjs +404 -0
- package/dist/chunk-EUDQTK7N.cjs +4310 -0
- package/dist/chunk-EXKSFGSX.cjs +274 -0
- package/dist/chunk-EXUP2BUM.cjs +1173 -0
- package/dist/chunk-F43YAA34.js +623 -0
- package/dist/chunk-FDSGHPAK.js +130 -0
- package/dist/chunk-FEWUHQNM.cjs +144 -0
- package/dist/chunk-FGGJQRLZ.js +270 -0
- package/dist/chunk-FHP6LXJS.js +415 -0
- package/dist/chunk-FJPADH77.cjs +666 -0
- package/dist/chunk-FYSPZT4V.cjs +169 -0
- package/dist/chunk-GIOYPNTH.js +5575 -0
- package/dist/chunk-GJNCFRJU.cjs +125 -0
- package/dist/chunk-GMP623FG.cjs +1508 -0
- package/dist/chunk-GQHQOPXZ.cjs +5580 -0
- package/dist/chunk-GQT4TYKY.cjs +4381 -0
- package/dist/chunk-GTU2Z2WW.cjs +262 -0
- package/dist/chunk-GYZE55MO.js +2007 -0
- package/dist/chunk-GZG4KA4E.js +529 -0
- package/dist/chunk-H652NHX5.js +600 -0
- package/dist/chunk-HCCQLAA4.cjs +74 -0
- package/dist/chunk-HINXWAOD.cjs +1049 -0
- package/dist/chunk-HYNTS5CP.js +422 -0
- package/dist/chunk-HZSPDCXV.cjs +457 -0
- package/dist/chunk-HZTDET3N.js +1399 -0
- package/dist/chunk-I6XZ5DZF.cjs +488 -0
- package/dist/chunk-ILRBGFVD.cjs +72 -0
- package/dist/chunk-IPWSXCCN.js +1183 -0
- package/dist/chunk-IUTY5WQ2.cjs +424 -0
- package/dist/chunk-IVSZDECV.js +882 -0
- package/dist/chunk-IVY74O6C.js +247 -0
- package/dist/chunk-IZM5VQZD.js +714 -0
- package/dist/chunk-J32ZJZJH.js +554 -0
- package/dist/chunk-J6M4FPK5.js +421 -0
- package/dist/chunk-JC5YBPSF.cjs +984 -0
- package/dist/chunk-JCLBKPMX.js +3813 -0
- package/dist/chunk-JD7CIZ33.js +1949 -0
- package/dist/chunk-JIYN45TV.cjs +2525 -0
- package/dist/chunk-JJBE3TIH.cjs +1189 -0
- package/dist/chunk-JX7YL6ZE.js +2252 -0
- package/dist/chunk-K4VVR7CN.cjs +2433 -0
- package/dist/chunk-KEFNV2WM.cjs +2257 -0
- package/dist/chunk-KH4CNH66.cjs +424 -0
- package/dist/chunk-KJLB4OPV.js +5731 -0
- package/dist/chunk-KKFZ3B6J.cjs +557 -0
- package/dist/chunk-KKP7JKN4.cjs +6002 -0
- package/dist/chunk-KPJL34Y7.cjs +186 -0
- package/dist/chunk-KQCN6AKJ.cjs +3042 -0
- package/dist/chunk-KVRSTFNH.cjs +72 -0
- package/dist/chunk-LICPB5HZ.cjs +1409 -0
- package/dist/chunk-LM2VU56C.cjs +37 -0
- package/dist/chunk-M56JSP4A.js +400 -0
- package/dist/chunk-MBOOR7X4.js +18 -0
- package/dist/chunk-MGE5Z4GS.js +608 -0
- package/dist/chunk-MXFUTKCO.js +56 -0
- package/dist/chunk-MYY4PMWX.cjs +264 -0
- package/dist/chunk-N75IH2HY.js +258 -0
- package/dist/chunk-NBMHU6SW.js +669 -0
- package/dist/chunk-NG77ATEW.cjs +778 -0
- package/dist/chunk-NGKREZ36.js +6384 -0
- package/dist/chunk-NHWSN2SD.cjs +718 -0
- package/dist/chunk-NV4VMVXU.js +421 -0
- package/dist/chunk-NW5G5FBQ.js +215 -0
- package/dist/chunk-NXZFOPVD.cjs +5737 -0
- package/dist/chunk-OBIYPYYS.cjs +1993 -0
- package/dist/chunk-OIQYIIO3.cjs +473 -0
- package/dist/chunk-OL46QLBJ.js +61 -0
- package/dist/chunk-OMXII44L.js +5386 -0
- package/dist/chunk-OR4Q2BGL.cjs +759 -0
- package/dist/chunk-OSYNRVOV.cjs +243 -0
- package/dist/chunk-PGANYCAG.cjs +220 -0
- package/dist/chunk-PHENW4MQ.js +65 -0
- package/dist/chunk-PHVRG4I2.js +844 -0
- package/dist/chunk-Q56TT7IL.js +483 -0
- package/dist/chunk-QPOQ7VPI.js +1491 -0
- package/dist/chunk-QPSKHBJP.js +5963 -0
- package/dist/chunk-QXH7QDSZ.js +1989 -0
- package/dist/chunk-R75BSDH7.cjs +50 -0
- package/dist/chunk-RARB3MBR.js +207 -0
- package/dist/chunk-RVBHAXFG.js +56160 -0
- package/dist/chunk-S3MDHNKB.cjs +490 -0
- package/dist/chunk-S4W6Z2MN.js +2426 -0
- package/dist/chunk-S6YWHCKV.cjs +410 -0
- package/dist/chunk-SIEXCILW.js +229 -0
- package/dist/chunk-SJBGLS25.cjs +2196 -0
- package/dist/chunk-SLU6UPJI.cjs +410 -0
- package/dist/chunk-SMIWS6DE.cjs +212 -0
- package/dist/chunk-T2QCTZMO.js +811 -0
- package/dist/chunk-T5J7ZKP3.cjs +4885 -0
- package/dist/chunk-TDCNJHWO.js +341 -0
- package/dist/chunk-TG7O4WBC.js +406 -0
- package/dist/chunk-THCK6ECW.js +2085 -0
- package/dist/chunk-TJHVSBP2.js +439 -0
- package/dist/chunk-TVHSPJ4N.cjs +606 -0
- package/dist/chunk-U44IKGG7.cjs +5390 -0
- package/dist/chunk-UJXISJBN.js +487 -0
- package/dist/chunk-UM6C3CGK.js +4375 -0
- package/dist/chunk-UMABK6SI.js +686 -0
- package/dist/chunk-UOIGFQXC.cjs +9750 -0
- package/dist/chunk-URG2SJLK.js +2521 -0
- package/dist/chunk-V6MKC2FZ.js +979 -0
- package/dist/chunk-VECQYRXL.js +474 -0
- package/dist/chunk-VJ3L7CHT.cjs +169 -0
- package/dist/chunk-VMLKSV26.js +1216 -0
- package/dist/chunk-VVKVQZI6.js +55 -0
- package/dist/chunk-W6RW64BB.cjs +1219 -0
- package/dist/chunk-W7VDOASB.cjs +639 -0
- package/dist/chunk-WDT3JTGM.cjs +483 -0
- package/dist/chunk-WJIHFLMJ.js +404 -0
- package/dist/chunk-WKX5AMOY.js +309 -0
- package/dist/chunk-WNNE3PO3.js +34 -0
- package/dist/chunk-WRKUDAZJ.js +3038 -0
- package/dist/chunk-WRLUBRKS.cjs +1943 -0
- package/dist/chunk-WRNEH5MO.js +3169 -0
- package/dist/chunk-WRWEX5ZF.js +658 -0
- package/dist/chunk-X3GJPRVK.cjs +3246 -0
- package/dist/chunk-XHIV6326.cjs +793 -0
- package/dist/chunk-XIVIE43A.cjs +729 -0
- package/dist/chunk-XJAN7CZG.cjs +432 -0
- package/dist/chunk-XKTPFXGA.js +164 -0
- package/dist/chunk-XL6INWKT.js +121 -0
- package/dist/chunk-XSFNHP2E.js +632 -0
- package/dist/chunk-XT6JY5W5.js +9684 -0
- package/dist/chunk-XUILI4KB.cjs +430 -0
- package/dist/chunk-XUUVDHIF.cjs +3962 -0
- package/dist/chunk-YF2I3MV3.js +46 -0
- package/dist/chunk-YIMN575O.js +4847 -0
- package/dist/chunk-YIVFJNYV.js +176 -0
- package/dist/chunk-YKGPCZEE.cjs +237 -0
- package/dist/chunk-YN6V7R3L.cjs +327 -0
- package/dist/chunk-YQELFNJV.js +39 -0
- package/dist/chunk-YYXH45E2.js +426 -0
- package/dist/chunk-ZBQXLH2L.js +756 -0
- package/dist/chunk-ZDSYWBIE.cjs +69 -0
- package/dist/chunk-ZU7NIRT6.js +325 -0
- package/dist/chunk-ZZ7RO2UQ.js +1243 -0
- package/dist/chunk-ZZEI7MV4.js +778 -0
- package/dist/cli/holoscript-runner.cjs +2255 -0
- package/dist/cli/holoscript-runner.js +2230 -0
- package/dist/codebase/index.cjs +336 -0
- package/dist/codebase/index.js +331 -0
- package/dist/compiler/agent-inference.cjs +31 -0
- package/dist/compiler/agent-inference.js +8 -0
- package/dist/compiler/android-xr.cjs +24 -0
- package/dist/compiler/android-xr.js +14 -0
- package/dist/compiler/android.cjs +24 -0
- package/dist/compiler/android.js +14 -0
- package/dist/compiler/ar.cjs +23 -0
- package/dist/compiler/ar.js +11 -0
- package/dist/compiler/babylon.cjs +21 -0
- package/dist/compiler/babylon.js +15 -0
- package/dist/compiler/business-quest.cjs +43 -0
- package/dist/compiler/business-quest.js +4 -0
- package/dist/compiler/coco.cjs +27 -0
- package/dist/compiler/coco.js +4 -0
- package/dist/compiler/context.cjs +25 -0
- package/dist/compiler/context.d.ts +28 -0
- package/dist/compiler/context.js +8 -0
- package/dist/compiler/domain-block-utils.cjs +605 -0
- package/dist/compiler/domain-block-utils.js +11 -0
- package/dist/compiler/dtdl.cjs +27 -0
- package/dist/compiler/dtdl.js +11 -0
- package/dist/compiler/gltf-pipeline.cjs +39 -0
- package/dist/compiler/gltf-pipeline.js +4 -0
- package/dist/compiler/godot.cjs +18 -0
- package/dist/compiler/godot.js +12 -0
- package/dist/compiler/incremental.cjs +34 -0
- package/dist/compiler/incremental.js +9 -0
- package/dist/compiler/index.cjs +5860 -0
- package/dist/compiler/index.d.ts +322 -21
- package/dist/compiler/index.js +5525 -0
- package/dist/compiler/ios.cjs +23 -0
- package/dist/compiler/ios.js +13 -0
- package/dist/compiler/llm-provider-capabilities.cjs +25 -0
- package/dist/compiler/llm-provider-capabilities.d.ts +43 -0
- package/dist/compiler/llm-provider-capabilities.js +8 -0
- package/dist/compiler/multi-layer.cjs +24 -0
- package/dist/compiler/multi-layer.js +15 -0
- package/dist/compiler/nodetoy.cjs +23 -0
- package/dist/compiler/nodetoy.js +4 -0
- package/dist/compiler/openxr.cjs +19 -0
- package/dist/compiler/openxr.js +13 -0
- package/dist/compiler/playcanvas.cjs +19 -0
- package/dist/compiler/playcanvas.js +13 -0
- package/dist/compiler/r3f.cjs +38 -0
- package/dist/compiler/r3f.d.ts +22 -0
- package/dist/compiler/r3f.js +16 -0
- package/dist/compiler/remotion.cjs +23 -0
- package/dist/compiler/remotion.js +4 -0
- package/dist/compiler/reproducibility.cjs +39 -0
- package/dist/compiler/reproducibility.js +4 -0
- package/dist/compiler/sdf.cjs +24 -0
- package/dist/compiler/sdf.js +12 -0
- package/dist/compiler/semantic-scene.cjs +31 -0
- package/dist/compiler/semantic-scene.js +4 -0
- package/dist/compiler/state.cjs +21 -0
- package/dist/compiler/state.js +11 -0
- package/dist/compiler/trait-composition.cjs +30 -0
- package/dist/compiler/trait-composition.js +9 -0
- package/dist/compiler/unity.cjs +19 -0
- package/dist/compiler/unity.js +13 -0
- package/dist/compiler/unreal.cjs +23 -0
- package/dist/compiler/unreal.js +13 -0
- package/dist/compiler/urdf.cjs +52 -0
- package/dist/compiler/urdf.js +12 -0
- package/dist/compiler/usd-physics.cjs +26 -0
- package/dist/compiler/usd-physics.js +9 -0
- package/dist/compiler/visionos.cjs +19 -0
- package/dist/compiler/visionos.js +13 -0
- package/dist/compiler/vrchat.cjs +22 -0
- package/dist/compiler/vrchat.js +12 -0
- package/dist/compiler/vrr.cjs +24 -0
- package/dist/compiler/vrr.js +12 -0
- package/dist/compiler/wasm.cjs +36 -0
- package/dist/compiler/wasm.js +12 -0
- package/dist/compiler/webgpu.cjs +18 -0
- package/dist/compiler/webgpu.js +12 -0
- package/dist/coordinators/index.cjs +1266 -0
- package/dist/coordinators/index.d.ts +72 -1
- package/dist/coordinators/index.js +1259 -0
- package/dist/debugger.cjs +24 -0
- package/dist/debugger.js +11 -0
- package/dist/entries/interop.cjs +64 -0
- package/dist/entries/interop.js +7 -0
- package/dist/entries/scripting.cjs +55 -0
- package/dist/entries/scripting.js +10 -0
- package/dist/hololand/index.cjs +146 -0
- package/dist/hololand/index.d.ts +70 -0
- package/dist/hololand/index.js +5 -0
- package/dist/index.cjs +43233 -0
- package/dist/index.d.ts +976 -21
- package/dist/index.js +39995 -0
- package/dist/math/tropical-spmv.cjs +45 -0
- package/dist/math/tropical-spmv.js +4 -0
- package/dist/math/vec3.cjs +57 -0
- package/dist/math/vec3.js +4 -0
- package/dist/ml-dsa-FSKBTE3W.cjs +1265 -0
- package/dist/ml-dsa-Z7JDKW4L.js +1265 -0
- package/dist/paper-0c-spike/index.cjs +150 -0
- package/dist/paper-0c-spike/index.js +141 -0
- package/dist/parser.cjs +61 -0
- package/dist/parser.d.ts +11 -0
- package/dist/parser.js +12 -0
- package/dist/playwright-3AT3AKTV.cjs +98673 -0
- package/dist/playwright-VZPDVUEQ.js +98660 -0
- package/dist/reconstruction/index.cjs +153 -0
- package/dist/reconstruction/index.d.ts +29 -2
- package/dist/reconstruction/index.js +8 -0
- package/dist/runtime.cjs +316 -0
- package/dist/runtime.d.ts +61 -0
- package/dist/runtime.js +31 -0
- package/dist/self-improvement/index.cjs +563 -0
- package/dist/self-improvement/index.js +545 -0
- package/dist/storage/index.cjs +38 -0
- package/dist/storage/index.js +5 -0
- package/dist/testing.cjs +25 -0
- package/dist/testing.d.ts +70 -0
- package/dist/testing.js +4 -0
- package/dist/traitDocs/traitDocs.cjs +33 -0
- package/dist/traitDocs/traitDocs.js +7 -0
- package/dist/traits/botanical-lotus.cjs +41 -0
- package/dist/traits/botanical-lotus.d.ts +172 -0
- package/dist/traits/botanical-lotus.js +4 -0
- package/dist/traits/engines/index.cjs +520 -0
- package/dist/traits/engines/index.js +380 -0
- package/dist/traits/index.cjs +24409 -0
- package/dist/traits/index.d.ts +171 -35
- package/dist/traits/index.js +21634 -0
- package/dist/traits/simulation-solver-factory.cjs +13 -0
- package/dist/traits/simulation-solver-factory.d.ts +23 -0
- package/dist/traits/simulation-solver-factory.js +4 -0
- package/dist/traits/webcam-gaze.cjs +35 -0
- package/dist/traits/webcam-gaze.d.ts +17 -0
- package/dist/traits/webcam-gaze.js +4 -0
- package/dist/type-checker.cjs +19 -0
- package/dist/type-checker.js +6 -0
- package/dist/world/index.cjs +947 -0
- package/dist/world/index.d.ts +147 -0
- package/dist/world/index.js +939 -0
- package/dist/world-model/index.cjs +1446 -0
- package/dist/world-model/index.d.ts +119 -0
- package/dist/world-model/index.js +1414 -0
- package/dist/wot/index.cjs +29 -0
- package/dist/wot/index.js +4 -0
- package/package.json +93 -49
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/math/vec3.ts
|
|
4
|
+
function vec3NormalizeInPlace(v) {
|
|
5
|
+
const len = Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
|
|
6
|
+
if (len > 1e-8) {
|
|
7
|
+
v[0] /= len;
|
|
8
|
+
v[1] /= len;
|
|
9
|
+
v[2] /= len;
|
|
10
|
+
}
|
|
11
|
+
return len;
|
|
12
|
+
}
|
|
13
|
+
function vec3Normalize(v) {
|
|
14
|
+
const len = Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
|
|
15
|
+
if (len === 0) return [0, 0, 0];
|
|
16
|
+
return [v[0] / len, v[1] / len, v[2] / len];
|
|
17
|
+
}
|
|
18
|
+
function vec3Length(v) {
|
|
19
|
+
return Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
|
|
20
|
+
}
|
|
21
|
+
function vec3Cross(a, b) {
|
|
22
|
+
return [
|
|
23
|
+
a[1] * b[2] - a[2] * b[1],
|
|
24
|
+
a[2] * b[0] - a[0] * b[2],
|
|
25
|
+
a[0] * b[1] - a[1] * b[0]
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
function vec3CrossArray(a, b) {
|
|
29
|
+
return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
|
|
30
|
+
}
|
|
31
|
+
function vec3Sub(a, b) {
|
|
32
|
+
return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
33
|
+
}
|
|
34
|
+
function vec3SubArray(a, b) {
|
|
35
|
+
return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
36
|
+
}
|
|
37
|
+
function vec3Add(a, b) {
|
|
38
|
+
return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
|
|
39
|
+
}
|
|
40
|
+
function vec3Scale(v, s) {
|
|
41
|
+
return [v[0] * s, v[1] * s, v[2] * s];
|
|
42
|
+
}
|
|
43
|
+
function vec3ScaleArray(v, s) {
|
|
44
|
+
return [v[0] * s, v[1] * s, v[2] * s];
|
|
45
|
+
}
|
|
46
|
+
function vec3Distance(a, b) {
|
|
47
|
+
const dx = b[0] - a[0];
|
|
48
|
+
const dy = b[1] - a[1];
|
|
49
|
+
const dz = b[2] - a[2];
|
|
50
|
+
return Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
51
|
+
}
|
|
52
|
+
function vec3Dot(a, b) {
|
|
53
|
+
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
exports.vec3Add = vec3Add;
|
|
57
|
+
exports.vec3Cross = vec3Cross;
|
|
58
|
+
exports.vec3CrossArray = vec3CrossArray;
|
|
59
|
+
exports.vec3Distance = vec3Distance;
|
|
60
|
+
exports.vec3Dot = vec3Dot;
|
|
61
|
+
exports.vec3Length = vec3Length;
|
|
62
|
+
exports.vec3Normalize = vec3Normalize;
|
|
63
|
+
exports.vec3NormalizeInPlace = vec3NormalizeInPlace;
|
|
64
|
+
exports.vec3Scale = vec3Scale;
|
|
65
|
+
exports.vec3ScaleArray = vec3ScaleArray;
|
|
66
|
+
exports.vec3Sub = vec3Sub;
|
|
67
|
+
exports.vec3SubArray = vec3SubArray;
|
|
68
|
+
//# sourceMappingURL=chunk-ZDSYWBIE.cjs.map
|
|
69
|
+
//# sourceMappingURL=chunk-ZDSYWBIE.cjs.map
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { init_CompilerBase, CompilerBase } from './chunk-QPSKHBJP.js';
|
|
2
|
+
|
|
3
|
+
// src/compiler/QuantumCircuitCompiler.ts
|
|
4
|
+
init_CompilerBase();
|
|
5
|
+
function qubitsForMolecule(atoms) {
|
|
6
|
+
const orbitalCount = atoms.reduce((sum, a) => {
|
|
7
|
+
if (a.symbol === "H") return sum + 1;
|
|
8
|
+
if (["C", "N", "O", "F"].includes(a.symbol)) return sum + 5;
|
|
9
|
+
return sum + 9;
|
|
10
|
+
}, 0);
|
|
11
|
+
return orbitalCount * 2;
|
|
12
|
+
}
|
|
13
|
+
function extractNumber(config, key) {
|
|
14
|
+
const entry = config[key];
|
|
15
|
+
if (!entry) return void 0;
|
|
16
|
+
const v = entry.value;
|
|
17
|
+
if (typeof v === "number") return v;
|
|
18
|
+
if (typeof v === "string") {
|
|
19
|
+
const n = parseFloat(v);
|
|
20
|
+
return isNaN(n) ? void 0 : n;
|
|
21
|
+
}
|
|
22
|
+
return void 0;
|
|
23
|
+
}
|
|
24
|
+
function extractAtoms(config) {
|
|
25
|
+
const entry = config["molecule"] ?? config["atoms"];
|
|
26
|
+
if (!entry) return void 0;
|
|
27
|
+
let raw = entry.value;
|
|
28
|
+
if (typeof raw === "string") {
|
|
29
|
+
try {
|
|
30
|
+
raw = JSON.parse(raw);
|
|
31
|
+
} catch {
|
|
32
|
+
return void 0;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (!Array.isArray(raw)) return void 0;
|
|
36
|
+
return raw.filter(
|
|
37
|
+
(a) => typeof a === "object" && a !== null && typeof a["symbol"] === "string"
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
function extractWeightMatrix(config) {
|
|
41
|
+
const entry = config["weightMatrix"] ?? config["weight_matrix"] ?? config["adjacency"];
|
|
42
|
+
if (!entry) return void 0;
|
|
43
|
+
let raw = entry.value;
|
|
44
|
+
if (typeof raw === "string") {
|
|
45
|
+
try {
|
|
46
|
+
raw = JSON.parse(raw);
|
|
47
|
+
} catch {
|
|
48
|
+
return void 0;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (!Array.isArray(raw)) return void 0;
|
|
52
|
+
if (!raw.every((row) => Array.isArray(row))) return void 0;
|
|
53
|
+
return raw;
|
|
54
|
+
}
|
|
55
|
+
function generateVQECircuit(atoms, moleculeName, ansatzLayers, initialParams) {
|
|
56
|
+
const warnings = [];
|
|
57
|
+
let numQubits = qubitsForMolecule(atoms);
|
|
58
|
+
if (numQubits > 50) {
|
|
59
|
+
warnings.push(
|
|
60
|
+
`Molecule requires ${numQubits} qubits which exceeds the 50-qubit cap. Clamping to 50. Use classical QM for larger systems.`
|
|
61
|
+
);
|
|
62
|
+
numQubits = 50;
|
|
63
|
+
}
|
|
64
|
+
if (numQubits > 20) {
|
|
65
|
+
warnings.push(
|
|
66
|
+
`Circuit uses ${numQubits} qubits - near-term hardware is limited to ~20 qubits without error correction. Consider a smaller basis set.`
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
const n = numQubits;
|
|
70
|
+
const totalParams = ansatzLayers * n;
|
|
71
|
+
const paramNames = [];
|
|
72
|
+
for (let i = 0; i < totalParams; i++) {
|
|
73
|
+
paramNames.push(`theta_${i}`);
|
|
74
|
+
}
|
|
75
|
+
const lines = [];
|
|
76
|
+
lines.push("OPENQASM 3.0;");
|
|
77
|
+
lines.push('include "stdgates.inc";');
|
|
78
|
+
lines.push(`// Hardware-efficient ansatz for ${moleculeName} (${n} qubits, sto-3g)`);
|
|
79
|
+
lines.push("// Generated by HoloScript QuantumCircuitCompiler");
|
|
80
|
+
lines.push(`qubit[${n}] q;`);
|
|
81
|
+
lines.push(`bit[${n}] c;`);
|
|
82
|
+
lines.push(`// Parameters: bindable by optimizer (initial values are defaults)`);
|
|
83
|
+
for (let i = 0; i < totalParams; i++) {
|
|
84
|
+
const defaultVal = initialParams?.[i] ?? 0.1;
|
|
85
|
+
lines.push(`input float theta_${i}; // default=${defaultVal}`);
|
|
86
|
+
}
|
|
87
|
+
let paramIdx = 0;
|
|
88
|
+
for (let layer = 0; layer < ansatzLayers; layer++) {
|
|
89
|
+
lines.push(`// Layer ${layer}: Ry rotations ( - [${paramIdx}..${paramIdx + n - 1}] optimised by VQE)`);
|
|
90
|
+
for (let i = 0; i < n; i++) {
|
|
91
|
+
lines.push(`ry(theta_${paramIdx}) q[${i}];`);
|
|
92
|
+
paramIdx++;
|
|
93
|
+
}
|
|
94
|
+
if (layer < ansatzLayers - 1 || n > 1) {
|
|
95
|
+
lines.push(`// Entanglement: linear CNOT chain`);
|
|
96
|
+
for (let i = 0; i < n - 1; i++) {
|
|
97
|
+
lines.push(`cx q[${i}], q[${i + 1}];`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
lines.push("// Measurement");
|
|
102
|
+
lines.push("c = measure q;");
|
|
103
|
+
const estimatedDepth = ansatzLayers * 2 + 1;
|
|
104
|
+
return { qasm: lines.join("\n"), numQubits: n, estimatedDepth, warnings, paramNames };
|
|
105
|
+
}
|
|
106
|
+
function generateQAOACircuit(weightMatrix, p, initialGamma, initialBeta) {
|
|
107
|
+
const warnings = [];
|
|
108
|
+
let n = weightMatrix.length;
|
|
109
|
+
if (n > 100) {
|
|
110
|
+
warnings.push(
|
|
111
|
+
`Graph has ${n} nodes which exceeds the 100-qubit cap. Clamping to 100. Use classical solvers for larger instances.`
|
|
112
|
+
);
|
|
113
|
+
n = 100;
|
|
114
|
+
weightMatrix = weightMatrix.slice(0, 100).map((row) => row.slice(0, 100));
|
|
115
|
+
}
|
|
116
|
+
if (n > 50) {
|
|
117
|
+
warnings.push(
|
|
118
|
+
`Circuit uses ${n} qubits - near-term hardware handles ~50 qubits without error correction.`
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
const defaultGamma = initialGamma ?? 0.5;
|
|
122
|
+
const defaultBeta = initialBeta ?? 0.5;
|
|
123
|
+
const paramNames = [];
|
|
124
|
+
for (let round = 0; round < p; round++) {
|
|
125
|
+
paramNames.push(`gamma_${round}`);
|
|
126
|
+
paramNames.push(`beta_${round}`);
|
|
127
|
+
}
|
|
128
|
+
const lines = [];
|
|
129
|
+
lines.push("OPENQASM 3.0;");
|
|
130
|
+
lines.push('include "stdgates.inc";');
|
|
131
|
+
lines.push(`// QAOA Max-Cut circuit for ${n}-node graph (p=${p})`);
|
|
132
|
+
lines.push("// Generated by HoloScript QuantumCircuitCompiler");
|
|
133
|
+
lines.push(`qubit[${n}] q;`);
|
|
134
|
+
lines.push(`bit[${n}] c;`);
|
|
135
|
+
lines.push("// Parameters: bindable by optimizer (initial values are defaults)");
|
|
136
|
+
for (let round = 0; round < p; round++) {
|
|
137
|
+
lines.push(`input float gamma_${round}; // default=${defaultGamma}`);
|
|
138
|
+
lines.push(`input float beta_${round}; // default=${defaultBeta}`);
|
|
139
|
+
}
|
|
140
|
+
lines.push("// Initial superposition");
|
|
141
|
+
for (let i = 0; i < n; i++) {
|
|
142
|
+
lines.push(`h q[${i}];`);
|
|
143
|
+
}
|
|
144
|
+
for (let round = 0; round < p; round++) {
|
|
145
|
+
lines.push(`// Problem unitary - round ${round + 1} (gamma=gamma_${round})`);
|
|
146
|
+
for (let i = 0; i < n; i++) {
|
|
147
|
+
for (let j = i + 1; j < n; j++) {
|
|
148
|
+
const w = weightMatrix[i]?.[j] ?? 0;
|
|
149
|
+
if (w !== 0) {
|
|
150
|
+
lines.push(`// Edge (${i},${j}) weight=${w}: rzz(2.0*gamma_${round}*${w.toFixed(4)})`);
|
|
151
|
+
lines.push(`cx q[${i}], q[${j}];`);
|
|
152
|
+
lines.push(`rz(2.0 * gamma_${round} * ${w.toFixed(4)}) q[${j}];`);
|
|
153
|
+
lines.push(`cx q[${i}], q[${j}];`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
lines.push(`// Mixer unitary - round ${round + 1} (beta=beta_${round})`);
|
|
158
|
+
for (let i = 0; i < n; i++) {
|
|
159
|
+
lines.push(`rx(2.0 * beta_${round}) q[${i}];`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
lines.push("// Measurement");
|
|
163
|
+
lines.push("c = measure q;");
|
|
164
|
+
const edgeCount = weightMatrix.flat().filter((w) => w !== 0).length / 2;
|
|
165
|
+
const estimatedDepth = 1 + p * (Math.ceil(edgeCount * 3) + 1) + 1;
|
|
166
|
+
return { qasm: lines.join("\n"), numQubits: n, estimatedDepth, warnings, paramNames };
|
|
167
|
+
}
|
|
168
|
+
function generateStubCircuit() {
|
|
169
|
+
const qasm = [
|
|
170
|
+
"OPENQASM 3.0;",
|
|
171
|
+
'include "stdgates.inc";',
|
|
172
|
+
"// Stub circuit: no @quantumCircuit trait found in composition",
|
|
173
|
+
"// Generated by HoloScript QuantumCircuitCompiler",
|
|
174
|
+
"qubit[1] q;",
|
|
175
|
+
"bit[1] c;",
|
|
176
|
+
"h q[0];",
|
|
177
|
+
"c = measure q;"
|
|
178
|
+
].join("\n");
|
|
179
|
+
return {
|
|
180
|
+
qasm,
|
|
181
|
+
warnings: [
|
|
182
|
+
"No @quantumCircuit (or @quantum_circuit) trait found in the composition. A stub 1-qubit circuit has been emitted. Add a @quantumCircuit trait with `molecule` or `weightMatrix` params to generate a real circuit."
|
|
183
|
+
]
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
var QuantumCircuitCompiler = class extends CompilerBase {
|
|
187
|
+
constructor() {
|
|
188
|
+
super(...arguments);
|
|
189
|
+
this.compilerName = "QuantumCircuitCompiler";
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Compile a HoloScript composition to an OpenQASM 3.0 circuit.
|
|
193
|
+
*
|
|
194
|
+
* The method scans `composition.objects` for the first object that carries a
|
|
195
|
+
* `@quantumCircuit` or `@quantum_circuit` trait. Trait params drive the type:
|
|
196
|
+
* - `molecule` (or `atoms`) - VQE hardware-efficient ansatz
|
|
197
|
+
* - `weightMatrix` / `weight_matrix` / `adjacency` / `numNodes` - QAOA Max-Cut
|
|
198
|
+
* - none of the above - stub 1-qubit circuit with a warning
|
|
199
|
+
*
|
|
200
|
+
* @param composition - Parsed HoloScript AST
|
|
201
|
+
* @param agentToken - JWT RBAC token or UCAN CapabilityTokenCredential (optional)
|
|
202
|
+
* @param outputPath - Optional path for output-scope RBAC check
|
|
203
|
+
* @param _sceneGraph - Unused (reserved for future scene-graph hints)
|
|
204
|
+
* @returns {@link QASMOutput}
|
|
205
|
+
*/
|
|
206
|
+
compile(composition, agentToken, outputPath, _sceneGraph) {
|
|
207
|
+
this.validateCompilerAccess(agentToken, outputPath);
|
|
208
|
+
const quantum = this.findQuantumTrait(composition.objects ?? []);
|
|
209
|
+
if (!quantum) {
|
|
210
|
+
const { qasm: qasm2, warnings: warnings2 } = generateStubCircuit();
|
|
211
|
+
return {
|
|
212
|
+
qasm: qasm2,
|
|
213
|
+
numQubits: 1,
|
|
214
|
+
numClbits: 1,
|
|
215
|
+
estimatedDepth: 2,
|
|
216
|
+
circuitType: "custom",
|
|
217
|
+
recommendedBackend: "aer",
|
|
218
|
+
warnings: warnings2
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
const { trait } = quantum;
|
|
222
|
+
const cfg = trait.config;
|
|
223
|
+
const atoms = extractAtoms(cfg);
|
|
224
|
+
const weightMatrix = extractWeightMatrix(cfg);
|
|
225
|
+
const numNodes = extractNumber(cfg, "numNodes") ?? extractNumber(cfg, "num_nodes");
|
|
226
|
+
if (atoms && atoms.length > 0) {
|
|
227
|
+
return this.buildVQEOutput(atoms, cfg);
|
|
228
|
+
}
|
|
229
|
+
if (weightMatrix) {
|
|
230
|
+
return this.buildQAOAOutput(weightMatrix, cfg);
|
|
231
|
+
}
|
|
232
|
+
if (numNodes !== void 0 && numNodes > 0) {
|
|
233
|
+
const n = Math.min(Math.round(numNodes), 100);
|
|
234
|
+
const matrix = Array.from(
|
|
235
|
+
{ length: n },
|
|
236
|
+
(_, i) => Array.from({ length: n }, (_2, j) => i !== j ? 1 : 0)
|
|
237
|
+
);
|
|
238
|
+
return this.buildQAOAOutput(matrix, cfg);
|
|
239
|
+
}
|
|
240
|
+
const { qasm, warnings } = generateStubCircuit();
|
|
241
|
+
warnings.unshift(
|
|
242
|
+
"@quantumCircuit trait found but neither `molecule`/`atoms` nor `weightMatrix`/`numNodes` params are present. Add params to generate a circuit."
|
|
243
|
+
);
|
|
244
|
+
return {
|
|
245
|
+
qasm,
|
|
246
|
+
numQubits: 1,
|
|
247
|
+
numClbits: 1,
|
|
248
|
+
estimatedDepth: 2,
|
|
249
|
+
circuitType: "custom",
|
|
250
|
+
recommendedBackend: "aer",
|
|
251
|
+
warnings
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
// ---------------------------------------------------------------------------
|
|
255
|
+
// Private helpers
|
|
256
|
+
// ---------------------------------------------------------------------------
|
|
257
|
+
/**
|
|
258
|
+
* Walk `objects` (and their children) recursively, returning the first object
|
|
259
|
+
* that has a `@quantumCircuit` or `@quantum_circuit` trait, plus the trait.
|
|
260
|
+
*/
|
|
261
|
+
findQuantumTrait(objects) {
|
|
262
|
+
for (const obj of objects) {
|
|
263
|
+
for (const trait of obj.traits ?? []) {
|
|
264
|
+
if (trait.name === "quantumCircuit" || trait.name === "quantum_circuit") {
|
|
265
|
+
return { obj, trait };
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (obj.children && obj.children.length > 0) {
|
|
269
|
+
const found = this.findQuantumTrait(obj.children);
|
|
270
|
+
if (found) return found;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return void 0;
|
|
274
|
+
}
|
|
275
|
+
/** Build a {@link QASMOutput} for a VQE circuit. */
|
|
276
|
+
buildVQEOutput(atoms, cfg) {
|
|
277
|
+
const moleculeName = (extractNumber(cfg, "moleculeName") !== void 0 ? void 0 : cfg["moleculeName"]?.value) ?? atoms.map((a) => a.symbol).join("") ?? "molecule";
|
|
278
|
+
const ansatzLayers = Math.max(1, Math.round(extractNumber(cfg, "ansatzLayers") ?? extractNumber(cfg, "ansatz_layers") ?? 2));
|
|
279
|
+
const initialParams = cfg["initialParams"]?.value ?? cfg["initial_params"]?.value ?? void 0;
|
|
280
|
+
const { qasm, numQubits, estimatedDepth, warnings, paramNames } = generateVQECircuit(
|
|
281
|
+
atoms,
|
|
282
|
+
moleculeName,
|
|
283
|
+
ansatzLayers,
|
|
284
|
+
initialParams
|
|
285
|
+
);
|
|
286
|
+
return {
|
|
287
|
+
qasm,
|
|
288
|
+
numQubits,
|
|
289
|
+
numClbits: numQubits,
|
|
290
|
+
estimatedDepth,
|
|
291
|
+
circuitType: "vqe",
|
|
292
|
+
molecule: { atoms },
|
|
293
|
+
recommendedBackend: numQubits <= 20 ? "aer" : "ibm-quantum",
|
|
294
|
+
warnings,
|
|
295
|
+
paramNames
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
/** Build a {@link QASMOutput} for a QAOA circuit. */
|
|
299
|
+
buildQAOAOutput(weightMatrix, cfg) {
|
|
300
|
+
const p = Math.max(1, Math.round(extractNumber(cfg, "p") ?? 1));
|
|
301
|
+
const initialGamma = extractNumber(cfg, "gamma") ?? extractNumber(cfg, "initial_gamma");
|
|
302
|
+
const initialBeta = extractNumber(cfg, "beta") ?? extractNumber(cfg, "initial_beta");
|
|
303
|
+
const { qasm, numQubits, estimatedDepth, warnings, paramNames } = generateQAOACircuit(
|
|
304
|
+
weightMatrix,
|
|
305
|
+
p,
|
|
306
|
+
initialGamma,
|
|
307
|
+
initialBeta
|
|
308
|
+
);
|
|
309
|
+
return {
|
|
310
|
+
qasm,
|
|
311
|
+
numQubits,
|
|
312
|
+
numClbits: numQubits,
|
|
313
|
+
estimatedDepth,
|
|
314
|
+
circuitType: "qaoa",
|
|
315
|
+
weightMatrix,
|
|
316
|
+
recommendedBackend: numQubits <= 50 ? "aer" : "ibm-quantum",
|
|
317
|
+
warnings,
|
|
318
|
+
paramNames
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
export { QuantumCircuitCompiler };
|
|
324
|
+
//# sourceMappingURL=chunk-ZU7NIRT6.js.map
|
|
325
|
+
//# sourceMappingURL=chunk-ZU7NIRT6.js.map
|