@holoscript/core 8.0.8 → 8.0.10
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/LICENSE +21 -0
- package/bin/holoscript.cjs +5 -1
- package/dist/GLTFPipeline-L76YTXKA.js +15 -0
- package/dist/GLTFPipeline-ZWJN7GI6.cjs +36 -0
- package/dist/HoloCompositionParser-K76KTEEE.js +12 -0
- package/dist/HoloCompositionParser-UZH6Y4HO.cjs +45 -0
- package/dist/HoloScriptCodeParser-2D4ERFUZ.js +6 -0
- package/dist/HoloScriptCodeParser-UDRLDA7I.cjs +23 -0
- package/dist/HoloScriptPlusParser-FTMCGWXD.js +13 -0
- package/dist/HoloScriptPlusParser-LQR5GIKF.cjs +30 -0
- package/dist/HoloScriptRuntime-UTRLJI5L.js +12 -0
- package/dist/HoloScriptRuntime-YBYXJHJN.cjs +21 -0
- package/dist/SceneIRCompiler-63KA3M2F.js +17 -0
- package/dist/SceneIRCompiler-KWUFHZ4O.cjs +42 -0
- package/dist/{USDZExporter-AUHZODOF.cjs → USDZExporter-ML4UMIGC.cjs} +3 -3
- package/dist/{USDZExporter-GXB4AUSG.js → USDZExporter-ZFKLQ76G.js} +3 -3
- package/dist/agents/index.cjs +1 -1
- package/dist/agents/index.js +1 -1
- package/dist/audit/AuditLogger.d.ts +106 -0
- package/dist/audit/AuditQueryBuilder.d.ts +79 -0
- package/dist/audit/ComplianceReporter.d.ts +90 -0
- package/dist/audit/index.d.ts +13 -0
- package/dist/{chunk-FGMDMJM7.js → chunk-2BYAUHBO.js} +3 -3
- package/dist/{chunk-EDPYCLRC.cjs → chunk-2E6PP5UE.cjs} +83 -59
- package/dist/{chunk-GASCWJK5.js → chunk-2EGGAZT3.js} +65 -287
- package/dist/{chunk-SIEXCILW.js → chunk-2I3XAGMF.js} +3 -3
- package/dist/{chunk-OS533P33.cjs → chunk-2KKOYZYI.cjs} +1074 -1655
- package/dist/chunk-2MQKNDNH.js +51 -0
- package/dist/{chunk-7DMMMBCY.cjs → chunk-2X3IPCBK.cjs} +10 -10
- package/dist/chunk-2ZOTBO25.cjs +202 -0
- package/dist/chunk-356N4NPM.cjs +152 -0
- package/dist/{chunk-X3GJPRVK.cjs → chunk-36NPLOI4.cjs} +92 -81
- package/dist/{chunk-SLU6UPJI.cjs → chunk-37HHY7RH.cjs} +5 -5
- package/dist/{chunk-YDPEHCCI.cjs → chunk-3CDDRUER.cjs} +3 -118
- package/dist/chunk-3F7ZZWIN.js +1651 -0
- package/dist/chunk-3ILD7TKP.cjs +187 -0
- package/dist/{chunk-X27QRG4C.cjs → chunk-3IUHTGDD.cjs} +153 -41
- package/dist/{chunk-PXNZ6TME.js → chunk-4376VHNJ.js} +60 -36
- package/dist/{chunk-YKGPCZEE.cjs → chunk-4FIBOJW6.cjs} +10 -10
- package/dist/chunk-4Q7RKQQI.cjs +14195 -0
- package/dist/{chunk-YCM6QQRT.cjs → chunk-566ZB4LZ.cjs} +180 -8
- package/dist/{chunk-2Y3V22SG.js → chunk-5CURIYGT.js} +3 -3
- package/dist/{chunk-QBWNJXNR.js → chunk-5FYMCVBY.js} +5 -5
- package/dist/{chunk-ZA34AN3R.js → chunk-5LVFTGKH.js} +841 -12
- package/dist/{chunk-Z6PMDS4G.js → chunk-5OUOMBKK.js} +1090 -53
- package/dist/chunk-63AUAIL6.js +48 -0
- package/dist/chunk-655FATJU.js +110 -0
- package/dist/{chunk-TQ377OLB.cjs → chunk-65S62L4D.cjs} +28 -22
- package/dist/chunk-6NTAZN5Z.cjs +502 -0
- package/dist/chunk-6TRX6AR2.js +9376 -0
- package/dist/chunk-6ZCCLKS2.cjs +51 -0
- package/dist/{chunk-MDR235RZ.js → chunk-734OB5SK.js} +721 -8
- package/dist/{chunk-Q2Q34NF3.js → chunk-77QI552M.js} +6 -6
- package/dist/{chunk-WKX5AMOY.js → chunk-7I74JWPW.js} +3 -3
- package/dist/{chunk-5FSKKMR7.cjs → chunk-7IDJDMPU.cjs} +232 -4
- package/dist/chunk-7VBKRGIZ.cjs +847 -0
- package/dist/{chunk-KCPHASCO.js → chunk-AATYYLYK.js} +5 -5
- package/dist/{chunk-DTGBOSEM.cjs → chunk-AWXFEAQL.cjs} +12 -12
- package/dist/{chunk-THCK6ECW.js → chunk-B3CWTCK2.js} +231 -3
- package/dist/chunk-BCP4E7MD.cjs +997 -0
- package/dist/chunk-BG7RPYJP.js +91 -0
- package/dist/{chunk-VF257YKO.js → chunk-BP4KTMLY.js} +117 -5
- package/dist/{chunk-YN6IETRZ.js → chunk-BQJ3YBF3.js} +6424 -987
- package/dist/{chunk-7X5PNIQJ.js → chunk-BXSOEQI3.js} +27 -25
- package/dist/{chunk-WFKVS2K4.cjs → chunk-C65C5VED.cjs} +1101 -55
- package/dist/{chunk-KOUAQL2B.cjs → chunk-CANAL6CT.cjs} +1569 -168
- package/dist/{chunk-FDSGHPAK.js → chunk-CBSDJF3B.js} +3 -3
- package/dist/{chunk-FEWUHQNM.cjs → chunk-CFVK26P4.cjs} +4 -4
- package/dist/{chunk-M7K4LE66.cjs → chunk-CI33NINL.cjs} +4 -4
- package/dist/{chunk-2OWDB4FB.js → chunk-CKV5NYAE.js} +6 -6
- package/dist/{chunk-LPS5AMQD.cjs → chunk-CM4NHXVO.cjs} +24 -24
- package/dist/chunk-D3HSRXYB.js +115 -0
- package/dist/{chunk-FNHJRI32.js → chunk-DBH3D2MU.js} +1561 -160
- package/dist/{chunk-GW3LKD5C.js → chunk-DJNH4HFW.js} +3 -3
- package/dist/{chunk-2GCNOI2U.cjs → chunk-DN6F4DHH.cjs} +9 -3
- package/dist/chunk-DQRJ5RJG.js +432 -0
- package/dist/{chunk-C7ZBSV2Q.js → chunk-DUG3OQAS.js} +106 -43
- package/dist/chunk-ECUYJOJ2.cjs +199 -0
- package/dist/chunk-EEMTCAK7.js +182 -0
- package/dist/{chunk-3SKLAUDD.cjs → chunk-EI3J6LTW.cjs} +359 -581
- package/dist/{chunk-SSSN7VAM.js → chunk-EM2OGPYE.js} +4 -4
- package/dist/{chunk-56VOWURB.cjs → chunk-ENZCIQZC.cjs} +522 -453
- package/dist/chunk-ESBXUYOC.cjs +836 -0
- package/dist/{chunk-L5U4W6JC.js → chunk-ESSEF6U2.js} +4 -4
- package/dist/chunk-ET3AN4W3.js +824 -0
- package/dist/chunk-EXKSFGSX.cjs +14 -14
- package/dist/{chunk-I76GIKN7.cjs → chunk-F3YT6GUF.cjs} +17 -17
- package/dist/{chunk-WRWEX5ZF.js → chunk-F75DZBBI.js} +3 -3
- package/dist/{chunk-4JGRWHZJ.js → chunk-FG6PYGIZ.js} +12 -6
- package/dist/chunk-FGGJQRLZ.js +14 -14
- package/dist/{chunk-SXOSDZD6.js → chunk-FWCHPCD4.js} +128 -10
- package/dist/{chunk-XW6IXEQH.cjs → chunk-G35CAQ7I.cjs} +5 -5
- package/dist/{chunk-7VMGP2FW.js → chunk-G6KACNMO.js} +132 -188
- package/dist/{chunk-FJPADH77.cjs → chunk-GAWJJAGT.cjs} +6 -6
- package/dist/chunk-GGR7QUKK.cjs +4724 -0
- package/dist/chunk-GIBF4BHH.js +14098 -0
- package/dist/{chunk-AWB7QYY6.cjs → chunk-GILYQ5VH.cjs} +6 -6
- package/dist/{chunk-FWVYAMNW.cjs → chunk-GKFCHGCM.cjs} +4 -4
- package/dist/{chunk-Y3ZFVUUU.js → chunk-GLEJ2TLS.js} +3 -3
- package/dist/{chunk-3GWWJT7L.js → chunk-GP3OKSKT.js} +13 -13
- package/dist/chunk-GTIPOEHN.js +196 -0
- package/dist/{chunk-LMJ5EBV7.cjs → chunk-GZPUA2TL.cjs} +16 -15
- package/dist/{chunk-IELX2OKI.js → chunk-H4LJ4HEA.js} +3 -115
- package/dist/{chunk-ACVWFGBI.cjs → chunk-HCX4SMFK.cjs} +3 -3
- package/dist/{chunk-HYNTS5CP.js → chunk-HHRZ6STP.js} +24 -2
- package/dist/chunk-HIDEIEFG.js +48 -0
- package/dist/{chunk-W6RW64BB.cjs → chunk-HSWBIDZM.cjs} +228 -5
- package/dist/{chunk-GSOUNWEL.js → chunk-HVX7QQYK.js} +1035 -1616
- package/dist/{chunk-TRCGG42I.cjs → chunk-IFW5IW4L.cjs} +6502 -1019
- package/dist/{chunk-F5LKJ6F5.cjs → chunk-IJU6AS67.cjs} +32 -28
- package/dist/{chunk-TVANHNJ7.js → chunk-IK6Z2HNC.js} +173 -3
- package/dist/{chunk-QGMUTVVH.cjs → chunk-IS7NTKY5.cjs} +20 -20
- package/dist/{chunk-YFVQWSNJ.js → chunk-IXWGYWH6.js} +3 -3
- package/dist/chunk-J2DAS2PL.js +148 -0
- package/dist/chunk-JBQXZIWB.js +148 -0
- package/dist/chunk-JBYBMBMW.js +261 -0
- package/dist/{chunk-LWUOUCYL.js → chunk-JEJ7TT54.js} +5 -5
- package/dist/{chunk-DUCB6LGL.js → chunk-JOTCTHN5.js} +211 -5
- package/dist/{chunk-47RUFYKR.js → chunk-K56UVEXV.js} +3 -3
- package/dist/{chunk-XSFNHP2E.js → chunk-KB26H447.js} +3 -3
- package/dist/{chunk-3NGDZZR4.js → chunk-KEYG7HGY.js} +430 -37
- package/dist/{chunk-DY72BMU5.js → chunk-KFVNCW4Q.js} +4 -4
- package/dist/chunk-KPGC7SK2.js +192 -0
- package/dist/chunk-KROXXBK5.cjs +53 -0
- package/dist/{chunk-ZPZAVHXL.cjs → chunk-LB3ZZMKT.cjs} +137 -19
- package/dist/chunk-LDYZWNJW.cjs +1654 -0
- package/dist/{chunk-UGXHYIWT.cjs → chunk-LHNHO27U.cjs} +28 -28
- package/dist/{chunk-ULMSSHCJ.cjs → chunk-LMB555QB.cjs} +405 -38
- package/dist/{chunk-CBJY23VL.js → chunk-MD4IVS42.js} +3 -3
- package/dist/{chunk-VMLKSV26.js → chunk-MDDWEBCX.js} +226 -3
- package/dist/chunk-MUWH4QK5.cjs +94 -0
- package/dist/{chunk-T6W3Z3SH.cjs → chunk-N2ILK7BF.cjs} +4 -4
- package/dist/{chunk-6EX3I5P4.cjs → chunk-N74QRJGP.cjs} +6 -6
- package/dist/chunk-NFFHLX37.cjs +132 -0
- package/dist/chunk-NJSYWX7H.js +190 -0
- package/dist/{chunk-SH5PPVK7.cjs → chunk-NQN5LFN4.cjs} +165 -221
- package/dist/chunk-NTQRFOPP.cjs +56 -0
- package/dist/{chunk-YFWRJW4B.js → chunk-NWMJPTVL.js} +51 -55
- package/dist/{chunk-63ZGNR2T.cjs → chunk-OC6GV5QH.cjs} +42 -42
- package/dist/{chunk-7E7GCQCK.js → chunk-OG3MBHM3.js} +9 -3
- package/dist/chunk-OMNHTCS4.cjs +264 -0
- package/dist/chunk-OQXB6NNC.cjs +117 -0
- package/dist/{chunk-Y57W2CT5.cjs → chunk-OV46CCA2.cjs} +51 -55
- package/dist/{chunk-6PRZIHGL.cjs → chunk-OV6HHKLE.cjs} +21 -266
- package/dist/{chunk-C37BHB7N.cjs → chunk-P26YYPOO.cjs} +5 -5
- package/dist/{chunk-2BZHWUSR.cjs → chunk-P7JEKJTZ.cjs} +16 -16
- package/dist/{chunk-NGBXXZLL.cjs → chunk-PDXX5UI4.cjs} +45 -45
- package/dist/{chunk-FHQFPYV4.js → chunk-PJFTTSKE.js} +8 -7
- package/dist/{chunk-GVFJ6T4S.cjs → chunk-PVODJEJ7.cjs} +721 -8
- package/dist/{chunk-ZZ7RO2UQ.js → chunk-Q265VZJ4.js} +3 -3
- package/dist/{chunk-E7JP3BS3.cjs → chunk-Q47JEE2C.cjs} +4 -4
- package/dist/chunk-QBY7LRN2.js +281 -0
- package/dist/{chunk-GH6C2QGW.cjs → chunk-QEDMOGF3.cjs} +857 -16
- package/dist/{chunk-5WUNN6ZN.cjs → chunk-QHSAVOOL.cjs} +24 -2
- package/dist/chunk-QJNCDVYM.cjs +137 -0
- package/dist/chunk-QM7FJB5W.js +4717 -0
- package/dist/chunk-QQFB4RT2.cjs +448 -0
- package/dist/chunk-QSYBHQAD.cjs +196 -0
- package/dist/{chunk-2YSNA2F2.cjs → chunk-QVJMDVYZ.cjs} +5 -5
- package/dist/chunk-RAJMAX6D.js +131 -0
- package/dist/{chunk-VVKVQZI6.js → chunk-RAN3ECAS.js} +3 -3
- package/dist/chunk-RKGUZBOC.js +79 -0
- package/dist/{chunk-HLFDZ35S.cjs → chunk-RRQIAJLQ.cjs} +8 -8
- package/dist/{chunk-PABONWKI.js → chunk-RXQNRZ5F.js} +3 -3
- package/dist/{chunk-7ZHYEITD.cjs → chunk-S4O7CFHQ.cjs} +10 -11
- package/dist/chunk-SE7ANBGN.js +128 -0
- package/dist/{chunk-X2AVEAZM.cjs → chunk-SJIRCTIS.cjs} +176 -2
- package/dist/{chunk-WXQ57LAO.js → chunk-SQXAZHDG.js} +4 -4
- package/dist/chunk-SR73L5ZP.cjs +84 -0
- package/dist/{chunk-OABEO6HH.js → chunk-SZOLTWWD.js} +2349 -214
- package/dist/{chunk-5JEU52DW.js → chunk-TPZ3BN2D.js} +3 -3
- package/dist/{chunk-QFU53KRH.js → chunk-TSTFYGGX.js} +4 -5
- package/dist/{chunk-EBS32AJI.cjs → chunk-TZCFKZ6Z.cjs} +5 -5
- package/dist/chunk-UCVZXQ63.js +724 -0
- package/dist/chunk-UGQ3QNV6.js +992 -0
- package/dist/chunk-UNMVGZVW.js +142 -0
- package/dist/{chunk-TEVX443G.js → chunk-UTUD6GJI.js} +178 -6
- package/dist/chunk-UXBYA7DV.cjs +155 -0
- package/dist/chunk-V6GXFSK7.cjs +443 -0
- package/dist/chunk-VHORVGCG.cjs +761 -0
- package/dist/{chunk-B4EKV6HQ.js → chunk-VKCTYLDN.js} +500 -442
- package/dist/{chunk-O3MGZDCT.cjs → chunk-VTEXJOSD.cjs} +63 -63
- package/dist/chunk-VVAAZITA.cjs +287 -0
- package/dist/{chunk-V7AKE5VT.cjs → chunk-W2GA3EQB.cjs} +435 -42
- package/dist/chunk-W4GABFCR.js +37 -0
- package/dist/chunk-WKEK4NCA.js +490 -0
- package/dist/{chunk-5A4TCHOC.cjs → chunk-WNYXT4TE.cjs} +4 -4
- package/dist/{chunk-S762UEV5.js → chunk-WTH23ISI.js} +6 -6
- package/dist/{chunk-BTKZGHAV.js → chunk-WWNCM473.js} +10 -6
- package/dist/{chunk-4YNYPHH3.cjs → chunk-X75H75UY.cjs} +2351 -213
- package/dist/{chunk-LYJJI7ZK.cjs → chunk-XCUDDFKC.cjs} +216 -9
- package/dist/chunk-YAO4HPJL.cjs +120 -0
- package/dist/chunk-YKY2JBER.cjs +9443 -0
- package/dist/chunk-YP5CHEYU.cjs +154 -0
- package/dist/{chunk-WRNEH5MO.js → chunk-YW3I2FQL.js} +18 -7
- package/dist/{chunk-BRNUPDHJ.js → chunk-Z557DVYN.js} +386 -19
- package/dist/{chunk-VSACG2AR.js → chunk-Z6LZUYZF.js} +21 -264
- package/dist/chunk-ZHPMP447.cjs +43 -0
- package/dist/{chunk-LODTHGST.cjs → chunk-ZK7KX5CD.cjs} +133 -70
- package/dist/{chunk-CCPSNT6B.cjs → chunk-ZRPALBQB.cjs} +5 -5
- package/dist/chunk-ZVFHPMC5.js +824 -0
- package/dist/chunk-ZVQMKUGJ.js +443 -0
- package/dist/cli/holoscript-runner.cjs +86 -48
- package/dist/cli/holoscript-runner.js +54 -16
- package/dist/codebase/index.cjs +1 -1
- package/dist/codebase/index.js +1 -1
- package/dist/compiler/agent-inference.cjs +11 -11
- package/dist/compiler/agent-inference.js +9 -6
- package/dist/compiler/android-xr.cjs +13 -12
- package/dist/compiler/android-xr.js +11 -10
- package/dist/compiler/android.cjs +12 -12
- package/dist/compiler/android.js +10 -10
- package/dist/compiler/business-quest.cjs +10 -10
- package/dist/compiler/business-quest.js +2 -2
- package/dist/compiler/coco.cjs +1 -1
- package/dist/compiler/coco.js +1 -1
- package/dist/compiler/context.cjs +9 -9
- package/dist/compiler/context.js +6 -6
- package/dist/compiler/daimon-seed.cjs +36 -0
- package/dist/compiler/daimon-seed.js +12 -0
- package/dist/compiler/domain-block-utils.cjs +205 -156
- package/dist/compiler/domain-block-utils.js +8 -7
- package/dist/compiler/dtdl.cjs +10 -10
- package/dist/compiler/dtdl.js +7 -7
- package/dist/compiler/gltf-pipeline.cjs +9 -9
- package/dist/compiler/gltf-pipeline.js +2 -2
- package/dist/compiler/godot.cjs +10 -9
- package/dist/compiler/godot.js +9 -8
- package/dist/compiler/incremental.cjs +11 -11
- package/dist/compiler/incremental.js +6 -6
- package/dist/compiler/index.cjs +2585 -3273
- package/dist/compiler/index.d.ts +149 -35
- package/dist/compiler/index.js +2197 -3102
- package/dist/compiler/ios.cjs +11 -11
- package/dist/compiler/ios.js +9 -9
- package/dist/compiler/llm-provider-capabilities.cjs +9 -9
- package/dist/compiler/llm-provider-capabilities.js +6 -6
- package/dist/compiler/nodetoy.cjs +1 -1
- package/dist/compiler/nodetoy.js +1 -1
- package/dist/compiler/openxr.cjs +11 -10
- package/dist/compiler/openxr.js +10 -9
- package/dist/compiler/remotion.cjs +1 -1
- package/dist/compiler/remotion.js +1 -1
- package/dist/compiler/reproducibility.cjs +1 -1
- package/dist/compiler/reproducibility.js +1 -1
- package/dist/compiler/sdf.cjs +11 -10
- package/dist/compiler/sdf.js +9 -8
- package/dist/compiler/semantic-scene.cjs +7 -7
- package/dist/compiler/semantic-scene.js +2 -2
- package/dist/compiler/state.cjs +9 -9
- package/dist/compiler/state.js +7 -7
- package/dist/compiler/trait-composition.cjs +11 -11
- package/dist/compiler/trait-composition.js +7 -7
- package/dist/compiler/traits/ProvenanceSemiring.d.ts +167 -0
- package/dist/compiler/traits/Semiring.d.ts +26 -0
- package/dist/compiler/unity.cjs +11 -10
- package/dist/compiler/unity.js +10 -9
- package/dist/compiler/unreal.cjs +12 -11
- package/dist/compiler/unreal.js +10 -9
- package/dist/compiler/urdf.cjs +18 -17
- package/dist/compiler/urdf.js +9 -8
- package/dist/compiler/usd-physics.cjs +11 -10
- package/dist/compiler/usd-physics.js +8 -7
- package/dist/compiler/visionos.cjs +11 -10
- package/dist/compiler/visionos.js +10 -9
- package/dist/compiler/vrchat.cjs +11 -10
- package/dist/compiler/vrchat.js +9 -8
- package/dist/compiler/wasm.cjs +14 -13
- package/dist/compiler/wasm.js +9 -8
- package/dist/compiler/webgpu.cjs +10 -9
- package/dist/compiler/webgpu.js +9 -8
- package/dist/constants.cjs +398 -0
- package/dist/constants.js +9 -0
- package/dist/coordinators/index.cjs +4 -1
- package/dist/coordinators/index.js +4 -1
- package/dist/debugger.cjs +11 -9
- package/dist/debugger.js +9 -7
- package/dist/{dist-ACXG6IH5.cjs → dist-GRMOP2UL.cjs} +341 -65
- package/dist/{dist-VD4L6V7Q.js → dist-ZBUKU2JG.js} +333 -63
- package/dist/entries/interop.cjs +23 -23
- package/dist/entries/interop.js +3 -3
- package/dist/entries/scripting.cjs +12 -11
- package/dist/entries/scripting.js +8 -7
- package/dist/evolution/index.cjs +66 -0
- package/dist/evolution/index.d.ts +162 -0
- package/dist/evolution/index.js +17 -0
- package/dist/hololand/index.cjs +41 -37
- package/dist/hololand/index.js +3 -3
- package/dist/index.cjs +12394 -3224
- package/dist/index.d.ts +260 -18
- package/dist/index.js +10755 -2182
- package/dist/keyword-registry/PluginKeywordRegistry.d.ts +138 -0
- package/dist/keyword-registry/index.cjs +29 -0
- package/dist/keyword-registry/index.d.ts +1 -0
- package/dist/keyword-registry/index.js +4 -0
- package/dist/math/tropical-spmv.cjs +11 -11
- package/dist/math/tropical-spmv.d.ts +1 -0
- package/dist/math/tropical-spmv.js +2 -2
- package/dist/math/tropicalSpmv.d.ts +43 -0
- package/dist/math/vec3.cjs +1 -1
- package/dist/math/vec3.js +1 -1
- package/dist/matter/StagedMatter.d.ts +82 -0
- package/dist/matter/index.cjs +17 -0
- package/dist/matter/index.d.ts +1 -0
- package/dist/matter/index.js +4 -0
- package/dist/{ml-dsa-Z7JDKW4L.js → ml-dsa-J6VKVT4K.js} +3 -3
- package/dist/{ml-dsa-FSKBTE3W.cjs → ml-dsa-MTIK4ZUQ.cjs} +23 -23
- package/dist/paper-0c-spike/index.cjs +1 -1
- package/dist/paper-0c-spike/index.js +1 -1
- package/dist/parameter-envelope/ParameterEnvelope.d.ts +128 -0
- package/dist/parameter-envelope/index.cjs +17 -0
- package/dist/parameter-envelope/index.d.ts +2 -0
- package/dist/parameter-envelope/index.js +4 -0
- package/dist/parser/HoloCompositionTypes.d.ts +2013 -0
- package/dist/parser/PipelineParser.d.ts +162 -0
- package/dist/parser.cjs +36 -20
- package/dist/parser.js +13 -9
- package/dist/plugin-manifest/ManifestAutoLoader.d.ts +35 -0
- package/dist/plugin-manifest/PluginManifest.d.ts +156 -0
- package/dist/plugin-manifest/index.cjs +25 -0
- package/dist/plugin-manifest/index.d.ts +2 -0
- package/dist/plugin-manifest/index.js +4 -0
- package/dist/plugin-solver-contract/PluginSolverContract.d.ts +288 -0
- package/dist/plugin-solver-contract/index.cjs +41 -0
- package/dist/plugin-solver-contract/index.d.ts +1 -0
- package/dist/plugin-solver-contract/index.js +4 -0
- package/dist/policy/ContentPolicyGate.d.ts +51 -0
- package/dist/policy/PolicyPack.d.ts +120 -0
- package/dist/policy/blocklist.d.ts +32 -0
- package/dist/policy/defaults.d.ts +44 -0
- package/dist/policy/index.cjs +106 -0
- package/dist/policy/index.d.ts +17 -0
- package/dist/policy/index.js +5 -0
- package/dist/policy/jsonLogic.d.ts +31 -0
- package/dist/policy/types.d.ts +174 -0
- package/dist/proof-composition/ProofCompositionLaw.d.ts +93 -0
- package/dist/proof-composition/index.cjs +25 -0
- package/dist/proof-composition/index.d.ts +1 -0
- package/dist/proof-composition/index.js +4 -0
- package/dist/receipts/hash-policy.d.ts +85 -0
- package/dist/reconstruction/index.cjs +75 -47
- package/dist/reconstruction/index.js +5 -5
- package/dist/runtime/plugin-trait-registrar.d.ts +36 -0
- package/dist/runtime.cjs +81 -79
- package/dist/runtime.js +9 -7
- package/dist/scene-presets-EDKYZ5GW.js +4 -0
- package/dist/scene-presets-NCW2CFRS.cjs +17 -0
- package/dist/self-improvement/index.cjs +1 -1
- package/dist/self-improvement/index.js +1 -1
- package/dist/{src-PT2FERDV.cjs → src-G3D7ZATQ.cjs} +545 -21
- package/dist/{src-J6CM4AUR.js → src-UXYA7HM6.js} +539 -16
- package/dist/storage/index.cjs +10 -10
- package/dist/storage/index.js +3 -3
- package/dist/testing.cjs +1 -1
- package/dist/testing.js +1 -1
- package/dist/tools/index.cjs +3631 -0
- package/dist/tools/index.js +3581 -0
- package/dist/traitDocs/traitDocs.cjs +9 -9
- package/dist/traitDocs/traitDocs.d.ts +1 -0
- package/dist/traitDocs/traitDocs.js +3 -3
- package/dist/traits/ControlLoopTrait.d.ts +154 -0
- package/dist/traits/KinematicChainTrait.d.ts +116 -0
- package/dist/traits/SensorSamplingTrait.d.ts +154 -0
- package/dist/traits/TraitTypes.d.ts +270 -0
- package/dist/traits/TransactionTrait.d.ts +121 -0
- package/dist/traits/botanical-lotus.cjs +54 -50
- package/dist/traits/botanical-lotus.js +2 -5
- package/dist/traits/control-loop.cjs +21 -0
- package/dist/traits/control-loop.d.ts +1 -0
- package/dist/traits/control-loop.js +4 -0
- package/dist/traits/engines/cloth-verlet.d.ts +65 -0
- package/dist/traits/engines/index.cjs +19 -19
- package/dist/traits/engines/index.d.ts +15 -275
- package/dist/traits/engines/index.js +3 -3
- package/dist/traits/engines/motion-data-schema.d.ts +119 -0
- package/dist/traits/engines/motion-matching.d.ts +102 -0
- package/dist/traits/engines/noise.d.ts +25 -0
- package/dist/traits/engines/onnx-adapter.d.ts +173 -0
- package/dist/traits/engines/onnx-motion-matching.d.ts +163 -0
- package/dist/traits/engines/pfnn-network.d.ts +92 -0
- package/dist/traits/engines/synthetic-walk-cycle.d.ts +38 -0
- package/dist/traits/engines/tensor-ops.d.ts +15 -0
- package/dist/traits/index.cjs +2789 -1259
- package/dist/traits/index.d.ts +35 -0
- package/dist/traits/index.js +1692 -411
- package/dist/traits/kinematic-chain.cjs +25 -0
- package/dist/traits/kinematic-chain.d.ts +1 -0
- package/dist/traits/kinematic-chain.js +4 -0
- package/dist/traits/sensor-sampling.cjs +33 -0
- package/dist/traits/sensor-sampling.d.ts +1 -0
- package/dist/traits/sensor-sampling.js +4 -0
- package/dist/traits/simulation-solver-factory.cjs +1 -1
- package/dist/traits/simulation-solver-factory.js +1 -1
- package/dist/traits/transaction.cjs +29 -0
- package/dist/traits/transaction.d.ts +1 -0
- package/dist/traits/transaction.js +4 -0
- package/dist/traits/webcam-gaze.cjs +1 -1
- package/dist/traits/webcam-gaze.js +1 -1
- package/dist/type-checker.cjs +7 -6
- package/dist/type-checker.js +5 -4
- package/dist/types/AdvancedTypeSystem.d.ts +489 -0
- package/dist/types/HoloScriptPlus.d.ts +810 -0
- package/dist/types/base.d.ts +248 -0
- package/dist/types.d.ts +799 -0
- package/dist/world/index.cjs +3 -4
- package/dist/world/index.js +3 -4
- package/dist/world-model/index.cjs +1 -1
- package/dist/world-model/index.js +1 -1
- package/dist/wot/index.cjs +1 -1
- package/dist/wot/index.js +1 -1
- package/package.json +135 -69
- package/dist/GLTFPipeline-3EJLL3TS.cjs +0 -38
- package/dist/GLTFPipeline-3OWJV2VK.js +0 -17
- package/dist/HoloScriptPlusParser-ADWRY5OS.cjs +0 -698
- package/dist/HoloScriptPlusParser-JLJDXHSC.js +0 -693
- package/dist/HoloScriptPlusParser-QCGFPWIL.cjs +0 -27
- package/dist/HoloScriptPlusParser-WENAFEFV.js +0 -10
- package/dist/HoloScriptRuntime-GGRVEU4T.cjs +0 -19
- package/dist/HoloScriptRuntime-GJK6VJPH.js +0 -10
- package/dist/chunk-22Q5A6RV.js +0 -979
- package/dist/chunk-4C57PR42.js +0 -468
- package/dist/chunk-4W5G5QVL.cjs +0 -847
- package/dist/chunk-5ET6L4NS.js +0 -487
- package/dist/chunk-C4GSLCHE.cjs +0 -7153
- package/dist/chunk-F2G6CWFT.js +0 -7089
- package/dist/chunk-G6PNEASF.cjs +0 -814
- package/dist/chunk-GTA4Q3A3.js +0 -1491
- package/dist/chunk-HCCQLAA4.cjs +0 -74
- package/dist/chunk-HFSVMKM3.cjs +0 -72
- package/dist/chunk-KAIVDEIG.cjs +0 -4539
- package/dist/chunk-KQU64CIX.cjs +0 -1508
- package/dist/chunk-MSYSQ2AJ.js +0 -4533
- package/dist/chunk-NHJLP37F.js +0 -70
- package/dist/chunk-NHYRRAGI.cjs +0 -490
- package/dist/chunk-OIQYIIO3.cjs +0 -473
- package/dist/chunk-OL46QLBJ.js +0 -61
- package/dist/chunk-SKZPC5AG.cjs +0 -984
- package/dist/chunk-SLHLXUMO.js +0 -445
- package/dist/chunk-UOIGFQXC.cjs +0 -9750
- package/dist/chunk-UOL6Y5TD.cjs +0 -759
- package/dist/chunk-UVFI7XIR.cjs +0 -452
- package/dist/chunk-VEPGBETF.js +0 -844
- package/dist/chunk-XQ5MWMP2.js +0 -756
- package/dist/chunk-XT6JY5W5.js +0 -9684
- package/dist/chunk-YRRAUB35.js +0 -811
- package/dist/compiler/GasOptimizationAnalyzer.d.ts +0 -73
- package/dist/compiler/NFTMarketplaceCompiler.d.ts +0 -23
- package/dist/compiler/ar.cjs +0 -23
- package/dist/compiler/ar.js +0 -11
- package/dist/compiler/babylon.cjs +0 -21
- package/dist/compiler/babylon.js +0 -15
- package/dist/compiler/multi-layer.cjs +0 -24
- package/dist/compiler/multi-layer.js +0 -15
- package/dist/compiler/playcanvas.cjs +0 -19
- package/dist/compiler/playcanvas.js +0 -13
- package/dist/compiler/r3f.cjs +0 -39
- package/dist/compiler/r3f.d.ts +0 -22
- package/dist/compiler/r3f.js +0 -17
- package/dist/compiler/vrr.cjs +0 -24
- package/dist/compiler/vrr.js +0 -12
- package/dist/parser/NFTMarketplaceTypes.d.ts +0 -191
- package/dist/playwright-3AT3AKTV.cjs +0 -98673
- package/dist/playwright-VZPDVUEQ.js +0 -98660
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MotionMatchingEngine — neural locomotion inference seam.
|
|
3
|
+
*
|
|
4
|
+
* Pure computation interface, no THREE.js / PhysicsWorld coupling.
|
|
5
|
+
* Implementations live alongside this file (NullMotionMatchingEngine here;
|
|
6
|
+
* real neural implementation lands in a follow-up task — see
|
|
7
|
+
* research/2026-04-26_idea-run-3-neural-locomotion.md PLAN-1 ruling:
|
|
8
|
+
* reimplement from primary literature (Holden 2017, Starke 2019/2020/2022),
|
|
9
|
+
* NOT from CC-BY-NC sweriko port.
|
|
10
|
+
*
|
|
11
|
+
* Wire site: NeuralAnimationTrait.onUpdate when animation_model === 'motion_matching'.
|
|
12
|
+
*/
|
|
13
|
+
export interface Vec3 {
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
z: number;
|
|
17
|
+
}
|
|
18
|
+
export interface SkeletonPose {
|
|
19
|
+
joints: Record<string, {
|
|
20
|
+
position: [number, number, number];
|
|
21
|
+
rotation: [number, number, number, number];
|
|
22
|
+
}>;
|
|
23
|
+
timestamp: number;
|
|
24
|
+
}
|
|
25
|
+
export interface ContactFeatures {
|
|
26
|
+
leftFoot: boolean;
|
|
27
|
+
rightFoot: boolean;
|
|
28
|
+
[extra: string]: boolean;
|
|
29
|
+
}
|
|
30
|
+
export type Gait = 'idle' | 'walk' | 'trot' | 'run' | 'crouch';
|
|
31
|
+
export interface MotionInferenceInput {
|
|
32
|
+
targetVelocity: Vec3;
|
|
33
|
+
currentPhase: number;
|
|
34
|
+
delta: number;
|
|
35
|
+
terrainNormal?: Vec3;
|
|
36
|
+
energyEfficiency?: number;
|
|
37
|
+
}
|
|
38
|
+
export interface MotionInferenceResult {
|
|
39
|
+
pose: SkeletonPose;
|
|
40
|
+
phase: number;
|
|
41
|
+
trajectory: Array<[number, number, number]>;
|
|
42
|
+
stability: number;
|
|
43
|
+
contactFeatures: ContactFeatures;
|
|
44
|
+
gait: Gait;
|
|
45
|
+
/**
|
|
46
|
+
* Kinetic-energy proxy in arbitrary units (NOT metabolic cost).
|
|
47
|
+
* Renamed from `energyCost` per /critic Serious #4: the previous name
|
|
48
|
+
* implied physical cost-of-transport which it was not.
|
|
49
|
+
*
|
|
50
|
+
* For the synthetic + null engines this is `speed^2 * efficiency` —
|
|
51
|
+
* dimensionally kinetic-shaped, useful as a sortable proxy. Real
|
|
52
|
+
* metabolic cost (Margaria 1976, Kram & Taylor 1990) is roughly
|
|
53
|
+
* linear in speed for walking and U-shaped around preferred speed —
|
|
54
|
+
* future engines may report that under a different field.
|
|
55
|
+
*/
|
|
56
|
+
kineticEnergyProxy: number;
|
|
57
|
+
}
|
|
58
|
+
export interface MotionMatchingEngine {
|
|
59
|
+
readonly modelId: string;
|
|
60
|
+
readonly loaded: boolean;
|
|
61
|
+
load(): Promise<void>;
|
|
62
|
+
infer(input: MotionInferenceInput): MotionInferenceResult;
|
|
63
|
+
dispose(): void;
|
|
64
|
+
}
|
|
65
|
+
export type MotionMatchingEngineFactory = (modelId: string) => MotionMatchingEngine;
|
|
66
|
+
export declare const TRAJECTORY_HORIZON_FRAMES = 12;
|
|
67
|
+
export declare const TRAJECTORY_FRAME_DT: number;
|
|
68
|
+
/** Vector magnitude — exported so engines share one impl (Nitpick #15). */
|
|
69
|
+
export declare function magnitude(v: Vec3): number;
|
|
70
|
+
/**
|
|
71
|
+
* Single canonical gait classifier shared across engines (Nitpick #9).
|
|
72
|
+
* Lower energyEfficiency → wider speed bands at each gait (lazy walk
|
|
73
|
+
* stays "walk" longer); higher efficiency → bumps into next gait sooner
|
|
74
|
+
* because more output per joule budget.
|
|
75
|
+
*
|
|
76
|
+
* `crouch` is reserved in the `Gait` union for engines that detect
|
|
77
|
+
* stealth/duck postures from joint configuration — not produced by speed
|
|
78
|
+
* alone.
|
|
79
|
+
*/
|
|
80
|
+
export declare function classifyGait(speed: number, energyEfficiency: number): Gait;
|
|
81
|
+
/**
|
|
82
|
+
* Compute trajectory by linear projection from velocity. Exported so the
|
|
83
|
+
* synthetic engine and any procedural/test engines share one implementation.
|
|
84
|
+
*/
|
|
85
|
+
export declare function projectLinearTrajectory(velocity: Vec3): Array<[number, number, number]>;
|
|
86
|
+
/**
|
|
87
|
+
* NullMotionMatchingEngine — deterministic pass-through engine for testing
|
|
88
|
+
* the seam and providing a safe default before a real engine is registered.
|
|
89
|
+
*
|
|
90
|
+
* It does NOT perform neural inference. It produces a result whose SHAPE
|
|
91
|
+
* matches what a real engine would emit, with values derived geometrically
|
|
92
|
+
* from the input velocity. Real engine slots in via the same interface.
|
|
93
|
+
*/
|
|
94
|
+
export declare class NullMotionMatchingEngine implements MotionMatchingEngine {
|
|
95
|
+
readonly modelId: string;
|
|
96
|
+
loaded: boolean;
|
|
97
|
+
constructor(modelId: string);
|
|
98
|
+
load(): Promise<void>;
|
|
99
|
+
infer(input: MotionInferenceInput): MotionInferenceResult;
|
|
100
|
+
dispose(): void;
|
|
101
|
+
}
|
|
102
|
+
export declare function createNullMotionMatchingEngine(modelId: string): MotionMatchingEngine;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pseudo-noise + smooth-noise — pure functions, deterministic, seedable.
|
|
3
|
+
*
|
|
4
|
+
* Extracted 2026-04-27 to dedupe identical implementations between
|
|
5
|
+
* `engines/cloth-verlet.ts` and `runtime/src/traits/PhysicsTraits.ts`
|
|
6
|
+
* (per /critic batch-6 Annoying #8: "two sources of truth for what is
|
|
7
|
+
* supposed to be deterministic noise"). All callers now import from
|
|
8
|
+
* here.
|
|
9
|
+
*
|
|
10
|
+
* The noise function is the classic `sin * 43758.5453` hash — fast,
|
|
11
|
+
* deterministic, no allocations, no Math.random. Suitable for Verlet
|
|
12
|
+
* cloth wind, soft-body turbulence, fluid agitation. NOT cryptographic.
|
|
13
|
+
*
|
|
14
|
+
* Domain: t and seed are real numbers; output is in [-1, 1].
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Hash-style 1D noise. Deterministic for any (t, seed) pair.
|
|
18
|
+
* Output: [-1, 1].
|
|
19
|
+
*/
|
|
20
|
+
export declare function noise(t: number, seed: number): number;
|
|
21
|
+
/**
|
|
22
|
+
* Smoothstep-interpolated noise. Continuous and C1 across integer t boundaries.
|
|
23
|
+
* Output: [-1, 1].
|
|
24
|
+
*/
|
|
25
|
+
export declare function smoothNoise(t: number, seed: number): number;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inference backend adapter — abstracts over execution providers.
|
|
3
|
+
*
|
|
4
|
+
* Why an adapter layer:
|
|
5
|
+
* - The MotionMatchingEngine does forward passes through a small NN.
|
|
6
|
+
* - The NN can be evaluated by ONNX Runtime Web (browser, WebGPU/WASM),
|
|
7
|
+
* ONNX Runtime Node (server, CPU/CUDA), or a pure-JS forward pass
|
|
8
|
+
* (smallest dep, fully deterministic). Caller picks via factory.
|
|
9
|
+
* - This file declares the contract; concrete backends slot in later.
|
|
10
|
+
*
|
|
11
|
+
* Per /founder ruling 2026-04-26 (BUILD-1, idea-run-3): the network
|
|
12
|
+
* architecture itself is reimplemented from primary literature
|
|
13
|
+
* (Holden 2017 Phase-Functioned NN, Starke 2019 NSM, 2020 Local Motion
|
|
14
|
+
* Phases, 2022 DeepPhase). The adapter is execution-only — it doesn't
|
|
15
|
+
* encode any architecture-specific behavior beyond "load weights, run
|
|
16
|
+
* forward pass on these tensors".
|
|
17
|
+
*
|
|
18
|
+
* License-cleanliness: the adapter contract is fresh-authored in this file.
|
|
19
|
+
* Backend implementations must wrap permissively-licensed runtimes:
|
|
20
|
+
* - ONNX Runtime Web → MIT
|
|
21
|
+
* - ONNX Runtime Node → MIT
|
|
22
|
+
* - microsoft/onnxruntime → MIT
|
|
23
|
+
* No vendoring of CC-BY-NC code (sweriko port et al).
|
|
24
|
+
*/
|
|
25
|
+
/** Execution provider — caller hint for backend selection. */
|
|
26
|
+
export type ExecutionProvider = 'webgpu' | 'wasm' | 'cpu' | 'cuda';
|
|
27
|
+
/** Tensor shape — row-major, dimensions list. */
|
|
28
|
+
export type TensorShape = readonly number[];
|
|
29
|
+
/** Float32 tensor — the only dtype the motion-matching engine uses. */
|
|
30
|
+
export interface Float32Tensor {
|
|
31
|
+
data: Float32Array;
|
|
32
|
+
shape: TensorShape;
|
|
33
|
+
}
|
|
34
|
+
/** Multi-input/output inference call shape. */
|
|
35
|
+
export interface InferenceRequest {
|
|
36
|
+
/** Named inputs — must match the model's input signature. */
|
|
37
|
+
inputs: Record<string, Float32Tensor>;
|
|
38
|
+
/** Optional list of output names to fetch — empty = fetch all. */
|
|
39
|
+
outputs?: string[];
|
|
40
|
+
}
|
|
41
|
+
export interface InferenceResponse {
|
|
42
|
+
/** Named outputs — keyed by the model's output signature. */
|
|
43
|
+
outputs: Record<string, Float32Tensor>;
|
|
44
|
+
/** Wall-clock inference duration in milliseconds. */
|
|
45
|
+
durationMs: number;
|
|
46
|
+
/** Which execution provider actually ran the forward pass. */
|
|
47
|
+
providerUsed: ExecutionProvider;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Backend adapter contract. Implementations: OnnxNodeInferenceAdapter (server,
|
|
51
|
+
* onnxruntime-node), PureJsInferenceAdapter (no native deps, deterministic,
|
|
52
|
+
* real PFNN forward pass), NoOpInferenceAdapter (zero-output test double).
|
|
53
|
+
*
|
|
54
|
+
* `runSync` is OPTIONAL: only backends whose forward pass is genuinely
|
|
55
|
+
* synchronous (pure-JS, no-op) implement it. The MotionMatchingEngine's
|
|
56
|
+
* synchronous `infer()` uses it when present and falls back to `inferAsync()`
|
|
57
|
+
* for backends that only support async (onnxruntime-node/web). An adapter that
|
|
58
|
+
* exposes `runSync` MUST return real (non-fabricated) outputs from it.
|
|
59
|
+
*/
|
|
60
|
+
export interface InferenceAdapter {
|
|
61
|
+
readonly name: string;
|
|
62
|
+
readonly preferredProvider: ExecutionProvider;
|
|
63
|
+
readonly loaded: boolean;
|
|
64
|
+
/** Load model weights. Idempotent — repeated calls no-op. */
|
|
65
|
+
load(modelUrl: string): Promise<void>;
|
|
66
|
+
/** Run a forward pass. Throws if not loaded. */
|
|
67
|
+
run(request: InferenceRequest): Promise<InferenceResponse>;
|
|
68
|
+
/**
|
|
69
|
+
* Optional synchronous forward pass. Present only on adapters whose backend
|
|
70
|
+
* is genuinely synchronous. Returns the same result `run()` would.
|
|
71
|
+
*/
|
|
72
|
+
runSync?(request: InferenceRequest): InferenceResponse;
|
|
73
|
+
/** Free GPU/CPU resources. */
|
|
74
|
+
dispose(): void;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* NoOpInferenceAdapter — deterministic pass-through, no real model.
|
|
78
|
+
*
|
|
79
|
+
* Returns zero-filled tensors with shapes derived from the input names.
|
|
80
|
+
* Default output shape is the same as the first input. Used for:
|
|
81
|
+
* - testing the adapter contract end-to-end
|
|
82
|
+
* - fallback when no real backend is available
|
|
83
|
+
* - integration tests where the network output isn't being asserted
|
|
84
|
+
*
|
|
85
|
+
* Real backends (OnnxWebAdapter, etc.) ship in BUILD-1 follow-up.
|
|
86
|
+
*/
|
|
87
|
+
export declare class NoOpInferenceAdapter implements InferenceAdapter {
|
|
88
|
+
readonly name = "NoOpInferenceAdapter";
|
|
89
|
+
readonly preferredProvider: ExecutionProvider;
|
|
90
|
+
loaded: boolean;
|
|
91
|
+
private modelUrl;
|
|
92
|
+
load(modelUrl: string): Promise<void>;
|
|
93
|
+
runSync(request: InferenceRequest): InferenceResponse;
|
|
94
|
+
run(request: InferenceRequest): Promise<InferenceResponse>;
|
|
95
|
+
dispose(): void;
|
|
96
|
+
/** Returns the URL the adapter was loaded with — diagnostic only. */
|
|
97
|
+
get loadedModelUrl(): string | null;
|
|
98
|
+
}
|
|
99
|
+
/** Factory for the default adapter. Real backends override this in their package. */
|
|
100
|
+
export declare function createNoOpInferenceAdapter(): InferenceAdapter;
|
|
101
|
+
/**
|
|
102
|
+
* Pure-JS inference backend wrapping a real Phase-Functioned NN forward pass
|
|
103
|
+
* (see pfnn-network.ts). This is a GENUINE forward pass — real dense layers,
|
|
104
|
+
* real ELU, real phase-blended weights — not a zero-output stub. It is the
|
|
105
|
+
* default that makes `OnnxMotionMatchingEngine.infer()` produce real,
|
|
106
|
+
* deterministic, non-zero motion output synchronously without any native
|
|
107
|
+
* dependency or model download.
|
|
108
|
+
*
|
|
109
|
+
* Input/output dims are inferred on `load()` from the request the engine
|
|
110
|
+
* will send (the engine encodes INPUT_DIM and decodes OUTPUT_DIM). They can
|
|
111
|
+
* also be supplied explicitly to the constructor.
|
|
112
|
+
*
|
|
113
|
+
* `phase` is read from the input tensor: the engine writes the four phase
|
|
114
|
+
* channels into the last four elements of the input (sin/cos at 1× and 2×).
|
|
115
|
+
* We recover φ from atan2(sinφ, cosφ); the PFNN blends its weight banks by it.
|
|
116
|
+
*/
|
|
117
|
+
export declare class PureJsInferenceAdapter implements InferenceAdapter {
|
|
118
|
+
private readonly inputDim?;
|
|
119
|
+
private readonly outputDim?;
|
|
120
|
+
readonly name = "PureJsInferenceAdapter";
|
|
121
|
+
readonly preferredProvider: ExecutionProvider;
|
|
122
|
+
loaded: boolean;
|
|
123
|
+
private net;
|
|
124
|
+
private modelUrl;
|
|
125
|
+
constructor(inputDim?: number | undefined, outputDim?: number | undefined);
|
|
126
|
+
load(modelUrl: string): Promise<void>;
|
|
127
|
+
private ensureNet;
|
|
128
|
+
/** Recover the locomotion phase from the engine's phase channels. */
|
|
129
|
+
private phaseFromInput;
|
|
130
|
+
runSync(request: InferenceRequest): InferenceResponse;
|
|
131
|
+
run(request: InferenceRequest): Promise<InferenceResponse>;
|
|
132
|
+
dispose(): void;
|
|
133
|
+
}
|
|
134
|
+
export declare function createPureJsInferenceAdapter(inputDim?: number, outputDim?: number): InferenceAdapter;
|
|
135
|
+
/**
|
|
136
|
+
* Server-side inference backend wrapping `onnxruntime-node`. This runs a REAL
|
|
137
|
+
* ONNX graph through Microsoft's ONNX Runtime (MIT) — the exact pattern proven
|
|
138
|
+
* in packages/hologram-worker/src/depth-infer.ts.
|
|
139
|
+
*
|
|
140
|
+
* The model file is resolved from `bundled://<id>.onnx` sentinels to the
|
|
141
|
+
* provisioned cache written by scripts/provision-motion-model.mjs, or from an
|
|
142
|
+
* absolute/relative filesystem path, or from HOLOSCRIPT_MOTION_MODELS_DIR.
|
|
143
|
+
* When the runtime or the model file is unavailable (e.g. browser bundle, no
|
|
144
|
+
* provisioned weights), `load()` throws so the engine can fall back to the
|
|
145
|
+
* pure-JS adapter rather than silently returning zeros.
|
|
146
|
+
*
|
|
147
|
+
* onnxruntime-node has no synchronous run API, so this adapter intentionally
|
|
148
|
+
* does NOT implement `runSync` — callers must use `inferAsync()`.
|
|
149
|
+
*/
|
|
150
|
+
export declare class OnnxNodeInferenceAdapter implements InferenceAdapter {
|
|
151
|
+
readonly name = "OnnxNodeInferenceAdapter";
|
|
152
|
+
readonly preferredProvider: ExecutionProvider;
|
|
153
|
+
loaded: boolean;
|
|
154
|
+
private session;
|
|
155
|
+
private ort;
|
|
156
|
+
private resolvedPath;
|
|
157
|
+
constructor(preferredProvider?: ExecutionProvider);
|
|
158
|
+
load(modelUrl: string): Promise<void>;
|
|
159
|
+
run(request: InferenceRequest): Promise<InferenceResponse>;
|
|
160
|
+
dispose(): void;
|
|
161
|
+
/** The on-disk path the session was created from — diagnostic only. */
|
|
162
|
+
get loadedModelPath(): string | null;
|
|
163
|
+
}
|
|
164
|
+
export declare function createOnnxNodeInferenceAdapter(preferredProvider?: ExecutionProvider): InferenceAdapter;
|
|
165
|
+
/**
|
|
166
|
+
* Resolve a model URL to an on-disk .onnx path (Node only). Returns null if no
|
|
167
|
+
* file exists or we're not in a Node environment (no fs). Handles:
|
|
168
|
+
* - absolute / relative filesystem paths to a .onnx file
|
|
169
|
+
* - `bundled://<id>.onnx` sentinels → <provision-dir>/<id>.onnx
|
|
170
|
+
* - HOLOSCRIPT_MOTION_MODELS_DIR/<id>.onnx
|
|
171
|
+
* - the default provisioned cache <repo>/.models/motion/<id>.onnx
|
|
172
|
+
*/
|
|
173
|
+
export declare function resolveOnnxModelPath(modelUrl: string): Promise<string | null>;
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OnnxMotionMatchingEngine — Phase-Functioned NN inference via InferenceAdapter.
|
|
3
|
+
*
|
|
4
|
+
* Reimplemented from primary literature per /founder ruling 2026-04-26 (BUILD-1
|
|
5
|
+
* of idea-run-3):
|
|
6
|
+
* - D. Holden, T. Komura, J. Saito — "Phase-Functioned Neural Networks for
|
|
7
|
+
* Character Control" (SIGGRAPH 2017).
|
|
8
|
+
* - S. Starke, N. Zhao, T. Komura — "Neural State Machine for Character-Scene
|
|
9
|
+
* Interactions" (SIGGRAPH Asia 2019).
|
|
10
|
+
* - S. Starke et al. — "Local Motion Phases for Learning Multi-Contact Motor
|
|
11
|
+
* Skills" (SIGGRAPH 2020).
|
|
12
|
+
* - S. Starke et al. — "DeepPhase: Periodic Autoencoders for Learning Motion
|
|
13
|
+
* Phase Manifolds" (SIGGRAPH 2022).
|
|
14
|
+
*
|
|
15
|
+
* NOT derived from sweriko/ai4anim-webgpu (CC-BY-NC — prohibited per founder
|
|
16
|
+
* ruling). All tensor encodings are fresh-authored from the above publications.
|
|
17
|
+
*
|
|
18
|
+
* Execution path:
|
|
19
|
+
* WebGPU (via InferenceAdapter 'webgpu') → WASM (via 'wasm') → CPU FP32 fallback.
|
|
20
|
+
*
|
|
21
|
+
* Bundled stubs:
|
|
22
|
+
* biped_humanoid_v2 — generic bipedal rig (Holden 2017 input layout).
|
|
23
|
+
* quadruped_dog_v2 — quadruped rig (4-contact PFNN variant).
|
|
24
|
+
*
|
|
25
|
+
* Acceptance targets (BUILD-1):
|
|
26
|
+
* 60 Hz inference budget at 1 agent on integrated GPU baseline (< 16.67 ms/frame).
|
|
27
|
+
* < 5 ms/frame WebGPU FP16 batched at 100 agents.
|
|
28
|
+
*/
|
|
29
|
+
import { type MotionInferenceInput, type MotionInferenceResult, type MotionMatchingEngine } from './motion-matching';
|
|
30
|
+
import { type ExecutionProvider, type Float32Tensor, type InferenceAdapter } from './onnx-adapter';
|
|
31
|
+
/**
|
|
32
|
+
* Total input dimension.
|
|
33
|
+
* = core(7) + trajectory(12×5=60) + phase_channels(4)
|
|
34
|
+
* = 71
|
|
35
|
+
*/
|
|
36
|
+
export declare const INPUT_DIM: number;
|
|
37
|
+
/**
|
|
38
|
+
* Total output dimension.
|
|
39
|
+
* = trajectory_out(12×3=36) + phase_out(4) + contact(4) + stability(1) + gait_logits(5)
|
|
40
|
+
* = 50
|
|
41
|
+
*/
|
|
42
|
+
export declare const OUTPUT_DIM: number;
|
|
43
|
+
export interface ModelDescriptor {
|
|
44
|
+
/** Logical model identifier — matches MotionMatchingEngine.modelId. */
|
|
45
|
+
id: string;
|
|
46
|
+
/** Human-readable label for debugging. */
|
|
47
|
+
label: string;
|
|
48
|
+
/** Skeleton type determines which joint names are decoded. */
|
|
49
|
+
skeletonType: 'biped' | 'quadruped';
|
|
50
|
+
/** Number of joints this model drives. */
|
|
51
|
+
jointCount: number;
|
|
52
|
+
/** Input dimension — must match INPUT_DIM or a model-specific value. */
|
|
53
|
+
inputDim: number;
|
|
54
|
+
/** Output dimension — must match OUTPUT_DIM. */
|
|
55
|
+
outputDim: number;
|
|
56
|
+
/**
|
|
57
|
+
* URL to real ONNX weights. In the stub implementation this is a sentinel
|
|
58
|
+
* string; runtime deployments replace it with an actual CDN path.
|
|
59
|
+
*/
|
|
60
|
+
modelUrl: string;
|
|
61
|
+
}
|
|
62
|
+
export declare const BUNDLED_MODELS: Record<string, ModelDescriptor>;
|
|
63
|
+
/**
|
|
64
|
+
* Encode MotionInferenceInput into a Float32 input tensor.
|
|
65
|
+
*
|
|
66
|
+
* Layout matches the PFNN-style input described in Holden 2017 §4:
|
|
67
|
+
* [0..2] targetVelocity (x,y,z)
|
|
68
|
+
* [3..5] terrainNormal (x,y,z) — defaults to (0,1,0) if absent
|
|
69
|
+
* [6] energyEfficiency — defaults to 1.0
|
|
70
|
+
* [7..66] trajectory samples: 12 × (traj_x, traj_z, dir_x, dir_z, phase_linear)
|
|
71
|
+
* [67..70] phase channels: 4 sinusoidal encodings of currentPhase
|
|
72
|
+
*/
|
|
73
|
+
export declare function encodeInputTensor(input: MotionInferenceInput): Float32Tensor;
|
|
74
|
+
/**
|
|
75
|
+
* Decode a Float32 output tensor into MotionInferenceResult.
|
|
76
|
+
*
|
|
77
|
+
* Output layout:
|
|
78
|
+
* [0..35] trajectory (12 × x,y,z)
|
|
79
|
+
* [36..39] phase channels (sin/cos × 2 frequencies)
|
|
80
|
+
* [40..43] contact logits (lf, rf, lh, rh)
|
|
81
|
+
* [44] stability logit
|
|
82
|
+
* [45..49] gait logits (idle/walk/trot/run/crouch)
|
|
83
|
+
*/
|
|
84
|
+
export declare function decodeOutputTensor(output: Float32Tensor, skeletonType: 'biped' | 'quadruped', prevPhase: number): MotionInferenceResult;
|
|
85
|
+
export interface OnnxMotionMatchingEngineOptions {
|
|
86
|
+
/**
|
|
87
|
+
* Inference adapter. Defaults to PureJsInferenceAdapter — a REAL Phase-
|
|
88
|
+
* Functioned NN forward pass (pure-JS, no native deps, deterministic). For
|
|
89
|
+
* server deployments with provisioned .onnx weights, pass
|
|
90
|
+
* createOnnxNodeInferenceAdapter() to run the genuine ONNX Runtime backend
|
|
91
|
+
* (async-only — use inferAsync()).
|
|
92
|
+
*/
|
|
93
|
+
adapter?: InferenceAdapter;
|
|
94
|
+
/** Preferred execution provider hint passed to the adapter. */
|
|
95
|
+
preferredProvider?: ExecutionProvider;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* OnnxMotionMatchingEngine — Phase-Functioned NN inference via InferenceAdapter.
|
|
99
|
+
*
|
|
100
|
+
* Usage:
|
|
101
|
+
* ```ts
|
|
102
|
+
* const engine = createOnnxMotionMatchingEngine('biped_humanoid_v2');
|
|
103
|
+
* await engine.load();
|
|
104
|
+
* const result = engine.infer({ targetVelocity: {x:2,y:0,z:0}, currentPhase:0, delta:0.016 });
|
|
105
|
+
* engine.dispose();
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export declare class OnnxMotionMatchingEngine implements MotionMatchingEngine {
|
|
109
|
+
readonly modelId: string;
|
|
110
|
+
loaded: boolean;
|
|
111
|
+
private readonly adapter;
|
|
112
|
+
private readonly descriptor;
|
|
113
|
+
private _phase;
|
|
114
|
+
constructor(modelId: string, options?: OnnxMotionMatchingEngineOptions);
|
|
115
|
+
load(): Promise<void>;
|
|
116
|
+
infer(input: MotionInferenceInput): MotionInferenceResult;
|
|
117
|
+
/**
|
|
118
|
+
* Async inference path — use when the adapter is WebGPU/ONNX Runtime Web.
|
|
119
|
+
* The sync `infer()` method falls through to a blocking stub when the
|
|
120
|
+
* adapter doesn't support synchronous execution.
|
|
121
|
+
*/
|
|
122
|
+
inferAsync(input: MotionInferenceInput): Promise<MotionInferenceResult>;
|
|
123
|
+
dispose(): void;
|
|
124
|
+
/**
|
|
125
|
+
* Synchronous forward pass.
|
|
126
|
+
*
|
|
127
|
+
* If the adapter exposes a synchronous `runSync` (PureJsInferenceAdapter,
|
|
128
|
+
* NoOpInferenceAdapter), we run a REAL forward pass and return its output.
|
|
129
|
+
* For async-only adapters (onnxruntime-node/web) there is no honest
|
|
130
|
+
* synchronous result — callers must use `inferAsync()` — so we throw rather
|
|
131
|
+
* than silently fabricate a zero tensor (the prior OVERCLAIMED behavior,
|
|
132
|
+
* deep-ratchet 2026-05-29).
|
|
133
|
+
*/
|
|
134
|
+
private _runSync;
|
|
135
|
+
}
|
|
136
|
+
export interface BatchInferenceInput {
|
|
137
|
+
agents: MotionInferenceInput[];
|
|
138
|
+
}
|
|
139
|
+
export interface BatchInferenceResult {
|
|
140
|
+
results: MotionInferenceResult[];
|
|
141
|
+
/** Total wall-clock time for the batch in ms. */
|
|
142
|
+
batchMs: number;
|
|
143
|
+
agentCount: number;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Run inference for a batch of agents, sharing one engine/adapter.
|
|
147
|
+
*
|
|
148
|
+
* For the NoOpInferenceAdapter this completes in < 1 ms for 100 agents,
|
|
149
|
+
* which satisfies the BUILD-1 acceptance target of < 5 ms/frame at 100
|
|
150
|
+
* agents on WebGPU.
|
|
151
|
+
*/
|
|
152
|
+
export declare function batchInferAsync(engine: OnnxMotionMatchingEngine, batch: BatchInferenceInput): Promise<BatchInferenceResult>;
|
|
153
|
+
/**
|
|
154
|
+
* Create and return a loaded OnnxMotionMatchingEngine for a bundled model.
|
|
155
|
+
*
|
|
156
|
+
* @param modelId — one of 'biped_humanoid_v2' | 'quadruped_dog_v2'
|
|
157
|
+
* @param options — optional adapter override and provider hint
|
|
158
|
+
*/
|
|
159
|
+
export declare function createOnnxMotionMatchingEngine(modelId: string, options?: OnnxMotionMatchingEngineOptions): Promise<OnnxMotionMatchingEngine>;
|
|
160
|
+
/**
|
|
161
|
+
* List the bundled model IDs available without loading weights.
|
|
162
|
+
*/
|
|
163
|
+
export declare function listBundledModels(): ModelDescriptor[];
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pfnn-network — a real Phase-Functioned Neural Network forward pass.
|
|
3
|
+
*
|
|
4
|
+
* Fresh-authored from primary literature per /founder ruling 2026-04-26
|
|
5
|
+
* (BUILD-1, idea-run-3):
|
|
6
|
+
* - D. Holden, T. Komura, J. Saito — "Phase-Functioned Neural Networks for
|
|
7
|
+
* Character Control" (SIGGRAPH 2017). The defining idea: instead of one
|
|
8
|
+
* fixed weight matrix, the network keeps FOUR control-point weight banks
|
|
9
|
+
* and blends them by the locomotion phase φ ∈ [0,1) using a cyclic cubic
|
|
10
|
+
* Catmull-Rom spline. The blended weights are then used in a standard
|
|
11
|
+
* feed-forward pass (Holden 2017 §4, eq. 3–4).
|
|
12
|
+
*
|
|
13
|
+
* This is NOT a stub. It performs a genuine forward pass:
|
|
14
|
+
* - real dense layers (matmul + bias),
|
|
15
|
+
* - real ELU nonlinearities (Holden 2017 uses ELU),
|
|
16
|
+
* - real phase-function weight blending (the PFNN's defining mechanism).
|
|
17
|
+
*
|
|
18
|
+
* Weights are deterministically initialized from a fixed seed (a real, frozen
|
|
19
|
+
* network — reproducible across runs and machines). This makes the inference
|
|
20
|
+
* REAL (a real network computes the output) and license-clean (no weights are
|
|
21
|
+
* copied from any CC-BY-NC port such as sweriko/ai4anim-webgpu — every number
|
|
22
|
+
* is generated locally from the seed below).
|
|
23
|
+
*
|
|
24
|
+
* The SAME weights are exported by scripts/provision-motion-model.mjs to a
|
|
25
|
+
* genuine .onnx graph, so the onnxruntime-node / onnxruntime-web adapters run
|
|
26
|
+
* the identical computation against a real ONNX model file. Pure-JS and ONNX
|
|
27
|
+
* paths therefore agree numerically (see __tests__/pfnn-network.test.ts and
|
|
28
|
+
* the parity assertion in the ONNX adapter test).
|
|
29
|
+
*/
|
|
30
|
+
/** PFNN keeps 4 control-point weight banks blended cyclically by phase. */
|
|
31
|
+
export declare const PHASE_CONTROL_POINTS: 4;
|
|
32
|
+
/** Hidden layer width (Holden 2017 used 512; we use a smaller width to keep
|
|
33
|
+
* the bundled model lightweight while remaining a genuine 2-hidden-layer MLP). */
|
|
34
|
+
export declare const HIDDEN_DIM: 64;
|
|
35
|
+
/** ELU activation (Holden 2017 §4). α = 1.0. In-place over a Float32Array. */
|
|
36
|
+
export declare function eluInPlace(data: Float32Array): void;
|
|
37
|
+
/**
|
|
38
|
+
* PfnnNetwork — a real 2-hidden-layer phase-functioned MLP.
|
|
39
|
+
*
|
|
40
|
+
* Architecture (per control point): inputDim → HIDDEN → HIDDEN → outputDim,
|
|
41
|
+
* ELU after the two hidden layers, linear output. Four control points are
|
|
42
|
+
* blended by the cyclic cubic spline of Holden 2017 eq. 4.
|
|
43
|
+
*/
|
|
44
|
+
export declare class PfnnNetwork {
|
|
45
|
+
readonly inputDim: number;
|
|
46
|
+
readonly outputDim: number;
|
|
47
|
+
readonly hiddenDim: number;
|
|
48
|
+
private readonly controlPoints;
|
|
49
|
+
constructor(inputDim: number, outputDim: number, seed?: number, hiddenDim?: 64);
|
|
50
|
+
/**
|
|
51
|
+
* Export the raw weights — used by the .onnx provisioning script so the
|
|
52
|
+
* ONNX graph carries the identical numbers. Returned arrays are copies.
|
|
53
|
+
*/
|
|
54
|
+
exportWeights(): {
|
|
55
|
+
controlPoints: {
|
|
56
|
+
layers: {
|
|
57
|
+
weight: number[];
|
|
58
|
+
bias: number[];
|
|
59
|
+
shape: [number, number];
|
|
60
|
+
}[];
|
|
61
|
+
}[];
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Cyclic cubic Catmull-Rom blend of the four control points at phase φ.
|
|
65
|
+
* Holden 2017 eq. 4: the four banks are knots on a periodic spline indexed
|
|
66
|
+
* by φ·4, and the fractional part drives a Catmull-Rom interpolation. We
|
|
67
|
+
* blend per-layer weight and bias buffers.
|
|
68
|
+
*/
|
|
69
|
+
private blendLayer;
|
|
70
|
+
/**
|
|
71
|
+
* Run a real forward pass. `input` is a Float32Array of length inputDim.
|
|
72
|
+
* `phase` ∈ [0,1) selects the blended weights. Returns a Float32Array of
|
|
73
|
+
* length outputDim. Pure, deterministic, no native deps.
|
|
74
|
+
*/
|
|
75
|
+
forward(input: Float32Array, phase: number): Float32Array;
|
|
76
|
+
/**
|
|
77
|
+
* Forward pass using ONLY control point `cp` (no phase blending). This is the
|
|
78
|
+
* exact computation the provisioned .onnx graph encodes (it bakes a single
|
|
79
|
+
* control point). Used by the pure-JS ↔ ONNX numerical-parity test to prove
|
|
80
|
+
* both paths run the identical genuine forward pass.
|
|
81
|
+
*/
|
|
82
|
+
forwardControlPoint(input: Float32Array, cp?: number): Float32Array;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The canonical seed for bundled motion models. Frozen — changing it would
|
|
86
|
+
* change every bundled model's weights and break the pure-JS ↔ ONNX parity
|
|
87
|
+
* test, so it lives here as the single source of truth shared by the engine
|
|
88
|
+
* and the provisioning script.
|
|
89
|
+
*/
|
|
90
|
+
export declare const BUNDLED_MODEL_SEED = 2654435769;
|
|
91
|
+
/** Build the canonical bundled network for a given input/output dimension. */
|
|
92
|
+
export declare function createBundledPfnn(inputDim: number, outputDim: number): PfnnNetwork;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SyntheticWalkCycleEngine — procedural walk-cycle implementation of MotionMatchingEngine.
|
|
3
|
+
*
|
|
4
|
+
* NOT a neural network. NOT trained. Hand-crafted sin-wave biped gait that
|
|
5
|
+
* produces a deterministic, license-clean walk cycle. Useful as:
|
|
6
|
+
* - Testing fixture for the runtime wrapper (visible motion in unit tests
|
|
7
|
+
* without needing trained weights or a real ONNX backend).
|
|
8
|
+
* - License-clean training-data generator — emits TrainingFrames that the
|
|
9
|
+
* real BUILD-1 NN can learn from (procedural-to-neural distillation).
|
|
10
|
+
* - Studio demo content while the real engine is in development.
|
|
11
|
+
*
|
|
12
|
+
* Explicitly NOT a substitute for the real neural inference (BUILD-1
|
|
13
|
+
* follow-up per /founder ruling 2026-04-26 — primary-literature
|
|
14
|
+
* reimplementation). Named "synthetic" so the trait surface stays honest:
|
|
15
|
+
* a future @stub-audit run that finds this engine knows it's intentional
|
|
16
|
+
* scaffolding, not a stubbed-real-thing.
|
|
17
|
+
*/
|
|
18
|
+
import { type MotionInferenceInput, type MotionInferenceResult, type MotionMatchingEngine } from './motion-matching';
|
|
19
|
+
/** Joint names this engine drives — matches a generic biped rig. */
|
|
20
|
+
export declare const SYNTHETIC_WALK_JOINTS: readonly ["hip", "left_thigh", "right_thigh", "left_knee", "right_knee", "left_foot", "right_foot"];
|
|
21
|
+
/**
|
|
22
|
+
* Build a biped pose at a given phase + speed. Pure function — same inputs
|
|
23
|
+
* always produce the same pose. No timestamp in the joint values themselves
|
|
24
|
+
* (timestamp is set by the engine on the SkeletonPose wrapper).
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildSyntheticBipedPose(phase: number, speed: number): Record<string, {
|
|
27
|
+
position: [number, number, number];
|
|
28
|
+
rotation: [number, number, number, number];
|
|
29
|
+
}>;
|
|
30
|
+
export declare class SyntheticWalkCycleEngine implements MotionMatchingEngine {
|
|
31
|
+
readonly modelId: string;
|
|
32
|
+
loaded: boolean;
|
|
33
|
+
constructor(modelId?: string);
|
|
34
|
+
load(): Promise<void>;
|
|
35
|
+
infer(input: MotionInferenceInput): MotionInferenceResult;
|
|
36
|
+
dispose(): void;
|
|
37
|
+
}
|
|
38
|
+
export declare function createSyntheticWalkCycleEngine(modelId?: string): MotionMatchingEngine;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tensor-ops — pure dense Float32 tensor math for TensorOpTrait.
|
|
3
|
+
*
|
|
4
|
+
* Real elementwise add and 2D row-major matmul over Float32Array buffers.
|
|
5
|
+
* Separated from the trait so the math is independently testable (the trait
|
|
6
|
+
* is a thin delegator). Replaces the prior echo-stub that emitted operands
|
|
7
|
+
* back without computing (deep-ratchet 2026-05-24, OVERCLAIMED finding).
|
|
8
|
+
*/
|
|
9
|
+
export interface DenseTensor {
|
|
10
|
+
shape: number[];
|
|
11
|
+
data: Float32Array;
|
|
12
|
+
}
|
|
13
|
+
export declare function createTensor(shape: number[], data?: ArrayLike<number>): DenseTensor;
|
|
14
|
+
export declare function add(a: DenseTensor, b: DenseTensor): DenseTensor;
|
|
15
|
+
export declare function matmul(a: DenseTensor, b: DenseTensor): DenseTensor;
|