agentic-qe 3.9.15 → 3.9.17
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 +37 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/brain-commands.d.ts +14 -0
- package/dist/cli/brain-commands.js +24 -0
- package/dist/cli/bundle.js +7 -7
- package/dist/cli/chunks/adapter-2BIT6BGH.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-NA2VN5U2.js → agent-booster-wasm-JN7W7O5X.js} +2 -2
- package/dist/cli/chunks/{agent-handler-NRIF5IOC.js → agent-handler-F6Q75SJQ.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-NW3UB2UW.js → agent-memory-branch-3GGTDVR4.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-B5G3RG4W.js +2 -0
- package/dist/cli/chunks/{audit-5CSEDVJR.js → audit-R7KN45HM.js} +2 -2
- package/dist/cli/chunks/base-A3ZRMSIZ.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-FZ32SHZ6.js → better-sqlite3-2LTGEMYR.js} +2 -2
- package/dist/cli/chunks/brain-handler-PML5L6WQ.js +89 -0
- package/dist/cli/chunks/{branch-enumerator-IUHWHIMV.js → branch-enumerator-OKUPS2XC.js} +2 -2
- package/dist/cli/chunks/{browser-D4F3327X.js → browser-KOQOTSAT.js} +2 -2
- package/dist/cli/chunks/browser-workflow-C6Z53ZH6.js +2 -0
- package/dist/cli/chunks/chunk-2ARCG4XJ.js +2 -0
- package/dist/cli/chunks/{chunk-WI6UA5HV.js → chunk-2K7GRX5U.js} +2 -2
- package/dist/cli/chunks/{chunk-DATFN5DG.js → chunk-2LXXYKAP.js} +2 -2
- package/dist/cli/chunks/{chunk-O6J7MKRV.js → chunk-32FWC6G3.js} +2 -2
- package/dist/cli/chunks/{chunk-NL2PQLRD.js → chunk-3GYAIW2P.js} +2 -2
- package/dist/cli/chunks/{chunk-KJTXY3DW.js → chunk-3KIUCAVI.js} +1 -1
- package/dist/cli/chunks/{chunk-37ZSWRRP.js → chunk-3UGV2XWF.js} +2 -2
- package/dist/cli/chunks/{chunk-2CN2NPJQ.js → chunk-42HSEBOH.js} +2 -2
- package/dist/cli/chunks/{chunk-RODJK6G6.js → chunk-42TUEMH7.js} +1 -1
- package/dist/cli/chunks/{chunk-HPY7HGVQ.js → chunk-4TDIA2EN.js} +2 -2
- package/dist/cli/chunks/{chunk-N2RPLPVG.js → chunk-5J444NJR.js} +2 -2
- package/dist/cli/chunks/{chunk-B4BOOOYM.js → chunk-63ERVKIO.js} +1 -1
- package/dist/cli/chunks/{chunk-O6CHLZYT.js → chunk-63V33NAB.js} +2 -2
- package/dist/cli/chunks/{chunk-XALB3KRR.js → chunk-65Z6HMDA.js} +2 -2
- package/dist/cli/chunks/{chunk-62MVVEGH.js → chunk-6F6BNLVP.js} +1 -1
- package/dist/cli/chunks/{chunk-R4G64UH3.js → chunk-6HGRJPD6.js} +1 -1
- package/dist/cli/chunks/{chunk-GWUO3RY5.js → chunk-6MRUG5G2.js} +1 -1
- package/dist/cli/chunks/{chunk-3Y4YZDHJ.js → chunk-6PCGUJCG.js} +4 -4
- package/dist/cli/chunks/{chunk-BGUCXJEJ.js → chunk-6PRIY3HT.js} +2 -2
- package/dist/cli/chunks/{chunk-U4WDJPRL.js → chunk-6YCZDIGF.js} +2 -2
- package/dist/cli/chunks/{chunk-2XW36KDQ.js → chunk-6YFEWIL5.js} +2 -2
- package/dist/cli/chunks/{chunk-W4PUKTBF.js → chunk-7PWW2OXP.js} +1 -1
- package/dist/cli/chunks/{chunk-TZWCVGG2.js → chunk-7VGZDTY4.js} +1 -1
- package/dist/cli/chunks/{chunk-ORKGVVXK.js → chunk-A3WC5KTG.js} +1 -1
- package/dist/cli/chunks/{chunk-FSOY2XB4.js → chunk-A67FRRPJ.js} +3 -3
- package/dist/cli/chunks/{chunk-V775NJOM.js → chunk-AFLTMVMT.js} +1 -1
- package/dist/cli/chunks/{chunk-REUGPZIA.js → chunk-APWO3FI3.js} +1 -1
- package/dist/cli/chunks/{chunk-MS6T4VCU.js → chunk-ARN2KDLJ.js} +2 -2
- package/dist/cli/chunks/{chunk-OBZMQFWG.js → chunk-AZQ476BM.js} +2 -2
- package/dist/cli/chunks/{chunk-IPTGPCEL.js → chunk-AZWCJFT6.js} +2 -2
- package/dist/cli/chunks/{chunk-LLVS3UYZ.js → chunk-B36RPXAQ.js} +2 -2
- package/dist/cli/chunks/{chunk-YCYFUYCE.js → chunk-B3M3JEFD.js} +2 -2
- package/dist/cli/chunks/{chunk-TJDAXI6E.js → chunk-BCBC3DVN.js} +2 -2
- package/dist/cli/chunks/{chunk-Q3GDSFGA.js → chunk-BCIEQ4IP.js} +2 -2
- package/dist/cli/chunks/{chunk-OMTYOIOS.js → chunk-BGY4CHZA.js} +2 -2
- package/dist/cli/chunks/{chunk-7J5KWUC2.js → chunk-BUWZOMC7.js} +1 -1
- package/dist/cli/chunks/{chunk-V6QARSVQ.js → chunk-CPZUNBSQ.js} +2 -2
- package/dist/cli/chunks/{chunk-UZOFXYNC.js → chunk-CQSU7NTG.js} +2 -2
- package/dist/cli/chunks/{chunk-VBEVZUQW.js → chunk-CY73RJJJ.js} +1 -1
- package/dist/cli/chunks/{chunk-DYQ7HTEU.js → chunk-CZXV3JAF.js} +3 -3
- package/dist/cli/chunks/{chunk-6F3H2C5H.js → chunk-DDJUVCKF.js} +3 -3
- package/dist/cli/chunks/{chunk-JJDHD7SC.js → chunk-DJXYFFGA.js} +2 -2
- package/dist/cli/chunks/{chunk-AVKUFN3C.js → chunk-DR6SJ6P3.js} +2 -2
- package/dist/cli/chunks/{chunk-HJNFBJT5.js → chunk-DVEQOD74.js} +8 -8
- package/dist/cli/chunks/{chunk-3RSPEFU3.js → chunk-EGBRCXYT.js} +2 -2
- package/dist/cli/chunks/{chunk-AE65B2ZE.js → chunk-EVQYUUQ3.js} +2 -2
- package/dist/cli/chunks/{chunk-6OEGZSRK.js → chunk-F5X3U57Y.js} +2 -2
- package/dist/cli/chunks/{chunk-CF3W34BA.js → chunk-FCWB2FJG.js} +1 -1
- package/dist/cli/chunks/{chunk-WAQ3U4FC.js → chunk-FVVZWNLV.js} +1 -1
- package/dist/cli/chunks/{chunk-6BHAGCZD.js → chunk-FYNDV2NZ.js} +1 -1
- package/dist/cli/chunks/{chunk-SXUX6PTE.js → chunk-G3G5QEHL.js} +1 -1
- package/dist/cli/chunks/{chunk-6Z7LYE2B.js → chunk-G5DEPXD4.js} +2 -2
- package/dist/cli/chunks/{chunk-SSQ42GI7.js → chunk-HMT6LKHH.js} +2 -2
- package/dist/cli/chunks/{chunk-MO4Q5ZGE.js → chunk-HQXRCW7Z.js} +2 -2
- package/dist/cli/chunks/{chunk-PSOIVDD2.js → chunk-I3NUJ6KJ.js} +3 -3
- package/dist/cli/chunks/{chunk-JQRR37YY.js → chunk-I5BLJ2QQ.js} +2 -2
- package/dist/cli/chunks/{chunk-II5KTTIS.js → chunk-I64R2D4U.js} +4 -4
- package/dist/cli/chunks/{chunk-G3FUOFXA.js → chunk-JC4O47QG.js} +2 -2
- package/dist/cli/chunks/{chunk-DPEG44BS.js → chunk-JT2KLBDB.js} +2 -2
- package/dist/cli/chunks/{chunk-OHESV6I3.js → chunk-JVDYHVF2.js} +4 -4
- package/dist/cli/chunks/{chunk-D3ZUSXFY.js → chunk-K44EQV74.js} +2 -2
- package/dist/cli/chunks/{chunk-HNAQNAGI.js → chunk-K4FG3CRS.js} +3 -3
- package/dist/cli/chunks/{chunk-ISNXE6TP.js → chunk-KTJWRVFR.js} +2 -2
- package/dist/cli/chunks/{chunk-VDDQSW4L.js → chunk-KTUSZRS3.js} +2 -2
- package/dist/cli/chunks/{chunk-7ZPNQ3T6.js → chunk-KUEG6K4A.js} +1 -1
- package/dist/cli/chunks/{chunk-CWWUBZNX.js → chunk-L5JZIORJ.js} +2 -2
- package/dist/cli/chunks/{chunk-HWK27KJK.js → chunk-L6ZJSFAA.js} +1 -1
- package/dist/cli/chunks/{chunk-JAIIPEE6.js → chunk-LA565BGJ.js} +2 -2
- package/dist/cli/chunks/{chunk-WCOJGDGO.js → chunk-LD4OYOX2.js} +2 -2
- package/dist/cli/chunks/{chunk-2BBKAX7X.js → chunk-MER7IHAZ.js} +2 -2
- package/dist/cli/chunks/{chunk-4T36OQUK.js → chunk-MNSF47HC.js} +3 -3
- package/dist/cli/chunks/{chunk-H6DAP4KS.js → chunk-MPEQXXXR.js} +2 -2
- package/dist/cli/chunks/{chunk-2L5ZFBHP.js → chunk-N64PBOR5.js} +2 -2
- package/dist/cli/chunks/{chunk-6TOUMCSE.js → chunk-ORNWQXEX.js} +2 -2
- package/dist/cli/chunks/{chunk-ZOAPOVYW.js → chunk-OSBJWQZL.js} +2 -2
- package/dist/cli/chunks/{chunk-GLJ6CJNY.js → chunk-OUSQ4KQN.js} +2 -2
- package/dist/cli/chunks/{chunk-RWVFOXYM.js → chunk-P2V5ZG3Q.js} +1 -1
- package/dist/cli/chunks/{chunk-6AMD4PZB.js → chunk-PEHHOJE6.js} +2 -2
- package/dist/cli/chunks/{chunk-IHDW4HW7.js → chunk-PGTMLW5K.js} +2 -2
- package/dist/cli/chunks/{chunk-NWMYV7KG.js → chunk-PJZHNAUT.js} +2 -2
- package/dist/cli/chunks/{chunk-E3EDVRB5.js → chunk-PMH52K5J.js} +1 -1
- package/dist/cli/chunks/{chunk-EY2DGYQX.js → chunk-PMNZN4K7.js} +1 -1
- package/dist/cli/chunks/{chunk-56YHSI6R.js → chunk-PV6WBC2D.js} +2 -2
- package/dist/cli/chunks/{chunk-RTVD7SZQ.js → chunk-QFFSQWXP.js} +1 -1
- package/dist/cli/chunks/{chunk-Q3E6Z2RQ.js → chunk-QMVGGG4B.js} +1 -1
- package/dist/cli/chunks/{chunk-3BA2FGSA.js → chunk-QVJQXRHU.js} +2 -2
- package/dist/cli/chunks/{chunk-GHEO5YVA.js → chunk-QW554DTP.js} +1 -1
- package/dist/cli/chunks/{chunk-XXRDI53H.js → chunk-QXOAFWWK.js} +2 -2
- package/dist/cli/chunks/{chunk-V65DK6ZZ.js → chunk-QYDBV5MD.js} +1 -1
- package/dist/cli/chunks/{chunk-ELLNKP3I.js → chunk-R3COBKOP.js} +3 -3
- package/dist/cli/chunks/{chunk-ZHTCZGML.js → chunk-RP2RHB7H.js} +2 -2
- package/dist/cli/chunks/{chunk-EORSYD66.js → chunk-RYATPB5L.js} +2 -2
- package/dist/cli/chunks/{chunk-ESQSX37W.js → chunk-TATCL3AK.js} +2 -2
- package/dist/cli/chunks/{chunk-IPVKVPAF.js → chunk-USORP6QK.js} +2 -2
- package/dist/cli/chunks/{chunk-FW6QBTPE.js → chunk-UTO2M76W.js} +1 -1
- package/dist/cli/chunks/{chunk-D32YCVCA.js → chunk-V3VJNWOF.js} +2 -2
- package/dist/cli/chunks/{chunk-KKBSX43Q.js → chunk-V4DMYY6P.js} +2 -2
- package/dist/cli/chunks/{chunk-3NIHJIWP.js → chunk-VI2I5R6C.js} +2 -2
- package/dist/cli/chunks/{chunk-QNLZKD7E.js → chunk-VX6XHAG2.js} +2 -2
- package/dist/cli/chunks/{chunk-LNUWNRRJ.js → chunk-VYCFMW64.js} +9 -9
- package/dist/cli/chunks/{chunk-CSB2M7IX.js → chunk-W5HTZ3VZ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZSC7NHK3.js → chunk-WGEJ646F.js} +2 -2
- package/dist/cli/chunks/{chunk-ICXWXO5P.js → chunk-WP55YBB2.js} +1 -1
- package/dist/cli/chunks/{chunk-MHL6CPGY.js → chunk-X66N7E7D.js} +1 -1
- package/dist/cli/chunks/{chunk-CUQBOVRP.js → chunk-XB4JRJU4.js} +1 -1
- package/dist/cli/chunks/{chunk-3FUKJT4S.js → chunk-XMMKAV5R.js} +2 -2
- package/dist/cli/chunks/{chunk-RPOW5LWO.js → chunk-XZOJWFLH.js} +1 -1
- package/dist/cli/chunks/{chunk-OUP2X3LT.js → chunk-Y47U7ICT.js} +1 -1
- package/dist/cli/chunks/{chunk-IMLH32AG.js → chunk-YE5AYBHX.js} +2 -2
- package/dist/cli/chunks/{chunk-D3FV5NNA.js → chunk-YUCMGFHE.js} +2 -2
- package/dist/cli/chunks/chunk-Z5R46W6Q.js +2 -0
- package/dist/cli/chunks/{chunk-4M7RBSW6.js → chunk-Z77BVREU.js} +2 -2
- package/dist/cli/chunks/{chunk-C5BRTU4V.js → chunk-ZI3UBCIN.js} +1 -1
- package/dist/cli/chunks/{chunk-65QA7MYW.js → chunk-ZLOMFM25.js} +2 -2
- package/dist/cli/chunks/{chunk-RSOOENGE.js → chunk-ZQKNVZPD.js} +2 -2
- package/dist/cli/chunks/{ci-BGUUHDUS.js → ci-TRWQ33L2.js} +2 -2
- package/dist/cli/chunks/{ci-output-CDFRGBNU.js → ci-output-TCFNHOTU.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-S3NFX6RQ.js → circuit-breaker-GO2TIL7E.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-AJIPJFMC.js → claude-flow-setup-U77JVSVU.js} +2 -2
- package/dist/cli/chunks/client-B3QSCZSJ.js +2 -0
- package/dist/cli/chunks/{cline-installer-6O4KZ5UH.js → cline-installer-XFD3SMGS.js} +2 -2
- package/dist/cli/chunks/{code-IZALXUL5.js → code-V3VE2TMW.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-N7VDH4XF.js → code-index-extractor-C6DHOOWA.js} +2 -2
- package/dist/cli/chunks/{codex-installer-35GTWCFJ.js → codex-installer-IUR7MVE6.js} +2 -2
- package/dist/cli/chunks/{completions-XPJFHGG2.js → completions-R7FZHNJJ.js} +91 -10
- package/dist/cli/chunks/{complexity-analyzer-DNLCJGUJ.js → complexity-analyzer-EP4QF5CS.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-PXAIKNYO.js → continuedev-installer-6DW2SBMQ.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-2TQ5IZNY.js → copilot-installer-U3UOX7D5.js} +2 -2
- package/dist/cli/chunks/{cost-tracker-A5XH4W6S.js → cost-tracker-5QZ5A46I.js} +2 -2
- package/dist/cli/chunks/{coverage-EPIMXTLW.js → coverage-QOOOITLD.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-OYBTXKCV.js +2 -0
- package/dist/cli/chunks/{cursor-installer-WMMRPW44.js → cursor-installer-SY3TRE2I.js} +2 -2
- package/dist/cli/chunks/{daemon-55DSODOH.js → daemon-HBSBIPUZ.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-5DSWXMMK.js → dag-attention-scheduler-ZNLUW2HL.js} +2 -2
- package/dist/cli/chunks/{detect-NOS46AWN.js → detect-DMUJPGNC.js} +2 -2
- package/dist/cli/chunks/dist-node-4RPPRXUH.js +2 -0
- package/dist/cli/chunks/{domain-handler-BFRNU6S3.js → domain-handler-XJFDML77.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-BPSA4HFR.js → domain-transfer-MXPKJ2A2.js} +2 -2
- package/dist/cli/chunks/dream-R2F6L47W.js +2 -0
- package/dist/cli/chunks/{eval-YDLM23FB.js → eval-DHBZ74RL.js} +2 -2
- package/dist/cli/chunks/{fast-paths-GISZ7HBO.js → fast-paths-WTNFCV2I.js} +2 -2
- package/dist/cli/chunks/{feature-flags-3FLJF6CQ.js → feature-flags-264QUQ3E.js} +2 -2
- package/dist/cli/chunks/{feature-flags-5WGZLUPQ.js → feature-flags-VC7BQNHU.js} +2 -2
- package/dist/cli/chunks/{file-discovery-PPHUMFSI.js → file-discovery-LXQPIRKG.js} +2 -2
- package/dist/cli/chunks/{fleet-LHFZ53FS.js → fleet-4OAZWNXG.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-Z45DRWGI.js → gnn-wrapper-MAXAOMTP.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-VMLJ5PDH.js → heartbeat-handler-ZTUI75EB.js} +4 -4
- package/dist/cli/chunks/{heartbeat-scheduler-GUWYDHEY.js → heartbeat-scheduler-VWPA7XKA.js} +2 -2
- package/dist/cli/chunks/hnsw-adapter-TQPQE4OJ.js +2 -0
- package/dist/cli/chunks/hnsw-index-2X3NMTDU.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-S7UZWDUP.js → hnsw-legacy-bridge-EQDYPKGL.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-MIAAS7OI.js → hnswlib-node-G4QGTGIB.js} +2 -2
- package/dist/cli/chunks/hooks-RBVHAPBL.js +101 -0
- package/dist/cli/chunks/{hybrid-router-Y6LBFPL7.js → hybrid-router-XODWORQ3.js} +2 -2
- package/dist/cli/chunks/{hypergraph-engine-KK73LZYZ.js → hypergraph-engine-T73DH7N6.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-OBGDPIWG.js → hypergraph-handler-OZJJJW5B.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-B7GBDSA3.js +2 -0
- package/dist/cli/chunks/{init-handler-JJJ7VHM4.js → init-handler-YXXNCXM4.js} +6 -6
- package/dist/cli/chunks/init-wizard-7N6MCER4.js +2 -0
- package/dist/cli/chunks/kernel-6CJ4FP5Z.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-EF6DPX2D.js → kilocode-installer-3RCK2JPW.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-SG74CEVO.js → kiro-installer-LKC42QRS.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-4XYLO6ZW.js +2 -0
- package/dist/cli/chunks/{learning-LVWYMHF6.js → learning-BIBRKCYL.js} +3 -3
- package/dist/cli/chunks/{llm-router-QFK7MNPY.js → llm-router-Z6Z7TTBI.js} +4 -4
- package/dist/cli/chunks/{load-6XPV4WA2.js → load-T2QUB663.js} +2 -2
- package/dist/cli/chunks/load-test-UODCPBYF.js +2 -0
- package/dist/cli/chunks/{mcp-GZXOPYMH.js → mcp-QBOL6TK4.js} +2 -2
- package/dist/cli/chunks/{memory-QTE2Z5HU.js → memory-7RQ2SF36.js} +5 -5
- package/dist/cli/chunks/memory-backend-PUPAE4QQ.js +2 -0
- package/dist/cli/chunks/{memory-handlers-PC4P4YEF.js → memory-handlers-5OHDUBJS.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-FZOPSUOT.js → multi-model-executor-PGSNT3NO.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-CITDTCUQ.js → opencode-installer-AEOXTTFG.js} +2 -2
- package/dist/cli/chunks/{orchestrator-ZTG7MFHQ.js → orchestrator-6K2L36JA.js} +6 -6
- package/dist/cli/chunks/{pipeline-QXO4EJP4.js → pipeline-MFQCW7JD.js} +2 -2
- package/dist/cli/chunks/{platform-JJEDYCAK.js → platform-DM6RQ3FM.js} +2 -2
- package/dist/cli/chunks/{plugin-ZEKRM6F7.js → plugin-CCTGDC55.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-GRS4T6LR.js → prime-radiant-advanced-wasm-J4FXB63L.js} +2 -2
- package/dist/cli/chunks/protocol-executor-X3EYJINP.js +2 -0
- package/dist/cli/chunks/{protocol-handler-KWI2T6OR.js → protocol-handler-7UOBNLET.js} +2 -2
- package/dist/cli/chunks/{prove-7FJN2HEH.js → prove-VAPGITFF.js} +2 -2
- package/dist/cli/chunks/{provider-manager-QYYZZLLO.js → provider-manager-F6TLUJFW.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-3RDWPSYG.js +2 -0
- package/dist/cli/chunks/{quality-4NHO2NY5.js → quality-7LJQI3SB.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-XIQZIYAZ.js +2 -0
- package/dist/cli/chunks/{real-embeddings-SIELAOWX.js → real-embeddings-NHWAUSV3.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-ANYXH3NR.js → roocode-installer-HQFQJJPU.js} +2 -2
- package/dist/cli/chunks/router-AFEFPU2A.js +2 -0
- package/dist/cli/chunks/routing-feedback-AGYMQFMV.js +2 -0
- package/dist/cli/chunks/{routing-handler-6QQHK4KV.js → routing-handler-VH66WSPU.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-YEUA3MZB.js → ruvector-commands-IPUWLJFU.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-UJFRHPVE.js → rvf-dual-writer-KRFEM6JH.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-CSDFG7UA.js → rvf-migration-adapter-SVCZ72IU.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-QO7OENQF.js → rvf-migration-coordinator-FYBIF3SX.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-AFOWXCZH.js +2 -0
- package/dist/cli/chunks/safe-db-NNF5DE5T.js +2 -0
- package/dist/cli/chunks/schedule-HJUZSHEA.js +2 -0
- package/dist/cli/chunks/scheduler-DZ53RPJQ.js +2 -0
- package/dist/cli/chunks/{security-QCIUC5FX.js → security-C2I6CG7B.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-5UQSTUSR.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-LVJJS3PD.js → shared-rvf-dual-writer-BPIFGN7I.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-27ESC5DX.js +2 -0
- package/dist/cli/chunks/{status-handler-O77A4JWM.js → status-handler-57UA6GNR.js} +2 -2
- package/dist/cli/chunks/{structural-health-WIIBIIQI.js → structural-health-KMHBG6FO.js} +2 -2
- package/dist/cli/chunks/{sync-UN6D6OF2.js → sync-53YM6U4S.js} +2 -2
- package/dist/cli/chunks/{task-handler-RBOSMJCK.js → task-handler-W2XPS5WW.js} +2 -2
- package/dist/cli/chunks/{task-handlers-VWMXQKAT.js → task-handlers-BG4IAMBJ.js} +2 -2
- package/dist/cli/chunks/{test-XK5M3PGT.js → test-QJBBVPL2.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-CTQ3JJ7G.js → test-scheduling-Y4J6EY2K.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-D5CQ3I5M.js → token-bootstrap-3TKR3UIE.js} +2 -2
- package/dist/cli/chunks/{token-usage-L4QSLWQ5.js → token-usage-5FUNHHVZ.js} +2 -2
- package/dist/cli/chunks/{transformers-SRPJDBKA.js → transformers-KVPA35SR.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-DOU5ITWB.js → tree-sitter-wasm-parser-LTBBLY5U.js} +2 -2
- package/dist/cli/chunks/{types-LECYZUBN.js → types-Y2BHPD6B.js} +2 -2
- package/dist/cli/chunks/unified-memory-O7GFUSD3.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-XBLROJEN.js +2 -0
- package/dist/cli/chunks/unified-persistence-YBHEAL2S.js +2 -0
- package/dist/cli/chunks/upgrade-E4VAQZQR.js +5 -0
- package/dist/cli/chunks/{validate-SIKNIS6B.js → validate-4ICDQCKJ.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-EHAMMILJ.js → validate-swarm-AIEOQOUF.js} +2 -2
- package/dist/cli/chunks/{vibium-LJ4NYXMZ.js → vibium-AF2K6YXR.js} +2 -2
- package/dist/cli/chunks/visual-security-4F7VYCAU.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-DZQ3T4JD.js → web-tree-sitter-PM67K5SP.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-U6Z73O6J.js → windsurf-installer-4MKUQ2KT.js} +2 -2
- package/dist/cli/chunks/witness-chain-AXJ44BGW.js +2 -0
- package/dist/cli/chunks/{witness-chain-JE3QU4YP.js → witness-chain-FLPF7CS6.js} +2 -2
- package/dist/cli/chunks/{workflow-62QXGZQO.js → workflow-DHTCI6QD.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-UAFUPHD3.js +2 -0
- package/dist/cli/chunks/{wrappers-CAX5EZSH.js → wrappers-5K6UGI3T.js} +2 -2
- package/dist/cli/commands/hooks-handlers/routing-hooks.d.ts +6 -0
- package/dist/cli/commands/hooks-handlers/routing-hooks.js +80 -4
- package/dist/cli/commands/upgrade.d.ts +96 -0
- package/dist/cli/commands/upgrade.js +342 -0
- package/dist/cli/completions/index.d.ts +27 -0
- package/dist/cli/completions/index.js +112 -14
- package/dist/cli/handlers/brain-handler.d.ts +2 -0
- package/dist/cli/handlers/brain-handler.js +221 -1
- package/dist/cli/index.js +5 -1
- package/dist/init/init-wizard-hooks.js +4 -1
- package/dist/init/phases/07-hooks.js +4 -1
- package/dist/integrations/ruvector/brain-diff.d.ts +93 -0
- package/dist/integrations/ruvector/brain-diff.js +281 -0
- package/dist/integrations/ruvector/brain-search.d.ts +78 -0
- package/dist/integrations/ruvector/brain-search.js +154 -0
- package/dist/mcp/bundle.js +348 -348
- package/package.json +2 -2
- package/dist/cli/chunks/adapter-P2EPBJLF.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-6UITO3NJ.js +0 -2
- package/dist/cli/chunks/base-JHBJXVGP.js +0 -2
- package/dist/cli/chunks/brain-handler-ISVST4MR.js +0 -68
- package/dist/cli/chunks/browser-workflow-U4OON5DZ.js +0 -2
- package/dist/cli/chunks/chunk-FEVTMHO6.js +0 -2
- package/dist/cli/chunks/chunk-MBDX4OHD.js +0 -2
- package/dist/cli/chunks/client-UHHMKUPF.js +0 -2
- package/dist/cli/chunks/cross-domain-router-GEBXTPZW.js +0 -2
- package/dist/cli/chunks/dream-XBRGYPBC.js +0 -2
- package/dist/cli/chunks/esm-node-EV4HOHTZ.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-BG73YVXI.js +0 -2
- package/dist/cli/chunks/hnsw-index-K73ZTLJN.js +0 -2
- package/dist/cli/chunks/hooks-ZN4FV5XS.js +0 -101
- package/dist/cli/chunks/impact-analyzer-GWIUYYCQ.js +0 -2
- package/dist/cli/chunks/init-wizard-RIJJAKE3.js +0 -2
- package/dist/cli/chunks/kernel-SIPBCRGL.js +0 -2
- package/dist/cli/chunks/knowledge-graph-NOYZXHIG.js +0 -2
- package/dist/cli/chunks/load-test-DIMUH75F.js +0 -2
- package/dist/cli/chunks/memory-backend-IWOGO4BV.js +0 -2
- package/dist/cli/chunks/protocol-executor-NT4TILJW.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-VDROHXFS.js +0 -2
- package/dist/cli/chunks/queen-coordinator-7LO73IV3.js +0 -2
- package/dist/cli/chunks/router-SFVOLN2W.js +0 -2
- package/dist/cli/chunks/routing-feedback-MRFV7WUZ.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-6L7FZZC7.js +0 -2
- package/dist/cli/chunks/safe-db-PYWBVGOV.js +0 -2
- package/dist/cli/chunks/schedule-BUQU75HY.js +0 -2
- package/dist/cli/chunks/scheduler-XOSKWZO2.js +0 -2
- package/dist/cli/chunks/shared-rvf-adapter-OZ7S4ZQL.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-7UXQZ5Y6.js +0 -2
- package/dist/cli/chunks/unified-memory-L6735TFM.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-7TZNEDGY.js +0 -2
- package/dist/cli/chunks/unified-persistence-FNYZ3C2B.js +0 -2
- package/dist/cli/chunks/visual-security-SMPZPDY4.js +0 -2
- package/dist/cli/chunks/witness-chain-FNCOTWFA.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-RCR4N7OA.js +0 -2
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import chalk from 'chalk';
|
|
9
|
-
import { exportBrain, importBrain, brainInfo, witnessBackfill, } from '../brain-commands.js';
|
|
9
|
+
import { exportBrain, importBrain, brainInfo, brainDiff, brainSearch, witnessBackfill, } from '../brain-commands.js';
|
|
10
10
|
// ============================================================================
|
|
11
11
|
// Brain Handler
|
|
12
12
|
// ============================================================================
|
|
@@ -56,6 +56,32 @@ export class BrainHandler {
|
|
|
56
56
|
.action(async (options) => {
|
|
57
57
|
await this.executeWitnessBackfill(options);
|
|
58
58
|
});
|
|
59
|
+
brain
|
|
60
|
+
.command('diff')
|
|
61
|
+
.description('Compare two brain exports (JSONL directory or .rvf file)')
|
|
62
|
+
.argument('<a>', 'Path to first brain export')
|
|
63
|
+
.argument('<b>', 'Path to second brain export')
|
|
64
|
+
.option('--table <name>', 'Restrict comparison to a single table')
|
|
65
|
+
.option('--verbose', 'Show the IDs of added/removed/changed records', false)
|
|
66
|
+
.option('--json', 'Emit the diff as JSON to stdout', false)
|
|
67
|
+
.action(async (a, b, options) => {
|
|
68
|
+
await this.executeDiff(a, b, options);
|
|
69
|
+
});
|
|
70
|
+
brain
|
|
71
|
+
.command('search')
|
|
72
|
+
.description('Search a JSONL brain export with filters')
|
|
73
|
+
.requiredOption('-i, --input <path>', 'Path to brain export directory (JSONL)')
|
|
74
|
+
.option('--table <name>', 'Table to search (default: qe_patterns)')
|
|
75
|
+
.option('--domain <name...>', 'Restrict to one or more domains')
|
|
76
|
+
.option('--pattern-type <type>', 'Restrict to a specific pattern_type (qe_patterns only)')
|
|
77
|
+
.option('--since <iso>', 'Include rows with timestamp ≥ <iso>')
|
|
78
|
+
.option('--until <iso>', 'Include rows with timestamp ≤ <iso>')
|
|
79
|
+
.option('-q, --query <text>', 'Substring match across name + description (case-insensitive)')
|
|
80
|
+
.option('-l, --limit <n>', 'Maximum results to return', '20')
|
|
81
|
+
.option('--json', 'Emit results as JSON to stdout', false)
|
|
82
|
+
.action(async (options) => {
|
|
83
|
+
await this.executeSearch(options);
|
|
84
|
+
});
|
|
59
85
|
}
|
|
60
86
|
async executeExport(options) {
|
|
61
87
|
try {
|
|
@@ -224,6 +250,51 @@ export class BrainHandler {
|
|
|
224
250
|
await this.cleanupAndExit(1);
|
|
225
251
|
}
|
|
226
252
|
}
|
|
253
|
+
async executeDiff(a, b, options) {
|
|
254
|
+
try {
|
|
255
|
+
const result = await brainDiff(path.resolve(a), path.resolve(b), {
|
|
256
|
+
tableFilter: options.table,
|
|
257
|
+
});
|
|
258
|
+
if (options.json) {
|
|
259
|
+
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
260
|
+
await this.cleanupAndExit(result.identical ? 0 : 1);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
renderDiff(result, options.verbose);
|
|
264
|
+
// Exit code convention: 0 when identical, 1 when differences exist.
|
|
265
|
+
await this.cleanupAndExit(result.identical ? 0 : 1);
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
console.error(chalk.red('\n Brain diff failed:'), error);
|
|
269
|
+
await this.cleanupAndExit(2);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
async executeSearch(options) {
|
|
273
|
+
try {
|
|
274
|
+
const limit = parseLimit(options.limit);
|
|
275
|
+
const domains = normalizeDomainOption(options.domain);
|
|
276
|
+
const result = await brainSearch(path.resolve(options.input), {
|
|
277
|
+
table: options.table,
|
|
278
|
+
domains,
|
|
279
|
+
patternType: options.patternType,
|
|
280
|
+
since: options.since,
|
|
281
|
+
until: options.until,
|
|
282
|
+
query: options.query,
|
|
283
|
+
limit,
|
|
284
|
+
});
|
|
285
|
+
if (options.json) {
|
|
286
|
+
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
287
|
+
await this.cleanupAndExit(result.totalMatched > 0 ? 0 : 3);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
renderSearch(result);
|
|
291
|
+
await this.cleanupAndExit(result.totalMatched > 0 ? 0 : 3);
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
console.error(chalk.red('\n Brain search failed:'), error);
|
|
295
|
+
await this.cleanupAndExit(2);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
227
298
|
async executeWitnessBackfill(options) {
|
|
228
299
|
try {
|
|
229
300
|
console.log(chalk.blue('\n Running witness chain backfill...\n'));
|
|
@@ -258,6 +329,8 @@ Subcommands:
|
|
|
258
329
|
export Export brain state to a portable .rvf file or JSONL directory
|
|
259
330
|
import Import a brain export into the local database
|
|
260
331
|
info Show manifest metadata for an existing brain export
|
|
332
|
+
diff Compare two brain exports (manifest always; record-level for JSONL)
|
|
333
|
+
search Filtered search over a JSONL brain export
|
|
261
334
|
|
|
262
335
|
Examples:
|
|
263
336
|
aqe brain export -o .agentic-qe/brain.rvf
|
|
@@ -266,6 +339,9 @@ Examples:
|
|
|
266
339
|
aqe brain import -i .agentic-qe/brain.rvf --strategy latest-wins
|
|
267
340
|
aqe brain import -i .agentic-qe/brain.rvf --dry-run
|
|
268
341
|
aqe brain info -i .agentic-qe/brain.rvf
|
|
342
|
+
aqe brain diff ./brain-a ./brain-b --verbose
|
|
343
|
+
aqe brain search -i ./brain-export --query oauth --domain test-generation
|
|
344
|
+
aqe brain search -i ./brain-export --since 2026-03-01 --limit 50 --json
|
|
269
345
|
`;
|
|
270
346
|
}
|
|
271
347
|
}
|
|
@@ -285,6 +361,150 @@ function formatBytes(bytes) {
|
|
|
285
361
|
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
286
362
|
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
287
363
|
}
|
|
364
|
+
function parseLimit(raw) {
|
|
365
|
+
const n = Number.parseInt(raw, 10);
|
|
366
|
+
if (!Number.isFinite(n) || n < 1)
|
|
367
|
+
return 20;
|
|
368
|
+
return n;
|
|
369
|
+
}
|
|
370
|
+
function normalizeDomainOption(value) {
|
|
371
|
+
if (value === undefined)
|
|
372
|
+
return undefined;
|
|
373
|
+
const arr = Array.isArray(value) ? value : [value];
|
|
374
|
+
const out = [];
|
|
375
|
+
for (const raw of arr) {
|
|
376
|
+
for (const part of raw.split(',')) {
|
|
377
|
+
const trimmed = part.trim();
|
|
378
|
+
if (trimmed)
|
|
379
|
+
out.push(trimmed);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return out.length > 0 ? out : undefined;
|
|
383
|
+
}
|
|
384
|
+
function renderDiff(result, verbose) {
|
|
385
|
+
console.log(chalk.blue('\n Brain Diff\n'));
|
|
386
|
+
console.log(` A: ${chalk.cyan(result.pathA)} (${result.formatA})`);
|
|
387
|
+
console.log(` B: ${chalk.cyan(result.pathB)} (${result.formatB})`);
|
|
388
|
+
console.log(` Versions: ${chalk.cyan(result.manifestA.version)} → ${chalk.cyan(result.manifestB.version)}` +
|
|
389
|
+
(result.versionMatch ? chalk.gray(' (match)') : chalk.yellow(' (differ)')));
|
|
390
|
+
console.log(` Checksums: ${chalk.gray(result.manifestA.checksum.slice(0, 12))}… → ` +
|
|
391
|
+
`${chalk.gray(result.manifestB.checksum.slice(0, 12))}…` +
|
|
392
|
+
(result.checksumMatch ? chalk.gray(' (match)') : chalk.yellow(' (differ)')));
|
|
393
|
+
console.log(` Exported: ${chalk.gray(result.manifestA.exportedAt)} → ${chalk.gray(result.manifestB.exportedAt)}`);
|
|
394
|
+
console.log(` Records: ${chalk.cyan(result.manifestA.totalRecords)} → ${chalk.cyan(result.manifestB.totalRecords)} ` +
|
|
395
|
+
formatDelta(result.manifestB.totalRecords - result.manifestA.totalRecords));
|
|
396
|
+
if (result.domainsOnlyInA.length > 0 || result.domainsOnlyInB.length > 0) {
|
|
397
|
+
console.log(chalk.blue('\n Domains:'));
|
|
398
|
+
if (result.domainsOnlyInA.length > 0) {
|
|
399
|
+
console.log(` Only in A: ${chalk.yellow(result.domainsOnlyInA.join(', '))}`);
|
|
400
|
+
}
|
|
401
|
+
if (result.domainsOnlyInB.length > 0) {
|
|
402
|
+
console.log(` Only in B: ${chalk.yellow(result.domainsOnlyInB.join(', '))}`);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
if (!result.recordLevel) {
|
|
406
|
+
console.log(chalk.gray('\n Note: record-level diff is only available when both sides are JSONL exports.\n' +
|
|
407
|
+
' Per-table counts shown below; re-export with --format jsonl for added/removed/changed IDs.'));
|
|
408
|
+
}
|
|
409
|
+
console.log(chalk.blue('\n Tables:'));
|
|
410
|
+
const changed = result.tableDiffs.filter(tableHasChange);
|
|
411
|
+
if (changed.length === 0) {
|
|
412
|
+
console.log(chalk.gray(' (no differences)'));
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
for (const t of changed) {
|
|
416
|
+
console.log(` ${t.tableName.padEnd(28)} ${chalk.cyan(String(t.countA).padStart(7))} → ` +
|
|
417
|
+
`${chalk.cyan(String(t.countB).padStart(7))} ${formatDelta(t.delta)}` +
|
|
418
|
+
formatRecordBuckets(t, verbose));
|
|
419
|
+
if (verbose) {
|
|
420
|
+
if (t.added && t.added.length > 0)
|
|
421
|
+
printIdBucket('added', t.added);
|
|
422
|
+
if (t.removed && t.removed.length > 0)
|
|
423
|
+
printIdBucket('removed', t.removed);
|
|
424
|
+
if (t.changed && t.changed.length > 0)
|
|
425
|
+
printIdBucket('changed', t.changed);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
console.log('');
|
|
430
|
+
if (result.identical) {
|
|
431
|
+
console.log(chalk.green(' Result: identical\n'));
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
console.log(chalk.yellow(' Result: differences found\n'));
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
function tableHasChange(t) {
|
|
438
|
+
if (t.delta !== 0)
|
|
439
|
+
return true;
|
|
440
|
+
if (t.added && t.added.length > 0)
|
|
441
|
+
return true;
|
|
442
|
+
if (t.removed && t.removed.length > 0)
|
|
443
|
+
return true;
|
|
444
|
+
if (t.changed && t.changed.length > 0)
|
|
445
|
+
return true;
|
|
446
|
+
return false;
|
|
447
|
+
}
|
|
448
|
+
function formatDelta(delta) {
|
|
449
|
+
if (delta === 0)
|
|
450
|
+
return chalk.gray('(±0)');
|
|
451
|
+
if (delta > 0)
|
|
452
|
+
return chalk.green(`(+${delta})`);
|
|
453
|
+
return chalk.red(`(${delta})`);
|
|
454
|
+
}
|
|
455
|
+
function formatRecordBuckets(t, verbose) {
|
|
456
|
+
const parts = [];
|
|
457
|
+
if (t.added && t.added.length > 0)
|
|
458
|
+
parts.push(chalk.green(`+${t.added.length}`));
|
|
459
|
+
if (t.removed && t.removed.length > 0)
|
|
460
|
+
parts.push(chalk.red(`-${t.removed.length}`));
|
|
461
|
+
if (t.changed && t.changed.length > 0)
|
|
462
|
+
parts.push(chalk.yellow(`~${t.changed.length}`));
|
|
463
|
+
if (parts.length === 0)
|
|
464
|
+
return '';
|
|
465
|
+
if (verbose)
|
|
466
|
+
return ' ' + parts.join(' ');
|
|
467
|
+
return ' ' + chalk.gray('[') + parts.join(' ') + chalk.gray(']');
|
|
468
|
+
}
|
|
469
|
+
function printIdBucket(label, ids) {
|
|
470
|
+
const preview = ids.slice(0, 10).join(', ');
|
|
471
|
+
const suffix = ids.length > 10 ? chalk.gray(` …(+${ids.length - 10} more)`) : '';
|
|
472
|
+
console.log(` ${chalk.gray(label + ':')} ${preview}${suffix}`);
|
|
473
|
+
}
|
|
474
|
+
function renderSearch(result) {
|
|
475
|
+
console.log(chalk.blue('\n Brain Search\n'));
|
|
476
|
+
console.log(` Input: ${chalk.cyan(result.inputPath)}`);
|
|
477
|
+
console.log(` Table: ${chalk.cyan(result.table)}`);
|
|
478
|
+
console.log(` Scanned: ${chalk.cyan(result.totalScanned)} ` +
|
|
479
|
+
`Matched: ${chalk.cyan(result.totalMatched)} ` +
|
|
480
|
+
`Shown: ${chalk.cyan(result.hits.length)}` +
|
|
481
|
+
(result.truncated ? chalk.yellow(` (truncated to limit ${result.limit})`) : ''));
|
|
482
|
+
if (result.hits.length === 0) {
|
|
483
|
+
console.log(chalk.yellow('\n No matching rows.\n'));
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
console.log('');
|
|
487
|
+
for (const hit of result.hits) {
|
|
488
|
+
const header = chalk.cyan(hit.id) +
|
|
489
|
+
(hit.display.patternType ? chalk.gray(` ${hit.display.patternType}`) : '') +
|
|
490
|
+
(hit.display.domain ? chalk.gray(` [${hit.display.domain}]`) : '') +
|
|
491
|
+
(hit.display.confidence !== undefined
|
|
492
|
+
? chalk.gray(` conf=${hit.display.confidence.toFixed(2)}`)
|
|
493
|
+
: '');
|
|
494
|
+
console.log(` ${header}`);
|
|
495
|
+
if (hit.display.name)
|
|
496
|
+
console.log(` ${chalk.bold(hit.display.name)}`);
|
|
497
|
+
if (hit.display.description) {
|
|
498
|
+
const desc = hit.display.description.length > 200
|
|
499
|
+
? hit.display.description.slice(0, 200) + '…'
|
|
500
|
+
: hit.display.description;
|
|
501
|
+
console.log(` ${chalk.gray(desc)}`);
|
|
502
|
+
}
|
|
503
|
+
if (hit.display.updatedAt)
|
|
504
|
+
console.log(` ${chalk.gray(hit.display.updatedAt)}`);
|
|
505
|
+
console.log('');
|
|
506
|
+
}
|
|
507
|
+
}
|
|
288
508
|
// ============================================================================
|
|
289
509
|
// Factory
|
|
290
510
|
// ============================================================================
|
package/dist/cli/index.js
CHANGED
|
@@ -47,7 +47,6 @@ console.log = (...args) => {
|
|
|
47
47
|
originalConsoleLog(...args);
|
|
48
48
|
};
|
|
49
49
|
// Also redirect timestamped INFO/WARN/ERROR log lines (e.g. "[07:12:24.372] [INFO ]")
|
|
50
|
-
const originalConsoleInfo = console.info.bind(console);
|
|
51
50
|
console.info = (...args) => {
|
|
52
51
|
process.stderr.write(args.map(String).join(' ') + '\n');
|
|
53
52
|
};
|
|
@@ -249,6 +248,11 @@ registerLazyCommand(program, {
|
|
|
249
248
|
description: 'Generate shell completions for aqe',
|
|
250
249
|
factory: () => import('./commands/completions.js').then(m => m.createCompletionsCommand(cleanupAndExit)),
|
|
251
250
|
});
|
|
251
|
+
registerLazyCommand(program, {
|
|
252
|
+
name: 'upgrade',
|
|
253
|
+
description: 'Detect optional native bindings and recommend install / flag changes',
|
|
254
|
+
factory: () => import('./commands/upgrade.js').then(m => m.createUpgradeCommand(cleanupAndExit)),
|
|
255
|
+
});
|
|
252
256
|
registerLazyCommand(program, {
|
|
253
257
|
name: 'fleet',
|
|
254
258
|
description: 'Fleet operations with multi-agent progress tracking',
|
|
@@ -131,8 +131,11 @@ export async function configureHooks(projectRoot, config) {
|
|
|
131
131
|
{
|
|
132
132
|
hooks: [
|
|
133
133
|
{
|
|
134
|
+
// Claude Code delivers the prompt body on stdin as JSON
|
|
135
|
+
// (e.g. {"prompt":"..."}). $PROMPT is NOT exposed as an env
|
|
136
|
+
// var, so we let the CLI read stdin directly.
|
|
134
137
|
type: 'command',
|
|
135
|
-
command: 'npx agentic-qe hooks route --
|
|
138
|
+
command: 'npx agentic-qe hooks route --json',
|
|
136
139
|
timeout: 5000,
|
|
137
140
|
continueOnError: true,
|
|
138
141
|
},
|
|
@@ -489,8 +489,11 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
|
|
|
489
489
|
{
|
|
490
490
|
hooks: [
|
|
491
491
|
{
|
|
492
|
+
// Claude Code delivers the prompt body on stdin as JSON
|
|
493
|
+
// (e.g. {"prompt":"..."}). $PROMPT is NOT exposed as an env
|
|
494
|
+
// var, so we let the CLI read stdin directly.
|
|
492
495
|
type: 'command',
|
|
493
|
-
command: 'npx agentic-qe hooks route --
|
|
496
|
+
command: 'npx agentic-qe hooks route --json',
|
|
494
497
|
timeout: 5000,
|
|
495
498
|
continueOnError: true,
|
|
496
499
|
},
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain Export Diff
|
|
3
|
+
*
|
|
4
|
+
* Compares two brain exports (JSONL directory or RVF file) and returns a
|
|
5
|
+
* structured diff.
|
|
6
|
+
*
|
|
7
|
+
* Two levels of comparison:
|
|
8
|
+
* - Manifest-level (always available): version, checksum, per-table record
|
|
9
|
+
* counts, exported_at, domain list delta.
|
|
10
|
+
* - Record-level (JSONL exports only): for each table with a PK, the set of
|
|
11
|
+
* added / removed / changed record IDs. For append-only tables only counts
|
|
12
|
+
* are reported.
|
|
13
|
+
*
|
|
14
|
+
* For RVF exports, record-level diff is not supported by this module (the
|
|
15
|
+
* kernel is opaque without @ruvector/rvf-node). Export as JSONL for full diff.
|
|
16
|
+
*/
|
|
17
|
+
import { type TableExportConfig } from './brain-shared.js';
|
|
18
|
+
export type ExportFormat = 'rvf' | 'jsonl';
|
|
19
|
+
export interface ManifestSummary {
|
|
20
|
+
readonly format: ExportFormat;
|
|
21
|
+
readonly version: string;
|
|
22
|
+
readonly exportedAt: string;
|
|
23
|
+
readonly sourceDb: string;
|
|
24
|
+
readonly checksum: string;
|
|
25
|
+
readonly totalRecords: number;
|
|
26
|
+
readonly domains: readonly string[];
|
|
27
|
+
readonly tableRecordCounts: Record<string, number>;
|
|
28
|
+
}
|
|
29
|
+
export interface TableDiff {
|
|
30
|
+
readonly tableName: string;
|
|
31
|
+
readonly countA: number;
|
|
32
|
+
readonly countB: number;
|
|
33
|
+
readonly delta: number;
|
|
34
|
+
/** Only populated for JSONL↔JSONL record-level diffs on PK tables. */
|
|
35
|
+
readonly added?: readonly string[];
|
|
36
|
+
readonly removed?: readonly string[];
|
|
37
|
+
readonly changed?: readonly string[];
|
|
38
|
+
}
|
|
39
|
+
export interface BrainDiffResult {
|
|
40
|
+
readonly pathA: string;
|
|
41
|
+
readonly pathB: string;
|
|
42
|
+
readonly formatA: ExportFormat;
|
|
43
|
+
readonly formatB: ExportFormat;
|
|
44
|
+
readonly manifestA: ManifestSummary;
|
|
45
|
+
readonly manifestB: ManifestSummary;
|
|
46
|
+
readonly checksumMatch: boolean;
|
|
47
|
+
readonly versionMatch: boolean;
|
|
48
|
+
readonly identical: boolean;
|
|
49
|
+
readonly recordLevel: boolean;
|
|
50
|
+
readonly tableDiffs: readonly TableDiff[];
|
|
51
|
+
readonly domainsOnlyInA: readonly string[];
|
|
52
|
+
readonly domainsOnlyInB: readonly string[];
|
|
53
|
+
}
|
|
54
|
+
export interface BrainDiffOptions {
|
|
55
|
+
/** Restrict comparison to a single table (by table name). */
|
|
56
|
+
readonly tableFilter?: string;
|
|
57
|
+
/** Cap on the number of IDs retained per added/removed/changed list. */
|
|
58
|
+
readonly maxIdsPerBucket?: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Compute the diff between two brain exports.
|
|
62
|
+
*
|
|
63
|
+
* Both paths may be JSONL directories or `.rvf` files. Record-level diff is
|
|
64
|
+
* only available when both sides are JSONL.
|
|
65
|
+
*/
|
|
66
|
+
export declare function diffBrains(pathA: string, pathB: string, options?: BrainDiffOptions): BrainDiffResult;
|
|
67
|
+
declare function pkFor(config: TableExportConfig): string;
|
|
68
|
+
/**
|
|
69
|
+
* Read a JSONL file and build a Map<identity, contentHash>.
|
|
70
|
+
*
|
|
71
|
+
* For PK tables the identity is the PK column value. For append-only tables
|
|
72
|
+
* the identity is a concatenation of the dedup columns (collisions are
|
|
73
|
+
* treated as "same record").
|
|
74
|
+
*/
|
|
75
|
+
declare function buildIdentityMap(filePath: string, config: TableExportConfig): Map<string, string>;
|
|
76
|
+
declare function identityOf(row: Record<string, unknown>, config: TableExportConfig): string | undefined;
|
|
77
|
+
declare function stableStringify(obj: Record<string, unknown>): string;
|
|
78
|
+
export interface DiffSummary {
|
|
79
|
+
readonly tablesChanged: number;
|
|
80
|
+
readonly totalAdded: number;
|
|
81
|
+
readonly totalRemoved: number;
|
|
82
|
+
readonly totalChanged: number;
|
|
83
|
+
readonly recordCountDelta: number;
|
|
84
|
+
}
|
|
85
|
+
export declare function summarizeDiff(result: BrainDiffResult): DiffSummary;
|
|
86
|
+
export declare const __test__: {
|
|
87
|
+
stableStringify: typeof stableStringify;
|
|
88
|
+
identityOf: typeof identityOf;
|
|
89
|
+
buildIdentityMap: typeof buildIdentityMap;
|
|
90
|
+
pkFor: typeof pkFor;
|
|
91
|
+
};
|
|
92
|
+
export {};
|
|
93
|
+
//# sourceMappingURL=brain-diff.d.ts.map
|