@adaas/a-frame 0.0.23 → 0.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/.conf/tsconfig.browser.json +7 -1
- package/.conf/tsconfig.node.json +7 -1
- package/dist/browser/A-FrameBrowserStorageBlobs.context-CZTTvpn2.d.mts +53 -0
- package/dist/browser/A-FrameBrowserStorageBlobs.context-CaGTyatz.d.mts +40 -0
- package/dist/browser/A-FrameBrowserStorageBlobs.context-DjeEH8cn.d.mts +53 -0
- package/dist/browser/A-FrameBrowserStorageBlobs.context-vCsuTea9.d.mts +40 -0
- package/dist/browser/A-FrameBundle.types-LzfgdMiQ.d.mts +71 -0
- package/dist/browser/A-FrameChannel.component-4mTNctXL.d.mts +704 -0
- package/dist/browser/A-FrameChannel.types-BXEKJK9t.d.mts +205 -0
- package/dist/browser/A-FrameChannel.types-Ba3wgUZj.d.mts +199 -0
- package/dist/browser/A-FrameChannel.types-BfINhQZe.d.mts +145 -0
- package/dist/browser/A-FrameChannel.types-DfacgYL1.d.mts +199 -0
- package/dist/browser/A-FrameCompletion.entity-Dzy9sIa8.d.mts +72 -0
- package/dist/browser/A-FrameDefinition.entity-C1aK-gdl.d.mts +370 -0
- package/dist/browser/A-FrameDefinition.entity-CKPXsarS.d.mts +358 -0
- package/dist/browser/A-FrameDefinition.entity-yA0GsBoe.d.mts +143 -0
- package/dist/browser/A-FrameDefinition.types-BT02yAhQ.d.mts +232 -0
- package/dist/browser/A-FrameDynamicContentOperation.context-CoViNb19.d.mts +297 -0
- package/dist/browser/A-FrameDynamicContentOperation.context-Dd7Lb7X2.d.mts +266 -0
- package/dist/browser/A-FrameDynamicPatch.entity-BRuF1tqs.d.mts +29 -0
- package/dist/browser/A-FrameDynamicStructure.entity-DMvI_EPT.d.mts +210 -0
- package/dist/browser/A-FrameDynamicStructure.entity-DxkPP9mR.d.mts +235 -0
- package/dist/browser/A-FrameEnv.types-DnK-CYVk.d.mts +21 -0
- package/dist/browser/A-FrameNamespace.entity-BDg1FUgo.d.mts +136 -0
- package/dist/browser/A-FrameSchema.entity-DjYIhsoj.d.mts +141 -0
- package/dist/browser/A-FrameSegment.entity-D1xjjWvG.d.mts +161 -0
- package/dist/browser/A-FrameSegment.entity-D7Aj39Wh.d.mts +146 -0
- package/dist/browser/bundle.d.mts +6 -2
- package/dist/browser/bundle.mjs +1 -1
- package/dist/browser/bundle.mjs.map +1 -1
- package/dist/browser/channel.d.mts +51 -74
- package/dist/browser/channel.mjs +1 -2
- package/dist/browser/channel.mjs.map +1 -1
- package/dist/browser/chunk-2RNFZSBL.mjs +2 -0
- package/dist/browser/chunk-2RNFZSBL.mjs.map +1 -0
- package/dist/browser/chunk-46LRNZRG.mjs +2 -0
- package/dist/browser/chunk-46LRNZRG.mjs.map +1 -0
- package/dist/browser/chunk-52HFO3OY.mjs +2 -0
- package/dist/browser/chunk-52HFO3OY.mjs.map +1 -0
- package/dist/browser/chunk-643KGQKR.mjs +3 -0
- package/dist/browser/chunk-643KGQKR.mjs.map +1 -0
- package/dist/browser/chunk-66BBIZAM.mjs +3 -0
- package/dist/browser/chunk-66BBIZAM.mjs.map +1 -0
- package/dist/browser/chunk-6NPQURSO.mjs +2 -0
- package/dist/browser/chunk-6NPQURSO.mjs.map +1 -0
- package/dist/browser/chunk-6WAOMX7M.mjs +2 -0
- package/dist/browser/chunk-6WAOMX7M.mjs.map +1 -0
- package/dist/browser/chunk-77HU5SRQ.mjs +2 -0
- package/dist/browser/chunk-77HU5SRQ.mjs.map +1 -0
- package/dist/browser/chunk-AET6XULU.mjs +2 -0
- package/dist/browser/chunk-AET6XULU.mjs.map +1 -0
- package/dist/browser/chunk-BIBPE2GT.mjs +3 -0
- package/dist/browser/chunk-BIBPE2GT.mjs.map +1 -0
- package/dist/browser/chunk-CDJKU4DK.mjs +2 -0
- package/dist/browser/chunk-CDJKU4DK.mjs.map +1 -0
- package/dist/browser/chunk-CT67Y46H.mjs +3 -0
- package/dist/browser/chunk-CT67Y46H.mjs.map +1 -0
- package/dist/browser/chunk-EFC7OUNO.mjs +2 -0
- package/dist/browser/chunk-EFC7OUNO.mjs.map +1 -0
- package/dist/browser/chunk-EJIX7H7A.mjs +2 -0
- package/dist/browser/chunk-EJIX7H7A.mjs.map +1 -0
- package/dist/browser/chunk-FHJ5ATND.mjs +3 -0
- package/dist/browser/chunk-FHJ5ATND.mjs.map +1 -0
- package/dist/browser/chunk-FVH2EEVP.mjs +3 -0
- package/dist/browser/chunk-FVH2EEVP.mjs.map +1 -0
- package/dist/browser/chunk-G6ULYKSU.mjs +2 -0
- package/dist/browser/chunk-G6ULYKSU.mjs.map +1 -0
- package/dist/browser/chunk-G7MKGKG5.mjs +2 -0
- package/dist/browser/chunk-G7MKGKG5.mjs.map +1 -0
- package/dist/browser/chunk-GOADBDTE.mjs +2 -0
- package/dist/browser/chunk-GOADBDTE.mjs.map +1 -0
- package/dist/browser/chunk-GOMJPGVB.mjs +3 -0
- package/dist/browser/chunk-GOMJPGVB.mjs.map +1 -0
- package/dist/browser/chunk-INQV5UZA.mjs +2 -0
- package/dist/browser/chunk-INQV5UZA.mjs.map +1 -0
- package/dist/browser/chunk-INXPVBTZ.mjs +2 -0
- package/dist/browser/chunk-INXPVBTZ.mjs.map +1 -0
- package/dist/browser/chunk-KFMVTZ7T.mjs +2 -0
- package/dist/browser/chunk-KFMVTZ7T.mjs.map +1 -0
- package/dist/browser/chunk-LK6C7C3S.mjs +2 -0
- package/dist/browser/chunk-LK6C7C3S.mjs.map +1 -0
- package/dist/browser/chunk-LOGRQOWP.mjs +3 -0
- package/dist/browser/chunk-LOGRQOWP.mjs.map +1 -0
- package/dist/browser/chunk-LZACYSUC.mjs +3 -0
- package/dist/browser/chunk-LZACYSUC.mjs.map +1 -0
- package/dist/browser/chunk-NTOIVRX3.mjs +2 -0
- package/dist/browser/chunk-NTOIVRX3.mjs.map +1 -0
- package/dist/browser/chunk-OES2N3X7.mjs +3 -0
- package/dist/browser/chunk-OES2N3X7.mjs.map +1 -0
- package/dist/browser/chunk-OFKV5GNB.mjs +1 -1
- package/dist/browser/chunk-OFKV5GNB.mjs.map +1 -1
- package/dist/browser/chunk-OVLM5A32.mjs +3 -0
- package/dist/browser/chunk-OVLM5A32.mjs.map +1 -0
- package/dist/browser/chunk-QATIN7CO.mjs +1 -1
- package/dist/browser/chunk-QATIN7CO.mjs.map +1 -1
- package/dist/browser/chunk-QOL7CAUZ.mjs +2 -0
- package/dist/browser/chunk-QOL7CAUZ.mjs.map +1 -0
- package/dist/browser/chunk-RCB3PX4V.mjs +2 -0
- package/dist/browser/chunk-RCB3PX4V.mjs.map +1 -0
- package/dist/browser/chunk-RWQSCROK.mjs +3 -0
- package/dist/browser/chunk-RWQSCROK.mjs.map +1 -0
- package/dist/browser/chunk-TIAUMK2X.mjs +2 -0
- package/dist/browser/chunk-TIAUMK2X.mjs.map +1 -0
- package/dist/browser/chunk-TQPC5MYM.mjs +3 -0
- package/dist/browser/chunk-TQPC5MYM.mjs.map +1 -0
- package/dist/browser/chunk-UNIKTCXL.mjs +3 -0
- package/dist/browser/chunk-UNIKTCXL.mjs.map +1 -0
- package/dist/browser/chunk-UULJJ5C5.mjs +3 -0
- package/dist/browser/chunk-UULJJ5C5.mjs.map +1 -0
- package/dist/browser/chunk-VSSANMPF.mjs +2 -0
- package/dist/browser/chunk-VSSANMPF.mjs.map +1 -0
- package/dist/browser/chunk-VW2BZYNY.mjs +2 -0
- package/dist/browser/chunk-VW2BZYNY.mjs.map +1 -0
- package/dist/browser/chunk-WAXBOWM6.mjs +3 -0
- package/dist/browser/chunk-WAXBOWM6.mjs.map +1 -0
- package/dist/browser/chunk-WXCQCHAX.mjs +2 -0
- package/dist/browser/chunk-WXCQCHAX.mjs.map +1 -0
- package/dist/browser/chunk-XKKBIIZG.mjs +3 -0
- package/dist/browser/chunk-XKKBIIZG.mjs.map +1 -0
- package/dist/browser/chunk-XR7FVA5M.mjs +3 -0
- package/dist/browser/chunk-XR7FVA5M.mjs.map +1 -0
- package/dist/browser/chunk-YQJFTBGV.mjs +3 -0
- package/dist/browser/chunk-YQJFTBGV.mjs.map +1 -0
- package/dist/browser/chunk-YTAMZDWC.mjs +3 -0
- package/dist/browser/chunk-YTAMZDWC.mjs.map +1 -0
- package/dist/browser/chunk-ZEONOTRL.mjs +2 -0
- package/dist/browser/chunk-ZEONOTRL.mjs.map +1 -0
- package/dist/browser/completion.d.mts +10 -0
- package/dist/browser/completion.mjs +2 -0
- package/dist/browser/completion.mjs.map +1 -0
- package/dist/browser/core.d.mts +8 -7
- package/dist/browser/core.mjs +1 -1
- package/dist/browser/core.mjs.map +1 -1
- package/dist/browser/credentials.d.mts +74 -0
- package/dist/browser/credentials.mjs +2 -0
- package/dist/browser/credentials.mjs.map +1 -0
- package/dist/browser/definition.d.mts +3 -2
- package/dist/browser/definition.mjs +1 -1
- package/dist/browser/dynamic-content.d.mts +13 -0
- package/dist/browser/dynamic-content.mjs +2 -0
- package/dist/browser/dynamic-content.mjs.map +1 -0
- package/dist/browser/dynamic-feature.d.mts +66 -6
- package/dist/browser/dynamic-feature.mjs +3 -1
- package/dist/browser/dynamic-feature.mjs.map +1 -1
- package/dist/browser/dynamic-structure.d.mts +77 -3
- package/dist/browser/dynamic-structure.mjs +1 -1
- package/dist/browser/dynamic-structure.mjs.map +1 -1
- package/dist/browser/env.d.mts +16 -2
- package/dist/browser/env.mjs +1 -1
- package/dist/browser/frame-index.d.mts +70 -9
- package/dist/browser/frame-index.mjs +1 -1
- package/dist/browser/models.d.mts +64 -0
- package/dist/browser/models.mjs +2 -0
- package/dist/browser/models.mjs.map +1 -0
- package/dist/browser/namespace.d.mts +1 -1
- package/dist/browser/namespace.mjs +1 -1
- package/dist/browser/schema.d.mts +10 -0
- package/dist/browser/schema.mjs +2 -0
- package/dist/browser/schema.mjs.map +1 -0
- package/dist/browser/segment.d.mts +13 -0
- package/dist/browser/segment.mjs +2 -0
- package/dist/browser/segment.mjs.map +1 -0
- package/dist/browser/storage.d.mts +13 -7
- package/dist/browser/storage.mjs +1 -1
- package/dist/browser/vector.d.mts +7 -0
- package/dist/browser/vector.mjs +1 -1
- package/dist/cli.cjs +5593 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/node/A-FrameChannel.component--YErPxf4.d.mts +97 -0
- package/dist/node/A-FrameChannel.component-BjgqMh1B.d.ts +97 -0
- package/dist/node/A-FrameChannel.component-C0O3TaRD.d.ts +679 -0
- package/dist/node/A-FrameChannel.component-CgBZYBz0.d.mts +379 -0
- package/dist/node/A-FrameChannel.component-CkZserv3.d.ts +97 -0
- package/dist/node/A-FrameChannel.component-DMA-3sUB.d.mts +679 -0
- package/dist/node/A-FrameChannel.component-DYV8omYR.d.ts +379 -0
- package/dist/node/A-FrameChannel.component-DwgYNfFn.d.mts +97 -0
- package/dist/node/A-FrameChannel.types-B3_xWKEO.d.mts +151 -0
- package/dist/node/A-FrameChannel.types-BGcVXTqa.d.ts +205 -0
- package/dist/node/A-FrameChannel.types-Boi8QqDK.d.mts +205 -0
- package/dist/node/A-FrameChannel.types-BsE6bNky.d.mts +205 -0
- package/dist/node/A-FrameChannel.types-C-gxXl8m.d.ts +151 -0
- package/dist/node/A-FrameChannel.types-DD2B11rf.d.ts +205 -0
- package/dist/node/A-FrameChannel.types-DYMgRiCF.d.mts +205 -0
- package/dist/node/A-FrameChannel.types-DwyZRsOy.d.ts +205 -0
- package/dist/node/A-FrameCompletion.entity-Brx11JMp.d.ts +72 -0
- package/dist/node/A-FrameCompletion.entity-Dzy9sIa8.d.mts +72 -0
- package/dist/node/A-FrameDefinition.entity-BIF0sclD.d.ts +370 -0
- package/dist/node/A-FrameDefinition.entity-Bt9ua6cn.d.ts +358 -0
- package/dist/node/A-FrameDefinition.entity-C0kzaGJ0.d.ts +143 -0
- package/dist/node/A-FrameDefinition.entity-C1aK-gdl.d.mts +370 -0
- package/dist/node/A-FrameDefinition.entity-CKPXsarS.d.mts +358 -0
- package/dist/node/A-FrameDefinition.entity-yA0GsBoe.d.mts +143 -0
- package/dist/node/A-FrameDefinition.types-BA_pLGpo.d.ts +232 -0
- package/dist/node/A-FrameDefinition.types-BT02yAhQ.d.mts +232 -0
- package/dist/node/A-FrameDynamicContentOperation.context-C_aH1gEn.d.ts +297 -0
- package/dist/node/A-FrameDynamicContentOperation.context-CoViNb19.d.mts +297 -0
- package/dist/node/A-FrameDynamicContentOperation.context-DRqH2c3o.d.ts +266 -0
- package/dist/node/A-FrameDynamicContentOperation.context-Dd7Lb7X2.d.mts +266 -0
- package/dist/node/A-FrameDynamicPatch.entity-BRuF1tqs.d.mts +29 -0
- package/dist/node/A-FrameDynamicPatch.entity-BRuF1tqs.d.ts +29 -0
- package/dist/node/A-FrameDynamicStructure.entity-BVCbolMd.d.ts +210 -0
- package/dist/node/A-FrameDynamicStructure.entity-DMvI_EPT.d.mts +210 -0
- package/dist/node/A-FrameDynamicStructure.entity-DxkPP9mR.d.mts +235 -0
- package/dist/node/A-FrameDynamicStructure.entity-DxkPP9mR.d.ts +235 -0
- package/dist/node/A-FrameLogger.component.env-node-DIDBeuiz.d.mts +114 -0
- package/dist/node/A-FrameLogger.component.env-node-DIDBeuiz.d.ts +114 -0
- package/dist/node/A-FrameNamespace.entity-BDg1FUgo.d.mts +136 -0
- package/dist/node/A-FrameNamespace.entity-HDXcLGcS.d.ts +136 -0
- package/dist/node/A-FrameSchema.entity-DjYIhsoj.d.mts +141 -0
- package/dist/node/A-FrameSchema.entity-DjYIhsoj.d.ts +141 -0
- package/dist/node/A-FrameSegment.entity-C0izuOmC.d.ts +161 -0
- package/dist/node/A-FrameSegment.entity-CMCgFCWU.d.ts +146 -0
- package/dist/node/A-FrameSegment.entity-D1xjjWvG.d.mts +161 -0
- package/dist/node/A-FrameSegment.entity-D7Aj39Wh.d.mts +146 -0
- package/dist/node/A-FrameStorage.component-BnNKzvpY.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-CDztogHV.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-CW0YgKDI.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-D4UEkIBx.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-DV_jwK6r.d.ts +107 -0
- package/dist/node/A-FrameStorage.component-Di4EvbtC.d.ts +107 -0
- package/dist/node/A-FrameStorage.component-emIH1a1M.d.ts +107 -0
- package/dist/node/A-FrameStorage.component-y-JPiIQ4.d.ts +107 -0
- package/dist/node/bundle.cjs +66 -21
- package/dist/node/bundle.cjs.map +1 -1
- package/dist/node/bundle.d.mts +88 -24
- package/dist/node/bundle.d.ts +88 -24
- package/dist/node/bundle.mjs +65 -20
- package/dist/node/bundle.mjs.map +1 -1
- package/dist/node/channel.cjs +33 -26
- package/dist/node/channel.d.mts +10 -6
- package/dist/node/channel.d.ts +10 -6
- package/dist/node/channel.mjs +13 -6
- package/dist/node/chunk-2HUSP34L.mjs +55 -0
- package/dist/node/chunk-2HUSP34L.mjs.map +1 -0
- package/dist/node/chunk-2KXGI2E5.cjs +474 -0
- package/dist/node/chunk-2KXGI2E5.cjs.map +1 -0
- package/dist/node/chunk-2OQMOIR5.mjs +170 -0
- package/dist/node/chunk-2OQMOIR5.mjs.map +1 -0
- package/dist/node/chunk-2UI7RJ4Q.mjs +207 -0
- package/dist/node/chunk-2UI7RJ4Q.mjs.map +1 -0
- package/dist/node/chunk-3SLICJ3L.cjs +265 -0
- package/dist/node/chunk-3SLICJ3L.cjs.map +1 -0
- package/dist/node/chunk-3ZDHQOIU.cjs +92 -0
- package/dist/node/chunk-3ZDHQOIU.cjs.map +1 -0
- package/dist/node/chunk-5BKCX2RO.mjs +33 -0
- package/dist/node/chunk-5BKCX2RO.mjs.map +1 -0
- package/dist/node/chunk-5NCGXLP2.mjs +6 -0
- package/dist/node/chunk-5NCGXLP2.mjs.map +1 -0
- package/dist/node/chunk-5OTXZ7BB.mjs +53 -0
- package/dist/node/chunk-5OTXZ7BB.mjs.map +1 -0
- package/dist/node/chunk-5PYIATGT.mjs +469 -0
- package/dist/node/chunk-5PYIATGT.mjs.map +1 -0
- package/dist/node/chunk-64QCZG53.cjs +57 -0
- package/dist/node/chunk-64QCZG53.cjs.map +1 -0
- package/dist/node/chunk-652OEICJ.cjs +4 -0
- package/dist/node/chunk-652OEICJ.cjs.map +1 -0
- package/dist/node/chunk-674ZX6XJ.mjs +187 -0
- package/dist/node/chunk-674ZX6XJ.mjs.map +1 -0
- package/dist/node/chunk-6ID2IXYX.mjs +6 -0
- package/dist/node/chunk-6ID2IXYX.mjs.map +1 -0
- package/dist/node/chunk-6KAGWGTE.mjs +529 -0
- package/dist/node/chunk-6KAGWGTE.mjs.map +1 -0
- package/dist/node/chunk-7EM3Q7HA.mjs +655 -0
- package/dist/node/chunk-7EM3Q7HA.mjs.map +1 -0
- package/dist/node/chunk-7MVVMISA.cjs +293 -0
- package/dist/node/chunk-7MVVMISA.cjs.map +1 -0
- package/dist/node/chunk-7NSLGCAZ.mjs +1395 -0
- package/dist/node/chunk-7NSLGCAZ.mjs.map +1 -0
- package/dist/node/chunk-7OLLATCC.mjs +1289 -0
- package/dist/node/chunk-7OLLATCC.mjs.map +1 -0
- package/dist/node/chunk-7SEZMRLI.cjs +183 -0
- package/dist/node/chunk-7SEZMRLI.cjs.map +1 -0
- package/dist/node/chunk-A4CVDMSV.mjs +608 -0
- package/dist/node/chunk-A4CVDMSV.mjs.map +1 -0
- package/dist/node/chunk-A7CJIUYY.cjs +4 -0
- package/dist/node/chunk-A7CJIUYY.cjs.map +1 -0
- package/dist/node/chunk-ALFFUJ2J.mjs +163 -0
- package/dist/node/chunk-ALFFUJ2J.mjs.map +1 -0
- package/dist/node/chunk-AMMQ76RJ.mjs +179 -0
- package/dist/node/chunk-AMMQ76RJ.mjs.map +1 -0
- package/dist/node/chunk-AUKWKGVA.cjs +688 -0
- package/dist/node/chunk-AUKWKGVA.cjs.map +1 -0
- package/dist/node/chunk-AY6UMDWD.cjs +270 -0
- package/dist/node/chunk-AY6UMDWD.cjs.map +1 -0
- package/dist/node/chunk-B7ZDJXD3.cjs +1 -1
- package/dist/node/chunk-B7ZDJXD3.cjs.map +1 -1
- package/dist/node/chunk-BBYOL3LM.cjs +1308 -0
- package/dist/node/chunk-BBYOL3LM.cjs.map +1 -0
- package/dist/node/chunk-BINGAHFW.cjs +1308 -0
- package/dist/node/chunk-BINGAHFW.cjs.map +1 -0
- package/dist/node/chunk-BSBY37MG.cjs +55 -0
- package/dist/node/chunk-BSBY37MG.cjs.map +1 -0
- package/dist/node/chunk-BWX7HFTH.cjs +209 -0
- package/dist/node/chunk-BWX7HFTH.cjs.map +1 -0
- package/dist/node/chunk-C37B34MH.cjs +188 -0
- package/dist/node/chunk-C37B34MH.cjs.map +1 -0
- package/dist/node/chunk-C6BBKHQG.cjs +250 -0
- package/dist/node/chunk-C6BBKHQG.cjs.map +1 -0
- package/dist/node/chunk-CLCAS67N.cjs +8 -0
- package/dist/node/chunk-CLCAS67N.cjs.map +1 -0
- package/dist/node/chunk-CNU3CRTR.mjs +43 -0
- package/dist/node/chunk-CNU3CRTR.mjs.map +1 -0
- package/dist/node/chunk-CV5FPKU6.mjs +6 -0
- package/dist/node/chunk-CV5FPKU6.mjs.map +1 -0
- package/dist/node/chunk-CZYOAFIR.mjs +129 -0
- package/dist/node/chunk-CZYOAFIR.mjs.map +1 -0
- package/dist/node/chunk-D2HTYEJZ.cjs +209 -0
- package/dist/node/chunk-D2HTYEJZ.cjs.map +1 -0
- package/dist/node/chunk-EMLZZPOT.cjs +1446 -0
- package/dist/node/chunk-EMLZZPOT.cjs.map +1 -0
- package/dist/node/chunk-EOIXXXBV.cjs +55 -0
- package/dist/node/chunk-EOIXXXBV.cjs.map +1 -0
- package/dist/node/chunk-F46TSY2K.cjs +541 -0
- package/dist/node/chunk-F46TSY2K.cjs.map +1 -0
- package/dist/node/chunk-F4UCOZW5.mjs +1 -1
- package/dist/node/chunk-F4UCOZW5.mjs.map +1 -1
- package/dist/node/chunk-F64CK4NI.mjs +53 -0
- package/dist/node/chunk-F64CK4NI.mjs.map +1 -0
- package/dist/node/chunk-FAV62EUG.cjs +35 -0
- package/dist/node/chunk-FAV62EUG.cjs.map +1 -0
- package/dist/node/chunk-GHSPKZUN.mjs +529 -0
- package/dist/node/chunk-GHSPKZUN.mjs.map +1 -0
- package/dist/node/chunk-GRNVK7DW.mjs +97 -0
- package/dist/node/chunk-GRNVK7DW.mjs.map +1 -0
- package/dist/node/chunk-GRR6NNWY.cjs +688 -0
- package/dist/node/chunk-GRR6NNWY.cjs.map +1 -0
- package/dist/node/chunk-H5VGRPD5.cjs +8 -0
- package/dist/node/chunk-H5VGRPD5.cjs.map +1 -0
- package/dist/node/chunk-HAMDDCPS.cjs +8 -0
- package/dist/node/chunk-HAMDDCPS.cjs.map +1 -0
- package/dist/node/chunk-HAORARSB.cjs +75 -0
- package/dist/node/chunk-HAORARSB.cjs.map +1 -0
- package/dist/node/chunk-HELNAM5Y.cjs +8 -0
- package/dist/node/chunk-HELNAM5Y.cjs.map +1 -0
- package/dist/node/chunk-HET6L5PD.mjs +530 -0
- package/dist/node/chunk-HET6L5PD.mjs.map +1 -0
- package/dist/node/chunk-HI5SEX53.mjs +264 -0
- package/dist/node/chunk-HI5SEX53.mjs.map +1 -0
- package/dist/node/chunk-HZGFXE4Q.mjs +6 -0
- package/dist/node/chunk-HZGFXE4Q.mjs.map +1 -0
- package/dist/node/chunk-IAL2NK2V.mjs +73 -0
- package/dist/node/chunk-IAL2NK2V.mjs.map +1 -0
- package/dist/node/chunk-IHELFDCW.mjs +327 -0
- package/dist/node/chunk-IHELFDCW.mjs.map +1 -0
- package/dist/node/chunk-ILD6OSYW.mjs +966 -0
- package/dist/node/chunk-ILD6OSYW.mjs.map +1 -0
- package/dist/node/chunk-IP6DFAO7.mjs +264 -0
- package/dist/node/chunk-IP6DFAO7.mjs.map +1 -0
- package/dist/node/chunk-IYEDO7OQ.cjs +276 -0
- package/dist/node/chunk-IYEDO7OQ.cjs.map +1 -0
- package/dist/node/chunk-JFPGFPQD.mjs +1413 -0
- package/dist/node/chunk-JFPGFPQD.mjs.map +1 -0
- package/dist/node/chunk-JHZGTVYF.cjs +999 -0
- package/dist/node/chunk-JHZGTVYF.cjs.map +1 -0
- package/dist/node/chunk-JN3UJBUH.mjs +608 -0
- package/dist/node/chunk-JN3UJBUH.mjs.map +1 -0
- package/dist/node/chunk-JNPDXCCN.mjs +530 -0
- package/dist/node/chunk-JNPDXCCN.mjs.map +1 -0
- package/dist/node/chunk-JQBYDEMW.mjs +1 -1
- package/dist/node/chunk-JQBYDEMW.mjs.map +1 -1
- package/dist/node/chunk-JQJ7N4NL.cjs +267 -0
- package/dist/node/chunk-JQJ7N4NL.cjs.map +1 -0
- package/dist/node/chunk-K4AJBPPY.cjs +174 -0
- package/dist/node/chunk-K4AJBPPY.cjs.map +1 -0
- package/dist/node/chunk-K7SXPJPK.cjs +131 -0
- package/dist/node/chunk-K7SXPJPK.cjs.map +1 -0
- package/dist/node/chunk-KFW4GE7H.mjs +1289 -0
- package/dist/node/chunk-KFW4GE7H.mjs.map +1 -0
- package/dist/node/chunk-KKL2DF2D.cjs +518 -0
- package/dist/node/chunk-KKL2DF2D.cjs.map +1 -0
- package/dist/node/chunk-KKMKQGTR.cjs +620 -0
- package/dist/node/chunk-KKMKQGTR.cjs.map +1 -0
- package/dist/node/chunk-KNTO7FCZ.mjs +207 -0
- package/dist/node/chunk-KNTO7FCZ.mjs.map +1 -0
- package/dist/node/chunk-KTKVW3PH.mjs +286 -0
- package/dist/node/chunk-KTKVW3PH.mjs.map +1 -0
- package/dist/node/chunk-KZPSF32W.mjs +33 -0
- package/dist/node/chunk-KZPSF32W.mjs.map +1 -0
- package/dist/node/chunk-LWKFCMA7.mjs +129 -0
- package/dist/node/chunk-LWKFCMA7.mjs.map +1 -0
- package/dist/node/chunk-M2ZSE6YJ.mjs +512 -0
- package/dist/node/chunk-M2ZSE6YJ.mjs.map +1 -0
- package/dist/node/chunk-M6DJYGDO.cjs +167 -0
- package/dist/node/chunk-M6DJYGDO.cjs.map +1 -0
- package/dist/node/chunk-MAHKDTOQ.mjs +3 -0
- package/dist/node/chunk-MAHKDTOQ.mjs.map +1 -0
- package/dist/node/chunk-MM2R2OM6.cjs +541 -0
- package/dist/node/chunk-MM2R2OM6.cjs.map +1 -0
- package/dist/node/chunk-MSOD5UQH.cjs +45 -0
- package/dist/node/chunk-MSOD5UQH.cjs.map +1 -0
- package/dist/node/chunk-MVAWR76Q.cjs +276 -0
- package/dist/node/chunk-MVAWR76Q.cjs.map +1 -0
- package/dist/node/chunk-MXUO7OR5.cjs +97 -0
- package/dist/node/chunk-MXUO7OR5.cjs.map +1 -0
- package/dist/node/chunk-N4THTV6P.cjs +131 -0
- package/dist/node/chunk-N4THTV6P.cjs.map +1 -0
- package/dist/node/chunk-NIXKAQVP.cjs +1 -1
- package/dist/node/chunk-NIXKAQVP.cjs.map +1 -1
- package/dist/node/chunk-NUPXUUPM.cjs +1428 -0
- package/dist/node/chunk-NUPXUUPM.cjs.map +1 -0
- package/dist/node/chunk-NWOUVAIS.cjs +45 -0
- package/dist/node/chunk-NWOUVAIS.cjs.map +1 -0
- package/dist/node/chunk-OK7I5OQ3.mjs +89 -0
- package/dist/node/chunk-OK7I5OQ3.mjs.map +1 -0
- package/dist/node/chunk-OMGYXCFM.mjs +248 -0
- package/dist/node/chunk-OMGYXCFM.mjs.map +1 -0
- package/dist/node/chunk-OYC6L5NX.mjs +6 -0
- package/dist/node/chunk-OYC6L5NX.mjs.map +1 -0
- package/dist/node/chunk-OYZAQMKD.mjs +263 -0
- package/dist/node/chunk-OYZAQMKD.mjs.map +1 -0
- package/dist/node/chunk-P2LULMNL.cjs +189 -0
- package/dist/node/chunk-P2LULMNL.cjs.map +1 -0
- package/dist/node/chunk-PABEFHCO.mjs +63 -0
- package/dist/node/chunk-PABEFHCO.mjs.map +1 -0
- package/dist/node/chunk-Q5NYJQP2.cjs +8 -0
- package/dist/node/chunk-Q5NYJQP2.cjs.map +1 -0
- package/dist/node/chunk-QCEWWJ3N.cjs +65 -0
- package/dist/node/chunk-QCEWWJ3N.cjs.map +1 -0
- package/dist/node/chunk-QW4AZ3Z2.cjs +542 -0
- package/dist/node/chunk-QW4AZ3Z2.cjs.map +1 -0
- package/dist/node/chunk-R2H234YO.cjs +8 -0
- package/dist/node/chunk-R2H234YO.cjs.map +1 -0
- package/dist/node/chunk-RK5WSZ5J.mjs +43 -0
- package/dist/node/chunk-RK5WSZ5J.mjs.map +1 -0
- package/dist/node/chunk-RPHYBPXT.mjs +30 -0
- package/dist/node/chunk-RPHYBPXT.mjs.map +1 -0
- package/dist/node/chunk-RVXASBMQ.mjs +273 -0
- package/dist/node/chunk-RVXASBMQ.mjs.map +1 -0
- package/dist/node/chunk-RVZTZD32.mjs +187 -0
- package/dist/node/chunk-RVZTZD32.mjs.map +1 -0
- package/dist/node/chunk-RWLKISZQ.mjs +273 -0
- package/dist/node/chunk-RWLKISZQ.mjs.map +1 -0
- package/dist/node/chunk-SDKIJDMH.mjs +655 -0
- package/dist/node/chunk-SDKIJDMH.mjs.map +1 -0
- package/dist/node/chunk-SESXQJDD.cjs +999 -0
- package/dist/node/chunk-SESXQJDD.cjs.map +1 -0
- package/dist/node/chunk-SKIEPTFS.mjs +6 -0
- package/dist/node/chunk-SKIEPTFS.mjs.map +1 -0
- package/dist/node/chunk-SL7FT5R5.mjs +94 -0
- package/dist/node/chunk-SL7FT5R5.mjs.map +1 -0
- package/dist/node/chunk-SXHQW74T.mjs +43 -0
- package/dist/node/chunk-SXHQW74T.mjs.map +1 -0
- package/dist/node/chunk-TEJKDVNT.cjs +620 -0
- package/dist/node/chunk-TEJKDVNT.cjs.map +1 -0
- package/dist/node/chunk-TQS5WYND.cjs +352 -0
- package/dist/node/chunk-TQS5WYND.cjs.map +1 -0
- package/dist/node/chunk-UCAWV2IG.mjs +184 -0
- package/dist/node/chunk-UCAWV2IG.mjs.map +1 -0
- package/dist/node/chunk-UDUJDEAO.cjs +189 -0
- package/dist/node/chunk-UDUJDEAO.cjs.map +1 -0
- package/dist/node/chunk-VMJDL4SS.cjs +542 -0
- package/dist/node/chunk-VMJDL4SS.cjs.map +1 -0
- package/dist/node/chunk-VNOZTB3B.cjs +8 -0
- package/dist/node/chunk-VNOZTB3B.cjs.map +1 -0
- package/dist/node/chunk-VPMBZGYR.mjs +327 -0
- package/dist/node/chunk-VPMBZGYR.mjs.map +1 -0
- package/dist/node/chunk-WEPNBKOA.mjs +6 -0
- package/dist/node/chunk-WEPNBKOA.mjs.map +1 -0
- package/dist/node/chunk-WTBRJXFG.cjs +100 -0
- package/dist/node/chunk-WTBRJXFG.cjs.map +1 -0
- package/dist/node/chunk-WXCQCHAX.mjs +3 -0
- package/dist/node/chunk-WXCQCHAX.mjs.map +1 -0
- package/dist/node/chunk-X3TRPYGV.cjs +352 -0
- package/dist/node/chunk-X3TRPYGV.cjs.map +1 -0
- package/dist/node/chunk-XFUF7SDO.cjs +35 -0
- package/dist/node/chunk-XFUF7SDO.cjs.map +1 -0
- package/dist/node/chunk-XP2EPEBM.mjs +966 -0
- package/dist/node/chunk-XP2EPEBM.mjs.map +1 -0
- package/dist/node/chunk-XPIJ6BKP.cjs +45 -0
- package/dist/node/chunk-XPIJ6BKP.cjs.map +1 -0
- package/dist/node/chunk-YRVBMP7I.cjs +542 -0
- package/dist/node/chunk-YRVBMP7I.cjs.map +1 -0
- package/dist/node/chunk-ZIHSN5EE.mjs +530 -0
- package/dist/node/chunk-ZIHSN5EE.mjs.map +1 -0
- package/dist/node/chunk-ZNQMUU7I.cjs +32 -0
- package/dist/node/chunk-ZNQMUU7I.cjs.map +1 -0
- package/dist/node/completion.cjs +23 -0
- package/dist/node/completion.cjs.map +1 -0
- package/dist/node/completion.d.mts +10 -0
- package/dist/node/completion.d.ts +10 -0
- package/dist/node/completion.mjs +6 -0
- package/dist/node/completion.mjs.map +1 -0
- package/dist/node/core.cjs +69 -42
- package/dist/node/core.cjs.map +1 -1
- package/dist/node/core.d.mts +14 -9
- package/dist/node/core.d.ts +14 -9
- package/dist/node/core.mjs +60 -33
- package/dist/node/core.mjs.map +1 -1
- package/dist/node/credentials.cjs +17 -0
- package/dist/node/credentials.cjs.map +1 -0
- package/dist/node/credentials.d.mts +74 -0
- package/dist/node/credentials.d.ts +74 -0
- package/dist/node/credentials.mjs +4 -0
- package/dist/node/credentials.mjs.map +1 -0
- package/dist/node/definition.cjs +6 -4
- package/dist/node/definition.d.mts +3 -2
- package/dist/node/definition.d.ts +3 -2
- package/dist/node/definition.mjs +4 -2
- package/dist/node/dynamic-content.cjs +30 -0
- package/dist/node/dynamic-content.cjs.map +1 -0
- package/dist/node/dynamic-content.d.mts +13 -0
- package/dist/node/dynamic-content.d.ts +13 -0
- package/dist/node/dynamic-content.mjs +9 -0
- package/dist/node/dynamic-content.mjs.map +1 -0
- package/dist/node/dynamic-feature.cjs +41 -7
- package/dist/node/dynamic-feature.cjs.map +1 -1
- package/dist/node/dynamic-feature.d.mts +66 -6
- package/dist/node/dynamic-feature.d.ts +66 -6
- package/dist/node/dynamic-feature.mjs +16 -9
- package/dist/node/dynamic-feature.mjs.map +1 -1
- package/dist/node/dynamic-structure.cjs +45 -136
- package/dist/node/dynamic-structure.cjs.map +1 -1
- package/dist/node/dynamic-structure.d.mts +77 -3
- package/dist/node/dynamic-structure.d.ts +77 -3
- package/dist/node/dynamic-structure.mjs +16 -135
- package/dist/node/dynamic-structure.mjs.map +1 -1
- package/dist/node/env.cjs +3 -3
- package/dist/node/env.d.mts +26 -0
- package/dist/node/env.d.ts +26 -0
- package/dist/node/env.mjs +2 -2
- package/dist/node/frame-index.cjs +7 -4
- package/dist/node/frame-index.d.mts +70 -9
- package/dist/node/frame-index.d.ts +70 -9
- package/dist/node/frame-index.mjs +6 -3
- package/dist/node/logger.d.mts +4 -113
- package/dist/node/logger.d.ts +4 -113
- package/dist/node/models.cjs +14 -0
- package/dist/node/models.cjs.map +1 -0
- package/dist/node/models.d.mts +64 -0
- package/dist/node/models.d.ts +64 -0
- package/dist/node/models.mjs +5 -0
- package/dist/node/models.mjs.map +1 -0
- package/dist/node/namespace.cjs +7 -5
- package/dist/node/namespace.d.mts +1 -1
- package/dist/node/namespace.d.ts +1 -1
- package/dist/node/namespace.mjs +4 -2
- package/dist/node/schema.cjs +22 -0
- package/dist/node/schema.cjs.map +1 -0
- package/dist/node/schema.d.mts +10 -0
- package/dist/node/schema.d.ts +10 -0
- package/dist/node/schema.mjs +5 -0
- package/dist/node/schema.mjs.map +1 -0
- package/dist/node/segment.cjs +25 -0
- package/dist/node/segment.cjs.map +1 -0
- package/dist/node/segment.d.mts +13 -0
- package/dist/node/segment.d.ts +13 -0
- package/dist/node/segment.mjs +8 -0
- package/dist/node/segment.mjs.map +1 -0
- package/dist/node/storage.cjs +17 -14
- package/dist/node/storage.d.mts +18 -6
- package/dist/node/storage.d.ts +18 -6
- package/dist/node/storage.mjs +11 -8
- package/dist/node/vector.cjs +2 -2
- package/dist/node/vector.d.mts +7 -0
- package/dist/node/vector.d.ts +7 -0
- package/dist/node/vector.mjs +1 -1
- package/examples/article/main.ts +358 -0
- package/examples/components.ts +660 -0
- package/examples/feature/file-system.components.ts +211 -0
- package/examples/feature/main.ts +374 -0
- package/examples/interaction/main.ts +426 -0
- package/examples/logger.ts +126 -0
- package/examples/structure/main.ts +195 -0
- package/examples/structure/renderer.ts +296 -0
- package/examples/structure/server-app.components.ts +387 -0
- package/jest.config.browser.ts +9 -0
- package/jest.config.examples.ts +49 -0
- package/jest.config.integration.ts +38 -0
- package/jest.config.ts +56 -27
- package/jest.config.unit.ts +38 -0
- package/package.json +75 -7
- package/src/index.ts +13 -0
- package/src/lib/A-Frame/A-Frame.component.env-browser.ts +19 -6
- package/src/lib/A-Frame/A-Frame.component.env-node.ts +48 -19
- package/src/lib/A-Frame/A-Frame.context.ts +9 -8
- package/src/lib/A-Frame/decorators/A-FrameDefine.decorator.ts +4 -4
- package/src/lib/A-FrameBundle/A-FrameBundle.builder.env-node.ts +95 -25
- package/src/lib/A-FrameBundle/A-FrameBundle.constants.ts +1 -1
- package/src/lib/A-FrameBundle/A-FrameBundle.types.ts +54 -13
- package/src/lib/A-FrameBundle/index.browser.ts +1 -1
- package/src/lib/A-FrameBundle/index.ts +1 -1
- package/src/lib/A-FrameCLI/A-FrameCLI.container.ts +18 -7
- package/src/lib/A-FrameChannel/A-FrameChannel.component.env-browser.ts +0 -2
- package/src/lib/A-FrameChannel/A-FrameChannel.component.env-node.ts +14 -15
- package/src/lib/A-FrameChannel/A-FrameChannel.component.ts +542 -7
- package/src/lib/A-FrameChannel/A-FrameChannel.constants.ts +2 -0
- package/src/lib/A-FrameChannel/A-FrameChannel.types.ts +65 -1
- package/src/lib/A-FrameChannel/A-FrameChannelDsgStream.entity.ts +112 -0
- package/src/lib/A-FrameChannel/A-FrameChannelStream.entity.ts +1 -0
- package/src/lib/A-FrameChannel/index.browser.ts +5 -0
- package/src/lib/A-FrameCompletion/A-FrameCompletion.constants.ts +3 -0
- package/src/lib/A-FrameCompletion/A-FrameCompletion.entity.ts +128 -0
- package/src/lib/A-FrameCompletion/A-FrameCompletion.types.ts +40 -0
- package/src/lib/A-FrameCompletion/index.ts +3 -0
- package/src/lib/A-FrameCredentials/A-FrameCredentials.constants.ts +5 -0
- package/src/lib/A-FrameCredentials/A-FrameCredentials.entity.ts +120 -0
- package/src/lib/A-FrameCredentials/A-FrameCredentials.types.ts +39 -0
- package/src/lib/A-FrameCredentials/index.ts +3 -0
- package/src/lib/A-FrameDefinition/A-FrameDefinition.entity.ts +23 -1
- package/src/lib/A-FrameDefinition/A-FrameDefinition.types.ts +34 -1
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.constants.ts +5 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.entity.ts +348 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.error.ts +10 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.types.ts +116 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContentIndex.context.ts +288 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContentOperation.context.ts +26 -0
- package/src/lib/A-FrameDynamicContent/index.ts +5 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.constants.ts +6 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.entity.ts +253 -4
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.error.ts +11 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.types.ts +188 -4
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeatureOperation.context.ts +33 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameMethodMapIndex.context.ts +99 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameMethodMapper.component.ts +182 -0
- package/src/lib/A-FrameDynamicFeature/index.ts +6 -1
- package/src/lib/A-FrameDynamicPatch/index.ts +2 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameComponentMapIndex.context.ts +99 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameComponentMapper.component.ts +320 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.constants.ts +2 -1
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.entity.ts +240 -128
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.types.ts +183 -87
- package/src/lib/A-FrameDynamicStructure/index.ts +3 -0
- package/src/lib/A-FrameEnv/A-FrameEnv.fragment.env-browser.ts +5 -1
- package/src/lib/A-FrameEnv/A-FrameEnv.fragment.env-node.ts +23 -1
- package/src/lib/A-FrameEnv/A-FrameEnv.types.ts +12 -0
- package/src/lib/A-FrameIndex/A-FrameIndex.context.ts +63 -13
- package/src/lib/A-FrameIndex/A-FrameIndex.types.ts +53 -0
- package/src/lib/A-FrameModels/A-FrameModels.constants.ts +75 -0
- package/src/lib/A-FrameModels/index.ts +1 -0
- package/src/lib/A-FrameNamespace/A-FrameNamespace.entity.ts +10 -3
- package/src/lib/A-FrameNamespace/A-FrameNamespace.types.ts +5 -0
- package/src/lib/A-FrameSchema/A-FrameSchema.constants.ts +4 -0
- package/src/lib/A-FrameSchema/A-FrameSchema.entity.ts +154 -0
- package/src/lib/A-FrameSchema/A-FrameSchema.types.ts +88 -0
- package/src/lib/A-FrameSchema/index.ts +3 -0
- package/src/lib/A-FrameSegment/A-FrameSegment.constants.ts +12 -0
- package/src/lib/A-FrameSegment/A-FrameSegment.entity.ts +221 -0
- package/src/lib/A-FrameSegment/A-FrameSegment.types.ts +91 -0
- package/src/lib/A-FrameSegment/index.ts +3 -0
- package/src/lib/A-FrameStorage/A-FrameStorage.codec.ts +10 -4
- package/src/lib/A-FrameStorage/browser/A-FrameBrowserStorage.component.ts +21 -0
- package/src/lib/A-FrameStorage/browser/A-FrameBrowserStorageBlobs.context.ts +39 -21
- package/src/lib/A-FrameStorage/node/A-FrameNodeStorage.component.ts +124 -42
- package/src/lib/A-FrameVector/A-FrameVector.entity.ts +24 -0
- package/tests/A-Frame.browser.test.ts +167 -57
- package/tests/A-FrameDynamicContent.browser.test.ts +74 -0
- package/tests/integration/A-Frame.integration.test.ts +272 -0
- package/tests/integration/A-FrameCompletion.integration.test.ts +88 -0
- package/tests/integration/A-FrameContentMapping.integration.test.ts +261 -0
- package/tests/integration/A-FrameDefinition.integration.test.ts +154 -0
- package/tests/integration/A-FrameDynamicContent.integration.test.ts +126 -0
- package/tests/integration/A-FrameDynamicFeature.integration.test.ts +337 -0
- package/tests/integration/A-FrameDynamicStructure.integration.test.ts +264 -0
- package/tests/integration/A-FrameNamespace.integration.test.ts +109 -0
- package/tests/integration/A-FrameSchema.integration.test.ts +74 -0
- package/tests/integration/A-FrameSegment.integration.test.ts +102 -0
- package/tests/integration/A-FrameStorage.integration.test.ts +598 -0
- package/tests/jest.setup.browser.ts +1 -1
- package/tests/jest.setup.ts +4 -0
- package/tests/jest.setup.unit.ts +30 -0
- package/tests/unit/A-FrameChannel.unit.test.ts +124 -0
- package/tests/unit/A-FrameCompletion.unit.test.ts +25 -0
- package/tests/unit/A-FrameDefinition.unit.test.ts +36 -0
- package/tests/unit/A-FrameDynamicContent.unit.test.ts +28 -0
- package/tests/unit/A-FrameNamespace.unit.test.ts +35 -0
- package/tests/unit/A-FrameSchema.unit.test.ts +31 -0
- package/tests/unit/A-FrameSegment.unit.test.ts +20 -0
- package/tests/unit/mocks/MockA_FrameChannel.ts +112 -0
- package/tsconfig.browser.json +2 -0
- package/tsconfig.json +6 -0
- package/tsup.config.ts +52 -0
- package/tests/A-Frame.test.ts +0 -96
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
import { A_FrameDynamicPatch } from './chunk-RPHYBPXT.mjs';
|
|
2
|
+
import { A_FrameSegment } from './chunk-ALFFUJ2J.mjs';
|
|
3
|
+
import { A_FrameVector } from './chunk-IAL2NK2V.mjs';
|
|
4
|
+
import { A_FRAME_MODELS } from './chunk-2HUSP34L.mjs';
|
|
5
|
+
import { A_Error, A_Fragment, A_Entity, A_Context, A_Scope } from '@adaas/a-concept';
|
|
6
|
+
|
|
7
|
+
// src/lib/A-FrameDynamicContent/A-FrameDynamicContent.constants.ts
|
|
8
|
+
var A_FrameDynamicContentFeatures = {
|
|
9
|
+
Generate: "_A_FRAME_DYNAMIC_CONTENT_GENERATE",
|
|
10
|
+
Patch: "_A_FRAME_DYNAMIC_CONTENT_PATCH"
|
|
11
|
+
};
|
|
12
|
+
var A_FrameDynamicContentOperation = class extends A_Fragment {
|
|
13
|
+
constructor(params = {}) {
|
|
14
|
+
super({ name: "a-frame-dynamic-content-operation-context" });
|
|
15
|
+
this._meta = /* @__PURE__ */ new Map();
|
|
16
|
+
this._meta.set("params", params);
|
|
17
|
+
}
|
|
18
|
+
get params() {
|
|
19
|
+
return this._meta.get("params");
|
|
20
|
+
}
|
|
21
|
+
get(key) {
|
|
22
|
+
return this._meta.get(key);
|
|
23
|
+
}
|
|
24
|
+
set(key, value) {
|
|
25
|
+
this._meta.set(key, value);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
var A_FrameDynamicContentError = class extends A_Error {
|
|
29
|
+
};
|
|
30
|
+
A_FrameDynamicContentError.GenerationFailed = "GenerationFailed";
|
|
31
|
+
A_FrameDynamicContentError.PatchFailed = "PatchFailed";
|
|
32
|
+
A_FrameDynamicContentError.InvalidPatch = "InvalidPatch";
|
|
33
|
+
A_FrameDynamicContentError.PieceNotFound = "PieceNotFound";
|
|
34
|
+
var _A_FrameDynamicContentIndex = class _A_FrameDynamicContentIndex extends A_Fragment {
|
|
35
|
+
constructor() {
|
|
36
|
+
super(...arguments);
|
|
37
|
+
/** Ordered list of segment IDs — defines the canonical reading order. */
|
|
38
|
+
this._order = [];
|
|
39
|
+
/** O(1) lookup by id. */
|
|
40
|
+
this._map = /* @__PURE__ */ new Map();
|
|
41
|
+
}
|
|
42
|
+
// ── Accessors ─────────────────────────────────────────────────────────────
|
|
43
|
+
get count() {
|
|
44
|
+
return this._order.length;
|
|
45
|
+
}
|
|
46
|
+
get size() {
|
|
47
|
+
return this._order.length;
|
|
48
|
+
}
|
|
49
|
+
// ── Basic mutation ────────────────────────────────────────────────────────
|
|
50
|
+
/** Append one or more segments to the end. */
|
|
51
|
+
add(...segments) {
|
|
52
|
+
segments.forEach((seg) => {
|
|
53
|
+
this._map.set(seg.id, seg);
|
|
54
|
+
if (!this._order.includes(seg.id)) {
|
|
55
|
+
this._order.push(seg.id);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/** Replace the content of an existing segment in-place (position unchanged). */
|
|
60
|
+
update(segment) {
|
|
61
|
+
this._map.set(segment.id, segment);
|
|
62
|
+
if (!this._order.includes(segment.id)) {
|
|
63
|
+
this._order.push(segment.id);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** Remove a segment by id. */
|
|
67
|
+
remove(id) {
|
|
68
|
+
this._map.delete(id);
|
|
69
|
+
const idx = this._order.indexOf(id);
|
|
70
|
+
if (idx !== -1) this._order.splice(idx, 1);
|
|
71
|
+
}
|
|
72
|
+
/** Remove all segments. */
|
|
73
|
+
clear() {
|
|
74
|
+
this._map.clear();
|
|
75
|
+
this._order = [];
|
|
76
|
+
}
|
|
77
|
+
// ── Positional insertion ──────────────────────────────────────────────────
|
|
78
|
+
/** Insert `segment` immediately before the segment with `targetId`. */
|
|
79
|
+
insertBefore(targetId, segment) {
|
|
80
|
+
this._map.set(segment.id, segment);
|
|
81
|
+
const targetIdx = this._order.indexOf(targetId);
|
|
82
|
+
if (targetIdx === -1) {
|
|
83
|
+
this._order.push(segment.id);
|
|
84
|
+
} else {
|
|
85
|
+
this._order.splice(targetIdx, 0, segment.id);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** Insert `segment` immediately after the segment with `targetId`. */
|
|
89
|
+
insertAfter(targetId, segment) {
|
|
90
|
+
this._map.set(segment.id, segment);
|
|
91
|
+
const targetIdx = this._order.indexOf(targetId);
|
|
92
|
+
if (targetIdx === -1) {
|
|
93
|
+
this._order.push(segment.id);
|
|
94
|
+
} else {
|
|
95
|
+
this._order.splice(targetIdx + 1, 0, segment.id);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/** Swap the content of `targetId` with `segment`, keeping the same position. */
|
|
99
|
+
replace(targetId, segment) {
|
|
100
|
+
const pos = this._order.indexOf(targetId);
|
|
101
|
+
if (pos === -1) return;
|
|
102
|
+
this._map.delete(targetId);
|
|
103
|
+
this._map.set(segment.id, segment);
|
|
104
|
+
this._order[pos] = segment.id;
|
|
105
|
+
}
|
|
106
|
+
// ── Position management ────────────────────────────────────────────────────
|
|
107
|
+
/** Move the segment with `id` to absolute zero-based `newPosition`. */
|
|
108
|
+
moveTo(id, newPosition) {
|
|
109
|
+
const from = this._order.indexOf(id);
|
|
110
|
+
if (from === -1) return;
|
|
111
|
+
this._order.splice(from, 1);
|
|
112
|
+
const clipped = Math.max(0, Math.min(newPosition, this._order.length));
|
|
113
|
+
this._order.splice(clipped, 0, id);
|
|
114
|
+
}
|
|
115
|
+
/** Move `id` to directly before `targetId`. */
|
|
116
|
+
moveBefore(id, targetId) {
|
|
117
|
+
const from = this._order.indexOf(id);
|
|
118
|
+
if (from === -1) return;
|
|
119
|
+
this._order.splice(from, 1);
|
|
120
|
+
const to = this._order.indexOf(targetId);
|
|
121
|
+
this._order.splice(to === -1 ? 0 : to, 0, id);
|
|
122
|
+
}
|
|
123
|
+
/** Move `id` to directly after `targetId`. */
|
|
124
|
+
moveAfter(id, targetId) {
|
|
125
|
+
const from = this._order.indexOf(id);
|
|
126
|
+
if (from === -1) return;
|
|
127
|
+
this._order.splice(from, 1);
|
|
128
|
+
const to = this._order.indexOf(targetId);
|
|
129
|
+
this._order.splice(to === -1 ? this._order.length : to + 1, 0, id);
|
|
130
|
+
}
|
|
131
|
+
// ── Patch operation dispatch ──────────────────────────────────────────────
|
|
132
|
+
/**
|
|
133
|
+
* Apply a single `A_FrameContentPatchOperation` to the index.
|
|
134
|
+
* For `add` and `replace` the caller must supply the resolved `segment`.
|
|
135
|
+
* For `remove` only the `op` is needed.
|
|
136
|
+
*/
|
|
137
|
+
applyOperation(op, segment) {
|
|
138
|
+
switch (op.action) {
|
|
139
|
+
case "remove": {
|
|
140
|
+
if (op.targetId) this.remove(op.targetId);
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
case "replace": {
|
|
144
|
+
if (op.targetId && segment) this.replace(op.targetId, segment);
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
case "add": {
|
|
148
|
+
if (!segment) break;
|
|
149
|
+
if (!op.targetId || op.position === "append") {
|
|
150
|
+
this.add(segment);
|
|
151
|
+
} else if (op.position === "before") {
|
|
152
|
+
this.insertBefore(op.targetId, segment);
|
|
153
|
+
} else {
|
|
154
|
+
this.insertAfter(op.targetId, segment);
|
|
155
|
+
}
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// ── Lookup ────────────────────────────────────────────────────────────────
|
|
161
|
+
get(id) {
|
|
162
|
+
return this._map.get(id);
|
|
163
|
+
}
|
|
164
|
+
/** Returns all segments in their current canonical order. */
|
|
165
|
+
list() {
|
|
166
|
+
return this._order.map((id) => this._map.get(id)).filter((s) => s !== void 0);
|
|
167
|
+
}
|
|
168
|
+
// ── Search ────────────────────────────────────────────────────────────────
|
|
169
|
+
/**
|
|
170
|
+
* Computes the centroid (element-wise mean) of all embedded segments.
|
|
171
|
+
* Returns `null` when no segments have been embedded yet.
|
|
172
|
+
* The centroid represents the overall semantic "centre of gravity" of this
|
|
173
|
+
* content block and is used by `A_FrameDynamicContent.compareTo()` to
|
|
174
|
+
* measure similarity between two content instances.
|
|
175
|
+
*/
|
|
176
|
+
centroid() {
|
|
177
|
+
const embedded = this.list().filter((s) => s.isEmbed && s.vector);
|
|
178
|
+
if (embedded.length === 0) return null;
|
|
179
|
+
const dim = embedded[0].vector.length;
|
|
180
|
+
const sum = new Float32Array(dim);
|
|
181
|
+
for (const seg of embedded) {
|
|
182
|
+
const vals = seg.vector.values;
|
|
183
|
+
for (let i = 0; i < dim; i++) sum[i] += vals[i];
|
|
184
|
+
}
|
|
185
|
+
for (let i = 0; i < dim; i++) sum[i] /= embedded.length;
|
|
186
|
+
return new A_FrameVector(sum);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Rank all embedded segments by cosine similarity to the query vector.
|
|
190
|
+
*/
|
|
191
|
+
search(vector, topK = _A_FrameDynamicContentIndex.PATCH_PIECE_LIMIT) {
|
|
192
|
+
const queryVec = vector.normalize();
|
|
193
|
+
return this.list().filter((s) => s.isEmbed && s.vector).map((s) => ({
|
|
194
|
+
segment: s,
|
|
195
|
+
score: queryVec.dot(s.vector.normalize())
|
|
196
|
+
})).sort((a, b) => b.score - a.score).slice(0, topK);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Rank segments by how many instruction keywords appear in their content.
|
|
200
|
+
* Words shorter than 4 characters are ignored.
|
|
201
|
+
*/
|
|
202
|
+
searchByKeywords(instruction, topK = _A_FrameDynamicContentIndex.PATCH_PIECE_LIMIT) {
|
|
203
|
+
const keywords = instruction.toLowerCase().split(/\W+/).filter((w) => w.length > 3);
|
|
204
|
+
if (keywords.length === 0) return [];
|
|
205
|
+
return this.list().map((segment) => {
|
|
206
|
+
const lower = segment.content.toLowerCase();
|
|
207
|
+
const score = keywords.reduce(
|
|
208
|
+
(acc, kw) => acc + (lower.includes(kw) ? 1 : 0),
|
|
209
|
+
0
|
|
210
|
+
);
|
|
211
|
+
return { segment, score };
|
|
212
|
+
}).filter((s) => s.score > 0).sort((a, b) => b.score - a.score).slice(0, topK);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Select at most `limit` segments most relevant to a patch instruction.
|
|
216
|
+
*
|
|
217
|
+
* Priority:
|
|
218
|
+
* 1. Vector search — when `vector` is provided and segments carry embeddings.
|
|
219
|
+
* 2. Keyword search — fallback when embeddings are absent or vector is null.
|
|
220
|
+
* 3. Identity — first N segments when neither search finds candidates.
|
|
221
|
+
*/
|
|
222
|
+
selectForPatch(vector, instruction, limit = _A_FrameDynamicContentIndex.PATCH_PIECE_LIMIT) {
|
|
223
|
+
const all = this.list();
|
|
224
|
+
if (all.length <= limit) return all;
|
|
225
|
+
if (vector) {
|
|
226
|
+
const hasEmbedded = all.some((s) => s.isEmbed);
|
|
227
|
+
if (hasEmbedded) {
|
|
228
|
+
const results = this.search(vector, limit);
|
|
229
|
+
if (results.length > 0) return results.map((r) => r.segment);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
const kwResults = this.searchByKeywords(instruction, limit);
|
|
233
|
+
if (kwResults.length > 0) return kwResults.map((r) => r.segment);
|
|
234
|
+
return all.slice(0, limit);
|
|
235
|
+
}
|
|
236
|
+
// ── Similarity helpers ────────────────────────────────────────────────────
|
|
237
|
+
cosineSimilarity(a, b) {
|
|
238
|
+
if (!b) return 0;
|
|
239
|
+
const dot = a.dot(b);
|
|
240
|
+
const mag = a.magnitude() * b.magnitude();
|
|
241
|
+
return mag === 0 ? 0 : dot / mag;
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
/** Maximum segments forwarded to the server in a single patch request. */
|
|
245
|
+
_A_FrameDynamicContentIndex.PATCH_PIECE_LIMIT = 5;
|
|
246
|
+
var A_FrameDynamicContentIndex = _A_FrameDynamicContentIndex;
|
|
247
|
+
|
|
248
|
+
// src/lib/A-FrameDynamicContent/A-FrameDynamicContent.entity.ts
|
|
249
|
+
var A_FrameDynamicContent = class extends A_Entity {
|
|
250
|
+
static get concept() {
|
|
251
|
+
return "a-frame";
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
*
|
|
255
|
+
*/
|
|
256
|
+
get scope() {
|
|
257
|
+
if (!this._scope) {
|
|
258
|
+
this._scope = A_Context.allocate(this, new A_Scope({ name: `${this.aseid.id}-scope` }));
|
|
259
|
+
}
|
|
260
|
+
return this._scope;
|
|
261
|
+
}
|
|
262
|
+
get index() {
|
|
263
|
+
const index = this.scope.resolve(A_FrameDynamicContentIndex);
|
|
264
|
+
return index;
|
|
265
|
+
}
|
|
266
|
+
fromNew(options) {
|
|
267
|
+
super.fromNew(options);
|
|
268
|
+
const index = new A_FrameDynamicContentIndex({ name: `${this.aseid.id}` });
|
|
269
|
+
this.scope.register(index);
|
|
270
|
+
this.createdAt = Date.now();
|
|
271
|
+
this.prompt = options.prompt;
|
|
272
|
+
this.model = options.options?.model || A_FRAME_MODELS.LYRA;
|
|
273
|
+
this._system = options.options?.system;
|
|
274
|
+
this._patchPieceLimit = options.options?.patchPieceLimit || A_FrameDynamicContentIndex.PATCH_PIECE_LIMIT;
|
|
275
|
+
this._history = [];
|
|
276
|
+
this._version = 0;
|
|
277
|
+
}
|
|
278
|
+
// ── Accessors ────────────────────────────────────────────────────────────
|
|
279
|
+
/** Ordered list of content pieces (output of the last generate or patch). */
|
|
280
|
+
get segments() {
|
|
281
|
+
return this.index.list();
|
|
282
|
+
}
|
|
283
|
+
/** Full content reconstructed from all segments in index order. */
|
|
284
|
+
get content() {
|
|
285
|
+
return this.index.list().map((s) => s.content).join("\n");
|
|
286
|
+
}
|
|
287
|
+
/** Alias for `content` — kept for backward compatibility. */
|
|
288
|
+
get text() {
|
|
289
|
+
return this.content;
|
|
290
|
+
}
|
|
291
|
+
/** Immutable patch history. */
|
|
292
|
+
get history() {
|
|
293
|
+
return this._history;
|
|
294
|
+
}
|
|
295
|
+
/** Current content version (increments with each patch). */
|
|
296
|
+
get version() {
|
|
297
|
+
return this._version;
|
|
298
|
+
}
|
|
299
|
+
/** The AI model name to use for generation / patching. */
|
|
300
|
+
get modelName() {
|
|
301
|
+
return this.model;
|
|
302
|
+
}
|
|
303
|
+
/** Optional system prompt forwarded to the AI for generation and patching. */
|
|
304
|
+
get systemPrompt() {
|
|
305
|
+
return this._system;
|
|
306
|
+
}
|
|
307
|
+
// ── Main pipeline ─────────────────────────────────────────────────────────
|
|
308
|
+
/**
|
|
309
|
+
* Generate content from the entity's prompt.
|
|
310
|
+
* Populates `pieces` and creates the first history entry.
|
|
311
|
+
*/
|
|
312
|
+
async generate() {
|
|
313
|
+
const operation = new A_FrameDynamicContentOperation();
|
|
314
|
+
if (!this.scope.isInheritedFrom(A_Context.scope(this)))
|
|
315
|
+
this.scope.inherit(A_Context.scope(this));
|
|
316
|
+
const executionScope = new A_Scope({
|
|
317
|
+
name: "a-frame-dynamic-content-generate",
|
|
318
|
+
fragments: [operation]
|
|
319
|
+
}).inherit(this.scope);
|
|
320
|
+
try {
|
|
321
|
+
await this.call(A_FrameDynamicContentFeatures.Generate, executionScope);
|
|
322
|
+
executionScope.destroy();
|
|
323
|
+
} catch (err) {
|
|
324
|
+
executionScope.destroy();
|
|
325
|
+
throw new A_FrameDynamicContentError({
|
|
326
|
+
title: A_FrameDynamicContentError.GenerationFailed,
|
|
327
|
+
description: `Failed to generate content: ${err instanceof Error ? err.message : String(err)}`
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Apply a natural-language patch instruction to the current pieces.
|
|
333
|
+
* The server identifies which pieces to add, replace, or remove using
|
|
334
|
+
* semantic search over piece embeddings.
|
|
335
|
+
*/
|
|
336
|
+
async patch(instruction) {
|
|
337
|
+
if (!this.scope.isInheritedFrom(A_Context.scope(this)))
|
|
338
|
+
this.scope.inherit(A_Context.scope(this));
|
|
339
|
+
const executionScope = new A_Scope({
|
|
340
|
+
name: "a-frame-dynamic-content-patch"
|
|
341
|
+
}).inherit(this.scope);
|
|
342
|
+
const inputSegment = new A_FrameSegment({
|
|
343
|
+
content: instruction,
|
|
344
|
+
options: { task: "query" }
|
|
345
|
+
});
|
|
346
|
+
executionScope.register(inputSegment);
|
|
347
|
+
await inputSegment.embed();
|
|
348
|
+
const targetSegments = this.index.selectForPatch(inputSegment.vector ?? null, instruction, this._patchPieceLimit);
|
|
349
|
+
const operation = new A_FrameDynamicContentOperation({
|
|
350
|
+
instruction,
|
|
351
|
+
segments: targetSegments
|
|
352
|
+
});
|
|
353
|
+
executionScope.register(operation);
|
|
354
|
+
try {
|
|
355
|
+
await this.call(A_FrameDynamicContentFeatures.Patch, executionScope);
|
|
356
|
+
executionScope.destroy();
|
|
357
|
+
} catch (err) {
|
|
358
|
+
executionScope.destroy();
|
|
359
|
+
throw new A_FrameDynamicContentError({
|
|
360
|
+
title: A_FrameDynamicContentError.PatchFailed,
|
|
361
|
+
description: `Failed to patch content: ${err instanceof Error ? err.message : String(err)}`
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// ── Comparison ────────────────────────────────────────────────────────────
|
|
366
|
+
/**
|
|
367
|
+
* Returns a cosine similarity score (0–1) between this content and `other`.
|
|
368
|
+
*
|
|
369
|
+
* The score is computed from the centroid of each content's embedded
|
|
370
|
+
* segments — the element-wise mean of all segment vectors. Two contents
|
|
371
|
+
* about the same topic should score close to 1; unrelated contents will
|
|
372
|
+
* score near 0.
|
|
373
|
+
*
|
|
374
|
+
* Returns 0 if either content has no embedded segments.
|
|
375
|
+
*
|
|
376
|
+
* @example
|
|
377
|
+
* const cats1 = new A_FrameDynamicContent({ prompt: 'Article about cats' });
|
|
378
|
+
* const cats2 = new A_FrameDynamicContent({ prompt: 'Article about cats' });
|
|
379
|
+
* const cars = new A_FrameDynamicContent({ prompt: 'Article about cars' });
|
|
380
|
+
* // After generate() on all three:
|
|
381
|
+
* cats1.compareTo(cats2); // ~0.92 — high
|
|
382
|
+
* cats1.compareTo(cars); // ~0.45 — low
|
|
383
|
+
*/
|
|
384
|
+
compareTo(other) {
|
|
385
|
+
const centroidA = this.index.centroid();
|
|
386
|
+
const centroidB = other.index.centroid();
|
|
387
|
+
if (!centroidA || !centroidB) return 0;
|
|
388
|
+
return centroidA.cosineSimilarity(centroidB);
|
|
389
|
+
}
|
|
390
|
+
// ── Hydration ─────────────────────────────────────────────────────────────
|
|
391
|
+
/**
|
|
392
|
+
* Populate index from the segments created by the channel after a generate response.
|
|
393
|
+
* Creates the first history entry.
|
|
394
|
+
*/
|
|
395
|
+
hydrateFromGeneration(segments, meta) {
|
|
396
|
+
segments.forEach((s) => this.index.add(s));
|
|
397
|
+
this._history.push(new A_FrameDynamicPatch({
|
|
398
|
+
version: this._version,
|
|
399
|
+
timestamp: Date.now(),
|
|
400
|
+
reason: `Generated for: "${this.prompt}"`,
|
|
401
|
+
encoded: Buffer.from(JSON.stringify(this.index.list())).toString("base64"),
|
|
402
|
+
delta: this.index.size
|
|
403
|
+
}));
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Apply a patch diff returned by the server to the current piece list.
|
|
407
|
+
* Increments the version and records a history entry.
|
|
408
|
+
*/
|
|
409
|
+
hydrateFromPatch(patchResult, meta) {
|
|
410
|
+
const prevCount = this.index.size;
|
|
411
|
+
const normalize = (s) => s.toLowerCase().replace(/[^\w\s]/g, "").replace(/\s+/g, " ").trim();
|
|
412
|
+
const existingNormalized = this.index.list().map((s) => normalize(s.content));
|
|
413
|
+
const isNearDuplicate = (newContent) => {
|
|
414
|
+
const norm = normalize(newContent);
|
|
415
|
+
if (norm.length < 8) return false;
|
|
416
|
+
return existingNormalized.some(
|
|
417
|
+
(existing) => existing === norm || // exact match
|
|
418
|
+
existing.includes(norm)
|
|
419
|
+
// new text is a strict substring of something existing
|
|
420
|
+
// Note: do NOT check norm.includes(existing) — that would block
|
|
421
|
+
// valid extensions where new content starts with an existing phrase.
|
|
422
|
+
);
|
|
423
|
+
};
|
|
424
|
+
for (const op of patchResult.operations) {
|
|
425
|
+
if (!["add", "replace", "remove"].includes(op.action)) continue;
|
|
426
|
+
let segment;
|
|
427
|
+
if (op.segment) {
|
|
428
|
+
const dup = (op.action === "add" || op.action === "replace") && isNearDuplicate(op.segment.content);
|
|
429
|
+
if (dup) continue;
|
|
430
|
+
segment = new A_FrameSegment({ content: op.segment.content, options: { task: "document" } });
|
|
431
|
+
if (op.segment.embedding?.length) {
|
|
432
|
+
segment.hydrateFromEmbedding(new Float32Array(op.segment.embedding));
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
if (op.action === "add") {
|
|
436
|
+
const validPositions = /* @__PURE__ */ new Set(["before", "after", "append", void 0]);
|
|
437
|
+
if (!validPositions.has(op.position)) {
|
|
438
|
+
op.position = "append";
|
|
439
|
+
op.targetId = void 0;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
this.index.applyOperation(op, segment);
|
|
443
|
+
}
|
|
444
|
+
this._version++;
|
|
445
|
+
this._history.push(new A_FrameDynamicPatch({
|
|
446
|
+
version: this._version,
|
|
447
|
+
timestamp: Date.now(),
|
|
448
|
+
reason: patchResult.patchSummary,
|
|
449
|
+
encoded: Buffer.from(JSON.stringify(this.index.list())).toString("base64"),
|
|
450
|
+
delta: this.index.size - prevCount
|
|
451
|
+
}));
|
|
452
|
+
}
|
|
453
|
+
// ── Serialisation ──────────────────────────────────────────────────────────
|
|
454
|
+
toJSON() {
|
|
455
|
+
return {
|
|
456
|
+
...super.toJSON(),
|
|
457
|
+
prompt: this.prompt,
|
|
458
|
+
metadata: {
|
|
459
|
+
model: this.model,
|
|
460
|
+
createdAt: this.createdAt
|
|
461
|
+
},
|
|
462
|
+
history: this._history.map((item) => item.toJSON())
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
};
|
|
466
|
+
|
|
467
|
+
export { A_FrameDynamicContent, A_FrameDynamicContentError, A_FrameDynamicContentFeatures, A_FrameDynamicContentOperation };
|
|
468
|
+
//# sourceMappingURL=chunk-5PYIATGT.mjs.map
|
|
469
|
+
//# sourceMappingURL=chunk-5PYIATGT.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/A-FrameDynamicContent/A-FrameDynamicContent.constants.ts","../../src/lib/A-FrameDynamicContent/A-FrameDynamicContentOperation.context.ts","../../src/lib/A-FrameDynamicContent/A-FrameDynamicContent.error.ts","../../src/lib/A-FrameDynamicContent/A-FrameDynamicContentIndex.context.ts","../../src/lib/A-FrameDynamicContent/A-FrameDynamicContent.entity.ts"],"names":["A_Fragment"],"mappings":"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","file":"chunk-5PYIATGT.mjs","sourcesContent":["\nexport const A_FrameDynamicContentFeatures = {\n Generate: '_A_FRAME_DYNAMIC_CONTENT_GENERATE',\n Patch: '_A_FRAME_DYNAMIC_CONTENT_PATCH',\n} as const;\n","import { A_Fragment } from \"@adaas/a-concept\";\n\n\nexport class A_FrameDynamicContentOperation<\n _InputParams = any,\n> extends A_Fragment {\n\n protected _meta: Map<string, any> = new Map();\n\n constructor(params: _InputParams = {} as _InputParams) {\n super({ name: 'a-frame-dynamic-content-operation-context' });\n this._meta.set('params', params);\n }\n\n get params(): _InputParams {\n return this._meta.get('params');\n }\n\n get(key: string) {\n return this._meta.get(key);\n }\n\n set(key: string, value: any) {\n this._meta.set(key, value);\n }\n}\n","import { A_Error } from \"@adaas/a-concept\";\n\n\nexport class A_FrameDynamicContentError extends A_Error {\n\n static readonly GenerationFailed = 'GenerationFailed';\n static readonly PatchFailed = 'PatchFailed';\n static readonly InvalidPatch = 'InvalidPatch';\n static readonly PieceNotFound = 'PieceNotFound';\n}\n","import { A_Fragment } from \"@adaas/a-concept\";\nimport { A_FrameVector } from \"../A-FrameVector/A-FrameVector.entity\";\nimport { A_FrameContentPatchOperation } from \"./A-FrameDynamicContent.types\";\nimport { A_FrameSegment } from \"../A-FrameSegment\";\n\n\nexport interface A_FrameDynamicContentIndex_SearchResult {\n segment: A_FrameSegment;\n score: number;\n}\n\n\nexport class A_FrameDynamicContentIndex extends A_Fragment {\n\n /** Maximum segments forwarded to the server in a single patch request. */\n static readonly PATCH_PIECE_LIMIT = 5;\n\n /** Ordered list of segment IDs — defines the canonical reading order. */\n private _order: string[] = [];\n\n /** O(1) lookup by id. */\n private _map: Map<string, A_FrameSegment> = new Map();\n\n // ── Accessors ─────────────────────────────────────────────────────────────\n\n get count(): number {\n return this._order.length;\n }\n\n get size(): number {\n return this._order.length;\n }\n\n // ── Basic mutation ────────────────────────────────────────────────────────\n\n /** Append one or more segments to the end. */\n add(...segments: A_FrameSegment[]): void {\n segments.forEach(seg => {\n this._map.set(seg.id as string, seg);\n if (!this._order.includes(seg.id as string)) {\n this._order.push(seg.id as string);\n }\n });\n }\n\n /** Replace the content of an existing segment in-place (position unchanged). */\n update(segment: A_FrameSegment): void {\n this._map.set(segment.id, segment);\n if (!this._order.includes(segment.id)) {\n this._order.push(segment.id);\n }\n }\n\n /** Remove a segment by id. */\n remove(id: string): void {\n this._map.delete(id);\n const idx = this._order.indexOf(id);\n if (idx !== -1) this._order.splice(idx, 1);\n }\n\n /** Remove all segments. */\n clear(): void {\n this._map.clear();\n this._order = [];\n }\n\n // ── Positional insertion ──────────────────────────────────────────────────\n\n /** Insert `segment` immediately before the segment with `targetId`. */\n insertBefore(targetId: string, segment: A_FrameSegment): void {\n this._map.set(segment.id, segment);\n const targetIdx = this._order.indexOf(targetId);\n if (targetIdx === -1) {\n this._order.push(segment.id);\n } else {\n this._order.splice(targetIdx, 0, segment.id);\n }\n }\n\n /** Insert `segment` immediately after the segment with `targetId`. */\n insertAfter(targetId: string, segment: A_FrameSegment): void {\n this._map.set(segment.id, segment);\n const targetIdx = this._order.indexOf(targetId);\n if (targetIdx === -1) {\n this._order.push(segment.id);\n } else {\n this._order.splice(targetIdx + 1, 0, segment.id);\n }\n }\n\n /** Swap the content of `targetId` with `segment`, keeping the same position. */\n replace(targetId: string, segment: A_FrameSegment): void {\n const pos = this._order.indexOf(targetId);\n if (pos === -1) return;\n this._map.delete(targetId);\n this._map.set(segment.id, segment);\n this._order[pos] = segment.id;\n }\n\n // ── Position management ────────────────────────────────────────────────────\n\n /** Move the segment with `id` to absolute zero-based `newPosition`. */\n moveTo(id: string, newPosition: number): void {\n const from = this._order.indexOf(id);\n if (from === -1) return;\n this._order.splice(from, 1);\n const clipped = Math.max(0, Math.min(newPosition, this._order.length));\n this._order.splice(clipped, 0, id);\n }\n\n /** Move `id` to directly before `targetId`. */\n moveBefore(id: string, targetId: string): void {\n const from = this._order.indexOf(id);\n if (from === -1) return;\n this._order.splice(from, 1);\n const to = this._order.indexOf(targetId);\n this._order.splice(to === -1 ? 0 : to, 0, id);\n }\n\n /** Move `id` to directly after `targetId`. */\n moveAfter(id: string, targetId: string): void {\n const from = this._order.indexOf(id);\n if (from === -1) return;\n this._order.splice(from, 1);\n const to = this._order.indexOf(targetId);\n this._order.splice(to === -1 ? this._order.length : to + 1, 0, id);\n }\n\n // ── Patch operation dispatch ──────────────────────────────────────────────\n\n /**\n * Apply a single `A_FrameContentPatchOperation` to the index.\n * For `add` and `replace` the caller must supply the resolved `segment`.\n * For `remove` only the `op` is needed.\n */\n applyOperation(op: A_FrameContentPatchOperation, segment?: A_FrameSegment): void {\n switch (op.action) {\n case 'remove': {\n if (op.targetId) this.remove(op.targetId);\n break;\n }\n case 'replace': {\n if (op.targetId && segment) this.replace(op.targetId, segment);\n break;\n }\n case 'add': {\n if (!segment) break;\n if (!op.targetId || op.position === 'append') {\n this.add(segment);\n } else if (op.position === 'before') {\n this.insertBefore(op.targetId, segment);\n } else {\n // 'after' is the default\n this.insertAfter(op.targetId, segment);\n }\n break;\n }\n }\n }\n\n // ── Lookup ────────────────────────────────────────────────────────────────\n\n get(id: string): A_FrameSegment | undefined {\n return this._map.get(id);\n }\n\n /** Returns all segments in their current canonical order. */\n list(): A_FrameSegment[] {\n return this._order\n .map(id => this._map.get(id))\n .filter((s): s is A_FrameSegment => s !== undefined);\n }\n\n // ── Search ────────────────────────────────────────────────────────────────\n\n /**\n * Computes the centroid (element-wise mean) of all embedded segments.\n * Returns `null` when no segments have been embedded yet.\n * The centroid represents the overall semantic \"centre of gravity\" of this\n * content block and is used by `A_FrameDynamicContent.compareTo()` to\n * measure similarity between two content instances.\n */\n centroid(): A_FrameVector | null {\n const embedded = this.list().filter(s => s.isEmbed && s.vector);\n if (embedded.length === 0) return null;\n\n const dim = embedded[0].vector!.length;\n const sum = new Float32Array(dim);\n\n for (const seg of embedded) {\n const vals = seg.vector!.values;\n for (let i = 0; i < dim; i++) sum[i] += vals[i];\n }\n for (let i = 0; i < dim; i++) sum[i] /= embedded.length;\n\n return new A_FrameVector(sum);\n }\n\n /**\n * Rank all embedded segments by cosine similarity to the query vector.\n */\n search(\n vector: A_FrameVector,\n topK: number = A_FrameDynamicContentIndex.PATCH_PIECE_LIMIT,\n ): A_FrameDynamicContentIndex_SearchResult[] {\n const queryVec = vector.normalize();\n\n return this.list()\n .filter(s => s.isEmbed && s.vector)\n .map(s => ({\n segment: s,\n score: queryVec.dot(s.vector!.normalize()),\n }))\n .sort((a, b) => b.score - a.score)\n .slice(0, topK);\n }\n\n /**\n * Rank segments by how many instruction keywords appear in their content.\n * Words shorter than 4 characters are ignored.\n */\n searchByKeywords(\n instruction: string,\n topK: number = A_FrameDynamicContentIndex.PATCH_PIECE_LIMIT,\n ): A_FrameDynamicContentIndex_SearchResult[] {\n const keywords = instruction\n .toLowerCase()\n .split(/\\W+/)\n .filter(w => w.length > 3);\n\n if (keywords.length === 0) return [];\n\n return this.list()\n .map(segment => {\n const lower = segment.content.toLowerCase();\n const score = keywords.reduce(\n (acc, kw) => acc + (lower.includes(kw) ? 1 : 0),\n 0,\n );\n return { segment, score };\n })\n .filter(s => s.score > 0)\n .sort((a, b) => b.score - a.score)\n .slice(0, topK);\n }\n\n /**\n * Select at most `limit` segments most relevant to a patch instruction.\n *\n * Priority:\n * 1. Vector search — when `vector` is provided and segments carry embeddings.\n * 2. Keyword search — fallback when embeddings are absent or vector is null.\n * 3. Identity — first N segments when neither search finds candidates.\n */\n selectForPatch(\n vector: A_FrameVector | null,\n instruction: string,\n limit: number = A_FrameDynamicContentIndex.PATCH_PIECE_LIMIT,\n ): A_FrameSegment[] {\n const all = this.list();\n if (all.length <= limit) return all;\n\n // 1. Vector search\n if (vector) {\n const hasEmbedded = all.some(s => s.isEmbed);\n if (hasEmbedded) {\n const results = this.search(vector, limit);\n if (results.length > 0) return results.map(r => r.segment);\n }\n }\n\n // 2. Keyword fallback\n const kwResults = this.searchByKeywords(instruction, limit);\n if (kwResults.length > 0) return kwResults.map(r => r.segment);\n\n // 3. Identity\n return all.slice(0, limit);\n }\n\n // ── Similarity helpers ────────────────────────────────────────────────────\n\n cosineSimilarity(a: A_FrameVector, b?: A_FrameVector): number {\n if (!b) return 0;\n const dot = a.dot(b);\n const mag = a.magnitude() * b.magnitude();\n return mag === 0 ? 0 : dot / mag;\n }\n}\n","import { A_Context, A_Entity, A_Scope } from \"@adaas/a-concept\";\nimport {\n A_FrameContentPatchResponse,\n A_FrameDynamicContent_Init,\n A_FrameDynamicContent_Serialized,\n} from \"./A-FrameDynamicContent.types\";\nimport { A_FrameDynamicContentFeatures } from \"./A-FrameDynamicContent.constants\";\nimport { A_FrameDynamicContentOperation } from \"./A-FrameDynamicContentOperation.context\";\nimport { A_FrameDynamicContentError } from \"./A-FrameDynamicContent.error\";\nimport { A_FrameDynamicPatch } from \"../A-FrameDynamicPatch/A-FrameDynamicPatch.entity\";\nimport { A_FrameDynamicContentIndex } from \"./A-FrameDynamicContentIndex.context\";\nimport { A_FrameSegment } from \"../A-FrameSegment\";\nimport { A_FRAME_MODELS } from \"../A-FrameModels/A-FrameModels.constants\";\n\n\nexport class A_FrameDynamicContent extends A_Entity<A_FrameDynamicContent_Init, A_FrameDynamicContent_Serialized> {\n\n static get concept(): string {\n return 'a-frame';\n }\n\n // ── Identity ─────────────────────────────────────────────────────────────\n prompt!: string;\n createdAt!: number;\n\n // ── Config ───────────────────────────────────────────────────────────────\n private model!: string;\n private _system!: string | undefined;\n\n // ── State ────────────────────────────────────────────────────────────────\n private _history!: A_FrameDynamicPatch[];\n private _version!: number;\n private _patchPieceLimit!: number;\n\n // ── Initialisation ───────────────────────────────────────────────────────\n\n /**\n * The scope of the current Content stores all related data to it \n */\n protected _scope!: A_Scope\n\n /**\n * \n */\n get scope(): A_Scope {\n if (!this._scope) {\n this._scope = A_Context.allocate(this, new A_Scope({ name: `${this.aseid.id}-scope` }));\n }\n\n return this._scope;\n }\n\n get index(): A_FrameDynamicContentIndex {\n const index = this.scope.resolve(A_FrameDynamicContentIndex)!;\n return index;\n }\n\n fromNew(options: A_FrameDynamicContent_Init) {\n\n super.fromNew(options);\n\n const index = new A_FrameDynamicContentIndex({ name: `${this.aseid.id}` });\n this.scope.register(index);\n\n this.createdAt = Date.now();\n\n this.prompt = options.prompt;\n this.model = options.options?.model || A_FRAME_MODELS.LYRA;\n this._system = options.options?.system;\n this._patchPieceLimit = options.options?.patchPieceLimit || A_FrameDynamicContentIndex.PATCH_PIECE_LIMIT;\n\n this._history = [];\n this._version = 0;\n }\n\n // ── Accessors ────────────────────────────────────────────────────────────\n\n /** Ordered list of content pieces (output of the last generate or patch). */\n get segments(): ReadonlyArray<A_FrameSegment> {\n return this.index.list();\n }\n\n /** Full content reconstructed from all segments in index order. */\n get content(): string {\n return this.index.list()\n .map(s => s.content)\n .join('\\n');\n }\n\n /** Alias for `content` — kept for backward compatibility. */\n get text(): string {\n return this.content;\n }\n\n /** Immutable patch history. */\n get history(): ReadonlyArray<A_FrameDynamicPatch> {\n return this._history;\n }\n\n /** Current content version (increments with each patch). */\n get version(): number {\n return this._version;\n }\n\n /** The AI model name to use for generation / patching. */\n get modelName(): string {\n return this.model;\n }\n\n /** Optional system prompt forwarded to the AI for generation and patching. */\n get systemPrompt(): string | undefined {\n return this._system;\n }\n\n // ── Main pipeline ─────────────────────────────────────────────────────────\n\n /**\n * Generate content from the entity's prompt.\n * Populates `pieces` and creates the first history entry.\n */\n async generate(): Promise<void> {\n const operation = new A_FrameDynamicContentOperation();\n\n if (!this.scope.isInheritedFrom(A_Context.scope(this)))\n this.scope.inherit(A_Context.scope(this));\n\n const executionScope = new A_Scope({\n name: 'a-frame-dynamic-content-generate',\n fragments: [operation],\n }).inherit(this.scope);\n\n try {\n await this.call(A_FrameDynamicContentFeatures.Generate, executionScope);\n executionScope.destroy();\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameDynamicContentError({\n title: A_FrameDynamicContentError.GenerationFailed,\n description: `Failed to generate content: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n /**\n * Apply a natural-language patch instruction to the current pieces.\n * The server identifies which pieces to add, replace, or remove using\n * semantic search over piece embeddings.\n */\n async patch(instruction: string): Promise<void> {\n if (!this.scope.isInheritedFrom(A_Context.scope(this)))\n this.scope.inherit(A_Context.scope(this));\n\n const executionScope = new A_Scope({\n name: 'a-frame-dynamic-content-patch',\n }).inherit(this.scope);\n\n const inputSegment = new A_FrameSegment({\n content: instruction,\n options: { task: 'query' },\n });\n\n executionScope.register(inputSegment);\n\n await inputSegment.embed();\n\n const targetSegments = this.index.selectForPatch(inputSegment.vector ?? null, instruction, this._patchPieceLimit);\n\n const operation = new A_FrameDynamicContentOperation({\n instruction,\n segments: targetSegments\n });\n\n executionScope.register(operation);\n\n try {\n\n await this.call(A_FrameDynamicContentFeatures.Patch, executionScope);\n\n executionScope.destroy();\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameDynamicContentError({\n title: A_FrameDynamicContentError.PatchFailed,\n description: `Failed to patch content: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n // ── Comparison ────────────────────────────────────────────────────────────\n\n /**\n * Returns a cosine similarity score (0–1) between this content and `other`.\n *\n * The score is computed from the centroid of each content's embedded\n * segments — the element-wise mean of all segment vectors. Two contents\n * about the same topic should score close to 1; unrelated contents will\n * score near 0.\n *\n * Returns 0 if either content has no embedded segments.\n *\n * @example\n * const cats1 = new A_FrameDynamicContent({ prompt: 'Article about cats' });\n * const cats2 = new A_FrameDynamicContent({ prompt: 'Article about cats' });\n * const cars = new A_FrameDynamicContent({ prompt: 'Article about cars' });\n * // After generate() on all three:\n * cats1.compareTo(cats2); // ~0.92 — high\n * cats1.compareTo(cars); // ~0.45 — low\n */\n compareTo(other: A_FrameDynamicContent): number {\n const centroidA = this.index.centroid();\n const centroidB = other.index.centroid();\n if (!centroidA || !centroidB) return 0;\n return centroidA.cosineSimilarity(centroidB);\n }\n\n // ── Hydration ─────────────────────────────────────────────────────────────\n\n /**\n * Populate index from the segments created by the channel after a generate response.\n * Creates the first history entry.\n */\n hydrateFromGeneration(\n segments: A_FrameSegment[],\n meta: { model: string; serverVersion: string },\n ): void {\n\n segments.forEach(s => this.index.add(s));\n\n this._history.push(new A_FrameDynamicPatch({\n version: this._version,\n timestamp: Date.now(),\n reason: `Generated for: \"${this.prompt}\"`,\n encoded: Buffer.from(JSON.stringify(this.index.list())).toString('base64'),\n delta: this.index.size,\n }));\n }\n\n /**\n * Apply a patch diff returned by the server to the current piece list.\n * Increments the version and records a history entry.\n */\n hydrateFromPatch(\n patchResult: A_FrameContentPatchResponse,\n meta: { model: string; serverVersion: string },\n ): void {\n\n const prevCount = this.index.size;\n\n // Pre-compute normalized content set for near-duplicate detection.\n // Normalization: lowercase, strip punctuation, collapse whitespace.\n const normalize = (s: string): string =>\n s.toLowerCase().replace(/[^\\w\\s]/g, '').replace(/\\s+/g, ' ').trim();\n\n const existingNormalized = this.index.list().map(s => normalize(s.content));\n const isNearDuplicate = (newContent: string): boolean => {\n const norm = normalize(newContent);\n if (norm.length < 8) return false; // too short to matter\n return existingNormalized.some(existing =>\n existing === norm || // exact match\n existing.includes(norm) // new text is a strict substring of something existing\n // Note: do NOT check norm.includes(existing) — that would block \n // valid extensions where new content starts with an existing phrase.\n );\n };\n\n for (const op of patchResult.operations) {\n // Validate action\n if (!['add', 'replace', 'remove'].includes(op.action)) continue;\n\n let segment: A_FrameSegment | undefined;\n if (op.segment) {\n // Guard: LLM sometimes returns existing (or near-duplicate) content — skip those.\n const dup = (op.action === 'add' || op.action === 'replace') && isNearDuplicate(op.segment.content);\n if (dup) continue;\n\n segment = new A_FrameSegment({ content: op.segment.content, options: { task: 'document' } });\n if (op.segment.embedding?.length) {\n segment.hydrateFromEmbedding(new Float32Array(op.segment.embedding));\n }\n }\n\n // Validate position for 'add' operations — reject composite strings like \"before|after|append\"\n if (op.action === 'add') {\n const validPositions = new Set(['before', 'after', 'append', undefined]);\n if (!validPositions.has(op.position as any)) {\n // Malformed position — treat as append\n (op as any).position = 'append';\n (op as any).targetId = undefined;\n }\n }\n\n this.index.applyOperation(op, segment);\n }\n\n this._version++;\n\n this._history.push(new A_FrameDynamicPatch({\n version: this._version,\n timestamp: Date.now(),\n reason: patchResult.patchSummary,\n encoded: Buffer.from(JSON.stringify(this.index.list())).toString('base64'),\n delta: this.index.size - prevCount,\n }));\n }\n\n // ── Serialisation ──────────────────────────────────────────────────────────\n\n toJSON(): A_FrameDynamicContent_Serialized {\n return {\n ...super.toJSON(),\n prompt: this.prompt,\n metadata: {\n model: this.model,\n createdAt: this.createdAt,\n },\n history: this._history.map(item => item.toJSON()),\n };\n }\n\n}\n\n"]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/lib/A-FrameModels/A-FrameModels.constants.ts
|
|
4
|
+
var A_FRAME_MODELS = {
|
|
5
|
+
// ── Embedding ─────────────────────────────────────────────────────────────
|
|
6
|
+
/**
|
|
7
|
+
* Antares — component definition embedding model.
|
|
8
|
+
*
|
|
9
|
+
* Indexes component sources and namespace definitions with the
|
|
10
|
+
* `search_document:` prefix. The reference system everything navigates
|
|
11
|
+
* against. Use when storing content that will be retrieved later.
|
|
12
|
+
*/
|
|
13
|
+
ANTARES: "adaas-antares-v1",
|
|
14
|
+
/**
|
|
15
|
+
* Vega — search query embedding model.
|
|
16
|
+
*
|
|
17
|
+
* Produces `search_query:` prefixed vectors for retrieval against the
|
|
18
|
+
* Antares index. Use when embedding a user query or search term.
|
|
19
|
+
*/
|
|
20
|
+
VEGA: "adaas-vega-v1",
|
|
21
|
+
// ── Completion ────────────────────────────────────────────────────────────
|
|
22
|
+
/**
|
|
23
|
+
* Rigel — code completion model.
|
|
24
|
+
*
|
|
25
|
+
* Generates TypeScript/JavaScript code with syntax precision.
|
|
26
|
+
* Default model for `A_FrameCompletion` — use for code generation,
|
|
27
|
+
* scaffolding, and structured source output.
|
|
28
|
+
*/
|
|
29
|
+
RIGEL: "adaas-rigel-v1",
|
|
30
|
+
/**
|
|
31
|
+
* Pulsar — software architecture completion model.
|
|
32
|
+
*
|
|
33
|
+
* Decomposes requirements into structured component designs.
|
|
34
|
+
* Use for architecture analysis, DSG structure generation, and
|
|
35
|
+
* patch planning.
|
|
36
|
+
*/
|
|
37
|
+
PULSAR: "adaas-pulsar-v1",
|
|
38
|
+
/**
|
|
39
|
+
* Lyra — bridge/classifier model.
|
|
40
|
+
*
|
|
41
|
+
* Translates content semantics into structured text.
|
|
42
|
+
* Default model for `A_FrameDynamicContent` — use for content
|
|
43
|
+
* generation and patching.
|
|
44
|
+
*/
|
|
45
|
+
LYRA: "adaas-lyra-v1",
|
|
46
|
+
/**
|
|
47
|
+
* Nova — param extraction model.
|
|
48
|
+
*
|
|
49
|
+
* Illuminates structured JSON parameters hidden inside unstructured text.
|
|
50
|
+
* Outputs constrained JSON by default.
|
|
51
|
+
*/
|
|
52
|
+
NOVA: "adaas-nova-v1"
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
exports.A_FRAME_MODELS = A_FRAME_MODELS;
|
|
56
|
+
//# sourceMappingURL=chunk-64QCZG53.cjs.map
|
|
57
|
+
//# sourceMappingURL=chunk-64QCZG53.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/A-FrameModels/A-FrameModels.constants.ts"],"names":[],"mappings":";;;AAcO,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAW1B,OAAA,EAAS,kBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQT,IAAA,EAAM,eAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWN,KAAA,EAAO,gBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASP,MAAA,EAAQ,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASR,IAAA,EAAM,eAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQN,IAAA,EAAM;AAEV","file":"chunk-64QCZG53.cjs","sourcesContent":["/**\n * Adaas named model identifiers — client-side mirror of the server catalog.\n *\n * These are the stable logical identifiers for each model role. Pass them\n * wherever an entity or channel method accepts a `model` option to target a\n * specific named model on the server.\n *\n * The server resolves these IDs to physical backend models (e.g. Ollama,\n * OpenAI) and applies any required task prefixes automatically. Swapping to a\n * dedicated fine-tuned model in the future requires no changes on the client.\n *\n * @see adaas-a-frame-mcp/README.models.md\n */\n\nexport const A_FRAME_MODELS = {\n\n // ── Embedding ─────────────────────────────────────────────────────────────\n\n /**\n * Antares — component definition embedding model.\n *\n * Indexes component sources and namespace definitions with the\n * `search_document:` prefix. The reference system everything navigates\n * against. Use when storing content that will be retrieved later.\n */\n ANTARES: 'adaas-antares-v1' as const,\n\n /**\n * Vega — search query embedding model.\n *\n * Produces `search_query:` prefixed vectors for retrieval against the\n * Antares index. Use when embedding a user query or search term.\n */\n VEGA: 'adaas-vega-v1' as const,\n\n // ── Completion ────────────────────────────────────────────────────────────\n\n /**\n * Rigel — code completion model.\n *\n * Generates TypeScript/JavaScript code with syntax precision.\n * Default model for `A_FrameCompletion` — use for code generation,\n * scaffolding, and structured source output.\n */\n RIGEL: 'adaas-rigel-v1' as const,\n\n /**\n * Pulsar — software architecture completion model.\n *\n * Decomposes requirements into structured component designs.\n * Use for architecture analysis, DSG structure generation, and\n * patch planning.\n */\n PULSAR: 'adaas-pulsar-v1' as const,\n\n /**\n * Lyra — bridge/classifier model.\n *\n * Translates content semantics into structured text.\n * Default model for `A_FrameDynamicContent` — use for content\n * generation and patching.\n */\n LYRA: 'adaas-lyra-v1' as const,\n\n /**\n * Nova — param extraction model.\n *\n * Illuminates structured JSON parameters hidden inside unstructured text.\n * Outputs constrained JSON by default.\n */\n NOVA: 'adaas-nova-v1' as const,\n\n} as const;\n\nexport type A_FrameModelId = typeof A_FRAME_MODELS[keyof typeof A_FRAME_MODELS];\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-652OEICJ.cjs"}
|