@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,327 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkKKP7JKN4_cjs = require('./chunk-KKP7JKN4.cjs');
|
|
4
|
+
|
|
5
|
+
// src/compiler/QuantumCircuitCompiler.ts
|
|
6
|
+
chunkKKP7JKN4_cjs.init_CompilerBase();
|
|
7
|
+
function qubitsForMolecule(atoms) {
|
|
8
|
+
const orbitalCount = atoms.reduce((sum, a) => {
|
|
9
|
+
if (a.symbol === "H") return sum + 1;
|
|
10
|
+
if (["C", "N", "O", "F"].includes(a.symbol)) return sum + 5;
|
|
11
|
+
return sum + 9;
|
|
12
|
+
}, 0);
|
|
13
|
+
return orbitalCount * 2;
|
|
14
|
+
}
|
|
15
|
+
function extractNumber(config, key) {
|
|
16
|
+
const entry = config[key];
|
|
17
|
+
if (!entry) return void 0;
|
|
18
|
+
const v = entry.value;
|
|
19
|
+
if (typeof v === "number") return v;
|
|
20
|
+
if (typeof v === "string") {
|
|
21
|
+
const n = parseFloat(v);
|
|
22
|
+
return isNaN(n) ? void 0 : n;
|
|
23
|
+
}
|
|
24
|
+
return void 0;
|
|
25
|
+
}
|
|
26
|
+
function extractAtoms(config) {
|
|
27
|
+
const entry = config["molecule"] ?? config["atoms"];
|
|
28
|
+
if (!entry) return void 0;
|
|
29
|
+
let raw = entry.value;
|
|
30
|
+
if (typeof raw === "string") {
|
|
31
|
+
try {
|
|
32
|
+
raw = JSON.parse(raw);
|
|
33
|
+
} catch {
|
|
34
|
+
return void 0;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (!Array.isArray(raw)) return void 0;
|
|
38
|
+
return raw.filter(
|
|
39
|
+
(a) => typeof a === "object" && a !== null && typeof a["symbol"] === "string"
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
function extractWeightMatrix(config) {
|
|
43
|
+
const entry = config["weightMatrix"] ?? config["weight_matrix"] ?? config["adjacency"];
|
|
44
|
+
if (!entry) return void 0;
|
|
45
|
+
let raw = entry.value;
|
|
46
|
+
if (typeof raw === "string") {
|
|
47
|
+
try {
|
|
48
|
+
raw = JSON.parse(raw);
|
|
49
|
+
} catch {
|
|
50
|
+
return void 0;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (!Array.isArray(raw)) return void 0;
|
|
54
|
+
if (!raw.every((row) => Array.isArray(row))) return void 0;
|
|
55
|
+
return raw;
|
|
56
|
+
}
|
|
57
|
+
function generateVQECircuit(atoms, moleculeName, ansatzLayers, initialParams) {
|
|
58
|
+
const warnings = [];
|
|
59
|
+
let numQubits = qubitsForMolecule(atoms);
|
|
60
|
+
if (numQubits > 50) {
|
|
61
|
+
warnings.push(
|
|
62
|
+
`Molecule requires ${numQubits} qubits which exceeds the 50-qubit cap. Clamping to 50. Use classical QM for larger systems.`
|
|
63
|
+
);
|
|
64
|
+
numQubits = 50;
|
|
65
|
+
}
|
|
66
|
+
if (numQubits > 20) {
|
|
67
|
+
warnings.push(
|
|
68
|
+
`Circuit uses ${numQubits} qubits - near-term hardware is limited to ~20 qubits without error correction. Consider a smaller basis set.`
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
const n = numQubits;
|
|
72
|
+
const totalParams = ansatzLayers * n;
|
|
73
|
+
const paramNames = [];
|
|
74
|
+
for (let i = 0; i < totalParams; i++) {
|
|
75
|
+
paramNames.push(`theta_${i}`);
|
|
76
|
+
}
|
|
77
|
+
const lines = [];
|
|
78
|
+
lines.push("OPENQASM 3.0;");
|
|
79
|
+
lines.push('include "stdgates.inc";');
|
|
80
|
+
lines.push(`// Hardware-efficient ansatz for ${moleculeName} (${n} qubits, sto-3g)`);
|
|
81
|
+
lines.push("// Generated by HoloScript QuantumCircuitCompiler");
|
|
82
|
+
lines.push(`qubit[${n}] q;`);
|
|
83
|
+
lines.push(`bit[${n}] c;`);
|
|
84
|
+
lines.push(`// Parameters: bindable by optimizer (initial values are defaults)`);
|
|
85
|
+
for (let i = 0; i < totalParams; i++) {
|
|
86
|
+
const defaultVal = initialParams?.[i] ?? 0.1;
|
|
87
|
+
lines.push(`input float theta_${i}; // default=${defaultVal}`);
|
|
88
|
+
}
|
|
89
|
+
let paramIdx = 0;
|
|
90
|
+
for (let layer = 0; layer < ansatzLayers; layer++) {
|
|
91
|
+
lines.push(`// Layer ${layer}: Ry rotations ( - [${paramIdx}..${paramIdx + n - 1}] optimised by VQE)`);
|
|
92
|
+
for (let i = 0; i < n; i++) {
|
|
93
|
+
lines.push(`ry(theta_${paramIdx}) q[${i}];`);
|
|
94
|
+
paramIdx++;
|
|
95
|
+
}
|
|
96
|
+
if (layer < ansatzLayers - 1 || n > 1) {
|
|
97
|
+
lines.push(`// Entanglement: linear CNOT chain`);
|
|
98
|
+
for (let i = 0; i < n - 1; i++) {
|
|
99
|
+
lines.push(`cx q[${i}], q[${i + 1}];`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
lines.push("// Measurement");
|
|
104
|
+
lines.push("c = measure q;");
|
|
105
|
+
const estimatedDepth = ansatzLayers * 2 + 1;
|
|
106
|
+
return { qasm: lines.join("\n"), numQubits: n, estimatedDepth, warnings, paramNames };
|
|
107
|
+
}
|
|
108
|
+
function generateQAOACircuit(weightMatrix, p, initialGamma, initialBeta) {
|
|
109
|
+
const warnings = [];
|
|
110
|
+
let n = weightMatrix.length;
|
|
111
|
+
if (n > 100) {
|
|
112
|
+
warnings.push(
|
|
113
|
+
`Graph has ${n} nodes which exceeds the 100-qubit cap. Clamping to 100. Use classical solvers for larger instances.`
|
|
114
|
+
);
|
|
115
|
+
n = 100;
|
|
116
|
+
weightMatrix = weightMatrix.slice(0, 100).map((row) => row.slice(0, 100));
|
|
117
|
+
}
|
|
118
|
+
if (n > 50) {
|
|
119
|
+
warnings.push(
|
|
120
|
+
`Circuit uses ${n} qubits - near-term hardware handles ~50 qubits without error correction.`
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
const defaultGamma = initialGamma ?? 0.5;
|
|
124
|
+
const defaultBeta = initialBeta ?? 0.5;
|
|
125
|
+
const paramNames = [];
|
|
126
|
+
for (let round = 0; round < p; round++) {
|
|
127
|
+
paramNames.push(`gamma_${round}`);
|
|
128
|
+
paramNames.push(`beta_${round}`);
|
|
129
|
+
}
|
|
130
|
+
const lines = [];
|
|
131
|
+
lines.push("OPENQASM 3.0;");
|
|
132
|
+
lines.push('include "stdgates.inc";');
|
|
133
|
+
lines.push(`// QAOA Max-Cut circuit for ${n}-node graph (p=${p})`);
|
|
134
|
+
lines.push("// Generated by HoloScript QuantumCircuitCompiler");
|
|
135
|
+
lines.push(`qubit[${n}] q;`);
|
|
136
|
+
lines.push(`bit[${n}] c;`);
|
|
137
|
+
lines.push("// Parameters: bindable by optimizer (initial values are defaults)");
|
|
138
|
+
for (let round = 0; round < p; round++) {
|
|
139
|
+
lines.push(`input float gamma_${round}; // default=${defaultGamma}`);
|
|
140
|
+
lines.push(`input float beta_${round}; // default=${defaultBeta}`);
|
|
141
|
+
}
|
|
142
|
+
lines.push("// Initial superposition");
|
|
143
|
+
for (let i = 0; i < n; i++) {
|
|
144
|
+
lines.push(`h q[${i}];`);
|
|
145
|
+
}
|
|
146
|
+
for (let round = 0; round < p; round++) {
|
|
147
|
+
lines.push(`// Problem unitary - round ${round + 1} (gamma=gamma_${round})`);
|
|
148
|
+
for (let i = 0; i < n; i++) {
|
|
149
|
+
for (let j = i + 1; j < n; j++) {
|
|
150
|
+
const w = weightMatrix[i]?.[j] ?? 0;
|
|
151
|
+
if (w !== 0) {
|
|
152
|
+
lines.push(`// Edge (${i},${j}) weight=${w}: rzz(2.0*gamma_${round}*${w.toFixed(4)})`);
|
|
153
|
+
lines.push(`cx q[${i}], q[${j}];`);
|
|
154
|
+
lines.push(`rz(2.0 * gamma_${round} * ${w.toFixed(4)}) q[${j}];`);
|
|
155
|
+
lines.push(`cx q[${i}], q[${j}];`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
lines.push(`// Mixer unitary - round ${round + 1} (beta=beta_${round})`);
|
|
160
|
+
for (let i = 0; i < n; i++) {
|
|
161
|
+
lines.push(`rx(2.0 * beta_${round}) q[${i}];`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
lines.push("// Measurement");
|
|
165
|
+
lines.push("c = measure q;");
|
|
166
|
+
const edgeCount = weightMatrix.flat().filter((w) => w !== 0).length / 2;
|
|
167
|
+
const estimatedDepth = 1 + p * (Math.ceil(edgeCount * 3) + 1) + 1;
|
|
168
|
+
return { qasm: lines.join("\n"), numQubits: n, estimatedDepth, warnings, paramNames };
|
|
169
|
+
}
|
|
170
|
+
function generateStubCircuit() {
|
|
171
|
+
const qasm = [
|
|
172
|
+
"OPENQASM 3.0;",
|
|
173
|
+
'include "stdgates.inc";',
|
|
174
|
+
"// Stub circuit: no @quantumCircuit trait found in composition",
|
|
175
|
+
"// Generated by HoloScript QuantumCircuitCompiler",
|
|
176
|
+
"qubit[1] q;",
|
|
177
|
+
"bit[1] c;",
|
|
178
|
+
"h q[0];",
|
|
179
|
+
"c = measure q;"
|
|
180
|
+
].join("\n");
|
|
181
|
+
return {
|
|
182
|
+
qasm,
|
|
183
|
+
warnings: [
|
|
184
|
+
"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."
|
|
185
|
+
]
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
var QuantumCircuitCompiler = class extends chunkKKP7JKN4_cjs.CompilerBase {
|
|
189
|
+
constructor() {
|
|
190
|
+
super(...arguments);
|
|
191
|
+
this.compilerName = "QuantumCircuitCompiler";
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Compile a HoloScript composition to an OpenQASM 3.0 circuit.
|
|
195
|
+
*
|
|
196
|
+
* The method scans `composition.objects` for the first object that carries a
|
|
197
|
+
* `@quantumCircuit` or `@quantum_circuit` trait. Trait params drive the type:
|
|
198
|
+
* - `molecule` (or `atoms`) - VQE hardware-efficient ansatz
|
|
199
|
+
* - `weightMatrix` / `weight_matrix` / `adjacency` / `numNodes` - QAOA Max-Cut
|
|
200
|
+
* - none of the above - stub 1-qubit circuit with a warning
|
|
201
|
+
*
|
|
202
|
+
* @param composition - Parsed HoloScript AST
|
|
203
|
+
* @param agentToken - JWT RBAC token or UCAN CapabilityTokenCredential (optional)
|
|
204
|
+
* @param outputPath - Optional path for output-scope RBAC check
|
|
205
|
+
* @param _sceneGraph - Unused (reserved for future scene-graph hints)
|
|
206
|
+
* @returns {@link QASMOutput}
|
|
207
|
+
*/
|
|
208
|
+
compile(composition, agentToken, outputPath, _sceneGraph) {
|
|
209
|
+
this.validateCompilerAccess(agentToken, outputPath);
|
|
210
|
+
const quantum = this.findQuantumTrait(composition.objects ?? []);
|
|
211
|
+
if (!quantum) {
|
|
212
|
+
const { qasm: qasm2, warnings: warnings2 } = generateStubCircuit();
|
|
213
|
+
return {
|
|
214
|
+
qasm: qasm2,
|
|
215
|
+
numQubits: 1,
|
|
216
|
+
numClbits: 1,
|
|
217
|
+
estimatedDepth: 2,
|
|
218
|
+
circuitType: "custom",
|
|
219
|
+
recommendedBackend: "aer",
|
|
220
|
+
warnings: warnings2
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
const { trait } = quantum;
|
|
224
|
+
const cfg = trait.config;
|
|
225
|
+
const atoms = extractAtoms(cfg);
|
|
226
|
+
const weightMatrix = extractWeightMatrix(cfg);
|
|
227
|
+
const numNodes = extractNumber(cfg, "numNodes") ?? extractNumber(cfg, "num_nodes");
|
|
228
|
+
if (atoms && atoms.length > 0) {
|
|
229
|
+
return this.buildVQEOutput(atoms, cfg);
|
|
230
|
+
}
|
|
231
|
+
if (weightMatrix) {
|
|
232
|
+
return this.buildQAOAOutput(weightMatrix, cfg);
|
|
233
|
+
}
|
|
234
|
+
if (numNodes !== void 0 && numNodes > 0) {
|
|
235
|
+
const n = Math.min(Math.round(numNodes), 100);
|
|
236
|
+
const matrix = Array.from(
|
|
237
|
+
{ length: n },
|
|
238
|
+
(_, i) => Array.from({ length: n }, (_2, j) => i !== j ? 1 : 0)
|
|
239
|
+
);
|
|
240
|
+
return this.buildQAOAOutput(matrix, cfg);
|
|
241
|
+
}
|
|
242
|
+
const { qasm, warnings } = generateStubCircuit();
|
|
243
|
+
warnings.unshift(
|
|
244
|
+
"@quantumCircuit trait found but neither `molecule`/`atoms` nor `weightMatrix`/`numNodes` params are present. Add params to generate a circuit."
|
|
245
|
+
);
|
|
246
|
+
return {
|
|
247
|
+
qasm,
|
|
248
|
+
numQubits: 1,
|
|
249
|
+
numClbits: 1,
|
|
250
|
+
estimatedDepth: 2,
|
|
251
|
+
circuitType: "custom",
|
|
252
|
+
recommendedBackend: "aer",
|
|
253
|
+
warnings
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
// ---------------------------------------------------------------------------
|
|
257
|
+
// Private helpers
|
|
258
|
+
// ---------------------------------------------------------------------------
|
|
259
|
+
/**
|
|
260
|
+
* Walk `objects` (and their children) recursively, returning the first object
|
|
261
|
+
* that has a `@quantumCircuit` or `@quantum_circuit` trait, plus the trait.
|
|
262
|
+
*/
|
|
263
|
+
findQuantumTrait(objects) {
|
|
264
|
+
for (const obj of objects) {
|
|
265
|
+
for (const trait of obj.traits ?? []) {
|
|
266
|
+
if (trait.name === "quantumCircuit" || trait.name === "quantum_circuit") {
|
|
267
|
+
return { obj, trait };
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (obj.children && obj.children.length > 0) {
|
|
271
|
+
const found = this.findQuantumTrait(obj.children);
|
|
272
|
+
if (found) return found;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return void 0;
|
|
276
|
+
}
|
|
277
|
+
/** Build a {@link QASMOutput} for a VQE circuit. */
|
|
278
|
+
buildVQEOutput(atoms, cfg) {
|
|
279
|
+
const moleculeName = (extractNumber(cfg, "moleculeName") !== void 0 ? void 0 : cfg["moleculeName"]?.value) ?? atoms.map((a) => a.symbol).join("") ?? "molecule";
|
|
280
|
+
const ansatzLayers = Math.max(1, Math.round(extractNumber(cfg, "ansatzLayers") ?? extractNumber(cfg, "ansatz_layers") ?? 2));
|
|
281
|
+
const initialParams = cfg["initialParams"]?.value ?? cfg["initial_params"]?.value ?? void 0;
|
|
282
|
+
const { qasm, numQubits, estimatedDepth, warnings, paramNames } = generateVQECircuit(
|
|
283
|
+
atoms,
|
|
284
|
+
moleculeName,
|
|
285
|
+
ansatzLayers,
|
|
286
|
+
initialParams
|
|
287
|
+
);
|
|
288
|
+
return {
|
|
289
|
+
qasm,
|
|
290
|
+
numQubits,
|
|
291
|
+
numClbits: numQubits,
|
|
292
|
+
estimatedDepth,
|
|
293
|
+
circuitType: "vqe",
|
|
294
|
+
molecule: { atoms },
|
|
295
|
+
recommendedBackend: numQubits <= 20 ? "aer" : "ibm-quantum",
|
|
296
|
+
warnings,
|
|
297
|
+
paramNames
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
/** Build a {@link QASMOutput} for a QAOA circuit. */
|
|
301
|
+
buildQAOAOutput(weightMatrix, cfg) {
|
|
302
|
+
const p = Math.max(1, Math.round(extractNumber(cfg, "p") ?? 1));
|
|
303
|
+
const initialGamma = extractNumber(cfg, "gamma") ?? extractNumber(cfg, "initial_gamma");
|
|
304
|
+
const initialBeta = extractNumber(cfg, "beta") ?? extractNumber(cfg, "initial_beta");
|
|
305
|
+
const { qasm, numQubits, estimatedDepth, warnings, paramNames } = generateQAOACircuit(
|
|
306
|
+
weightMatrix,
|
|
307
|
+
p,
|
|
308
|
+
initialGamma,
|
|
309
|
+
initialBeta
|
|
310
|
+
);
|
|
311
|
+
return {
|
|
312
|
+
qasm,
|
|
313
|
+
numQubits,
|
|
314
|
+
numClbits: numQubits,
|
|
315
|
+
estimatedDepth,
|
|
316
|
+
circuitType: "qaoa",
|
|
317
|
+
weightMatrix,
|
|
318
|
+
recommendedBackend: numQubits <= 50 ? "aer" : "ibm-quantum",
|
|
319
|
+
warnings,
|
|
320
|
+
paramNames
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
exports.QuantumCircuitCompiler = QuantumCircuitCompiler;
|
|
326
|
+
//# sourceMappingURL=chunk-YN6V7R3L.cjs.map
|
|
327
|
+
//# sourceMappingURL=chunk-YN6V7R3L.cjs.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// src/traits/SimulationSolverFactory.ts
|
|
2
|
+
var factories = /* @__PURE__ */ new Map();
|
|
3
|
+
var SimulationSolverFactory = {
|
|
4
|
+
/**
|
|
5
|
+
* Register a solver constructor for a simulation type.
|
|
6
|
+
* Called by engine on app startup.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* SimulationSolverFactory.register('thermal', (cfg) => new ThermalSolver(cfg));
|
|
10
|
+
*/
|
|
11
|
+
register(type, factory) {
|
|
12
|
+
factories.set(type, factory);
|
|
13
|
+
},
|
|
14
|
+
/**
|
|
15
|
+
* Create a solver instance. Returns null if no factory registered for type.
|
|
16
|
+
* Called by trait handlers in onAttach.
|
|
17
|
+
*/
|
|
18
|
+
create(type, config) {
|
|
19
|
+
const factory = factories.get(type);
|
|
20
|
+
if (!factory) return null;
|
|
21
|
+
return factory(config);
|
|
22
|
+
},
|
|
23
|
+
/** Check if a solver type has a registered factory. */
|
|
24
|
+
has(type) {
|
|
25
|
+
return factories.has(type);
|
|
26
|
+
},
|
|
27
|
+
/** List all registered solver types. */
|
|
28
|
+
types() {
|
|
29
|
+
return [...factories.keys()];
|
|
30
|
+
},
|
|
31
|
+
/** Clear all registrations (for testing). */
|
|
32
|
+
clear() {
|
|
33
|
+
factories.clear();
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { SimulationSolverFactory };
|
|
38
|
+
//# sourceMappingURL=chunk-YQELFNJV.js.map
|
|
39
|
+
//# sourceMappingURL=chunk-YQELFNJV.js.map
|