agentic-qe 3.14.4 → 3.14.6
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 +169 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/ag-ui/event-types.d.ts +1 -1
- package/dist/audit/witness-chain-hash.d.ts +18 -0
- package/dist/audit/witness-chain-hash.js +37 -0
- package/dist/audit/witness-chain-repair.d.ts +71 -0
- package/dist/audit/witness-chain-repair.js +203 -0
- package/dist/audit/witness-chain-verifier.d.ts +152 -0
- package/dist/audit/witness-chain-verifier.js +293 -0
- package/dist/audit/witness-chain.d.ts +10 -43
- package/dist/audit/witness-chain.js +43 -126
- package/dist/audit/witness-findings.js +4 -1
- package/dist/cli/bundle.js +13 -10
- package/dist/cli/chunks/adapter-UYOJPTOX.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-2YGML6OU.js +2 -0
- package/dist/cli/chunks/{agent-handler-RDNTK4CA.js → agent-handler-D5SSQYNU.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-NAAMBWIR.js → agent-memory-branch-YHPLTITV.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-JR5AVQXR.js +2 -0
- package/dist/cli/chunks/{arena-KXFHRWX4.js → arena-7BGOXGXO.js} +2 -2
- package/dist/cli/chunks/{arena-HXTWJ5YY.js → arena-MCE6EU7K.js} +4 -4
- package/dist/cli/chunks/audit-BMWTQECB.js +4 -0
- package/dist/cli/chunks/base-DRZ2LS6X.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-UICJZIDG.js → better-sqlite3-PMUNGASU.js} +2 -2
- package/dist/cli/chunks/brain-handler-QPUFYX7F.js +94 -0
- package/dist/cli/chunks/{branch-enumerator-SS7UNVIA.js → branch-enumerator-WKFDGRN4.js} +2 -2
- package/dist/cli/chunks/{browser-77GI6KBE.js → browser-VY5HKH5X.js} +2 -2
- package/dist/cli/chunks/browser-workflow-CJ7T3MXF.js +2 -0
- package/dist/cli/chunks/{chunk-PZJOPURC.js → chunk-257E2A5M.js} +5 -5
- package/dist/cli/chunks/{chunk-55RWDRJD.js → chunk-2JVWITNK.js} +4 -4
- package/dist/cli/chunks/{chunk-BOARZKU3.js → chunk-2NPKIBAZ.js} +2 -2
- package/dist/cli/chunks/chunk-2TMWAQQ3.js +13 -0
- package/dist/cli/chunks/{chunk-M4WJKGVK.js → chunk-2YXGBZWV.js} +1 -1
- package/dist/cli/chunks/{chunk-3VOQRIQM.js → chunk-3EA536JF.js} +2 -2
- package/dist/cli/chunks/{chunk-ZZDIMOOV.js → chunk-3EZOZN25.js} +2 -2
- package/dist/cli/chunks/{chunk-MNW6QGNJ.js → chunk-3HZS4M3O.js} +2 -2
- package/dist/cli/chunks/{chunk-EKQ673SA.js → chunk-3NIG7S5W.js} +1 -1
- package/dist/cli/chunks/{chunk-7D777LTF.js → chunk-4N23RFDU.js} +2 -2
- package/dist/cli/chunks/{chunk-BOZZYWCR.js → chunk-5J6W7SIA.js} +1 -1
- package/dist/cli/chunks/{chunk-HIVA55CJ.js → chunk-5OOMJGFN.js} +1 -1
- package/dist/cli/chunks/{chunk-W7BWUTVV.js → chunk-5QQSIGUA.js} +2 -2
- package/dist/cli/chunks/{chunk-PAWXJ73E.js → chunk-5VFPCSK7.js} +1 -1
- package/dist/cli/chunks/{chunk-KPA7MZ6C.js → chunk-62N4NUJH.js} +2 -2
- package/dist/cli/chunks/chunk-64VGZQLB.js +2 -0
- package/dist/cli/chunks/{chunk-64PFWE2F.js → chunk-66VWCR67.js} +2 -2
- package/dist/cli/chunks/{chunk-XRT2WRMS.js → chunk-6LIHFV7O.js} +2 -2
- package/dist/cli/chunks/{chunk-STJCATGN.js → chunk-6OS76PHI.js} +2 -2
- package/dist/cli/chunks/{chunk-ZNPKDCZR.js → chunk-6RE3X4V5.js} +2 -2
- package/dist/cli/chunks/{chunk-BFP7KO7P.js → chunk-6SH5VZUD.js} +2 -2
- package/dist/cli/chunks/chunk-6SQM2MUX.js +4 -0
- package/dist/cli/chunks/{chunk-IPR4QP3H.js → chunk-6U7LNMWZ.js} +2 -2
- package/dist/cli/chunks/{chunk-MIQTXNBG.js → chunk-72KXSMWI.js} +1 -1
- package/dist/cli/chunks/chunk-7CUQCCMD.js +27 -0
- package/dist/cli/chunks/chunk-7D3V65N5.js +2 -0
- package/dist/cli/chunks/{chunk-JZ3ORVZ3.js → chunk-7J6QC567.js} +3 -3
- package/dist/cli/chunks/{chunk-4OYFXLBK.js → chunk-7LPR6HJG.js} +2 -2
- package/dist/cli/chunks/{chunk-4MHXCAG2.js → chunk-7NITCZWD.js} +1 -1
- package/dist/cli/chunks/{chunk-M5QUBZY6.js → chunk-7Z5LHRC3.js} +2 -2
- package/dist/cli/chunks/{chunk-CSU5NYOX.js → chunk-AHKELLIO.js} +4 -4
- package/dist/cli/chunks/{chunk-DHJPWQBR.js → chunk-AIRGNL55.js} +2 -2
- package/dist/cli/chunks/{chunk-C2WU3533.js → chunk-AJRUJAAK.js} +1 -1
- package/dist/cli/chunks/{chunk-HIYXCDEP.js → chunk-AVBJYI5I.js} +1 -1
- package/dist/cli/chunks/{chunk-U5K45TFH.js → chunk-B6D2CHEH.js} +1 -1
- package/dist/cli/chunks/{chunk-FRH6VAUS.js → chunk-B6MOJC3X.js} +1 -1
- package/dist/cli/chunks/{chunk-HUWNIPZ5.js → chunk-BAMN2CHI.js} +1 -1
- package/dist/cli/chunks/{chunk-ONII3572.js → chunk-BBT64TII.js} +3 -3
- package/dist/cli/chunks/{chunk-KSKEF7LZ.js → chunk-BJTJLJRZ.js} +3 -3
- package/dist/cli/chunks/chunk-BMAPORJ7.js +15 -0
- package/dist/cli/chunks/{chunk-CIZ5JPDC.js → chunk-BPEDWS6O.js} +3 -3
- package/dist/cli/chunks/{chunk-Z3RHREWF.js → chunk-BVR7RMC5.js} +1 -1
- package/dist/cli/chunks/{chunk-HDSAM2RE.js → chunk-C6KWXUFJ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZBAKA4YB.js → chunk-CCK4BF76.js} +1 -1
- package/dist/cli/chunks/{chunk-IFCLB7FJ.js → chunk-CD542DNJ.js} +1 -1
- package/dist/cli/chunks/{chunk-6KJABXAR.js → chunk-CF2ISEOJ.js} +2 -2
- package/dist/cli/chunks/chunk-CM7U6TAX.js +5 -0
- package/dist/cli/chunks/{chunk-3X3DJZJJ.js → chunk-D45SG6CP.js} +1 -1
- package/dist/cli/chunks/{chunk-DAEFDCJ4.js → chunk-D6CJIGRU.js} +89 -83
- package/dist/cli/chunks/{chunk-MVPCNSPY.js → chunk-DBDPRORT.js} +2 -2
- package/dist/cli/chunks/{chunk-AUXFKCQL.js → chunk-DHVX5UB2.js} +2 -2
- package/dist/cli/chunks/{chunk-GPLQ6DOK.js → chunk-DK4XN4CU.js} +2 -2
- package/dist/cli/chunks/{chunk-SRKETSFF.js → chunk-DPYSUDAO.js} +1 -1
- package/dist/cli/chunks/{chunk-CNG6GQEZ.js → chunk-DUYOVM5I.js} +2 -2
- package/dist/cli/chunks/{chunk-VIHTL3U2.js → chunk-DZ3AUAAB.js} +2 -2
- package/dist/cli/chunks/{chunk-CU46J64M.js → chunk-E6G2RD5H.js} +2 -2
- package/dist/cli/chunks/{chunk-5YPYDPBJ.js → chunk-EAY2JMZG.js} +2 -2
- package/dist/cli/chunks/{chunk-V3QLFNA2.js → chunk-ELLBS5RP.js} +4 -4
- package/dist/cli/chunks/chunk-ENGZ4D5V.js +2 -0
- package/dist/cli/chunks/chunk-FBMN7B46.js +4 -0
- package/dist/cli/chunks/{chunk-EDJ3O7RH.js → chunk-FWASDOT2.js} +2 -2
- package/dist/cli/chunks/{chunk-MDWCE7YW.js → chunk-FZOBD67M.js} +1 -1
- package/dist/cli/chunks/{chunk-A4FYONNU.js → chunk-GDSXITFH.js} +2 -2
- package/dist/cli/chunks/{chunk-2JW3BCGG.js → chunk-GGRHV6D7.js} +1 -1
- package/dist/cli/chunks/{chunk-ISDMD6EU.js → chunk-GPYVDFB3.js} +90 -90
- package/dist/cli/chunks/{chunk-CDKG6EI7.js → chunk-GSF6MB64.js} +2 -2
- package/dist/cli/chunks/{chunk-WLG5AJ4N.js → chunk-H52HZ67P.js} +2 -2
- package/dist/cli/chunks/{chunk-FGYMFUE2.js → chunk-H5BS5VH7.js} +2 -2
- package/dist/cli/chunks/{chunk-34WO57CW.js → chunk-H6ZM3PUT.js} +1 -1
- package/dist/cli/chunks/{chunk-6CQN24ZK.js → chunk-HM6ZSCPI.js} +1 -1
- package/dist/cli/chunks/{chunk-DPFRKBOG.js → chunk-HNFVJP4I.js} +2 -2
- package/dist/cli/chunks/{chunk-TPGED2IF.js → chunk-I33ERSGB.js} +2 -2
- package/dist/cli/chunks/{chunk-UEM7ZF5K.js → chunk-IAF6T27S.js} +2 -2
- package/dist/cli/chunks/{chunk-KCZR45PA.js → chunk-IB27QACC.js} +2 -2
- package/dist/cli/chunks/{chunk-SGYJ4NFZ.js → chunk-ICTXTNQZ.js} +1 -1
- package/dist/cli/chunks/chunk-IG5GNEC6.js +4 -0
- package/dist/cli/chunks/{chunk-KHFNNVJA.js → chunk-IQO7UCFR.js} +2 -2
- package/dist/cli/chunks/{chunk-3TW5W5LX.js → chunk-IV5UZOHH.js} +2 -2
- package/dist/cli/chunks/{chunk-7ZIOFPL3.js → chunk-JBTPOIAC.js} +2 -2
- package/dist/cli/chunks/{chunk-ZNEMGX5O.js → chunk-JIXUMYKZ.js} +1 -1
- package/dist/cli/chunks/{chunk-MTZH7AHC.js → chunk-JMONHE4B.js} +1 -1
- package/dist/cli/chunks/{chunk-TDZ53WO2.js → chunk-JVNTSNWU.js} +2 -2
- package/dist/cli/chunks/{chunk-PFR4G3DJ.js → chunk-JXGFRBUO.js} +2 -2
- package/dist/cli/chunks/chunk-JZOS5FCX.js +2 -0
- package/dist/cli/chunks/{chunk-STM3UDNO.js → chunk-KNNISEDY.js} +2 -2
- package/dist/cli/chunks/{chunk-TWAWHOP7.js → chunk-L4RUBPLR.js} +2 -2
- package/dist/cli/chunks/chunk-LL3IGZBI.js +2 -0
- package/dist/cli/chunks/{chunk-CIKSHTEQ.js → chunk-MBRHSU6W.js} +10 -10
- package/dist/cli/chunks/{chunk-G6T45OIC.js → chunk-MJS53PRX.js} +2 -2
- package/dist/cli/chunks/{chunk-PO3IXGMQ.js → chunk-MQROI74N.js} +2 -2
- package/dist/cli/chunks/{chunk-DOTK76IJ.js → chunk-MUOG6QXR.js} +2 -2
- package/dist/cli/chunks/{chunk-MVNP7GIR.js → chunk-MW2GGZZ5.js} +1 -1
- package/dist/cli/chunks/{chunk-FWGOHAAB.js → chunk-NHWGMJAP.js} +2 -2
- package/dist/cli/chunks/{chunk-ZBJ4XOOV.js → chunk-NMAIY4PX.js} +4 -4
- package/dist/cli/chunks/{chunk-CDHQFHRP.js → chunk-NQZ5AR3D.js} +2 -2
- package/dist/cli/chunks/{chunk-FLYOJOKN.js → chunk-P6OYS755.js} +1 -1
- package/dist/cli/chunks/{chunk-BGE6FOLM.js → chunk-PI7TJS62.js} +2 -2
- package/dist/cli/chunks/chunk-PX5YDCRH.js +4 -0
- package/dist/cli/chunks/{chunk-Q5DO24IJ.js → chunk-PZPWRQ2M.js} +3 -3
- package/dist/cli/chunks/{chunk-R4VL6E65.js → chunk-Q5XTSMWR.js} +2 -2
- package/dist/cli/chunks/{chunk-JBNEE5UH.js → chunk-Q7EAGKAE.js} +2 -2
- package/dist/cli/chunks/{chunk-R5NE6B2M.js → chunk-QDFTT3RF.js} +2 -2
- package/dist/cli/chunks/{chunk-DFZCKIGY.js → chunk-QGA55PFM.js} +3 -3
- package/dist/cli/chunks/{chunk-RJCYCLZV.js → chunk-QW6VMTBR.js} +2 -2
- package/dist/cli/chunks/{chunk-6VRA2QGL.js → chunk-QZANMBIT.js} +1 -1
- package/dist/cli/chunks/{chunk-MEGDYJPV.js → chunk-RETBYIAC.js} +4 -4
- package/dist/cli/chunks/{chunk-XJ7QNVI5.js → chunk-RFNPJK6N.js} +3 -3
- package/dist/cli/chunks/{chunk-NJBGXDQ7.js → chunk-RG52OKAM.js} +1 -1
- package/dist/cli/chunks/{chunk-DA5K5754.js → chunk-RSXXCL4A.js} +1 -1
- package/dist/cli/chunks/{chunk-HV2J7KKQ.js → chunk-RTFO5UQH.js} +2 -2
- package/dist/cli/chunks/{chunk-6UWGMOND.js → chunk-RZZCUIAI.js} +2 -2
- package/dist/cli/chunks/chunk-SDRHUMJB.js +2 -0
- package/dist/cli/chunks/{chunk-TSRSV3LD.js → chunk-SE4WIB26.js} +1 -1
- package/dist/cli/chunks/{chunk-ODKLFVYC.js → chunk-SESK3ARK.js} +2 -2
- package/dist/cli/chunks/{chunk-AWWNB2T7.js → chunk-SJUXE4IC.js} +2 -2
- package/dist/cli/chunks/{chunk-QGIU2WRL.js → chunk-SMDN3BQZ.js} +1 -1
- package/dist/cli/chunks/{chunk-VD6QRULW.js → chunk-SNOBH4AZ.js} +2 -2
- package/dist/cli/chunks/{chunk-OSLYSG3B.js → chunk-SPV2VKC5.js} +2 -2
- package/dist/cli/chunks/chunk-TCHGOB2N.js +2 -0
- package/dist/cli/chunks/{chunk-MOBNBMFW.js → chunk-TVYY3OCX.js} +1 -1
- package/dist/cli/chunks/{chunk-UGVHCMUN.js → chunk-UCFQALXO.js} +3 -3
- package/dist/cli/chunks/{chunk-3QHGWY7T.js → chunk-UKA2KOXE.js} +2 -2
- package/dist/cli/chunks/{chunk-MCUJEZT6.js → chunk-UNFFDHER.js} +16 -11
- package/dist/cli/chunks/{chunk-6QYNWR7U.js → chunk-UQ32JHES.js} +2 -2
- package/dist/cli/chunks/{chunk-OULHKEVH.js → chunk-V4DM6ELU.js} +2 -2
- package/dist/cli/chunks/{chunk-M2JBBZQB.js → chunk-VGFFFKGK.js} +2 -2
- package/dist/cli/chunks/{chunk-OCWWP5PL.js → chunk-VMNWDJIZ.js} +2 -2
- package/dist/cli/chunks/chunk-W6HXLH5G.js +180 -0
- package/dist/cli/chunks/{chunk-AIHDEEJO.js → chunk-WCJBU2KI.js} +2 -2
- package/dist/cli/chunks/{chunk-ZBQY5GLF.js → chunk-WGM35YWL.js} +2 -2
- package/dist/cli/chunks/chunk-WO4QMXIG.js +3 -0
- package/dist/cli/chunks/{chunk-3UPAMMCB.js → chunk-XAS3XRYM.js} +1 -1
- package/dist/cli/chunks/chunk-Y3LZ35OG.js +2 -0
- package/dist/cli/chunks/{chunk-5R3QL7WN.js → chunk-Y3UOUNHM.js} +2 -2
- package/dist/cli/chunks/{chunk-ZJ26AQA5.js → chunk-YFBSPLJG.js} +1 -1
- package/dist/cli/chunks/{chunk-BDESSCVR.js → chunk-YHKEDEAA.js} +3 -3
- package/dist/cli/chunks/{chunk-CXQPR5MY.js → chunk-YS4FCTWF.js} +1 -1
- package/dist/cli/chunks/{chunk-CLTMDCSE.js → chunk-YSLL6VSL.js} +2 -2
- package/dist/cli/chunks/chunk-Z6GGIRQQ.js +65 -0
- package/dist/cli/chunks/{chunk-F3SBRQC6.js → chunk-Z7WODOTH.js} +2 -2
- package/dist/cli/chunks/chunk-ZCRTRYXK.js +14 -0
- package/dist/cli/chunks/{chunk-XRYF6JV7.js → chunk-ZEV3YTO7.js} +2 -2
- package/dist/cli/chunks/{chunk-YNXS6CGV.js → chunk-ZL6SYKUK.js} +1 -1
- package/dist/cli/chunks/{chunk-5SJHQ2CO.js → chunk-ZSPU4MOS.js} +2 -2
- package/dist/cli/chunks/{chunk-UDHKLT4C.js → chunk-ZVWVV4EX.js} +1 -1
- package/dist/cli/chunks/{ci-464KPQNP.js → ci-W6K6G2KZ.js} +2 -2
- package/dist/cli/chunks/{ci-output-I7FX2RSO.js → ci-output-LDT24TS3.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-3FW237WW.js → circuit-breaker-F5V4KITU.js} +2 -2
- package/dist/cli/chunks/claude-flow-setup-DT6WQQVD.js +2 -0
- package/dist/cli/chunks/client-KHWJT6FB.js +2 -0
- package/dist/cli/chunks/{cline-installer-UWFHT6VY.js → cline-installer-G7TJOAEX.js} +2 -2
- package/dist/cli/chunks/{code-KQSUT3FS.js → code-PGE6A42V.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-PABBNUSC.js → code-index-extractor-RNITH372.js} +2 -2
- package/dist/cli/chunks/codex-installer-LBX77AI3.js +14 -0
- package/dist/cli/chunks/{completions-7RWHAUAR.js → completions-4AWLAARX.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-XPOAF33E.js → complexity-analyzer-ZPNSS476.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-V4F2FIZP.js → continuedev-installer-UAPWX6OA.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-JMICURQB.js → copilot-installer-BJN2YJGI.js} +2 -2
- package/dist/cli/chunks/core-handlers-HING5RRG.js +2 -0
- package/dist/cli/chunks/{cost-tracker-5OFHEYFJ.js → cost-tracker-MHP2VJ63.js} +2 -2
- package/dist/cli/chunks/{coverage-QKN57JDS.js → coverage-PQB4IEFG.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-PQTD6AZN.js +2 -0
- package/dist/cli/chunks/{cursor-installer-GBJ7YXSM.js → cursor-installer-ZXBWYAS3.js} +2 -2
- package/dist/cli/chunks/{daemon-GKP7CMEK.js → daemon-64C7R6OJ.js} +3 -3
- package/dist/cli/chunks/{daemon-IAVSO6HK.js → daemon-N2BEGEFY.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-S225TCI7.js → dag-attention-scheduler-SPZDAPNL.js} +2 -2
- package/dist/cli/chunks/{detect-IUYH422U.js → detect-LXJBSSZW.js} +2 -2
- package/dist/cli/chunks/{dist-node-2YRE6A7C.js → dist-node-U3TKZ2IZ.js} +2 -2
- package/dist/cli/chunks/{domain-handler-PL2TZC6H.js → domain-handler-3DDWUVSR.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-HCGLXKIT.js → domain-plugins-JJVWI4OQ.js} +2 -2
- package/dist/cli/chunks/domain-transfer-M36KUJ2U.js +2 -0
- package/dist/cli/chunks/dream-WUGRSNCV.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-JPAR7TXX.js +3 -0
- package/dist/cli/chunks/{eval-WCK7KNFN.js → eval-SOLG23EA.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-2MSQWSAR.js → experience-capture-middleware-T7G2VOOD.js} +4 -4
- package/dist/cli/chunks/{fast-paths-VYOSIBKF.js → fast-paths-32N3ELI4.js} +2 -2
- package/dist/cli/chunks/{feature-flags-WCFUKHNQ.js → feature-flags-APJDQ4N7.js} +2 -2
- package/dist/cli/chunks/{feature-flags-UJRHFBRX.js → feature-flags-NAHKLDRN.js} +2 -2
- package/dist/cli/chunks/{file-discovery-JDGL4ZWS.js → file-discovery-YKVM3MDB.js} +2 -2
- package/dist/cli/chunks/{fleet-ROXVMZ2F.js → fleet-55M5CJS4.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-NIO4ZCO3.js → gnn-wrapper-UD6E6S6Z.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-PI42WD3C.js → heartbeat-handler-OYVW3VSC.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-33XX5XNQ.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-XQPERX3H.js +2 -0
- package/dist/cli/chunks/hnsw-index-2GNXTWHH.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-YLC7SPK2.js → hnsw-legacy-bridge-HBYIS3ZW.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-LG6OS3B7.js → hnswlib-node-EQPM42OU.js} +2 -2
- package/dist/cli/chunks/{hooks-WVALP5GX.js → hooks-5ZSSJWO6.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-CCF7URKI.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-GJEMW3EG.js → hypergraph-engine-XBGVQ4PD.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-BLF6LXEV.js → hypergraph-handler-CAWAQ673.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-HGKAZWIG.js +2 -0
- package/dist/cli/chunks/{init-handler-K25RWRYY.js → init-handler-PRHXSARK.js} +6 -6
- package/dist/cli/chunks/init-wizard-72MFBI3G.js +2 -0
- package/dist/cli/chunks/kernel-BRCBVMSK.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-BXN6WZ7G.js → kilocode-installer-F7LXBM7I.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-PM362DLN.js → kiro-installer-NM723ZRG.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-DG44IPEI.js +2 -0
- package/dist/cli/chunks/{learning-CPERDDRG.js → learning-5QYIDHH3.js} +3 -3
- package/dist/cli/chunks/{llm-router-GOAV5FPI.js → llm-router-43HKWPSX.js} +4 -4
- package/dist/cli/chunks/llm-router-service-24KXFX32.js +2 -0
- package/dist/cli/chunks/{load-2BG6SHAK.js → load-5YDBWSCS.js} +2 -2
- package/dist/cli/chunks/load-test-N4TAYJY3.js +2 -0
- package/dist/cli/chunks/mcp-UMAPMNMY.js +2 -0
- package/dist/cli/chunks/{memory-4NHBYT6S.js → memory-FWCPCQFP.js} +6 -6
- package/dist/cli/chunks/memory-backend-NVYFYVAU.js +2 -0
- package/dist/cli/chunks/memory-handlers-UTWCNCHL.js +2 -0
- package/dist/cli/chunks/multi-model-executor-2XTBGLE4.js +14 -0
- package/dist/cli/chunks/{opencode-installer-ATZLLK74.js → opencode-installer-GIXOJ6NS.js} +2 -2
- package/dist/cli/chunks/orchestrator-VW6BKHLI.js +393 -0
- package/dist/cli/chunks/pattern-null-store-SBPNYDBR.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-7VE4XDAI.js → pattern-usage-recorder-7CEUC3J7.js} +2 -2
- package/dist/cli/chunks/{pipeline-LQZSNDD2.js → pipeline-IGUQPPPO.js} +2 -2
- package/dist/cli/chunks/platform-2P636I7B.js +2 -0
- package/dist/cli/chunks/{plugin-EJ6K2MGU.js → plugin-NY6SWDPE.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-OIHTKJMN.js → prime-radiant-advanced-wasm-2UUDTIO2.js} +2 -2
- package/dist/cli/chunks/project-root-IOISG5KX.js +2 -0
- package/dist/cli/chunks/protocol-executor-IBYEII5Q.js +2 -0
- package/dist/cli/chunks/{protocol-handler-NRBROAU7.js → protocol-handler-ZTPCRQ5W.js} +2 -2
- package/dist/cli/chunks/{prove-EJOGEGD3.js → prove-SQX5A3IG.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-7IETWW6W.js +2 -0
- package/dist/cli/chunks/{quality-E55UC73D.js → quality-DROILKRY.js} +2 -2
- package/dist/cli/chunks/{quality-gate-OIQATNT3.js → quality-gate-PWKWDJY2.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-NHUK2MWJ.js +2 -0
- package/dist/cli/chunks/real-embeddings-P5U3MGYC.js +2 -0
- package/dist/cli/chunks/{ref-validation-OPO6J7OL.js → ref-validation-KY73NQXD.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-ODY5KRWU.js → roocode-installer-6JPPRB3W.js} +2 -2
- package/dist/cli/chunks/router-SRSO3IHF.js +2 -0
- package/dist/cli/chunks/routing-feedback-PASRE5HY.js +2 -0
- package/dist/cli/chunks/{routing-handler-KQM6VWLC.js → routing-handler-VTJIVFUO.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-U2GVV6PF.js → ruvector-commands-C6RPSJJO.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-4M4J67OU.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-TSXGT5LF.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-R53URRIO.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-MOF3E7BR.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-KMIHD3LP.js → rvf-store-integrity-MMXN5TEJ.js} +2 -2
- package/dist/cli/chunks/safe-db-QJLFO33B.js +2 -0
- package/dist/cli/chunks/schedule-YIVXW5O2.js +2 -0
- package/dist/cli/chunks/scheduler-AON7DWSJ.js +2 -0
- package/dist/cli/chunks/{security-P5NM353C.js → security-3B3R2NL4.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-VIJB7JUS.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-2CSG7C4W.js → shared-rvf-dual-writer-UVWGDUWC.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-75VHKKQB.js +2 -0
- package/dist/cli/chunks/standalone-memory-M4LWAAYZ.js +2 -0
- package/dist/cli/chunks/{status-handler-6TU6O37R.js → status-handler-YYFV6OZL.js} +2 -2
- package/dist/cli/chunks/{structural-health-KBIJSTXJ.js → structural-health-27E6LLKB.js} +2 -2
- package/dist/cli/chunks/sync-26CEGSTC.js +2 -0
- package/dist/cli/chunks/{sync-LNHI5SB7.js → sync-J3LJ56WN.js} +2 -2
- package/dist/cli/chunks/task-handler-4MCEBQZL.js +54 -0
- package/dist/cli/chunks/task-handlers-GYBAWKE2.js +9 -0
- package/dist/cli/chunks/{test-DHAAI3DU.js → test-MPC5HRH5.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-XDBZ3QC2.js → test-scheduling-ZJBFRZ3J.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-2Y2XITBX.js +2 -0
- package/dist/cli/chunks/{token-usage-Q2YG5YQN.js → token-usage-3X5WMTG2.js} +2 -2
- package/dist/cli/chunks/{transformers-F5UQTQCY.js → transformers-MVL4C5IX.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-SLW65ZFO.js +2 -0
- package/dist/cli/chunks/{types-JQ7EQO5Q.js → types-TG5P3CRS.js} +2 -2
- package/dist/cli/chunks/unified-memory-UCQ6AB32.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-IXYUMKRR.js +2 -0
- package/dist/cli/chunks/unified-persistence-7E6JQ4FZ.js +2 -0
- package/dist/cli/chunks/{upgrade-TJRVGHGD.js → upgrade-ETBHDEPY.js} +2 -2
- package/dist/cli/chunks/{validate-BWPCVHBN.js → validate-C2A73LZK.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-QVVKCQLP.js → validate-swarm-67XN42ML.js} +2 -2
- package/dist/cli/chunks/{vibium-ZFATIWHO.js → vibium-NILGKHLN.js} +2 -2
- package/dist/cli/chunks/visual-security-4VZXPEVG.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-KPLY7ONR.js → web-tree-sitter-USJN77P4.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-H7XM7ISA.js → windsurf-installer-5GGZXGJW.js} +2 -2
- package/dist/cli/chunks/witness-chain-IWS5ZHHL.js +2 -0
- package/dist/cli/chunks/witness-chain-JQA2VPZI.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-4UA7IPS3.js +2 -0
- package/dist/cli/chunks/witness-chain-verifier-3GEADWPE.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-DFRL42GE.js → witness-key-manager-ZWEIK3VJ.js} +2 -2
- package/dist/cli/chunks/{workflow-2ZQO6WYI.js → workflow-KHMVVBBA.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-GI5NQH7C.js +2 -0
- package/dist/cli/chunks/wrappers-N6XIK5PT.js +2 -0
- package/dist/cli/commands/audit.d.ts +20 -2
- package/dist/cli/commands/audit.js +158 -16
- package/dist/cli/commands/claude-flow-setup.js +5 -4
- package/dist/cli/commands/mcp.js +6 -0
- package/dist/cli/commands/memory.d.ts +1 -1
- package/dist/cli/commands/memory.js +8 -8
- package/dist/cli/commands/platform.js +15 -2
- package/dist/cli/commands/upgrade.d.ts +3 -3
- package/dist/cli/commands/upgrade.js +3 -3
- package/dist/cli/handlers/init-handler.d.ts +10 -0
- package/dist/cli/handlers/task-handler.js +24 -3
- package/dist/cli/helpers/standalone-memory.d.ts +12 -0
- package/dist/cli/helpers/standalone-memory.js +46 -0
- package/dist/cli/index.js +39 -42
- package/dist/cli/log-gate.d.ts +66 -0
- package/dist/cli/log-gate.js +170 -0
- package/dist/init/agents-installer.d.ts +4 -0
- package/dist/init/agents-installer.js +24 -11
- package/dist/init/codex-installer.js +22 -8
- package/dist/init/idempotent-write.d.ts +53 -0
- package/dist/init/idempotent-write.js +160 -0
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/05-learning.js +3 -1
- package/dist/init/phases/07-hooks.js +32 -16
- package/dist/init/phases/08-mcp.js +4 -2
- package/dist/init/phases/09-assets.d.ts +10 -0
- package/dist/init/phases/09-assets.js +3 -0
- package/dist/init/phases/10-workers.js +7 -5
- package/dist/init/phases/12-verification.js +7 -2
- package/dist/init/project-analyzer.d.ts +9 -0
- package/dist/init/project-analyzer.js +20 -1
- package/dist/init/self-configurator.d.ts +5 -3
- package/dist/init/self-configurator.js +18 -29
- package/dist/init/skills-installer.js +4 -2
- package/dist/init/token-bootstrap.d.ts +1 -1
- package/dist/init/token-bootstrap.js +12 -2
- package/dist/init/types.d.ts +16 -0
- package/dist/init/types.js +20 -24
- package/dist/integrations/coherence/coherence-service.js +84 -24
- package/dist/integrations/coherence/vote-tally.d.ts +38 -0
- package/dist/integrations/coherence/vote-tally.js +39 -0
- package/dist/integrations/ruvector/brain-exporter.js +17 -0
- package/dist/integrations/ruvector/brain-import-audit.d.ts +20 -0
- package/dist/integrations/ruvector/brain-import-audit.js +22 -0
- package/dist/integrations/ruvector/brain-rvf-exporter.js +16 -0
- package/dist/integrations/ruvector/brain-shared.js +1 -1
- package/dist/integrations/ruvector/rvf-dual-writer.js +6 -1
- package/dist/integrations/ruvector/shared-rvf-adapter.d.ts +23 -0
- package/dist/integrations/ruvector/shared-rvf-adapter.js +24 -0
- package/dist/kernel/hybrid-backend.d.ts +6 -0
- package/dist/kernel/hybrid-backend.js +18 -0
- package/dist/kernel/kernel.js +12 -16
- package/dist/kernel/project-root.d.ts +1 -1
- package/dist/kernel/project-root.js +24 -3
- package/dist/learning/embedder-identity-store.js +4 -3
- package/dist/learning/pattern-store.d.ts +11 -0
- package/dist/learning/pattern-store.js +31 -9
- package/dist/learning/qe-patterns.d.ts +6 -0
- package/dist/learning/qe-patterns.js +7 -1
- package/dist/learning/qe-reasoning-bank.js +3 -0
- package/dist/learning/real-embeddings.d.ts +8 -0
- package/dist/learning/real-embeddings.js +16 -0
- package/dist/learning/rvf-pattern-store.js +30 -10
- package/dist/learning/sqlite-persistence.d.ts +8 -1
- package/dist/learning/sqlite-persistence.js +49 -9
- package/dist/logging/console-logger.d.ts +2 -5
- package/dist/logging/console-logger.js +10 -46
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.js +1 -0
- package/dist/logging/redaction.d.ts +27 -0
- package/dist/logging/redaction.js +170 -0
- package/dist/mcp/bundle.js +463 -449
- package/dist/mcp/entry.js +2 -0
- package/dist/mcp/handlers/core-handlers.js +5 -4
- package/dist/mcp/handlers/memory-handlers.d.ts +6 -1
- package/dist/mcp/handlers/memory-handlers.js +44 -22
- package/dist/mcp/handlers/task-handlers.js +14 -1
- package/dist/mcp/protocol-server.js +3 -1
- package/dist/mcp/services/session-store.js +5 -1
- package/dist/mcp/tools/base.d.ts +9 -2
- package/dist/mcp/tools/base.js +7 -0
- package/dist/mcp/tools/coherence/consensus.js +51 -2
- package/dist/mcp/tools/planning/goap-plan.d.ts +20 -7
- package/dist/mcp/tools/planning/goap-plan.js +92 -20
- package/dist/mcp/tools/planning/goap-status.d.ts +37 -12
- package/dist/mcp/tools/planning/goap-status.js +52 -23
- package/dist/mcp/tools/planning/world-state.d.ts +101 -0
- package/dist/mcp/tools/planning/world-state.js +274 -0
- package/dist/mcp/types.d.ts +4 -2
- package/dist/planning/goap-planner.d.ts +60 -4
- package/dist/planning/goap-planner.js +218 -60
- package/dist/planning/index.d.ts +1 -1
- package/dist/planning/index.js +1 -1
- package/dist/planning/plan-executor.d.ts +20 -1
- package/dist/planning/plan-executor.js +209 -100
- package/dist/planning/types.d.ts +16 -0
- package/dist/planning/types.js +17 -0
- package/dist/plugins/cache.d.ts +2 -0
- package/dist/plugins/cache.js +15 -2
- package/dist/plugins/lifecycle.js +15 -2
- package/dist/plugins/manifest.js +7 -5
- package/dist/plugins/resolver.d.ts +13 -22
- package/dist/plugins/resolver.js +169 -61
- package/dist/plugins/version-policy.d.ts +13 -0
- package/dist/plugins/version-policy.js +18 -0
- package/dist/shared/types/index.d.ts +6 -0
- package/dist/shared/types/index.js +8 -0
- package/package.json +2 -1
- package/dist/cli/chunks/adapter-TNNNJRDG.js +0 -2
- package/dist/cli/chunks/agent-booster-wasm-5PC7D2FW.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-5ZRMYJLB.js +0 -2
- package/dist/cli/chunks/audit-YSGA7UWT.js +0 -3
- package/dist/cli/chunks/base-KWZHOPSH.js +0 -2
- package/dist/cli/chunks/brain-handler-ET6YAP4B.js +0 -90
- package/dist/cli/chunks/browser-workflow-2FZTKDUL.js +0 -2
- package/dist/cli/chunks/chunk-33YYYWBQ.js +0 -4
- package/dist/cli/chunks/chunk-5Z6XZV7K.js +0 -65
- package/dist/cli/chunks/chunk-6J62K3SW.js +0 -2
- package/dist/cli/chunks/chunk-6TPKK7LD.js +0 -15
- package/dist/cli/chunks/chunk-DEYLEDJN.js +0 -27
- package/dist/cli/chunks/chunk-J6GNQS62.js +0 -5
- package/dist/cli/chunks/chunk-KGT36Z42.js +0 -14
- package/dist/cli/chunks/chunk-NA7B2QYB.js +0 -2
- package/dist/cli/chunks/chunk-NDPFGIMJ.js +0 -13
- package/dist/cli/chunks/chunk-OBAP2TXZ.js +0 -2
- package/dist/cli/chunks/chunk-PEPFCPES.js +0 -2
- package/dist/cli/chunks/chunk-T6BVLVI5.js +0 -2
- package/dist/cli/chunks/chunk-TT23RRB7.js +0 -2
- package/dist/cli/chunks/chunk-XC7DYDSY.js +0 -180
- package/dist/cli/chunks/chunk-XWMZ6D6N.js +0 -2
- package/dist/cli/chunks/chunk-Y3MW3YBC.js +0 -3
- package/dist/cli/chunks/claude-flow-setup-6JKMBPGU.js +0 -2
- package/dist/cli/chunks/client-7E4LM2WW.js +0 -2
- package/dist/cli/chunks/codex-installer-CQ24DTP5.js +0 -14
- package/dist/cli/chunks/core-handlers-IFG3757P.js +0 -2
- package/dist/cli/chunks/cross-domain-router-EK7W4PGP.js +0 -2
- package/dist/cli/chunks/domain-transfer-KQJRUPXA.js +0 -2
- package/dist/cli/chunks/dream-NFSCSLY7.js +0 -2
- package/dist/cli/chunks/embed-and-insert-pattern-ZPAG7235.js +0 -3
- package/dist/cli/chunks/heartbeat-scheduler-ZATCDJDK.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-WXQABRCA.js +0 -2
- package/dist/cli/chunks/hnsw-index-TPSWLEA5.js +0 -2
- package/dist/cli/chunks/impact-analyzer-HNIU45P5.js +0 -2
- package/dist/cli/chunks/init-wizard-JUIPBMHG.js +0 -2
- package/dist/cli/chunks/kernel-5BOZQ754.js +0 -2
- package/dist/cli/chunks/knowledge-graph-EWDAENWM.js +0 -2
- package/dist/cli/chunks/llm-router-service-3YT7JGBS.js +0 -2
- package/dist/cli/chunks/load-test-BP2CPLIV.js +0 -2
- package/dist/cli/chunks/mcp-5TTB37DC.js +0 -2
- package/dist/cli/chunks/memory-backend-4PYQBPRM.js +0 -2
- package/dist/cli/chunks/memory-handlers-2B27NITS.js +0 -2
- package/dist/cli/chunks/multi-model-executor-KCWSGCDT.js +0 -14
- package/dist/cli/chunks/orchestrator-RKB7XJRG.js +0 -393
- package/dist/cli/chunks/pattern-null-store-OYOQOV2O.js +0 -2
- package/dist/cli/chunks/platform-OD5H5U6G.js +0 -2
- package/dist/cli/chunks/protocol-executor-3ATJTXWG.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-LLMYZT4X.js +0 -2
- package/dist/cli/chunks/queen-coordinator-RN7L6KG5.js +0 -2
- package/dist/cli/chunks/real-embeddings-FPFFNOSZ.js +0 -2
- package/dist/cli/chunks/router-MDHITQ2V.js +0 -2
- package/dist/cli/chunks/routing-feedback-5XLNJ3Y3.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-JBW4O3II.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-BPPQL4XJ.js +0 -2
- package/dist/cli/chunks/rvf-migration-coordinator-V2GHCJKN.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-S4562CG5.js +0 -2
- package/dist/cli/chunks/safe-db-FIRHSXVF.js +0 -2
- package/dist/cli/chunks/schedule-RVXFB4HK.js +0 -2
- package/dist/cli/chunks/scheduler-IKKAMAOO.js +0 -2
- package/dist/cli/chunks/shared-rvf-adapter-LVIUOO4S.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-SQ3HCUQ7.js +0 -2
- package/dist/cli/chunks/sync-UHOX6RJW.js +0 -2
- package/dist/cli/chunks/task-handler-AVDHMLGI.js +0 -49
- package/dist/cli/chunks/task-handlers-KYK4VTRA.js +0 -9
- package/dist/cli/chunks/token-bootstrap-GUTTLPZX.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-DEGOHS6F.js +0 -2
- package/dist/cli/chunks/unified-memory-CXHLHB5I.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-I7WAE54M.js +0 -2
- package/dist/cli/chunks/unified-persistence-6CPF65WI.js +0 -2
- package/dist/cli/chunks/visual-security-GNPHME5H.js +0 -2
- package/dist/cli/chunks/witness-chain-RRN6NDCH.js +0 -2
- package/dist/cli/chunks/witness-chain-VT4UHHBR.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-DB3HIECD.js +0 -2
- package/dist/cli/chunks/wrappers-SUS6XEJD.js +0 -2
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Verifies the witness chain audit trail integrity.
|
|
5
5
|
* Shows chain length, integrity status, and last receipt hash.
|
|
6
6
|
*
|
|
7
|
-
* Usage: aqe audit verify [--format json|text]
|
|
7
|
+
* Usage: aqe audit verify [--chain governance|audit] [--format json|text]
|
|
8
|
+
* aqe audit repair --chain audit [--dry-run] [--format json|text]
|
|
8
9
|
*
|
|
9
10
|
* @module cli/commands/audit
|
|
10
11
|
* @see ADR-083-coherence-gated-agent-actions.md
|
|
@@ -12,6 +13,8 @@
|
|
|
12
13
|
import { Command } from 'commander';
|
|
13
14
|
import { type ChainVerificationResult } from '../../governance/witness-chain.js';
|
|
14
15
|
import type { CLIContext } from '../handlers/interfaces.js';
|
|
16
|
+
import type { ChainStatus } from '../../audit/witness-chain-verifier.js';
|
|
17
|
+
import type { RepairResult } from '../../audit/witness-chain-repair.js';
|
|
15
18
|
/**
|
|
16
19
|
* Verification output for JSON format.
|
|
17
20
|
*/
|
|
@@ -22,11 +25,17 @@ export interface AuditVerifyOutput {
|
|
|
22
25
|
brokenAt: number;
|
|
23
26
|
lastHash: string;
|
|
24
27
|
message: string;
|
|
28
|
+
status?: ChainStatus;
|
|
29
|
+
tampered?: boolean;
|
|
30
|
+
tamperedAt?: number;
|
|
31
|
+
tamperReason?: string;
|
|
32
|
+
forks?: number[];
|
|
33
|
+
acknowledgedForks?: number[];
|
|
25
34
|
}
|
|
26
35
|
/**
|
|
27
36
|
* Format verification result as human-readable text.
|
|
28
37
|
*/
|
|
29
|
-
export declare function formatVerificationText(result: ChainVerificationResult, featureEnabled: boolean): string;
|
|
38
|
+
export declare function formatVerificationText(result: ChainVerificationResult, featureEnabled: boolean, audit?: Pick<AuditVerifyOutput, 'status' | 'tamperedAt' | 'tamperReason' | 'forks' | 'acknowledgedForks'>): string;
|
|
30
39
|
/**
|
|
31
40
|
* Handle the audit verify command.
|
|
32
41
|
*
|
|
@@ -48,6 +57,15 @@ export declare function handleAuditVerify(options: {
|
|
|
48
57
|
export declare function handleAuditChainVerify(options: {
|
|
49
58
|
format?: 'json' | 'text';
|
|
50
59
|
}): Promise<AuditVerifyOutput>;
|
|
60
|
+
/**
|
|
61
|
+
* `aqe audit repair --chain audit`: re-anchor a store whose only breaks are
|
|
62
|
+
* accidental pre-3.14.5 forks (#753). Refuses on tampering, backs up first,
|
|
63
|
+
* never rewrites existing rows. See src/audit/witness-chain-repair.ts.
|
|
64
|
+
*/
|
|
65
|
+
export declare function handleAuditChainRepair(options: {
|
|
66
|
+
format?: 'json' | 'text';
|
|
67
|
+
dryRun?: boolean;
|
|
68
|
+
}): Promise<RepairResult>;
|
|
51
69
|
/**
|
|
52
70
|
* Create the audit command group following the project convention.
|
|
53
71
|
*/
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Verifies the witness chain audit trail integrity.
|
|
5
5
|
* Shows chain length, integrity status, and last receipt hash.
|
|
6
6
|
*
|
|
7
|
-
* Usage: aqe audit verify [--format json|text]
|
|
7
|
+
* Usage: aqe audit verify [--chain governance|audit] [--format json|text]
|
|
8
|
+
* aqe audit repair --chain audit [--dry-run] [--format json|text]
|
|
8
9
|
*
|
|
9
10
|
* @module cli/commands/audit
|
|
10
11
|
* @see ADR-083-coherence-gated-agent-actions.md
|
|
@@ -18,7 +19,7 @@ import path from 'node:path';
|
|
|
18
19
|
/**
|
|
19
20
|
* Format verification result as human-readable text.
|
|
20
21
|
*/
|
|
21
|
-
export function formatVerificationText(result, featureEnabled) {
|
|
22
|
+
export function formatVerificationText(result, featureEnabled, audit) {
|
|
22
23
|
const lines = [];
|
|
23
24
|
lines.push(chalk.bold('Witness Chain Audit Verification'));
|
|
24
25
|
lines.push('');
|
|
@@ -30,20 +31,36 @@ export function formatVerificationText(result, featureEnabled) {
|
|
|
30
31
|
// Chain length
|
|
31
32
|
lines.push(` Chain Length: ${result.length} receipts`);
|
|
32
33
|
// Integrity status
|
|
33
|
-
const integrityStatus =
|
|
34
|
-
? chalk.
|
|
35
|
-
:
|
|
34
|
+
const integrityStatus = audit?.status === 'forked'
|
|
35
|
+
? chalk.yellow('FORKED (no tampering detected)')
|
|
36
|
+
: result.valid
|
|
37
|
+
? chalk.green(audit?.status === 'valid-with-forks' ? 'VALID (forks re-anchored)' : 'VALID')
|
|
38
|
+
: chalk.red(audit?.status === 'tampered' ? 'BROKEN (tampering detected)' : 'BROKEN');
|
|
36
39
|
lines.push(` Integrity: ${integrityStatus}`);
|
|
37
40
|
// Last hash
|
|
38
41
|
if (result.length > 0) {
|
|
39
42
|
lines.push(` Last Hash: ${result.lastHash.slice(0, 16)}...`);
|
|
40
43
|
}
|
|
44
|
+
const forkCount = audit?.forks?.length ?? 0;
|
|
45
|
+
if (forkCount > 0) {
|
|
46
|
+
const reanchored = audit?.acknowledgedForks?.length ?? 0;
|
|
47
|
+
lines.push(` Forks: ${forkCount} accidental (pre-3.14.5 concurrent writes, #753), ${reanchored} re-anchored`);
|
|
48
|
+
}
|
|
41
49
|
// Details
|
|
42
|
-
if (
|
|
50
|
+
if (audit?.status === 'forked') {
|
|
51
|
+
lines.push('');
|
|
52
|
+
lines.push(chalk.yellow(` ${result.message}`));
|
|
53
|
+
}
|
|
54
|
+
else if (!result.valid && result.brokenAt >= 0) {
|
|
43
55
|
lines.push('');
|
|
44
|
-
|
|
56
|
+
const at = audit?.status === 'tampered' && audit.tamperedAt !== undefined ? audit.tamperedAt : result.brokenAt;
|
|
57
|
+
lines.push(chalk.red(` Break detected at index ${at}${audit?.tamperReason ? ` (${audit.tamperReason})` : ''}`));
|
|
45
58
|
lines.push(chalk.red(` ${result.message}`));
|
|
46
59
|
}
|
|
60
|
+
else if (result.valid && forkCount > 0) {
|
|
61
|
+
lines.push('');
|
|
62
|
+
lines.push(chalk.green(` ${result.message}`));
|
|
63
|
+
}
|
|
47
64
|
lines.push('');
|
|
48
65
|
return lines.join('\n');
|
|
49
66
|
}
|
|
@@ -109,8 +126,7 @@ export async function handleAuditVerify(options) {
|
|
|
109
126
|
*/
|
|
110
127
|
export async function handleAuditChainVerify(options) {
|
|
111
128
|
const { WitnessChain, hashWith, serializeEntry } = await import('../../audit/witness-chain.js');
|
|
112
|
-
const
|
|
113
|
-
const dbPath = path.join(root, '.agentic-qe', 'memory.db');
|
|
129
|
+
const { dbPath, keyDir } = auditChainPaths();
|
|
114
130
|
let output;
|
|
115
131
|
if (!existsSync(dbPath)) {
|
|
116
132
|
output = {
|
|
@@ -126,10 +142,15 @@ export async function handleAuditChainVerify(options) {
|
|
|
126
142
|
const { default: Database } = await import('better-sqlite3');
|
|
127
143
|
const db = new Database(dbPath, { readonly: true });
|
|
128
144
|
try {
|
|
129
|
-
const chain = new WitnessChain(db);
|
|
145
|
+
const chain = new WitnessChain(db, (await loadReadOnlyKeyManager(keyDir)) ?? undefined);
|
|
130
146
|
await chain.initialize();
|
|
131
|
-
|
|
132
|
-
|
|
147
|
+
// Fork and CHAIN_REANCHOR rows signed by a key in witness-keys/ are always
|
|
148
|
+
// signature-checked. The every-row `checkSignatures` sweep stays off, as it
|
|
149
|
+
// effectively was before this command loaded keys: it would fail rows
|
|
150
|
+
// signed by keys this project never stored (e.g. imported rows).
|
|
151
|
+
const result = chain.verify({ includeArchive: true, checkSignatures: false });
|
|
152
|
+
const { tableExists } = await import('../../audit/witness-chain-verifier.js');
|
|
153
|
+
const lastEntry = !tableExists(db, 'witness_chain') ? undefined : db.prepare('SELECT * FROM witness_chain ORDER BY id DESC LIMIT 1').get();
|
|
133
154
|
const lastHash = lastEntry
|
|
134
155
|
? hashWith(lastEntry.hash_algo || 'sha256', serializeEntry(lastEntry))
|
|
135
156
|
: '';
|
|
@@ -139,9 +160,13 @@ export async function handleAuditChainVerify(options) {
|
|
|
139
160
|
integrity: result.valid,
|
|
140
161
|
brokenAt: result.brokenAt ?? -1,
|
|
141
162
|
lastHash,
|
|
142
|
-
message: result
|
|
143
|
-
|
|
144
|
-
|
|
163
|
+
message: auditChainMessage(result),
|
|
164
|
+
status: result.status,
|
|
165
|
+
tampered: result.tampered,
|
|
166
|
+
...(result.tamperedAt !== undefined ? { tamperedAt: result.tamperedAt } : {}),
|
|
167
|
+
...(result.tamperReason ? { tamperReason: result.tamperReason } : {}),
|
|
168
|
+
forks: result.forks,
|
|
169
|
+
acknowledgedForks: result.acknowledgedForks,
|
|
145
170
|
};
|
|
146
171
|
}
|
|
147
172
|
finally {
|
|
@@ -152,10 +177,103 @@ export async function handleAuditChainVerify(options) {
|
|
|
152
177
|
console.log(JSON.stringify(output, null, 2));
|
|
153
178
|
}
|
|
154
179
|
else {
|
|
155
|
-
console.log(formatVerificationText({ valid: output.integrity, length: output.chainLength, brokenAt: output.brokenAt, lastHash: output.lastHash, message: output.message }, output.featureEnabled));
|
|
180
|
+
console.log(formatVerificationText({ valid: output.integrity, length: output.chainLength, brokenAt: output.brokenAt, lastHash: output.lastHash, message: output.message }, output.featureEnabled, output));
|
|
156
181
|
}
|
|
157
182
|
return output;
|
|
158
183
|
}
|
|
184
|
+
function auditChainPaths() {
|
|
185
|
+
const root = findProjectRoot();
|
|
186
|
+
return {
|
|
187
|
+
dbPath: path.join(root, '.agentic-qe', 'memory.db'),
|
|
188
|
+
keyDir: path.join(root, '.agentic-qe', 'witness-keys'),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
/** Persisted witness keys, loaded without generating (or writing) anything. */
|
|
192
|
+
async function loadReadOnlyKeyManager(keyDir) {
|
|
193
|
+
if (!existsSync(keyDir))
|
|
194
|
+
return null;
|
|
195
|
+
const { WitnessKeyManager: KeyManager } = await import('../../audit/witness-key-manager.js');
|
|
196
|
+
return new KeyManager({ keyDir, autoGenerate: false });
|
|
197
|
+
}
|
|
198
|
+
function auditChainMessage(result) {
|
|
199
|
+
const n = result.entriesChecked;
|
|
200
|
+
const forks = result.forks.length;
|
|
201
|
+
const pending = forks - result.acknowledgedForks.length;
|
|
202
|
+
switch (result.status) {
|
|
203
|
+
case 'valid':
|
|
204
|
+
return `Audit chain verified: ${n} entries checked, ${result.signatureFailures ?? 0} signature failures`;
|
|
205
|
+
case 'valid-with-forks':
|
|
206
|
+
return `Audit chain verified: ${n} entries checked; ${forks} accidental fork(s) from pre-3.14.5 ` +
|
|
207
|
+
'concurrent writes are re-anchored by CHAIN_REANCHOR, no tampering detected';
|
|
208
|
+
case 'forked':
|
|
209
|
+
return `${pending} accidental fork(s) (pre-3.14.5 concurrent writes, #753), no tampering detected — ` +
|
|
210
|
+
`${n} entries checked, first fork at id=${result.brokenAt}. ` +
|
|
211
|
+
'Run `aqe audit repair --chain audit` to back up the store and re-anchor.';
|
|
212
|
+
default:
|
|
213
|
+
return `Audit chain BROKEN: tampering detected at id=${result.tamperedAt} (${result.tamperReason}); ` +
|
|
214
|
+
`${n} entries checked` + (forks > 0 ? `, ${forks} accidental fork(s) found before it` : '');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
function repairFailed(result) {
|
|
218
|
+
if (result.action === 'refused')
|
|
219
|
+
return true;
|
|
220
|
+
return result.action === 'reanchored' && !(result.after?.status === 'valid' || result.after?.status === 'valid-with-forks');
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* `aqe audit repair --chain audit`: re-anchor a store whose only breaks are
|
|
224
|
+
* accidental pre-3.14.5 forks (#753). Refuses on tampering, backs up first,
|
|
225
|
+
* never rewrites existing rows. See src/audit/witness-chain-repair.ts.
|
|
226
|
+
*/
|
|
227
|
+
export async function handleAuditChainRepair(options) {
|
|
228
|
+
const { repairWitnessChainForks } = await import('../../audit/witness-chain-repair.js');
|
|
229
|
+
const { dbPath, keyDir } = auditChainPaths();
|
|
230
|
+
const dryRun = options.dryRun === true;
|
|
231
|
+
let result;
|
|
232
|
+
if (!existsSync(dbPath)) {
|
|
233
|
+
const empty = { status: 'valid', entriesChecked: 0, forks: 0, unacknowledgedForks: 0 };
|
|
234
|
+
result = {
|
|
235
|
+
action: 'none', dryRun, message: `No database found at ${dbPath} — nothing to repair`,
|
|
236
|
+
before: empty, rowsBefore: { live: 0, archive: 0 }, rowsAfter: { live: 0, archive: 0 }, forksAcknowledged: [],
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
const { openDatabase } = await import('../../shared/safe-db.js');
|
|
241
|
+
// A dry run opens read-only and never generates a signing key.
|
|
242
|
+
const db = openDatabase(dbPath, { readonly: dryRun, fileMustExist: true });
|
|
243
|
+
try {
|
|
244
|
+
const keyManager = dryRun
|
|
245
|
+
? await loadReadOnlyKeyManager(keyDir)
|
|
246
|
+
: (await import('../../audit/witness-key-manager.js')).getDefaultWitnessKeyManager();
|
|
247
|
+
result = await repairWitnessChainForks(db, { dbPath, dryRun, keyManager });
|
|
248
|
+
}
|
|
249
|
+
finally {
|
|
250
|
+
db.close();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (options.format === 'json') {
|
|
254
|
+
console.log(JSON.stringify(result, null, 2));
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
console.log(formatRepairText(result));
|
|
258
|
+
}
|
|
259
|
+
return result;
|
|
260
|
+
}
|
|
261
|
+
function formatRepairText(result) {
|
|
262
|
+
const color = result.action === 'refused' ? chalk.red : result.action === 'reanchored' ? chalk.green : chalk.yellow;
|
|
263
|
+
const lines = [
|
|
264
|
+
chalk.bold('Witness Chain Audit Repair'),
|
|
265
|
+
'',
|
|
266
|
+
` Action: ${color(result.action.toUpperCase())}${result.dryRun ? ' (dry run)' : ''}`,
|
|
267
|
+
` Before: ${result.before.status}, ${result.before.forks} fork(s), ${result.before.unacknowledgedForks} unacknowledged`,
|
|
268
|
+
` Rows: live ${result.rowsBefore.live} -> ${result.rowsAfter.live}, archive ${result.rowsBefore.archive} -> ${result.rowsAfter.archive}`,
|
|
269
|
+
];
|
|
270
|
+
if (result.after)
|
|
271
|
+
lines.push(` After: ${result.after.status}`);
|
|
272
|
+
if (result.backupPath)
|
|
273
|
+
lines.push(` Backup: ${result.backupPath}`);
|
|
274
|
+
lines.push('', ` ${color(result.message)}`, '');
|
|
275
|
+
return lines.join('\n');
|
|
276
|
+
}
|
|
159
277
|
/**
|
|
160
278
|
* Create the audit command group following the project convention.
|
|
161
279
|
*/
|
|
@@ -180,6 +298,30 @@ export function createAuditCommand(_context, cleanupAndExit, _ensureInitialized)
|
|
|
180
298
|
await cleanupAndExit(1);
|
|
181
299
|
}
|
|
182
300
|
});
|
|
301
|
+
audit
|
|
302
|
+
.command('repair')
|
|
303
|
+
.description('Re-anchor accidental pre-3.14.5 forks in the audit chain (#753); backs up first, refuses on tampering')
|
|
304
|
+
.option('-C, --chain <chain>', 'Chain to repair (only "audit" is supported)', 'audit')
|
|
305
|
+
.option('--dry-run', 'Report what would be done without writing anything', false)
|
|
306
|
+
.option('-F, --format <format>', 'Output format (json|text)', 'text')
|
|
307
|
+
.action(async (options) => {
|
|
308
|
+
try {
|
|
309
|
+
if (options.chain !== 'audit') {
|
|
310
|
+
console.error(`aqe audit repair supports only --chain audit (got "${options.chain}")`);
|
|
311
|
+
await cleanupAndExit(1);
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const result = await handleAuditChainRepair({
|
|
315
|
+
format: options.format,
|
|
316
|
+
dryRun: options.dryRun === true,
|
|
317
|
+
});
|
|
318
|
+
await cleanupAndExit(repairFailed(result) ? 1 : 0);
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
console.error('Failed to repair witness chain:', error);
|
|
322
|
+
await cleanupAndExit(1);
|
|
323
|
+
}
|
|
324
|
+
});
|
|
183
325
|
return audit;
|
|
184
326
|
}
|
|
185
327
|
//# sourceMappingURL=audit.js.map
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
* - Rule-based model routing
|
|
17
17
|
* - Local pattern learning
|
|
18
18
|
*/
|
|
19
|
-
import { existsSync,
|
|
19
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
20
|
+
import { writeFileIfChanged } from '../../init/idempotent-write.js';
|
|
20
21
|
import { join } from 'node:path';
|
|
21
22
|
import { safeJsonParse } from '../../shared/safe-json.js';
|
|
22
23
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
@@ -143,8 +144,8 @@ function updateMCPConfig(projectRoot) {
|
|
|
143
144
|
env: {},
|
|
144
145
|
};
|
|
145
146
|
}
|
|
146
|
-
// Write updated settings
|
|
147
|
-
|
|
147
|
+
// Write updated settings — only when something changed (#778).
|
|
148
|
+
writeFileIfChanged(claudeSettingsPath, JSON.stringify(settings, null, 2));
|
|
148
149
|
}
|
|
149
150
|
// ============================================================================
|
|
150
151
|
// Main Setup Function
|
|
@@ -195,7 +196,7 @@ export async function setupClaudeFlowIntegration(options) {
|
|
|
195
196
|
const configPath = join(aqeDir, 'claude-flow-integration.json');
|
|
196
197
|
try {
|
|
197
198
|
const config = generateClaudeFlowConfig(projectRoot, features);
|
|
198
|
-
|
|
199
|
+
writeFileIfChanged(configPath, JSON.stringify(config, null, 2));
|
|
199
200
|
if (debug)
|
|
200
201
|
console.log(`[ClaudeFlow] Config written to: ${configPath}`);
|
|
201
202
|
}
|
package/dist/cli/commands/mcp.js
CHANGED
|
@@ -13,6 +13,8 @@ import { join, dirname } from 'path';
|
|
|
13
13
|
import { existsSync } from 'fs';
|
|
14
14
|
import { fileURLToPath, pathToFileURL } from 'url';
|
|
15
15
|
import { findPackageRoot } from '../../init/find-package-root.js';
|
|
16
|
+
import { resolveCliLogLevel, setCliLogLevel } from '../log-gate.js';
|
|
17
|
+
import { LogLevel } from '../../logging/index.js';
|
|
16
18
|
/**
|
|
17
19
|
* Create the MCP command
|
|
18
20
|
*/
|
|
@@ -28,6 +30,10 @@ export function createMcpCommand() {
|
|
|
28
30
|
if (options.verbose) {
|
|
29
31
|
process.env.AQE_VERBOSE = 'true';
|
|
30
32
|
}
|
|
33
|
+
// The server runs in this process under the CLI log gate. Keep its
|
|
34
|
+
// historical INFO default (diagnostics go to stderr, never the stdio
|
|
35
|
+
// protocol stream) unless AQE_LOG_LEVEL / LOG_LEVEL say otherwise.
|
|
36
|
+
setCliLogLevel(resolveCliLogLevel(process.env, LogLevel.INFO));
|
|
31
37
|
// Find the MCP entry point
|
|
32
38
|
const entryPath = findMcpEntry();
|
|
33
39
|
if (!entryPath) {
|
|
@@ -7,5 +7,5 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Command } from 'commander';
|
|
9
9
|
import type { CLIContext } from '../handlers/interfaces.js';
|
|
10
|
-
export declare function createMemoryCommand(context: CLIContext, cleanupAndExit: (code: number) => Promise<never>,
|
|
10
|
+
export declare function createMemoryCommand(context: CLIContext, cleanupAndExit: (code: number) => Promise<never>, ensureMemoryReady: () => Promise<boolean>): Command;
|
|
11
11
|
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { Command } from 'commander';
|
|
9
9
|
import chalk from 'chalk';
|
|
10
10
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
11
|
-
export function createMemoryCommand(context, cleanupAndExit,
|
|
11
|
+
export function createMemoryCommand(context, cleanupAndExit, ensureMemoryReady) {
|
|
12
12
|
const memory = new Command('memory')
|
|
13
13
|
.description('Memory store, retrieve, search, and delete operations')
|
|
14
14
|
.addHelpText('after', `
|
|
@@ -47,7 +47,7 @@ Examples:
|
|
|
47
47
|
.option('--ttl <seconds>', 'Time-to-live in seconds')
|
|
48
48
|
.option('--json', 'Output as JSON')
|
|
49
49
|
.action(async (options) => {
|
|
50
|
-
if (!await
|
|
50
|
+
if (!await ensureMemoryReady())
|
|
51
51
|
return;
|
|
52
52
|
try {
|
|
53
53
|
const { handleMemoryStore } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -91,7 +91,7 @@ Examples:
|
|
|
91
91
|
.option('--include-metadata', 'Include metadata in response')
|
|
92
92
|
.option('--json', 'Output as JSON')
|
|
93
93
|
.action(async (options) => {
|
|
94
|
-
if (!await
|
|
94
|
+
if (!await ensureMemoryReady())
|
|
95
95
|
return;
|
|
96
96
|
try {
|
|
97
97
|
const { handleMemoryRetrieve } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -141,7 +141,7 @@ Examples:
|
|
|
141
141
|
console.error(chalk.red(' Either --pattern or --query is required'));
|
|
142
142
|
await cleanupAndExit(1);
|
|
143
143
|
}
|
|
144
|
-
if (!await
|
|
144
|
+
if (!await ensureMemoryReady())
|
|
145
145
|
return;
|
|
146
146
|
try {
|
|
147
147
|
const { handleMemoryQuery } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -186,7 +186,7 @@ Examples:
|
|
|
186
186
|
.option('--limit <n>', 'Maximum results', '50')
|
|
187
187
|
.option('--json', 'Output as JSON')
|
|
188
188
|
.action(async (options) => {
|
|
189
|
-
if (!await
|
|
189
|
+
if (!await ensureMemoryReady())
|
|
190
190
|
return;
|
|
191
191
|
try {
|
|
192
192
|
const { handleMemoryQuery } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -225,7 +225,7 @@ Examples:
|
|
|
225
225
|
.option('--namespace <ns>', 'Namespace', 'default')
|
|
226
226
|
.option('--json', 'Output as JSON')
|
|
227
227
|
.action(async (options) => {
|
|
228
|
-
if (!await
|
|
228
|
+
if (!await ensureMemoryReady())
|
|
229
229
|
return;
|
|
230
230
|
try {
|
|
231
231
|
const { handleMemoryDelete } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -264,7 +264,7 @@ Examples:
|
|
|
264
264
|
.requiredOption('--content <json>', 'JSON content to share')
|
|
265
265
|
.option('--json', 'Output as JSON')
|
|
266
266
|
.action(async (options) => {
|
|
267
|
-
if (!await
|
|
267
|
+
if (!await ensureMemoryReady())
|
|
268
268
|
return;
|
|
269
269
|
try {
|
|
270
270
|
const { handleMemoryShare } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -307,7 +307,7 @@ Examples:
|
|
|
307
307
|
.description('Show memory usage statistics')
|
|
308
308
|
.option('--json', 'Output as JSON')
|
|
309
309
|
.action(async (options) => {
|
|
310
|
-
if (!await
|
|
310
|
+
if (!await ensureMemoryReady())
|
|
311
311
|
return;
|
|
312
312
|
try {
|
|
313
313
|
const { handleMemoryUsage } = await import('../../mcp/handlers/memory-handlers.js');
|
|
@@ -18,6 +18,17 @@ import { toErrorMessage } from '../../shared/error-utils.js';
|
|
|
18
18
|
// Helpers
|
|
19
19
|
// ============================================================================
|
|
20
20
|
const VALID_PLATFORM_IDS = Object.keys(PLATFORM_REGISTRY);
|
|
21
|
+
// Literal import paths let esbuild include every installer in the shipped CLI.
|
|
22
|
+
const PLATFORM_INSTALLERS = {
|
|
23
|
+
copilot: () => import('../../init/copilot-installer.js'),
|
|
24
|
+
cursor: () => import('../../init/cursor-installer.js'),
|
|
25
|
+
cline: () => import('../../init/cline-installer.js'),
|
|
26
|
+
kilocode: () => import('../../init/kilocode-installer.js'),
|
|
27
|
+
roocode: () => import('../../init/roocode-installer.js'),
|
|
28
|
+
codex: () => import('../../init/codex-installer.js'),
|
|
29
|
+
windsurf: () => import('../../init/windsurf-installer.js'),
|
|
30
|
+
continuedev: () => import('../../init/continuedev-installer.js'),
|
|
31
|
+
};
|
|
21
32
|
function isValidPlatformId(name) {
|
|
22
33
|
return VALID_PLATFORM_IDS.includes(name);
|
|
23
34
|
}
|
|
@@ -205,8 +216,8 @@ export function createPlatformCommand() {
|
|
|
205
216
|
console.log(chalk.gray(' ─────────────────────────────────'));
|
|
206
217
|
console.log('');
|
|
207
218
|
try {
|
|
208
|
-
//
|
|
209
|
-
const installerModule = await
|
|
219
|
+
// Load the selected installer from a statically declared import.
|
|
220
|
+
const installerModule = await PLATFORM_INSTALLERS[name]();
|
|
210
221
|
// Resolve the factory function name: create<Name>Installer
|
|
211
222
|
const factoryName = `create${name.charAt(0).toUpperCase()}${name.slice(1).replace(/([a-z])([A-Z])/g, '$1$2')}Installer`;
|
|
212
223
|
// Find the factory function (try common naming patterns)
|
|
@@ -267,10 +278,12 @@ export function createPlatformCommand() {
|
|
|
267
278
|
console.log(chalk.red(` ${err}`));
|
|
268
279
|
}
|
|
269
280
|
}
|
|
281
|
+
process.exit(1);
|
|
270
282
|
}
|
|
271
283
|
}
|
|
272
284
|
catch (error) {
|
|
273
285
|
console.log(chalk.red(` Failed to set up ${platform.name}: ${toErrorMessage(error)}`));
|
|
286
|
+
process.exit(1);
|
|
274
287
|
}
|
|
275
288
|
console.log('');
|
|
276
289
|
});
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* `aqe upgrade` — read-only advisory
|
|
3
3
|
*
|
|
4
4
|
* Detects which optional native bindings load on this platform and prints a
|
|
5
|
-
* report with recommendations.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* report with recommendations. It reports the effective runtime flags after
|
|
6
|
+
* CLI startup applies environment overrides, but does not persist changes to
|
|
7
|
+
* environment variables or config files.
|
|
8
8
|
*
|
|
9
9
|
* Related: issue #383 item 2.
|
|
10
10
|
*/
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* `aqe upgrade` — read-only advisory
|
|
3
3
|
*
|
|
4
4
|
* Detects which optional native bindings load on this platform and prints a
|
|
5
|
-
* report with recommendations.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* report with recommendations. It reports the effective runtime flags after
|
|
6
|
+
* CLI startup applies environment overrides, but does not persist changes to
|
|
7
|
+
* environment variables or config files.
|
|
8
8
|
*
|
|
9
9
|
* Related: issue #383 item 2.
|
|
10
10
|
*/
|
|
@@ -70,6 +70,16 @@ export interface InitJsonOutput {
|
|
|
70
70
|
policy: 'full' | 'compact' | 'none';
|
|
71
71
|
ownedBytes: number;
|
|
72
72
|
};
|
|
73
|
+
codexComponents?: {
|
|
74
|
+
hooks: {
|
|
75
|
+
status: string;
|
|
76
|
+
error?: string;
|
|
77
|
+
};
|
|
78
|
+
skills: {
|
|
79
|
+
status: string;
|
|
80
|
+
error?: string;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
73
83
|
};
|
|
74
84
|
totalDurationMs: number;
|
|
75
85
|
timestamp: string;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import chalk from 'chalk';
|
|
7
7
|
import { getStatusColor, formatDuration, } from './interfaces.js';
|
|
8
|
+
import { ALL_DOMAINS, isDomainName } from '../../shared/types/index.js';
|
|
8
9
|
import { createTimedSpinner } from '../utils/progress.js';
|
|
9
10
|
import { parseJsonOption } from '../helpers/safe-json.js';
|
|
10
11
|
import { writeOutput, toJSON } from '../utils/ci-output.js';
|
|
@@ -32,7 +33,7 @@ export class TaskHandler {
|
|
|
32
33
|
.option('-d, --domain <domain>', 'Target domain')
|
|
33
34
|
.option('-t, --timeout <ms>', 'Task timeout in ms', '300000')
|
|
34
35
|
.option('--payload <json>', 'Task payload as JSON', '{}')
|
|
35
|
-
.option('--wait', 'Wait for task completion
|
|
36
|
+
.option('--wait', 'Wait for task completion (required: CLI tasks are not persisted)')
|
|
36
37
|
.option('--no-progress', 'Disable progress indicator')
|
|
37
38
|
.action(async (type, options) => {
|
|
38
39
|
await this.executeSubmit(type, options, context);
|
|
@@ -67,6 +68,25 @@ export class TaskHandler {
|
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
async executeSubmit(type, options, context) {
|
|
71
|
+
// #734 D: reject an unknown domain up front instead of accepting work that
|
|
72
|
+
// no domain will ever run.
|
|
73
|
+
if (options.domain !== undefined && !isDomainName(options.domain)) {
|
|
74
|
+
console.error(chalk.red(`\n Unknown domain: ${options.domain}`));
|
|
75
|
+
console.error(chalk.gray(` Valid domains: ${ALL_DOMAINS.join(', ')}\n`));
|
|
76
|
+
return this.cleanupAndExit(1);
|
|
77
|
+
}
|
|
78
|
+
// #734 C: a CLI-submitted task runs inside this process and is not
|
|
79
|
+
// persisted, so a detached submit would report an ID for work that is
|
|
80
|
+
// abandoned when the command exits. Refuse it rather than claim success.
|
|
81
|
+
if (!options.wait) {
|
|
82
|
+
console.error(chalk.red('\n Detached task submission is not supported.'));
|
|
83
|
+
console.error(chalk.gray(' Tasks submitted from the CLI run inside this process and are not persisted;'));
|
|
84
|
+
console.error(chalk.gray(' the task would be abandoned when the command exits, and `aqe task status`'));
|
|
85
|
+
console.error(chalk.gray(' from another process could not find it.'));
|
|
86
|
+
console.error(chalk.gray(' Re-run with --wait to execute the task and report its result, or submit it'));
|
|
87
|
+
console.error(chalk.gray(' through the MCP server (task_submit), which keeps a long-lived coordinator.\n'));
|
|
88
|
+
return this.cleanupAndExit(1);
|
|
89
|
+
}
|
|
70
90
|
if (!await this.ensureInitialized())
|
|
71
91
|
return this.cleanupAndExit(1);
|
|
72
92
|
try {
|
|
@@ -294,7 +314,8 @@ Submit Options:
|
|
|
294
314
|
-d, --domain <domain> Target domain
|
|
295
315
|
-t, --timeout <ms> Task timeout in milliseconds (default: 300000)
|
|
296
316
|
--payload <json> Task payload as JSON
|
|
297
|
-
--wait Wait for task completion
|
|
317
|
+
--wait Wait for task completion (required; CLI-submitted
|
|
318
|
+
tasks run in this process and are not persisted)
|
|
298
319
|
--no-progress Disable progress indicator
|
|
299
320
|
|
|
300
321
|
List Options:
|
|
@@ -303,7 +324,7 @@ List Options:
|
|
|
303
324
|
-d, --domain <domain> Filter by domain
|
|
304
325
|
|
|
305
326
|
Examples:
|
|
306
|
-
aqe task submit generate-tests --domain test-generation
|
|
327
|
+
aqe task submit generate-tests --domain test-generation --wait
|
|
307
328
|
aqe task submit analyze-coverage --wait --timeout 60000
|
|
308
329
|
aqe task list --status running
|
|
309
330
|
aqe task status task-123
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CLIContext } from '../handlers/interfaces.js';
|
|
2
|
+
/**
|
|
3
|
+
* Build the readiness check for `aqe memory` subcommands.
|
|
4
|
+
*
|
|
5
|
+
* Memory operations only need the project memory backend, so this opens
|
|
6
|
+
* .agentic-qe/memory.db directly instead of booting the full v3 system
|
|
7
|
+
* (kernel, Queen Coordinator, every domain coordinator, SONA engines,
|
|
8
|
+
* DreamScheduler). If a fleet is already running in this process, its kernel
|
|
9
|
+
* memory is used as before.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createEnsureMemoryBackend(context: CLIContext): () => Promise<boolean>;
|
|
12
|
+
//# sourceMappingURL=standalone-memory.d.ts.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Build the readiness check for `aqe memory` subcommands.
|
|
7
|
+
*
|
|
8
|
+
* Memory operations only need the project memory backend, so this opens
|
|
9
|
+
* .agentic-qe/memory.db directly instead of booting the full v3 system
|
|
10
|
+
* (kernel, Queen Coordinator, every domain coordinator, SONA engines,
|
|
11
|
+
* DreamScheduler). If a fleet is already running in this process, its kernel
|
|
12
|
+
* memory is used as before.
|
|
13
|
+
*/
|
|
14
|
+
export function createEnsureMemoryBackend(context) {
|
|
15
|
+
let ready = null;
|
|
16
|
+
const open = async () => {
|
|
17
|
+
try {
|
|
18
|
+
const [{ findProjectRoot }, { createKernelMemoryBackend }, { setStandaloneMemoryBackend }] = await Promise.all([
|
|
19
|
+
import('../../kernel/project-root.js'),
|
|
20
|
+
import('../../kernel/hybrid-backend.js'),
|
|
21
|
+
import('../../mcp/handlers/memory-handlers.js'),
|
|
22
|
+
]);
|
|
23
|
+
// Same data directory the kernel resolves when auto-initializing.
|
|
24
|
+
const dataDir = path.join(findProjectRoot(), '.agentic-qe');
|
|
25
|
+
fs.mkdirSync(dataDir, { recursive: true });
|
|
26
|
+
const backend = createKernelMemoryBackend(dataDir);
|
|
27
|
+
await backend.initialize();
|
|
28
|
+
setStandaloneMemoryBackend(backend);
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error(chalk.red(` Failed to open memory store: ${toErrorMessage(error)}`));
|
|
33
|
+
// Callers `return` on false; main() then exits with this code, matching
|
|
34
|
+
// ensureInitialized()'s failure path (#758).
|
|
35
|
+
process.exitCode = 1;
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return () => {
|
|
40
|
+
if (context.initialized)
|
|
41
|
+
return Promise.resolve(true);
|
|
42
|
+
ready ??= open();
|
|
43
|
+
return ready;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=standalone-memory.js.map
|