agentic-qe 3.9.0 → 3.9.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/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +43 -0
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/cli/bundle.js +8 -8
- package/dist/cli/chunks/adapter-53WBPKXU.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-PQYB7VRU.js → agent-booster-wasm-AKAOHSCX.js} +2 -2
- package/dist/cli/chunks/{agent-handler-QDAB5NQS.js → agent-handler-MTGPOUVP.js} +2 -2
- package/dist/cli/chunks/agent-memory-branch-UFPKWUFK.js +2 -0
- package/dist/cli/chunks/aqe-learning-engine-MV7NGY24.js +2 -0
- package/dist/cli/chunks/{audit-S7JUYYVP.js → audit-VBEZHNHO.js} +2 -2
- package/dist/cli/chunks/base-DZVGMQN2.js +2 -0
- package/dist/cli/chunks/better-sqlite3-IRPHIXRU.js +2 -0
- package/dist/cli/chunks/brain-handler-7EO3FFRZ.js +68 -0
- package/dist/cli/chunks/{branch-enumerator-XK4V5W7L.js → branch-enumerator-MZRGP35N.js} +2 -2
- package/dist/cli/chunks/{browser-PALA5PL3.js → browser-VSIWQE7J.js} +2 -2
- package/dist/cli/chunks/browser-workflow-3J5YNMEI.js +2 -0
- package/dist/cli/chunks/chunk-25LFUL2K.js +79 -0
- package/dist/cli/chunks/{chunk-LHJQD2VU.js → chunk-2EC5Z2J4.js} +68 -68
- package/dist/cli/chunks/{chunk-4YOMLWEK.js → chunk-2VVV73PW.js} +1 -1
- package/dist/cli/chunks/{chunk-BPWXXEH2.js → chunk-2WBCYSUN.js} +128 -128
- package/dist/cli/chunks/{chunk-X3KI6JOY.js → chunk-2Z2TFEOL.js} +2 -2
- package/dist/cli/chunks/chunk-34U7JDCN.js +2 -0
- package/dist/cli/chunks/{chunk-24FKIJNC.js → chunk-3GZKAORV.js} +2 -2
- package/dist/cli/chunks/{chunk-72WOAVK6.js → chunk-4D2ZG2QO.js} +1 -1
- package/dist/cli/chunks/{chunk-B36CDR4U.js → chunk-4DAOZQ3V.js} +2 -2
- package/dist/cli/chunks/{chunk-CL6POIX4.js → chunk-4FMHBBG5.js} +1 -1
- package/dist/cli/chunks/{chunk-BXAXGEFC.js → chunk-4FT3PND7.js} +5 -5
- package/dist/cli/chunks/{chunk-IGJPMN4I.js → chunk-4LA7IW3V.js} +1 -1
- package/dist/cli/chunks/{chunk-JRYGQO2W.js → chunk-4PKXIBX2.js} +1 -1
- package/dist/cli/chunks/{chunk-YPFOCNOE.js → chunk-4UH25U4O.js} +1 -1
- package/dist/cli/chunks/{chunk-U5RN7YQW.js → chunk-4Z27TRQF.js} +2 -2
- package/dist/cli/chunks/{chunk-YW2THB5Q.js → chunk-563PJBDM.js} +2 -2
- package/dist/cli/chunks/{chunk-BDIEMZ22.js → chunk-56IWS2KY.js} +2 -2
- package/dist/cli/chunks/chunk-5AUKULWO.js +2 -0
- package/dist/cli/chunks/{chunk-VSVXUTJN.js → chunk-5L6AU3QK.js} +2 -2
- package/dist/cli/chunks/{chunk-RTGGL7D7.js → chunk-5RL66XSH.js} +2 -2
- package/dist/cli/chunks/{chunk-YANUP2RO.js → chunk-65M7C6SH.js} +1 -1
- package/dist/cli/chunks/{chunk-ESVQ6MEB.js → chunk-6SOJVEU7.js} +2 -2
- package/dist/cli/chunks/{chunk-UFUVUO3J.js → chunk-727BDQ3K.js} +2 -2
- package/dist/cli/chunks/{chunk-TLHP5EII.js → chunk-7NOIIC7G.js} +1 -1
- package/dist/cli/chunks/{chunk-N4TL73TH.js → chunk-7SLN2JGP.js} +8 -8
- package/dist/cli/chunks/{chunk-NZ2VCPN4.js → chunk-AA33R5U4.js} +2 -2
- package/dist/cli/chunks/{chunk-Y7BHKZFJ.js → chunk-AKSJQ6B3.js} +2 -2
- package/dist/cli/chunks/{chunk-3ZOONQG6.js → chunk-BIVIPF4O.js} +1 -1
- package/dist/cli/chunks/{chunk-VOS4NQSF.js → chunk-BKCTNRC5.js} +2 -2
- package/dist/cli/chunks/{chunk-B6LLWYQ6.js → chunk-BOH22AKC.js} +2 -2
- package/dist/cli/chunks/{chunk-OI5NGQO2.js → chunk-BY47GV4T.js} +2 -2
- package/dist/cli/chunks/chunk-CCYMJKWX.js +2 -0
- package/dist/cli/chunks/chunk-CL3K5EJK.js +2 -0
- package/dist/cli/chunks/{chunk-GPQ57KA4.js → chunk-CQBSGYRA.js} +2 -2
- package/dist/cli/chunks/{chunk-MZOFWJTM.js → chunk-CQP7ZFME.js} +2 -2
- package/dist/cli/chunks/chunk-DBE34QES.js +2 -0
- package/dist/cli/chunks/chunk-DHE66JRR.js +12 -0
- package/dist/cli/chunks/{chunk-2BZFNEN2.js → chunk-DNLMZTE2.js} +1 -1
- package/dist/cli/chunks/{chunk-XLRQYLWW.js → chunk-DSE57A5N.js} +1 -1
- package/dist/cli/chunks/{chunk-SUSEVMZT.js → chunk-E25S5E2D.js} +1 -1
- package/dist/cli/chunks/{chunk-FEKY7T6Q.js → chunk-FAXVVLPL.js} +2 -2
- package/dist/cli/chunks/chunk-FRJLP7IB.js +2 -0
- package/dist/cli/chunks/{chunk-CS2KS7LP.js → chunk-FUIHWBVF.js} +1 -1
- package/dist/cli/chunks/{chunk-LNQIY6BP.js → chunk-GCMVJS5X.js} +2 -2
- package/dist/cli/chunks/{chunk-XT2V2322.js → chunk-GITD7SRQ.js} +2 -2
- package/dist/cli/chunks/{chunk-JJO7Y4H3.js → chunk-GK72GUHA.js} +3 -3
- package/dist/cli/chunks/{chunk-6EOS7KX2.js → chunk-GPLERTZU.js} +2 -2
- package/dist/cli/chunks/{chunk-2E5NQNSU.js → chunk-HW4ISY5B.js} +11 -11
- package/dist/cli/chunks/{chunk-HRO6OZQD.js → chunk-ICDXWIFZ.js} +1 -1
- package/dist/cli/chunks/{chunk-3NZLZHJI.js → chunk-J4BS6IWE.js} +1 -1
- package/dist/cli/chunks/{chunk-4VUPRTVX.js → chunk-JOVINE23.js} +2 -2
- package/dist/cli/chunks/chunk-JV7LX6OT.js +95 -0
- package/dist/cli/chunks/{chunk-6SVX4DJC.js → chunk-KBA7FBK3.js} +3 -3
- package/dist/cli/chunks/chunk-KDDZYXP4.js +2 -0
- package/dist/cli/chunks/{chunk-GAOJV3OX.js → chunk-KNVAAVHH.js} +2 -2
- package/dist/cli/chunks/{chunk-CWFB6BSA.js → chunk-KQTJ2YLI.js} +4 -4
- package/dist/cli/chunks/{chunk-FGA7VIFR.js → chunk-KTYUCZEM.js} +3 -3
- package/dist/cli/chunks/{chunk-RU5WAHB7.js → chunk-KZTO5EVM.js} +2 -2
- package/dist/cli/chunks/{chunk-IFNIIK34.js → chunk-KZUJBZ7B.js} +3 -3
- package/dist/cli/chunks/{chunk-GKNNSCLC.js → chunk-L5WZUPZF.js} +2 -2
- package/dist/cli/chunks/{chunk-MDUHYUHF.js → chunk-L5YEPSDU.js} +2 -2
- package/dist/cli/chunks/chunk-LCAA6H4J.js +2 -0
- package/dist/cli/chunks/{chunk-XRE2HCWG.js → chunk-LMMEUVE5.js} +1 -1
- package/dist/cli/chunks/{chunk-7VDBAVTY.js → chunk-MN742FIH.js} +2 -2
- package/dist/cli/chunks/chunk-MY4LMIG7.js +180 -0
- package/dist/cli/chunks/{chunk-WGMPEW2T.js → chunk-N3F3CX4V.js} +2 -2
- package/dist/cli/chunks/{chunk-YVA65UZL.js → chunk-NJY7ZA77.js} +1 -1
- package/dist/cli/chunks/{chunk-3IHG3WOY.js → chunk-NM6TIEJ3.js} +3 -3
- package/dist/cli/chunks/{chunk-KP5NUODU.js → chunk-NRCKGXJJ.js} +1 -1
- package/dist/cli/chunks/{chunk-3ADGXLTM.js → chunk-PFNFC43Q.js} +1 -1
- package/dist/cli/chunks/{chunk-4VBTXZRM.js → chunk-PJFLO37I.js} +2 -2
- package/dist/cli/chunks/{chunk-XIBDETCS.js → chunk-PNL5G6TE.js} +2 -2
- package/dist/cli/chunks/{chunk-AFLLQ5PP.js → chunk-Q4A72ZTV.js} +2 -2
- package/dist/cli/chunks/{chunk-EHDQJQ6Y.js → chunk-QEQTC4WQ.js} +5 -5
- package/dist/cli/chunks/{chunk-IAV2JMIX.js → chunk-QIH3E775.js} +2 -2
- package/dist/cli/chunks/{chunk-GRUUQAR6.js → chunk-QNBQBSAI.js} +2 -2
- package/dist/cli/chunks/{chunk-WIEC7VKK.js → chunk-QODE4LM6.js} +2 -2
- package/dist/cli/chunks/{chunk-HY6PMO5W.js → chunk-QPRVX4H2.js} +2 -2
- package/dist/cli/chunks/chunk-RC5CPXON.js +2 -0
- package/dist/cli/chunks/{chunk-TWUWL5EJ.js → chunk-RITN3XR4.js} +2 -2
- package/dist/cli/chunks/{chunk-WBQSXPBI.js → chunk-RJROC5M3.js} +2 -2
- package/dist/cli/chunks/chunk-RQGYJK7H.js +2 -0
- package/dist/cli/chunks/{chunk-XO6PVK2P.js → chunk-S3RDH5CI.js} +2 -2
- package/dist/cli/chunks/{chunk-3IUNFTIF.js → chunk-SCF7NRVE.js} +1 -1
- package/dist/cli/chunks/chunk-SDTVHR63.js +2 -0
- package/dist/cli/chunks/chunk-SGAW2WLI.js +65 -0
- package/dist/cli/chunks/{chunk-N2NS2PHA.js → chunk-SNVM4YJS.js} +2 -2
- package/dist/cli/chunks/{chunk-JXM26HEE.js → chunk-SRRFWTNF.js} +2 -2
- package/dist/cli/chunks/{chunk-UQHYFOBX.js → chunk-STE42EMB.js} +2 -2
- package/dist/cli/chunks/{chunk-WJ3DLOXF.js → chunk-T5GV6UIO.js} +2 -2
- package/dist/cli/chunks/{chunk-4YS3IJ45.js → chunk-TKF447CW.js} +1 -1
- package/dist/cli/chunks/{chunk-ZAPS3UGQ.js → chunk-TTOE336G.js} +3 -3
- package/dist/cli/chunks/{chunk-YAGODYIG.js → chunk-UKDOMLBI.js} +3 -3
- package/dist/cli/chunks/{chunk-JBANAPWG.js → chunk-V6XBAZNH.js} +1 -1
- package/dist/cli/chunks/{chunk-BULKFVYX.js → chunk-VHVWAXCF.js} +1 -1
- package/dist/cli/chunks/{chunk-5SKGFSKD.js → chunk-VL7YOOC2.js} +2 -2
- package/dist/cli/chunks/{chunk-AKE543X2.js → chunk-VUAO4VFC.js} +2 -2
- package/dist/cli/chunks/{chunk-7R6YMLVS.js → chunk-WG4GHAML.js} +2 -2
- package/dist/cli/chunks/{chunk-BTREG4IW.js → chunk-WXWY2GAF.js} +2 -2
- package/dist/cli/chunks/chunk-X35GP7TR.js +1 -0
- package/dist/cli/chunks/chunk-X6LCMOGC.js +2 -0
- package/dist/cli/chunks/{chunk-BGXNSCXX.js → chunk-XFMKJ3UD.js} +1 -1
- package/dist/cli/chunks/{chunk-BLBRY5UD.js → chunk-XH53ARZD.js} +2 -2
- package/dist/cli/chunks/chunk-XIBVVZGB.js +2 -0
- package/dist/cli/chunks/chunk-XYJL6DKI.js +2 -0
- package/dist/cli/chunks/{chunk-5T2ZQWKF.js → chunk-Y6O7CDLI.js} +2 -2
- package/dist/cli/chunks/{chunk-4I2IOUS4.js → chunk-YXCU4CJX.js} +1 -1
- package/dist/cli/chunks/{chunk-YR6ZZGH7.js → chunk-Z2IKNC5M.js} +1 -1
- package/dist/cli/chunks/{chunk-OLHKGP35.js → chunk-Z54EO6E6.js} +2 -2
- package/dist/cli/chunks/{chunk-ZDATDCYN.js → chunk-Z5HXGVXZ.js} +1 -1
- package/dist/cli/chunks/{ci-J374KDLI.js → ci-2BCOBWFG.js} +2 -2
- package/dist/cli/chunks/ci-output-FB4OJHAC.js +2 -0
- package/dist/cli/chunks/{claude-flow-setup-245JLJCN.js → claude-flow-setup-NEEFZTMB.js} +2 -2
- package/dist/cli/chunks/client-EF555KYW.js +2 -0
- package/dist/cli/chunks/{cline-installer-LBA2M5N3.js → cline-installer-ODO2PS4K.js} +2 -2
- package/dist/cli/chunks/{code-U4N4WONM.js → code-NSOF62VE.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-A57Z6BO4.js → code-index-extractor-YQL5XN52.js} +2 -2
- package/dist/cli/chunks/{codex-installer-UXMK2N4T.js → codex-installer-SPEY6VYT.js} +2 -2
- package/dist/cli/chunks/{completions-W66BSCOE.js → completions-OWKBUMBE.js} +2 -2
- package/dist/cli/chunks/complexity-analyzer-PGTXKP73.js +2 -0
- package/dist/cli/chunks/{continuedev-installer-LRFZ2SJM.js → continuedev-installer-KGOXAC7L.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-CQ3JYBIB.js → copilot-installer-BF3UA3TG.js} +2 -2
- package/dist/cli/chunks/cost-tracker-2HDJ66E2.js +2 -0
- package/dist/cli/chunks/{coverage-4PUEQXAY.js → coverage-KPA2PHIN.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-GXFNK5TS.js +2 -0
- package/dist/cli/chunks/{cursor-installer-JZEDEDHA.js → cursor-installer-7CDZFHTV.js} +2 -2
- package/dist/cli/chunks/{daemon-B7TWGHXQ.js → daemon-4BPGCKDJ.js} +3 -3
- package/dist/cli/chunks/dag-attention-scheduler-2MAVGSBB.js +2 -0
- package/dist/cli/chunks/detect-WRPWTGP5.js +2 -0
- package/dist/cli/chunks/{domain-handler-FT5FLZWL.js → domain-handler-JZVSJ7AG.js} +2 -2
- package/dist/cli/chunks/domain-transfer-XGIZOR2X.js +2 -0
- package/dist/cli/chunks/dream-3IKF5XH4.js +2 -0
- package/dist/cli/chunks/esm-node-DHAE52OW.js +2 -0
- package/dist/cli/chunks/{eval-GHMPFGWV.js → eval-T7YPAS4G.js} +2 -2
- package/dist/cli/chunks/{fast-paths-B3R647KN.js → fast-paths-QECJTKCQ.js} +2 -2
- package/dist/cli/chunks/{feature-flags-DWS7ARSX.js → feature-flags-LIFURSFZ.js} +2 -2
- package/dist/cli/chunks/feature-flags-R4QZYTIW.js +2 -0
- package/dist/cli/chunks/file-discovery-4W3K3W4C.js +2 -0
- package/dist/cli/chunks/{fleet-EKOKMOMW.js → fleet-NLLQWCI5.js} +3 -3
- package/dist/cli/chunks/gnn-wrapper-XEII72LN.js +2 -0
- package/dist/cli/chunks/{heartbeat-handler-MBBS4IBU.js → heartbeat-handler-DJ65RE5D.js} +4 -4
- package/dist/cli/chunks/{heartbeat-scheduler-XDGMOT7X.js → heartbeat-scheduler-H664265Q.js} +2 -2
- package/dist/cli/chunks/hnsw-adapter-DML5KXQR.js +2 -0
- package/dist/cli/chunks/hnsw-index-BUPPGVR6.js +2 -0
- package/dist/cli/chunks/hnsw-legacy-bridge-SQIDTWAA.js +2 -0
- package/dist/cli/chunks/hnswlib-node-WICYCU5U.js +2 -0
- package/dist/cli/chunks/{hooks-L5VLZGEK.js → hooks-GZUHUD63.js} +6 -6
- package/dist/cli/chunks/hypergraph-engine-MLCDZ6BL.js +2 -0
- package/dist/cli/chunks/{hypergraph-handler-3HDGB5SZ.js → hypergraph-handler-NNDDI4R3.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-DPTMJRYS.js +2 -0
- package/dist/cli/chunks/{init-handler-JDET6WUN.js → init-handler-IJ6BHE6A.js} +6 -6
- package/dist/cli/chunks/init-wizard-35PUDJPW.js +2 -0
- package/dist/cli/chunks/kernel-2HZ44ZJ4.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-GZZG5AFW.js → kilocode-installer-EPZFFPFE.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-IWNY5TKH.js → kiro-installer-5VACG3HU.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-JL62G72U.js +2 -0
- package/dist/cli/chunks/{learning-722ZNSZ6.js → learning-6FITK6XY.js} +3 -3
- package/dist/cli/chunks/{llm-router-DNAV746L.js → llm-router-4DDC6AKJ.js} +2 -2
- package/dist/cli/chunks/{load-Y3GCUFM4.js → load-KGDNVUBX.js} +2 -2
- package/dist/cli/chunks/load-test-LN245SSD.js +2 -0
- package/dist/cli/chunks/{mcp-LKPIBZ3W.js → mcp-4LETGVIV.js} +2 -2
- package/dist/cli/chunks/{memory-L57MLFOP.js → memory-II4I4QMO.js} +5 -5
- package/dist/cli/chunks/memory-backend-SVM7YRIE.js +2 -0
- package/dist/cli/chunks/memory-handlers-TQXTOJGQ.js +2 -0
- package/dist/cli/chunks/opencode-installer-EU6JCWBW.js +3 -0
- package/dist/cli/chunks/{orchestrator-QHSBB2UC.js → orchestrator-YLMGJVSP.js} +5 -5
- package/dist/cli/chunks/{pipeline-D3QER35Z.js → pipeline-MPZJWYKK.js} +2 -2
- package/dist/cli/chunks/{platform-T4E7Q3RD.js → platform-YH35ZZFZ.js} +2 -2
- package/dist/cli/chunks/{plugin-JHW2YPRC.js → plugin-B7JYZFNQ.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-G7CFNNQV.js → prime-radiant-advanced-wasm-KTUK6UE2.js} +2 -2
- package/dist/cli/chunks/protocol-executor-IEN2XB4L.js +2 -0
- package/dist/cli/chunks/{protocol-handler-2BQQ4HDM.js → protocol-handler-3NXMVU34.js} +2 -2
- package/dist/cli/chunks/{prove-UQ6JFT73.js → prove-H5LMGSUC.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-Q3ZV3JRG.js +2 -0
- package/dist/cli/chunks/{quality-JRZYMC77.js → quality-RCWHY6GO.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-E6ON3JUR.js +2 -0
- package/dist/cli/chunks/real-embeddings-NKH4VURF.js +2 -0
- package/dist/cli/chunks/{roocode-installer-F4E2LAYR.js → roocode-installer-SB7QJYM3.js} +2 -2
- package/dist/cli/chunks/router-WMC3LZ3C.js +2 -0
- package/dist/cli/chunks/routing-feedback-VKCZRCE3.js +2 -0
- package/dist/cli/chunks/{routing-handler-VNKFUUGB.js → routing-handler-SY7GKG2W.js} +2 -2
- package/dist/cli/chunks/ruvector-commands-HATTO3UQ.js +8 -0
- package/dist/cli/chunks/rvf-dual-writer-D57EXQUD.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-OWDYN6KD.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-SIQVJB5S.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-C7NBH5UN.js +2 -0
- package/dist/cli/chunks/safe-db-5KLXCNXN.js +2 -0
- package/dist/cli/chunks/schedule-HAWWOXWB.js +2 -0
- package/dist/cli/chunks/scheduler-HTRDY5BC.js +2 -0
- package/dist/cli/chunks/{security-EBEG2OPU.js → security-DS3XLZWN.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-6I2Z5UGL.js +2 -0
- package/dist/cli/chunks/shared-rvf-dual-writer-YB7AH6XJ.js +2 -0
- package/dist/cli/chunks/sqlite-persistence-WNNRGTGG.js +2 -0
- package/dist/cli/chunks/{status-handler-VZ32M4G4.js → status-handler-TUYHE4FT.js} +2 -2
- package/dist/cli/chunks/{structural-health-K6LRCKV6.js → structural-health-XNGBNRRD.js} +2 -2
- package/dist/cli/chunks/{sync-MHSHNLIM.js → sync-K6CIRKBB.js} +2 -2
- package/dist/cli/chunks/{task-handler-JNOIBZ2G.js → task-handler-7PJY67DR.js} +2 -2
- package/dist/cli/chunks/task-handlers-WB5CDWUR.js +2 -0
- package/dist/cli/chunks/{test-DO22BNIL.js → test-WV5ALEBB.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-VLRQZEFL.js → test-scheduling-N55ZGGA2.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-SINWHAKR.js +2 -0
- package/dist/cli/chunks/{token-usage-LG3PXRXH.js → token-usage-R7TGEVGL.js} +2 -2
- package/dist/cli/chunks/transformers-6DBLXPV7.js +2 -0
- package/dist/cli/chunks/{tree-sitter-wasm-parser-FT2KB66N.js → tree-sitter-wasm-parser-7C7FKMQW.js} +2 -2
- package/dist/cli/chunks/types-VNPMOKQT.js +2 -0
- package/dist/cli/chunks/unified-memory-72SKVZ7Y.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-TMN2L77W.js +2 -0
- package/dist/cli/chunks/unified-persistence-MDN3SRCR.js +2 -0
- package/dist/cli/chunks/{validate-VQCRSVNQ.js → validate-53MNIRAF.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-A5DHAWTP.js → validate-swarm-ZY4RGUFO.js} +2 -2
- package/dist/cli/chunks/{vibium-RZBSL4EB.js → vibium-PBADBIV6.js} +2 -2
- package/dist/cli/chunks/visual-security-TRBCXPIB.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-7C4NXEOF.js → web-tree-sitter-O7VI6RLB.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-ES3KPQG3.js → windsurf-installer-HV3C3TAD.js} +2 -2
- package/dist/cli/chunks/witness-chain-4WIMYP4X.js +2 -0
- package/dist/cli/chunks/witness-chain-JOI2YYGK.js +2 -0
- package/dist/cli/chunks/{workflow-JETHX4ML.js → workflow-5RVAQ4TM.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-2NQ72S3C.js +2 -0
- package/dist/cli/chunks/{wrappers-WP5RH745.js → wrappers-RRHCCA3E.js} +2 -2
- package/dist/cli/commands/ruvector-commands.js +14 -2
- package/dist/cli/index.js +10 -15
- package/dist/coordination/agent-memory-branch.d.ts +117 -0
- package/dist/coordination/agent-memory-branch.js +213 -0
- package/dist/coordination/agent-teams/mailbox.d.ts +43 -0
- package/dist/coordination/agent-teams/mailbox.js +130 -4
- package/dist/coordination/handlers/handler-utils.d.ts +1 -0
- package/dist/coordination/handlers/handler-utils.js +9 -2
- package/dist/coordination/handlers/quality-handlers.js +7 -1
- package/dist/domains/contract-testing/coordinator.js +11 -0
- package/dist/domains/quality-assessment/coherence/gate-controller.d.ts +20 -1
- package/dist/domains/quality-assessment/coherence/gate-controller.js +64 -0
- package/dist/domains/quality-assessment/coherence/index.d.ts +3 -3
- package/dist/domains/quality-assessment/coherence/index.js +2 -2
- package/dist/domains/quality-assessment/coherence/types.d.ts +39 -0
- package/dist/domains/quality-assessment/coherence/types.js +11 -0
- package/dist/domains/quality-assessment/coordinator.d.ts +14 -0
- package/dist/domains/quality-assessment/coordinator.js +92 -0
- package/dist/domains/test-execution/coordinator.d.ts +19 -0
- package/dist/domains/test-execution/coordinator.js +102 -5
- package/dist/domains/test-generation/coordinator.js +11 -0
- package/dist/domains/test-generation/interfaces.d.ts +2 -0
- package/dist/domains/test-generation/services/test-generator.d.ts +9 -0
- package/dist/domains/test-generation/services/test-generator.js +37 -0
- package/dist/init/agents-installer.d.ts +5 -3
- package/dist/init/agents-installer.js +17 -43
- package/dist/init/find-package-root.d.ts +22 -0
- package/dist/init/find-package-root.js +46 -0
- package/dist/init/n8n-installer.d.ts +4 -2
- package/dist/init/n8n-installer.js +23 -23
- package/dist/init/opencode-installer.d.ts +0 -5
- package/dist/init/opencode-installer.js +12 -39
- package/dist/init/skills-installer.d.ts +5 -2
- package/dist/init/skills-installer.js +15 -37
- package/dist/integrations/embeddings/index/HNSWIndex.d.ts +9 -2
- package/dist/integrations/embeddings/index/HNSWIndex.js +110 -35
- package/dist/integrations/ruvector/cognitive-routing.d.ts +67 -0
- package/dist/integrations/ruvector/cognitive-routing.js +208 -0
- package/dist/integrations/ruvector/feature-flags.d.ts +84 -0
- package/dist/integrations/ruvector/feature-flags.js +59 -0
- package/dist/integrations/ruvector/hdc-fingerprint.d.ts +76 -0
- package/dist/integrations/ruvector/hdc-fingerprint.js +217 -0
- package/dist/integrations/ruvector/hyperbolic-hnsw.d.ts +59 -0
- package/dist/integrations/ruvector/hyperbolic-hnsw.js +194 -0
- package/dist/integrations/ruvector/index.d.ts +5 -2
- package/dist/integrations/ruvector/index.js +13 -2
- package/dist/integrations/ruvector/shared-rvf-adapter.d.ts +24 -0
- package/dist/integrations/ruvector/shared-rvf-adapter.js +55 -0
- package/dist/integrations/ruvector/shared-rvf-dual-writer.d.ts +6 -0
- package/dist/integrations/ruvector/shared-rvf-dual-writer.js +38 -0
- package/dist/integrations/ruvector/sona-persistence.d.ts +8 -0
- package/dist/integrations/ruvector/sona-persistence.js +10 -0
- package/dist/integrations/ruvector/vector-delta-tracker.d.ts +96 -0
- package/dist/integrations/ruvector/vector-delta-tracker.js +226 -0
- package/dist/kernel/agent-coordinator.d.ts +75 -1
- package/dist/kernel/agent-coordinator.js +250 -1
- package/dist/kernel/hnsw-legacy-bridge.d.ts +38 -0
- package/dist/kernel/hnsw-legacy-bridge.js +88 -0
- package/dist/kernel/hnsw-shadow-validator.d.ts +91 -0
- package/dist/kernel/hnsw-shadow-validator.js +139 -0
- package/dist/kernel/index.d.ts +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/kernel/interfaces.d.ts +39 -0
- package/dist/kernel/kernel.d.ts +23 -0
- package/dist/kernel/kernel.js +106 -1
- package/dist/kernel/unified-memory.d.ts +1 -1
- package/dist/kernel/unified-memory.js +7 -3
- package/dist/learning/aqe-learning-engine.d.ts +65 -0
- package/dist/learning/aqe-learning-engine.js +134 -0
- package/dist/learning/dream/dream-engine.d.ts +6 -1
- package/dist/learning/dream/dream-engine.js +37 -2
- package/dist/learning/dream/dream-scheduler.d.ts +25 -0
- package/dist/learning/dream/dream-scheduler.js +120 -0
- package/dist/learning/dream/rvcow-branch-manager.d.ts +6 -3
- package/dist/learning/dream/rvcow-branch-manager.js +60 -5
- package/dist/learning/experience-capture.d.ts +3 -3
- package/dist/learning/hyperbolic-pattern-index.d.ts +82 -0
- package/dist/learning/hyperbolic-pattern-index.js +142 -0
- package/dist/learning/index.d.ts +3 -3
- package/dist/learning/index.js +1 -1
- package/dist/learning/metrics-tracker.d.ts +44 -0
- package/dist/learning/metrics-tracker.js +37 -0
- package/dist/learning/pattern-promotion.d.ts +3 -3
- package/dist/learning/pattern-store.d.ts +45 -2
- package/dist/learning/pattern-store.js +239 -4
- package/dist/learning/qe-patterns.d.ts +1 -1
- package/dist/learning/qe-reasoning-bank.js +1 -1
- package/dist/learning/rvf-pattern-migration.d.ts +50 -0
- package/dist/learning/rvf-pattern-migration.js +106 -0
- package/dist/learning/rvf-pattern-store.d.ts +69 -0
- package/dist/learning/rvf-pattern-store.js +449 -0
- package/dist/mcp/bundle.js +1894 -1804
- package/dist/mcp/handlers/index.d.ts +1 -0
- package/dist/mcp/handlers/index.js +2 -0
- package/dist/mcp/handlers/migration-handlers.d.ts +52 -0
- package/dist/mcp/handlers/migration-handlers.js +85 -0
- package/dist/mcp/protocol-server.d.ts +1 -0
- package/dist/mcp/protocol-server.js +63 -2
- package/dist/mcp/types.d.ts +1 -1
- package/dist/optimization/early-exit-token-optimizer.d.ts +7 -7
- package/dist/optimization/early-exit-token-optimizer.js +3 -3
- package/dist/persistence/rvf-consistency-validator.d.ts +85 -0
- package/dist/persistence/rvf-consistency-validator.js +182 -0
- package/dist/persistence/rvf-migration-adapter.d.ts +125 -0
- package/dist/persistence/rvf-migration-adapter.js +303 -0
- package/dist/persistence/rvf-migration-coordinator.d.ts +115 -0
- package/dist/persistence/rvf-migration-coordinator.js +224 -0
- package/dist/persistence/rvf-stage-gate.d.ts +70 -0
- package/dist/persistence/rvf-stage-gate.js +163 -0
- package/package.json +10 -10
- package/dist/cli/chunks/adapter-WBR5NXS3.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-TK4JQCGT.js +0 -2
- package/dist/cli/chunks/base-2WXOSMBQ.js +0 -2
- package/dist/cli/chunks/better-sqlite3-7KY2RDXO.js +0 -2
- package/dist/cli/chunks/brain-handler-PPEGDCN4.js +0 -68
- package/dist/cli/chunks/browser-workflow-42F7GK5T.js +0 -2
- package/dist/cli/chunks/chunk-263XS447.js +0 -2
- package/dist/cli/chunks/chunk-2I7J3O6V.js +0 -2
- package/dist/cli/chunks/chunk-3JPRUND5.js +0 -2
- package/dist/cli/chunks/chunk-3THRQEZ2.js +0 -95
- package/dist/cli/chunks/chunk-4B6NCELM.js +0 -2
- package/dist/cli/chunks/chunk-62ADTHV7.js +0 -2
- package/dist/cli/chunks/chunk-BR26T7ZS.js +0 -180
- package/dist/cli/chunks/chunk-DRT3WKQW.js +0 -2
- package/dist/cli/chunks/chunk-FIA6X7UL.js +0 -2
- package/dist/cli/chunks/chunk-J3KWWR6Z.js +0 -1
- package/dist/cli/chunks/chunk-JZSDOIXA.js +0 -2
- package/dist/cli/chunks/chunk-MV6CMOJQ.js +0 -65
- package/dist/cli/chunks/chunk-N5UXCLFI.js +0 -2
- package/dist/cli/chunks/chunk-OF4D7MYI.js +0 -2
- package/dist/cli/chunks/chunk-QOVHWZEP.js +0 -1
- package/dist/cli/chunks/chunk-RFSN6IDA.js +0 -79
- package/dist/cli/chunks/chunk-X5IJGWYG.js +0 -2
- package/dist/cli/chunks/ci-output-7JN7F6CI.js +0 -2
- package/dist/cli/chunks/client-MCSNSH2C.js +0 -2
- package/dist/cli/chunks/complexity-analyzer-AB4OZARV.js +0 -2
- package/dist/cli/chunks/cost-tracker-4F723RB6.js +0 -2
- package/dist/cli/chunks/cross-domain-router-OWR5IJ5G.js +0 -2
- package/dist/cli/chunks/dag-attention-scheduler-JWO6XI6A.js +0 -2
- package/dist/cli/chunks/detect-L6ZZHUSX.js +0 -2
- package/dist/cli/chunks/domain-transfer-5Y4FGJAJ.js +0 -2
- package/dist/cli/chunks/dream-4TDBIYED.js +0 -2
- package/dist/cli/chunks/esm-node-2PKHKOTS.js +0 -2
- package/dist/cli/chunks/feature-flags-IVQ3AL4Q.js +0 -2
- package/dist/cli/chunks/file-discovery-QFPA6GMV.js +0 -2
- package/dist/cli/chunks/gnn-wrapper-OYC55N5E.js +0 -2
- package/dist/cli/chunks/hnsw-index-YO7CT23I.js +0 -2
- package/dist/cli/chunks/hnswlib-node-56YWVXFE.js +0 -2
- package/dist/cli/chunks/hypergraph-engine-A4Y2ZRAG.js +0 -2
- package/dist/cli/chunks/impact-analyzer-UEIGXSZ4.js +0 -2
- package/dist/cli/chunks/init-wizard-JWZUGIPJ.js +0 -2
- package/dist/cli/chunks/kernel-YNDTVKIW.js +0 -2
- package/dist/cli/chunks/knowledge-graph-NGJKFTSN.js +0 -2
- package/dist/cli/chunks/load-test-GZUBXFF3.js +0 -2
- package/dist/cli/chunks/memory-backend-3NQIZUXE.js +0 -2
- package/dist/cli/chunks/memory-handlers-MDZQ7HVW.js +0 -2
- package/dist/cli/chunks/opencode-installer-4HUB36H5.js +0 -3
- package/dist/cli/chunks/protocol-executor-SPUVRDWT.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-3HBK2FVD.js +0 -2
- package/dist/cli/chunks/queen-coordinator-RW3NKO5A.js +0 -2
- package/dist/cli/chunks/real-embeddings-GK63VF35.js +0 -2
- package/dist/cli/chunks/router-RJGHWDQ3.js +0 -2
- package/dist/cli/chunks/routing-feedback-ZXBXFKX6.js +0 -2
- package/dist/cli/chunks/ruvector-commands-2TLNHC3A.js +0 -8
- package/dist/cli/chunks/rvf-dual-writer-MQW2SJLT.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-LKFKTMUN.js +0 -2
- package/dist/cli/chunks/safe-db-G22E5ROA.js +0 -2
- package/dist/cli/chunks/schedule-Y7VVCPYV.js +0 -2
- package/dist/cli/chunks/scheduler-AUQIFQB7.js +0 -2
- package/dist/cli/chunks/shared-rvf-dual-writer-BVSCQAFS.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-JAVHUGGL.js +0 -2
- package/dist/cli/chunks/task-handlers-P5DSUKND.js +0 -2
- package/dist/cli/chunks/token-bootstrap-4VJKGVMK.js +0 -2
- package/dist/cli/chunks/transformers-GY7SIKEU.js +0 -2
- package/dist/cli/chunks/types-QJGNBKP2.js +0 -2
- package/dist/cli/chunks/unified-memory-XYGENQUT.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-MVEGQBF3.js +0 -2
- package/dist/cli/chunks/unified-persistence-PFRCWEUG.js +0 -2
- package/dist/cli/chunks/visual-security-V47BLGJM.js +0 -2
- package/dist/cli/chunks/witness-chain-BR63P4A7.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-7PZMX3JZ.js +0 -2
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utility: find the agentic-qe package root directory.
|
|
3
|
+
*
|
|
4
|
+
* When esbuild bundles the CLI with code-splitting, `import.meta.url`
|
|
5
|
+
* resolves to `dist/cli/chunks/chunk-XXX.js` (3+ levels deep) instead
|
|
6
|
+
* of the expected `dist/init/skills-installer.js` (2 levels deep).
|
|
7
|
+
* Fixed `../../` traversals land at `dist/` instead of the package root,
|
|
8
|
+
* so skills/agents/helpers can't be found.
|
|
9
|
+
*
|
|
10
|
+
* This module walks up from the caller's directory until it finds a
|
|
11
|
+
* `package.json` with `name === "agentic-qe"`, which works regardless
|
|
12
|
+
* of how deep the bundle puts the calling file.
|
|
13
|
+
*/
|
|
14
|
+
import { existsSync, readFileSync } from 'fs';
|
|
15
|
+
import { join, dirname } from 'path';
|
|
16
|
+
import { fileURLToPath } from 'url';
|
|
17
|
+
/**
|
|
18
|
+
* Find the agentic-qe package root by walking up from `import.meta.url`.
|
|
19
|
+
*
|
|
20
|
+
* @param callerMetaUrl – pass `import.meta.url` from the calling module
|
|
21
|
+
* @param maxDepth – how many parent directories to check (default 10)
|
|
22
|
+
* @returns absolute path to the package root, or null if not found
|
|
23
|
+
*/
|
|
24
|
+
export function findPackageRoot(callerMetaUrl, maxDepth = 10) {
|
|
25
|
+
let dir = dirname(fileURLToPath(callerMetaUrl));
|
|
26
|
+
for (let i = 0; i < maxDepth; i++) {
|
|
27
|
+
const pkgPath = join(dir, 'package.json');
|
|
28
|
+
if (existsSync(pkgPath)) {
|
|
29
|
+
try {
|
|
30
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
31
|
+
if (pkg.name === 'agentic-qe') {
|
|
32
|
+
return dir;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Malformed JSON — keep walking
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const parent = dirname(dir);
|
|
40
|
+
if (parent === dir)
|
|
41
|
+
break; // filesystem root
|
|
42
|
+
dir = parent;
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=find-package-root.js.map
|
|
@@ -42,11 +42,13 @@ export declare class N8nInstaller {
|
|
|
42
42
|
private sourceSkillsDir;
|
|
43
43
|
constructor(options: N8nInstallerOptions);
|
|
44
44
|
/**
|
|
45
|
-
* Find the source n8n agents directory
|
|
45
|
+
* Find the source n8n agents directory.
|
|
46
|
+
* n8n agents live under .claude/agents/n8n/ in the package root.
|
|
46
47
|
*/
|
|
47
48
|
private findSourceAgentsDir;
|
|
48
49
|
/**
|
|
49
|
-
* Find the source skills directory
|
|
50
|
+
* Find the source skills directory.
|
|
51
|
+
* Skills are in assets/skills/ (canonical npm source).
|
|
50
52
|
*/
|
|
51
53
|
private findSourceSkillsDir;
|
|
52
54
|
/**
|
|
@@ -6,12 +6,9 @@
|
|
|
6
6
|
* Copies agent definitions from .claude/agents/n8n/ and installs n8n-specific skills.
|
|
7
7
|
*/
|
|
8
8
|
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, copyFileSync, } from 'fs';
|
|
9
|
-
import { join
|
|
10
|
-
import { fileURLToPath } from 'url';
|
|
9
|
+
import { join } from 'path';
|
|
11
10
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
12
|
-
|
|
13
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
-
const __dirname = dirname(__filename);
|
|
11
|
+
import { findPackageRoot } from './find-package-root.js';
|
|
15
12
|
// ============================================================================
|
|
16
13
|
// N8n Agent Categories
|
|
17
14
|
// ============================================================================
|
|
@@ -78,40 +75,43 @@ export class N8nInstaller {
|
|
|
78
75
|
// Source Directory Detection
|
|
79
76
|
// ==========================================================================
|
|
80
77
|
/**
|
|
81
|
-
* Find the source n8n agents directory
|
|
78
|
+
* Find the source n8n agents directory.
|
|
79
|
+
* n8n agents live under .claude/agents/n8n/ in the package root.
|
|
82
80
|
*/
|
|
83
81
|
findSourceAgentsDir() {
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
];
|
|
82
|
+
const pkgRoot = findPackageRoot(import.meta.url);
|
|
83
|
+
const possiblePaths = [];
|
|
84
|
+
if (pkgRoot) {
|
|
85
|
+
possiblePaths.push(join(pkgRoot, '.claude/agents/n8n'));
|
|
86
|
+
}
|
|
87
|
+
// Local install: in node_modules
|
|
88
|
+
possiblePaths.push(join(this.projectRoot, 'node_modules/agentic-qe/.claude/agents/n8n'));
|
|
92
89
|
for (const path of possiblePaths) {
|
|
93
90
|
if (existsSync(path)) {
|
|
94
91
|
return path;
|
|
95
92
|
}
|
|
96
93
|
}
|
|
97
|
-
|
|
98
|
-
return join(process.cwd(), '.claude/agents/n8n');
|
|
94
|
+
return possiblePaths[0];
|
|
99
95
|
}
|
|
100
96
|
/**
|
|
101
|
-
* Find the source skills directory
|
|
97
|
+
* Find the source skills directory.
|
|
98
|
+
* Skills are in assets/skills/ (canonical npm source).
|
|
102
99
|
*/
|
|
103
100
|
findSourceSkillsDir() {
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
join(
|
|
108
|
-
|
|
101
|
+
const pkgRoot = findPackageRoot(import.meta.url);
|
|
102
|
+
const possiblePaths = [];
|
|
103
|
+
if (pkgRoot) {
|
|
104
|
+
possiblePaths.push(join(pkgRoot, 'assets/skills'));
|
|
105
|
+
possiblePaths.push(join(pkgRoot, '.claude/skills'));
|
|
106
|
+
}
|
|
107
|
+
// Local install: in node_modules
|
|
108
|
+
possiblePaths.push(join(this.projectRoot, 'node_modules/agentic-qe/assets/skills'));
|
|
109
109
|
for (const path of possiblePaths) {
|
|
110
110
|
if (existsSync(path)) {
|
|
111
111
|
return path;
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
return
|
|
114
|
+
return possiblePaths[0];
|
|
115
115
|
}
|
|
116
116
|
// ==========================================================================
|
|
117
117
|
// Installation
|
|
@@ -37,11 +37,6 @@ export declare class OpenCodeInstaller {
|
|
|
37
37
|
* globally-installed and bundled CLI paths all work correctly (#361).
|
|
38
38
|
*/
|
|
39
39
|
private findSourceDir;
|
|
40
|
-
/**
|
|
41
|
-
* Try to find the package root via require.resolve on our own package.json,
|
|
42
|
-
* then return <root>/.opencode. Returns null if resolution fails.
|
|
43
|
-
*/
|
|
44
|
-
private resolveViaPackageJson;
|
|
45
40
|
/**
|
|
46
41
|
* Check if a directory is a valid source for OpenCode assets
|
|
47
42
|
* (must exist and contain at least an agents/ or skills/ subdirectory)
|
|
@@ -5,13 +5,10 @@
|
|
|
5
5
|
* Installs OpenCode agents, skills, tools, and permissions to user projects
|
|
6
6
|
* when --with-opencode flag is used. Follows the N8n installer pattern.
|
|
7
7
|
*/
|
|
8
|
-
import { existsSync, mkdirSync, readdirSync,
|
|
9
|
-
import { join
|
|
10
|
-
import { fileURLToPath } from 'url';
|
|
8
|
+
import { existsSync, mkdirSync, readdirSync, writeFileSync, copyFileSync, } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
11
10
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
12
|
-
|
|
13
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
-
const __dirname = dirname(__filename);
|
|
11
|
+
import { findPackageRoot } from './find-package-root.js';
|
|
15
12
|
// ============================================================================
|
|
16
13
|
// OpenCode Installer Class
|
|
17
14
|
// ============================================================================
|
|
@@ -40,14 +37,14 @@ export class OpenCodeInstaller {
|
|
|
40
37
|
*/
|
|
41
38
|
findSourceDir() {
|
|
42
39
|
const targetDir = join(this.projectRoot, '.opencode');
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
//
|
|
47
|
-
join(
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
const pkgRoot = findPackageRoot(import.meta.url);
|
|
41
|
+
const possiblePaths = [];
|
|
42
|
+
if (pkgRoot) {
|
|
43
|
+
// OpenCode assets live at the package root .opencode/ directory
|
|
44
|
+
possiblePaths.push(join(pkgRoot, '.opencode'));
|
|
45
|
+
}
|
|
46
|
+
// Local install: in node_modules
|
|
47
|
+
possiblePaths.push(join(this.projectRoot, 'node_modules/agentic-qe/.opencode'));
|
|
51
48
|
for (const path of possiblePaths) {
|
|
52
49
|
// Never use the target directory as the source
|
|
53
50
|
if (path === targetDir)
|
|
@@ -57,31 +54,7 @@ export class OpenCodeInstaller {
|
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
56
|
// Return the first package path even if not found — install() will report the error
|
|
60
|
-
return possiblePaths[0] ?? join(
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Try to find the package root via require.resolve on our own package.json,
|
|
64
|
-
* then return <root>/.opencode. Returns null if resolution fails.
|
|
65
|
-
*/
|
|
66
|
-
resolveViaPackageJson() {
|
|
67
|
-
try {
|
|
68
|
-
// Walk up from __dirname to find the nearest package.json with our name
|
|
69
|
-
let dir = __dirname;
|
|
70
|
-
for (let i = 0; i < 5; i++) {
|
|
71
|
-
const pkgPath = join(dir, 'package.json');
|
|
72
|
-
if (existsSync(pkgPath)) {
|
|
73
|
-
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
74
|
-
if (pkg.name === 'agentic-qe') {
|
|
75
|
-
return join(dir, '.opencode');
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
dir = dirname(dir);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// resolution failed
|
|
83
|
-
}
|
|
84
|
-
return null;
|
|
57
|
+
return possiblePaths[0] ?? join(this.projectRoot, 'node_modules/agentic-qe/.opencode');
|
|
85
58
|
}
|
|
86
59
|
/**
|
|
87
60
|
* Check if a directory is a valid source for OpenCode assets
|
|
@@ -40,8 +40,11 @@ export declare class SkillsInstaller {
|
|
|
40
40
|
private sourceSkillsDir;
|
|
41
41
|
constructor(options: SkillsInstallerOptions);
|
|
42
42
|
/**
|
|
43
|
-
* Find the source skills directory
|
|
44
|
-
*
|
|
43
|
+
* Find the source skills directory.
|
|
44
|
+
*
|
|
45
|
+
* Uses findPackageRoot() to reliably locate the package root regardless
|
|
46
|
+
* of esbuild bundle depth (dist/init/, dist/cli/, dist/cli/chunks/, etc.).
|
|
47
|
+
* Prioritises assets/skills/ (canonical npm source) over .claude/skills/.
|
|
45
48
|
*/
|
|
46
49
|
private findSourceSkillsDir;
|
|
47
50
|
/**
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* Skills are copied from the bundled skills directory to the project's .claude/skills/.
|
|
7
7
|
*/
|
|
8
8
|
import { existsSync, mkdirSync, readdirSync, statSync, readFileSync, writeFileSync, copyFileSync, unlinkSync, rmdirSync } from 'fs';
|
|
9
|
-
import { join
|
|
10
|
-
import { fileURLToPath } from 'url';
|
|
9
|
+
import { join } from 'path';
|
|
11
10
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
11
|
+
import { findPackageRoot } from './find-package-root.js';
|
|
12
12
|
// ============================================================================
|
|
13
13
|
// Skill Categories (QE Skills Only - Claude Flow skills are managed separately)
|
|
14
14
|
// ============================================================================
|
|
@@ -135,44 +135,22 @@ export class SkillsInstaller {
|
|
|
135
135
|
this.sourceSkillsDir = this.findSourceSkillsDir();
|
|
136
136
|
}
|
|
137
137
|
/**
|
|
138
|
-
* Find the source skills directory
|
|
139
|
-
*
|
|
138
|
+
* Find the source skills directory.
|
|
139
|
+
*
|
|
140
|
+
* Uses findPackageRoot() to reliably locate the package root regardless
|
|
141
|
+
* of esbuild bundle depth (dist/init/, dist/cli/, dist/cli/chunks/, etc.).
|
|
142
|
+
* Prioritises assets/skills/ (canonical npm source) over .claude/skills/.
|
|
140
143
|
*/
|
|
141
144
|
findSourceSkillsDir() {
|
|
142
|
-
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
join(
|
|
148
|
-
// NPM package: assets directory at package root (dist/init -> dist -> package root)
|
|
149
|
-
join(moduleDir, '../../assets/skills'),
|
|
150
|
-
// Local install: in node_modules
|
|
151
|
-
join(this.projectRoot, 'node_modules/agentic-qe/assets/skills'),
|
|
152
|
-
join(this.projectRoot, 'node_modules/agentic-qe/assets/skills'),
|
|
153
|
-
];
|
|
154
|
-
// For global npm installs, add common global node_modules paths
|
|
155
|
-
// Note: We use platform-based heuristics instead of npm prefix lookup
|
|
156
|
-
// to avoid dynamic require issues in ESM bundles
|
|
157
|
-
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
158
|
-
const isWindows = process.platform === 'win32';
|
|
159
|
-
if (isWindows) {
|
|
160
|
-
// Windows: npm global is typically in AppData
|
|
161
|
-
const appData = process.env.APPDATA || join(homeDir, 'AppData', 'Roaming');
|
|
162
|
-
possiblePaths.push(join(appData, 'npm/node_modules/agentic-qe/assets/skills'), join(appData, 'npm/node_modules/agentic-qe/.claude/skills'));
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
// Unix/Linux/macOS: common global prefixes
|
|
166
|
-
const globalPrefixes = [
|
|
167
|
-
'/usr/local',
|
|
168
|
-
'/usr',
|
|
169
|
-
join(homeDir, '.npm-global'),
|
|
170
|
-
join(homeDir, '.nvm/versions/node', process.version),
|
|
171
|
-
];
|
|
172
|
-
for (const prefix of globalPrefixes) {
|
|
173
|
-
possiblePaths.push(join(prefix, 'lib/node_modules/agentic-qe/assets/skills'), join(prefix, 'lib/node_modules/agentic-qe/.claude/skills'), join(prefix, 'node_modules/agentic-qe/assets/skills'), join(prefix, 'node_modules/agentic-qe/.claude/skills'));
|
|
174
|
-
}
|
|
145
|
+
const pkgRoot = findPackageRoot(import.meta.url);
|
|
146
|
+
const possiblePaths = [];
|
|
147
|
+
if (pkgRoot) {
|
|
148
|
+
// Canonical npm source — assets/ is never a dotfile, always extracted
|
|
149
|
+
possiblePaths.push(join(pkgRoot, 'assets/skills'));
|
|
150
|
+
possiblePaths.push(join(pkgRoot, '.claude/skills'));
|
|
175
151
|
}
|
|
152
|
+
// Local install: in node_modules
|
|
153
|
+
possiblePaths.push(join(this.projectRoot, 'node_modules/agentic-qe/assets/skills'));
|
|
176
154
|
for (const skillsPath of possiblePaths) {
|
|
177
155
|
if (existsSync(skillsPath)) {
|
|
178
156
|
return skillsPath;
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* Shared HNSW indexing between QE and claude-flow per ADR-040.
|
|
5
5
|
* Performance: 150x-12,500x faster than linear search
|
|
6
6
|
*
|
|
7
|
+
* When useUnifiedHnsw feature flag is enabled (ADR-071), all namespaces
|
|
8
|
+
* are routed through the unified HnswAdapter backend instead of hnswlib-node.
|
|
9
|
+
*
|
|
7
10
|
* @module integrations/embeddings/index/HNSWIndex
|
|
8
11
|
*/
|
|
9
12
|
import type { IEmbedding, IHNSWConfig, EmbeddingNamespace, ISearchOptions } from '../base/types.js';
|
|
@@ -18,6 +21,8 @@ export declare class HNSWEmbeddingIndex {
|
|
|
18
21
|
private config;
|
|
19
22
|
private initialized;
|
|
20
23
|
private nextId;
|
|
24
|
+
private unifiedAdapters;
|
|
25
|
+
private readonly useUnified;
|
|
21
26
|
constructor(config?: Partial<IHNSWConfig>);
|
|
22
27
|
/**
|
|
23
28
|
* Initialize index for a namespace
|
|
@@ -51,11 +56,13 @@ export declare class HNSWEmbeddingIndex {
|
|
|
51
56
|
metric: string;
|
|
52
57
|
} | null;
|
|
53
58
|
/**
|
|
54
|
-
* Save index to file
|
|
59
|
+
* Save index to file.
|
|
60
|
+
* Not supported when using unified backend (HnswAdapter manages persistence).
|
|
55
61
|
*/
|
|
56
62
|
saveIndex(namespace: EmbeddingNamespace, path: string): Promise<void>;
|
|
57
63
|
/**
|
|
58
|
-
* Load index from file
|
|
64
|
+
* Load index from file.
|
|
65
|
+
* Not supported when using unified backend (HnswAdapter manages persistence).
|
|
59
66
|
*/
|
|
60
67
|
loadIndex(namespace: EmbeddingNamespace, path: string): Promise<void>;
|
|
61
68
|
/**
|
|
@@ -4,12 +4,21 @@
|
|
|
4
4
|
* Shared HNSW indexing between QE and claude-flow per ADR-040.
|
|
5
5
|
* Performance: 150x-12,500x faster than linear search
|
|
6
6
|
*
|
|
7
|
+
* When useUnifiedHnsw feature flag is enabled (ADR-071), all namespaces
|
|
8
|
+
* are routed through the unified HnswAdapter backend instead of hnswlib-node.
|
|
9
|
+
*
|
|
7
10
|
* @module integrations/embeddings/index/HNSWIndex
|
|
8
11
|
*/
|
|
9
12
|
// ESM/CJS interop: hnswlib-node is CommonJS, we import via default export
|
|
10
13
|
// This pattern matches real-qe-reasoning-bank.ts for consistency
|
|
11
14
|
import hnswlib from 'hnswlib-node';
|
|
12
15
|
const { HierarchicalNSW } = hnswlib;
|
|
16
|
+
// ADR-071 Phase 2C: Always use unified HnswAdapter backend.
|
|
17
|
+
// The hnswlib-node legacy path below is retained as dead code for
|
|
18
|
+
// emergency rollback only — production always takes the adapter path.
|
|
19
|
+
function isUnifiedHnswActive() {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
13
22
|
/**
|
|
14
23
|
* HNSW index manager
|
|
15
24
|
*
|
|
@@ -21,6 +30,9 @@ export class HNSWEmbeddingIndex {
|
|
|
21
30
|
config;
|
|
22
31
|
initialized;
|
|
23
32
|
nextId;
|
|
33
|
+
// ADR-071: Unified backend adapters per namespace (when useUnifiedHnsw=true)
|
|
34
|
+
unifiedAdapters = null;
|
|
35
|
+
useUnified;
|
|
24
36
|
constructor(config = {}) {
|
|
25
37
|
this.config = {
|
|
26
38
|
M: config.M || 16,
|
|
@@ -33,6 +45,10 @@ export class HNSWEmbeddingIndex {
|
|
|
33
45
|
this.indexes = new Map();
|
|
34
46
|
this.initialized = new Set();
|
|
35
47
|
this.nextId = new Map();
|
|
48
|
+
this.useUnified = isUnifiedHnswActive();
|
|
49
|
+
if (this.useUnified) {
|
|
50
|
+
this.unifiedAdapters = new Map();
|
|
51
|
+
}
|
|
36
52
|
}
|
|
37
53
|
/**
|
|
38
54
|
* Initialize index for a namespace
|
|
@@ -41,6 +57,28 @@ export class HNSWEmbeddingIndex {
|
|
|
41
57
|
if (this.initialized.has(namespace)) {
|
|
42
58
|
return;
|
|
43
59
|
}
|
|
60
|
+
// ADR-071: Route through unified HnswAdapter when flag is enabled
|
|
61
|
+
if (this.useUnified && this.unifiedAdapters) {
|
|
62
|
+
try {
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
64
|
+
const { HnswAdapter } = require('../../../kernel/hnsw-adapter.js');
|
|
65
|
+
const adapter = new HnswAdapter(`embedding-${namespace}`, {
|
|
66
|
+
dimensions: this.config.dimension,
|
|
67
|
+
M: this.config.M,
|
|
68
|
+
efConstruction: this.config.efConstruction,
|
|
69
|
+
efSearch: this.config.efSearch,
|
|
70
|
+
metric: this.config.metric === 'dotproduct' ? 'cosine' : this.config.metric,
|
|
71
|
+
});
|
|
72
|
+
this.unifiedAdapters.set(namespace, adapter);
|
|
73
|
+
this.initialized.add(namespace);
|
|
74
|
+
this.nextId.set(namespace, 0);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Fall through to hnswlib-node
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Legacy path: hnswlib-node
|
|
44
82
|
// Map our metric names to hnswlib-node space names
|
|
45
83
|
const spaceMap = {
|
|
46
84
|
'cosine': 'cosine',
|
|
@@ -66,14 +104,23 @@ export class HNSWEmbeddingIndex {
|
|
|
66
104
|
if (!this.initialized.has(namespace)) {
|
|
67
105
|
this.initializeIndex(namespace);
|
|
68
106
|
}
|
|
69
|
-
const index = this.indexes.get(namespace);
|
|
70
|
-
// Convert vector to float array
|
|
71
|
-
const vector = this.toFloatArray(embedding.vector);
|
|
72
107
|
// Use provided ID or auto-increment
|
|
73
108
|
const actualId = id ?? this.nextId.get(namespace);
|
|
74
109
|
if (id === undefined) {
|
|
75
110
|
this.nextId.set(namespace, actualId + 1);
|
|
76
111
|
}
|
|
112
|
+
// ADR-071: Route through unified backend
|
|
113
|
+
const adapter = this.unifiedAdapters?.get(namespace);
|
|
114
|
+
if (adapter) {
|
|
115
|
+
const vector = embedding.vector instanceof Float32Array
|
|
116
|
+
? embedding.vector
|
|
117
|
+
: new Float32Array(this.toFloatArray(embedding.vector));
|
|
118
|
+
adapter.add(actualId, vector);
|
|
119
|
+
return actualId;
|
|
120
|
+
}
|
|
121
|
+
// Legacy path
|
|
122
|
+
const index = this.indexes.get(namespace);
|
|
123
|
+
const vector = this.toFloatArray(embedding.vector);
|
|
77
124
|
index.addPoint(vector, actualId);
|
|
78
125
|
return actualId;
|
|
79
126
|
}
|
|
@@ -81,33 +128,8 @@ export class HNSWEmbeddingIndex {
|
|
|
81
128
|
* Add multiple embeddings to index
|
|
82
129
|
*/
|
|
83
130
|
addEmbeddingsBatch(embeddings) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const byNamespace = new Map();
|
|
87
|
-
for (const item of embeddings) {
|
|
88
|
-
const ns = item.embedding.namespace;
|
|
89
|
-
if (!byNamespace.has(ns)) {
|
|
90
|
-
byNamespace.set(ns, []);
|
|
91
|
-
}
|
|
92
|
-
byNamespace.get(ns).push(item);
|
|
93
|
-
}
|
|
94
|
-
// Add to each namespace's index
|
|
95
|
-
for (const [namespace, items] of byNamespace.entries()) {
|
|
96
|
-
if (!this.initialized.has(namespace)) {
|
|
97
|
-
this.initializeIndex(namespace);
|
|
98
|
-
}
|
|
99
|
-
const index = this.indexes.get(namespace);
|
|
100
|
-
for (const item of items) {
|
|
101
|
-
const vector = this.toFloatArray(item.embedding.vector);
|
|
102
|
-
const actualId = item.id ?? this.nextId.get(namespace);
|
|
103
|
-
if (item.id === undefined) {
|
|
104
|
-
this.nextId.set(namespace, actualId + 1);
|
|
105
|
-
}
|
|
106
|
-
index.addPoint(vector, actualId);
|
|
107
|
-
ids.push(actualId);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return ids;
|
|
131
|
+
// ADR-071: Route each item through addEmbedding() which handles unified routing
|
|
132
|
+
return embeddings.map(item => this.addEmbedding(item.embedding, item.id));
|
|
111
133
|
}
|
|
112
134
|
/**
|
|
113
135
|
* Search for similar embeddings
|
|
@@ -117,11 +139,22 @@ export class HNSWEmbeddingIndex {
|
|
|
117
139
|
if (!this.initialized.has(namespace)) {
|
|
118
140
|
return [];
|
|
119
141
|
}
|
|
120
|
-
const index = this.indexes.get(namespace);
|
|
121
142
|
const k = options.limit || 10;
|
|
122
|
-
//
|
|
143
|
+
// ADR-071: Route through unified backend
|
|
144
|
+
const adapter = this.unifiedAdapters?.get(namespace);
|
|
145
|
+
if (adapter) {
|
|
146
|
+
const queryVector = query.vector instanceof Float32Array
|
|
147
|
+
? query.vector
|
|
148
|
+
: new Float32Array(this.toFloatArray(query.vector));
|
|
149
|
+
const results = adapter.search(queryVector, k);
|
|
150
|
+
return results.map(r => ({
|
|
151
|
+
id: r.id,
|
|
152
|
+
distance: 1 - r.score, // convert similarity to distance
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
// Legacy path
|
|
156
|
+
const index = this.indexes.get(namespace);
|
|
123
157
|
const queryVector = this.toFloatArray(query.vector);
|
|
124
|
-
// Search
|
|
125
158
|
const result = index.searchKnn(queryVector, k);
|
|
126
159
|
// Convert hnswlib-node result format to our format
|
|
127
160
|
return result.neighbors.map((id, i) => ({
|
|
@@ -136,6 +169,16 @@ export class HNSWEmbeddingIndex {
|
|
|
136
169
|
if (!this.initialized.has(namespace)) {
|
|
137
170
|
return null;
|
|
138
171
|
}
|
|
172
|
+
// ADR-071: Use unified adapter stats
|
|
173
|
+
const adapter = this.unifiedAdapters?.get(namespace);
|
|
174
|
+
if (adapter) {
|
|
175
|
+
return {
|
|
176
|
+
size: adapter.size(),
|
|
177
|
+
maxElements: 10000,
|
|
178
|
+
dimension: adapter.dimensions(),
|
|
179
|
+
metric: this.config.metric,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
139
182
|
const index = this.indexes.get(namespace);
|
|
140
183
|
return {
|
|
141
184
|
size: index.getCurrentCount(), // Note: This may not be available in all versions
|
|
@@ -145,19 +188,33 @@ export class HNSWEmbeddingIndex {
|
|
|
145
188
|
};
|
|
146
189
|
}
|
|
147
190
|
/**
|
|
148
|
-
* Save index to file
|
|
191
|
+
* Save index to file.
|
|
192
|
+
* Not supported when using unified backend (HnswAdapter manages persistence).
|
|
149
193
|
*/
|
|
150
194
|
async saveIndex(namespace, path) {
|
|
151
195
|
if (!this.initialized.has(namespace)) {
|
|
152
196
|
throw new Error(`Namespace ${namespace} not initialized`);
|
|
153
197
|
}
|
|
198
|
+
// ADR-071: Unified backend manages its own persistence
|
|
199
|
+
if (this.unifiedAdapters?.has(namespace)) {
|
|
200
|
+
console.warn(`[HNSWEmbeddingIndex] saveIndex() is a no-op for namespace '${namespace}' — ` +
|
|
201
|
+
`unified HnswAdapter manages persistence internally.`);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
154
204
|
const index = this.indexes.get(namespace);
|
|
155
205
|
await index.writeIndex(path);
|
|
156
206
|
}
|
|
157
207
|
/**
|
|
158
|
-
* Load index from file
|
|
208
|
+
* Load index from file.
|
|
209
|
+
* Not supported when using unified backend (HnswAdapter manages persistence).
|
|
159
210
|
*/
|
|
160
211
|
async loadIndex(namespace, path) {
|
|
212
|
+
// ADR-071: Unified backend manages its own persistence
|
|
213
|
+
if (this.useUnified) {
|
|
214
|
+
console.warn(`[HNSWEmbeddingIndex] loadIndex() is a no-op for namespace '${namespace}' — ` +
|
|
215
|
+
`unified HnswAdapter manages persistence internally. Initialize via initializeIndex() instead.`);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
161
218
|
const spaceMap = {
|
|
162
219
|
'cosine': 'cosine',
|
|
163
220
|
'euclidean': 'l2',
|
|
@@ -174,6 +231,12 @@ export class HNSWEmbeddingIndex {
|
|
|
174
231
|
*/
|
|
175
232
|
clearIndex(namespace) {
|
|
176
233
|
if (this.initialized.has(namespace)) {
|
|
234
|
+
// ADR-071: Clear unified adapter if present
|
|
235
|
+
const adapter = this.unifiedAdapters?.get(namespace);
|
|
236
|
+
if (adapter) {
|
|
237
|
+
adapter.clear?.();
|
|
238
|
+
this.unifiedAdapters.delete(namespace);
|
|
239
|
+
}
|
|
177
240
|
this.indexes.delete(namespace);
|
|
178
241
|
this.initialized.delete(namespace);
|
|
179
242
|
this.nextId.delete(namespace);
|
|
@@ -183,6 +246,13 @@ export class HNSWEmbeddingIndex {
|
|
|
183
246
|
* Clear all indexes
|
|
184
247
|
*/
|
|
185
248
|
clearAll() {
|
|
249
|
+
// ADR-071: Clear all unified adapters
|
|
250
|
+
if (this.unifiedAdapters) {
|
|
251
|
+
for (const adapter of this.unifiedAdapters.values()) {
|
|
252
|
+
adapter.clear?.();
|
|
253
|
+
}
|
|
254
|
+
this.unifiedAdapters.clear();
|
|
255
|
+
}
|
|
186
256
|
this.indexes.clear();
|
|
187
257
|
this.initialized.clear();
|
|
188
258
|
this.nextId.clear();
|
|
@@ -263,6 +333,11 @@ export class HNSWEmbeddingIndex {
|
|
|
263
333
|
if (!this.initialized.has(namespace)) {
|
|
264
334
|
return 0;
|
|
265
335
|
}
|
|
336
|
+
// ADR-071: Use unified adapter size when available
|
|
337
|
+
const adapter = this.unifiedAdapters?.get(namespace);
|
|
338
|
+
if (adapter) {
|
|
339
|
+
return adapter.size();
|
|
340
|
+
}
|
|
266
341
|
return this.nextId.get(namespace) || 0;
|
|
267
342
|
}
|
|
268
343
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export interface CognitiveRoutingConfig {
|
|
2
|
+
predictionWindowSize: number;
|
|
3
|
+
compressionThreshold: number;
|
|
4
|
+
maxConcurrentStreams: number;
|
|
5
|
+
oscillationFrequencyMs: number;
|
|
6
|
+
}
|
|
7
|
+
export interface RoutedMessage {
|
|
8
|
+
streamId: string;
|
|
9
|
+
senderId: string;
|
|
10
|
+
receiverId: string;
|
|
11
|
+
payload: unknown;
|
|
12
|
+
compressed: boolean;
|
|
13
|
+
originalSize: number;
|
|
14
|
+
compressedSize: number;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
}
|
|
17
|
+
export interface RoutingStats {
|
|
18
|
+
totalMessages: number;
|
|
19
|
+
compressedMessages: number;
|
|
20
|
+
bandwidthSavedBytes: number;
|
|
21
|
+
bandwidthReductionPercent: number;
|
|
22
|
+
activeStreams: number;
|
|
23
|
+
}
|
|
24
|
+
/** Sliding-window predictor: predicts next payload as copy of last seen. */
|
|
25
|
+
export declare class MessagePredictor {
|
|
26
|
+
private readonly windowSize;
|
|
27
|
+
private readonly windows;
|
|
28
|
+
constructor(windowSize: number);
|
|
29
|
+
predict(streamId: string): Record<string, unknown> | null;
|
|
30
|
+
record(streamId: string, payload: unknown): void;
|
|
31
|
+
removeStream(streamId: string): void;
|
|
32
|
+
}
|
|
33
|
+
/** Round-robin multiplexer for concurrent message streams. */
|
|
34
|
+
export declare class OscillatoryRouter {
|
|
35
|
+
private readonly maxStreams;
|
|
36
|
+
readonly cycleMs: number;
|
|
37
|
+
private readonly streamIds;
|
|
38
|
+
private currentIndex;
|
|
39
|
+
constructor(maxStreams: number, cycleMs: number);
|
|
40
|
+
addStream(streamId: string): boolean;
|
|
41
|
+
removeStream(streamId: string): boolean;
|
|
42
|
+
nextStream(): string | null;
|
|
43
|
+
getActiveStreams(): string[];
|
|
44
|
+
get activeCount(): number;
|
|
45
|
+
}
|
|
46
|
+
/** Combines MessagePredictor + OscillatoryRouter for bandwidth-efficient routing. */
|
|
47
|
+
export declare class CognitiveRouter {
|
|
48
|
+
private readonly config;
|
|
49
|
+
private readonly predictor;
|
|
50
|
+
private readonly router;
|
|
51
|
+
private readonly lastPayloads;
|
|
52
|
+
private totalMessages;
|
|
53
|
+
private compressedMessages;
|
|
54
|
+
private totalOriginalBytes;
|
|
55
|
+
private totalCompressedBytes;
|
|
56
|
+
constructor(config?: Partial<CognitiveRoutingConfig>);
|
|
57
|
+
send(streamId: string, senderId: string, receiverId: string, payload: unknown): RoutedMessage;
|
|
58
|
+
receive(message: RoutedMessage): unknown;
|
|
59
|
+
getStats(): RoutingStats;
|
|
60
|
+
addStream(streamId: string): void;
|
|
61
|
+
removeStream(streamId: string): void;
|
|
62
|
+
}
|
|
63
|
+
/** Create a CognitiveRouter if the feature flag is enabled, otherwise null. */
|
|
64
|
+
export declare function createCognitiveRouter(config?: Partial<CognitiveRoutingConfig>): CognitiveRouter | null;
|
|
65
|
+
/** Check if Cognitive Routing feature flag is enabled. */
|
|
66
|
+
export declare function isCognitiveRoutingEnabled(): boolean;
|
|
67
|
+
//# sourceMappingURL=cognitive-routing.d.ts.map
|