@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
package/dist/cli.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/A-FrameVector/A-FrameVector.entity.ts","../src/helpers/Hash.helper.ts","../src/lib/A-FrameNamespace/A-FrameNamespace.constants.ts","../src/lib/A-FrameModels/A-FrameModels.constants.ts","../src/lib/A-FrameNamespace/A-FrameNamespace.entity.ts","../src/lib/A-FrameIndex/A-FrameIndex.context.ts","../src/lib/A-FrameLogger/A-FrameLogger.constants.ts","../src/lib/A-FrameLogger/A-FrameLogger.component.ts","../src/lib/A-FrameLogger/A-FrameLogger.component.env-node.ts","../src/lib/A-FrameBundle/A-FrameBundle.constants.ts","../src/lib/A-FrameStorage/A-FrameStorage.codec.ts","../src/lib/A-FrameCrypto/A-FrameCrypto.component.env-node.ts","../package.json","../src/lib/A-FrameBundle/A-FrameBundle.builder.env-node.ts","../src/lib/A-FrameEnv/A-FrameEnv.fragment.env-node.ts","../src/lib/A-FrameChannel/A-FrameChannel.constants.ts","../src/lib/A-FrameChannel/A-FrameChannelRequest.context.ts","../src/lib/A-FrameChannel/A-FrameChannel.error.ts","../src/lib/A-FrameDefinition/A-FrameDefinition.constants.ts","../src/lib/A-FrameDefinition/A-FrameDefinition.entity.ts","../src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.constants.ts","../src/lib/A-FrameDynamicStructure/A-FrameDynamicStructureOperation.context.ts","../src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.error.ts","../src/lib/A-FrameDynamicPatch/A-FrameDynamicPatch.entity.ts","../src/lib/A-FrameDynamicStructure/A-FrameComponentMapIndex.context.ts","../src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.entity.ts","../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-FrameSegment/A-FrameSegment.constants.ts","../src/lib/A-FrameSegment/A-FrameSegment.entity.ts","../src/lib/A-FrameDynamicContent/A-FrameDynamicContent.entity.ts","../src/lib/A-FrameCompletion/A-FrameCompletion.constants.ts","../src/lib/A-FrameCompletion/A-FrameCompletion.entity.ts","../src/lib/A-FrameSchema/A-FrameSchema.constants.ts","../src/lib/A-FrameSchema/A-FrameSchema.entity.ts","../src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.constants.ts","../src/lib/A-FrameDynamicFeature/A-FrameDynamicFeatureOperation.context.ts","../src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.error.ts","../src/lib/A-FrameDynamicFeature/A-FrameMethodMapIndex.context.ts","../src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.entity.ts","../src/lib/A-FrameChannel/A-FrameChannel.component.ts","../src/lib/A-FrameCLI/A-FrameCLI.container.ts","../src/lib/A-Frame/A-Frame.guard.ts","../src/lib/A-Frame/A-Frame.error.ts","../src/lib/A-Frame/decorators/A-FrameDefine.decorator.ts","../src/lib/A-Frame/decorators/A-FrameNamespace.decorator.ts","../src/lib/A-Frame/A-Frame.component.ts","../src/lib/A-FrameStorage/A-FrameStorage.constants.ts","../src/lib/A-FrameStorage/A-FrameStorageOperation.context.ts","../src/lib/A-FrameStorage/A-FrameStorage.error.ts","../src/lib/A-FrameStorage/A-FrameStorage.component.ts","../src/lib/A-FrameCredentials/A-FrameCredentials.constants.ts","../src/lib/A-FrameCredentials/A-FrameCredentials.entity.ts","../src/lib/A-Frame/A-Frame.context.ts","../src/lib/A-FrameChannel/A-FrameChannelEvent.context.ts","../src/lib/A-FrameChannel/A-FrameChannelStream.entity.ts","../src/lib/A-FrameChannel/A-FrameChannel.component.env-node.ts","../src/lib/A-FrameStorage/node/A-FrameNodeStorage.component.ts","../src/lib/A-FrameDynamicStructure/A-FrameComponentMapper.component.ts","../src/lib/A-FrameDynamicFeature/A-FrameMethodMapper.component.ts","../src/lib/A-Frame/A-Frame.component.env-node.ts","../src/concept.ts"],"names":["A_Entity","A_FormatterHelper","A_Fragment","A_Scope","A_Context","ASEID","A_Component","version","fs","path","A_Error","A_Dependency","A_CommonHelper","A_Feature","A_Caller","A_Container","path2","fs2","sep","A_Concept","A_Inject","A_TypeGuards","targetClass","source","https","http","resolve"],"mappings":"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","file":"cli.cjs","sourcesContent":["import { A_Entity } from \"@adaas/a-concept\"\n\nexport class A_FrameVector extends A_Entity {\n\n static get concept(): string {\n return 'a-frame';\n }\n\n readonly values: Float32Array\n\n constructor(values: number[] | Float32Array) {\n super();\n this.values = values instanceof Float32Array\n ? values\n : new Float32Array(values)\n }\n\n get dimensions(): number {\n return this.values.length\n }\n\n get length(): number {\n return this.values.length\n }\n\n\n isEqualTo(vector: A_FrameVector): boolean {\n if (this.length !== vector.length) return false;\n for (let i = 0; i < this.length; i++) {\n if (this.values[i] !== vector.values[i]) return false;\n }\n return true;\n }\n\n magnitude(): number {\n let sum = 0\n for (let i = 0; i < this.values.length; i++) {\n sum += this.values[i] ** 2\n }\n return Math.sqrt(sum)\n }\n\n normalize(): A_FrameVector {\n const mag = this.magnitude()\n if (mag === 0) return this\n\n const normalized = new Float32Array(this.length)\n for (let i = 0; i < this.length; i++) {\n normalized[i] = this.values[i] / mag\n }\n\n return new A_FrameVector(normalized)\n }\n\n dot(other: A_FrameVector): number {\n this.assertSameLength(other)\n\n let sum = 0\n for (let i = 0; i < this.length; i++) {\n sum += this.values[i] * other.values[i]\n }\n return sum\n }\n\n /**\n * Returns the cosine similarity between this vector and `other` (range −1 to 1).\n * Vectors with zero magnitude return 0.\n */\n cosineSimilarity(other: A_FrameVector): number {\n const magA = this.magnitude();\n const magB = other.magnitude();\n if (magA === 0 || magB === 0) return 0;\n return this.normalize().dot(other.normalize());\n }\n\n private assertSameLength(other: A_FrameVector) {\n if (this.length !== other.length) {\n throw new Error(\n `Embedding dimension mismatch: ${this.length} vs ${other.length}`\n )\n }\n }\n\n\n toArray(): number[] {\n return Array.from(this.values)\n }\n}\n","\n\nexport class A_FrameHashHelper {\n\n // ─── Hash (FNV-1a 32-bit, no external deps) ──────────────────────────────────\n static fnv1a(str: string): string {\n let hash = 2_166_136_261; // offset basis\n for (let i = 0; i < str.length; i++) {\n hash ^= str.charCodeAt(i);\n hash = (hash * 16_777_619) >>> 0; // keep 32-bit unsigned\n }\n return hash.toString(16).padStart(8, \"0\");\n }\n}","import { A_FrameNamespace } from \"./A-FrameNamespace.entity\";\n\n\nexport const A_FRAME_DEFAULT_NAMESPACE_KEY = 'default';\n\n\nexport const A_FrameNamespaceFeatures = {\n Load: '_A_FRAME_NAMESPACE_LOAD',\n Save: '_A_FRAME_NAMESPACE_SAVE',\n Embed: '_A_FRAME_NAMESPACE_EMBED',\n Destroy: '_A_FRAME_NAMESPACE_DESTROY',\n} as const;","/**\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","import { A_Context, A_Entity, A_FormatterHelper, A_Scope } from \"@adaas/a-concept\";\nimport { A_FrameVector } from \"../A-FrameVector/A-FrameVector.entity\";\nimport {\n A_FrameNamespace_Init,\n A_FrameNamespace_Serialized,\n A_FrameNamespace_Record,\n A_FrameNamespace_EmbeddingMeta,\n} from \"./A-FrameNamespace.types\";\nimport { A_FrameHashHelper } from \"@adaas/a-frame/helpers/Hash.helper\";\nimport { A_FrameNamespaceFeatures } from \"./A-FrameNamespace.constants\";\nimport { A_FRAME_MODELS } from \"../A-FrameModels\";\n\n\nexport class A_FrameNamespace extends A_Entity<A_FrameNamespace_Init, A_FrameNamespace_Serialized> {\n\n static get concept(): string {\n return 'a-frame';\n }\n\n protected _name!: string;\n protected _hash!: string;\n protected _description?: string;\n protected _metadata?: Record<string, any>;\n protected _vector?: A_FrameVector;\n protected _embeddedAt?: number;\n // ─── Provenance ───────────────────────────────────────────────────────────\n protected _embeddingModel?: string; protected _requestedModel!: string; protected _credentialId?: string;\n protected _aFrameVersion?: string;\n protected _aFrameServerVersion?: string;\n\n\n // ─── Getters ──────────────────────────────────────────────────────────────\n\n get id(): string {\n return this.aseid.id;\n }\n\n get name(): string {\n return this._name;\n }\n\n get hash(): string {\n return this._hash;\n }\n\n get description(): string | undefined {\n return this._description;\n }\n\n get metadata(): Record<string, any> {\n return this._metadata || {};\n }\n\n get vector(): A_FrameVector | undefined {\n return this._vector;\n }\n\n get embedding(): Float32Array | null {\n return this._vector?.values ?? null;\n }\n\n //-----------------------------------------------------------------------------------------------------\n //--------------------------------------- Computed properties -----------------------------------------\n //-----------------------------------------------------------------------------------------------------\n get aFrameServerVersion(): string | undefined {\n return this._aFrameServerVersion;\n }\n\n get aFrameVersion(): string | undefined {\n return this._aFrameVersion;\n }\n\n get isEmbed(): boolean {\n return this._vector !== undefined;\n }\n /**\n * The model requested for embedding at init time. Defaults to `A_FRAME_MODELS.ANTARES`.\n * Sent to the server in the embed request body as the `model` field.\n */\n get requestedModel(): string {\n return this._requestedModel;\n }\n /**\n * Saves Namespace to storage. The actual implementation of saving is handled by the A_FrameNamespaceFeatures.Save feature, which can be implemented by the environment to persist the definition to a database, file system, or other storage mechanism.\n * \n * @param scope \n * @returns \n */\n save(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameNamespaceFeatures.Save, scope);\n }\n /**\n * Deletes the namespace from storage. The actual implementation of deletion is handled by the A_FrameNamespaceFeatures.Destroy feature, which can be implemented by the environment to remove the namespace from the database, file system, or other storage mechanism.\n * \n * @param scope \n * @returns \n */\n destroy(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameNamespaceFeatures.Destroy, scope);\n }\n /**\n * Loads the namespace from storage. The actual implementation of loading is handled by the A_FrameNamespaceFeatures.Load feature, which can be implemented by the environment to retrieve the namespace from the database, file system, or other storage mechanism and populate the entity's properties accordingly.\n * \n * @param scope \n * @returns \n */\n async load(scope?: A_Scope): Promise<void> {\n return this.call(A_FrameNamespaceFeatures.Load, scope);\n }\n /**\n * Updates the definition's properties. This can be used to modify the source code, description, metadata, or namespace of the definition. After updating, you may want to call `embed()` again to refresh the embedding based on the new content.\n * \n * @param updates \n */\n update(updates: Partial<Pick<A_FrameNamespace, 'name' | 'description' | 'metadata'>>): void {\n if (updates.name) this._name = updates.name;\n if (updates.description !== undefined) this._description = updates.description;\n if (updates.metadata !== undefined) this._metadata = updates.metadata;\n }\n /**\n * Generates an embedding vector for the namespace using the A_FrameNamespaceFeatures.Embed feature. This typically involves sending the namespace's content (name + description) to an embedding model and storing the resulting vector in the entity. Once embedded, the namespace can be searched using its vector representation.\n * \n * @param scope \n * @returns \n */\n embed(scope?: A_Scope): Promise<void> | void {\n console.log(`Embedding namespace \"${this._name}\"...`);\n return this.call(A_FrameNamespaceFeatures.Embed, scope);\n }\n\n // ─── A_Entity lifecycle ───────────────────────────────────────────────────\n\n fromNew(init: A_FrameNamespace_Init): void {\n\n this.aseid = this.generateASEID({\n id: A_FormatterHelper.toKebabCase(init.name),\n scope: 'a-frame',\n });\n\n this._name = init.name;\n\n const hashSource = this._name\n + (init.description || '')\n + (init.metadata ? JSON.stringify(init.metadata) : '');\n\n this._hash = A_FrameHashHelper.fnv1a(hashSource);\n this._description = init.description;\n this._metadata = init.metadata;\n this._requestedModel = init.model ?? A_FRAME_MODELS.ANTARES;\n }\n\n fromJSON(serialized: A_FrameNamespace_Serialized): void {\n this._name = serialized.name;\n this._hash = serialized.hash;\n this._description = serialized.description;\n this._metadata = serialized.metadata;\n this._vector = serialized.embedding ? new A_FrameVector(serialized.embedding) : undefined;\n this._embeddedAt = serialized.embeddedAt;\n this._embeddingModel = serialized.embeddingModel;\n this._credentialId = serialized.credentialId;\n this._aFrameVersion = serialized.aFrameVersion;\n this._aFrameServerVersion = serialized.aFrameServerVersion;\n }\n\n\n\n toJSON(): A_FrameNamespace_Serialized {\n return {\n ...super.toJSON(),\n hash: this._hash,\n name: this._name,\n description: this._description,\n metadata: this._metadata,\n embedding: this._vector?.values,\n embeddedAt: this._embeddedAt ?? Date.now(),\n embeddingModel: this._embeddingModel,\n credentialId: this._credentialId,\n aFrameVersion: this._aFrameVersion,\n aFrameServerVersion: this._aFrameServerVersion,\n };\n }\n\n\n // ─── Embedding hydration ──────────────────────────────────────────────────\n\n hydrateFromRecord(record: A_FrameNamespace_Record): void {\n if (record.hash !== this._hash) {\n throw new Error(\n `A_FrameNamespace.hydrateFromRecord: hash mismatch for \"${this._name}\" ` +\n `(expected ${this._hash}, got ${record.hash})`\n );\n }\n this._vector = new A_FrameVector(record.embedding);\n this._embeddedAt = record.embeddedAt;\n }\n\n hydrateFromEmbedding(embedding: Float32Array, meta?: A_FrameNamespace_EmbeddingMeta): void {\n this._vector = new A_FrameVector(embedding);\n this._embeddedAt = Date.now();\n if (meta) {\n this._embeddingModel = meta.model;\n this._credentialId = meta.credentialId ?? undefined;\n this._aFrameVersion = meta.aFrameVersion;\n this._aFrameServerVersion = meta.aFrameServerVersion;\n }\n }\n\n /**\n * Build the text string sent to the embedding model.\n * Uses name + description so the vector captures semantic intent.\n */\n toString(): string {\n const parts: string[] = [`// namespace: ${this._name}`];\n if (this._description) parts.push(`// ${this._description}`);\n return parts.join('\\n');\n }\n}\n\n","import { A_Concept, A_Context, A_Dependency, A_Fragment, A_Scope, ASEID } from \"@adaas/a-concept\";\nimport { A_FrameVector } from \"../A-FrameVector/A-FrameVector.entity\";\nimport { A_FrameNamespace } from \"../A-FrameNamespace/A-FrameNamespace.entity\";\nimport { A_FrameDefinition_SearchResult, A_FrameInheritanceFilter, A_FrameListOptions, A_FrameSearchOptions } from \"./A-FrameIndex.types\";\nimport { A_FrameDefinition } from \"../A-FrameDefinition\";\nimport { A_FRAME_DEFAULT_NAMESPACE_KEY } from \"../A-FrameNamespace/A-FrameNamespace.constants\";\n\n\n\nexport class A_FrameIndex extends A_Fragment {\n\n private static _instance: A_FrameIndex;\n\n static get instance(): A_FrameIndex {\n if (!A_FrameIndex._instance) {\n A_FrameIndex._instance = new A_FrameIndex();\n }\n return A_FrameIndex._instance;\n }\n\n static get indexSize(): number {\n return A_FrameIndex.instance.indexSize;\n }\n\n\n static get scope(): A_Scope {\n return A_Context.scope(this);\n }\n\n // ------------------------------------------------------------------------------------\n // --------------------Static Access to Instance Methods-------------------------------\n // ------------------------------------------------------------------------------------\n static inherit(scope: A_Scope) {\n A_FrameIndex.instance.inherit(scope);\n }\n static addDefinition(def: A_FrameDefinition): void {\n A_FrameIndex.instance.addDefinition(def);\n }\n static getDefinition(nameOrHash: string): A_FrameDefinition | undefined {\n return A_FrameIndex.instance.getDefinition(nameOrHash);\n }\n static listDefinitions(filter: A_FrameListOptions): A_FrameDefinition[] {\n return A_FrameIndex.instance.listDefinitions(filter);\n }\n static removeDefinition(def: A_FrameDefinition): void {\n A_FrameIndex.instance.removeDefinition(def);\n }\n static addNamespace(namespace: A_FrameNamespace): void {\n A_FrameIndex.instance.addNamespace(namespace);\n }\n static getDefaultNamespace(): A_FrameNamespace {\n return A_FrameIndex.instance.getDefaultNamespace();\n }\n static getNamespace(nameOrASEID: string | ASEID): A_FrameNamespace | undefined {\n return A_FrameIndex.instance.getNamespace(nameOrASEID);\n }\n static listNamespaces(): A_FrameNamespace[] {\n return A_FrameIndex.instance.listNamespaces();\n }\n static removeNamespace(namespace: A_FrameNamespace): void {\n A_FrameIndex.instance.removeNamespace(namespace);\n }\n static search(\n vector: A_FrameVector,\n options: A_FrameSearchOptions = {},\n ): A_FrameDefinition_SearchResult[] {\n return A_FrameIndex.instance.search(vector, options);\n }\n\n // -------------------------------------------------------------------------------------\n // ------------------------------ Instance State --------------------------------------\n // -------------------------------------------------------------------------------------\n\n private definitions: Map<string, A_FrameDefinition> = new Map();\n\n private namespaces: Map<string, A_FrameNamespace> = new Map();\n\n private _index!: {\n\n namespaceToDefinitions: WeakMap<A_FrameNamespace, Set<A_FrameDefinition>>,\n\n definitionToNamespace: WeakMap<A_FrameDefinition, A_FrameNamespace>,\n };\n /**\n * Scope where all definitions and namespaces are registered as dependencies, allowing for lookup by ASEID or constructor reference.\n */\n private scope!: A_Scope\n\n\n constructor() {\n if (A_FrameIndex._instance)\n return A_FrameIndex._instance;\n\n super({ name: 'A_FrameIndex' });\n\n this.scope = new A_Scope({ name: 'A_FrameIndexScope' });\n }\n\n /** Number of loaded records */\n get indexSize(): number {\n return this.definitions.size;\n }\n\n\n // static searchByText(\n // query: string,\n // channel: A_FrameChannel,\n // options: A_FrameSearchOptions = {},\n // ): Promise<A_FrameDefinition_SearchResult[]> {\n // return A_FrameIndex.instance.searchByText(query, channel, options);\n // }\n\n\n // ------------------------------------------------------------------------------------\n // ------------------------------ Instance Methods ------------------------------------\n // ------------------------------------------------------------------------------------\n inherit(scope: A_Scope) {\n this.scope.inherit(scope);\n }\n\n addDefinition(def: A_FrameDefinition): void {\n this.scope.register(def);\n\n const existingNamespace = this.namespaces.get(def.namespace.id);\n if (!existingNamespace) {\n this.addNamespace(def.namespace);\n }\n\n this.definitions.set(def.id, def);\n }\n\n getDefinition(name: string): A_FrameDefinition | undefined {\n // Then try name lookup\n for (const def of this.definitions.values()) {\n if (def.name === name) {\n return def;\n }\n }\n\n return undefined;\n }\n\n listDefinitions(filter: A_FrameListOptions = {}): A_FrameDefinition[] {\n const namespaceName = filter.namespace\n ? typeof filter.namespace === 'string'\n ? ASEID.isASEID(filter.namespace)\n ? new ASEID(filter.namespace).id\n : filter.namespace\n : filter.namespace.id\n : undefined;\n\n const inheritFilters = filter.inherit\n ? Array.isArray(filter.inherit) ? filter.inherit : [filter.inherit]\n : undefined;\n\n return [...this.definitions.values()].filter(r => {\n if (namespaceName && r.namespace.name !== namespaceName) return false;\n if (inheritFilters && !this.matchesInheritanceFilters(r, inheritFilters)) return false;\n return true;\n });\n }\n\n removeDefinition(def: A_FrameDefinition): void {\n this.scope.deregister(def);\n }\n\n addNamespace(namespace: A_FrameNamespace): void {\n this.scope.register(namespace);\n\n this.namespaces.set(namespace.id, namespace);\n }\n\n getNamespace(nameOrASEID: string | ASEID): A_FrameNamespace | undefined {\n const targetKey = typeof nameOrASEID === 'string'\n ? ASEID.isASEID(nameOrASEID)\n ? new ASEID(nameOrASEID).id\n : nameOrASEID\n : nameOrASEID.id;\n\n return this.namespaces.get(targetKey);\n }\n\n getDefaultNamespace(): A_FrameNamespace {\n // Ensure default namespace always exists\n let defaultNamespace = this.getNamespace(A_FRAME_DEFAULT_NAMESPACE_KEY);\n if (!defaultNamespace) {\n defaultNamespace = new A_FrameNamespace({\n name: A_FRAME_DEFAULT_NAMESPACE_KEY,\n });\n this.addNamespace(defaultNamespace);\n }\n return defaultNamespace;\n }\n\n listNamespaces(): A_FrameNamespace[] {\n return [...this.namespaces.values()];\n }\n\n removeNamespace(namespace: A_FrameNamespace): void {\n this.scope.deregister(namespace);\n this.namespaces.delete(namespace.id);\n }\n\n\n /**\n * Search by a pre-computed embedding vector (cosine similarity).\n */\n search(\n vector: A_FrameVector,\n options: A_FrameSearchOptions = {},\n ): A_FrameDefinition_SearchResult[] {\n\n const { topK = 10, namespace, minScore = 0, inherit } = options;\n\n const inheritFilters = inherit\n ? Array.isArray(inherit) ? inherit : [inherit]\n : undefined;\n\n const pool = [...this.definitions.values()].filter(r => {\n if (namespace && r.namespace.id !== namespace) return false;\n if (inheritFilters && !this.matchesInheritanceFilters(r, inheritFilters)) return false;\n return true;\n });\n\n const scored = pool.map(r => ({\n record: r,\n score: this.cosineSimilarity(vector, r.vector),\n }));\n\n return scored\n .filter(s => s.score >= minScore)\n .sort((a, b) => b.score - a.score)\n .slice(0, topK)\n .map(({ record: r, score }) => ({\n record: r,\n score,\n }));\n }\n\n /**\n * Test whether a definition's resolved constructor satisfies at least one\n * of the provided inheritance filters (OR semantics).\n *\n * The constructor is resolved from the internal scope by the definition's\n * name using `scope.resolveConstructor(name)` — the same mechanism the\n * framework uses everywhere for class lookup.\n *\n * - `strict: false` (default) — any depth, using A_Context's O(1) indexed\n * inheritance map: `A_Context.isIndexedInheritedFrom(ctor, targetClass)`\n * - `strict: true` — direct child only:\n * `Object.getPrototypeOf(ctor) === targetClass`\n *\n * Definitions whose name cannot be resolved from the scope (e.g. restored\n * from storage without a live container) never match.\n */\n private matchesInheritanceFilters(\n def: A_FrameDefinition,\n filters: A_FrameInheritanceFilter[],\n ): boolean {\n const ctor = this.scope.resolveConstructor(def.name);\n if (!ctor) return false;\n\n return filters.some(filter => {\n const targetClass = filter.class;\n if (filter.strict) {\n // Direct child: the immediate prototype must be exactly targetClass\n return Object.getPrototypeOf(ctor) === targetClass;\n } else {\n // Any depth: use A_Context's indexed inheritance check (O(1))\n return A_Context.isIndexedInheritedFrom(ctor, targetClass);\n }\n });\n }\n\n // protected cosineSimilarity(vectorA: A_FrameVector, vectorB?: A_FrameVector): number {\n // const a = vectorA.values ?? new Float32Array();\n // const b = vectorB?.values ?? new Float32Array();\n\n // if (a.length !== b.length) {\n // throw new Error(`A_FrameIndex: dimension mismatch ${a.length} vs ${b.length}`);\n // }\n // let dot = 0, normA = 0, normB = 0;\n // for (let i = 0; i < a.length; i++) {\n // dot += a[i] * b[i];\n // normA += a[i] * a[i];\n // normB += b[i] * b[i];\n // }\n // const denom = Math.sqrt(normA) * Math.sqrt(normB);\n // return denom === 0 ? 0 : dot / denom;\n // }\n\n cosineSimilarity(\n a: A_FrameVector,\n b?: A_FrameVector\n ): number {\n if (!b) return 0\n\n const dot = a.dot(b)\n const mag = a.magnitude() * b.magnitude()\n return mag === 0 ? 0 : dot / mag\n }\n\n euclideanDistance(\n a: A_FrameVector,\n b: A_FrameVector\n ): number {\n this.assertSameLength(a, b)\n\n let sum = 0\n for (let i = 0; i < a.length; i++) {\n const diff = a.values[i] - b.values[i]\n sum += diff * diff\n }\n return Math.sqrt(sum)\n }\n\n nearest(\n query: A_FrameVector,\n vectors: readonly A_FrameVector[],\n limit = 1\n ): A_FrameVector[] {\n return [...vectors]\n .map(v => ({\n vector: v,\n score: this.cosineSimilarity(query, v),\n }))\n .sort((a, b) => b.score - a.score)\n .slice(0, limit)\n .map(r => r.vector)\n }\n\n rank(\n query: A_FrameVector,\n vectors: readonly A_FrameVector[]\n ): Array<{ vector: A_FrameVector; score: number }> {\n return vectors\n .map(v => ({\n vector: v,\n score: this.cosineSimilarity(query, v),\n }))\n .sort((a, b) => b.score - a.score)\n }\n\n private assertSameLength(\n a: A_FrameVector,\n b: A_FrameVector\n ) {\n if (a.length !== b.length) {\n throw new Error(\n `Embedding dimension mismatch: ${a.length} vs ${b.length}`\n )\n }\n }\n\n\n\n /**\n * Search by plain text — sends the query to the embed server via channel first.\n */\n // async searchByText(\n // query: string,\n // channel: A_FrameChannel,\n // options: A_FrameSearchOptions = {},\n // ): Promise<A_FrameDefinition_SearchResult[]> {\n // this.assertLoaded();\n // const resp = await channel.embed(query);\n // const queryEmbedding = new Float32Array(resp.data[0].embedding);\n // return this.search(queryEmbedding, options);\n // }\n\n}","import { A_FrameLogLevelType } from \"./A-FrameLogger.types\";\n\n\nexport const A_FrameLogLevel = {\n Debug: 'debug',\n Info: 'info',\n Success: 'success',\n Warn: 'warn',\n Error: 'error',\n} as const satisfies Record<string, A_FrameLogLevelType>;\n\n\n/** Numeric priority used for level filtering. Higher = more severe. */\nexport const A_FRAME_LOG_LEVEL_PRIORITY: Record<A_FrameLogLevelType, number> = {\n debug: 10,\n info: 20,\n success: 20,\n warn: 30,\n error: 40,\n};\n\n\n/** Glyphs used as the leading symbol for each log level. */\nexport const A_FrameLogIcon: Record<A_FrameLogLevelType, string> = {\n debug: '·',\n info: 'ℹ',\n success: '✔',\n warn: '⚠',\n error: '✖',\n};\n\n\n/** ANSI escape sequences. Used by the Node implementation only. */\nexport const A_FRAME_ANSI = {\n reset: '\\x1b[0m',\n bold: '\\x1b[1m',\n dim: '\\x1b[2m',\n gray: '\\x1b[90m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n} as const;\n\n\n/**\n * Browser console CSS — used with `console.log('%c...', style)` for coloured\n * output in DevTools. Mirrors the ANSI palette by intent.\n */\nexport const A_FRAME_BROWSER_CSS: Record<A_FrameLogLevelType, string> = {\n debug: 'color: #888;',\n info: 'color: #06b;',\n success: 'color: #2a7; font-weight: bold;',\n warn: 'color: #c80;',\n error: 'color: #c33; font-weight: bold;',\n};\n\n\n/** Defaults applied when building a logger without explicit options. */\nexport const A_FRAME_LOG_DEFAULTS = {\n progressBarWidth: 24,\n summaryTitle: 'Summary',\n /** Update progress at most this often (ms) for non-TTY/browser output. */\n progressThrottleMs: 250,\n} as const;\n","import { A_Component } from \"@adaas/a-concept\";\nimport {\n A_FrameLogEntry,\n A_FrameLogLevelType,\n A_FrameLoggerConfig,\n A_FrameProgressBar,\n IA_FrameLogger,\n} from \"./A-FrameLogger.types\";\nimport {\n A_FRAME_LOG_LEVEL_PRIORITY,\n A_FRAME_LOG_DEFAULTS,\n} from \"./A-FrameLogger.constants\";\n\n\n/**\n * Abstract base for `A_FrameLogger` — environment-agnostic state and behaviour.\n *\n * Concrete subclasses (`A-FrameLogger.component.env-node` and\n * `A-FrameLogger.component.env-browser`) implement `write()` and `progress()`\n * since each runtime renders to a different surface (TTY vs DevTools console).\n */\nexport abstract class A_FrameLoggerBase extends A_Component implements IA_FrameLogger {\n\n protected level: A_FrameLogLevelType;\n protected prefix: string;\n protected counters: Map<string, number> = new Map();\n protected startTime: number = Date.now();\n\n constructor(config: A_FrameLoggerConfig = {}) {\n super();\n this.level = config.level ?? 'debug';\n this.prefix = config.prefix ?? '';\n }\n\n // ─── Subclass hooks ──────────────────────────────────────────────────────\n\n /** Render a fully-built log entry to the runtime-specific output. */\n protected abstract write(entry: A_FrameLogEntry): void;\n\n /** Create a runtime-specific progress bar. */\n abstract progress(label: string, total: number): A_FrameProgressBar;\n\n // ─── Configuration ───────────────────────────────────────────────────────\n\n setLevel(level: A_FrameLogLevelType): void {\n this.level = level;\n }\n\n /** Returns true when the entry passes the current level filter. */\n protected shouldEmit(level: A_FrameLogLevelType): boolean {\n return A_FRAME_LOG_LEVEL_PRIORITY[level] >= A_FRAME_LOG_LEVEL_PRIORITY[this.level];\n }\n\n // ─── Level methods (shared) ──────────────────────────────────────────────\n\n private emit(level: A_FrameLogLevelType, message: string, metadata?: Record<string, unknown>): void {\n if (!this.shouldEmit(level)) return;\n this.write({\n level,\n message: this.prefix ? `${this.prefix} ${message}` : message,\n timestamp: Date.now(),\n metadata,\n });\n }\n\n debug(msg: string, meta?: Record<string, unknown>): void { this.emit('debug', msg, meta); }\n info(msg: string, meta?: Record<string, unknown>): void { this.emit('info', msg, meta); }\n success(msg: string, meta?: Record<string, unknown>): void { this.emit('success', msg, meta); }\n warn(msg: string, meta?: Record<string, unknown>): void { this.emit('warn', msg, meta); }\n error(msg: string, meta?: Record<string, unknown>): void { this.emit('error', msg, meta); }\n\n /** Default implementation that subclasses may override for nicer headings. */\n section(title: string): void {\n this.info(`── ${title} ──`);\n }\n\n divider(): void {\n this.info('────────────────────────────────────────────────────────');\n }\n\n // ─── Counters / timing ───────────────────────────────────────────────────\n\n increment(key: string, by = 1): void {\n this.counters.set(key, (this.counters.get(key) ?? 0) + by);\n }\n\n set(key: string, value: number): void {\n this.counters.set(key, value);\n }\n\n get(key: string): number {\n return this.counters.get(key) ?? 0;\n }\n\n resetTimer(): void {\n this.startTime = Date.now();\n this.counters.clear();\n }\n\n elapsed(): string {\n const ms = Date.now() - this.startTime;\n if (ms < 1000) return `${ms}ms`;\n const s = ms / 1000;\n if (s < 60) return `${s.toFixed(2)}s`;\n const m = Math.floor(s / 60);\n return `${m}m ${(s - m * 60).toFixed(1)}s`;\n }\n\n /**\n * Print a left-aligned table of all counters plus elapsed time.\n * Concrete subclasses can override for richer rendering.\n */\n summary(title: string = A_FRAME_LOG_DEFAULTS.summaryTitle): void {\n this.section(title);\n const keys = [...this.counters.keys()];\n const pad = keys.reduce((m, k) => Math.max(m, k.length), 'elapsed'.length);\n for (const key of keys) {\n this.info(` ${key.padEnd(pad)} ${this.counters.get(key)}`);\n }\n this.info(` ${'elapsed'.padEnd(pad)} ${this.elapsed()}`);\n this.divider();\n }\n}\n","import { A_FrameLoggerBase } from \"./A-FrameLogger.component\";\nimport {\n A_FrameLogEntry,\n A_FrameLogLevelType,\n A_FrameLoggerConfig,\n A_FrameProgressBar,\n} from \"./A-FrameLogger.types\";\nimport {\n A_FRAME_ANSI,\n A_FRAME_LOG_DEFAULTS,\n A_FrameLogIcon,\n} from \"./A-FrameLogger.constants\";\n\n\n/** Map a level → ANSI colour code for its leading icon. */\nconst ICON_COLOR: Record<A_FrameLogLevelType, string> = {\n debug: A_FRAME_ANSI.gray,\n info: A_FRAME_ANSI.cyan,\n success: A_FRAME_ANSI.green,\n warn: A_FRAME_ANSI.yellow,\n error: A_FRAME_ANSI.red,\n};\n\n\n/**\n * A_FrameLogger — Node.js environment.\n *\n * Renders to stdout with ANSI colour codes and inline progress bars when\n * stdout is a TTY. Falls back to plain text otherwise (CI, log files).\n */\nexport class A_FrameLogger extends A_FrameLoggerBase {\n\n private readonly useColor: boolean;\n\n constructor(config: A_FrameLoggerConfig = {}) {\n super(config);\n this.useColor = config.color ?? !!(process.stdout && process.stdout.isTTY);\n }\n\n private c(code: string, str: string): string {\n return this.useColor ? `${code}${str}${A_FRAME_ANSI.reset}` : str;\n }\n\n protected write(entry: A_FrameLogEntry): void {\n const icon = this.c(ICON_COLOR[entry.level], A_FrameLogIcon[entry.level]);\n const line = `${icon} ${entry.message}`;\n if (entry.level === 'error') console.error(line);\n else if (entry.level === 'warn') console.warn(line);\n else console.log(line);\n\n if (entry.metadata && Object.keys(entry.metadata).length > 0) {\n console.log(this.c(A_FRAME_ANSI.gray, ` ${JSON.stringify(entry.metadata)}`));\n }\n }\n\n section(title: string): void {\n const line = '─'.repeat(Math.max(2, 60 - title.length - 4));\n const heading = `┄ ${title} ${line}`;\n console.log('\\n' + this.c(A_FRAME_ANSI.bold + A_FRAME_ANSI.cyan, heading));\n }\n\n divider(): void {\n console.log(this.c(A_FRAME_ANSI.gray, '─'.repeat(60)));\n }\n\n summary(title: string = A_FRAME_LOG_DEFAULTS.summaryTitle): void {\n this.section(title);\n const keys = [...this.counters.keys()];\n const pad = keys.reduce((m, k) => Math.max(m, k.length), 'elapsed'.length);\n for (const key of keys) {\n console.log(` ${this.c(A_FRAME_ANSI.gray, key.padEnd(pad))} ${this.c(A_FRAME_ANSI.bold, String(this.counters.get(key)))}`);\n }\n console.log(` ${this.c(A_FRAME_ANSI.gray, 'elapsed'.padEnd(pad))} ${this.c(A_FRAME_ANSI.bold, this.elapsed())}`);\n this.divider();\n }\n\n // ─── Progress bar ────────────────────────────────────────────────────────\n\n progress(label: string, total: number): A_FrameProgressBar {\n const isTTY = this.useColor; // colour ⟺ TTY by default\n const width = A_FRAME_LOG_DEFAULTS.progressBarWidth;\n const start = Date.now();\n\n let current = 0;\n let lastLabel = '';\n\n const render = (status?: 'done' | 'fail') => {\n if (total === 0) {\n if (status === 'done') console.log(`${this.c(A_FRAME_ANSI.green, '✔')} ${label} (0/0)`);\n return;\n }\n const pct = Math.min(1, current / total);\n const filled = Math.round(pct * width);\n\n if (isTTY) {\n const bar =\n this.c(A_FRAME_ANSI.green, '█'.repeat(filled)) +\n this.c(A_FRAME_ANSI.gray, '░'.repeat(width - filled));\n const head = status === 'done' ? this.c(A_FRAME_ANSI.green, '✔')\n : status === 'fail' ? this.c(A_FRAME_ANSI.red, '✖')\n : this.c(A_FRAME_ANSI.cyan, '⟳');\n const tail = lastLabel ? this.c(A_FRAME_ANSI.dim, ` — ${lastLabel}`) : '';\n process.stdout.write(`\\r\\x1b[2K${head} ${label} ${bar} ${current}/${total} (${(pct * 100).toFixed(0)}%)${tail}`);\n if (status) process.stdout.write('\\n');\n } else {\n if (status === 'done') {\n console.log(`[${label}] done ${current}/${total} in ${((Date.now() - start) / 1000).toFixed(2)}s`);\n } else if (status === 'fail') {\n console.log(`[${label}] FAILED at ${current}/${total}`);\n } else {\n // Throttle: only print at 10% boundaries when not on a TTY\n const step = Math.max(1, Math.floor(total / 10));\n if (current === total || current % step === 0) {\n console.log(`[${label}] ${current}/${total}${lastLabel ? ` — ${lastLabel}` : ''}`);\n }\n }\n }\n };\n\n render();\n\n return {\n tick: (l?: string) => { current = Math.min(total, current + 1); if (l) lastLabel = l; render(); },\n succeed: (l?: string) => { if (l) lastLabel = l; current = total; render('done'); },\n fail: (l?: string) => { if (l) lastLabel = l; render('fail'); },\n update: (n: number, l?: string) => { current = Math.min(total, Math.max(0, n)); if (l) lastLabel = l; render(); },\n };\n }\n}\n","/** Current bundle format revision. Bumped on incompatible structural changes. */\nexport const A_FRAME_BUNDLE_VERSION = 2;\n\n/** Default file name when none is provided to the CLI. */\nexport const A_FRAME_BUNDLE_DEFAULT_FILENAME = 'a-frame-bundle.json';\n","/**\n * A-FrameStorage binary codec — shared between node and browser environments.\n *\n * Binary payload format (decrypted) — used for BOTH definition records and namespace records:\n * [HEADER 20B]\n * magic 4B = 0x454D424B (\"EMBK\")\n * version 1B = 0x01\n * count 4B (uint32 LE)\n * dims 2B (uint16 LE)\n * reserved 9B\n * [RECORD × count]\n * aseidLen 2B (uint16 LE)\n * aseid NB utf-8 (primary entity ID, e.g. \"app@root:123@v2\")\n * nameLen 2B (uint16 LE)\n * name NB utf-8\n * vector dims×4B Float32 LE\n * metaLen 4B (uint32 LE)\n * meta NB JSON\n */\n\nimport { A_Fragment } from '@adaas/a-concept';\n\nimport type { A_FrameNamespace_Serialized } from '../A-FrameNamespace/A-FrameNamespace.types';\nimport { A_FrameDefinition_Serialized } from '../A-FrameDefinition/A-FrameDefinition.types';\nimport { A_FrameTargetType } from '../A-Frame/A-Frame.types';\n\nconst enc = new TextEncoder();\nconst dec = new TextDecoder();\n\n\nexport class A_FrameStorageCodec extends A_Fragment {\n\n protected enc = new TextEncoder();\n protected dec = new TextDecoder();\n\n // ─── Binary file format constants ────────────────────────────────────────────\n // FILE LAYOUT (all multi-byte values are little-endian):\n // [HEADER 20B]\n // magic 4B = 0x454D424B (\"EMBK\")\n // version 1B = 0x01\n // count 4B (uint32)\n // dims 2B (uint16)\n // reserved 9B\n // [RECORD × count]\n // aseidLen 2B (uint16) — variable-length primary entity ID\n // aseid NB utf-8\n // nameLen 2B (uint16)\n // name NB utf-8\n // vector dims×4B Float32 LE\n // metaLen 4B (uint32)\n // meta NB JSON\n // Encrypted on disk: [IV 12B][AuthTag 16B][Ciphertext]\n A_FRAME_FILE_MAGIC = 0x454d424b;\n A_FRAME_FILE_VERSION = 0x01;\n A_FRAME_HEADER_SIZE = 20;\n\n\n\n static get fileExtension() {\n return '.aframe';\n }\n\n /** Returns the definitions file name for a given namespace id, e.g. `my-ns.definitions.aframe` */\n getDefinitionsFileName(namespaceId: string) {\n return `${namespaceId}.definitions${A_FrameStorageCodec.fileExtension}`;\n }\n\n /** Returns the reserved namespaces index file name: `.namespaces.aframe` */\n getNamespaceFileName() {\n return `.namespaces${A_FrameStorageCodec.fileExtension}`;\n }\n\n /** Glob pattern that matches all definitions files under a directory, e.g. `*.definitions.aframe` */\n static get definitionsFilePattern() {\n return `*.definitions${A_FrameStorageCodec.fileExtension}`;\n }\n\n\n encodePayload(records: A_FrameDefinition_Serialized[]): Uint8Array {\n const parts: Uint8Array[] = [];\n\n if (records.some(r => !r.embedding)) {\n throw new Error('All records must have embeddings to be encoded');\n }\n\n const header = new Uint8Array(this.A_FRAME_HEADER_SIZE);\n const headerView = new DataView(header.buffer);\n headerView.setUint32(0, this.A_FRAME_FILE_MAGIC, true);\n header[4] = this.A_FRAME_FILE_VERSION;\n headerView.setUint32(5, records.length, true);\n const dims = records[0]?.embedding!.length ?? 0;\n headerView.setUint16(9, dims, true);\n // bytes 11-19: reserved (zeroed)\n parts.push(header);\n\n for (const rec of records) {\n const aseidBytes = enc.encode(rec.aseid.toString());\n const nameBytes = enc.encode(rec.name);\n const metaJson = JSON.stringify({\n hash: rec.hash,\n source: rec.source,\n type: rec.type,\n description: rec.description,\n metadata: rec.metadata,\n namespace: rec.namespace,\n date: rec.date,\n model: rec.model,\n credentialId: rec.credentialId,\n aFrameVersion: rec.aFrameVersion,\n aFrameServerVersion: rec.aFrameServerVersion,\n });\n const metaBytes = enc.encode(metaJson);\n\n const recSize =\n 2 + aseidBytes.length +\n 2 + nameBytes.length +\n rec.embedding!.length * 4 +\n 4 + metaBytes.length;\n\n const recBuf = new Uint8Array(recSize);\n const view = new DataView(recBuf.buffer);\n let offset = 0;\n\n view.setUint16(offset, aseidBytes.length, true); offset += 2;\n recBuf.set(aseidBytes, offset); offset += aseidBytes.length;\n\n view.setUint16(offset, nameBytes.length, true); offset += 2;\n recBuf.set(nameBytes, offset); offset += nameBytes.length;\n\n for (let i = 0; i < rec.embedding!.length; i++) {\n view.setFloat32(offset, rec.embedding![i], true);\n offset += 4;\n }\n\n view.setUint32(offset, metaBytes.length, true); offset += 4;\n recBuf.set(metaBytes, offset);\n\n parts.push(recBuf);\n }\n\n const total = parts.reduce((s, p) => s + p.length, 0);\n const out = new Uint8Array(total);\n let pos = 0;\n for (const p of parts) { out.set(p, pos); pos += p.length; }\n return out;\n }\n\n decodePayload(data: Uint8Array): A_FrameDefinition_Serialized[] {\n if (data.length < this.A_FRAME_HEADER_SIZE) throw new Error('Corrupt index: too short for header');\n\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\n const magic = view.getUint32(0, true);\n if (magic !== this.A_FRAME_FILE_MAGIC) throw new Error(`Corrupt index: bad magic 0x${magic.toString(16)}`);\n\n const version = data[4];\n if (version !== this.A_FRAME_FILE_VERSION) throw new Error(`Unsupported index version: ${version}`);\n\n const count = view.getUint32(5, true);\n const dims = view.getUint16(9, true);\n\n const records: A_FrameDefinition_Serialized[] = [];\n let offset = this.A_FRAME_HEADER_SIZE;\n\n for (let i = 0; i < count; i++) {\n const aseidLen = view.getUint16(offset, true); offset += 2;\n const aseid = dec.decode(data.slice(offset, offset + aseidLen)); offset += aseidLen;\n\n const nameLen = view.getUint16(offset, true); offset += 2;\n const name = dec.decode(data.slice(offset, offset + nameLen)); offset += nameLen;\n\n const embedding = new Float32Array(dims);\n for (let d = 0; d < dims; d++) {\n embedding[d] = view.getFloat32(offset, true);\n offset += 4;\n }\n\n const metaLen = view.getUint32(offset, true); offset += 4;\n const metaJson = dec.decode(data.slice(offset, offset + metaLen)); offset += metaLen;\n const meta = JSON.parse(metaJson) as {\n hash?: string;\n source: string;\n description?: string;\n type: A_FrameTargetType;\n metadata?: Record<string, unknown>;\n namespace: string;\n date: string;\n model: string;\n credentialId: string;\n aFrameVersion: string;\n aFrameServerVersion: string;\n };\n\n records.push({\n aseid,\n hash: meta.hash ?? aseid,\n name,\n type: meta.type,\n embedding,\n source: meta.source,\n description: meta.description,\n metadata: meta.metadata,\n namespace: meta.namespace,\n date: meta.date,\n model: meta.model,\n credentialId: meta.credentialId,\n aFrameVersion: meta.aFrameVersion,\n aFrameServerVersion: meta.aFrameServerVersion,\n });\n }\n\n return records;\n }\n\n\n encodeNamespacePayload(records: A_FrameNamespace_Serialized[]): Uint8Array {\n const parts: Uint8Array[] = [];\n\n if (records.some(r => !r.embedding)) {\n throw new Error('All records must have embeddings to be encoded');\n }\n\n const header = new Uint8Array(this.A_FRAME_HEADER_SIZE);\n const headerView = new DataView(header.buffer);\n headerView.setUint32(0, this.A_FRAME_FILE_MAGIC, true);\n header[4] = this.A_FRAME_FILE_VERSION;\n headerView.setUint32(5, records.length, true);\n const dims = records[0]?.embedding!.length ?? 0;\n headerView.setUint16(9, dims, true);\n parts.push(header);\n\n for (const rec of records) {\n const aseidBytes = enc.encode(rec.aseid.toString());\n const nameBytes = enc.encode(rec.name);\n const metaJson = JSON.stringify({\n hash: rec.hash,\n description: rec.description,\n metadata: rec.metadata,\n embeddedAt: rec.embeddedAt,\n embeddingModel: rec.embeddingModel,\n credentialId: rec.credentialId,\n aFrameVersion: rec.aFrameVersion,\n aFrameServerVersion: rec.aFrameServerVersion,\n });\n const metaBytes = enc.encode(metaJson);\n\n const recSize =\n 2 + aseidBytes.length +\n 2 + nameBytes.length +\n rec.embedding!.length * 4 +\n 4 + metaBytes.length;\n\n const recBuf = new Uint8Array(recSize);\n const view = new DataView(recBuf.buffer);\n let offset = 0;\n\n view.setUint16(offset, aseidBytes.length, true); offset += 2;\n recBuf.set(aseidBytes, offset); offset += aseidBytes.length;\n\n view.setUint16(offset, nameBytes.length, true); offset += 2;\n recBuf.set(nameBytes, offset); offset += nameBytes.length;\n\n for (let i = 0; i < rec.embedding!.length; i++) {\n view.setFloat32(offset, rec.embedding![i], true);\n offset += 4;\n }\n\n view.setUint32(offset, metaBytes.length, true); offset += 4;\n recBuf.set(metaBytes, offset);\n\n parts.push(recBuf);\n }\n\n const total = parts.reduce((s, p) => s + p.length, 0);\n const out = new Uint8Array(total);\n let pos = 0;\n for (const p of parts) { out.set(p, pos); pos += p.length; }\n return out;\n }\n\n decodeNamespacePayload(data: Uint8Array): A_FrameNamespace_Serialized[] {\n if (data.length < this.A_FRAME_HEADER_SIZE) throw new Error('Corrupt namespace index: too short for header');\n\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\n const magic = view.getUint32(0, true);\n if (magic !== this.A_FRAME_FILE_MAGIC) throw new Error(`Corrupt namespace index: bad magic 0x${magic.toString(16)}`);\n\n const version = data[4];\n if (version !== this.A_FRAME_FILE_VERSION) throw new Error(`Unsupported namespace index version: ${version}`);\n\n const count = view.getUint32(5, true);\n const dims = view.getUint16(9, true);\n\n const records: A_FrameNamespace_Serialized[] = [];\n let offset = this.A_FRAME_HEADER_SIZE;\n\n for (let i = 0; i < count; i++) {\n const aseidLen = view.getUint16(offset, true); offset += 2;\n const aseid = dec.decode(data.slice(offset, offset + aseidLen)); offset += aseidLen;\n\n const nameLen = view.getUint16(offset, true); offset += 2;\n const name = dec.decode(data.slice(offset, offset + nameLen)); offset += nameLen;\n\n const embedding = new Float32Array(dims);\n for (let d = 0; d < dims; d++) {\n embedding[d] = view.getFloat32(offset, true);\n offset += 4;\n }\n\n const metaLen = view.getUint32(offset, true); offset += 4;\n const metaJson = dec.decode(data.slice(offset, offset + metaLen)); offset += metaLen;\n const meta = JSON.parse(metaJson) as {\n hash?: string;\n description?: string;\n metadata?: Record<string, unknown>;\n embeddedAt: number;\n embeddingModel?: string;\n credentialId?: string;\n aFrameVersion?: string;\n aFrameServerVersion?: string;\n };\n\n records.push({\n aseid,\n hash: meta.hash ?? aseid,\n name,\n embedding,\n description: meta.description,\n metadata: meta.metadata,\n embeddedAt: meta.embeddedAt,\n embeddingModel: meta.embeddingModel,\n credentialId: meta.credentialId,\n aFrameVersion: meta.aFrameVersion,\n aFrameServerVersion: meta.aFrameServerVersion,\n });\n }\n\n return records;\n }\n\n}\n\n\n","import { A_Component } from \"@adaas/a-concept\";\n\n/**\n * A_FrameCrypto — Node.js environment\n *\n * AES-256-GCM encryption + SHA-256 hashing via the Web Crypto API.\n * Falls back to node:crypto for Node < 19 that lack globalThis.crypto.\n *\n * Binary payload format on disk:\n * IV (12B) + AuthTag (16B) + Ciphertext (NB)\n */\nexport class A_FrameCrypto extends A_Component {\n\n // ─── Internal helpers ─────────────────────────────────────────────────────\n\n private static getSubtle(): SubtleCrypto {\n if (typeof globalThis.crypto?.subtle !== 'undefined') {\n return globalThis.crypto.subtle;\n }\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const nodeCrypto = require('node:crypto') as typeof import('node:crypto');\n return nodeCrypto.webcrypto.subtle as unknown as SubtleCrypto;\n }\n\n private static getRandomBytes(n: number): Uint8Array {\n const buf = new Uint8Array(n);\n if (typeof globalThis.crypto?.getRandomValues !== 'undefined') {\n globalThis.crypto.getRandomValues(buf);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const nodeCrypto = require('node:crypto') as typeof import('node:crypto');\n buf.set(nodeCrypto.randomBytes(n));\n }\n return buf;\n }\n\n /**\n * Ensure a Uint8Array is backed by a plain ArrayBuffer and return it.\n * SubtleCrypto rejects ArrayBufferLike (e.g. SharedArrayBuffer) on strict TS targets.\n */\n private static bytes(u: Uint8Array): ArrayBuffer {\n if (u.buffer instanceof ArrayBuffer && u.byteOffset === 0 && u.byteLength === u.buffer.byteLength) {\n return u.buffer as ArrayBuffer;\n }\n return new Uint8Array(u).buffer as ArrayBuffer;\n }\n\n private static async importKey(keyBase64: string): Promise<CryptoKey> {\n const raw = A_FrameCrypto.base64ToBytes(keyBase64);\n return A_FrameCrypto.getSubtle().importKey(\n 'raw', raw.buffer as ArrayBuffer, { name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']\n );\n }\n\n\n // ─── Encrypt ──────────────────────────────────────────────────────────────\n\n /** Encrypt a Uint8Array → IV(12) + AuthTag(16) + Ciphertext */\n static async encryptBytes(plain: Uint8Array, keyBase64: string): Promise<Uint8Array> {\n const key = await A_FrameCrypto.importKey(keyBase64);\n const iv = A_FrameCrypto.getRandomBytes(12);\n\n const cipherWithTag = new Uint8Array(\n await A_FrameCrypto.getSubtle().encrypt({ name: 'AES-GCM', iv: A_FrameCrypto.bytes(iv), tagLength: 128 }, key, A_FrameCrypto.bytes(plain))\n );\n const ciphertext = cipherWithTag.slice(0, cipherWithTag.length - 16);\n const authTag = cipherWithTag.slice(cipherWithTag.length - 16);\n\n const out = new Uint8Array(12 + 16 + ciphertext.length);\n out.set(iv, 0);\n out.set(authTag, 12);\n out.set(ciphertext, 28);\n return out;\n }\n\n\n /** Encrypt a UTF-8 string → base64 payload string */\n static async encrypt(plain: string, keyBase64: string): Promise<string> {\n const bytes = new TextEncoder().encode(plain);\n const encrypted = await A_FrameCrypto.encryptBytes(bytes, keyBase64);\n return A_FrameCrypto.bytesToBase64(encrypted);\n }\n\n\n // ─── Decrypt ─────────────────────────────────────────────────────────────\n\n /** Decrypt a Uint8Array payload produced by encryptBytes() */\n static async decryptBytes(payload: Uint8Array, keyBase64: string): Promise<Uint8Array> {\n if (payload.length < 28) throw new Error('Payload too short to decrypt');\n\n const key = await A_FrameCrypto.importKey(keyBase64);\n const iv = payload.slice(0, 12);\n const authTag = payload.slice(12, 28);\n const ciphertext = payload.slice(28);\n\n const cipherWithTag = new Uint8Array(ciphertext.length + 16);\n cipherWithTag.set(ciphertext, 0);\n cipherWithTag.set(authTag, ciphertext.length);\n\n const plain = await A_FrameCrypto.getSubtle().decrypt(\n { name: 'AES-GCM', iv: A_FrameCrypto.bytes(iv), tagLength: 128 }, key, A_FrameCrypto.bytes(cipherWithTag)\n );\n return new Uint8Array(plain);\n }\n\n\n /** Decrypt a base64 payload string → UTF-8 string */\n static async decrypt(payloadBase64: string, keyBase64: string): Promise<string> {\n const payload = A_FrameCrypto.base64ToBytes(payloadBase64);\n const plain = await A_FrameCrypto.decryptBytes(payload, keyBase64);\n return new TextDecoder().decode(plain);\n }\n\n\n\n\n // ─── Hashing ──────────────────────────────────────────────────────────────\n\n /** SHA-256 of a string → hex string */\n static async sha256hex(input: string): Promise<string> {\n const data = new TextEncoder().encode(input);\n try {\n const hashBuffer = await A_FrameCrypto.getSubtle().digest('SHA-256', A_FrameCrypto.bytes(data));\n return A_FrameCrypto.bytesToHex(new Uint8Array(hashBuffer));\n } catch {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const nodeCrypto = require('node:crypto') as typeof import('node:crypto');\n return nodeCrypto.createHash('sha256').update(input).digest('hex');\n }\n }\n\n\n\n\n // ─── Encode helpers ───────────────────────────────────────────────────────\n\n static bytesToBase64(bytes: Uint8Array): string {\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(bytes).toString('base64');\n }\n let bin = '';\n for (const b of bytes) bin += String.fromCharCode(b);\n return btoa(bin);\n }\n\n\n\n\n static base64ToBytes(b64: string): Uint8Array {\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(b64, 'base64'));\n }\n const bin = atob(b64);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);\n return bytes;\n }\n\n\n\n\n static bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n // =================================================================================\n // Instance methods just call the static versions for convenient injection into other components\n // =================================================================================\n\n\n encryptBytes(plain: Uint8Array, keyBase64: string): Promise<Uint8Array> {\n return A_FrameCrypto.encryptBytes(plain, keyBase64);\n }\n\n\n encrypt(plain: string, keyBase64: string): Promise<string> {\n return A_FrameCrypto.encrypt(plain, keyBase64);\n }\n\n decryptBytes(payload: Uint8Array, keyBase64: string): Promise<Uint8Array> {\n return A_FrameCrypto.decryptBytes(payload, keyBase64);\n }\n\n\n decrypt(payloadBase64: string, keyBase64: string): Promise<string> {\n return A_FrameCrypto.decrypt(payloadBase64, keyBase64);\n }\n\n sha256hex(input: string): Promise<string> {\n return A_FrameCrypto.sha256hex(input);\n }\n\n bytesToBase64(bytes: Uint8Array): string {\n return A_FrameCrypto.bytesToBase64(bytes);\n }\n\n base64ToBytes(b64: string): Uint8Array {\n return A_FrameCrypto.base64ToBytes(b64);\n }\n\n bytesToHex(bytes: Uint8Array): string {\n return A_FrameCrypto.bytesToHex(bytes);\n }\n}\n","{\n \"name\": \"@adaas/a-frame\",\n \"version\": \"0.1.1\",\n \"description\": \"A-frame is index build engine for A-Concept ecosystem. It provides a way to build index structures for A-Concept basics\",\n \"license\": \"Apache-2.0\",\n \"author\": {\n \"name\": \"ADAAS YAZILIM LİMİTED ŞİRKETİ\",\n \"email\": \"contact-us@adaas.org\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/ADAAS-org/adaas-a-frame/issues\"\n },\n \"homepage\": \"https://github.com/ADAAS-org/adaas-a-frame#readme\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/ADAAS-org/adaas-a-frame.git\"\n },\n \"bin\": {\n \"a-frame\": \"./dist/cli.cjs\"\n },\n \"exports\": {\n \".\": {\n \"browser\": {\n \"types\": \"./dist/browser/index.d.mts\",\n \"import\": \"./dist/browser/index.mjs\"\n },\n \"types\": \"./dist/node/index.d.ts\",\n \"import\": \"./dist/node/index.mjs\",\n \"require\": \"./dist/node/index.cjs\"\n },\n \"./core\": {\n \"browser\": {\n \"types\": \"./dist/browser/core.d.mts\",\n \"import\": \"./dist/browser/core.mjs\"\n },\n \"types\": \"./dist/node/core.d.ts\",\n \"import\": \"./dist/node/core.mjs\",\n \"require\": \"./dist/node/core.cjs\"\n },\n \"./bundle\": {\n \"browser\": {\n \"types\": \"./dist/browser/bundle.d.mts\",\n \"import\": \"./dist/browser/bundle.mjs\"\n },\n \"types\": \"./dist/node/bundle.d.ts\",\n \"import\": \"./dist/node/bundle.mjs\",\n \"require\": \"./dist/node/bundle.cjs\"\n },\n \"./channel\": {\n \"browser\": {\n \"types\": \"./dist/browser/channel.d.mts\",\n \"import\": \"./dist/browser/channel.mjs\"\n },\n \"types\": \"./dist/node/channel.d.ts\",\n \"import\": \"./dist/node/channel.mjs\",\n \"require\": \"./dist/node/channel.cjs\"\n },\n \"./credentials\": {\n \"browser\": {\n \"types\": \"./dist/browser/credentials.d.mts\",\n \"import\": \"./dist/browser/credentials.mjs\"\n },\n \"types\": \"./dist/node/credentials.d.ts\",\n \"import\": \"./dist/node/credentials.mjs\",\n \"require\": \"./dist/node/credentials.cjs\"\n },\n \"./crypto\": {\n \"browser\": {\n \"types\": \"./dist/browser/crypto.d.mts\",\n \"import\": \"./dist/browser/crypto.mjs\"\n },\n \"types\": \"./dist/node/crypto.d.ts\",\n \"import\": \"./dist/node/crypto.mjs\",\n \"require\": \"./dist/node/crypto.cjs\"\n },\n \"./definition\": {\n \"browser\": {\n \"types\": \"./dist/browser/definition.d.mts\",\n \"import\": \"./dist/browser/definition.mjs\"\n },\n \"types\": \"./dist/node/definition.d.ts\",\n \"import\": \"./dist/node/definition.mjs\",\n \"require\": \"./dist/node/definition.cjs\"\n },\n \"./dynamic-feature\": {\n \"browser\": {\n \"types\": \"./dist/browser/dynamic-feature.d.mts\",\n \"import\": \"./dist/browser/dynamic-feature.mjs\"\n },\n \"types\": \"./dist/node/dynamic-feature.d.ts\",\n \"import\": \"./dist/node/dynamic-feature.mjs\",\n \"require\": \"./dist/node/dynamic-feature.cjs\"\n },\n \"./dynamic-content\": {\n \"browser\": {\n \"types\": \"./dist/browser/dynamic-content.d.mts\",\n \"import\": \"./dist/browser/dynamic-content.mjs\"\n },\n \"types\": \"./dist/node/dynamic-content.d.ts\",\n \"import\": \"./dist/node/dynamic-content.mjs\",\n \"require\": \"./dist/node/dynamic-content.cjs\"\n },\n \"./dynamic-structure\": {\n \"browser\": {\n \"types\": \"./dist/browser/dynamic-structure.d.mts\",\n \"import\": \"./dist/browser/dynamic-structure.mjs\"\n },\n \"types\": \"./dist/node/dynamic-structure.d.ts\",\n \"import\": \"./dist/node/dynamic-structure.mjs\",\n \"require\": \"./dist/node/dynamic-structure.cjs\"\n },\n \"./env\": {\n \"browser\": {\n \"types\": \"./dist/browser/env.d.mts\",\n \"import\": \"./dist/browser/env.mjs\"\n },\n \"types\": \"./dist/node/env.d.ts\",\n \"import\": \"./dist/node/env.mjs\",\n \"require\": \"./dist/node/env.cjs\"\n },\n \"./index\": {\n \"browser\": {\n \"types\": \"./dist/browser/frame-index.d.mts\",\n \"import\": \"./dist/browser/frame-index.mjs\"\n },\n \"types\": \"./dist/node/frame-index.d.ts\",\n \"import\": \"./dist/node/frame-index.mjs\",\n \"require\": \"./dist/node/frame-index.cjs\"\n },\n \"./logger\": {\n \"browser\": {\n \"types\": \"./dist/browser/logger.d.mts\",\n \"import\": \"./dist/browser/logger.mjs\"\n },\n \"types\": \"./dist/node/logger.d.ts\",\n \"import\": \"./dist/node/logger.mjs\",\n \"require\": \"./dist/node/logger.cjs\"\n },\n \"./namespace\": {\n \"browser\": {\n \"types\": \"./dist/browser/namespace.d.mts\",\n \"import\": \"./dist/browser/namespace.mjs\"\n },\n \"types\": \"./dist/node/namespace.d.ts\",\n \"import\": \"./dist/node/namespace.mjs\",\n \"require\": \"./dist/node/namespace.cjs\"\n },\n \"./completion\": {\n \"browser\": {\n \"types\": \"./dist/browser/completion.d.mts\",\n \"import\": \"./dist/browser/completion.mjs\"\n },\n \"types\": \"./dist/node/completion.d.ts\",\n \"import\": \"./dist/node/completion.mjs\",\n \"require\": \"./dist/node/completion.cjs\"\n },\n \"./segment\": {\n \"browser\": {\n \"types\": \"./dist/browser/segment.d.mts\",\n \"import\": \"./dist/browser/segment.mjs\"\n },\n \"types\": \"./dist/node/segment.d.ts\",\n \"import\": \"./dist/node/segment.mjs\",\n \"require\": \"./dist/node/segment.cjs\"\n },\n \"./storage\": {\n \"browser\": {\n \"types\": \"./dist/browser/storage.d.mts\",\n \"import\": \"./dist/browser/storage.mjs\"\n },\n \"types\": \"./dist/node/storage.d.ts\",\n \"import\": \"./dist/node/storage.mjs\",\n \"require\": \"./dist/node/storage.cjs\"\n },\n \"./vector\": {\n \"browser\": {\n \"types\": \"./dist/browser/vector.d.mts\",\n \"import\": \"./dist/browser/vector.mjs\"\n },\n \"types\": \"./dist/node/vector.d.ts\",\n \"import\": \"./dist/node/vector.mjs\",\n \"require\": \"./dist/node/vector.cjs\"\n },\n \"./models\": {\n \"browser\": {\n \"types\": \"./dist/browser/models.d.mts\",\n \"import\": \"./dist/browser/models.mjs\"\n },\n \"types\": \"./dist/node/models.d.ts\",\n \"import\": \"./dist/node/models.mjs\",\n \"require\": \"./dist/node/models.cjs\"\n },\n \"./schema\": {\n \"browser\": {\n \"types\": \"./dist/browser/schema.d.mts\",\n \"import\": \"./dist/browser/schema.mjs\"\n },\n \"types\": \"./dist/node/schema.d.ts\",\n \"import\": \"./dist/node/schema.mjs\",\n \"require\": \"./dist/node/schema.cjs\"\n }\n },\n \"keywords\": [\n \"adaas\",\n \"a-frame\",\n \"ai index\",\n \"embeddings\",\n \"a-concept\",\n \"rag\"\n ],\n \"sideEffects\": false,\n \"nodemonConfig\": {\n \"ignore\": [\n \"**/*.test.ts\",\n \"**/*.spec.ts\",\n \".git\",\n \"node_modules\"\n ],\n \"watch\": [\n \"src\",\n \"examples\"\n ],\n \"exec\": \"node -r tsconfig-paths/register -r ts-node/register \",\n \"ext\": \"ts, js\"\n },\n \"scripts\": {\n \"test\": \"node --experimental-vm-modules node_modules/.bin/jest --detectOpenHandles\",\n \"test:unit\": \"node --experimental-vm-modules node_modules/.bin/jest --config jest.config.unit.ts --detectOpenHandles\",\n \"test:integration\": \"node --experimental-vm-modules node_modules/.bin/jest --config jest.config.integration.ts --detectOpenHandles\",\n \"test:browser\": \"node --experimental-vm-modules node_modules/.bin/jest --config jest.config.browser.ts --detectOpenHandles\",\n \"example:article\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/article/main.ts\",\n \"example:interaction\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/interaction/main.ts\",\n \"example:feature\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/feature/main.ts\",\n \"example:content-editor\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/content-editor/server.ts\",\n\n \"example:feature:backup\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/feature/main.ts \\\"copy all .ts files to a backup folder and compress the result\\\"\",\n \"example:feature:sync\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/feature/main.ts \\\"scan two directories, find files that differ, and sync the newer versions to the target\\\"\",\n \"example:feature:cleanup\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/feature/main.ts \\\"find all log files older than 7 days and delete them\\\"\",\n \"example:structure\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/structure/main.ts\",\n \"example:structure:saas\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/structure/main.ts \\\"build a multi-tenant SaaS API with JWT auth and file uploads\\\"\",\n \"example:structure:jobs\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/structure/main.ts \\\"design a background job processing system with cron and email digests\\\"\",\n \"example:structure:realtime\": \"node -r tsconfig-paths/register -r ts-node/register ./examples/structure/main.ts \\\"create a real-time notification service with WebSocket and rate limiting\\\"\",\n \"start\": \"nodemon ./tests/example-usage.ts\",\n \"start:test\": \"node -r tsconfig-paths/register -r ts-node/register ./index.ts\",\n \"release\": \"npm run test:unit && npm run build && git add . && git commit -m \\\"new version created :: $(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[\\\",]//g')\\\" && npm version patch && npm publish --access public\",\n \"version\": \"echo git add .\",\n \"postversion\": \"git push --no-verify && git push --tags --no-verify && echo \\\"\\n======Version Pushed Successfully=====\\n\\\" \",\n \"echo-version\": \"echo $npm_package_version\",\n \"build\": \"tsup --config tsup.config.ts\"\n },\n \"peerDependencies\": {\n \"@adaas/a-concept\": \"^0.3.16\"\n },\n \"devDependencies\": {\n \"@adaas/a-concept\": \"^0.3.16\",\n \"@types/chai\": \"^4.3.14\",\n \"@types/jest\": \"^29.5.12\",\n \"@types/mocha\": \"^10.0.6\",\n \"@types/node\": \"^24.9.1\",\n \"chai\": \"^5.1.0\",\n \"dotenv\": \"^16.6.1\",\n \"jest\": \"^29.7.0\",\n \"jest-environment-jsdom\": \"^29.7.0\",\n \"mocha\": \"^10.4.0\",\n \"nodemon\": \"^3.1.4\",\n \"ts-jest\": \"^29.1.2\",\n \"ts-node\": \"^10.9.2\",\n \"tsconfig-paths\": \"^4.2.0\",\n \"tscpaths\": \"^0.0.9\",\n \"tsup\": \"^8.5.0\"\n },\n \"directories\": {\n \"doc\": \"docs\",\n \"test\": \"tests\"\n }\n}","import * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport { A_Component } from '@adaas/a-concept';\nimport { A_FrameBundle, A_FrameBundleDefinitionRecord, A_FrameBundleNamespaceRecord } from './A-FrameBundle.types';\nimport { A_FRAME_BUNDLE_VERSION } from './A-FrameBundle.constants';\nimport { A_FrameStorageCodec } from '../A-FrameStorage/A-FrameStorage.codec';\nimport { A_FrameCrypto } from '../A-FrameCrypto/A-FrameCrypto.component.env-node';\nimport * as pkg from '../../../package.json';\n\n\nexport interface A_FrameBundleBuilderOptions {\n /**\n * Source directory containing the encrypted `*.aframe` files (Node storage).\n * Defaults to `.aframe/` in the current working directory.\n */\n storageDir?: string;\n /** Server version to embed in the bundle metadata. */\n serverVersion: string;\n /**\n * AES-256-GCM encryption key used when the `.aframe` files were written.\n * This is the `encryptionKey` returned by the A-Frame server credentials API.\n * Required so the builder can decrypt the files and produce plain-JSON records.\n */\n encryptionKey: string;\n}\n\n\n/**\n * A_FrameBundleBuilder — Node-only build-time helper.\n *\n * Reads the encrypted `*.aframe` files produced by Node storage, decrypts them\n * with the provided key, and packages the decoded definition/namespace records\n * into a single JSON artifact that ships with the browser bundle.\n *\n * The output bundle stores plain records (no encryption). The browser bootstrap\n * seeds these directly into `A_FrameBrowserStorageBlobs` so that definitions\n * load without any server connection or encryption key.\n *\n * Usage:\n * ```ts\n * import { A_FrameBundleBuilder } from '@adaas/a-frame/bundle';\n *\n * const builder = new A_FrameBundleBuilder();\n * const bundle = await builder.build({\n * storageDir: '.aframe',\n * serverVersion: '1.0.0',\n * encryptionKey: process.env.A_FRAME_ENCRYPTION_KEY!,\n * });\n * await builder.writeAuto(bundle, 'src/generated/a-frame-bundle.ts');\n * ```\n */\nexport class A_FrameBundleBuilder extends A_Component {\n\n private codec = new A_FrameStorageCodec();\n\n /** Read, decrypt and decode all `.aframe` files from a storage directory. */\n async build(opts: A_FrameBundleBuilderOptions): Promise<A_FrameBundle> {\n const storageDir = opts.storageDir ?? '.aframe';\n const namespacesFile = this.codec.getNamespaceFileName(); // '.namespaces.aframe'\n const defSuffix = `.definitions${A_FrameStorageCodec.fileExtension}`; // '.definitions.aframe'\n\n let entries: string[];\n try {\n entries = await fs.readdir(storageDir);\n } catch (err: any) {\n if (err?.code === 'ENOENT') {\n throw new Error(`A-Frame storage directory not found: ${path.resolve(storageDir)}`);\n }\n throw err;\n }\n\n // Accept both the namespace index and definition files\n const aframeFiles = entries.filter(f => f === namespacesFile || f.endsWith(defSuffix));\n\n const records: Record<string, A_FrameBundleDefinitionRecord[]> = {};\n const namespaceRecords: A_FrameBundleNamespaceRecord[] = [];\n\n for (const file of aframeFiles) {\n const raw = await fs.readFile(path.join(storageDir, file));\n let plain: Uint8Array;\n try {\n plain = await A_FrameCrypto.decryptBytes(new Uint8Array(raw), opts.encryptionKey);\n } catch {\n throw new Error(\n `Failed to decrypt \"${file}\". Ensure encryptionKey matches the key used when the files were written.`\n );\n }\n\n if (file === namespacesFile) {\n const decoded = this.codec.decodeNamespacePayload(plain);\n for (const r of decoded) {\n namespaceRecords.push({\n aseid: r.aseid,\n hash: r.hash,\n name: r.name,\n description: r.description,\n metadata: r.metadata,\n embedding: Array.from(r.embedding ?? []),\n embeddedAt: r.embeddedAt,\n embeddingModel: r.embeddingModel,\n credentialId: r.credentialId,\n aFrameVersion: r.aFrameVersion,\n aFrameServerVersion: r.aFrameServerVersion,\n });\n }\n } else {\n // Strip '.definitions.aframe' suffix to recover the namespace id\n const namespaceId = file.slice(0, -defSuffix.length);\n const decoded = this.codec.decodePayload(plain);\n records[namespaceId] = decoded.map(r => ({\n aseid: r.aseid,\n name: r.name,\n hash: r.hash,\n type: r.type,\n source: r.source,\n description: r.description,\n metadata: r.metadata,\n namespace: r.namespace,\n embedding: Array.from(r.embedding ?? []),\n date: r.date,\n model: r.model,\n credentialId: r.credentialId,\n aFrameVersion: r.aFrameVersion,\n aFrameServerVersion: r.aFrameServerVersion,\n aFrameMeta: r.aFrameMeta,\n }));\n }\n }\n\n return {\n bundleVersion: A_FRAME_BUNDLE_VERSION,\n aFrameVersion: (pkg as any).version || '0.0.0',\n serverVersion: opts.serverVersion,\n builtAt: new Date().toISOString(),\n records,\n namespaceRecords,\n };\n }\n\n /** Write the bundle to disk as a JSON file. */\n async writeJSON(bundle: A_FrameBundle, outFile: string): Promise<void> {\n await fs.mkdir(path.dirname(path.resolve(outFile)), { recursive: true });\n await fs.writeFile(outFile, JSON.stringify(bundle, null, 2));\n }\n\n /**\n * Emit a TypeScript module that exports the bundle as a typed constant.\n * Ideal for Vite/Webpack/esbuild projects that tree-shake TS imports.\n */\n async writeTS(bundle: A_FrameBundle, outFile: string): Promise<void> {\n const banner = '// AUTO-GENERATED by @adaas/a-frame — do not edit.\\n';\n const body =\n `import type { A_FrameBundle } from '@adaas/a-frame/bundle';\\n\\n` +\n `export const A_FRAME_BUNDLE: A_FrameBundle = ${JSON.stringify(bundle, null, 2)} as A_FrameBundle;\\n`;\n await fs.mkdir(path.dirname(path.resolve(outFile)), { recursive: true });\n await fs.writeFile(outFile, banner + body);\n }\n\n /** Convenience: detect output format by extension and write. */\n async writeAuto(bundle: A_FrameBundle, outFile: string): Promise<void> {\n if (/\\.tsx?$/.test(outFile)) return this.writeTS(bundle, outFile);\n return this.writeJSON(bundle, outFile);\n }\n}\n\n","import { A_Fragment } from \"@adaas/a-concept\";\nimport * as pkg from '../../../package.json';\nimport { IA_FrameEnv } from \"./A-FrameEnv.types\";\n\n\nexport class A_FrameEnv extends A_Fragment implements IA_FrameEnv {\n\n get A_FRAME_FILE_EXTENSION() {\n return '.aframe';\n }\n\n get A_FRAME_NAMESPACES_BIN() {\n return `__namespaces${this.A_FRAME_FILE_EXTENSION}`;\n }\n\n get A_FRAME_SYNC() {\n return process.env.A_FRAME_SYNC === 'false' ? false : true;\n }\n\n get A_FRAME_TOKEN() {\n return process.env.A_FRAME_TOKEN || '';\n }\n\n get A_FRAME_SERVER_URL() {\n return process.env.A_FRAME_SERVER_URL || 'http://localhost:3663';\n }\n\n get A_FRAME_SERVER_API_KEY() {\n return process.env.A_FRAME_SERVER_API_KEY || '';\n }\n\n get A_FRAME_STORAGE_DIR() {\n return process.env.A_FRAME_STORAGE_DIR || '.aframe';\n }\n\n /**\n * Comma-separated glob pattern(s) used to discover additional storage\n * directories at startup (read-only merge source).\n *\n * Each pattern is resolved relative to `process.cwd()`.\n * Default scans for any `.aframe` folder inside node_modules packages.\n */\n get A_FRAME_STORAGE_PATTERN() {\n return process.env.A_FRAME_STORAGE_PATTERN ?? 'node_modules/**/.aframe';\n }\n\n get A_FRAME_VERSION() {\n return pkg.version || '0.0.1';\n }\n\n /**\n * Maximum time (ms) the HTTP client waits for a single response.\n * AI inference can be slow; default is 120 seconds.\n * Override with A_FRAME_REQUEST_TIMEOUT env var.\n */\n get A_FRAME_REQUEST_TIMEOUT(): number {\n const raw = process.env.A_FRAME_REQUEST_TIMEOUT;\n const parsed = raw ? parseInt(raw, 10) : NaN;\n return isNaN(parsed) ? 120_000 : parsed;\n }\n}","\n\nexport const A_FrameFeatures = {\n Request: '_A_FRAME_REQUEST',\n Socket: '_A_FRAME_SOCKET',\n Stream: '_A_FRAME_STREAM',\n Send: '_A_FRAME_SEND',\n} as const;\n\n\n\nexport const A_FrameChannelStreamStatuses = {\n Open: 'open',\n Closed: 'closed',\n} as const;\n\n\nexport const A_FrameChannelStreamFeatures = {\n open: '_A_FRAME_CHANNEL_STREAM_OPEN',\n send: '_A_FRAME_CHANNEL_STREAM_SEND',\n onEvent: '_A_FRAME_CHANNEL_STREAM_ON_EVENT',\n onError: '_A_FRAME_CHANNEL_STREAM_ON_ERROR',\n onComplete: '_A_FRAME_CHANNEL_STREAM_ON_COMPLETE',\n onClose: '_A_FRAME_CHANNEL_STREAM_ON_CLOSE',\n} as const;\n\n\n// ─── WebSocket socket entity constants ───────────────────────────────────────\n\nexport const A_FrameChannelSocketStatuses = {\n Connecting: 'connecting',\n Open: 'open',\n Closed: 'closed',\n} as const;\n\nexport const A_FrameChannelSocketFeatures = {\n onEvent: '_A_FRAME_CHANNEL_SOCKET_ON_EVENT',\n onError: '_A_FRAME_CHANNEL_SOCKET_ON_ERROR',\n onOpen: '_A_FRAME_CHANNEL_SOCKET_ON_OPEN',\n onClose: '_A_FRAME_CHANNEL_SOCKET_ON_CLOSE',\n} as const;\n","import { A_Error, A_Fragment } from \"@adaas/a-concept\";\n\n\nexport class A_FrameChannelRequest<\n _Response = any\n> extends A_Fragment {\n\n protected _response?: _Response;\n\n protected _error?: A_Error;\n\n\n constructor(\n public method: string,\n public path: string,\n public body?: unknown\n ) {\n super({ name: 'a-frame-channel-request' });\n }\n\n complete(response: _Response): void {\n this._response = response;\n }\n\n fail(error: A_Error): void {\n this._error = error;\n }\n\n get response(): _Response | undefined {\n return this._response;\n }\n\n get error(): A_Error | undefined {\n return this._error;\n }\n}\n","import { A_Error } from \"@adaas/a-concept\";\n\n\n\nexport class A_FrameChannelError extends A_Error{\n static readonly InvalidRequest = 'InvalidRequest';\n static readonly Timeout = 'Timeout';\n static readonly RequestFailed = 'RequestFailed';\n}\n ","\n\nexport const A_FrameDefinitionFeatures = {\n Load: '_A_FRAME_DEFINITION_LOAD',\n Save: '_A_FRAME_DEFINITION_SAVE',\n Embed: '_A_FRAME_DEFINITION_EMBED',\n Destroy: '_A_FRAME_DEFINITION_DESTROY',\n} as const;","import { A_Dependency, A_Entity, A_FormatterHelper, A_Scope } from \"@adaas/a-concept\";\nimport {\n A_FrameDefinition_EmbeddingMeta,\n A_FrameDefinition_Init,\n A_FrameDefinition_Serialized,\n DefinitionExtractedMeta,\n} from \"./A-FrameDefinition.types\";\nimport { A_FrameVector } from \"../A-FrameVector/A-FrameVector.entity\";\nimport { A_FrameNamespace } from \"../A-FrameNamespace\";\nimport { A_FrameHashHelper } from \"@adaas/a-frame/helpers/Hash.helper\";\nimport { A_FrameDefinitionFeatures } from \"./A-FrameDefinition.constants\";\nimport { A_FrameTargetType } from \"../A-Frame/A-Frame.types\";\nimport { A_FRAME_MODELS } from \"../A-FrameModels\";\n\nexport class A_FrameDefinition extends A_Entity<A_FrameDefinition_Init, A_FrameDefinition_Serialized> {\n\n static get concept(): string {\n return 'a-frame';\n }\n\n protected _name!: string;\n protected _type!: A_FrameTargetType;\n protected _source!: string;\n protected _dependency!: string;\n protected _description?: string;\n protected _namespace!: A_FrameNamespace;\n protected _metadata?: Record<string, any>;\n protected _vector?: A_FrameVector;\n\n /**\n * Common properties for all definition types (component, entity, container, fragment, method\n */\n protected _hash!: string;\n protected _date?: string;\n protected _model!: string;\n protected _requestedModel!: string;\n protected _credentialId!: string;\n protected _aFrameVersion!: string;\n protected _aFrameServerVersion!: string;\n protected _aFrameMeta?: DefinitionExtractedMeta;\n\n //-----------------------------------------------------------------------------------------------------\n //---------------------------------------- Primary properties -----------------------------------------\n //-----------------------------------------------------------------------------------------------------\n /**\n * Definition Identifier from ASEID unique name \n */\n get id(): string {\n return this.aseid.id;\n }\n /**\n * The type of the definition target (component, entity, container, fragment, or method)\n */\n get type(): A_FrameTargetType {\n return this._type;\n }\n /**\n * The name of the defined feature (e.g. \"MyComponent\", \"myMethod\", etc.)\n */\n get name(): string {\n return this._name;\n }\n /**\n * Description that explains the purpose of the defined feature, its inputs/outputs, or any other relevant information.\n */\n get description(): string | undefined {\n return this._description;\n }\n\n get dependency(): A_Dependency {\n return new A_Dependency(this._dependency);\n }\n /**\n * The original source code string that implements the defined feature. This is the main content that gets embedded and indexed for search.\n */\n get source(): string {\n return this._source;\n }\n /**\n * The vector embedding representing the definition's source and metadata. This is populated after embedding and is used for similarity search in the index.\n */\n get vector(): A_FrameVector | undefined {\n return this._vector;\n }\n /**\n * Namespace to which this definition belongs. Used for scoping search and organizing definitions. If not specified, defaults to the global namespace.\n */\n get namespace(): A_FrameNamespace {\n return this._namespace;\n }\n /**\n * Additional metadata about the definition, stored as key-value pairs. This can include any relevant information that doesn't fit into the other properties but may be useful for search or organization.\n */\n get metadata(): Record<string, any> {\n return this._metadata || {};\n }\n //-----------------------------------------------------------------------------------------------------\n //----------------------------------- Common State properties -----------------------------------------\n //-----------------------------------------------------------------------------------------------------\n /**\n * A unique hash string computed from the definition's name, source, description, and metadata. This is used to identify identical definitions and avoid duplicates in the index.\n */\n get hash(): string {\n return this._hash;\n }\n /**\n * The timestamp (in milliseconds since epoch) when the definition was embedded. This is used for tracking the freshness of the embedding and can be useful for re-embedding stale definitions.\n */\n get date(): string | undefined {\n return this._date;\n }\n /**\n * The name of the embedding model used to produce the vector. This is important for understanding the characteristics of the embedding and for debugging purposes.\n */\n get model(): string {\n return this._model;\n }\n /**\n * The model requested for embedding at init time. Defaults to `A_FRAME_MODELS.ANTARES`\n * if not explicitly overridden. Sent to the server in the embed request.\n */\n get requestedModel(): string {\n return this._requestedModel;\n }\n /**\n * ID of the server credential (API key) used during embedding. This is useful for auditing and debugging embedding operations, especially when multiple credentials are in use.\n */\n get credentialId(): string | undefined {\n return this._credentialId;\n }\n /**\n * Version of @adaas/a-frame that produced this record. This helps track compatibility and understand which version of the library was used to create the definition.\n */\n get aFrameVersion(): string | undefined {\n return this._aFrameVersion;\n }\n /**\n * Version of a-frame-server that produced the vector. This is useful for debugging embedding issues and ensuring compatibility between the library and the embed server.\n */\n get aFrameServerVersion(): string | undefined {\n return this._aFrameServerVersion;\n }\n /**\n * Structural metadata extracted server-side when the definition was embedded.\n * Includes discovered methods, @A_Inject dependencies, and @A_Feature.Extend names.\n */\n get aFrameMeta(): DefinitionExtractedMeta | undefined {\n return this._aFrameMeta;\n }\n //-----------------------------------------------------------------------------------------------------\n //--------------------------------------- Computed properties -----------------------------------------\n //-----------------------------------------------------------------------------------------------------\n get isEmbed(): boolean {\n return this._vector !== undefined;\n }\n /**\n * Saves the definition to storage. The actual implementation of saving is handled by the A_FrameDefinitionFeatures.Save feature, which can be implemented by the environment (e.g. browser, Node.js) to persist the definition in a database, file system, or other storage mechanism.\n * \n * @param scope \n * @returns \n */\n save(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameDefinitionFeatures.Save, scope);\n }\n /**\n * Deletes the definition from storage. The actual implementation of deletion is handled by the A_FrameDefinitionFeatures.Destroy feature, which can be implemented by the environment to remove the definition from the database, file system, or other storage mechanism.\n * \n * @param scope \n * @returns \n */\n destroy(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameDefinitionFeatures.Destroy, scope);\n }\n /**\n * Loads the definition from storage. The actual implementation of loading is handled by the A_FrameDefinitionFeatures.Load feature, which can be implemented by the environment to retrieve the definition from the database, file system, or other storage mechanism and populate the entity's properties accordingly.\n * \n * @param scope \n * @returns \n */\n load(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameDefinitionFeatures.Load, scope);\n }\n /**\n * Updates the definition's properties. This can be used to modify the source code, description, metadata, or namespace of the definition. After updating, you may want to call `embed()` again to refresh the embedding based on the new content.\n * \n * @param updates \n */\n update(updates: Partial<Pick<A_FrameDefinition, 'source' | 'description' | 'metadata' | 'namespace'>>): void {\n if (updates.source) this._source = updates.source;\n if (updates.description !== undefined) this._description = updates.description;\n if (updates.metadata !== undefined) this._metadata = updates.metadata;\n if (updates.namespace !== undefined) this._namespace = updates.namespace;\n }\n /**\n * Generates the embedding for the definition's source and metadata. \n * \n * @param scope \n * @returns \n */\n embed(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameDefinitionFeatures.Embed, scope);\n }\n\n\n fromNew(newEntity: A_FrameDefinition_Init): void {\n this._type = newEntity.type;\n\n this.aseid = this.generateASEID({\n id: A_FormatterHelper.toKebabCase(newEntity.dependency + '-' + newEntity.name),\n scope: 'a-frame',\n });\n\n this._name = newEntity.name;\n\n const hashSource = this._name + '//'\n + (newEntity.description || '') + '//'\n + (newEntity.metadata ? JSON.stringify(newEntity.metadata) : '') + '//'\n + newEntity.source + '//'\n + 'Namespace: ' + newEntity.namespace.id;\n\n this._hash = A_FrameHashHelper.fnv1a(hashSource);\n\n this._source = newEntity.source;\n this._description = newEntity.description;\n this._namespace = newEntity.namespace;\n this._metadata = newEntity.metadata;\n this._dependency = newEntity.dependency;\n this._requestedModel = newEntity.model ?? A_FRAME_MODELS.ANTARES;\n }\n\n fromJSON(serialized: A_FrameDefinition_Serialized): void {\n this._name = serialized.name;\n this._hash = serialized.hash;\n this._source = serialized.source || '';\n this._description = serialized.description;\n this._metadata = serialized.metadata;\n this._vector = serialized.embedding ? new A_FrameVector(serialized.embedding) : undefined;\n this._date = serialized.date;\n this._model = serialized.model;\n this._credentialId = serialized.credentialId;\n this._aFrameVersion = serialized.aFrameVersion;\n this._aFrameServerVersion = serialized.aFrameServerVersion;\n this._aFrameMeta = serialized.aFrameMeta;\n }\n\n toJSON(): A_FrameDefinition_Serialized {\n return {\n ...super.toJSON(),\n hash: this._hash,\n name: this._name,\n source: this._source,\n description: this._description,\n metadata: this._metadata,\n namespace: this._namespace.aseid.toString(),\n embedding: this._vector?.values,\n date: this._date ?? new Date().toISOString(),\n model: this._model,\n credentialId: this._credentialId,\n aFrameVersion: this._aFrameVersion,\n aFrameServerVersion: this._aFrameServerVersion,\n aFrameMeta: this._aFrameMeta,\n };\n }\n\n\n // ─── Embedding hydration ──────────────────────────────────────────────────\n\n /** Populate the vector from a pre-existing storage record */\n // hydrateFromRecord(record: A_FrameDefinition_Record): void {\n // if (record.hash !== this._hash) {\n // throw new Error(\n // `A_FrameDefinition.hydrateFromRecord: hash mismatch for \"${this._name}\" ` +\n // `(expected ${this._hash}, got ${record.hash})`\n // );\n // }\n // this._vector = new A_FrameVector(record.embedding);\n // this._embeddedAt = record.embeddedAt;\n // this._model = record.model;\n // this._credentialId = record.credentialId;\n // this._aFrameVersion = record.aFrameVersion;\n // this._aFrameServerVersion = record.aFrameServerVersion;\n // }\n\n /** Populate the vector from a freshly-fetched embedding */\n hydrateFromEmbedding(embedding: Float32Array, meta?: A_FrameDefinition_EmbeddingMeta): void {\n this._vector = new A_FrameVector(embedding);\n this._date = new Date().toISOString();\n if (meta) {\n this._model = meta.model;\n this._credentialId = meta.credentialId ?? undefined;\n this._aFrameVersion = meta.aFrameVersion;\n this._aFrameServerVersion = meta.aFrameServerVersion;\n if (meta.aFrameMeta)\n this._aFrameMeta = meta.aFrameMeta;\n }\n }\n\n // ─── Embedding input ──────────────────────────────────────────────────────\n\n /**\n * Build the text string sent to the embedding model.\n * Concatenates name + description + source so the resulting\n * vector captures both intent and implementation.\n */\n toString(): string {\n const parts: string[] = [];\n parts.push(`// ${this._name}`);\n if (this._description) parts.push(`// ${this._description}`);\n parts.push(this._source);\n return parts.join('\\n');\n }\n}\n","\n\n\nexport const A_FrameDynamicStructureFeatures = {\n Load: '_A_FRAME_DYNAMIC_STRUCTURE_LOAD',\n Patch: '_A_FRAME_DYNAMIC_STRUCTURE_PATCH',\n Generate: '_A_FRAME_DYNAMIC_STRUCTURE_GENERATE',\n Map: '_A_FRAME_DYNAMIC_STRUCTURE_MAP',\n} as const;\n\n\nexport const A_FrameDynamicStructureEvents = {\n Updated: '_A_FRAME_DYNAMIC_STRUCTURE_UPDATED',\n} as const;","import { A_Fragment } from \"@adaas/a-concept\"\n\n\nexport class A_FrameDynamicStructureOperation<\n _InputParams = any,\n> extends A_Fragment {\n\n protected _meta: Map<string, any> = new Map();\n\n constructor(\n params: _InputParams = {} as _InputParams\n ) {\n super({ name: 'a-frame-dynamic-structure-operation-context' });\n this._meta.set('params', params);\n\n }\n\n get params(): _InputParams {\n return this._meta.get('params');\n }\n\n\n get(key: string) {\n return this._meta.get(key);\n }\n\n\n set(key: string, value: any) {\n this._meta.set(key, value);\n }\n\n}\n","import { A_Error } from \"@adaas/a-concept\";\n\n\nexport class A_FrameDynamicStructureError extends A_Error {\n\n static readonly InvalidPatch = 'InvalidPatch';\n static readonly VersionMismatch = 'VersionMismatch';\n static readonly ComponentNotFound = 'ComponentNotFound';\n static readonly InvalidOperation = 'InvalidOperation';\n\n static readonly GenerationFailed = 'GenerationFailed';\n \n}","import { A_Entity } from \"@adaas/a-concept\";\nimport { A_FrameDynamicPatch_Init, A_FrameDynamicPatch_Serialized } from \"./A-FrameDynamicPatch.types\";\n\n\nexport class A_FrameDynamicPatch extends A_Entity<A_FrameDynamicPatch_Init, A_FrameDynamicPatch_Serialized> {\n\n static get concept(): string {\n return 'a-frame';\n }\n\n version!: number;\n timestamp!: number;\n reason!: string;\n encoded!: string; // base64-encoded snapshot of components at this version\n delta!: number; // component count change vs. previous patch\n\n\n\n fromNew(options: A_FrameDynamicPatch_Init) {\n this.version = options.version;\n this.timestamp = options.timestamp;\n this.reason = options.reason;\n this.encoded = options.encoded;\n this.delta = options.delta;\n }\n\n\n toJSON(): A_FrameDynamicPatch_Serialized {\n return {\n ...super.toJSON(),\n version: this.version,\n timestamp: this.timestamp,\n reason: this.reason,\n encoded: this.encoded,\n delta: this.delta,\n }\n }\n}","import { A_Fragment } from \"@adaas/a-concept\";\nimport {\n A_FrameComponentMapEntry,\n A_FrameComponentMapResult,\n A_FrameDynamicStructureDefinition,\n A_FrameDynamicStructureDefinitionEntity,\n} from \"./A-FrameDynamicStructure.types\";\n\n\n/**\n * Context fragment that accumulates component-mapping results produced by\n * `A_FrameComponentMapper.mapStructure()`.\n *\n * Uses a flat `prompt → A_FrameComponentMapEntry` map so lookups are O(1).\n * Call `toResult(definition)` after the mapper has finished to build the\n * structured `A_FrameComponentMapResult` that mirrors the definition layout.\n */\nexport class A_FrameComponentMapIndex extends A_Fragment {\n\n private _entries: Map<string, A_FrameComponentMapEntry> = new Map();\n\n constructor() {\n super({ name: 'a-frame-component-map-index' });\n }\n\n // ── Basic mutation ───────────────────────────────────────────────────────\n\n /**\n * Store (or overwrite) a map entry for the element identified by `entry.prompt`.\n */\n set(entry: A_FrameComponentMapEntry): void {\n this._entries.set(entry.prompt, entry);\n }\n\n /**\n * Retrieve the map entry for the given prompt, or `undefined` if not yet stored.\n */\n get(prompt: string): A_FrameComponentMapEntry | undefined {\n return this._entries.get(prompt);\n }\n\n /** Remove all stored entries. */\n clear(): void {\n this._entries.clear();\n }\n\n // ── Accessors ────────────────────────────────────────────────────────────\n\n /** Total number of stored entries. */\n get size(): number {\n return this._entries.size;\n }\n\n /** All stored entries in insertion order. */\n list(): A_FrameComponentMapEntry[] {\n return Array.from(this._entries.values());\n }\n\n /** Entries that have been successfully matched to a registered class. */\n get matched(): A_FrameComponentMapEntry[] {\n return this.list().filter(e => e.matchedClass !== null);\n }\n\n /** Entries where no matching registered class was found. */\n get unmatched(): A_FrameComponentMapEntry[] {\n return this.list().filter(e => e.matchedClass === null);\n }\n\n // ── Result building ──────────────────────────────────────────────────────\n\n /**\n * Construct a fully structured `A_FrameComponentMapResult` from the\n * accumulated entries and the provided definition.\n *\n * For each element in the definition the method looks up its entry by\n * prompt. If no entry exists (element had no server embedding), a default\n * unmatched entry is generated so the result shape always matches the\n * definition shape.\n */\n toResult(definition: A_FrameDynamicStructureDefinition): A_FrameComponentMapResult {\n const getEntry = (el: A_FrameDynamicStructureDefinitionEntity): A_FrameComponentMapEntry => {\n const existing = this._entries.get(el.prompt);\n if (existing) return existing;\n return { prompt: el.prompt, role: el.role, class: el.class, matchedClass: null, matchScore: 0 };\n };\n\n return {\n containers: definition.containers.map(c => ({\n ...getEntry(c),\n components: (c.components ?? []).map(getEntry),\n fragments: (c.fragments ?? []).map(getEntry),\n entities: (c.entities ?? []).map(getEntry),\n })),\n components: definition.components.map(getEntry),\n fragments: definition.fragments.map(getEntry),\n entities: definition.entities.map(getEntry),\n };\n }\n}\n","import { A_CommonHelper, A_Context, A_Entity, A_Scope } from \"@adaas/a-concept\";\nimport {\n A_FrameDynamicStructure_Init,\n A_FrameDynamicStructure_Serialized,\n A_FrameDynamicStructureDefinition,\n A_FrameComponentMapResult,\n} from \"./A-FrameDynamicStructure.types\";\nimport { A_FrameDynamicStructureFeatures } from \"./A-FrameDynamicStructure.constants\";\nimport { A_FrameDynamicStructureOperation } from \"./A-FrameDynamicStructureOperation.context\";\nimport { A_FrameDynamicStructureError } from \"./A-FrameDynamicStructure.error\";\nimport { A_FrameDynamicPatch } from \"../A-FrameDynamicPatch/A-FrameDynamicPatch.entity\";\nimport { A_FRAME_MODELS } from \"../A-FrameModels/A-FrameModels.constants\";\nimport { A_FrameComponentMapIndex } from \"./A-FrameComponentMapIndex.context\";\n\n\nexport class A_FrameDynamicStructure extends A_Entity<A_FrameDynamicStructure_Init, A_FrameDynamicStructure_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 _context!: string;\n private _metaHint!: string;\n private _includeBases!: string[];\n private _excludeBases!: string[];\n private _enabledComponents!: string[];\n private _minScore!: number;\n private _maxRetries!: number;\n private _candidateCount!: number;\n\n // ── State ─────────────────────────────────────────────────────────────────\n private _definition!: A_FrameDynamicStructureDefinition | null;\n private _mapResult!: A_FrameComponentMapResult | null;\n private _history!: A_FrameDynamicPatch[];\n private _version!: number;\n\n fromNew(options: A_FrameDynamicStructure_Init) {\n super.fromNew(options);\n\n this.createdAt = Date.now();\n this.prompt = options.prompt;\n this.model = options.options?.model || A_FRAME_MODELS.PULSAR;\n this._context = options.options?.context ?? '';\n this._metaHint = options.options?.metaHint ?? '';\n this._includeBases = (options.options?.includeBases || [])\n .map(b => typeof b === 'string' ? b : A_CommonHelper.getComponentName(b));\n this._excludeBases = (options.options?.excludeBases || [])\n .map(b => typeof b === 'string' ? b : A_CommonHelper.getComponentName(b));\n this._enabledComponents = (options.options?.enabledComponents || [])\n .map(b => typeof b === 'string' ? b : A_CommonHelper.getComponentName(b));\n\n this._minScore = options.options?.minScore ?? 0.7;\n this._maxRetries = options.options?.maxRetries ?? 3;\n this._candidateCount = options.options?.candidateCount ?? 5;\n\n this._definition = null;\n this._mapResult = null;\n this._history = [];\n this._version = 0;\n }\n\n // ── Accessors ─────────────────────────────────────────────────────────────\n\n /** The AI model name used for generation / patching. */\n get modelName(): string { return this.model; }\n\n /** Context hint forwarded to the AI for scoping architecture style. */\n get contextHint(): string { return this._context; }\n\n /** Meta/prop hint forwarded to the AI for component selection. */\n get metaHintValue(): string { return this._metaHint; }\n\n /** Base-class allowlist (string names). */\n get includedBases(): string[] { return this._includeBases; }\n\n /** Base-class denylist (string names). */\n get excludedBases(): string[] { return this._excludeBases; }\n\n /** Explicit component allowlist (string names). */\n get enabledComponentsList(): string[] { return this._enabledComponents; }\n\n /** Minimum cosine-similarity score (0–1) required for a component match. */\n get minScore(): number { return this._minScore; }\n\n /** Max server refinement retries per unmatched element. */\n get maxRetries(): number { return this._maxRetries; }\n\n /** Number of top candidates to send to the AI on each retry. */\n get candidateCount(): number { return this._candidateCount; }\n\n /** Current architecture definition as a raw object, or null before first generate(). */\n get definition(): A_FrameDynamicStructureDefinition | null { return this._definition; }\n\n /**\n * Current architecture definition serialised to a formatted JSON string,\n * with server embeddings stripped for readability.\n * Returns an empty-definition JSON before generate() is called.\n */\n get structure(): string {\n if (!this._definition) {\n return JSON.stringify({ containers: [], components: [], fragments: [], entities: [] }, null, 2);\n }\n return JSON.stringify(this._stripEmbeddings(this._definition), null, 2);\n }\n\n /** Component-mapping result produced by map(), or null before map() is called. */\n get mapResult(): A_FrameComponentMapResult | null { return this._mapResult; }\n\n /** Immutable patch history. */\n get history(): ReadonlyArray<A_FrameDynamicPatch> { return this._history; }\n\n /** Current definition version (increments with each patch). */\n get version(): number { return this._version; }\n\n // ── Main pipeline ─────────────────────────────────────────────────────────\n\n /**\n * Generate the architecture definition from the entity's prompt.\n * Calls the server's /api/v1/structure/generate endpoint via the A_FrameChannel feature.\n */\n async generate(): Promise<void> {\n const operation = new A_FrameDynamicStructureOperation();\n\n const executionScope = new A_Scope({\n name: 'a-frame-dynamic-structure-generate',\n fragments: [operation],\n }).inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameDynamicStructureFeatures.Generate, executionScope);\n executionScope.destroy();\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameDynamicStructureError({\n title: A_FrameDynamicStructureError.GenerationFailed,\n description: `Failed to generate structure: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n /**\n * Apply a natural-language patch instruction to the current definition.\n * Calls the server's /api/v1/structure/patch endpoint via the A_FrameChannel feature.\n */\n async patch(instruction: string): Promise<void> {\n const operation = new A_FrameDynamicStructureOperation({ instruction });\n\n const executionScope = new A_Scope({\n name: 'a-frame-dynamic-structure-patch',\n fragments: [operation],\n }).inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameDynamicStructureFeatures.Patch, executionScope);\n executionScope.destroy();\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameDynamicStructureError({\n title: A_FrameDynamicStructureError.GenerationFailed,\n description: `Failed to patch structure: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n /**\n * Match every element in the current definition against the local A_FrameIndex.\n * Retries unmatched elements via server-side refinement patches.\n *\n * Results are stored separately from the raw definition and are available\n * via `mapResult` after this call completes.\n */\n async map(): Promise<void> {\n const mapIndex = new A_FrameComponentMapIndex();\n\n const executionScope = new A_Scope({\n name: 'a-frame-dynamic-structure-map',\n fragments: [mapIndex],\n }).inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameDynamicStructureFeatures.Map, executionScope);\n executionScope.destroy();\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameDynamicStructureError({\n title: A_FrameDynamicStructureError.GenerationFailed,\n description: `Failed to map structure: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n // ── Hydration ─────────────────────────────────────────────────────────────\n\n /**\n * Populate the definition from a server generate response.\n * Creates the first history entry.\n */\n hydrateFromGeneration(\n definition: A_FrameDynamicStructureDefinition,\n meta: { model: string; serverVersion: string },\n ): void {\n this._definition = definition;\n this._mapResult = null;\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._stripEmbeddings(definition))).toString('base64'),\n delta: this._countElements(definition),\n }));\n }\n\n /**\n * Replace the current definition with a patched version from the server.\n * Increments the version and records a history entry.\n */\n hydrateFromPatch(\n definition: A_FrameDynamicStructureDefinition,\n patchSummary: string,\n meta: { model: string; serverVersion: string },\n ): void {\n const prevCount = this._definition ? this._countElements(this._definition) : 0;\n this._definition = definition;\n this._mapResult = null; // previous map result is now stale\n this._version++;\n\n this._history.push(new A_FrameDynamicPatch({\n version: this._version,\n timestamp: Date.now(),\n reason: patchSummary,\n encoded: Buffer.from(JSON.stringify(this._stripEmbeddings(definition))).toString('base64'),\n delta: this._countElements(definition) - prevCount,\n }));\n }\n\n /**\n * Store the component-mapping result produced by `A_FrameComponentMapper`.\n * Called by the mapper after it finishes matching all elements.\n */\n hydrateFromMap(result: A_FrameComponentMapResult): void {\n this._mapResult = result;\n }\n\n // ── Serialisation ─────────────────────────────────────────────────────────\n\n toJSON(): A_FrameDynamicStructure_Serialized {\n const elementCount = this._definition ? this._countElements(this._definition) : 0;\n return {\n ...super.toJSON(),\n name: this.prompt,\n description: `DynamicStructure with ${elementCount} elements and ${this._history.length} patches`,\n metadata: {\n model: this.model,\n context: this._context,\n metaHint: this._metaHint,\n includeBases: this._includeBases,\n excludeBases: this._excludeBases,\n enabledComponents: this._enabledComponents,\n candidateCount: this._candidateCount,\n createdAt: this.createdAt,\n },\n history: this._history.map(p => p.toJSON()),\n };\n }\n\n // ── Private helpers ───────────────────────────────────────────────────────\n\n private _countElements(def: A_FrameDynamicStructureDefinition): number {\n return (def.containers?.length ?? 0)\n + (def.components?.length ?? 0)\n + (def.fragments?.length ?? 0)\n + (def.entities?.length ?? 0);\n }\n\n /** Return a copy of the definition with all `embedding` arrays removed. */\n private _stripEmbeddings(def: A_FrameDynamicStructureDefinition): A_FrameDynamicStructureDefinition {\n const strip = (el: any): any => {\n const { embedding, ...rest } = el;\n return rest;\n };\n return {\n containers: def.containers.map(c => ({\n ...strip(c),\n components: (c.components ?? []).map(strip),\n fragments: (c.fragments ?? []).map(strip),\n entities: (c.entities ?? []).map(strip),\n })),\n components: def.components.map(strip),\n fragments: def.fragments.map(strip),\n entities: def.entities.map(strip),\n };\n }\n}\n","\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_FrameSegment } from \"./A-FrameSegment.entity\";\n\n\nexport const A_FRAME_DEFAULT_SEGMENT_KEY = 'default';\n\n\nexport const A_FrameSegmentFeatures = {\n Load: '_A_FRAME_SEGMENT_LOAD',\n Save: '_A_FRAME_SEGMENT_SAVE',\n Embed: '_A_FRAME_SEGMENT_EMBED',\n Destroy: '_A_FRAME_SEGMENT_DESTROY',\n} as const;","import { A_Context, A_Entity, A_FormatterHelper, A_Scope } from \"@adaas/a-concept\";\nimport { A_FrameVector } from \"../A-FrameVector/A-FrameVector.entity\";\nimport {\n A_FrameSegment_Init,\n A_FrameSegment_Serialized,\n A_FrameSegment_Record,\n A_FrameSegment_EmbeddingMeta,\n A_FrameSegmentOptions,\n} from \"./A-FrameSegment.types\";\nimport { A_FrameHashHelper } from \"@adaas/a-frame/helpers/Hash.helper\";\nimport { A_FrameSegmentFeatures } from \"./A-FrameSegment.constants\";\nimport { A_FRAME_MODELS } from \"../A-FrameModels\";\n\n\nexport class A_FrameSegment extends A_Entity<A_FrameSegment_Init, A_FrameSegment_Serialized> {\n\n static get concept(): string {\n return 'a-frame';\n }\n\n protected _content!: string;\n protected _hash!: string;\n protected _vector?: A_FrameVector;\n protected _embeddedAt?: string;\n protected _model?: string;\n protected _credentialId?: string;\n protected _aFrameVersion?: string;\n protected _aFrameServerVersion?: string;\n protected _options?: Partial<A_FrameSegmentOptions>;\n\n\n // ─── Getters ──────────────────────────────────────────────────────────────\n\n get id(): string {\n return this.aseid.id;\n }\n\n get content(): string {\n return this._content;\n }\n\n get hash(): string {\n return this._hash;\n }\n\n get vector(): A_FrameVector | undefined {\n return this._vector;\n }\n\n get embedding(): Float32Array | null {\n return this._vector?.values ?? null;\n }\n\n //-----------------------------------------------------------------------------------------------------\n //--------------------------------------- Computed properties -----------------------------------------\n //-----------------------------------------------------------------------------------------------------\n get aFrameServerVersion(): string | undefined {\n return this._aFrameServerVersion;\n }\n\n get aFrameVersion(): string | undefined {\n return this._aFrameVersion;\n }\n\n get isEmbed(): boolean {\n return this._vector !== undefined;\n }\n\n get options(): Partial<A_FrameSegmentOptions> | undefined {\n return this._options;\n }\n\n /**\n * Physical model name returned by the server after embedding.\n * `undefined` until `embed()` has been called successfully.\n */\n get model(): string | undefined {\n return this._model;\n }\n\n /**\n * ISO timestamp of when the embedding was produced.\n * `undefined` until `embed()` has been called successfully.\n */\n get embeddedAt(): string | undefined {\n return this._embeddedAt;\n }\n\n /**\n * ID of the server credential (API key) used during embedding.\n * `undefined` until `embed()` has been called successfully.\n */\n get credentialId(): string | undefined {\n return this._credentialId;\n }\n\n /**\n * Saves Segment to storage. The actual implementation of saving is handled by the A_FrameSegmentFeatures.Save feature, which can be implemented by the environment to persist the definition to a database, file system, or other storage mechanism.\n * \n * @param scope \n * @returns \n */\n save(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameSegmentFeatures.Save, scope);\n }\n /**\n * Deletes the namespace from storage. The actual implementation of deletion is handled by the A_FrameSegmentFeatures.Destroy feature, which can be implemented by the environment to remove the namespace from the database, file system, or other storage mechanism.\n * \n * @param scope \n * @returns \n */\n destroy(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameSegmentFeatures.Destroy, scope);\n }\n /**\n * Loads the namespace from storage. The actual implementation of loading is handled by the A_FrameSegmentFeatures.Load feature, which can be implemented by the environment to retrieve the namespace from the database, file system, or other storage mechanism and populate the entity's properties accordingly.\n * \n * @param scope \n * @returns \n */\n async load(scope?: A_Scope): Promise<void> {\n return this.call(A_FrameSegmentFeatures.Load, scope);\n }\n /**\n * Updates the definition's properties. This can be used to modify the source code, description, metadata, or namespace of the definition. After updating, you may want to call `embed()` again to refresh the embedding based on the new content.\n * \n * @param updates \n */\n update(updates: Partial<Pick<A_FrameSegment, 'content'>>): void {\n if (updates.content) this._content = updates.content;\n }\n /**\n * Generates an embedding vector for the namespace using the A_FrameSegmentFeatures.Embed feature. This typically involves sending the namespace's content (name + description) to an embedding model and storing the resulting vector in the entity. Once embedded, the namespace can be searched using its vector representation.\n * \n * @param scope \n * @returns \n */\n embed(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameSegmentFeatures.Embed, scope);\n }\n\n // ─── A_Entity lifecycle ───────────────────────────────────────────────────\n\n fromNew(init: A_FrameSegment_Init): void {\n super.fromNew(init);\n\n this._content = init.content;\n this._options = { model: A_FRAME_MODELS.ANTARES, ...init.options };\n\n const hashSource = this._content;\n\n this._hash = A_FrameHashHelper.fnv1a(hashSource);\n }\n\n fromJSON(serialized: A_FrameSegment_Serialized): void {\n this._content = serialized.content;\n this._hash = serialized.hash;\n this._vector = serialized.embedding ? new A_FrameVector(serialized.embedding) : undefined;\n this._embeddedAt = serialized.embeddedAt;\n this._model = serialized.model;\n this._credentialId = serialized.credentialId;\n this._aFrameVersion = serialized.aFrameVersion;\n this._aFrameServerVersion = serialized.aFrameServerVersion;\n if (serialized.task) {\n this._options = { ...this._options, task: serialized.task };\n }\n }\n\n\n\n toJSON(): A_FrameSegment_Serialized {\n return {\n ...super.toJSON(),\n hash: this._hash,\n content: this._content,\n embedding: this._vector?.values,\n embeddedAt: this._embeddedAt ?? new Date().toISOString(),\n task: this._options?.task,\n model: this._model,\n credentialId: this._credentialId,\n aFrameVersion: this._aFrameVersion,\n aFrameServerVersion: this._aFrameServerVersion,\n };\n }\n\n\n // ─── Embedding hydration ──────────────────────────────────────────────────\n\n hydrateFromRecord(record: A_FrameSegment_Record): void {\n if (record.hash !== this._hash) {\n throw new Error(\n `A_FrameSegment.hydrateFromRecord: hash mismatch for \"${this._content}\" ` +\n `(expected ${this._hash}, got ${record.hash})`\n );\n }\n this._vector = new A_FrameVector(record.embedding);\n this._embeddedAt = record.embeddedAt;\n if (record.task) {\n this._options = { ...this._options, task: record.task };\n }\n }\n\n /**\n * Populate the embedding vector directly from a raw `Float32Array`.\n * Use this when the vector is obtained externally (e.g. from a server\n * response) without going through the full `embed()` feature pipeline.\n */\n hydrateFromEmbedding(embedding: Float32Array): void {\n this._vector = new A_FrameVector(embedding);\n }\n\n /**\n * Build the text string sent to the embedding model.\n * Uses content so the vector captures semantic intent.\n */\n toString(): string {\n const parts: string[] = [`// content: ${this._content}`];\n return parts.join('\\n');\n }\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 *\n * When `targetSegments` is provided the caller pins the exact segments to\n * patch — no embedding or semantic search is performed. Every supplied\n * segment must already belong to this content's index; unknown segments\n * are rejected with an error.\n *\n * When omitted, the server identifies which segments to modify using\n * semantic search over segment embeddings (original behaviour).\n */\n async patch(instruction: string, targetSegments?: A_FrameSegment | A_FrameSegment[]): 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 let segments: A_FrameSegment[];\n\n if (targetSegments !== undefined) {\n // ── Pinned segments path ──────────────────────────────────────────\n const pinned = Array.isArray(targetSegments) ? targetSegments : [targetSegments];\n\n // Validate every pinned segment is part of this content's index\n const unknown = pinned.filter(s => !this.index.get(s.id as string));\n if (unknown.length > 0) {\n executionScope.destroy();\n throw new A_FrameDynamicContentError({\n title: A_FrameDynamicContentError.PatchFailed,\n description:\n `Segment(s) not found in this content's index: ` +\n unknown.map(s => `\"${s.id}\"`).join(', ') +\n `. Only segments that belong to this DynamicContent instance can be targeted.`,\n });\n }\n\n segments = pinned;\n } else {\n // ── Semantic search path (original behaviour) ─────────────────────\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 segments = this.index.selectForPatch(inputSegment.vector ?? null, instruction, this._patchPieceLimit);\n }\n\n const operation = new A_FrameDynamicContentOperation({\n instruction,\n segments,\n });\n\n executionScope.register(operation);\n\n try {\n await this.call(A_FrameDynamicContentFeatures.Patch, executionScope);\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","export const A_FrameCompletionFeatures = {\n Generate: '_A_FRAME_COMPLETION_GENERATE',\n} as const;\n","import { A_Entity, A_Scope } from \"@adaas/a-concept\";\nimport { A_FrameVector } from \"../A-FrameVector/A-FrameVector.entity\";\nimport {\n A_FrameCompletion_Init,\n A_FrameCompletion_Serialized,\n A_FrameCompletionOptions,\n} from \"./A-FrameCompletion.types\";\nimport { A_FrameCompletionFeatures } from \"./A-FrameCompletion.constants\";\nimport { A_FRAME_MODELS } from \"../A-FrameModels/A-FrameModels.constants\";\n\n\nexport class A_FrameCompletion extends A_Entity<A_FrameCompletion_Init, A_FrameCompletion_Serialized> {\n\n static get concept(): string {\n return 'a-frame';\n }\n\n protected _prompt!: string;\n protected _options?: A_FrameCompletionOptions;\n\n protected _text?: string;\n protected _vector?: A_FrameVector;\n protected _model?: string;\n protected _date?: string;\n protected _aFrameVersion?: string;\n protected _aFrameServerVersion?: string;\n\n\n // ─── Getters ──────────────────────────────────────────────────────────────\n\n get prompt(): string {\n return this._prompt;\n }\n\n get options(): A_FrameCompletionOptions | undefined {\n return this._options;\n }\n\n get text(): string | undefined {\n return this._text;\n }\n\n get vector(): A_FrameVector | undefined {\n return this._vector;\n }\n\n get embedding(): Float32Array | null {\n return this._vector?.values ?? null;\n }\n\n get model(): string | undefined {\n return this._model;\n }\n\n get date(): string | undefined {\n return this._date;\n }\n\n get isGenerated(): boolean {\n return this._text !== undefined;\n }\n\n\n // ─── Lifecycle ────────────────────────────────────────────────────────────\n\n fromNew(init: A_FrameCompletion_Init): void {\n super.fromNew(init);\n this._prompt = init.prompt;\n // Apply Rigel as the default model for code generation when none specified.\n this._options = init.options?.model\n ? init.options\n : { model: A_FRAME_MODELS.RIGEL, ...init.options };\n }\n\n fromJSON(serialized: A_FrameCompletion_Serialized): void {\n this._prompt = serialized.prompt;\n this._text = serialized.text;\n this._vector = serialized.embedding ? new A_FrameVector(serialized.embedding) : undefined;\n this._model = serialized.model;\n this._date = serialized.date;\n this._aFrameVersion = serialized.aFrameVersion;\n this._aFrameServerVersion = serialized.aFrameServerVersion;\n }\n\n toJSON(): A_FrameCompletion_Serialized {\n return {\n ...super.toJSON(),\n prompt: this._prompt,\n text: this._text,\n embedding: this._vector?.values,\n model: this._model,\n date: this._date,\n aFrameVersion: this._aFrameVersion,\n aFrameServerVersion: this._aFrameServerVersion,\n };\n }\n\n\n // ─── Operations ──────────────────────────────────────────────────────────\n\n /**\n * Generates a text completion for the prompt and stores the resulting text\n * along with its embedding vector. The actual implementation is provided by\n * the A_FrameCompletionFeatures.Generate feature (supplied by A_FrameChannel).\n */\n generate(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameCompletionFeatures.Generate, scope);\n }\n\n\n // ─── Hydration ────────────────────────────────────────────────────────────\n\n hydrateFromGeneration(result: {\n text: string;\n embedding: Float32Array;\n model?: string;\n date?: string;\n aFrameVersion?: string;\n aFrameServerVersion?: string;\n }): void {\n this._text = result.text;\n this._vector = new A_FrameVector(result.embedding);\n this._model = result.model;\n this._date = result.date;\n this._aFrameVersion = result.aFrameVersion;\n this._aFrameServerVersion = result.aFrameServerVersion;\n }\n}\n","export const A_FrameSchemaFeatures = {\n /** POST /api/v1/schema/extract — extract structured data from a prompt */\n Extract: '_A_FRAME_SCHEMA_EXTRACT',\n} as const;\n","import { A_Entity, A_Scope } from \"@adaas/a-concept\";\nimport {\n A_FrameSchema_Init,\n A_FrameSchema_Serialized,\n A_FrameSchema_ExtractionMeta,\n A_FrameSchemaOptions,\n} from \"./A-FrameSchema.types\";\nimport { A_FrameSchemaFeatures } from \"./A-FrameSchema.constants\";\nimport { A_FRAME_MODELS } from \"../A-FrameModels/A-FrameModels.constants\";\n\n\n/**\n * A_FrameSchema<T>\n *\n * Sends a natural-language prompt together with a schema descriptor to the\n * server's `/api/v1/schema/extract` endpoint (Nova model). The server\n * returns a structured JSON object that maps the prompt's content to the\n * fields described by `schema`.\n *\n * Generic parameter `T` constrains the shape of the extracted `data` getter\n * so call-sites get full type-safety without casting.\n *\n * Usage:\n * ```ts\n * const scheme = new A_FrameSchema<{ city: string; date: string }>({\n * prompt: 'Book a flight to Paris next Monday.',\n * schema: { city: 'string', date: 'string' },\n * });\n * container.scope.register(scheme);\n * await scheme.extract();\n *\n * console.log(scheme.data); // { city: 'Paris', date: '...' }\n * console.log(scheme.model); // physical model name returned by the server\n * console.log(scheme.isExtracted); // true\n * ```\n */\nexport class A_FrameSchema<T extends Record<string, unknown> = Record<string, unknown>>\n extends A_Entity<A_FrameSchema_Init<T>, A_FrameSchema_Serialized<T>> {\n\n static get concept(): string {\n return 'a-frame';\n }\n\n protected _prompt!: string;\n protected _schema!: Record<keyof T, string | Record<string, string>>;\n protected _options?: A_FrameSchemaOptions;\n\n protected _data?: T;\n protected _model?: string;\n protected _date?: string;\n protected _aFrameVersion?: string;\n protected _aFrameServerVersion?: string;\n\n\n // ─── Getters ──────────────────────────────────────────────────────────────\n\n /** The natural-language input prompt used for extraction. */\n get prompt(): string {\n return this._prompt;\n }\n\n /** The schema descriptor passed at construction time. */\n get schema(): Record<keyof T, string | Record<string, string>> {\n return this._schema;\n }\n\n /** Configured options (model, system, temperature, max_tokens). */\n get options(): A_FrameSchemaOptions | undefined {\n return this._options;\n }\n\n /**\n * The structured data extracted by the model.\n * Returns `undefined` until `extract()` has been called successfully.\n */\n get data(): T | undefined {\n return this._data;\n }\n\n /** Physical model name returned by the server after extraction. */\n get model(): string | undefined {\n return this._model;\n }\n\n /** ISO timestamp string of when the extraction was performed. */\n get date(): string | undefined {\n return this._date;\n }\n\n /** `true` once `extract()` has been called and data is populated. */\n get isExtracted(): boolean {\n return this._data !== undefined;\n }\n\n\n // ─── Lifecycle ────────────────────────────────────────────────────────────\n\n fromNew(init: A_FrameSchema_Init<T>): void {\n super.fromNew(init);\n this._prompt = init.prompt;\n this._schema = init.schema;\n // Default to Nova — the structured-extraction model\n this._options = init.options?.model\n ? init.options\n : { model: A_FRAME_MODELS.NOVA, ...init.options };\n }\n\n fromJSON(serialized: A_FrameSchema_Serialized<T>): void {\n this._prompt = serialized.prompt;\n this._schema = serialized.schema as Record<keyof T, string | Record<string, string>>;\n this._data = serialized.data;\n this._model = serialized.model;\n this._date = serialized.date;\n this._aFrameVersion = serialized.aFrameVersion;\n this._aFrameServerVersion = serialized.aFrameServerVersion;\n }\n\n toJSON(): A_FrameSchema_Serialized<T> {\n return {\n ...super.toJSON(),\n prompt: this._prompt,\n schema: this._schema as Record<string, string | Record<string, string>>,\n data: this._data,\n model: this._model,\n date: this._date,\n aFrameVersion: this._aFrameVersion,\n aFrameServerVersion: this._aFrameServerVersion,\n };\n }\n\n\n // ─── Operations ───────────────────────────────────────────────────────────\n\n /**\n * Sends the prompt and schema to the server for structured extraction.\n * After completion, `data` will be populated with a typed `T` object.\n *\n * The feature is implemented by `A_FrameChannel.extractSchema`.\n */\n extract(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameSchemaFeatures.Extract, scope);\n }\n\n\n // ─── Hydration ────────────────────────────────────────────────────────────\n\n hydrateFromExtraction(data: T, meta: A_FrameSchema_ExtractionMeta): void {\n this._data = data;\n this._model = meta.model;\n this._date = meta.date;\n this._aFrameVersion = meta.aFrameVersion;\n this._aFrameServerVersion = meta.aFrameServerVersion;\n }\n}\n","\nexport const A_FrameDynamicFeatureFeatures = {\n Generate: '_A_FRAME_DYNAMIC_FEATURE_GENERATE',\n Patch: '_A_FRAME_DYNAMIC_FEATURE_PATCH',\n Map: '_A_FRAME_DYNAMIC_FEATURE_MAP',\n} as const;\n","import { A_Fragment } from \"@adaas/a-concept\";\n\n\n/**\n * Thin context fragment that carries parameters for a single DynamicFeature\n * operation (generate or patch). Injected into the feature execution scope and\n * resolved by channel feature-extension handlers via `@A_Inject`.\n */\nexport class A_FrameDynamicFeatureOperation<\n _InputParams = any,\n> extends A_Fragment {\n\n protected _meta: Map<string, any> = new Map();\n\n constructor(\n params: _InputParams = {} as _InputParams\n ) {\n super({ name: 'a-frame-dynamic-feature-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): any {\n return this._meta.get(key);\n }\n\n set(key: string, value: any): void {\n this._meta.set(key, value);\n }\n}\n","import { A_Error } from \"@adaas/a-concept\";\n\n\nexport class A_FrameDynamicFeatureError extends A_Error {\n\n static readonly GenerationFailed = 'GenerationFailed';\n static readonly PatchFailed = 'PatchFailed';\n static readonly MappingFailed = 'MappingFailed';\n static readonly MethodNotFound = 'MethodNotFound';\n static readonly InvalidOperation = 'InvalidOperation';\n}\n","import { A_Fragment } from \"@adaas/a-concept\";\nimport {\n A_FrameDynamicFeatureDefinition,\n A_FrameDynamicFeatureElementMapEntry,\n A_FrameDynamicFeatureMapResult,\n A_FrameDynamicFeatureStep,\n A_FrameDynamicFeatureStepMapEntry,\n} from \"./A-FrameDynamicFeature.types\";\n\n\n/**\n * Context fragment that accumulates the method/component-mapping results\n * produced by `A_FrameMethodMapper.mapFeature()`.\n *\n * Uses `prompt` as the unique key — same approach as `A_FrameComponentMapIndex`.\n * Call `toResult(definition)` after the mapper finishes to build the fully\n * structured `A_FrameDynamicFeatureMapResult`.\n */\nexport class A_FrameMethodMapIndex extends A_Fragment {\n\n private _stepEntries: Map<string, A_FrameDynamicFeatureStepMapEntry> = new Map();\n private _elementEntries: Map<string, A_FrameDynamicFeatureElementMapEntry> = new Map();\n\n constructor() {\n super({ name: 'a-frame-method-map-index' });\n }\n\n // ── Step entries ─────────────────────────────────────────────────────────\n\n setStep(entry: A_FrameDynamicFeatureStepMapEntry): void {\n this._stepEntries.set(entry.prompt, entry);\n }\n\n getStep(prompt: string): A_FrameDynamicFeatureStepMapEntry | undefined {\n return this._stepEntries.get(prompt);\n }\n\n // ── Element entries (components / fragments / entities) ───────────────────\n\n setElement(entry: A_FrameDynamicFeatureElementMapEntry): void {\n this._elementEntries.set(entry.prompt, entry);\n }\n\n getElement(prompt: string): A_FrameDynamicFeatureElementMapEntry | undefined {\n return this._elementEntries.get(prompt);\n }\n\n // ── Accessors ─────────────────────────────────────────────────────────────\n\n clear(): void {\n this._stepEntries.clear();\n this._elementEntries.clear();\n }\n\n get stepCount(): number { return this._stepEntries.size; }\n get elementCount(): number { return this._elementEntries.size; }\n\n get matchedSteps(): A_FrameDynamicFeatureStepMapEntry[] {\n return Array.from(this._stepEntries.values()).filter(e => e.matchedMethod !== null);\n }\n\n get unmatchedSteps(): A_FrameDynamicFeatureStepMapEntry[] {\n return Array.from(this._stepEntries.values()).filter(e => e.matchedMethod === null);\n }\n\n // ── Result building ───────────────────────────────────────────────────────\n\n /**\n * Construct a fully structured `A_FrameDynamicFeatureMapResult` from the\n * accumulated entries and the provided definition.\n */\n toResult(definition: A_FrameDynamicFeatureDefinition): A_FrameDynamicFeatureMapResult {\n const getStep = (step: A_FrameDynamicFeatureStep): A_FrameDynamicFeatureStepMapEntry => {\n const existing = this._stepEntries.get(step.prompt);\n if (existing) return existing;\n return {\n prompt: step.prompt,\n inputs: step.inputs,\n outputs: step.outputs,\n matchedClass: null,\n matchedMethod: null,\n matchScore: 0,\n };\n };\n\n const getElement = (el: { prompt: string }): A_FrameDynamicFeatureElementMapEntry => {\n const existing = this._elementEntries.get(el.prompt);\n if (existing) return existing;\n return { prompt: el.prompt, matchedClass: null, matchScore: 0 };\n };\n\n return {\n steps: definition.steps.map(getStep),\n components: definition.components.map(getElement),\n fragments: definition.fragments.map(getElement),\n entities: definition.entities.map(getElement),\n };\n }\n}\n","import { A_CommonHelper, A_Context, A_Entity, A_Scope } from \"@adaas/a-concept\";\nimport {\n A_FrameDynamicFeature_Init,\n A_FrameDynamicFeature_Serialized,\n A_FrameDynamicFeatureDefinition,\n A_FrameDynamicFeatureMapResult,\n} from \"./A-FrameDynamicFeature.types\";\nimport { A_FrameDynamicFeatureFeatures } from \"./A-FrameDynamicFeature.constants\";\nimport { A_FrameDynamicFeatureOperation } from \"./A-FrameDynamicFeatureOperation.context\";\nimport { A_FrameDynamicFeatureError } from \"./A-FrameDynamicFeature.error\";\nimport { A_FrameDynamicPatch } from \"../A-FrameDynamicPatch/A-FrameDynamicPatch.entity\";\nimport { A_FRAME_MODELS } from \"../A-FrameModels/A-FrameModels.constants\";\nimport { A_FrameMethodMapIndex } from \"./A-FrameMethodMapIndex.context\";\n\n\nexport class A_FrameDynamicFeature extends A_Entity<A_FrameDynamicFeature_Init, A_FrameDynamicFeature_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 _context!: string;\n private _includeBases!: string[];\n private _excludeBases!: string[];\n private _enabledComponents!: string[];\n private _minScore!: number;\n private _maxRetries!: number;\n\n // ── State ───────────────────────────────────────────────────────────────────\n private _definition!: A_FrameDynamicFeatureDefinition | null;\n private _mapResult!: A_FrameDynamicFeatureMapResult | null;\n private _history!: A_FrameDynamicPatch[];\n private _version!: number;\n\n fromNew(options: A_FrameDynamicFeature_Init) {\n super.fromNew(options);\n\n this.createdAt = Date.now();\n this.prompt = options.prompt;\n this._model = options.options?.model ?? A_FRAME_MODELS.PULSAR;\n this._context = options.options?.context ?? '';\n this._includeBases = (options.options?.includeBases ?? [])\n .map(b => typeof b === 'string' ? b : A_CommonHelper.getComponentName(b));\n this._excludeBases = (options.options?.excludeBases ?? [])\n .map(b => typeof b === 'string' ? b : A_CommonHelper.getComponentName(b));\n this._enabledComponents = (options.options?.enabledComponents ?? [])\n .map(b => typeof b === 'string' ? b : A_CommonHelper.getComponentName(b));\n this._minScore = options.options?.minScore ?? 0.7;\n this._maxRetries = options.options?.maxRetries ?? 3;\n\n this._definition = null;\n this._mapResult = null;\n this._history = [];\n this._version = 0;\n }\n\n // ── Accessors ───────────────────────────────────────────────────────────────\n\n get modelName(): string { return this._model; }\n get contextHint(): string { return this._context; }\n get includedBases(): string[] { return this._includeBases; }\n get excludedBases(): string[] { return this._excludeBases; }\n get enabledComponentsList():string[] { return this._enabledComponents; }\n get minScore(): number { return this._minScore; }\n get maxRetries(): number { return this._maxRetries; }\n\n /** Current workflow definition, or `null` before first `generate()`. */\n get definition(): A_FrameDynamicFeatureDefinition | null { return this._definition; }\n\n /**\n * Serialised workflow definition (no embedding arrays) — safe to\n * log or persist. Returns an empty shell before `generate()` is called.\n */\n get workflow(): string {\n if (!this._definition) {\n return JSON.stringify({ title: '', description: '', steps: [], components: [], fragments: [], entities: [] }, null, 2);\n }\n return JSON.stringify(this._stripEmbeddings(this._definition), null, 2);\n }\n\n /** Component-mapping result produced by `map()`, or `null` before that call. */\n get mapResult(): A_FrameDynamicFeatureMapResult | null { return this._mapResult; }\n\n /** Immutable patch history. */\n get history(): ReadonlyArray<A_FrameDynamicPatch> { return this._history; }\n\n /** Version counter — increments with each `patch()` call. */\n get version(): number { return this._version; }\n\n // ── Main pipeline ───────────────────────────────────────────────────────────────\n\n /**\n * Generate the workflow definition from the entity's prompt.\n *\n * Calls the server's `/api/v1/feature/generate` endpoint. The server\n * returns an ordered list of steps (with embeddings), a list of supporting\n * components/fragments/entities, and a human-readable title + description\n * of the workflow.\n *\n * After this call succeeds, invoke `map()` to match each element to a\n * registered class/method in the local A_FrameIndex.\n */\n async generate(): Promise<void> {\n const operation = new A_FrameDynamicFeatureOperation();\n\n const executionScope = new A_Scope({\n name: 'a-frame-dynamic-feature-generate',\n fragments: [operation],\n }).inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameDynamicFeatureFeatures.Generate, executionScope);\n executionScope.destroy();\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameDynamicFeatureError({\n title: A_FrameDynamicFeatureError.GenerationFailed,\n description: `Failed to generate feature workflow: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n /**\n * Apply a natural-language patch instruction to refine the current workflow.\n *\n * Calls the server's `/api/v1/feature/patch` endpoint. Increments the\n * version and records a history entry. A previous `map()` result is\n * invalidated — call `map()` again after patching.\n */\n async patch(instruction: string): Promise<void> {\n const operation = new A_FrameDynamicFeatureOperation({ instruction });\n\n const executionScope = new A_Scope({\n name: 'a-frame-dynamic-feature-patch',\n fragments: [operation],\n }).inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameDynamicFeatureFeatures.Patch, executionScope);\n executionScope.destroy();\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameDynamicFeatureError({\n title: A_FrameDynamicFeatureError.PatchFailed,\n description: `Failed to patch feature workflow: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n /**\n * Match every step and supporting element in the current workflow definition\n * against the local A_FrameIndex.\n *\n * Steps are matched to registered *methods* (via embedded method-level\n * definitions indexed with `@A_Frame.Define`). Supporting components,\n * fragments, and entities are matched to registered classes.\n *\n * Unmatched steps are retried via server-side refinement patches (up to\n * `maxRetries` times) before being marked with a `matchError`.\n *\n * Results are stored in `mapResult` after this call completes.\n */\n async map(): Promise<void> {\n const mapIndex = new A_FrameMethodMapIndex();\n\n const executionScope = new A_Scope({\n name: 'a-frame-dynamic-feature-map',\n fragments: [mapIndex],\n }).inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameDynamicFeatureFeatures.Map, executionScope);\n executionScope.destroy();\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameDynamicFeatureError({\n title: A_FrameDynamicFeatureError.MappingFailed,\n description: `Failed to map feature workflow: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n // ── Hydration ───────────────────────────────────────────────────────────────\n\n hydrateFromGeneration(\n definition: A_FrameDynamicFeatureDefinition,\n meta: { model: string; serverVersion: string },\n ): void {\n this._definition = definition;\n this._mapResult = null;\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._stripEmbeddings(definition))).toString('base64'),\n delta: definition.steps.length,\n }));\n }\n\n hydrateFromPatch(\n definition: A_FrameDynamicFeatureDefinition,\n patchSummary: string,\n meta: { model: string; serverVersion: string },\n ): void {\n const prevSteps = this._definition?.steps.length ?? 0;\n this._definition = definition;\n this._mapResult = null;\n this._version++;\n this._history.push(new A_FrameDynamicPatch({\n version: this._version,\n timestamp: Date.now(),\n reason: patchSummary,\n encoded: Buffer.from(JSON.stringify(this._stripEmbeddings(definition))).toString('base64'),\n delta: definition.steps.length - prevSteps,\n }));\n }\n\n hydrateFromMap(result: A_FrameDynamicFeatureMapResult): void {\n this._mapResult = result;\n }\n\n // ── Serialisation ──────────────────────────────────────────────────────────────\n\n toJSON(): A_FrameDynamicFeature_Serialized {\n return {\n ...super.toJSON(),\n name: this.prompt,\n description: `DynamicFeature with ${this._definition?.steps.length ?? 0} steps and ${this._history.length} patches`,\n metadata: {\n model: this._model,\n context: this._context,\n includeBases: this._includeBases,\n excludeBases: this._excludeBases,\n enabledComponents: this._enabledComponents,\n createdAt: this.createdAt,\n },\n history: this._history.map(p => p.toJSON()),\n };\n }\n\n // ── Private helpers ──────────────────────────────────────────────────────────────\n\n private _stripEmbeddings(def: A_FrameDynamicFeatureDefinition): A_FrameDynamicFeatureDefinition {\n const strip = (el: any): any => {\n const { embedding, ...rest } = el;\n return rest;\n };\n return {\n ...def,\n steps: def.steps.map(strip),\n components: def.components.map(strip),\n fragments: def.fragments.map(strip),\n entities: def.entities.map(strip),\n };\n }\n}\n","import { A_Caller, A_Component, A_Context, A_Feature, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { IA_Frame_Channel, A_Frame_EmbedResponse, A_Frame_GenerateResponse, A_Frame_CredentialResponse, A_FrameEmbedOptions } from \"./A-FrameChannel.types\";\nimport { A_FrameEnv } from \"../A-FrameEnv/A-FrameEnv.fragment.env-node\";\nimport { A_FrameFeatures } from \"./A-FrameChannel.constants\";\nimport { A_FrameChannelRequest } from \"./A-FrameChannelRequest.context\";\nimport { A_FrameChannelError } from \"./A-FrameChannel.error\";\nimport { A_FrameDefinition } from \"../A-FrameDefinition\";\nimport { A_FrameDefinitionFeatures } from \"../A-FrameDefinition/A-FrameDefinition.constants\";\nimport { A_FrameNamespaceFeatures } from \"../A-FrameNamespace/A-FrameNamespace.constants\";\nimport { A_FrameNamespace } from \"../A-FrameNamespace\";\nimport { A_FrameDynamicStructure } from \"../A-FrameDynamicStructure/A-FrameDynamicStructure.entity\";\nimport { A_FrameDynamicStructureOperation } from \"../A-FrameDynamicStructure/A-FrameDynamicStructureOperation.context\";\nimport { A_FrameDynamicStructureFeatures } from \"../A-FrameDynamicStructure/A-FrameDynamicStructure.constants\";\nimport { A_FrameStructureGenerateResponse, A_FrameStructurePatchResponse, A_FrameDynamicStructureDefinition, A_FrameDynamicStructureDefinitionEntity } from \"../A-FrameDynamicStructure/A-FrameDynamicStructure.types\";\nimport { A_FrameChannelSocket } from \"./A-FrameChannelSocket.entity\";\nimport { A_FrameDynamicContent } from \"../A-FrameDynamicContent/A-FrameDynamicContent.entity\";\nimport { A_FrameDynamicContentOperation } from \"../A-FrameDynamicContent/A-FrameDynamicContentOperation.context\";\nimport { A_FrameDynamicContentFeatures } from \"../A-FrameDynamicContent/A-FrameDynamicContent.constants\";\nimport { A_FrameContentGenerateResponse, A_FrameContentPatchResponse } from \"../A-FrameDynamicContent/A-FrameDynamicContent.types\";\nimport { A_Frame_CompletionResponse } from \"./A-FrameChannel.types\";\nimport { A_FrameSegment, A_FrameSegmentFeatures } from \"../A-FrameSegment\";\nimport { A_FrameCompletion, A_FrameCompletionFeatures } from \"../A-FrameCompletion\";\nimport { A_FrameSchema, A_FrameSchemaFeatures } from \"../A-FrameSchema\";\nimport { A_Frame_SchemaResponse } from \"./A-FrameChannel.types\";\nimport { A_FrameDynamicFeature } from \"../A-FrameDynamicFeature/A-FrameDynamicFeature.entity\";\nimport { A_FrameDynamicFeatureOperation } from \"../A-FrameDynamicFeature/A-FrameDynamicFeatureOperation.context\";\nimport { A_FrameDynamicFeatureFeatures } from \"../A-FrameDynamicFeature/A-FrameDynamicFeature.constants\";\nimport {\n A_FrameDynamicFeatureDefinition,\n A_FrameFeatureGenerateResponse,\n A_FrameFeaturePatchResponse,\n} from \"../A-FrameDynamicFeature/A-FrameDynamicFeature.types\";\n\n/**\n * A_FrameChannel — Node.js environment\n *\n * HTTP client for the embed-server API.\n * Configuration is resolved from process.env via A_FrameEnv injected at\n * feature execution time — no state is stored on the component itself.\n *\n * Uses the global fetch (available in Node 18+; no extra dependency needed).\n */\nexport class A_FrameChannel extends A_Component implements IA_Frame_Channel {\n\n async generate(prompt: string): Promise<A_FrameChannelRequest<A_Frame_GenerateResponse>> {\n const request = new A_FrameChannelRequest<A_Frame_GenerateResponse>('POST', '/api/v1/completions', { prompt, max_tokens: 512 });\n\n const executionScope = new A_Scope({\n name: 'A_FrameChannel.generate',\n fragments: [request],\n })\n .inherit(A_Context.scope(this));\n\n\n try {\n await this.call(A_FrameFeatures.Request, executionScope);\n executionScope.destroy();\n\n return request;\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Failed to generate completion: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n async embed(input: string | string[], options?: A_FrameEmbedOptions): Promise<A_FrameChannelRequest<A_Frame_EmbedResponse>> {\n const request = new A_FrameChannelRequest<A_Frame_EmbedResponse>('POST', '/api/v1/embeddings', {\n input,\n ...(options?.model && { model: options.model }),\n ...(options?.task && { task: options.task }),\n });\n\n const executionScope = new A_Scope({\n name: 'A_FrameChannel.embed',\n fragments: [request],\n })\n .inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameFeatures.Request, executionScope);\n executionScope.destroy();\n\n return request;\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Failed to embed input: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n async getCredentials(): Promise<A_FrameChannelRequest<A_Frame_CredentialResponse>> {\n const request = new A_FrameChannelRequest<A_Frame_CredentialResponse>('GET', '/api/v1/credentials/me');\n\n const executionScope = new A_Scope({\n name: 'A_FrameChannel.getCredentials',\n fragments: [request],\n })\n .inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameFeatures.Request, executionScope);\n executionScope.destroy();\n\n return request;\n } catch (err) {\n executionScope.destroy();\n throw new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Failed to get credentials: ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n async ping(): Promise<A_FrameChannelRequest<boolean>> {\n const request = new A_FrameChannelRequest<boolean>('GET', '/health');\n\n const executionScope = new A_Scope({\n name: 'A_FrameChannel.ping',\n fragments: [request],\n })\n .inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameFeatures.Request, executionScope);\n executionScope.destroy();\n\n return request;\n\n } catch {\n executionScope.destroy();\n\n return request;\n }\n }\n\n\n\n // ─── Feature implementation ───────────────────────────────────────────────\n @A_Feature.Extend({\n name: A_FrameDefinitionFeatures.Embed,\n scope: [A_FrameDefinition],\n })\n async embedDefinition(\n @A_Inject(A_Caller) definition: A_FrameDefinition,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n ) {\n const request = new A_FrameChannelRequest<A_Frame_EmbedResponse>('POST', '/api/v1/definition/embed', {\n definition: definition.toJSON(),\n model: definition.requestedModel,\n });\n\n const executionScope = new A_Scope({\n name: 'A_FrameChannel.embedDefinition',\n fragments: [request]\n })\n .inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameFeatures.Request, executionScope) as A_Frame_EmbedResponse;\n executionScope.destroy();\n\n const response = request.response!;\n if (!response.data || !response.data[0] || !response.data[0].embedding) {\n throw new A_FrameChannelError({\n title: A_FrameChannelError.InvalidRequest,\n description: `Invalid embedding response for definition \"${definition.name}\"`,\n });\n }\n\n const vector = new Float32Array(response.data[0].embedding);\n\n definition.hydrateFromEmbedding(vector, {\n model: response.model,\n dimensions: response.meta.dimensions,\n inputCount: response.meta.input_count,\n aFrameServerVersion: response.meta.server_version!,\n aFrameVersion: env.A_FRAME_VERSION!,\n credentialId: response.meta.credential_id!,\n date: response.date,\n aFrameMeta: response.aFrameMeta,\n });\n } catch (err) {\n throw new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Failed to embed definition \"${definition.name}\": ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n\n }\n\n\n\n @A_Feature.Extend({\n name: A_FrameNamespaceFeatures.Embed,\n scope: [A_FrameNamespace],\n })\n async embedNamespace(\n @A_Inject(A_Caller) namespace: A_FrameNamespace,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n ) {\n\n const request = new A_FrameChannelRequest<A_Frame_EmbedResponse>('POST', '/api/v1/namespace/embed', {\n namespace: namespace.toJSON(),\n model: namespace.requestedModel,\n });\n\n const executionScope = new A_Scope({\n name: 'A_FrameChannel.embedNamespace',\n fragments: [request]\n })\n .inherit(A_Context.scope(this));\n\n\n try {\n await this.call(A_FrameFeatures.Request, executionScope) as A_Frame_EmbedResponse;\n executionScope.destroy();\n\n const response = request.response!;\n if (!response.data || !response.data[0] || !response.data[0].embedding) {\n throw new A_FrameChannelError({\n title: A_FrameChannelError.InvalidRequest,\n description: `Invalid embedding response for namespace \"${namespace.name}\"`,\n });\n }\n\n const vector = new Float32Array(response.data[0].embedding);\n\n namespace.hydrateFromEmbedding(vector, {\n model: response.model,\n dimensions: response.meta.dimensions,\n inputCount: response.meta.input_count,\n aFrameServerVersion: response.meta.server_version!,\n aFrameVersion: env.A_FRAME_VERSION!,\n credentialId: response.meta.credential_id!,\n date: response.date,\n });\n } catch (err) {\n throw new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Failed to embed namespace \"${namespace.name}\": ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n\n }\n\n\n @A_Feature.Extend({\n name: A_FrameSegmentFeatures.Embed,\n scope: [A_FrameSegment],\n })\n async embedSegment(\n @A_Inject(A_Caller) segment: A_FrameSegment,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n ) {\n\n const request = new A_FrameChannelRequest<A_Frame_EmbedResponse>('POST', '/api/v1/segment/embed', {\n segment: segment.toJSON(),\n task: segment.options?.task,\n model: segment.options?.model,\n });\n\n const executionScope = new A_Scope({\n name: 'A_FrameChannel.embedNamespace',\n fragments: [request]\n })\n .inherit(A_Context.scope(this));\n\n\n try {\n await this.call(A_FrameFeatures.Request, executionScope) as A_Frame_EmbedResponse;\n executionScope.destroy();\n\n const response = request.response!;\n if (!response.data || !response.data[0] || !response.data[0].embedding) {\n throw new A_FrameChannelError({\n title: A_FrameChannelError.InvalidRequest,\n description: `Error during embed a segment: ${segment.content}`\n });\n }\n\n const vector = new Float32Array(response.data[0].embedding);\n\n segment.fromJSON({\n aseid: segment.aseid.toString(),\n content: segment.content,\n hash: segment.hash,\n embedding: vector,\n model: response.model,\n // dimensions: response.meta.dimensions,\n // inputCount: response.meta.input_count,\n aFrameServerVersion: response.meta.server_version!,\n aFrameVersion: env.A_FRAME_VERSION!,\n credentialId: response.meta.credential_id!,\n embeddedAt: response.date,\n });\n } catch (err) {\n throw new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Failed to embed segment with content \"${segment.content}\": ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n\n }\n\n\n\n /**\n * Feature implementation for A_FrameDynamicStructure.generate().\n *\n * Calls POST /api/v1/structure/generate — the server returns element\n * descriptions with embeddings. The raw definition (embeddings included) is\n * stored on the entity so the separate `map()` phase can use them later.\n */\n @A_Feature.Extend({\n name: A_FrameDynamicStructureFeatures.Generate,\n scope: [A_FrameDynamicStructure],\n })\n async generateDynamicStructure(\n @A_Inject(A_Caller) structure: A_FrameDynamicStructure,\n @A_Inject(A_FrameDynamicStructureOperation) operation: A_FrameDynamicStructureOperation,\n ) {\n const request = new A_FrameChannelRequest<A_FrameStructureGenerateResponse>(\n 'POST',\n '/api/v1/structure/generate',\n {\n prompt: structure.prompt,\n model: structure.modelName,\n context: structure.contextHint,\n metaHint: structure.metaHintValue,\n includeBases: structure.includedBases,\n excludeBases: structure.excludedBases,\n enabledComponents: structure.enabledComponentsList,\n },\n );\n\n const requestScope = new A_Scope({\n name: 'A_FrameChannel.generateDynamicStructure',\n fragments: [request],\n }).inherit(A_Context.scope(this));\n\n await this.call(A_FrameFeatures.Request, requestScope);\n requestScope.destroy();\n\n const resp = request.response!;\n\n structure.hydrateFromGeneration(resp.definition, {\n model: resp.model,\n serverVersion: resp.meta?.server_version ?? '0.0.0',\n });\n }\n\n /**\n * Feature implementation for A_FrameDynamicStructure.patch().\n *\n * Calls POST /api/v1/structure/patch — the server returns an updated\n * definition with fresh embeddings. The raw definition is stored on the\n * entity; run `map()` afterwards to update the component-mapping result.\n */\n @A_Feature.Extend({\n name: A_FrameDynamicStructureFeatures.Patch,\n scope: [A_FrameDynamicStructure],\n })\n async patchDynamicStructure(\n @A_Inject(A_Caller) structure: A_FrameDynamicStructure,\n @A_Inject(A_FrameDynamicStructureOperation) operation: A_FrameDynamicStructureOperation,\n ) {\n const { instruction } = operation.params as { instruction: string };\n\n const request = new A_FrameChannelRequest<A_FrameStructurePatchResponse>(\n 'POST',\n '/api/v1/structure/patch',\n {\n originalPrompt: structure.prompt,\n definition: this._stripStructureEmbeddings(structure.definition ?? { containers: [], components: [], fragments: [], entities: [] }),\n patchInstruction: instruction,\n model: structure.modelName,\n context: structure.contextHint,\n metaHint: structure.metaHintValue,\n includeBases: structure.includedBases,\n excludeBases: structure.excludedBases,\n enabledComponents: structure.enabledComponentsList,\n },\n );\n\n const requestScope = new A_Scope({\n name: 'A_FrameChannel.patchDynamicStructure',\n fragments: [request],\n }).inherit(A_Context.scope(this));\n\n await this.call(A_FrameFeatures.Request, requestScope);\n requestScope.destroy();\n\n const resp = request.response!;\n\n structure.hydrateFromPatch(resp.definition, resp.patchSummary, {\n model: resp.model,\n serverVersion: resp.meta?.server_version ?? '0.0.0',\n });\n }\n\n // ─── Structure helpers ─────────────────────────────────────────────────────\n\n /**\n * Strip embedding arrays and any client-side match fields from a definition\n * before sending it to the server (the server does not need embeddings back).\n */\n private _stripStructureEmbeddings(def: A_FrameDynamicStructureDefinition): A_FrameDynamicStructureDefinition {\n const strip = (el: A_FrameDynamicStructureDefinitionEntity): A_FrameDynamicStructureDefinitionEntity => {\n const { embedding, ...rest } = el as any;\n return rest as A_FrameDynamicStructureDefinitionEntity;\n };\n\n return {\n containers: def.containers.map(c => ({\n ...strip(c),\n components: (c.components ?? []).map(strip),\n fragments: (c.fragments ?? []).map(strip),\n entities: (c.entities ?? []).map(strip),\n })),\n components: def.components.map(strip),\n fragments: def.fragments.map(strip),\n entities: def.entities.map(strip),\n };\n }\n\n // ─── DynamicFeature channel extensions ────────────────────────────────────\n\n /**\n * Feature implementation for A_FrameDynamicFeature.generate().\n *\n * Calls POST /api/v1/feature/generate — the server decomposes the prompt\n * into an ordered workflow: title, description, steps (with embeddings),\n * and supporting components/fragments/entities.\n */\n @A_Feature.Extend({\n name: A_FrameDynamicFeatureFeatures.Generate,\n scope: [A_FrameDynamicFeature],\n })\n async generateDynamicFeature(\n @A_Inject(A_Caller) feature: A_FrameDynamicFeature,\n @A_Inject(A_FrameDynamicFeatureOperation) operation: A_FrameDynamicFeatureOperation,\n ) {\n const request = new A_FrameChannelRequest<A_FrameFeatureGenerateResponse>(\n 'POST',\n '/api/v1/feature/generate',\n {\n prompt: feature.prompt,\n model: feature.modelName,\n context: feature.contextHint,\n },\n );\n\n const requestScope = new A_Scope({\n name: 'A_FrameChannel.generateDynamicFeature',\n fragments: [request],\n }).inherit(A_Context.scope(this));\n\n await this.call(A_FrameFeatures.Request, requestScope);\n requestScope.destroy();\n\n const resp = request.response!;\n feature.hydrateFromGeneration(resp.definition, {\n model: resp.model,\n serverVersion: resp.meta?.server_version ?? '0.0.0',\n });\n }\n\n /**\n * Feature implementation for A_FrameDynamicFeature.patch().\n *\n * Calls POST /api/v1/feature/patch — the server returns an updated workflow\n * definition with fresh embeddings on all steps and elements.\n */\n @A_Feature.Extend({\n name: A_FrameDynamicFeatureFeatures.Patch,\n scope: [A_FrameDynamicFeature],\n })\n async patchDynamicFeature(\n @A_Inject(A_Caller) feature: A_FrameDynamicFeature,\n @A_Inject(A_FrameDynamicFeatureOperation) operation: A_FrameDynamicFeatureOperation,\n ) {\n const { instruction } = operation.params as { instruction: string };\n\n const request = new A_FrameChannelRequest<A_FrameFeaturePatchResponse>(\n 'POST',\n '/api/v1/feature/patch',\n {\n originalPrompt: feature.prompt,\n definition: this._stripFeatureEmbeddings(\n feature.definition ?? {\n title: '', description: '', steps: [], components: [], fragments: [], entities: []\n }\n ),\n patchInstruction: instruction,\n model: feature.modelName,\n context: feature.contextHint,\n },\n );\n\n const requestScope = new A_Scope({\n name: 'A_FrameChannel.patchDynamicFeature',\n fragments: [request],\n }).inherit(A_Context.scope(this));\n\n await this.call(A_FrameFeatures.Request, requestScope);\n requestScope.destroy();\n\n const resp = request.response!;\n feature.hydrateFromPatch(resp.definition, resp.patchSummary, {\n model: resp.model,\n serverVersion: resp.meta?.server_version ?? '0.0.0',\n });\n }\n\n private _stripFeatureEmbeddings(def: A_FrameDynamicFeatureDefinition): A_FrameDynamicFeatureDefinition {\n const strip = (el: any): any => { const { embedding, ...rest } = el; return rest; };\n return {\n ...def,\n steps: def.steps.map(strip),\n components: def.components.map(strip),\n fragments: def.fragments.map(strip),\n entities: def.entities.map(strip),\n };\n }\n\n\n // /**\n // * Open a bidirectional WebSocket connection to the server.\n // *\n // * The method resolves once the connection is closed (server close frame or\n // * transport end). While it is pending, call `socket.send(event)` to push\n // * frames to the server. Incoming frames are dispatched automatically to\n // * any `@A_FrameChannelSocket.onEvent()` handlers registered on `socket`.\n // *\n // * @param socket - Pre-configured socket entity (optionally a subclass with\n // * event handlers pre-registered via `@onEvent` decorators).\n // */\n // async connect(socket: A_FrameChannelSocket): Promise<void> {\n // const executionScope = new A_Scope({\n // name: 'A_FrameChannel.connect',\n // entities: [socket],\n // }).inherit(A_Context.scope(this));\n\n // try {\n // await this.call(A_FrameFeatures.Socket, executionScope);\n // executionScope.destroy();\n // } catch (err) {\n // executionScope.destroy();\n // throw new A_FrameChannelError({\n // title: A_FrameChannelError.RequestFailed,\n // description: `WebSocket connection to ${socket.path} failed: ${err instanceof Error ? err.message : String(err)}`,\n // });\n // }\n // }\n\n\n // ─── Dynamic Content ──────────────────────────────────────────────────────\n\n /**\n * Feature implementation for A_FrameDynamicContent.generate().\n *\n * Calls POST /api/v1/content/generate on the server and hydrates the\n * content entity from the returned piece list.\n */\n @A_Feature.Extend({\n name: A_FrameDynamicContentFeatures.Generate,\n scope: [A_FrameDynamicContent],\n })\n async generateDynamicContent(\n @A_Inject(A_Caller) content: A_FrameDynamicContent,\n @A_Inject(A_FrameDynamicContentOperation) operation: A_FrameDynamicContentOperation,\n ) {\n const request = new A_FrameChannelRequest<A_FrameContentGenerateResponse>(\n 'POST',\n '/api/v1/content/generate',\n {\n prompt: content.prompt,\n model: content.modelName,\n ...(content.systemPrompt !== undefined ? { system: content.systemPrompt } : {}),\n },\n );\n\n const requestScope = new A_Scope({\n name: 'A_FrameChannel.generateDynamicContent',\n fragments: [request],\n }).inherit(A_Context.scope(this));\n\n await this.call(A_FrameFeatures.Request, requestScope);\n requestScope.destroy();\n\n const resp = request.response!;\n\n // Convert wire segments to proper A_FrameSegment domain objects.\n // The channel is the adapter layer — it never passes raw serialized\n // objects into the domain; it always constructs instances.\n const segments = (resp.segments ?? []).map(w => {\n const seg = new A_FrameSegment({ content: w.content, options: { task: 'document' } });\n if (w.embedding?.length) {\n seg.hydrateFromEmbedding(new Float32Array(w.embedding));\n }\n return seg;\n });\n\n content.hydrateFromGeneration(segments, {\n model: resp.model,\n serverVersion: resp.meta?.server_version ?? '0.0.0',\n });\n }\n\n /**\n * Feature implementation for A_FrameDynamicContent.patch().\n *\n * Sends the current piece list and a patch instruction to the server,\n * then applies the returned operations to the content entity.\n */\n @A_Feature.Extend({\n name: A_FrameDynamicContentFeatures.Patch,\n scope: [A_FrameDynamicContent],\n })\n async patchDynamicContent(\n @A_Inject(A_Caller) content: A_FrameDynamicContent,\n @A_Inject(A_FrameDynamicContentOperation) operation: A_FrameDynamicContentOperation,\n ) {\n const { instruction, segments } = operation.params as { instruction: string; segments: A_FrameSegment[] };\n\n // Use short positional wire IDs (s0, s1, …) to maximise LLM reliability\n // when the model echoes them back as targetId values.\n // We keep a reverse map to translate back to the real ASEID ids.\n const wireIdToAseid = new Map<string, string>();\n const wireSegments = segments.map((s, idx) => {\n const wireId = `s${idx}`;\n wireIdToAseid.set(wireId, String(s.id));\n return {\n id: wireId,\n index: idx,\n text: s.content,\n vector: s.vector ? Array.from(s.vector.values) : undefined,\n };\n });\n\n const request = new A_FrameChannelRequest<A_FrameContentPatchResponse>(\n 'POST',\n '/api/v1/content/patch',\n {\n prompt: content.prompt,\n segments: wireSegments,\n instruction,\n model: content.modelName,\n ...(content.systemPrompt !== undefined ? { system: content.systemPrompt } : {}),\n },\n );\n\n const requestScope = new A_Scope({\n name: 'A_FrameChannel.patchDynamicContent',\n fragments: [request],\n }).inherit(A_Context.scope(this));\n\n await this.call(A_FrameFeatures.Request, requestScope);\n requestScope.destroy();\n\n const resp = request.response!;\n\n // Translate wire ids (s0, s1, …) in targetId back to real ASEID ids\n // so that applyOperation can look them up in the index.\n const translatedOperations = resp.operations.map(op => ({\n ...op,\n targetId: op.targetId\n ? (wireIdToAseid.get(op.targetId) ?? op.targetId)\n : op.targetId,\n }));\n\n content.hydrateFromPatch(\n { ...resp, operations: translatedOperations },\n {\n model: resp.model,\n serverVersion: resp.meta?.server_version ?? '0.0.0',\n },\n );\n }\n\n\n // ─── Completion ───────────────────────────────────────────────────────────\n\n /**\n * Feature implementation for A_FrameCompletion.generate().\n *\n * Calls POST /api/v1/completions/generate on the server, which performs a\n * text completion followed by an embedding of the result in a single\n * round-trip, then hydrates the entity with both values.\n */\n @A_Feature.Extend({\n name: A_FrameCompletionFeatures.Generate,\n scope: [A_FrameCompletion],\n })\n async generateCompletion(\n @A_Inject(A_Caller) completion: A_FrameCompletion,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n ) {\n const request = new A_FrameChannelRequest<A_Frame_CompletionResponse>(\n 'POST',\n '/api/v1/completions/generate',\n {\n prompt: completion.prompt,\n options: completion.options,\n },\n );\n\n const executionScope = new A_Scope({\n name: 'A_FrameChannel.generateCompletion',\n fragments: [request],\n }).inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameFeatures.Request, executionScope);\n executionScope.destroy();\n\n const response = request.response!;\n\n if (!response.text) {\n throw new A_FrameChannelError({\n title: A_FrameChannelError.InvalidRequest,\n description: `Invalid completion response for prompt \"${completion.prompt}\"`,\n });\n }\n\n completion.hydrateFromGeneration({\n text: response.text,\n embedding: new Float32Array(response.embedding),\n model: response.model,\n date: response.date,\n aFrameVersion: env.A_FRAME_VERSION!,\n aFrameServerVersion: response.meta.server_version,\n });\n } catch (err) {\n throw new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Failed to generate completion for prompt \"${completion.prompt}\": ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n /**\n * Calls POST /api/v1/schema/extract on the server.\n *\n * Sends the prompt and schema descriptor to the Nova model, which returns\n * a structured JSON object matching the schema. Hydrates the entity with\n * the extracted data and provenance metadata.\n */\n @A_Feature.Extend({\n name: A_FrameSchemaFeatures.Extract,\n scope: [A_FrameSchema],\n })\n async extractSchema<T extends Record<string, unknown>>(\n @A_Inject(A_Caller) scheme: A_FrameSchema<T>,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n ) {\n const request = new A_FrameChannelRequest<A_Frame_SchemaResponse<T>>(\n 'POST',\n '/api/v1/schema/extract',\n {\n prompt: scheme.prompt,\n schema: scheme.schema,\n options: scheme.options,\n },\n );\n\n const executionScope = new A_Scope({\n name: 'A_FrameChannel.extractSchema',\n fragments: [request],\n }).inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameFeatures.Request, executionScope);\n executionScope.destroy();\n\n const response = request.response!;\n\n if (!response.data) {\n throw new A_FrameChannelError({\n title: A_FrameChannelError.InvalidRequest,\n description: `Invalid scheme extraction response for prompt \"${scheme.prompt}\"`,\n });\n }\n\n scheme.hydrateFromExtraction(response.data, {\n model: response.model,\n date: response.date,\n aFrameVersion: env.A_FRAME_VERSION!,\n aFrameServerVersion: response.meta.server_version,\n });\n } catch (err) {\n throw new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Failed to extract scheme for prompt \"${scheme.prompt}\": ${err instanceof Error ? err.message : String(err)}`,\n });\n }\n }\n\n}\n\n\n\n\n","import * as fs from 'fs';\nimport * as path from 'path';\nimport { A_Concept, A_Container, A_Context, A_Error, A_Inject } from \"@adaas/a-concept\";\nimport { A_FrameIndex } from '../A-FrameIndex/A-FrameIndex.context';\nimport { A_FrameLogger } from '../A-FrameLogger';\nimport { A_FrameBundleBuilder, A_FRAME_BUNDLE_DEFAULT_FILENAME } from '../A-FrameBundle';\nimport { A_FrameChannel } from '../A-FrameChannel/A-FrameChannel.component';\nimport { A_FrameEnv } from '../A-FrameEnv/A-FrameEnv.fragment.env-node';\n\n\n/**\n * Decorator call patterns that signal a file registers A-Frame definitions.\n * Matched against raw file content before importing to avoid loading every file.\n */\nconst DECORATOR_PATTERNS = [\n /A_Frame\\.Define\\s*\\(/,\n /A_Frame\\.NameSpace\\s*\\(/,\n /A_Frame\\.Component\\s*\\(/,\n /A_Frame\\.Entity\\s*\\(/,\n /A_Frame\\.Fragment\\s*\\(/,\n /A_Frame\\.Container\\s*\\(/,\n];\n\nexport class A_FrameCLIContainer extends A_Container {\n\n /**\n * Logger instance — bound during `initialize()` via DI so the rest of\n * the container can use it through `this.logger`.\n */\n get logger(): A_FrameLogger {\n return A_Context.scope(this).resolve(A_FrameLogger) as A_FrameLogger;\n };\n\n @A_Concept.Load()\n async initialize(\n @A_Inject(A_FrameLogger) logger: A_FrameLogger,\n ) {\n if (A_Context.environment !== 'server') {\n throw new A_Error('A-Frame CLI can only be used in Node.js environment.');\n }\n }\n\n @A_Concept.Start()\n async readCommandParams(\n @A_Inject(A_FrameChannel) channel: A_FrameChannel,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n ) {\n const args = process.argv.slice(2);\n\n switch (true) {\n case args.includes('--embed'): {\n const pathArg = args[args.indexOf('--embed') + 1];\n if (!pathArg) {\n this.logger.error('--embed requires a path, directory, or glob pattern as next argument');\n process.exit(1);\n }\n await this.embed(pathArg);\n break;\n }\n case args.includes('--bundle'): {\n const outArg = args[args.indexOf('--bundle') + 1];\n await this.bundle(outArg, channel, env);\n break;\n }\n case args.includes('--search'):\n this.logger.info('Search command detected');\n break;\n default:\n this.logger.warn('No valid command detected. Available commands: --embed <path|dir|glob>, --bundle [out], --search');\n }\n }\n\n // ─── Bundle ─────────────────────────────────────────────────────────────\n\n /**\n * Package the encrypted `.aframe` files in `A_FRAME_STORAGE_DIR` into a\n * single artifact consumable by the browser bundle. Output format is\n * inferred from the file extension (`.ts`/`.tsx` → typed module, anything\n * else → JSON).\n */\n private async bundle(\n outArg: string | undefined,\n channel: A_FrameChannel,\n env: A_FrameEnv,\n ): Promise<void> {\n this.logger.resetTimer();\n this.logger.section('Building A-Frame browser bundle');\n\n const storageDir = env.A_FRAME_STORAGE_DIR\n ? path.resolve(env.A_FRAME_STORAGE_DIR)\n : path.resolve(process.cwd(), 'storage');\n const outFile = path.resolve(\n process.cwd(),\n outArg || A_FRAME_BUNDLE_DEFAULT_FILENAME,\n );\n\n this.logger.info(`Storage: ${storageDir}`);\n this.logger.info(`Output: ${outFile}`);\n\n // Need server version AND encryption key to decrypt .aframe files into plain bundle.\n let serverVersion = 'unknown';\n let encryptionKey = '';\n try {\n const credentials = await channel.getCredentials();\n if (credentials.error) {\n this.logger.warn(`Could not fetch credentials: ${credentials.error.message}. Bundle will be tagged with serverVersion=\"unknown\".`);\n } else {\n serverVersion = credentials.response?.server_version || 'unknown';\n encryptionKey = credentials.response?.encryption_key || '';\n }\n } catch (err) {\n this.logger.warn(`getCredentials failed: ${err instanceof Error ? err.message : String(err)}. Bundle will be tagged with serverVersion=\"unknown\".`);\n }\n\n if (!encryptionKey) {\n this.logger.error('No encryption key available from server credentials. Cannot build bundle.');\n process.exit(1);\n }\n\n const builder = new A_FrameBundleBuilder();\n try {\n const bundle = await builder.build({ storageDir, serverVersion, encryptionKey });\n await builder.writeAuto(bundle, outFile);\n\n const nsCount = bundle.namespaceRecords.length;\n const defFiles = Object.keys(bundle.records).length;\n const defCount = Object.values(bundle.records).reduce((s, a) => s + a.length, 0);\n this.logger.set('namespaces', nsCount);\n this.logger.set('definitionFiles', defFiles);\n this.logger.success(`Bundle written to ${outFile}`);\n this.logger.info(` serverVersion: ${bundle.serverVersion}`);\n this.logger.info(` aFrameVersion: ${bundle.aFrameVersion}`);\n this.logger.info(` namespaces: ${nsCount}`);\n this.logger.info(` definition files: ${defFiles} (${defCount} records)`);\n this.logger.summary('Bundle Stats');\n } catch (err) {\n this.logger.error(`Bundle build failed: ${err instanceof Error ? err.message : String(err)}`);\n this.logger.summary('Bundle Stats');\n process.exit(1);\n }\n }\n\n // ─── Embed ───────────────────────────────────────────────────────────────\n\n private async embed(pattern: string): Promise<void> {\n this.logger.resetTimer();\n this.logger.section(`Embedding: ${pattern}`);\n\n // 1. Discover source files\n const files = this.resolveFiles(pattern);\n this.logger.info(`Discovered ${files.length} candidate file(s)`);\n this.logger.set('files.scanned', files.length);\n\n if (files.length === 0) {\n this.logger.warn(`No files found for: ${pattern}`);\n this.logger.summary();\n return;\n }\n\n // 2. Filter files that contain A-Frame decorators\n const decoratedFiles = files.filter(f => this.containsDecorators(f));\n this.logger.info(`Found ${decoratedFiles.length} file(s) with A-Frame decorators`);\n this.logger.set('files.matched', decoratedFiles.length);\n\n if (decoratedFiles.length === 0) {\n this.logger.warn('Nothing to embed.');\n this.logger.summary();\n return;\n }\n\n // 3. Import them — decorators auto-register into A_FrameIndex\n const importBar = this.logger.progress('Importing files', decoratedFiles.length);\n for (const file of decoratedFiles) {\n try {\n await import(file);\n importBar.tick(path.basename(file));\n this.logger.increment('files.imported');\n } catch (err) {\n importBar.tick(`failed: ${path.basename(file)}`);\n this.logger.increment('files.failed');\n this.logger.error(`Failed to import ${file}: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n importBar.succeed('done');\n\n // 4. Collect items needing embed\n const index = A_FrameIndex.instance;\n const namespacesNeedEmbed = index.listNamespaces().filter(ns => !ns.isEmbed);\n const definitionsNeedEmbed = index.listDefinitions({}).filter(def => !def.isEmbed);\n\n this.logger.set('namespaces.total', index.listNamespaces().length);\n this.logger.set('definitions.total', index.listDefinitions({}).length);\n this.logger.set('namespaces.toEmbed', namespacesNeedEmbed.length);\n this.logger.set('definitions.toEmbed', definitionsNeedEmbed.length);\n\n // 5. Embed namespaces (parallel API calls, sequential file writes)\n if (namespacesNeedEmbed.length > 0) {\n const nsBar = this.logger.progress('Embedding namespaces', namespacesNeedEmbed.length);\n for (const batch of this.chunkArray(namespacesNeedEmbed, 10)) {\n await Promise.all(batch.map(async ns => {\n try {\n await ns.embed();\n this.logger.increment('namespaces.embedded');\n } catch (err) {\n this.logger.increment('namespaces.failed');\n this.logger.error(`Embed failed for namespace \"${ns.name}\": ${err instanceof Error ? err.message : String(err)}`);\n }\n nsBar.tick(ns.name);\n }));\n for (const ns of batch) {\n try { await ns.save(); this.logger.increment('namespaces.saved'); }\n catch (err) {\n this.logger.increment('namespaces.saveFailed');\n this.logger.error(`Save failed for namespace \"${ns.name}\": ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n }\n nsBar.succeed('done');\n }\n\n // 6. Embed definitions (parallel API calls, sequential file writes)\n if (definitionsNeedEmbed.length > 0) {\n const defBar = this.logger.progress('Embedding definitions', definitionsNeedEmbed.length);\n for (const batch of this.chunkArray(definitionsNeedEmbed, 10)) {\n await Promise.all(batch.map(async def => {\n try {\n await def.embed();\n this.logger.increment('definitions.embedded');\n } catch (err) {\n this.logger.increment('definitions.failed');\n this.logger.error(`Embed failed for \"${def.name}\": ${err instanceof Error ? err.message : String(err)}`);\n }\n defBar.tick(def.name);\n }));\n for (const def of batch) {\n try { await def.save(); this.logger.increment('definitions.saved'); }\n catch (err) {\n this.logger.increment('definitions.saveFailed');\n this.logger.error(`Save failed for \"${def.name}\": ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n }\n defBar.succeed('done');\n }\n\n this.logger.summary('Embed Stats');\n }\n\n // ─── File discovery (no external deps) ───────────────────────────────────\n\n /**\n * Resolve a path argument to an array of absolute `.ts`/`.js` file paths.\n * Handles:\n * - Single file → [file]\n * - Directory → all source files found recursively\n * - Glob pattern → files matching the pattern\n */\n private resolveFiles(pattern: string): string[] {\n const absolute = path.isAbsolute(pattern)\n ? pattern\n : path.resolve(process.cwd(), pattern);\n\n // No glob characters — plain file or directory path\n if (!/[*?{]/.test(pattern)) {\n const stat = (fs as any).statSync(absolute, { throwIfNoEntry: false }) as fs.Stats | undefined;\n if (!stat) return [];\n if (stat.isFile()) return this.isSourceFile(absolute) ? [absolute] : [];\n if (stat.isDirectory()) return this.walkDir(absolute);\n return [];\n }\n\n // Glob pattern: find the static base dir (before first segment with glob chars)\n const sep = path.sep;\n const parts = absolute.split(sep);\n const firstGlobIdx = parts.findIndex(p => /[*?{]/.test(p));\n const baseDir = parts.slice(0, firstGlobIdx).join(sep) || sep;\n const relPattern = parts.slice(firstGlobIdx).join('/');\n\n return this.walkDir(baseDir).filter(file => {\n const rel = path.relative(baseDir, file).replace(/\\\\/g, '/');\n return this.matchGlob(rel, relPattern);\n });\n }\n\n /** Recursively collect all source files under a directory. */\n private walkDir(dir: string): string[] {\n const results: string[] = [];\n let entries: fs.Dirent[];\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return results;\n }\n for (const entry of entries) {\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n results.push(...this.walkDir(full));\n } else if (entry.isFile() && this.isSourceFile(full)) {\n results.push(full);\n }\n }\n return results;\n }\n\n private isSourceFile(file: string): boolean {\n return /\\.(ts|js|mts|mjs|cts|cjs)$/.test(file);\n }\n\n /**\n * Minimal glob matcher (no external deps).\n * Supports `*` (any chars except `/`), `**` (any path segments), `?` (one char).\n */\n private matchGlob(str: string, pattern: string): boolean {\n const segments = pattern.split('/');\n const regexStr = segments\n .map(seg => {\n if (seg === '**') return '(?:[^/]+/)*[^/]*';\n return seg\n .replace(/\\./g, '\\\\.')\n .replace(/\\*/g, '[^/]*')\n .replace(/\\?/g, '[^/]');\n })\n .join('/');\n return new RegExp(`^${regexStr}$`).test(str);\n }\n\n /** Returns true if the file source contains any A-Frame decorator calls. */\n private containsDecorators(filePath: string): boolean {\n try {\n const content = fs.readFileSync(filePath, 'utf8');\n return DECORATOR_PATTERNS.some(re => re.test(content));\n } catch {\n return false;\n }\n }\n\n private chunkArray<T>(array: T[], size: number): T[][] {\n const result: T[][] = [];\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size));\n }\n return result;\n }\n}\n","import { A_CommonHelper, A_TypeGuards } from \"@adaas/a-concept\";\nimport { A_FrameDecoratorTarget, A_FrameMetaTarget } from \"./A-Frame.types\";\nimport { A_FrameIndexTarget } from \"../A-FrameIndex/A-FrameIndex.types\";\n\n\n\nexport class A_FrameTypeGuard {\n /**\n * Determines if the target is an allowed type for indexing\n * \n * @param target \n * @returns \n */\n static isAllowedTarget(target: any): target is A_FrameDecoratorTarget {\n return A_TypeGuards.isEntityConstructor(target)\n || A_TypeGuards.isComponentConstructor(target)\n || A_TypeGuards.isContainerConstructor(target)\n || A_TypeGuards.isFragmentConstructor(target)\n || A_TypeGuards.isComponentInstance(target)\n || A_TypeGuards.isContainerInstance(target)\n || A_TypeGuards.isEntityInstance(target)\n || A_TypeGuards.isFragmentInstance(target);\n }\n\n\n\n static getTargetName(target: A_FrameDecoratorTarget): string {\n return A_CommonHelper.getComponentName(target);\n }\n\n\n static getTargetConstructor(target: A_FrameDecoratorTarget): A_FrameIndexTarget {\n return typeof target === 'function' ? target : target.constructor as A_FrameIndexTarget;\n }\n\n\n}","import { A_Error } from \"@adaas/a-concept\";\n\n\nexport class A_FrameError extends A_Error {\n\n static readonly InvalidTarget = 'A-Frame Index Invalid Target Error';\n\n static readonly InvalidConfiguration = 'A-Frame Index Invalid Configuration Error';\n\n static readonly IndexDefinitionError = 'A-Frame Index Definition Error';\n static readonly IndexMetadataError = 'A-Frame Index Metadata Error';\n static readonly IndexRegistryError = 'A-Frame Index Registry Error';\n static readonly IndexComponentNotFoundError = 'A-Frame Index Component Not Found Error';\n}","import { A_CommonHelper, A_Context, A_Meta, A_TypeGuards } from \"@adaas/a-concept\";\nimport { A_FrameDecoratorTarget, A_FrameTargetType, A_FrameDecoratorDescriptor, A_FrameMetaTarget, A_FrameDefineOptions } from \"../A-Frame.types\";\nimport { A_FrameTypeGuard } from \"../A-Frame.guard\";\nimport { A_FrameError } from \"../A-Frame.error\";\nimport { A_FrameIndex } from \"@adaas/a-frame/index\";\nimport { A_FrameDefinition } from \"@adaas/a-frame/definition\";\nimport { A_FrameNamespace } from \"@adaas/a-frame/namespace\";\n\nexport function A_FrameDefineDecorator(\n config: A_FrameDefineOptions\n) {\n return function (\n target: A_FrameDecoratorTarget,\n propertyKey?: string | symbol,\n descriptor?: A_FrameDecoratorDescriptor\n ): any {\n let componentType: A_FrameTargetType;\n\n switch (true) {\n case !!propertyKey && !!descriptor:\n componentType = A_FrameTargetType.METHOD;\n break;\n case A_TypeGuards.isComponentConstructor(target) || A_TypeGuards.isComponentInstance(target):\n componentType = A_FrameTargetType.COMPONENT;\n break;\n case A_TypeGuards.isContainerConstructor(target) || A_TypeGuards.isContainerInstance(target):\n componentType = A_FrameTargetType.CONTAINER;\n break;\n case A_TypeGuards.isEntityConstructor(target) || A_TypeGuards.isEntityInstance(target):\n componentType = A_FrameTargetType.ENTITY;\n break;\n case A_TypeGuards.isFragmentConstructor(target) || A_TypeGuards.isFragmentInstance(target):\n componentType = A_FrameTargetType.FRAGMENT;\n break;\n default:\n throw new A_FrameError(\n A_FrameError.InvalidTarget,\n `@A_Frame.Define decorator cannot be applied to the target : ${A_CommonHelper.getComponentName(target)}. It can only be applied to classes or methods inheriting from allowed base classes.`\n );\n }\n const namespace = config.namespace\n ? config.namespace instanceof A_FrameNamespace\n ? config.namespace\n : A_FrameIndex.getNamespace(config.namespace) || new A_FrameNamespace({\n name: config.namespace,\n })\n : A_FrameIndex.getDefaultNamespace();\n\n\n // Handle method decorator case\n if (!!propertyKey && !!descriptor) {\n // For methods, target is the class prototype\n const targetClass = target.constructor as A_FrameMetaTarget;\n const methodName = String(propertyKey);\n\n const source = (descriptor.value as Function).toString();\n\n // Add to methods array\n A_FrameIndex.addDefinition(new A_FrameDefinition({\n name: methodName,\n dependency: targetClass.name,\n description: config.description,\n source: source,\n metadata: config.metadata,\n type: A_FrameTargetType.METHOD,\n namespace: namespace,\n }));\n\n return descriptor;\n }\n\n // Handle class decorator case\n if (!A_FrameTypeGuard.isAllowedTarget(target)) {\n throw new A_FrameError(\n A_FrameError.InvalidTarget,\n `@A_Frame.${componentType} decorator cannot be applied to the target : ${A_CommonHelper.getComponentName(target)}. It can only be applied to allowed targets.`\n );\n }\n\n // for error messages\n const componentName = A_CommonHelper.getComponentName(target);\n\n const targetClass = A_FrameTypeGuard.getTargetConstructor(target);\n\n // Check for pending namespace and description from other decorators\n const source = target.toString();\n\n A_FrameIndex.addDefinition(new A_FrameDefinition({\n name: componentName,\n description: config.description,\n dependency: targetClass.name,\n source: source,\n metadata: config.metadata,\n type: componentType,\n namespace: namespace,\n }));\n\n return target;\n\n };\n}\n\n\n\n","import { A_CommonHelper, A_Context, A_Meta, A_TypeGuards } from \"@adaas/a-concept\";\nimport { A_FrameDecoratorTarget, A_FrameTargetType, A_FrameDecoratorDescriptor, A_FrameMetaTarget, A_FrameNamespaceOptions } from \"../A-Frame.types\";\nimport { A_FrameError } from \"../A-Frame.error\";\nimport { A_FrameIndex } from \"@adaas/a-frame/index\";\nimport { A_FrameNamespace } from \"@adaas/a-frame/namespace\";\n\nexport function A_FrameNamespaceDecorator(\n config: Partial<A_FrameNamespaceOptions> = {}\n) {\n return function (\n target: A_FrameDecoratorTarget,\n propertyKey?: string | symbol,\n descriptor?: A_FrameDecoratorDescriptor\n ): any {\n\n if (!config.name)\n throw new A_FrameError(\n A_FrameError.InvalidConfiguration,\n `@A_Frame.Namespace decorator requires a name in the configuration.`\n );\n\n const namespace = new A_FrameNamespace({\n name: config.name,\n description: config.description,\n });\n\n\n A_FrameIndex.addNamespace(namespace);\n };\n}\n\n\n\n","import { A_Component, A_Scope, A_TYPES__A_DependencyInjectable, A_TYPES__Component_Constructor, A_TYPES__Ctor, A_TYPES__Fragment_Constructor } from \"@adaas/a-concept\";\nimport { A_FrameDefineOptions, A_FrameNamespaceOptions } from \"./A-Frame.types\";\nimport { A_FrameDefineDecorator } from \"./decorators/A-FrameDefine.decorator\";\nimport { A_FrameNamespaceDecorator } from \"./decorators/A-FrameNamespace.decorator\";\n\n\n\nexport class A_FrameBase extends A_Component {\n /**\n * Primary Decorator to define and index components, containers, entities, fragments and methods in the A-Frame Index structure\n * \n * Those components will participate in AI indexing and retrieval strategy, so they can be used in the better way to build new features and components.\n * \n * @param options \n * @returns \n */\n static Define(options: A_FrameDefineOptions) {\n return A_FrameDefineDecorator(options) as ClassDecorator & MethodDecorator;\n\n }\n /**\n * Allows to define a namespace for grouping related components, containers, entities, fragments and methods together in the A-Frame Index structure. This is useful for better organization and retrieval strategy.\n * \n * @param options \n * @returns \n */\n static NameSpace(options: A_FrameNamespaceOptions) {\n return A_FrameNamespaceDecorator(options) as ClassDecorator & MethodDecorator;\n }\n\n\n\n /**\n * Default per-instance dependencies registered on first build. The blob\n * store is intentionally omitted here — the user is expected to seed and\n * register `A_FrameBrowserStorageBlobs` themselves (typically via\n * `A_FrameBrowserStorageBlobs.fromBundle(bundle)` before `concept.load()`).\n * If they don't, `A_FrameBrowserStorageProvider.onLoad()` falls back to the\n * empty singleton.\n */\n get package(): Array<{ ctor: A_TYPES__Component_Constructor<any> | A_TYPES__Fragment_Constructor<any>; instance: any }> {\n return [\n // { ctor: A_FrameContext, instance: new A_FrameContext() },\n // { ctor: A_FrameEnv, instance: new A_FrameEnv() },\n // { ctor: A_FrameStorageCodec, instance: new A_FrameStorageCodec() },\n // { ctor: A_FrameBrowserStorageProvider, instance: A_FrameBrowserStorageProvider },\n // { ctor: A_FrameLogger, instance: new A_FrameLogger() },\n ];\n }\n\n\n protected packDependency<T extends A_TYPES__A_DependencyInjectable>(\n scope: A_Scope,\n target: A_TYPES__Ctor<T> | T,\n def: A_TYPES__Ctor<T> | T,\n ) {\n const existing = scope.resolve(target as any);\n if (!existing) scope.register(def);\n }\n\n\n}","\n\nexport const A_FrameStorageFeatures = {\n SaveDefinitions: '_A_FRAME_STORAGE_SAVE',\n LoadDefinitions: '_A_FRAME_STORAGE_LOAD',\n DestroyDefinitions: '_A_FRAME_STORAGE_DESTROY',\n \n SaveNamespaces: '_A_FRAME_STORAGE_SAVE_NAMESPACES',\n LoadNamespaces: '_A_FRAME_STORAGE_LOAD_NAMESPACES',\n DestroyNamespaces: '_A_FRAME_STORAGE_DESTROY_NAMESPACES',\n} as const","import { A_Error, A_Fragment } from \"@adaas/a-concept\";\n\n\nexport class A_FrameStorageOperation<\n _ParamsType = any,\n _ResultType = any\n> extends A_Fragment {\n\n protected _result?: _ResultType;\n\n protected _error?: A_Error;\n\n protected _params!: _ParamsType;\n\n\n constructor(\n params: _ParamsType\n ) {\n super({ name: 'a-frame-storage-operation' });\n this._params = params;\n }\n\n\n /**\n * If the operation succeeded, this will contain the result data. If the operation failed, this will be undefined.\n */\n get result(): _ResultType | undefined {\n return this._result;\n }\n /**\n * If the operation failed, this will contain an error object with details about the failure. If the operation succeeded, this will be undefined.\n */\n get error(): A_Error | undefined {\n return this._error;\n }\n /**\n * Parameters used to execute the operation, e.g. definitionId and namespaceId for a saveDefinition operation.\n */\n get params(): _ParamsType {\n return this._params;\n }\n /**\n * Marks the operation as completed successfully with the given result. This will set the `result` property and leave `error` as undefined.\n * \n * @param result \n */\n complete(result: _ResultType): void {\n this._result = result;\n }\n /**\n * Marks the operation as failed with the given error. This will set the `error` property and leave `result` as undefined.\n * \n * @param error \n */\n fail(error: A_Error): void {\n this._error = error;\n }\n\n}\n","import { A_Error } from \"@adaas/a-concept\";\n\n\n\nexport class A_FrameStorageError extends A_Error {\n static readonly SaveDefinitionFailed = 'SaveDefinitionFailed';\n static readonly LoadDefinitionsFailed = 'LoadDefinitionsFailed';\n static readonly DestroyDefinitionsFailed = 'DestroyDefinitionsFailed';\n static readonly SaveNamespaceFailed = 'SaveNamespaceFailed';\n static readonly LoadNamespacesFailed = 'LoadNamespacesFailed';\n static readonly DestroyNamespacesFailed = 'DestroyNamespacesFailed';\n\n}","import { A_Component, A_Context, A_Scope } from '@adaas/a-concept';\nimport { A_FrameNamespace_Serialized } from '../A-FrameNamespace/A-FrameNamespace.types';\nimport { A_FrameStorageFeatures } from './A-FrameStorage.constants';\nimport { A_FrameStorageOperation } from './A-FrameStorageOperation.context';\nimport { A_FrameStorageError } from './A-FrameStorage.error';\nimport { A_FrameStorageDestroyDefinitionsOperation, A_FrameStorageDestroyDefinitionsOperationParams, A_FrameStorageDestroyDefinitionsOperationResult, A_FrameStorageDestroyNamespacesOperation, A_FrameStorageDestroyNamespacesOperationParams, A_FrameStorageDestroyNamespacesOperationResult, A_FrameStorageLoadDefinitionsOperation, A_FrameStorageLoadDefinitionsOperationParams, A_FrameStorageLoadDefinitionsOperationResult, A_FrameStorageLoadNamespacesOperation, A_FrameStorageLoadNamespacesOperationParams, A_FrameStorageLoadNamespacesOperationResult, A_FrameStorageSaveDefinitionOperation, A_FrameStorageSaveDefinitionOperationParams, A_FrameStorageSaveDefinitionOperationResult, A_FrameStorageSaveNamespaceOperation, A_FrameStorageSaveNamespaceOperationParams, A_FrameStorageSaveNamespaceOperationResult } from './A-FrameStorage.types';\nimport { A_FrameDefinition_Serialized } from '../A-FrameDefinition/A-FrameDefinition.types';\n\n\nexport class A_FrameStorage extends A_Component {\n\n async saveDefinitions(definitions: Array<A_FrameDefinition_Serialized>): Promise<A_FrameStorageSaveDefinitionOperation> {\n const context = new A_FrameStorageOperation<A_FrameStorageSaveDefinitionOperationParams, A_FrameStorageSaveDefinitionOperationResult>({\n records: definitions\n });\n\n const executionScope = new A_Scope({\n name: 'A_FrameStorage.saveDefinitions',\n fragments: [context]\n })\n .inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameStorageFeatures.SaveDefinitions, executionScope);\n executionScope.destroy();\n\n return context;\n } catch (error) {\n\n context.fail(new A_FrameStorageError({\n title: A_FrameStorageError.SaveDefinitionFailed,\n description: `Failed to save definition records.`,\n }));\n\n executionScope.destroy();\n\n return context;\n }\n }\n\n async loadDefinitions(namespaceId: string, definitionId: string): Promise<A_FrameStorageLoadDefinitionsOperation> {\n const context = new A_FrameStorageOperation<A_FrameStorageLoadDefinitionsOperationParams, A_FrameStorageLoadDefinitionsOperationResult>({\n namespaceId,\n });\n\n const executionScope = new A_Scope({\n name: 'A_FrameStorage.loadDefinitions',\n fragments: [context]\n })\n .inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameStorageFeatures.LoadDefinitions, executionScope);\n executionScope.destroy();\n\n return context;\n } catch (error) {\n\n context.fail(new A_FrameStorageError({\n title: A_FrameStorageError.LoadDefinitionsFailed,\n description: `Failed to load definition records.`,\n }));\n\n executionScope.destroy();\n\n return context;\n }\n }\n\n\n async destroyDefinitions(namespaceId: string, definitionId: string): Promise<A_FrameStorageDestroyDefinitionsOperation> {\n const context = new A_FrameStorageOperation<A_FrameStorageDestroyDefinitionsOperationParams, A_FrameStorageDestroyDefinitionsOperationResult>({\n namespaceId,\n definitionId\n });\n\n const executionScope = new A_Scope({\n name: 'A_FrameStorage.destroyDefinitions',\n fragments: [context]\n })\n .inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameStorageFeatures.DestroyDefinitions, executionScope);\n executionScope.destroy();\n\n return context;\n } catch (error) {\n\n context.fail(new A_FrameStorageError({\n title: A_FrameStorageError.DestroyDefinitionsFailed,\n description: `Failed to destroy definition records.`,\n }));\n\n executionScope.destroy();\n\n return context;\n }\n }\n\n\n\n async saveNamespaces(namespaces: A_FrameNamespace_Serialized[]): Promise<A_FrameStorageSaveNamespaceOperation> {\n const context = new A_FrameStorageOperation<A_FrameStorageSaveNamespaceOperationParams, A_FrameStorageSaveNamespaceOperationResult>({\n records: namespaces\n });\n\n const executionScope = new A_Scope({\n name: 'A_FrameStorage.saveNamespaces',\n fragments: [context]\n })\n .inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameStorageFeatures.SaveNamespaces, executionScope);\n executionScope.destroy();\n\n return context;\n } catch (error) {\n\n context.fail(new A_FrameStorageError({\n title: A_FrameStorageError.SaveNamespaceFailed,\n description: `Failed to save namespace records.`,\n }));\n\n executionScope.destroy();\n\n return context;\n }\n }\n\n async loadNamespaces(\n namespaceIds: string[]\n ): Promise<A_FrameStorageLoadNamespacesOperation> {\n const context = new A_FrameStorageOperation<A_FrameStorageLoadNamespacesOperationParams, A_FrameStorageLoadNamespacesOperationResult>({\n namespaces: namespaceIds\n });\n\n const executionScope = new A_Scope({\n name: 'A_FrameStorage.loadNamespaces',\n fragments: [context]\n })\n .inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameStorageFeatures.LoadNamespaces, executionScope);\n executionScope.destroy();\n\n return context;\n } catch (error) {\n\n context.fail(new A_FrameStorageError({\n title: A_FrameStorageError.LoadNamespacesFailed,\n description: `Failed to load namespace records.`,\n }));\n\n executionScope.destroy();\n\n return context;\n }\n }\n\n async destroyNamespaces(namespacesIds: string[]): Promise<A_FrameStorageDestroyNamespacesOperation> {\n const context = new A_FrameStorageOperation<A_FrameStorageDestroyNamespacesOperationParams, A_FrameStorageDestroyNamespacesOperationResult>({\n namespaces: namespacesIds\n });\n\n const executionScope = new A_Scope({\n name: 'A_FrameStorage.destroyNamespaces',\n fragments: [context]\n })\n .inherit(A_Context.scope(this));\n\n try {\n await this.call(A_FrameStorageFeatures.DestroyNamespaces, executionScope);\n executionScope.destroy();\n\n return context;\n } catch (error) {\n\n context.fail(new A_FrameStorageError({\n title: A_FrameStorageError.DestroyNamespacesFailed,\n description: `Failed to destroy namespace records.`,\n }));\n\n executionScope.destroy();\n\n return context;\n }\n }\n}\n","export const A_FrameCredentialsFeatures = {\n Load: '_A_FRAME_CREDENTIALS_LOAD',\n Save: '_A_FRAME_CREDENTIALS_SAVE',\n Destroy: '_A_FRAME_CREDENTIALS_DESTROY',\n} as const;\n","import { A_Entity, A_Scope } from \"@adaas/a-concept\";\nimport {\n A_FrameCredentials_Init,\n A_FrameCredentials_Serialized,\n} from \"./A-FrameCredentials.types\";\nimport { A_FrameCredentialsFeatures } from \"./A-FrameCredentials.constants\";\n\n\nexport class A_FrameCredentials extends A_Entity<A_FrameCredentials_Init, A_FrameCredentials_Serialized> {\n\n static get concept(): string {\n return 'a-frame';\n }\n\n protected _credentialId!: string;\n protected _name!: string;\n protected _description?: string | null;\n protected _encryptionKey!: string;\n protected _algorithm!: string;\n protected _keyEncoding!: string;\n protected _usageNote?: string | null;\n protected _serverVersion!: string;\n\n // ─── Getters ──────────────────────────────────────────────────────────────\n\n get credentialId(): string {\n return this._credentialId;\n }\n\n get name(): string {\n return this._name;\n }\n\n get description(): string | null | undefined {\n return this._description;\n }\n\n /**\n * The raw encryption key as returned by the server.\n * Use this for encrypting / decrypting data exchanged with the a-frame-mcp server.\n */\n get encryptionKey(): string {\n return this._encryptionKey;\n }\n\n get algorithm(): string {\n return this._algorithm;\n }\n\n get keyEncoding(): string {\n return this._keyEncoding;\n }\n\n get usageNote(): string | null | undefined {\n return this._usageNote;\n }\n\n get serverVersion(): string {\n return this._serverVersion;\n }\n\n get isAuthenticated(): boolean {\n return !!this._credentialId;\n }\n\n // ─── Features ─────────────────────────────────────────────────────────────\n\n load(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameCredentialsFeatures.Load, scope);\n }\n\n save(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameCredentialsFeatures.Save, scope);\n }\n\n destroy(scope?: A_Scope): Promise<void> | void {\n return this.call(A_FrameCredentialsFeatures.Destroy, scope);\n }\n\n // ─── A_Entity lifecycle ───────────────────────────────────────────────────\n\n fromNew(init: A_FrameCredentials_Init): void {\n this.aseid = this.generateASEID({\n id: init.id,\n scope: 'a-frame',\n });\n\n this._credentialId = init.id;\n this._name = init.name;\n this._description = init.description;\n this._encryptionKey = init.encryption_key;\n this._algorithm = init.algorithm;\n this._keyEncoding = init.key_encoding;\n this._usageNote = init.usage_note;\n this._serverVersion = init.server_version;\n }\n\n fromJSON(serialized: A_FrameCredentials_Serialized): void {\n this._credentialId = serialized.credentialId;\n this._name = serialized.name;\n this._description = serialized.description;\n this._algorithm = serialized.algorithm;\n this._keyEncoding = serialized.key_encoding;\n this._serverVersion = serialized.serverVersion;\n // encryption_key is not serialized — must be fetched from server\n this._encryptionKey = '';\n }\n\n toJSON(): A_FrameCredentials_Serialized {\n return {\n ...super.toJSON(),\n credentialId: this._credentialId,\n name: this._name,\n description: this._description,\n algorithm: this._algorithm,\n key_encoding: this._keyEncoding,\n serverVersion: this._serverVersion,\n };\n }\n}\n","import { A_Fragment } from \"@adaas/a-concept\"\nimport { A_FrameChannelRequest } from \"../A-FrameChannel/A-FrameChannelRequest.context\";\nimport { A_Frame_CredentialResponse } from \"../A-FrameChannel/A-FrameChannel.types\";\nimport { A_FrameCredentials } from \"../A-FrameCredentials/A-FrameCredentials.entity\";\n\n\nexport class A_FrameContext extends A_Fragment {\n\n private _credentials?: A_FrameCredentials;\n\n\n constructor() {\n super({ name: 'a-frame-context' });\n }\n\n\n get encryptionKey(): string | undefined {\n return this._credentials?.encryptionKey;\n }\n\n\n get serverVersion(): string | undefined {\n return this._credentials?.serverVersion;\n }\n\n\n isAuthenticated(): boolean {\n return !!this._credentials?.isAuthenticated;\n }\n\n\n setCredentials(credentialsRequest: A_FrameChannelRequest<A_Frame_CredentialResponse>) {\n if (credentialsRequest.error || !credentialsRequest.response) {\n this._credentials = undefined;\n return;\n }\n\n this._credentials = new A_FrameCredentials(credentialsRequest.response);\n }\n\n}","import { A_Error, A_Fragment } from \"@adaas/a-concept\";\n\n\nexport class A_FrameChannelEvent<\n T extends Record<string, any> = any,\n> extends A_Fragment {\n\n protected _data?: T;\n protected _eventName!: string;\n\n constructor(\n name: string,\n data?: T\n ) {\n super({ name: 'a-frame-channel-event-' + name });\n this._data = data as T;\n this._eventName = name;\n }\n\n get name(): string {\n return this._eventName;\n }\n\n get data(): T | undefined {\n return this._data;\n }\n\n}\n","import { A_Context, A_Entity, A_Error, A_Feature, A_Scope } from \"@adaas/a-concept\";\nimport { A_FrameChannelStream_Init, A_FrameChannelStream_Serialized, A_FrameChannelStreamStatusNames } from \"./A-FrameChannel.types\";\nimport { A_FrameChannelStreamFeatures, A_FrameChannelStreamStatuses } from \"./A-FrameChannel.constants\";\nimport { A_FrameChannelEvent } from \"./A-FrameChannelEvent.context\";\n\n\n\nexport class A_FrameChannelStream<\n T extends Record<string, any> = Record<string, any>\n> extends A_Entity<\n A_FrameChannelStream_Init<T>,\n A_FrameChannelStream_Serialized<T>\n> {\n\n\n static onEvent(name?: string) {\n\n const eventName = (name || 'all') + A_FrameChannelStreamFeatures.onEvent;\n\n\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n return A_Feature.Extend({\n name: eventName,\n scope: [target.constructor],\n })(target, propertyKey, descriptor);\n }\n }\n\n\n protected _method!: string;\n protected _path!: string;\n protected _body?: T;\n protected _scope!: A_Scope\n protected _error?: A_Error;\n protected _status!: A_FrameChannelStreamStatusNames;\n protected _initDate!: string;\n\n /**\n * The scope of the session, Will be destroyed after the session is closed.\n */\n get scope(): A_Scope {\n\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 method(): string {\n return this._method;\n }\n\n get path(): string {\n return this._path;\n }\n\n get body(): T | undefined {\n return this._body;\n }\n\n get status(): A_FrameChannelStreamStatusNames {\n return this._status;\n }\n\n get error(): A_Error | undefined {\n return this._error;\n }\n\n get initDate(): Date {\n return new Date(this._initDate);\n }\n\n complete(): void {\n this._status = A_FrameChannelStreamStatuses.Closed;\n }\n\n fail(error: A_Error): void {\n this._status = A_FrameChannelStreamStatuses.Closed;\n this._error = error;\n }\n\n destroy(): Promise<void> | void {\n this.scope.destroy();\n }\n\n async open(){\n await this.call(A_FrameChannelStreamFeatures.open);\n }\n\n async send(){\n await this.call(A_FrameChannelStreamFeatures.send);\n }\n\n\n async propagate<T extends Record<string, any>>(name: string, data?: T): Promise<void> {\n const request = new A_FrameChannelEvent<T>(name, data);\n\n const executionScope = new A_Scope({\n name: 'A_FrameChannelStream.propagate',\n fragments: [request],\n })\n .inherit(this.scope);\n\n try {\n\n const callName = (name || 'all') + A_FrameChannelStreamFeatures.onEvent;\n\n await this.call(callName, executionScope);\n executionScope.destroy();\n\n } catch {\n executionScope.destroy();\n }\n }\n\n fromNew(newEntity: A_FrameChannelStream_Init<T>): void {\n this.aseid = this.generateASEID();\n this._method = newEntity.method;\n this._path = newEntity.path;\n this._body = newEntity.body;\n this._initDate = new Date().toISOString();\n }\n\n fromJSON(serialized: A_FrameChannelStream_Serialized<T>): void {\n this._method = serialized.method;\n this._path = serialized.path;\n this._body = serialized.body;\n this._initDate = serialized.initDate;\n }\n\n\n toJSON(): A_FrameChannelStream_Serialized<T> {\n return {\n ...super.toJSON(),\n initDate: this._initDate,\n status: this._status,\n error: this._error ? this._error.toJSON() : undefined,\n method: this._method,\n path: this._path,\n body: this._body,\n }\n }\n\n}","import { A_Feature, A_Inject } from \"@adaas/a-concept\";\nimport { A_FrameFeatures } from \"./A-FrameChannel.constants\";\nimport { A_FrameChannelRequest } from \"./A-FrameChannelRequest.context\";\nimport { A_FrameEnv } from \"../A-FrameEnv/A-FrameEnv.fragment.env-node\";\nimport { A_FrameChannelError } from \"./A-FrameChannel.error\";\nimport { A_FrameChannel } from \"./A-FrameChannel.component\";\nimport * as http from \"http\";\nimport * as https from \"https\";\n// import * as crypto from \"crypto\";\n// import * as net from \"net\";\n// import * as tls from \"tls\";\nimport { A_FrameChannelStream } from \"./A-FrameChannelStream.entity\";\nimport { A_FrameChannelEvent } from \"./A-FrameChannelEvent.context\";\n\nexport class A_FrameNodeChannel extends A_FrameChannel {\n\n @A_Feature.Extend({\n name: A_FrameFeatures.Request,\n scope: [A_FrameChannel],\n })\n async request(\n @A_Inject(A_FrameChannelRequest) context: A_FrameChannelRequest,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n ) {\n const url = `${env.A_FRAME_SERVER_URL}${context.path}`;\n const parsedUrl = new URL(url);\n const client = parsedUrl.protocol === \"https:\" ? https : http;\n const payload = context.body !== undefined ? JSON.stringify(context.body) : undefined;\n\n const result = await new Promise<unknown>((resolve, reject) => {\n const req = client.request(\n {\n protocol: parsedUrl.protocol,\n hostname: parsedUrl.hostname,\n port: parsedUrl.port,\n path: `${parsedUrl.pathname}${parsedUrl.search}`,\n method: context.method,\n headers: {\n ...(payload ? { \"Content-Type\": \"application/json\", \"Content-Length\": Buffer.byteLength(payload) } : {}),\n Authorization: `Bearer ${env.A_FRAME_SERVER_API_KEY}`,\n },\n },\n (res) => {\n const chunks: Buffer[] = [];\n\n res.on(\"data\", (chunk) => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));\n res.on(\"end\", () => {\n const raw = Buffer.concat(chunks).toString(\"utf8\");\n\n if ((res.statusCode ?? 500) >= 400) {\n console.error(`[A-FrameChannel] <-- ${res.statusCode} ${context.method} ${url}`);\n reject(\n new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Request to ${context.path} failed with status ${res.statusCode}`,\n }),\n );\n return;\n }\n\n if (!raw) {\n resolve(undefined);\n return;\n }\n\n try {\n const parsed = JSON.parse(raw);\n resolve(parsed);\n } catch {\n reject(\n new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Invalid JSON response from ${context.path}`,\n }),\n );\n }\n });\n },\n );\n\n req.setTimeout(env.A_FRAME_REQUEST_TIMEOUT, () => {\n console.error(`[A-FrameChannel] TIMEOUT ${context.method} ${url}`);\n req.destroy(\n new A_FrameChannelError({\n title: A_FrameChannelError.Timeout,\n description: `Request to ${context.path} timed out after ${env.A_FRAME_REQUEST_TIMEOUT}ms`,\n }),\n );\n });\n\n req.on(\"error\", (err) => reject(err));\n\n if (payload) req.write(payload);\n req.end();\n });\n\n context.complete(result);\n\n }\n\n\n\n\n @A_Feature.Extend({\n name: A_FrameFeatures.Stream,\n scope: [A_FrameChannel],\n })\n async stream(\n @A_Inject(A_FrameChannelStream) stream: A_FrameChannelStream,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n ) {\n const url = `${env.A_FRAME_SERVER_URL}${stream.path}`;\n const parsedUrl = new URL(url);\n const client = parsedUrl.protocol === \"https:\" ? https : http;\n const payload = stream.body !== undefined ? JSON.stringify(stream.body) : undefined;\n\n await new Promise<void>((resolve, reject) => {\n\n const req = client.request(\n {\n protocol: parsedUrl.protocol,\n hostname: parsedUrl.hostname,\n port: parsedUrl.port,\n path: `${parsedUrl.pathname}${parsedUrl.search}`,\n method: stream.method,\n headers: {\n ...(payload ? { \"Content-Type\": \"application/json\" } : {}),\n Accept: \"text/event-stream\",\n Authorization: `Bearer ${env.A_FRAME_SERVER_API_KEY}`,\n ...(payload ? { \"Content-Length\": Buffer.byteLength(payload) } : {}),\n },\n },\n (res) => {\n if ((res.statusCode ?? 500) >= 400) {\n console.error(`[A-FrameChannel] <-- ${res.statusCode} ${stream.method} ${url}`);\n reject(\n new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Stream request to ${stream.path} failed with status ${res.statusCode}`,\n }),\n );\n return;\n }\n\n let buffer = '';\n\n res.on(\"data\", async (chunk) => {\n buffer += Buffer.isBuffer(chunk) ? chunk.toString(\"utf8\") : String(chunk);\n const lines = buffer.split('\\n');\n // Keep the last incomplete line in the buffer for the next chunk\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n // SSE spec: only lines prefixed with \"data: \" carry event payloads\n if (!line.startsWith('data: ')) continue;\n\n const data = line.slice(6).trim();\n\n // SSE end-of-stream sentinel — no payload to process\n if (data === '[DONE]') continue;\n\n // ──────────────────────────────────────────────────\n // SERVER ACTION DISPATCH\n // Each parsed event is expected to carry a `type`\n // field that identifies the action sent by the server.\n //\n // Add new cases here as the server-side action set\n // grows. The raw event is also pushed to `events` so\n // callers receive the full history via context.complete.\n //\n // Example shape: { type: 'some_action', data: { ... } }\n // ──────────────────────────────────────────────────\n try {\n const event = JSON.parse(data);\n\n await stream.propagate(event.type, event.data);\n } catch {\n console.error(`[A-FrameChannel] Invalid SSE payload from ${stream.path}: ${data}`);\n }\n }\n });\n\n res.on(\"end\", () => {\n resolve();\n });\n\n res.on(\"error\", (err) => reject(err));\n },\n );\n\n req.setTimeout(300_000, () => {\n console.error(`[A-FrameChannel] TIMEOUT ${stream.method} ${url}`);\n req.destroy(\n new A_FrameChannelError({\n title: A_FrameChannelError.Timeout,\n description: `Stream request to ${stream.path} timed out after 300 seconds`,\n }),\n );\n });\n\n req.on(\"error\", (err) => reject(err));\n\n if (payload) req.write(payload);\n req.end();\n });\n\n stream.complete();\n }\n\n\n @A_Feature.Extend({\n name: A_FrameFeatures.Send,\n scope: [A_FrameChannel],\n })\n async send(\n @A_Inject(A_FrameChannelStream) stream: A_FrameChannelStream,\n @A_Inject(A_FrameChannelEvent) event: A_FrameChannelEvent,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n ) {\n // SSE is server-to-client only; to push data back to the server\n // during an active stream session we make a separate HTTP POST to\n // a companion endpoint.\n //\n // Convention: same base path as the stream with \"/send\" appended —\n // adjust to match your server-side routing.\n const url = `${env.A_FRAME_SERVER_URL}${stream.path}/send`;\n const parsedUrl = new URL(url);\n const client = parsedUrl.protocol === \"https:\" ? https : http;\n\n // Always serialise as { type, data } so the server can dispatch\n // the same way it dispatches events back to the client.\n const payload = JSON.stringify({ type: event.name, data: event.data });\n\n await new Promise<void>((resolve, reject) => {\n const req = client.request(\n {\n protocol: parsedUrl.protocol,\n hostname: parsedUrl.hostname,\n port: parsedUrl.port,\n path: `${parsedUrl.pathname}${parsedUrl.search}`,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${env.A_FRAME_SERVER_API_KEY}`,\n \"Content-Length\": Buffer.byteLength(payload),\n },\n },\n (res) => {\n // Drain the response so the socket can be freed/reused.\n res.resume();\n\n res.on(\"end\", () => {\n if ((res.statusCode ?? 500) >= 400) {\n console.error(`[A-FrameChannel] <-- ${res.statusCode} POST ${url}`);\n reject(\n new A_FrameChannelError({\n title: A_FrameChannelError.RequestFailed,\n description: `Send event \"${event.name}\" to ${stream.path} failed with status ${res.statusCode}`,\n }),\n );\n return;\n }\n\n resolve();\n });\n },\n );\n\n req.setTimeout(15_000, () => {\n req.destroy(\n new A_FrameChannelError({\n title: A_FrameChannelError.Timeout,\n description: `Send event \"${event.name}\" to ${stream.path} timed out after 15 seconds`,\n }),\n );\n });\n\n req.on(\"error\", (err) => reject(err));\n\n req.write(payload);\n req.end();\n });\n }\n}\n\n// // ─── WebSocket feature ────────────────────────────────────────────────────\n\n// @A_Feature.Extend({\n// name: A_FrameFeatures.Socket,\n// scope: [A_FrameChannel],\n// })\n// async socket(\n// @A_Inject(A_FrameChannelSocket) socket: A_FrameChannelSocket,\n// @A_Inject(A_FrameEnv) env: A_FrameEnv,\n// ) {\n// const url = `${env.A_FRAME_SERVER_URL}${socket.path}`;\n// const parsedUrl = new URL(url);\n\n// // Both http→ws and https→wss are TLS-detected the same way\n// const isSecure =\n// parsedUrl.protocol === \"https:\" || parsedUrl.protocol === \"wss:\";\n\n// const hostname = parsedUrl.hostname;\n// const port = parsedUrl.port\n// ? parseInt(parsedUrl.port, 10)\n// : isSecure ? 443 : 80;\n// const wsPath = `${parsedUrl.pathname}${parsedUrl.search}`;\n// const hostHeader = parsedUrl.port ? `${hostname}:${parsedUrl.port}` : hostname;\n\n// // ── WebSocket opening handshake (RFC 6455 §4.1) ─────────────────────\n// // Generate a fresh 16-byte random key. The server must echo it back\n// // as SHA-1(\"key\" + magic) in Sec-WebSocket-Accept, which we verify to\n// // guard against accidental plain-HTTP responses being accepted as WS.\n// const wsKey = crypto.randomBytes(16).toString(\"base64\");\n// const expectedAccept = crypto\n// .createHash(\"sha1\")\n// .update(wsKey + \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\")\n// .digest(\"base64\");\n\n// await new Promise<void>((resolve, reject) => {\n// // Establish raw TCP (or TLS) transport without HTTP machinery\n// const rawSocket: net.Socket = isSecure\n// ? tls.connect({ host: hostname, port, servername: hostname })\n// : net.connect({ host: hostname, port });\n\n// let handshakeDone = false;\n// let frameBuffer = Buffer.alloc(0);\n\n// // ── Send the HTTP/1.1 Upgrade request once transport is ready ────\n// function sendHandshake() {\n// // If the caller provided a body, encode it in a custom header so\n// // it survives the GET-only WebSocket upgrade request.\n// const initHeader = socket.body !== undefined\n// ? [`X-A-Frame-Init: ${Buffer.from(JSON.stringify(socket.body)).toString(\"base64\")}`]\n// : [];\n\n// const lines = [\n// `GET ${wsPath} HTTP/1.1`,\n// `Host: ${hostHeader}`,\n// \"Upgrade: websocket\",\n// \"Connection: Upgrade\",\n// `Sec-WebSocket-Key: ${wsKey}`,\n// \"Sec-WebSocket-Version: 13\",\n// // Auth header — same Bearer token used by all other methods\n// `Authorization: Bearer ${env.A_FRAME_SERVER_API_KEY}`,\n// ...initHeader,\n// \"\", // produces the mandatory blank CRLF line\n// \"\",\n// ];\n\n// rawSocket.write(lines.join(\"\\r\\n\"));\n// }\n\n// // For TLS, wait until the TLS handshake finishes before writing\n// if (isSecure) {\n// (rawSocket as tls.TLSSocket).once(\"secureConnect\", sendHandshake);\n// } else {\n// rawSocket.once(\"connect\", sendHandshake);\n// }\n\n// rawSocket.on(\"data\", async (chunk: Buffer) => {\n// frameBuffer = Buffer.concat([frameBuffer, chunk]);\n\n// // ── Phase 1: wait for the HTTP 101 response header block ─────\n// if (!handshakeDone) {\n// const headEnd = frameBuffer.indexOf(\"\\r\\n\\r\\n\");\n// if (headEnd === -1) return; // headers still arriving\n\n// const statusBlock = frameBuffer.slice(0, headEnd).toString(\"utf8\");\n// frameBuffer = frameBuffer.slice(headEnd + 4);\n\n// // Reject anything that isn't a 101 Switching Protocols\n// const statusLine = statusBlock.split(\"\\r\\n\")[0];\n// if (!statusLine.includes(\"101\")) {\n// rawSocket.destroy();\n// reject(\n// new A_FrameChannelError({\n// title: A_FrameChannelError.RequestFailed,\n// description: `WebSocket upgrade rejected: ${statusLine}`,\n// }),\n// );\n// return;\n// }\n\n// // ── Sec-WebSocket-Accept verification ────────────────────\n// // Confirms the server is a genuine WebSocket endpoint and not\n// // an HTTP proxy replaying our request unchanged.\n// const acceptMatch = statusBlock.match(/Sec-WebSocket-Accept:\\s*([^\\r\\n]+)/i);\n// if (!acceptMatch || acceptMatch[1].trim() !== expectedAccept) {\n// rawSocket.destroy();\n// reject(\n// new A_FrameChannelError({\n// title: A_FrameChannelError.RequestFailed,\n// description:\n// \"WebSocket handshake failed: invalid Sec-WebSocket-Accept — possible MITM or non-WS endpoint\",\n// }),\n// );\n// return;\n// }\n\n// handshakeDone = true;\n\n// // Attach the send capability now that the socket is open\n// socket.attachSendFn((data: string) => {\n// rawSocket.write(encodeWebSocketFrame(data));\n// });\n\n// }\n\n// // ── Phase 2: parse and dispatch complete WS frames ───────────\n// while (frameBuffer.length >= 2) {\n// const { frame, consumed } = tryParseWebSocketFrame(frameBuffer);\n// if (!frame || consumed === 0) break; // incomplete frame — wait for more data\n\n// frameBuffer = frameBuffer.slice(consumed);\n\n// switch (frame.opcode) {\n// case 0x8: {\n// // Close frame — echo it back and tear down gracefully\n// rawSocket.write(encodeWebSocketFrame(\"\", 0x8));\n// rawSocket.end();\n// socket.complete();\n// resolve();\n// return;\n// }\n\n// case 0x9: {\n// // Ping — must reply with Pong carrying the same payload (RFC 6455 §5.5.2)\n// rawSocket.write(encodeWebSocketFrame(frame.payload.toString(\"utf8\"), 0xa));\n// break;\n// }\n\n// case 0x1:\n// case 0x2: {\n// // ──────────────────────────────────────────────────\n// // SERVER ACTION DISPATCH\n// // Each text/binary frame carries a JSON payload shaped\n// // as { type: string, data: any }.\n// //\n// // Add new cases in a subclass via:\n// // @A_FrameChannelSocket.onEvent('type_name')\n// // async onTypeName(@A_Inject(A_FrameChannelEvent) event) { ... }\n// // ──────────────────────────────────────────────────\n// const text = frame.payload.toString(\"utf8\");\n// try {\n// const event = JSON.parse(text);\n// await socket.propagate(event.type, event.data);\n// } catch {\n// console.error(\n// `[A-FrameChannel] Invalid WS payload from ${socket.path}: ${text}`,\n// );\n// }\n// break;\n// }\n// }\n// }\n// });\n\n// rawSocket.on(\"end\", () => {\n// socket.complete();\n// resolve();\n// });\n\n// rawSocket.on(\"error\", (err) => {\n// socket.fail(\n// new A_FrameChannelError({\n// title: A_FrameChannelError.RequestFailed,\n// description: `WebSocket error on ${socket.path}: ${err.message}`,\n// }),\n// );\n// reject(err);\n// });\n\n// // 60 s idle timeout — same as stream; adjust per use-case\n// rawSocket.setTimeout(60_000, () => {\n// console.error(`[A-FrameChannel] WS TIMEOUT ${url}`);\n// rawSocket.destroy(\n// new A_FrameChannelError({\n// title: A_FrameChannelError.Timeout,\n// description: `WebSocket connection to ${socket.path} timed out after 60 seconds`,\n// }),\n// );\n// });\n// });\n// }\n// }\n\n\n// // =============================================================================\n// // WebSocket frame helpers (RFC 6455)\n// // Module-level pure functions — no external dependencies required.\n// // =============================================================================\n\n// /**\n// * Encode `data` as a masked WebSocket text frame (opcode 0x1).\n// * Client → server frames MUST be masked per RFC 6455 §5.3.\n// * Pass opcode 0x8 for a close frame, 0xa for pong, etc.\n// */\n// function encodeWebSocketFrame(data: string, opcode: number = 0x1): Buffer {\n// const payload = Buffer.from(data, \"utf8\");\n// const len = payload.length;\n\n// // 4-byte random masking key — new key per frame (RFC 6455 §10.3)\n// const mask = crypto.randomBytes(4);\n\n// // Header size: 2 base bytes + 0/2/8 extended length bytes + 4 mask bytes\n// let headerLen = 6;\n// if (len > 65535) headerLen += 8;\n// else if (len > 125) headerLen += 2;\n\n// const frame = Buffer.allocUnsafe(headerLen + len);\n// frame[0] = 0x80 | (opcode & 0x0f); // FIN=1, opcode\n\n// let offset = 1;\n// if (len <= 125) {\n// frame[offset++] = 0x80 | len; // MASK=1, 7-bit length\n// } else if (len <= 65535) {\n// frame[offset++] = 0x80 | 126; // MASK=1, 16-bit extended length\n// frame.writeUInt16BE(len, offset);\n// offset += 2;\n// } else {\n// frame[offset++] = 0x80 | 127; // MASK=1, 64-bit extended length\n// frame.writeBigUInt64BE(BigInt(len), offset);\n// offset += 8;\n// }\n\n// mask.copy(frame, offset);\n// offset += 4;\n\n// for (let i = 0; i < len; i++) {\n// frame[offset + i] = payload[i] ^ mask[i % 4];\n// }\n\n// return frame;\n// }\n\n// /**\n// * Attempt to parse one complete WebSocket frame from `buf`.\n// * Returns `{ frame: null, consumed: 0 }` if the buffer does not yet contain a\n// * complete frame — the caller should buffer more data and retry.\n// *\n// * Server → client frames are never masked, so no unmasking is needed here.\n// * If the server incorrectly sends a masked frame it is unmasked anyway.\n// */\n// function tryParseWebSocketFrame(\n// buf: Buffer,\n// ): { frame: { opcode: number; payload: Buffer; fin: boolean } | null; consumed: number } {\n// if (buf.length < 2) return { frame: null, consumed: 0 };\n\n// const fin = (buf[0] & 0x80) !== 0;\n// const opcode = buf[0] & 0x0f;\n// const masked = (buf[1] & 0x80) !== 0;\n// let payloadLen = buf[1] & 0x7f;\n// let offset = 2;\n\n// if (payloadLen === 126) {\n// if (buf.length < 4) return { frame: null, consumed: 0 };\n// payloadLen = buf.readUInt16BE(2);\n// offset = 4;\n// } else if (payloadLen === 127) {\n// if (buf.length < 10) return { frame: null, consumed: 0 };\n// payloadLen = Number(buf.readBigUInt64BE(2));\n// offset = 10;\n// }\n\n// const maskBytes = masked ? 4 : 0;\n// if (buf.length < offset + maskBytes + payloadLen) {\n// return { frame: null, consumed: 0 };\n// }\n\n// let maskKey: Buffer | null = null;\n// if (masked) {\n// maskKey = buf.slice(offset, offset + 4);\n// offset += 4;\n// }\n\n// const payload = Buffer.from(buf.slice(offset, offset + payloadLen));\n// if (masked && maskKey) {\n// for (let i = 0; i < payload.length; i++) {\n// payload[i] ^= maskKey[i % 4];\n// }\n// }\n\n// return { frame: { opcode, payload, fin }, consumed: offset + payloadLen };\n// }\n","import { A_Caller, A_Feature, A_Inject } from \"@adaas/a-concept\";\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { A_FrameStorageFeatures } from \"../A-FrameStorage.constants\";\nimport { A_FrameStorage } from \"../A-FrameStorage.component\";\nimport { A_FrameEnv } from \"../../A-FrameEnv/A-FrameEnv.fragment.env-node\";\nimport { A_FrameStorageOperation } from \"../A-FrameStorageOperation.context\";\nimport { A_FrameCrypto } from \"../../A-FrameCrypto/A-FrameCrypto.component.env-node\";\nimport { A_FrameNamespace_Serialized } from \"../../A-FrameNamespace/A-FrameNamespace.types\";\nimport { A_FrameStorageCodec } from \"../A-FrameStorage.codec\";\nimport { A_FrameDefinitionFeatures } from \"../../A-FrameDefinition/A-FrameDefinition.constants\";\nimport { A_FrameDefinition } from \"../../A-FrameDefinition\";\nimport { A_FrameDefinition_Serialized } from \"../../A-FrameDefinition/A-FrameDefinition.types\";\nimport { A_FrameContext } from \"../../A-Frame/A-Frame.context\";\nimport { A_FrameNamespace } from \"../../A-FrameNamespace\";\nimport { A_FrameNamespaceFeatures } from \"../../A-FrameNamespace/A-FrameNamespace.constants\";\nimport { A_FrameStorageDestroyDefinitionsOperation, A_FrameStorageDestroyNamespacesOperation, A_FrameStorageLoadDefinitionsOperation, A_FrameStorageLoadNamespacesOperation, A_FrameStorageSaveDefinitionOperation, A_FrameStorageSaveNamespaceOperation } from \"../A-FrameStorage.types\";\nimport { A_FrameStorageError } from \"../A-FrameStorage.error\";\n\n\n/** Reserved filename for the namespace binary index */\n\n/**\n * A_FrameStorageProvider — Node.js environment\n *\n * Reads and writes encrypted binary index files (*.bin) on the local filesystem.\n * Definition records are grouped by namespace into <namespace>.bin files.\n * Namespace records are stored in the reserved __namespaces.bin file.\n *\n * File layout on disk: [IV 12B][AuthTag 16B][Ciphertext ...]\n */\nexport class A_FrameNodeStorage extends A_FrameStorage {\n\n /** Returns file contents, or null when the file does not exist yet. Re-throws all other I/O errors. */\n private async tryReadFile(filePath: string): Promise<Buffer | null> {\n try {\n return await fs.readFile(filePath);\n } catch (err: any) {\n if (err?.code === 'ENOENT') return null;\n throw err;\n }\n }\n\n /**\n * Resolves extra storage directories by expanding each comma-separated glob\n * pattern in `pattern`. Returns an empty array when `pattern` is blank or\n * when no paths match. Errors from unsupported patterns are swallowed so\n * that a bad env value never breaks the application.\n */\n private async listExtraStorageDirs(pattern: string): Promise<string[]> {\n if (!pattern) return [];\n const dirs: string[] = [];\n for (const p of pattern.split(',').map(s => s.trim()).filter(Boolean)) {\n try {\n for await (const match of fs.glob(p)) {\n dirs.push(match);\n }\n } catch {\n // unsupported pattern or no matches — skip silently\n }\n }\n return dirs;\n }\n\n //---------------------------------------------------------------------------------------\n //--------------------------Definition Features Extensions-------------------------------\n //---------------------------------------------------------------------------------------\n /**\n * Save a single definition to local file storage. This is called as part of A_FrameDefinition.save() when using the local file storage provider. It reads the existing namespace file, merges in the new or updated definition, and writes back the encrypted file.\n * \n * @param definition \n * @param env \n * @param context \n * @param codec \n */\n @A_Feature.Extend({\n name: A_FrameDefinitionFeatures.Save,\n scope: [A_FrameDefinition]\n })\n async saveDefinitionToDisk(\n @A_Inject(A_Caller) definition: A_FrameDefinition,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n ): Promise<void> {\n const namespace = definition.namespace\n\n const incoming = definition.toJSON();\n if (!incoming.embedding)\n throw new Error('Only definitions with embeddings can be saved to storage');\n\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace.id)));\n const existing: A_FrameDefinition_Serialized[] = rawBuf\n ? codec.decodePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))\n : [];\n\n const merged = new Map<string, A_FrameDefinition_Serialized>();\n for (const r of existing) merged.set(r.hash, r);\n merged.set(incoming.hash, incoming);\n\n const records = Array.from(merged.values());\n const payload = codec.encodePayload(records);\n const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);\n\n await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });\n await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace.id)), encrypted);\n }\n /**\n * Load a single definition from local file storage. This is called as part of A_FrameDefinition.load() when using the local file storage provider. It reads the namespace file, finds the record for the requested definition, and if found and hash matches, populates the definition with the stored data.\n */\n @A_Feature.Extend({\n name: A_FrameDefinitionFeatures.Load,\n scope: [A_FrameDefinition]\n })\n async loadDefinitionFromDisk(\n @A_Inject(A_Caller) definition: A_FrameDefinition,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n ): Promise<void> {\n // 1. Try primary storage dir\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(definition.namespace.id)));\n if (rawBuf) {\n const plain = await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!);\n const record = codec.decodePayload(plain).find(r => r.aseid === definition.aseid.toString());\n if (record && record.hash === definition.hash && record.aFrameServerVersion === context.serverVersion) {\n definition.fromJSON(record);\n return;\n }\n }\n\n // 2. Scan extra storage directories discovered via A_FRAME_STORAGE_PATTERN\n for (const dir of await this.listExtraStorageDirs(env.A_FRAME_STORAGE_PATTERN)) {\n const extraBuf = await this.tryReadFile(path.join(dir, codec.getDefinitionsFileName(definition.namespace.id)));\n if (!extraBuf) continue;\n try {\n const plain = await aFrameCrypto.decryptBytes(new Uint8Array(extraBuf), context.encryptionKey!);\n const record = codec.decodePayload(plain).find(r => r.aseid === definition.aseid.toString());\n if (record && record.hash === definition.hash && record.aFrameServerVersion === context.serverVersion) {\n definition.fromJSON(record);\n return;\n }\n } catch {\n // skip unreadable extra storage\n }\n }\n }\n /**\n * Delete a single definition from local file storage. This is called as part of A_FrameDefinition.destroy() when using the local file storage provider. It reads the namespace file, removes the record for the requested definition, and writes back the encrypted file.\n * \n * @param definition \n * @param env \n * @param context \n * @param codec \n */\n @A_Feature.Extend({\n name: A_FrameDefinitionFeatures.Destroy,\n scope: [A_FrameDefinition]\n })\n async destroyDefinitionFromDisk(\n @A_Inject(A_Caller) definition: A_FrameDefinition,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n\n ): Promise<void> {\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(definition.namespace.id)));\n if (!rawBuf) return;\n\n const plain = await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!);\n const records = codec.decodePayload(plain);\n\n const filtered = records.filter(r => r.aseid !== definition.aseid.toString());\n\n const payload = codec.encodePayload(filtered);\n const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);\n\n await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });\n await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(definition.namespace.id)), encrypted);\n }\n\n // ---------------------------------------------------------------------------------------\n //--------------------------Namespaces Features Extensions-------------------------------\n //---------------------------------------------------------------------------------------\n\n @A_Feature.Extend({\n name: A_FrameNamespaceFeatures.Save,\n scope: [A_FrameNamespace]\n })\n async saveNamespaceToDisk(\n @A_Inject(A_Caller) namespace: A_FrameNamespace,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n ): Promise<void> {\n const incoming = namespace.toJSON();\n\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()));\n const existing: A_FrameNamespace_Serialized[] = rawBuf\n ? codec.decodeNamespacePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))\n : [];\n\n const merged = new Map<string, A_FrameNamespace_Serialized>();\n for (const r of existing) merged.set(r.aseid, r);\n merged.set(incoming.aseid.toString(), incoming);\n\n const records = Array.from(merged.values());\n const payload = codec.encodeNamespacePayload(records);\n\n const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);\n\n await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });\n await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()), encrypted);\n }\n\n @A_Feature.Extend({\n name: A_FrameNamespaceFeatures.Load,\n scope: [A_FrameNamespace]\n })\n async loadNamespaceFromDisk(\n @A_Inject(A_Caller) namespace: A_FrameNamespace,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n ): Promise<void> {\n // 1. Try primary storage dir\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()));\n if (rawBuf) {\n const plain = await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!);\n const record = codec.decodeNamespacePayload(plain).find(r => r.aseid === namespace.aseid.toString());\n if (record && record.hash === namespace.hash && record.aFrameServerVersion === context.serverVersion) {\n namespace.fromJSON(record);\n return;\n }\n }\n\n // 2. Scan extra storage directories discovered via A_FRAME_STORAGE_PATTERN\n for (const dir of await this.listExtraStorageDirs(env.A_FRAME_STORAGE_PATTERN)) {\n const extraBuf = await this.tryReadFile(path.join(dir, codec.getNamespaceFileName()));\n if (!extraBuf) continue;\n try {\n const plain = await aFrameCrypto.decryptBytes(new Uint8Array(extraBuf), context.encryptionKey!);\n const record = codec.decodeNamespacePayload(plain).find(r => r.aseid === namespace.aseid.toString());\n if (record && record.hash === namespace.hash && record.aFrameServerVersion === context.serverVersion) {\n namespace.fromJSON(record);\n return;\n }\n } catch {\n // skip unreadable extra storage\n }\n }\n }\n\n @A_Feature.Extend({\n name: A_FrameNamespaceFeatures.Destroy,\n scope: [A_FrameNamespace]\n })\n async destroyNamespaceFromLocalFileStorage(\n @A_Inject(A_Caller) namespace: A_FrameNamespace,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n ): Promise<void> {\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()));\n if (!rawBuf) return;\n\n const plain = await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!);\n const records = codec.decodeNamespacePayload(plain);\n\n const filtered = records.filter(r => r.aseid !== namespace.aseid.toString());\n\n const payload = codec.encodeNamespacePayload(filtered);\n const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);\n\n await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });\n await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()), encrypted);\n\n /**\n * 2. Then drop definitions file related to the namespace.\n */\n try {\n await fs.unlink(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace.id)));\n } catch {\n // no-op if file doesn't exist\n }\n }\n\n\n\n\n\n // ---------------------------------------------------------------------------------------\n //--------------------------Storage Features Extensions-------------------------------\n //---------------------------------------------------------------------------------------\n @A_Feature.Extend({\n name: A_FrameStorageFeatures.SaveDefinitions,\n scope: [A_FrameStorage]\n })\n async saveDefinitionsToDisk(\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameStorageOperation) operation: A_FrameStorageSaveDefinitionOperation,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n ): Promise<void> {\n const records = operation.params.records;\n const namespace = records[0].namespace;\n\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace)));\n const existing: A_FrameDefinition_Serialized[] = rawBuf\n ? codec.decodePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))\n : [];\n\n const merged = new Map<string, A_FrameDefinition_Serialized>();\n for (const r of existing) merged.set(r.hash, r);\n for (const d of records) merged.set(d.hash, d);\n\n const result = Array.from(merged.values());\n const payload = codec.encodePayload(result);\n const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);\n\n await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });\n await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace)), encrypted);\n\n operation.complete({\n saved: records.length\n });\n }\n\n @A_Feature.Extend({\n name: A_FrameStorageFeatures.LoadDefinitions,\n scope: [A_FrameStorage]\n })\n async loadDefinitionsFromDisk(\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameStorageOperation) operation: A_FrameStorageLoadDefinitionsOperation,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n ): Promise<void> {\n const namespace = operation.params.namespaceId;\n\n // 1. Primary storage\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace)));\n const primaryRecords: A_FrameDefinition_Serialized[] = rawBuf\n ? codec.decodePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))\n : [];\n\n // 2. Merge extra storage directories (read-only; primary records take precedence)\n const merged = new Map<string, A_FrameDefinition_Serialized>();\n for (const r of primaryRecords) merged.set(r.hash, r);\n\n for (const dir of await this.listExtraStorageDirs(env.A_FRAME_STORAGE_PATTERN)) {\n const extraBuf = await this.tryReadFile(path.join(dir, codec.getDefinitionsFileName(namespace)));\n if (!extraBuf) continue;\n try {\n const extraRecords = codec.decodePayload(\n await aFrameCrypto.decryptBytes(new Uint8Array(extraBuf), context.encryptionKey!)\n );\n for (const r of extraRecords) {\n if (!merged.has(r.hash)) merged.set(r.hash, r);\n }\n } catch {\n // skip unreadable extra storage\n }\n }\n\n operation.complete({\n records: Array.from(merged.values())\n });\n }\n\n\n\n\n @A_Feature.Extend({\n name: A_FrameStorageFeatures.DestroyDefinitions,\n scope: [A_FrameStorage]\n })\n async destroyDefinitionsFromDisk(\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameStorageOperation) operation: A_FrameStorageDestroyDefinitionsOperation,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n ): Promise<void> {\n const namespace = operation.params.namespaceId;\n const definitionId = operation.params.definitionId;\n\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace)));\n const records: A_FrameDefinition_Serialized[] = rawBuf\n ? codec.decodePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))\n : [];\n\n const filtered = records.filter(r => r.aseid !== definitionId);\n\n const payload = codec.encodePayload(filtered);\n const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);\n\n await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });\n await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace)), encrypted);\n\n operation.complete({\n records: filtered\n });\n }\n\n\n\n @A_Feature.Extend({\n name: A_FrameStorageFeatures.SaveNamespaces,\n scope: [A_FrameStorage]\n })\n async saveNamespacesToDisk(\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameStorageOperation) operation: A_FrameStorageSaveNamespaceOperation,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n ): Promise<void> {\n const records = operation.params.records;\n\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()));\n const existing: A_FrameNamespace_Serialized[] = rawBuf\n ? codec.decodeNamespacePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))\n : [];\n\n const merged = new Map<string, A_FrameNamespace_Serialized>();\n for (const r of existing) merged.set(r.aseid, r);\n for (const d of records) merged.set(d.aseid.toString(), d);\n\n const result = Array.from(merged.values());\n const payload = codec.encodeNamespacePayload(result);\n\n const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);\n\n await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });\n await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()), encrypted);\n\n operation.complete({\n success: true\n });\n }\n\n @A_Feature.Extend({\n name: A_FrameStorageFeatures.LoadNamespaces,\n scope: [A_FrameStorage]\n })\n async loadNamespacesFromDisk(\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameStorageOperation) operation: A_FrameStorageLoadNamespacesOperation,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n ): Promise<void> {\n const ids = operation.params.namespaces;\n\n // 1. Primary storage\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()));\n const primaryRecords: A_FrameNamespace_Serialized[] = rawBuf\n ? codec.decodeNamespacePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))\n : [];\n\n // 2. Merge extra storage directories (read-only; primary records take precedence)\n const merged = new Map<string, A_FrameNamespace_Serialized>();\n for (const r of primaryRecords) merged.set(r.aseid, r);\n\n for (const dir of await this.listExtraStorageDirs(env.A_FRAME_STORAGE_PATTERN)) {\n const extraBuf = await this.tryReadFile(path.join(dir, codec.getNamespaceFileName()));\n if (!extraBuf) continue;\n try {\n const extraRecords = codec.decodeNamespacePayload(\n await aFrameCrypto.decryptBytes(new Uint8Array(extraBuf), context.encryptionKey!)\n );\n for (const r of extraRecords) {\n if (!merged.has(r.aseid)) merged.set(r.aseid, r);\n }\n } catch {\n // skip unreadable extra storage\n }\n }\n\n const allRecords = Array.from(merged.values());\n operation.complete({\n records: ids ? allRecords.filter(r => ids.includes(r.name)) : allRecords\n });\n }\n\n\n\n @A_Feature.Extend({\n name: A_FrameStorageFeatures.DestroyNamespaces,\n scope: [A_FrameStorage]\n })\n async destroyNamespacesFromDisk(\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameStorageOperation) operation: A_FrameStorageDestroyNamespacesOperation,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,\n @A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,\n ): Promise<void> {\n const ids = operation.params.namespaces;\n\n const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()));\n const records: A_FrameNamespace_Serialized[] = rawBuf\n ? codec.decodeNamespacePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))\n : [];\n\n const filtered = records.filter(r => !ids.includes(r.aseid));\n\n const payload = codec.encodeNamespacePayload(filtered);\n const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);\n\n await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });\n await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()), encrypted);\n\n /**\n * 2. Then drop definitions file related to the namespace.\n */\n try {\n for (const id of ids) {\n await fs.unlink(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(id)));\n }\n operation.complete({\n success: true\n });\n } catch (error) {\n\n operation.fail(new A_FrameStorageError({\n title: A_FrameStorageError.DestroyNamespacesFailed,\n description: `Failed to destroy namespace records.`,\n }));\n\n operation.complete({\n success: false\n });\n }\n }\n\n}\n","import { A_Caller, A_Component, A_Container, A_Context, A_Entity, A_Feature, A_Fragment, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_FrameChannel } from \"../A-FrameChannel/A-FrameChannel.component\";\nimport { A_FrameFeatures } from \"../A-FrameChannel/A-FrameChannel.constants\";\nimport { A_FrameChannelRequest } from \"../A-FrameChannel/A-FrameChannelRequest.context\";\nimport { A_FrameIndex } from \"../A-FrameIndex/A-FrameIndex.context\";\nimport { A_FrameInheritanceFilter } from \"../A-FrameIndex/A-FrameIndex.types\";\nimport { A_FrameVector } from \"../A-FrameVector/A-FrameVector.entity\";\nimport { A_FrameDynamicStructure } from \"./A-FrameDynamicStructure.entity\";\nimport { A_FrameDynamicStructureFeatures } from \"./A-FrameDynamicStructure.constants\";\nimport { A_FrameDynamicStructureError } from \"./A-FrameDynamicStructure.error\";\nimport {\n A_FrameComponentMapEntry,\n A_FrameDynamicStructureDefinition,\n A_FrameDynamicStructureDefinitionEntity,\n A_FrameStructureSelectRequest,\n A_FrameStructureSelectResolution,\n A_FrameStructureSelectResponse,\n} from \"./A-FrameDynamicStructure.types\";\nimport { A_FrameComponentMapIndex } from \"./A-FrameComponentMapIndex.context\";\n\n\n/**\n * Stateless component that implements the `Map` feature for\n * `A_FrameDynamicStructure`.\n *\n * Receives all necessary context via `@A_Inject` — it stores no state of its\n * own. Injects the calling structure (via `A_Caller`), the local definition\n * index (`A_FrameIndex`), the map-result accumulator (`A_FrameComponentMapIndex`),\n * and the HTTP channel (`A_FrameChannel`) needed for refinement retry calls.\n *\n * Algorithm:\n * 1. Read `structure.definition` (raw, with server embeddings).\n * 2. For every element run cosine-similarity search against `A_FrameIndex`.\n * 3. For remaining unmatched elements (up to `structure.maxRetries`): ask the\n * server to refine their descriptions, then re-match the new definition.\n * 4. Mark still-unmatched elements with a `matchError`.\n * 5. Call `structure.hydrateFromMap(mapIndex.toResult(workingDef))`.\n */\nexport class A_FrameComponentMapper extends A_Component {\n\n @A_Feature.Extend({\n name: A_FrameDynamicStructureFeatures.Map,\n scope: [A_FrameDynamicStructure],\n })\n async mapStructure(\n @A_Inject(A_Caller) structure: A_FrameDynamicStructure,\n @A_Inject(A_FrameComponentMapIndex) mapIndex: A_FrameComponentMapIndex,\n @A_Inject(A_FrameIndex) frameIndex: A_FrameIndex,\n @A_Inject(A_FrameChannel) channel: A_FrameChannel,\n ): Promise<void> {\n\n const def = structure.definition;\n if (!def) return;\n\n // ── helpers ──────────────────────────────────────────────────────────\n\n const tryMatch = (\n el: A_FrameDynamicStructureDefinitionEntity,\n minScore: number,\n inherit?: A_FrameInheritanceFilter | A_FrameInheritanceFilter[],\n ): Pick<A_FrameComponentMapEntry, 'matchedClass' | 'matchScore'> => {\n if (!el.embedding?.length) {\n return { matchedClass: null, matchScore: 0 };\n }\n const results = frameIndex.search(new A_FrameVector(el.embedding), { topK: 1, inherit });\n const top = results[0];\n if (top && top.score >= minScore) {\n return { matchedClass: top.record.name, matchScore: top.score };\n }\n return { matchedClass: null, matchScore: top?.score ?? 0 };\n };\n\n const allElements = (d: A_FrameDynamicStructureDefinition): A_FrameDynamicStructureDefinitionEntity[] => [\n ...d.containers,\n ...d.containers.flatMap(c => [\n ...(c.components ?? []),\n ...(c.fragments ?? []),\n ...(c.entities ?? []),\n ]),\n ...d.components,\n ...d.fragments,\n ...d.entities,\n ];\n\n const stripEmbeddings = (d: A_FrameDynamicStructureDefinition): A_FrameDynamicStructureDefinition => {\n const strip = (el: A_FrameDynamicStructureDefinitionEntity): A_FrameDynamicStructureDefinitionEntity => {\n const { embedding, ...rest } = el as any;\n return rest as A_FrameDynamicStructureDefinitionEntity;\n };\n return {\n containers: d.containers.map(c => ({\n ...strip(c),\n components: (c.components ?? []).map(strip),\n fragments: (c.fragments ?? []).map(strip),\n entities: (c.entities ?? []).map(strip),\n })),\n components: d.components.map(strip),\n fragments: d.fragments.map(strip),\n entities: d.entities.map(strip),\n };\n };\n\n /**\n * Infer the appropriate inheritance filter for an element by checking which\n * slot it occupies inside the definition (container / component / fragment / entity).\n */\n const inferInherit = (\n el: A_FrameDynamicStructureDefinitionEntity,\n d: A_FrameDynamicStructureDefinition,\n ): A_FrameInheritanceFilter | undefined => {\n if (d.containers.some(c => c.prompt === el.prompt)) return { class: A_Container };\n if (d.components.some(c => c.prompt === el.prompt)) return { class: A_Component };\n if (d.fragments.some(c => c.prompt === el.prompt)) return { class: A_Fragment };\n if (d.entities.some(c => c.prompt === el.prompt)) return { class: A_Entity };\n for (const ct of d.containers) {\n if ((ct.components ?? []).some(c => c.prompt === el.prompt)) return { class: A_Component };\n if ((ct.fragments ?? []).some(c => c.prompt === el.prompt)) return { class: A_Fragment };\n if ((ct.entities ?? []).some(c => c.prompt === el.prompt)) return { class: A_Entity };\n }\n return undefined;\n };\n\n /**\n * Mutate workingDef in-place: update the element identified by `oldPrompt`\n * with a new prompt, role, and embedding from a server suggestion.\n * This lets the next iteration's `allElements()` find the updated embedding.\n */\n const updateElementEmbedding = (\n d: A_FrameDynamicStructureDefinition,\n oldPrompt: string,\n newPrompt: string,\n newEmbedding: number[],\n newRole?: string,\n ): void => {\n const update = (el: A_FrameDynamicStructureDefinitionEntity & { role?: string }): void => {\n if (el.prompt === oldPrompt) {\n el.prompt = newPrompt;\n el.embedding = newEmbedding;\n if (newRole !== undefined) el.role = newRole;\n }\n };\n d.containers.forEach(update);\n d.containers.forEach(ct => {\n (ct.components ?? []).forEach(update);\n (ct.fragments ?? []).forEach(update);\n (ct.entities ?? []).forEach(update);\n });\n d.components.forEach(update);\n d.fragments.forEach(update);\n d.entities.forEach(update);\n };\n\n /**\n * Match all elements in the definition, restricting each group's candidate\n * pool to the appropriate base class via inheritance filters:\n * containers → A_Container\n * components → A_Component\n * fragments → A_Fragment\n * entities → A_Entity\n */\n const matchAll = (d: A_FrameDynamicStructureDefinition): void => {\n mapIndex.clear();\n const score = structure.minScore;\n\n // Top-level containers\n for (const ct of d.containers) {\n mapIndex.set({\n prompt: ct.prompt,\n role: ct.role,\n class: ct.class,\n ...tryMatch(ct, score, { class: A_Container }),\n });\n // Nested: components, fragments, entities within each container\n for (const el of (ct.components ?? []))\n mapIndex.set({ prompt: el.prompt, role: el.role, class: el.class, ...tryMatch(el, score, { class: A_Component }) });\n for (const el of (ct.fragments ?? []))\n mapIndex.set({ prompt: el.prompt, role: el.role, class: el.class, ...tryMatch(el, score, { class: A_Fragment }) });\n for (const el of (ct.entities ?? []))\n mapIndex.set({ prompt: el.prompt, role: el.role, class: el.class, ...tryMatch(el, score, { class: A_Entity }) });\n }\n\n // Top-level cross-cutting elements\n for (const el of d.components)\n mapIndex.set({ prompt: el.prompt, role: el.role, class: el.class, ...tryMatch(el, score, { class: A_Component }) });\n for (const el of d.fragments)\n mapIndex.set({ prompt: el.prompt, role: el.role, class: el.class, ...tryMatch(el, score, { class: A_Fragment }) });\n for (const el of d.entities)\n mapIndex.set({ prompt: el.prompt, role: el.role, class: el.class, ...tryMatch(el, score, { class: A_Entity }) });\n };\n\n // ── initial matching pass ─────────────────────────────────────────────\n\n const workingDef = def;\n matchAll(workingDef);\n\n // ── select / suggest retry loop ───────────────────────────────────────\n //\n // For each retry: collect unmatched elements, pull `candidateCount` top\n // candidates per element from the local index (no minScore filter so we\n // always have *something* to show the AI), then call /api/v1/structure/select.\n //\n // The server returns one resolution per element:\n // select → directly set matchedClass (no re-embed needed)\n // suggest → the response includes a fresh embedding; re-run tryMatch\n // none → skip the element (will become a matchError below)\n\n for (let retry = 0; retry < structure.maxRetries; retry++) {\n const unmatchedEls = allElements(workingDef).filter(\n el => el.embedding?.length && mapIndex.get(el.prompt)?.matchedClass === null,\n );\n if (unmatchedEls.length === 0) break;\n\n // Build select payload — top-K candidates per element, no minScore.\n const k = structure.candidateCount;\n const selectElements = unmatchedEls.map(el => {\n // Determine appropriate inheritance filter for this element's role.\n // We look up the existing map entry to know which slot it lives in.\n const entry = mapIndex.get(el.prompt);\n // Use unconstrained search to get candidates (already tried constrained above).\n const candidateResults = frameIndex.search(\n new A_FrameVector(el.embedding!),\n { topK: k },\n );\n return {\n prompt: el.prompt,\n role: el.role,\n candidates: candidateResults.map(r => ({\n name: r.record.name,\n description: r.record.description,\n })),\n };\n });\n\n // Call /api/v1/structure/select\n const selectReq = new A_FrameChannelRequest<A_FrameStructureSelectResponse>(\n 'POST',\n '/api/v1/structure/select',\n {\n originalPrompt: structure.prompt,\n elements: selectElements,\n model: structure.modelName,\n } satisfies A_FrameStructureSelectRequest,\n );\n\n const selectScope = new A_Scope({\n name: `A_FrameComponentMapper.mapStructure:select${retry}`,\n fragments: [selectReq],\n }).inherit(A_Context.scope(channel));\n\n await channel.call(A_FrameFeatures.Request, selectScope);\n selectScope.destroy();\n\n if (!selectReq.response) break;\n\n // Apply resolutions\n let anyUpdate = false;\n for (const resolution of selectReq.response.resolutions) {\n const existing = mapIndex.get(resolution.elementPrompt);\n if (!existing) continue;\n\n if (resolution.type === 'select' && resolution.selectedClass) {\n // Direct selection — no re-embed required.\n mapIndex.set({ ...existing, matchedClass: resolution.selectedClass, matchScore: 1 });\n anyUpdate = true;\n\n } else if (resolution.type === 'suggest' && resolution.suggestion) {\n // Server suggested a re-description, optionally with a fresh embedding.\n const { prompt: newPrompt, role: newRole, embedding: newEmbedding } = resolution.suggestion;\n\n if (newEmbedding?.length) {\n // Re-search locally with the new embedding.\n const el = unmatchedEls.find(e => e.prompt === resolution.elementPrompt);\n const inherit = el ? inferInherit(el, workingDef) : undefined;\n const results = frameIndex.search(\n new A_FrameVector(newEmbedding),\n { topK: 1, inherit },\n );\n const top = results[0];\n if (top && top.score >= structure.minScore) {\n mapIndex.set({ ...existing, matchedClass: top.record.name, matchScore: top.score });\n anyUpdate = true;\n } else {\n // Still unmatched, but update the prompt so next retry uses the new description.\n mapIndex.set({ ...existing, prompt: newPrompt, role: newRole });\n // Also update the working element so allElements() finds the new embedding.\n updateElementEmbedding(workingDef, resolution.elementPrompt, newPrompt, newEmbedding, newRole);\n anyUpdate = true;\n }\n } else {\n // No embedding returned — just update description for next round.\n mapIndex.set({ ...existing, prompt: newPrompt, role: newRole });\n anyUpdate = true;\n }\n }\n // type === 'none': leave as-is, will become matchError below.\n }\n\n if (!anyUpdate) break;\n }\n\n // ── finalize: mark remaining unmatched with an error ──────────────────\n\n for (const el of allElements(workingDef)) {\n const entry = mapIndex.get(el.prompt);\n if (entry && entry.matchedClass === null && el.embedding?.length) {\n mapIndex.set({\n ...entry,\n matchError: {\n title: A_FrameDynamicStructureError.ComponentNotFound,\n description: `Unable to match \"${el.prompt}\" to any registered implementation after ${structure.maxRetries} retries.`,\n },\n });\n }\n }\n\n // ── hydrate the structure with the map result ─────────────────────────\n\n structure.hydrateFromMap(mapIndex.toResult(workingDef));\n }\n}\n","import { A_Caller, A_Component, A_Context, A_Feature, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_FrameChannel } from \"../A-FrameChannel/A-FrameChannel.component\";\nimport { A_FrameFeatures } from \"../A-FrameChannel/A-FrameChannel.constants\";\nimport { A_FrameChannelRequest } from \"../A-FrameChannel/A-FrameChannelRequest.context\";\nimport { A_FrameIndex } from \"../A-FrameIndex/A-FrameIndex.context\";\nimport { A_FrameVector } from \"../A-FrameVector/A-FrameVector.entity\";\nimport { A_FrameDynamicFeature } from \"./A-FrameDynamicFeature.entity\";\nimport { A_FrameDynamicFeatureFeatures } from \"./A-FrameDynamicFeature.constants\";\nimport { A_FrameDynamicFeatureError } from \"./A-FrameDynamicFeature.error\";\nimport {\n A_FrameDynamicFeatureDefinition,\n A_FrameDynamicFeatureElementMapEntry,\n A_FrameDynamicFeatureStep,\n A_FrameDynamicFeatureStepMapEntry,\n A_FrameFeaturePatchResponse,\n} from \"./A-FrameDynamicFeature.types\";\nimport { A_FrameMethodMapIndex } from \"./A-FrameMethodMapIndex.context\";\n\n\n/**\n * Stateless component that implements the `Map` feature for\n * `A_FrameDynamicFeature`.\n *\n * Algorithm:\n * 1. Read `feature.definition` (includes server-computed embeddings on steps\n * and supporting elements).\n * 2. Run cosine-similarity search against `A_FrameIndex` for every step and\n * every supporting element.\n * 3. For steps that remain unmatched, issue a server patch to refine their\n * descriptions (up to `feature.maxRetries` times), then re-match.\n * 4. Mark any still-unmatched steps with a `matchError`.\n * 5. Hydrate the feature with `mapIndex.toResult(def)`.\n */\nexport class A_FrameMethodMapper extends A_Component {\n\n @A_Feature.Extend({\n name: A_FrameDynamicFeatureFeatures.Map,\n scope: [A_FrameDynamicFeature],\n })\n async mapFeature(\n @A_Inject(A_Caller) feature: A_FrameDynamicFeature,\n @A_Inject(A_FrameMethodMapIndex) mapIndex: A_FrameMethodMapIndex,\n @A_Inject(A_FrameIndex) frameIndex: A_FrameIndex,\n @A_Inject(A_FrameChannel) channel: A_FrameChannel,\n ): Promise<void> {\n\n const def = feature.definition;\n if (!def) return;\n\n // ── helpers ──────────────────────────────────────────────────────────\n\n const tryMatchStep = (\n step: A_FrameDynamicFeatureStep,\n minScore: number,\n ): Pick<A_FrameDynamicFeatureStepMapEntry, 'matchedClass' | 'matchedMethod' | 'matchScore'> => {\n if (!step.embedding?.length) {\n return { matchedClass: null, matchedMethod: null, matchScore: 0 };\n }\n const results = frameIndex.search(new A_FrameVector(step.embedding), { topK: 1 });\n const top = results[0];\n if (top && top.score >= minScore) {\n // Method definitions store name = \"methodName\" and dependency.name = \"ClassName\".\n // Class definitions store both name and dependency.name as the class name.\n const matchedClass = top.record.dependency.name;\n const matchedMethod = top.record.name;\n return { matchedClass, matchedMethod, matchScore: top.score };\n }\n return { matchedClass: null, matchedMethod: null, matchScore: top?.score ?? 0 };\n };\n\n const tryMatchElement = (\n el: { prompt: string; class?: string; embedding?: number[] },\n minScore: number,\n ): Pick<A_FrameDynamicFeatureElementMapEntry, 'matchedClass' | 'matchScore'> => {\n if (!el.embedding?.length) {\n return { matchedClass: null, matchScore: 0 };\n }\n const results = frameIndex.search(new A_FrameVector(el.embedding), { topK: 1 });\n const top = results[0];\n if (top && top.score >= minScore) {\n return { matchedClass: top.record.name, matchScore: top.score };\n }\n return { matchedClass: null, matchScore: top?.score ?? 0 };\n };\n\n const stripEmbeddings = (d: A_FrameDynamicFeatureDefinition): A_FrameDynamicFeatureDefinition => {\n const strip = (el: any): any => { const { embedding, ...rest } = el; return rest; };\n return {\n ...d,\n steps: d.steps.map(strip),\n components: d.components.map(strip),\n fragments: d.fragments.map(strip),\n entities: d.entities.map(strip),\n };\n };\n\n const matchAll = (d: A_FrameDynamicFeatureDefinition): void => {\n mapIndex.clear();\n for (const step of d.steps) {\n mapIndex.setStep({\n prompt: step.prompt,\n inputs: step.inputs,\n outputs: step.outputs,\n ...tryMatchStep(step, feature.minScore),\n });\n }\n for (const el of d.components) {\n mapIndex.setElement({ prompt: el.prompt, ...tryMatchElement(el, feature.minScore) });\n }\n for (const el of d.fragments) {\n mapIndex.setElement({ prompt: el.prompt, ...tryMatchElement(el, feature.minScore) });\n }\n for (const el of d.entities) {\n mapIndex.setElement({ prompt: el.prompt, ...tryMatchElement(el, feature.minScore) });\n }\n };\n\n // ── initial matching pass ─────────────────────────────────────────────\n\n let workingDef = def;\n matchAll(workingDef);\n\n // ── retry loop: refine unmatched steps via server patch ───────────────\n\n for (let retry = 0; retry < feature.maxRetries; retry++) {\n const unmatchedSteps = workingDef.steps.filter(\n step => step.embedding?.length && mapIndex.getStep(step.prompt)?.matchedMethod === null,\n );\n if (unmatchedSteps.length === 0) break;\n\n const refinementInstruction = [\n `The following workflow steps could not be matched to any registered method.`,\n `Please re-describe each step with more specific, method-oriented language:`,\n unmatchedSteps.map(s => `- \"${s.prompt}\"`).join('\\n'),\n ].join('\\n');\n\n const patchReq = new A_FrameChannelRequest<A_FrameFeaturePatchResponse>(\n 'POST',\n '/api/v1/feature/patch',\n {\n originalPrompt: feature.prompt,\n definition: stripEmbeddings(workingDef),\n patchInstruction: refinementInstruction,\n model: feature.modelName,\n context: feature.contextHint,\n },\n );\n\n const patchScope = new A_Scope({\n name: `A_FrameMethodMapper.mapFeature:retry${retry}`,\n fragments: [patchReq],\n }).inherit(A_Context.scope(channel));\n\n await channel.call(A_FrameFeatures.Request, patchScope);\n patchScope.destroy();\n\n if (!patchReq.response) break;\n\n workingDef = patchReq.response.definition;\n matchAll(workingDef);\n }\n\n // ── finalize: mark remaining unmatched steps with an error ────────────\n\n for (const step of workingDef.steps) {\n const entry = mapIndex.getStep(step.prompt);\n if (entry && entry.matchedMethod === null && step.embedding?.length) {\n mapIndex.setStep({\n ...entry,\n matchError: {\n title: A_FrameDynamicFeatureError.MethodNotFound,\n description: `Unable to match \"${step.prompt}\" to any registered method after ${feature.maxRetries} retries.`,\n },\n });\n }\n }\n\n // ── hydrate the feature with the map result ───────────────────────────\n\n feature.hydrateFromMap(mapIndex.toResult(workingDef));\n }\n}\n","import { A_Concept, A_Context, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_FrameBase } from \"./A-Frame.component\";\nimport { A_FrameIndex } from \"../A-FrameIndex\";\nimport { A_FrameStorage } from \"../A-FrameStorage/A-FrameStorage.component\";\nimport { A_FrameChannel } from \"../A-FrameChannel/A-FrameChannel.component\";\nimport { A_FrameContext } from \"./A-Frame.context\";\nimport { A_FrameNodeChannel } from \"../A-FrameChannel/A-FrameChannel.component.env-node\";\nimport { A_FrameNodeStorage } from \"../A-FrameStorage/node/A-FrameNodeStorage.component\";\nimport { A_FrameEnv } from \"../A-FrameEnv/A-FrameEnv.fragment.env-node\";\nimport { A_FrameStorageCodec } from \"../A-FrameStorage/A-FrameStorage.codec\";\nimport { A_FrameCrypto } from \"../A-FrameCrypto/A-FrameCrypto.component.env-node\";\nimport { A_FrameLogger } from \"../A-FrameLogger/A-FrameLogger.component.env-node\";\nimport { A_FrameCredentials } from \"../A-FrameCredentials/A-FrameCredentials.entity\";\nimport { A_FrameComponentMapper } from \"../A-FrameDynamicStructure/A-FrameComponentMapper.component\";\nimport { A_FrameMethodMapper } from \"../A-FrameDynamicFeature/A-FrameMethodMapper.component\";\n\n\n\nexport class A_Frame extends A_FrameBase {\n\n @A_Concept.Load()\n async injectDependencies(\n ) {\n const scope = A_Context.root;\n\n if (!scope.resolve(A_FrameIndex)) {\n const index = new A_FrameIndex();\n index.inherit(scope);\n scope.register(index);\n }\n\n this.packDependency(scope, A_FrameEnv, new A_FrameEnv());\n this.packDependency(scope, A_FrameStorageCodec, new A_FrameStorageCodec());\n this.packDependency(scope, A_FrameNodeStorage, A_FrameNodeStorage);\n this.packDependency(scope, A_FrameChannel, A_FrameNodeChannel);\n this.packDependency(scope, A_FrameCrypto, A_FrameCrypto);\n this.packDependency(scope, A_FrameLogger, new A_FrameLogger());\n this.packDependency(scope, A_Frame, A_Frame);\n this.packDependency(scope, A_FrameContext, new A_FrameContext());\n this.packDependency(scope, A_FrameComponentMapper, A_FrameComponentMapper);\n this.packDependency(scope, A_FrameMethodMapper, A_FrameMethodMapper);\n }\n\n\n @A_Concept.Load()\n async load(\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(A_FrameIndex) index: A_FrameIndex,\n @A_Inject(A_FrameStorage) storage: A_FrameStorage,\n @A_Inject(A_FrameContext) context: A_FrameContext,\n @A_Inject(A_FrameChannel) channel: A_FrameChannel,\n @A_Inject(A_FrameEnv) env: A_FrameEnv,\n @A_Inject(A_FrameLogger) logger: A_FrameLogger,\n ) {\n // 1. Authenticate — required before any storage or embedding operations.\n // If the server is unreachable (e.g. CLI invoked before server is up),\n // record the error in context and skip sync so the CLI can still run.\n let credentialsRequest: Awaited<ReturnType<typeof channel.getCredentials>>;\n try {\n credentialsRequest = await channel.getCredentials();\n } catch (err) {\n logger.warn(\n `A_Frame: could not reach the server to fetch credentials ` +\n `(${err instanceof Error ? err.message : String(err)}). ` +\n `Sync and embedding are disabled for this run.`\n );\n return;\n }\n context.setCredentials(credentialsRequest);\n\n // Store credentials as a registered entity so they can be injected\n // via @A_Inject(A_FrameCredentials) anywhere in the scope tree\n if (credentialsRequest.response) {\n const credentialsEntity = new A_FrameCredentials(credentialsRequest.response);\n A_Context.root.register(credentialsEntity);\n }\n\n\n const definedNameSpaces = index.listNamespaces();\n const definedDefinitions = index.listDefinitions();\n\n // 2. Hydrate all from storage in parallel.\n // Storage load only calls fromJSON when hash AND aFrameServerVersion match,\n // so items with a stale/missing cache remain un-embedded (isEmbed === false).\n\n await Promise.all([\n ...definedNameSpaces.map(ns => ns.load()),\n ...definedDefinitions.map(def => def.load()),\n ]);\n\n // 3. Skip embedding API calls entirely when sync is disabled\n if (!env.A_FRAME_SYNC) return;\n\n\n // 4. Re-embed and persist items whose cache is missing or stale\n const namespacesNeedEmbed = definedNameSpaces.filter(ns => !ns.isEmbed\n || (ns.aFrameServerVersion !== context.serverVersion)\n || (ns.aFrameVersion !== env.A_FRAME_VERSION) // re-embed if the client version has changed since last embed, as it may affect embedding results\n );\n const definitionsNeedEmbed = definedDefinitions.filter(def => !def.isEmbed\n || (def.aFrameServerVersion !== context.serverVersion)\n || (def.aFrameVersion !== env.A_FRAME_VERSION) // re-embed if the client version has changed since last embed, as it may affect embedding results\n );\n\n for (const batch of this.chunkArray(namespacesNeedEmbed, 10)) {\n // Embed in parallel — each namespace hits its own API call independently\n await Promise.all(batch.map(ns => ns.embed()));\n // Save sequentially — all namespaces write to the same __namespaces.aframe file;\n // parallel writes would race and the last writer would overwrite the others\n for (const ns of batch) {\n await ns.save();\n }\n }\n\n for (const batch of this.chunkArray(definitionsNeedEmbed, 10)) {\n // Embed in parallel — each definition hits its own API call independently\n await Promise.all(batch.map(def => def.embed()));\n // Save sequentially within a namespace — definitions in the same namespace share\n // one file; parallel writes would race and overwrite each other's records\n for (const def of batch) {\n await def.save();\n }\n }\n }\n\n\n chunkArray<T>(array: T[], size: number): T[][] {\n const result: T[][] = [];\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size));\n }\n return result;\n }\n\n}\n","import { A_Concept } from '@adaas/a-concept';\nimport { A_FrameCLIContainer } from './lib/A-FrameCLI/A-FrameCLI.container';\nimport { A_Frame } from './lib/A-Frame/A-Frame.component.env-node';\n\n\n\n(async () => {\n const concept = new A_Concept({\n name: 'A-Frame CLI',\n containers: [\n new A_FrameCLIContainer({\n components: [A_Frame]\n })\n ]\n });\n\n try {\n await concept.load();\n\n await concept.start();\n\n } catch (error) {\n console.error('Error starting A-Frame CLI concept:', error);\n }\n})();"]}
|