@holoscript/core 6.0.4 → 6.1.2
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/README.md +3 -3
- package/bin/holoscript.cjs +3 -0
- package/dist/GLTFPipeline-SFIORFJU.js +16 -0
- package/dist/GLTFPipeline-VNNDPONV.cjs +37 -0
- package/dist/{HoloScriptPlusParser-BN6KVRCM.js → HoloScriptPlusParser-7FBIFUFC.js} +6 -5
- package/dist/{HoloScriptPlusParser-NC5FE6AL.cjs → HoloScriptPlusParser-A2W7OCN2.cjs} +17 -16
- package/dist/HoloScriptPlusParser-F2Z56FJR.js +10 -0
- package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +27 -0
- package/dist/{USDZExporter-UWGWNMMD.cjs → USDZExporter-3FWJ25JI.cjs} +344 -16
- package/dist/{USDZExporter-NTMBNTDB.js → USDZExporter-D2HQLQYK.js} +344 -16
- 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-22W6NGYN.js +725 -0
- package/dist/{chunk-5OEOHAAW.cjs → chunk-27MPVJVZ.cjs} +64 -28
- package/dist/{chunk-RVYPEYPX.js → chunk-2A7FURVO.js} +44 -8
- package/dist/{chunk-XCWFGZAA.js → chunk-2B7WVIDZ.js} +11 -8
- package/dist/{chunk-NDQNIJEH.js → chunk-2BSMSUCE.js} +250 -24
- package/dist/chunk-2HLIGOKU.cjs +5546 -0
- package/dist/{chunk-EONILVMF.js → chunk-2M2DPHKB.js} +4 -4
- package/dist/{chunk-G7CT3EMP.cjs → chunk-2YSNA2F2.cjs} +319 -47
- package/dist/{chunk-IWI6J7FX.js → chunk-33XCOVE3.js} +5 -5
- package/dist/chunk-3FOKASKO.cjs +348 -0
- package/dist/{chunk-DXJQDCFL.js → chunk-4C57PR42.js} +3 -3
- package/dist/{chunk-MPXBVFHQ.js → chunk-4N4SXXWF.js} +4 -3
- package/dist/chunk-4PDEPEQW.cjs +41 -0
- package/dist/chunk-4R6HPSHJ.js +2176 -0
- package/dist/chunk-4R6SBXDB.js +45 -0
- package/dist/chunk-4SY77NA4.cjs +413 -0
- package/dist/{chunk-YCXFCXDS.js → chunk-4UUKPCY4.js} +668 -110
- package/dist/{chunk-LGGRPKTV.cjs → chunk-52ULD552.cjs} +114 -35
- package/dist/{chunk-L4G4RLXX.js → chunk-5CKA5SXU.js} +438 -22
- package/dist/chunk-5FSKKMR7.cjs +2092 -0
- package/dist/{chunk-FF3Q7ADR.js → chunk-5JEU52DW.js} +5 -3
- package/dist/chunk-5N54COB6.cjs +327 -0
- package/dist/chunk-5S7RKFGR.cjs +446 -0
- package/dist/{chunk-KED34ILP.js → chunk-6ASWLXXN.js} +21 -9
- package/dist/chunk-6CTRH7HT.cjs +1985 -0
- package/dist/{chunk-CAUCGUEA.cjs → chunk-6EX3I5P4.cjs} +6 -6
- package/dist/chunk-6FGQNDR4.js +5731 -0
- package/dist/{chunk-72EQECGT.cjs → chunk-6KMK2UXT.cjs} +122 -46
- package/dist/{chunk-G4VZTCIB.js → chunk-6L4VE27M.js} +33 -23
- package/dist/{chunk-ATSKSYVE.cjs → chunk-6S6TKNEA.cjs} +6478 -1738
- package/dist/chunk-77V4GTCA.js +596 -0
- package/dist/{chunk-ZP4D3CSX.cjs → chunk-7AD52FRS.cjs} +16 -16
- package/dist/chunk-A6KINLZJ.js +236 -0
- package/dist/chunk-AIA52I7T.cjs +543 -0
- package/dist/chunk-AIX25INK.cjs +602 -0
- package/dist/{chunk-B5TCIAPQ.cjs → chunk-AO4I2Z7M.cjs} +17 -18
- package/dist/{chunk-Q5SJOGHQ.cjs → chunk-BPICAGBV.cjs} +324 -199
- package/dist/chunk-BRQJKJGT.cjs +20 -0
- package/dist/{chunk-3FXV5S25.cjs → chunk-C37BHB7N.cjs} +6 -3
- package/dist/{chunk-XUTX5CBW.js → chunk-CBJY23VL.js} +3 -3
- package/dist/chunk-CIWWXYHZ.cjs +50 -0
- package/dist/{chunk-XXINBTZK.cjs → chunk-DIL6DDDN.cjs} +101 -45
- package/dist/chunk-DMXC24WV.js +404 -0
- package/dist/{chunk-PMGODDJA.cjs → chunk-DTGBOSEM.cjs} +12 -12
- package/dist/chunk-E7JP3BS3.cjs +61 -0
- package/dist/{chunk-HJJLD366.js → chunk-EKBKLK7P.js} +3 -3
- package/dist/chunk-EKYL4PE3.cjs +404 -0
- package/dist/{chunk-UPJBDCVF.js → chunk-EMMC5CSQ.js} +12 -8
- package/dist/{chunk-GGHSW2NN.js → chunk-EOBB6A4B.js} +6389 -1718
- package/dist/chunk-EOFNVCM6.js +325 -0
- package/dist/{chunk-FHQVYCH2.js → chunk-ER4GATIU.js} +7 -7
- package/dist/{chunk-N5FTS757.cjs → chunk-EXKSFGSX.cjs} +7 -148
- package/dist/{chunk-LK5IAVH6.cjs → chunk-EXUP2BUM.cjs} +27 -27
- package/dist/chunk-FDSGHPAK.js +130 -0
- package/dist/chunk-FEWUHQNM.cjs +144 -0
- package/dist/{chunk-5TOFIR6L.js → chunk-FGGJQRLZ.js} +5 -142
- package/dist/chunk-FHP6LXJS.js +415 -0
- package/dist/{chunk-7LCYLPW2.cjs → chunk-FJPADH77.cjs} +7 -4
- package/dist/{chunk-T36DDXSF.js → chunk-FXKTYFYA.js} +150 -25
- package/dist/chunk-G2LS3RFO.js +623 -0
- package/dist/chunk-GCMWDSBZ.cjs +729 -0
- package/dist/chunk-GJNCFRJU.cjs +125 -0
- package/dist/{chunk-Q4QX3AET.cjs → chunk-GMP623FG.cjs} +16 -13
- package/dist/{chunk-XD6IYDUX.js → chunk-GN3KDX4W.js} +119 -43
- package/dist/{chunk-QLEAOI3Q.cjs → chunk-GQYKQSTC.cjs} +10 -10
- package/dist/chunk-GTU2Z2WW.cjs +262 -0
- package/dist/chunk-GZG4KA4E.js +529 -0
- package/dist/{chunk-BND3ST2K.cjs → chunk-H3MGK7TX.cjs} +42 -32
- package/dist/{chunk-XRKWN5PL.cjs → chunk-H5DZIHJP.cjs} +14 -18
- package/dist/{chunk-Z34RLXRA.cjs → chunk-HANL7K2Q.cjs} +65 -50
- package/dist/{chunk-3SAK5KFL.cjs → chunk-HCCQLAA4.cjs} +2 -11
- package/dist/{chunk-LXJ4667L.cjs → chunk-HGVXZDSK.cjs} +108 -20
- package/dist/{chunk-3FJCK5XA.js → chunk-HRODTEEO.js} +30 -10
- package/dist/{chunk-HQUEA5R6.cjs → chunk-HZCQO4JM.cjs} +6 -6
- package/dist/{chunk-S565K7NK.js → chunk-I2O7TW6B.js} +12 -8
- package/dist/chunk-IHESJZSW.js +4490 -0
- package/dist/{chunk-FSF7EQVA.cjs → chunk-IRWWS72C.cjs} +63 -22
- package/dist/{chunk-5O6TQC6M.cjs → chunk-IVIA7K75.cjs} +689 -127
- package/dist/chunk-IVY74O6C.js +247 -0
- package/dist/chunk-J32ZJZJH.js +554 -0
- package/dist/chunk-J56PTA46.cjs +639 -0
- package/dist/chunk-JD7CIZ33.js +1949 -0
- package/dist/{chunk-T7LEXZUZ.cjs → chunk-JIYN45TV.cjs} +14 -15
- package/dist/{chunk-FFKU7BTK.cjs → chunk-KHPCJRI3.cjs} +24 -21
- package/dist/chunk-KKFZ3B6J.cjs +557 -0
- package/dist/chunk-KPJL34Y7.cjs +186 -0
- package/dist/{chunk-HE7ULERA.cjs → chunk-KQTPCYTG.cjs} +128 -44
- package/dist/{chunk-OFKWH2IP.js → chunk-KX76JUQY.js} +3 -3
- package/dist/{chunk-33LSUQDD.cjs → chunk-L63H3SQ4.cjs} +43 -31
- package/dist/{chunk-K6EKD26I.js → chunk-LAOCQJ2M.js} +64 -8
- package/dist/chunk-LM2VU56C.cjs +37 -0
- package/dist/chunk-M56JSP4A.js +400 -0
- package/dist/chunk-MBOOR7X4.js +18 -0
- package/dist/{chunk-XWPNTWDN.cjs → chunk-MJVIRCUV.cjs} +31 -27
- package/dist/{chunk-SDAMZIRE.js → chunk-MSMIFMBL.js} +135 -18
- package/dist/{chunk-56IF4NTA.js → chunk-MXFUTKCO.js} +18 -18
- package/dist/{chunk-6UEHYZ7V.cjs → chunk-MXJ5SS53.cjs} +447 -31
- package/dist/chunk-MYY4PMWX.cjs +264 -0
- package/dist/chunk-N75IH2HY.js +258 -0
- package/dist/{chunk-GVUR45UF.cjs → chunk-NG77ATEW.cjs} +7 -6
- package/dist/chunk-NW5G5FBQ.js +215 -0
- package/dist/{chunk-E3FWRT3Z.js → chunk-OEFY723R.js} +28 -13
- package/dist/chunk-OEV5RMZO.cjs +3042 -0
- package/dist/{chunk-X4ZF6CNE.cjs → chunk-OIQYIIO3.cjs} +7 -7
- package/dist/{chunk-2CWOLHTE.js → chunk-OL46QLBJ.js} +3 -11
- package/dist/chunk-OPZ7XDDI.js +487 -0
- package/dist/chunk-OSYNRVOV.cjs +243 -0
- package/dist/{chunk-TEWCN33Y.js → chunk-P7YIA5LN.js} +91 -7
- package/dist/chunk-PGANYCAG.cjs +220 -0
- package/dist/{chunk-CS2EMTGF.js → chunk-QAVXL2IH.js} +62 -21
- package/dist/{chunk-T4NKMBDL.js → chunk-QCCBXSCE.js} +1666 -756
- package/dist/{chunk-F4IULT7N.js → chunk-QPOQ7VPI.js} +16 -13
- package/dist/{chunk-6XSERL6L.js → chunk-QTPMJRGS.js} +3108 -2827
- package/dist/{chunk-F3HH56EB.cjs → chunk-QWNQ523V.cjs} +1730 -823
- package/dist/{chunk-R7MA7QWV.js → chunk-R3IVNY6P.js} +102 -23
- package/dist/chunk-R75BSDH7.cjs +50 -0
- package/dist/chunk-RAXUF5DF.cjs +2196 -0
- package/dist/{chunk-BF2235SI.cjs → chunk-RMHC2VG7.cjs} +2876 -2592
- package/dist/chunk-RUXGBKPS.cjs +4517 -0
- package/dist/{chunk-UERJ3YJV.js → chunk-S5IFXW6E.js} +113 -9
- package/dist/{chunk-27LWW5FU.cjs → chunk-S6YWHCKV.cjs} +5 -5
- package/dist/{chunk-WB4Z63GG.js → chunk-SIEXCILW.js} +3 -3
- package/dist/{chunk-CLYEIWA5.cjs → chunk-SLU6UPJI.cjs} +5 -3
- package/dist/{chunk-LZ266PCM.cjs → chunk-T5J7ZKP3.cjs} +446 -60
- package/dist/chunk-TDCNJHWO.js +341 -0
- package/dist/{chunk-IHOUYQIA.js → chunk-TG7O4WBC.js} +5 -5
- package/dist/chunk-THCK6ECW.js +2085 -0
- package/dist/chunk-TJHVSBP2.js +439 -0
- package/dist/chunk-TK74TR4H.js +5541 -0
- package/dist/{chunk-CDPGV4DN.js → chunk-U4NBQJBY.js} +14 -15
- package/dist/{chunk-NOZZ46QU.js → chunk-UD3DSHZM.js} +10 -14
- package/dist/chunk-UDMYRFDZ.js +3038 -0
- package/dist/{chunk-WDW67DZB.cjs → chunk-UOIGFQXC.cjs} +90 -68
- package/dist/{chunk-BU7VWW2K.js → chunk-URG2SJLK.js} +14 -15
- package/dist/{chunk-EQV4R3EV.cjs → chunk-V73NPPTM.cjs} +152 -35
- package/dist/chunk-VECQYRXL.js +474 -0
- package/dist/chunk-VEXPG4WN.js +1989 -0
- package/dist/{chunk-LDP5OK6G.js → chunk-VMLKSV26.js} +5 -5
- package/dist/{chunk-5BGSECRJ.cjs → chunk-VSK7W3O5.cjs} +47 -27
- package/dist/chunk-VVKVQZI6.js +55 -0
- package/dist/{chunk-YQK5JNFK.js → chunk-W55Z7QIX.js} +103 -15
- package/dist/{chunk-KSGXLT74.cjs → chunk-W6P2GBHH.cjs} +3 -3
- package/dist/{chunk-IBDG74G2.cjs → chunk-W6RW64BB.cjs} +7 -7
- package/dist/chunk-WDT3JTGM.cjs +483 -0
- package/dist/{chunk-HPS76H7Q.js → chunk-WKX5AMOY.js} +3 -3
- package/dist/chunk-WNNE3PO3.js +34 -0
- package/dist/{chunk-XG23EUQX.cjs → chunk-WRLUBRKS.cjs} +538 -312
- package/dist/{chunk-IFNQFCTM.js → chunk-WRNEH5MO.js} +79 -8
- package/dist/{chunk-54FHG2MX.js → chunk-WRWEX5ZF.js} +7 -4
- package/dist/{chunk-KCQ5NDYC.cjs → chunk-X3GJPRVK.cjs} +154 -80
- package/dist/{chunk-7AGYRWKW.cjs → chunk-XFXGA5IW.cjs} +126 -22
- package/dist/{chunk-TQSZUOW5.cjs → chunk-XHIV6326.cjs} +4 -4
- package/dist/chunk-XJAN7CZG.cjs +432 -0
- package/dist/chunk-XL6INWKT.js +121 -0
- package/dist/{chunk-E3UALNFA.js → chunk-XMWZG36H.js} +4 -4
- package/dist/{chunk-BKIGPPVM.js → chunk-XSFNHP2E.js} +6 -3
- package/dist/{chunk-H5Z7NASB.js → chunk-XT6JY5W5.js} +25 -3
- package/dist/chunk-XXZJEFKW.cjs +490 -0
- package/dist/chunk-Y3MWXQSB.cjs +5737 -0
- package/dist/chunk-YF2I3MV3.js +46 -0
- package/dist/{chunk-V3NN3HPP.js → chunk-YIMN575O.js} +437 -52
- package/dist/chunk-YIVFJNYV.js +176 -0
- package/dist/{chunk-MD6KDHVE.cjs → chunk-YKGPCZEE.cjs} +10 -10
- package/dist/chunk-YQELFNJV.js +39 -0
- package/dist/chunk-Z5XMPRNC.cjs +5390 -0
- package/dist/{chunk-3FYZOR7S.cjs → chunk-ZDSYWBIE.cjs} +18 -18
- package/dist/{chunk-6TZPZCOJ.cjs → chunk-ZKSS47EV.cjs} +24 -19
- package/dist/chunk-ZUL5AVTX.cjs +1993 -0
- package/dist/chunk-ZXBZVXDW.js +5386 -0
- package/dist/{chunk-DMG7C4H2.js → chunk-ZZ7RO2UQ.js} +312 -44
- package/dist/cli/holoscript-runner.cjs +200 -204
- package/dist/cli/holoscript-runner.js +144 -148
- package/dist/codebase/index.cjs +1 -1
- package/dist/codebase/index.js +1 -1
- package/dist/compiler/agent-inference.cjs +10 -7
- package/dist/compiler/agent-inference.js +6 -3
- package/dist/compiler/android-xr.cjs +12 -7
- package/dist/compiler/android-xr.js +10 -5
- package/dist/compiler/android.cjs +12 -8
- package/dist/compiler/android.js +10 -6
- package/dist/compiler/ar.cjs +9 -6
- package/dist/compiler/ar.js +7 -4
- package/dist/compiler/babylon.cjs +12 -8
- package/dist/compiler/babylon.js +11 -7
- package/dist/compiler/business-quest.cjs +43 -0
- package/dist/compiler/business-quest.js +4 -0
- package/dist/compiler/coco.cjs +1 -1
- package/dist/compiler/coco.js +1 -1
- 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 +155 -152
- package/dist/compiler/domain-block-utils.js +7 -4
- package/dist/compiler/dtdl.cjs +10 -7
- package/dist/compiler/dtdl.js +7 -4
- package/dist/compiler/gltf-pipeline.cjs +9 -9
- package/dist/compiler/gltf-pipeline.js +2 -2
- package/dist/compiler/godot.cjs +9 -6
- package/dist/compiler/godot.js +8 -5
- package/dist/compiler/incremental.cjs +12 -7
- package/dist/compiler/incremental.js +7 -2
- package/dist/compiler/index.cjs +3550 -268
- package/dist/compiler/index.d.ts +404 -21
- package/dist/compiler/index.js +3280 -138
- package/dist/compiler/ios.cjs +11 -8
- package/dist/compiler/ios.js +9 -6
- 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 +14 -10
- package/dist/compiler/multi-layer.js +13 -9
- package/dist/compiler/nodetoy.cjs +5 -5
- package/dist/compiler/nodetoy.js +2 -2
- package/dist/compiler/openxr.cjs +10 -6
- package/dist/compiler/openxr.js +9 -5
- package/dist/compiler/playcanvas.cjs +10 -7
- package/dist/compiler/playcanvas.js +9 -6
- package/dist/compiler/r3f.cjs +17 -13
- package/dist/compiler/r3f.d.ts +22 -0
- package/dist/compiler/r3f.js +12 -8
- 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 +10 -7
- package/dist/compiler/sdf.js +8 -5
- package/dist/compiler/semantic-scene.cjs +1 -1
- package/dist/compiler/semantic-scene.js +1 -1
- package/dist/compiler/state.cjs +9 -5
- package/dist/compiler/state.js +7 -3
- package/dist/compiler/trait-composition.cjs +11 -7
- package/dist/compiler/trait-composition.js +7 -3
- package/dist/compiler/unity.cjs +10 -6
- package/dist/compiler/unity.js +9 -5
- package/dist/compiler/unreal.cjs +11 -7
- package/dist/compiler/unreal.js +9 -5
- package/dist/compiler/urdf.cjs +20 -13
- package/dist/compiler/urdf.js +8 -5
- package/dist/compiler/usd-physics.cjs +10 -7
- package/dist/compiler/usd-physics.js +7 -4
- package/dist/compiler/visionos.cjs +10 -6
- package/dist/compiler/visionos.js +9 -5
- package/dist/compiler/vrchat.cjs +10 -7
- package/dist/compiler/vrchat.js +8 -5
- package/dist/compiler/vrr.cjs +10 -7
- package/dist/compiler/vrr.js +8 -5
- package/dist/compiler/wasm.cjs +13 -10
- package/dist/compiler/wasm.js +8 -5
- package/dist/compiler/webgpu.cjs +9 -6
- package/dist/compiler/webgpu.js +8 -5
- package/dist/constants.d.ts +3 -2
- package/dist/coordinators/index.cjs +1266 -0
- package/dist/coordinators/index.d.ts +260 -0
- package/dist/coordinators/index.js +1259 -0
- package/dist/debugger.cjs +9 -7
- package/dist/debugger.js +7 -5
- package/dist/entries/interop.cjs +23 -21
- package/dist/entries/interop.js +5 -3
- package/dist/entries/scripting.cjs +18 -18
- package/dist/entries/scripting.js +8 -8
- 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 +20332 -18121
- package/dist/index.d.ts +1477 -40
- package/dist/index.js +19451 -17638
- package/dist/math/tropical-spmv.cjs +45 -0
- package/dist/math/tropical-spmv.js +4 -0
- package/dist/math/vec3.cjs +14 -14
- package/dist/math/vec3.js +2 -2
- package/dist/{ml-dsa-PHCWUBPX.cjs → ml-dsa-FSKBTE3W.cjs} +177 -90
- package/dist/{ml-dsa-WYLJHJO6.js → ml-dsa-Z7JDKW4L.js} +158 -71
- package/dist/paper-0c-spike/index.cjs +150 -0
- package/dist/paper-0c-spike/index.d.ts +29 -0
- package/dist/paper-0c-spike/index.js +141 -0
- package/dist/parser.cjs +45 -11
- package/dist/parser.d.ts +11 -0
- package/dist/parser.js +10 -8
- package/dist/{playwright-RL6GY4F7.cjs → playwright-3AT3AKTV.cjs} +1985 -1985
- package/dist/{playwright-5OSAPTNH.js → playwright-VZPDVUEQ.js} +3 -3
- package/dist/reconstruction/index.cjs +153 -0
- package/dist/reconstruction/index.d.ts +105 -0
- package/dist/reconstruction/index.js +8 -0
- package/dist/runtime.cjs +7 -5
- package/dist/runtime.js +6 -4
- package/dist/self-improvement/index.cjs +563 -0
- package/dist/self-improvement/index.js +545 -0
- package/dist/storage/index.cjs +10 -9
- package/dist/storage/index.js +3 -2
- package/dist/testing.cjs +25 -0
- package/dist/testing.d.ts +70 -0
- package/dist/testing.js +4 -0
- package/dist/tools/index.d.ts +22 -1
- package/dist/traitDocs/traitDocs.cjs +33 -0
- package/dist/traitDocs/traitDocs.d.ts +69 -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 +17630 -7881
- package/dist/traits/index.d.ts +197 -0
- package/dist/traits/index.js +16573 -7193
- 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 +6 -5
- package/dist/type-checker.js +4 -3
- 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 +153 -61
- package/dist/GLTFPipeline-DEN36VNK.js +0 -12
- package/dist/GLTFPipeline-YPCAK236.cjs +0 -33
- package/dist/chunk-4XSNJCLC.cjs +0 -1859
- package/dist/chunk-A7PIMZGU.js +0 -263
- package/dist/chunk-BWFJEM5A.js +0 -5419
- package/dist/chunk-CBJSLA2E.cjs +0 -5423
- package/dist/chunk-K3JDKWGI.cjs +0 -270
- package/dist/chunk-LSW7P7ML.js +0 -3675
- package/dist/chunk-MEASWI2Y.js +0 -126
- package/dist/chunk-NCUKG4SK.cjs +0 -3075
- package/dist/chunk-Q5JT3YML.cjs +0 -129
- package/dist/chunk-QGKNANZ3.js +0 -3071
- package/dist/chunk-S2N5TNMA.js +0 -1855
- package/dist/chunk-TSH3MSQU.cjs +0 -129
- package/dist/chunk-WGMEAYBG.js +0 -126
- package/dist/chunk-X6SEAXAX.cjs +0 -3681
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/traits/engines/motion-matching.ts
|
|
4
|
+
var TRAJECTORY_HORIZON_FRAMES = 12;
|
|
5
|
+
var TRAJECTORY_FRAME_DT = 1 / 30;
|
|
6
|
+
function magnitude(v) {
|
|
7
|
+
return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
|
|
8
|
+
}
|
|
9
|
+
function classifyGait(speed, energyEfficiency) {
|
|
10
|
+
const efficiencyPenalty = energyEfficiency > 1 ? 0.85 : 1;
|
|
11
|
+
const adjusted = speed * efficiencyPenalty;
|
|
12
|
+
if (adjusted < 0.05) return "idle";
|
|
13
|
+
if (adjusted < 1.4) return "walk";
|
|
14
|
+
if (adjusted < 3) return "trot";
|
|
15
|
+
return "run";
|
|
16
|
+
}
|
|
17
|
+
function projectLinearTrajectory(velocity) {
|
|
18
|
+
const trajectory = [];
|
|
19
|
+
for (let i = 1; i <= TRAJECTORY_HORIZON_FRAMES; i++) {
|
|
20
|
+
const t = i * TRAJECTORY_FRAME_DT;
|
|
21
|
+
trajectory.push([velocity.x * t, velocity.y * t, velocity.z * t]);
|
|
22
|
+
}
|
|
23
|
+
return trajectory;
|
|
24
|
+
}
|
|
25
|
+
var NullMotionMatchingEngine = class {
|
|
26
|
+
constructor(modelId) {
|
|
27
|
+
this.loaded = false;
|
|
28
|
+
this.modelId = modelId;
|
|
29
|
+
}
|
|
30
|
+
async load() {
|
|
31
|
+
this.loaded = true;
|
|
32
|
+
}
|
|
33
|
+
infer(input) {
|
|
34
|
+
const speed = magnitude(input.targetVelocity);
|
|
35
|
+
const energyEfficiency = input.energyEfficiency ?? 1;
|
|
36
|
+
const phaseAdvance = (speed * 0.3 + 0.5) * input.delta;
|
|
37
|
+
const phase = (input.currentPhase + phaseAdvance) % 1;
|
|
38
|
+
const leftFootContact = phase < 0.5;
|
|
39
|
+
const rightFootContact = phase >= 0.5;
|
|
40
|
+
return {
|
|
41
|
+
pose: { joints: {}, timestamp: Date.now() },
|
|
42
|
+
phase,
|
|
43
|
+
trajectory: projectLinearTrajectory(input.targetVelocity),
|
|
44
|
+
stability: 1,
|
|
45
|
+
contactFeatures: { leftFoot: leftFootContact, rightFoot: rightFootContact },
|
|
46
|
+
gait: classifyGait(speed, energyEfficiency),
|
|
47
|
+
kineticEnergyProxy: speed * speed * energyEfficiency
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
dispose() {
|
|
51
|
+
this.loaded = false;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
function createNullMotionMatchingEngine(modelId) {
|
|
55
|
+
return new NullMotionMatchingEngine(modelId);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// src/traits/engines/synthetic-walk-cycle.ts
|
|
59
|
+
var STRIDE_AMPLITUDE_RAD = 0.6;
|
|
60
|
+
var KNEE_FLEXION_AMPLITUDE_RAD = 0.5;
|
|
61
|
+
var HIP_BOB_AMPLITUDE = 0.04;
|
|
62
|
+
var SYNTHETIC_WALK_JOINTS = [
|
|
63
|
+
"hip",
|
|
64
|
+
"left_thigh",
|
|
65
|
+
"right_thigh",
|
|
66
|
+
"left_knee",
|
|
67
|
+
"right_knee",
|
|
68
|
+
"left_foot",
|
|
69
|
+
"right_foot"
|
|
70
|
+
];
|
|
71
|
+
function buildSyntheticBipedPose(phase, speed) {
|
|
72
|
+
const leftSwing = Math.sin(phase * 2 * Math.PI);
|
|
73
|
+
const rightSwing = Math.sin((phase + 0.5) * 2 * Math.PI);
|
|
74
|
+
const speedScale = Math.min(speed, 6) / 6;
|
|
75
|
+
const hipY = 1 + Math.cos(phase * 4 * Math.PI) * HIP_BOB_AMPLITUDE * speedScale;
|
|
76
|
+
const hipYawRad = leftSwing * 0.05 * speedScale;
|
|
77
|
+
const hipQuat = [0, Math.sin(hipYawRad / 2), 0, Math.cos(hipYawRad / 2)];
|
|
78
|
+
const leftThighPitchRad = leftSwing * STRIDE_AMPLITUDE_RAD * speedScale;
|
|
79
|
+
const rightThighPitchRad = rightSwing * STRIDE_AMPLITUDE_RAD * speedScale;
|
|
80
|
+
const leftThighQuat = [Math.sin(leftThighPitchRad / 2), 0, 0, Math.cos(leftThighPitchRad / 2)];
|
|
81
|
+
const rightThighQuat = [Math.sin(rightThighPitchRad / 2), 0, 0, Math.cos(rightThighPitchRad / 2)];
|
|
82
|
+
const leftKneeRad = Math.max(0, leftSwing) * KNEE_FLEXION_AMPLITUDE_RAD * speedScale;
|
|
83
|
+
const rightKneeRad = Math.max(0, rightSwing) * KNEE_FLEXION_AMPLITUDE_RAD * speedScale;
|
|
84
|
+
const leftKneeQuat = [Math.sin(leftKneeRad / 2), 0, 0, Math.cos(leftKneeRad / 2)];
|
|
85
|
+
const rightKneeQuat = [Math.sin(rightKneeRad / 2), 0, 0, Math.cos(rightKneeRad / 2)];
|
|
86
|
+
const leftFootRad = -leftThighPitchRad * 0.5;
|
|
87
|
+
const rightFootRad = -rightThighPitchRad * 0.5;
|
|
88
|
+
const leftFootQuat = [Math.sin(leftFootRad / 2), 0, 0, Math.cos(leftFootRad / 2)];
|
|
89
|
+
const rightFootQuat = [Math.sin(rightFootRad / 2), 0, 0, Math.cos(rightFootRad / 2)];
|
|
90
|
+
return {
|
|
91
|
+
hip: { position: [0, hipY, 0], rotation: hipQuat },
|
|
92
|
+
left_thigh: { position: [0.1, hipY - 0.4, 0], rotation: leftThighQuat },
|
|
93
|
+
right_thigh: { position: [-0.1, hipY - 0.4, 0], rotation: rightThighQuat },
|
|
94
|
+
left_knee: { position: [0.1, hipY - 0.8, 0], rotation: leftKneeQuat },
|
|
95
|
+
right_knee: { position: [-0.1, hipY - 0.8, 0], rotation: rightKneeQuat },
|
|
96
|
+
left_foot: { position: [0.1, hipY - 1, 0], rotation: leftFootQuat },
|
|
97
|
+
right_foot: { position: [-0.1, hipY - 1, 0], rotation: rightFootQuat }
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
var SyntheticWalkCycleEngine = class {
|
|
101
|
+
constructor(modelId = "synthetic_biped_walk") {
|
|
102
|
+
this.loaded = false;
|
|
103
|
+
this.modelId = modelId;
|
|
104
|
+
}
|
|
105
|
+
async load() {
|
|
106
|
+
this.loaded = true;
|
|
107
|
+
}
|
|
108
|
+
infer(input) {
|
|
109
|
+
const speed = magnitude(input.targetVelocity);
|
|
110
|
+
const energyEfficiency = input.energyEfficiency ?? 1;
|
|
111
|
+
const phaseAdvance = Math.max(speed, 0.1) * 0.5 * input.delta;
|
|
112
|
+
const phase = (input.currentPhase + phaseAdvance) % 1;
|
|
113
|
+
const joints = buildSyntheticBipedPose(phase, speed);
|
|
114
|
+
const pose = { joints, timestamp: Date.now() };
|
|
115
|
+
const leftFoot = speed < 0.05 || phase < 0.5;
|
|
116
|
+
const rightFoot = speed < 0.05 || phase >= 0.5;
|
|
117
|
+
const contactFeatures = { leftFoot, rightFoot };
|
|
118
|
+
return {
|
|
119
|
+
pose,
|
|
120
|
+
phase,
|
|
121
|
+
trajectory: projectLinearTrajectory(input.targetVelocity),
|
|
122
|
+
stability: speed > 5 ? Math.max(0.1, 1 - (speed - 5) * 0.2) : 1,
|
|
123
|
+
contactFeatures,
|
|
124
|
+
gait: classifyGait(speed, energyEfficiency),
|
|
125
|
+
kineticEnergyProxy: speed * speed * energyEfficiency
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
dispose() {
|
|
129
|
+
this.loaded = false;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
function createSyntheticWalkCycleEngine(modelId) {
|
|
133
|
+
return new SyntheticWalkCycleEngine(modelId);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// src/traits/engines/motion-data-schema.ts
|
|
137
|
+
var MOTION_DATA_SCHEMA_VERSION = 1;
|
|
138
|
+
function validateTrainingFrame(frame) {
|
|
139
|
+
if (typeof frame.frameIndex !== "number" || frame.frameIndex < 0) {
|
|
140
|
+
throw new Error(`TrainingFrame: frameIndex must be a non-negative number, got ${frame.frameIndex}`);
|
|
141
|
+
}
|
|
142
|
+
if (typeof frame.phase !== "number" || frame.phase < 0 || frame.phase >= 1) {
|
|
143
|
+
throw new Error(`TrainingFrame: phase must be in [0, 1), got ${frame.phase}`);
|
|
144
|
+
}
|
|
145
|
+
if (!frame.pose || typeof frame.pose !== "object" || !frame.pose.joints) {
|
|
146
|
+
throw new Error("TrainingFrame: pose.joints required");
|
|
147
|
+
}
|
|
148
|
+
if (!frame.contactFeatures || typeof frame.contactFeatures !== "object") {
|
|
149
|
+
throw new Error("TrainingFrame: contactFeatures required");
|
|
150
|
+
}
|
|
151
|
+
const validGaits = ["idle", "walk", "trot", "run", "crouch"];
|
|
152
|
+
if (!validGaits.includes(frame.gait)) {
|
|
153
|
+
throw new Error(`TrainingFrame: gait must be one of ${validGaits.join(", ")}, got ${frame.gait}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function validateMotionCapture(capture) {
|
|
157
|
+
if (capture.schemaVersion !== MOTION_DATA_SCHEMA_VERSION) {
|
|
158
|
+
throw new Error(
|
|
159
|
+
`MotionCapture: schemaVersion ${capture.schemaVersion} unsupported (current=${MOTION_DATA_SCHEMA_VERSION})`
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
if (!capture.captureId || typeof capture.captureId !== "string") {
|
|
163
|
+
throw new Error("MotionCapture: captureId required");
|
|
164
|
+
}
|
|
165
|
+
if (!capture.skeletonId || typeof capture.skeletonId !== "string") {
|
|
166
|
+
throw new Error("MotionCapture: skeletonId required");
|
|
167
|
+
}
|
|
168
|
+
if (capture.fps <= 0 || capture.fps > 240) {
|
|
169
|
+
throw new Error(`MotionCapture: fps must be in (0, 240], got ${capture.fps}`);
|
|
170
|
+
}
|
|
171
|
+
if (!capture.license || !capture.license.spdx) {
|
|
172
|
+
throw new Error(
|
|
173
|
+
"MotionCapture: license.spdx required \u2014 every training capture must declare a commercial-use-compatible license (refuses CC BY-NC, GPL viral, proprietary without explicit grant)"
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
const blockedSpdx = ["CC-BY-NC-4.0", "CC-BY-NC-SA-4.0", "CC-BY-NC-ND-4.0", "GPL-3.0", "AGPL-3.0"];
|
|
177
|
+
if (blockedSpdx.includes(capture.license.spdx)) {
|
|
178
|
+
throw new Error(
|
|
179
|
+
`MotionCapture: license ${capture.license.spdx} is incompatible with @holoscript/core commercial distribution. Permitted: MIT, Apache-2.0, BSD-3-Clause, CC-BY-4.0 (with attribution), proprietary-with-grant.`
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
if (!Array.isArray(capture.frames) || capture.frames.length === 0) {
|
|
183
|
+
throw new Error("MotionCapture: frames must be a non-empty array");
|
|
184
|
+
}
|
|
185
|
+
for (const frame of capture.frames) validateTrainingFrame(frame);
|
|
186
|
+
}
|
|
187
|
+
function validateTrainingCorpus(corpus) {
|
|
188
|
+
if (corpus.schemaVersion !== MOTION_DATA_SCHEMA_VERSION) {
|
|
189
|
+
throw new Error(`TrainingCorpus: schemaVersion ${corpus.schemaVersion} unsupported`);
|
|
190
|
+
}
|
|
191
|
+
if (!corpus.corpusId) throw new Error("TrainingCorpus: corpusId required");
|
|
192
|
+
if (!corpus.skeletonId) throw new Error("TrainingCorpus: skeletonId required");
|
|
193
|
+
if (!corpus.splits) throw new Error("TrainingCorpus: splits required");
|
|
194
|
+
const captureIds = new Set(corpus.captures.map((c) => c.captureId));
|
|
195
|
+
const splitIds = [...corpus.splits.train, ...corpus.splits.val, ...corpus.splits.test];
|
|
196
|
+
for (const id of splitIds) {
|
|
197
|
+
if (!captureIds.has(id)) {
|
|
198
|
+
throw new Error(`TrainingCorpus: split references unknown captureId ${id}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const seenInSplit = /* @__PURE__ */ new Set();
|
|
202
|
+
for (const id of splitIds) {
|
|
203
|
+
if (seenInSplit.has(id)) {
|
|
204
|
+
throw new Error(`TrainingCorpus: captureId ${id} appears in multiple splits \u2014 data leakage`);
|
|
205
|
+
}
|
|
206
|
+
seenInSplit.add(id);
|
|
207
|
+
}
|
|
208
|
+
for (const cap of corpus.captures) {
|
|
209
|
+
if (cap.skeletonId !== corpus.skeletonId) {
|
|
210
|
+
throw new Error(
|
|
211
|
+
`TrainingCorpus: capture ${cap.captureId} skeleton ${cap.skeletonId} differs from corpus skeleton ${corpus.skeletonId}`
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
validateMotionCapture(cap);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
function inferenceFrameToTensor(frame, sortedJointNames) {
|
|
218
|
+
const headerLen = 8;
|
|
219
|
+
const jointLen = sortedJointNames.length * 7;
|
|
220
|
+
const out = new Float32Array(headerLen + jointLen);
|
|
221
|
+
out[0] = frame.phase;
|
|
222
|
+
out[1] = frame.rootVelocity.x;
|
|
223
|
+
out[2] = frame.rootVelocity.y;
|
|
224
|
+
out[3] = frame.rootVelocity.z;
|
|
225
|
+
out[4] = frame.rootAngularVelocity;
|
|
226
|
+
const terrain = frame.terrainNormal ?? { x: 0, y: 1, z: 0 };
|
|
227
|
+
out[5] = terrain.x;
|
|
228
|
+
out[6] = terrain.y;
|
|
229
|
+
out[7] = terrain.z;
|
|
230
|
+
for (let i = 0; i < sortedJointNames.length; i++) {
|
|
231
|
+
const jointName = sortedJointNames[i];
|
|
232
|
+
const joint = frame.pose.joints[jointName];
|
|
233
|
+
const base = headerLen + i * 7;
|
|
234
|
+
if (joint) {
|
|
235
|
+
out[base + 0] = joint.position[0];
|
|
236
|
+
out[base + 1] = joint.position[1];
|
|
237
|
+
out[base + 2] = joint.position[2];
|
|
238
|
+
out[base + 3] = joint.rotation[0];
|
|
239
|
+
out[base + 4] = joint.rotation[1];
|
|
240
|
+
out[base + 5] = joint.rotation[2];
|
|
241
|
+
out[base + 6] = joint.rotation[3];
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return out;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
exports.MOTION_DATA_SCHEMA_VERSION = MOTION_DATA_SCHEMA_VERSION;
|
|
248
|
+
exports.NullMotionMatchingEngine = NullMotionMatchingEngine;
|
|
249
|
+
exports.SYNTHETIC_WALK_JOINTS = SYNTHETIC_WALK_JOINTS;
|
|
250
|
+
exports.SyntheticWalkCycleEngine = SyntheticWalkCycleEngine;
|
|
251
|
+
exports.TRAJECTORY_FRAME_DT = TRAJECTORY_FRAME_DT;
|
|
252
|
+
exports.TRAJECTORY_HORIZON_FRAMES = TRAJECTORY_HORIZON_FRAMES;
|
|
253
|
+
exports.buildSyntheticBipedPose = buildSyntheticBipedPose;
|
|
254
|
+
exports.classifyGait = classifyGait;
|
|
255
|
+
exports.createNullMotionMatchingEngine = createNullMotionMatchingEngine;
|
|
256
|
+
exports.createSyntheticWalkCycleEngine = createSyntheticWalkCycleEngine;
|
|
257
|
+
exports.inferenceFrameToTensor = inferenceFrameToTensor;
|
|
258
|
+
exports.magnitude = magnitude;
|
|
259
|
+
exports.projectLinearTrajectory = projectLinearTrajectory;
|
|
260
|
+
exports.validateMotionCapture = validateMotionCapture;
|
|
261
|
+
exports.validateTrainingCorpus = validateTrainingCorpus;
|
|
262
|
+
exports.validateTrainingFrame = validateTrainingFrame;
|
|
263
|
+
//# sourceMappingURL=chunk-MYY4PMWX.cjs.map
|
|
264
|
+
//# sourceMappingURL=chunk-MYY4PMWX.cjs.map
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { __esm } from './chunk-OL46QLBJ.js';
|
|
2
|
+
|
|
3
|
+
// src/compiler/identity/AgentRiskRegistry.ts
|
|
4
|
+
function getAgentRiskRegistry(config) {
|
|
5
|
+
if (!globalRegistry) {
|
|
6
|
+
globalRegistry = new AgentRiskRegistry(config);
|
|
7
|
+
}
|
|
8
|
+
return globalRegistry;
|
|
9
|
+
}
|
|
10
|
+
function isDangerousOperation(operation) {
|
|
11
|
+
return DANGEROUS_OPERATIONS.includes(operation);
|
|
12
|
+
}
|
|
13
|
+
var DEFAULT_THRESHOLDS, AgentRiskRegistry, globalRegistry, DANGEROUS_OPERATIONS, TIER_COMPOSITION_RISK_CAP;
|
|
14
|
+
var init_AgentRiskRegistry = __esm({
|
|
15
|
+
"src/compiler/identity/AgentRiskRegistry.ts"() {
|
|
16
|
+
DEFAULT_THRESHOLDS = {
|
|
17
|
+
medium: 15,
|
|
18
|
+
high: 40,
|
|
19
|
+
quarantined: 75
|
|
20
|
+
};
|
|
21
|
+
AgentRiskRegistry = class {
|
|
22
|
+
constructor(config = {}) {
|
|
23
|
+
/** agentId -> ring of recent events (oldest first). */
|
|
24
|
+
this.events = /* @__PURE__ */ new Map();
|
|
25
|
+
/** Lifetime counters (not decayed). */
|
|
26
|
+
this.lifetimeEvents = /* @__PURE__ */ new Map();
|
|
27
|
+
this.lifetimeSuccesses = /* @__PURE__ */ new Map();
|
|
28
|
+
this.halfLifeMs = config.halfLifeMs ?? 60 * 60 * 1e3;
|
|
29
|
+
this.tierThresholds = {
|
|
30
|
+
medium: config.tierThresholds?.medium ?? DEFAULT_THRESHOLDS.medium,
|
|
31
|
+
high: config.tierThresholds?.high ?? DEFAULT_THRESHOLDS.high,
|
|
32
|
+
quarantined: config.tierThresholds?.quarantined ?? DEFAULT_THRESHOLDS.quarantined
|
|
33
|
+
};
|
|
34
|
+
this.successCreditPerOp = config.successCreditPerOp ?? 5;
|
|
35
|
+
this.maxEventsPerAgent = config.maxEventsPerAgent ?? 256;
|
|
36
|
+
this.now = config.now ?? (() => Date.now());
|
|
37
|
+
if (this.tierThresholds.medium >= this.tierThresholds.high) {
|
|
38
|
+
throw new Error("AgentRiskRegistry: tierThresholds.medium must be < high");
|
|
39
|
+
}
|
|
40
|
+
if (this.tierThresholds.high >= this.tierThresholds.quarantined) {
|
|
41
|
+
throw new Error("AgentRiskRegistry: tierThresholds.high must be < quarantined");
|
|
42
|
+
}
|
|
43
|
+
if (this.halfLifeMs <= 0) {
|
|
44
|
+
throw new Error("AgentRiskRegistry: halfLifeMs must be > 0");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Record a confabulation event from a `ConfabulationValidationResult`.
|
|
49
|
+
*
|
|
50
|
+
* Severity is taken from the result's `riskScore`. If the result is `valid`
|
|
51
|
+
* (no errors) this records a *success*, not a confabulation event — clean
|
|
52
|
+
* passes lower the agent's running score.
|
|
53
|
+
*/
|
|
54
|
+
recordValidation(agentId, result) {
|
|
55
|
+
if (result.valid && result.errors.length === 0) {
|
|
56
|
+
this.recordSuccess(agentId);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const severity = Math.max(1, Math.min(100, Math.round(result.riskScore)));
|
|
60
|
+
const reason = this.summarizeErrors(result.errors);
|
|
61
|
+
this.recordEvent({
|
|
62
|
+
agentId,
|
|
63
|
+
severity,
|
|
64
|
+
reason,
|
|
65
|
+
timestamp: this.now()
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Record a custom risk event (e.g. from a downstream consumer that detected
|
|
70
|
+
* confabulation outside the standard validator path).
|
|
71
|
+
*/
|
|
72
|
+
recordEvent(event) {
|
|
73
|
+
const ring = this.events.get(event.agentId) ?? [];
|
|
74
|
+
ring.push(event);
|
|
75
|
+
if (ring.length > this.maxEventsPerAgent) {
|
|
76
|
+
ring.shift();
|
|
77
|
+
}
|
|
78
|
+
this.events.set(event.agentId, ring);
|
|
79
|
+
this.lifetimeEvents.set(
|
|
80
|
+
event.agentId,
|
|
81
|
+
(this.lifetimeEvents.get(event.agentId) ?? 0) + 1
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Record a successful (clean) operation. Reduces the agent's accrued score
|
|
86
|
+
* by `successCreditPerOp` (post-decay, floored at 0).
|
|
87
|
+
*
|
|
88
|
+
* Implemented as a synthetic *negative* event so that decay still applies:
|
|
89
|
+
* we push a sentinel with negative severity. `getScore` clamps to >=0.
|
|
90
|
+
*/
|
|
91
|
+
recordSuccess(agentId) {
|
|
92
|
+
if (this.successCreditPerOp <= 0) {
|
|
93
|
+
this.lifetimeSuccesses.set(
|
|
94
|
+
agentId,
|
|
95
|
+
(this.lifetimeSuccesses.get(agentId) ?? 0) + 1
|
|
96
|
+
);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const ring = this.events.get(agentId) ?? [];
|
|
100
|
+
ring.push({
|
|
101
|
+
agentId,
|
|
102
|
+
severity: -this.successCreditPerOp,
|
|
103
|
+
reason: "clean-validation",
|
|
104
|
+
timestamp: this.now()
|
|
105
|
+
});
|
|
106
|
+
if (ring.length > this.maxEventsPerAgent) {
|
|
107
|
+
ring.shift();
|
|
108
|
+
}
|
|
109
|
+
this.events.set(agentId, ring);
|
|
110
|
+
this.lifetimeSuccesses.set(
|
|
111
|
+
agentId,
|
|
112
|
+
(this.lifetimeSuccesses.get(agentId) ?? 0) + 1
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Compute the current decayed risk score for an agent (0-100).
|
|
117
|
+
*
|
|
118
|
+
* Each event contributes `severity * 0.5 ^ (age / halfLifeMs)`. Negative
|
|
119
|
+
* (success) events reduce the running total. Final score is clamped to
|
|
120
|
+
* [0, 100].
|
|
121
|
+
*/
|
|
122
|
+
getScore(agentId) {
|
|
123
|
+
const ring = this.events.get(agentId);
|
|
124
|
+
if (!ring || ring.length === 0) return 0;
|
|
125
|
+
const now = this.now();
|
|
126
|
+
let score = 0;
|
|
127
|
+
for (const ev of ring) {
|
|
128
|
+
const ageMs = Math.max(0, now - ev.timestamp);
|
|
129
|
+
const decay = Math.pow(0.5, ageMs / this.halfLifeMs);
|
|
130
|
+
score += ev.severity * decay;
|
|
131
|
+
}
|
|
132
|
+
return Math.max(0, Math.min(100, score));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Classify an agent into a `RiskTier`. Pure function of `getScore`.
|
|
136
|
+
*/
|
|
137
|
+
getTier(agentId) {
|
|
138
|
+
const score = this.getScore(agentId);
|
|
139
|
+
if (score >= this.tierThresholds.quarantined) return "quarantined" /* QUARANTINED */;
|
|
140
|
+
if (score >= this.tierThresholds.high) return "high" /* HIGH */;
|
|
141
|
+
if (score >= this.tierThresholds.medium) return "medium" /* MEDIUM */;
|
|
142
|
+
return "low" /* LOW */;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Snapshot of an agent's current state (for diagnostics / dashboards).
|
|
146
|
+
*/
|
|
147
|
+
getSnapshot(agentId) {
|
|
148
|
+
const ring = this.events.get(agentId) ?? [];
|
|
149
|
+
const positiveEvents = ring.filter((e) => e.severity > 0);
|
|
150
|
+
const lastPositive = positiveEvents[positiveEvents.length - 1];
|
|
151
|
+
return {
|
|
152
|
+
agentId,
|
|
153
|
+
score: this.getScore(agentId),
|
|
154
|
+
tier: this.getTier(agentId),
|
|
155
|
+
recentEventCount: positiveEvents.length,
|
|
156
|
+
lifetimeEventCount: this.lifetimeEvents.get(agentId) ?? 0,
|
|
157
|
+
lifetimeSuccessCount: this.lifetimeSuccesses.get(agentId) ?? 0,
|
|
158
|
+
lastEventAt: lastPositive ? lastPositive.timestamp : null
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Force-set an agent's tier by clearing history and inserting a calibration
|
|
163
|
+
* event. Used by orchestrators to quarantine a known-bad agent or to
|
|
164
|
+
* reinstate a rehabilitated one.
|
|
165
|
+
*
|
|
166
|
+
* Note: this is an *administrative* operation, not a normal flow. The
|
|
167
|
+
* caller is responsible for authorization.
|
|
168
|
+
*
|
|
169
|
+
* The inserted event is severity = midpoint of the requested tier band
|
|
170
|
+
* so that small amounts of decay between `setTier` and the next read
|
|
171
|
+
* don't bump the agent into a lower tier.
|
|
172
|
+
*/
|
|
173
|
+
setTier(agentId, tier) {
|
|
174
|
+
this.events.delete(agentId);
|
|
175
|
+
if (tier === "low" /* LOW */) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
let severity;
|
|
179
|
+
switch (tier) {
|
|
180
|
+
case "medium" /* MEDIUM */:
|
|
181
|
+
severity = (this.tierThresholds.medium + this.tierThresholds.high) / 2;
|
|
182
|
+
break;
|
|
183
|
+
case "high" /* HIGH */:
|
|
184
|
+
severity = (this.tierThresholds.high + this.tierThresholds.quarantined) / 2;
|
|
185
|
+
break;
|
|
186
|
+
case "quarantined" /* QUARANTINED */:
|
|
187
|
+
severity = Math.min(100, this.tierThresholds.quarantined + 10);
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
this.recordEvent({
|
|
191
|
+
agentId,
|
|
192
|
+
severity,
|
|
193
|
+
reason: `administrative:set-tier:${tier}`,
|
|
194
|
+
timestamp: this.now()
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Clear all history for an agent. Resets to LOW tier.
|
|
199
|
+
*/
|
|
200
|
+
clear(agentId) {
|
|
201
|
+
this.events.delete(agentId);
|
|
202
|
+
this.lifetimeEvents.delete(agentId);
|
|
203
|
+
this.lifetimeSuccesses.delete(agentId);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Clear all state in the registry. Useful for tests.
|
|
207
|
+
*/
|
|
208
|
+
clearAll() {
|
|
209
|
+
this.events.clear();
|
|
210
|
+
this.lifetimeEvents.clear();
|
|
211
|
+
this.lifetimeSuccesses.clear();
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* List all agents currently tracked (have at least one event).
|
|
215
|
+
*/
|
|
216
|
+
listAgents() {
|
|
217
|
+
return Array.from(this.events.keys());
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Configured tier thresholds (read-only view).
|
|
221
|
+
*/
|
|
222
|
+
getThresholds() {
|
|
223
|
+
return { ...this.tierThresholds };
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Configured half-life in ms (read-only).
|
|
227
|
+
*/
|
|
228
|
+
getHalfLifeMs() {
|
|
229
|
+
return this.halfLifeMs;
|
|
230
|
+
}
|
|
231
|
+
// ---------------------------------------------------------------------------
|
|
232
|
+
// PRIVATE HELPERS
|
|
233
|
+
// ---------------------------------------------------------------------------
|
|
234
|
+
summarizeErrors(errors) {
|
|
235
|
+
if (errors.length === 0) return "no-errors";
|
|
236
|
+
if (errors.length === 1) return errors[0].code;
|
|
237
|
+
return `${errors[0].code}+${errors.length - 1}-more`;
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
globalRegistry = null;
|
|
241
|
+
DANGEROUS_OPERATIONS = [
|
|
242
|
+
"write",
|
|
243
|
+
"transform",
|
|
244
|
+
"execute"
|
|
245
|
+
];
|
|
246
|
+
TIER_COMPOSITION_RISK_CAP = {
|
|
247
|
+
["low" /* LOW */]: 50,
|
|
248
|
+
["medium" /* MEDIUM */]: 25,
|
|
249
|
+
["high" /* HIGH */]: 10,
|
|
250
|
+
["quarantined" /* QUARANTINED */]: -1
|
|
251
|
+
// sentinel: any composition denied
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
export { TIER_COMPOSITION_RISK_CAP, getAgentRiskRegistry, init_AgentRiskRegistry, isDangerousOperation };
|
|
257
|
+
//# sourceMappingURL=chunk-N75IH2HY.js.map
|
|
258
|
+
//# sourceMappingURL=chunk-N75IH2HY.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkWRLUBRKS_cjs = require('./chunk-WRLUBRKS.cjs');
|
|
4
4
|
|
|
5
5
|
// src/constants.ts
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
chunkWRLUBRKS_cjs.init_constants();
|
|
7
|
+
chunkWRLUBRKS_cjs.init_constants();
|
|
8
8
|
var STRUCTURAL_DIRECTIVES = [
|
|
9
9
|
// Asset & Manifest
|
|
10
10
|
"manifest",
|
|
@@ -262,6 +262,7 @@ var LIFECYCLE_HOOKS = [
|
|
|
262
262
|
var VALID_KEYWORDS = [
|
|
263
263
|
"composition",
|
|
264
264
|
"object",
|
|
265
|
+
"instanced_object",
|
|
265
266
|
"group",
|
|
266
267
|
"template",
|
|
267
268
|
"state",
|
|
@@ -303,7 +304,7 @@ var VALID_GEOMETRIES = [
|
|
|
303
304
|
"sparkles",
|
|
304
305
|
"particles"
|
|
305
306
|
];
|
|
306
|
-
var VALID_TRAITS = [...
|
|
307
|
+
var VALID_TRAITS = [...chunkWRLUBRKS_cjs.VR_TRAITS];
|
|
307
308
|
var COMMON_PROPERTIES = [
|
|
308
309
|
"position",
|
|
309
310
|
"rotation",
|
|
@@ -773,5 +774,5 @@ exports.LIFECYCLE_HOOKS = LIFECYCLE_HOOKS;
|
|
|
773
774
|
exports.STRUCTURAL_DIRECTIVES = STRUCTURAL_DIRECTIVES;
|
|
774
775
|
exports.enrichErrorWithSuggestions = enrichErrorWithSuggestions;
|
|
775
776
|
exports.generateQuickFixes = generateQuickFixes;
|
|
776
|
-
//# sourceMappingURL=chunk-
|
|
777
|
-
//# sourceMappingURL=chunk-
|
|
777
|
+
//# sourceMappingURL=chunk-NG77ATEW.cjs.map
|
|
778
|
+
//# sourceMappingURL=chunk-NG77ATEW.cjs.map
|