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.
Files changed (301) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +37 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/brain-commands.d.ts +14 -0
  5. package/dist/cli/brain-commands.js +24 -0
  6. package/dist/cli/bundle.js +7 -7
  7. package/dist/cli/chunks/adapter-2BIT6BGH.js +2 -0
  8. package/dist/cli/chunks/{agent-booster-wasm-NA2VN5U2.js → agent-booster-wasm-JN7W7O5X.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-NRIF5IOC.js → agent-handler-F6Q75SJQ.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-NW3UB2UW.js → agent-memory-branch-3GGTDVR4.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-B5G3RG4W.js +2 -0
  12. package/dist/cli/chunks/{audit-5CSEDVJR.js → audit-R7KN45HM.js} +2 -2
  13. package/dist/cli/chunks/base-A3ZRMSIZ.js +2 -0
  14. package/dist/cli/chunks/{better-sqlite3-FZ32SHZ6.js → better-sqlite3-2LTGEMYR.js} +2 -2
  15. package/dist/cli/chunks/brain-handler-PML5L6WQ.js +89 -0
  16. package/dist/cli/chunks/{branch-enumerator-IUHWHIMV.js → branch-enumerator-OKUPS2XC.js} +2 -2
  17. package/dist/cli/chunks/{browser-D4F3327X.js → browser-KOQOTSAT.js} +2 -2
  18. package/dist/cli/chunks/browser-workflow-C6Z53ZH6.js +2 -0
  19. package/dist/cli/chunks/chunk-2ARCG4XJ.js +2 -0
  20. package/dist/cli/chunks/{chunk-WI6UA5HV.js → chunk-2K7GRX5U.js} +2 -2
  21. package/dist/cli/chunks/{chunk-DATFN5DG.js → chunk-2LXXYKAP.js} +2 -2
  22. package/dist/cli/chunks/{chunk-O6J7MKRV.js → chunk-32FWC6G3.js} +2 -2
  23. package/dist/cli/chunks/{chunk-NL2PQLRD.js → chunk-3GYAIW2P.js} +2 -2
  24. package/dist/cli/chunks/{chunk-KJTXY3DW.js → chunk-3KIUCAVI.js} +1 -1
  25. package/dist/cli/chunks/{chunk-37ZSWRRP.js → chunk-3UGV2XWF.js} +2 -2
  26. package/dist/cli/chunks/{chunk-2CN2NPJQ.js → chunk-42HSEBOH.js} +2 -2
  27. package/dist/cli/chunks/{chunk-RODJK6G6.js → chunk-42TUEMH7.js} +1 -1
  28. package/dist/cli/chunks/{chunk-HPY7HGVQ.js → chunk-4TDIA2EN.js} +2 -2
  29. package/dist/cli/chunks/{chunk-N2RPLPVG.js → chunk-5J444NJR.js} +2 -2
  30. package/dist/cli/chunks/{chunk-B4BOOOYM.js → chunk-63ERVKIO.js} +1 -1
  31. package/dist/cli/chunks/{chunk-O6CHLZYT.js → chunk-63V33NAB.js} +2 -2
  32. package/dist/cli/chunks/{chunk-XALB3KRR.js → chunk-65Z6HMDA.js} +2 -2
  33. package/dist/cli/chunks/{chunk-62MVVEGH.js → chunk-6F6BNLVP.js} +1 -1
  34. package/dist/cli/chunks/{chunk-R4G64UH3.js → chunk-6HGRJPD6.js} +1 -1
  35. package/dist/cli/chunks/{chunk-GWUO3RY5.js → chunk-6MRUG5G2.js} +1 -1
  36. package/dist/cli/chunks/{chunk-3Y4YZDHJ.js → chunk-6PCGUJCG.js} +4 -4
  37. package/dist/cli/chunks/{chunk-BGUCXJEJ.js → chunk-6PRIY3HT.js} +2 -2
  38. package/dist/cli/chunks/{chunk-U4WDJPRL.js → chunk-6YCZDIGF.js} +2 -2
  39. package/dist/cli/chunks/{chunk-2XW36KDQ.js → chunk-6YFEWIL5.js} +2 -2
  40. package/dist/cli/chunks/{chunk-W4PUKTBF.js → chunk-7PWW2OXP.js} +1 -1
  41. package/dist/cli/chunks/{chunk-TZWCVGG2.js → chunk-7VGZDTY4.js} +1 -1
  42. package/dist/cli/chunks/{chunk-ORKGVVXK.js → chunk-A3WC5KTG.js} +1 -1
  43. package/dist/cli/chunks/{chunk-FSOY2XB4.js → chunk-A67FRRPJ.js} +3 -3
  44. package/dist/cli/chunks/{chunk-V775NJOM.js → chunk-AFLTMVMT.js} +1 -1
  45. package/dist/cli/chunks/{chunk-REUGPZIA.js → chunk-APWO3FI3.js} +1 -1
  46. package/dist/cli/chunks/{chunk-MS6T4VCU.js → chunk-ARN2KDLJ.js} +2 -2
  47. package/dist/cli/chunks/{chunk-OBZMQFWG.js → chunk-AZQ476BM.js} +2 -2
  48. package/dist/cli/chunks/{chunk-IPTGPCEL.js → chunk-AZWCJFT6.js} +2 -2
  49. package/dist/cli/chunks/{chunk-LLVS3UYZ.js → chunk-B36RPXAQ.js} +2 -2
  50. package/dist/cli/chunks/{chunk-YCYFUYCE.js → chunk-B3M3JEFD.js} +2 -2
  51. package/dist/cli/chunks/{chunk-TJDAXI6E.js → chunk-BCBC3DVN.js} +2 -2
  52. package/dist/cli/chunks/{chunk-Q3GDSFGA.js → chunk-BCIEQ4IP.js} +2 -2
  53. package/dist/cli/chunks/{chunk-OMTYOIOS.js → chunk-BGY4CHZA.js} +2 -2
  54. package/dist/cli/chunks/{chunk-7J5KWUC2.js → chunk-BUWZOMC7.js} +1 -1
  55. package/dist/cli/chunks/{chunk-V6QARSVQ.js → chunk-CPZUNBSQ.js} +2 -2
  56. package/dist/cli/chunks/{chunk-UZOFXYNC.js → chunk-CQSU7NTG.js} +2 -2
  57. package/dist/cli/chunks/{chunk-VBEVZUQW.js → chunk-CY73RJJJ.js} +1 -1
  58. package/dist/cli/chunks/{chunk-DYQ7HTEU.js → chunk-CZXV3JAF.js} +3 -3
  59. package/dist/cli/chunks/{chunk-6F3H2C5H.js → chunk-DDJUVCKF.js} +3 -3
  60. package/dist/cli/chunks/{chunk-JJDHD7SC.js → chunk-DJXYFFGA.js} +2 -2
  61. package/dist/cli/chunks/{chunk-AVKUFN3C.js → chunk-DR6SJ6P3.js} +2 -2
  62. package/dist/cli/chunks/{chunk-HJNFBJT5.js → chunk-DVEQOD74.js} +8 -8
  63. package/dist/cli/chunks/{chunk-3RSPEFU3.js → chunk-EGBRCXYT.js} +2 -2
  64. package/dist/cli/chunks/{chunk-AE65B2ZE.js → chunk-EVQYUUQ3.js} +2 -2
  65. package/dist/cli/chunks/{chunk-6OEGZSRK.js → chunk-F5X3U57Y.js} +2 -2
  66. package/dist/cli/chunks/{chunk-CF3W34BA.js → chunk-FCWB2FJG.js} +1 -1
  67. package/dist/cli/chunks/{chunk-WAQ3U4FC.js → chunk-FVVZWNLV.js} +1 -1
  68. package/dist/cli/chunks/{chunk-6BHAGCZD.js → chunk-FYNDV2NZ.js} +1 -1
  69. package/dist/cli/chunks/{chunk-SXUX6PTE.js → chunk-G3G5QEHL.js} +1 -1
  70. package/dist/cli/chunks/{chunk-6Z7LYE2B.js → chunk-G5DEPXD4.js} +2 -2
  71. package/dist/cli/chunks/{chunk-SSQ42GI7.js → chunk-HMT6LKHH.js} +2 -2
  72. package/dist/cli/chunks/{chunk-MO4Q5ZGE.js → chunk-HQXRCW7Z.js} +2 -2
  73. package/dist/cli/chunks/{chunk-PSOIVDD2.js → chunk-I3NUJ6KJ.js} +3 -3
  74. package/dist/cli/chunks/{chunk-JQRR37YY.js → chunk-I5BLJ2QQ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-II5KTTIS.js → chunk-I64R2D4U.js} +4 -4
  76. package/dist/cli/chunks/{chunk-G3FUOFXA.js → chunk-JC4O47QG.js} +2 -2
  77. package/dist/cli/chunks/{chunk-DPEG44BS.js → chunk-JT2KLBDB.js} +2 -2
  78. package/dist/cli/chunks/{chunk-OHESV6I3.js → chunk-JVDYHVF2.js} +4 -4
  79. package/dist/cli/chunks/{chunk-D3ZUSXFY.js → chunk-K44EQV74.js} +2 -2
  80. package/dist/cli/chunks/{chunk-HNAQNAGI.js → chunk-K4FG3CRS.js} +3 -3
  81. package/dist/cli/chunks/{chunk-ISNXE6TP.js → chunk-KTJWRVFR.js} +2 -2
  82. package/dist/cli/chunks/{chunk-VDDQSW4L.js → chunk-KTUSZRS3.js} +2 -2
  83. package/dist/cli/chunks/{chunk-7ZPNQ3T6.js → chunk-KUEG6K4A.js} +1 -1
  84. package/dist/cli/chunks/{chunk-CWWUBZNX.js → chunk-L5JZIORJ.js} +2 -2
  85. package/dist/cli/chunks/{chunk-HWK27KJK.js → chunk-L6ZJSFAA.js} +1 -1
  86. package/dist/cli/chunks/{chunk-JAIIPEE6.js → chunk-LA565BGJ.js} +2 -2
  87. package/dist/cli/chunks/{chunk-WCOJGDGO.js → chunk-LD4OYOX2.js} +2 -2
  88. package/dist/cli/chunks/{chunk-2BBKAX7X.js → chunk-MER7IHAZ.js} +2 -2
  89. package/dist/cli/chunks/{chunk-4T36OQUK.js → chunk-MNSF47HC.js} +3 -3
  90. package/dist/cli/chunks/{chunk-H6DAP4KS.js → chunk-MPEQXXXR.js} +2 -2
  91. package/dist/cli/chunks/{chunk-2L5ZFBHP.js → chunk-N64PBOR5.js} +2 -2
  92. package/dist/cli/chunks/{chunk-6TOUMCSE.js → chunk-ORNWQXEX.js} +2 -2
  93. package/dist/cli/chunks/{chunk-ZOAPOVYW.js → chunk-OSBJWQZL.js} +2 -2
  94. package/dist/cli/chunks/{chunk-GLJ6CJNY.js → chunk-OUSQ4KQN.js} +2 -2
  95. package/dist/cli/chunks/{chunk-RWVFOXYM.js → chunk-P2V5ZG3Q.js} +1 -1
  96. package/dist/cli/chunks/{chunk-6AMD4PZB.js → chunk-PEHHOJE6.js} +2 -2
  97. package/dist/cli/chunks/{chunk-IHDW4HW7.js → chunk-PGTMLW5K.js} +2 -2
  98. package/dist/cli/chunks/{chunk-NWMYV7KG.js → chunk-PJZHNAUT.js} +2 -2
  99. package/dist/cli/chunks/{chunk-E3EDVRB5.js → chunk-PMH52K5J.js} +1 -1
  100. package/dist/cli/chunks/{chunk-EY2DGYQX.js → chunk-PMNZN4K7.js} +1 -1
  101. package/dist/cli/chunks/{chunk-56YHSI6R.js → chunk-PV6WBC2D.js} +2 -2
  102. package/dist/cli/chunks/{chunk-RTVD7SZQ.js → chunk-QFFSQWXP.js} +1 -1
  103. package/dist/cli/chunks/{chunk-Q3E6Z2RQ.js → chunk-QMVGGG4B.js} +1 -1
  104. package/dist/cli/chunks/{chunk-3BA2FGSA.js → chunk-QVJQXRHU.js} +2 -2
  105. package/dist/cli/chunks/{chunk-GHEO5YVA.js → chunk-QW554DTP.js} +1 -1
  106. package/dist/cli/chunks/{chunk-XXRDI53H.js → chunk-QXOAFWWK.js} +2 -2
  107. package/dist/cli/chunks/{chunk-V65DK6ZZ.js → chunk-QYDBV5MD.js} +1 -1
  108. package/dist/cli/chunks/{chunk-ELLNKP3I.js → chunk-R3COBKOP.js} +3 -3
  109. package/dist/cli/chunks/{chunk-ZHTCZGML.js → chunk-RP2RHB7H.js} +2 -2
  110. package/dist/cli/chunks/{chunk-EORSYD66.js → chunk-RYATPB5L.js} +2 -2
  111. package/dist/cli/chunks/{chunk-ESQSX37W.js → chunk-TATCL3AK.js} +2 -2
  112. package/dist/cli/chunks/{chunk-IPVKVPAF.js → chunk-USORP6QK.js} +2 -2
  113. package/dist/cli/chunks/{chunk-FW6QBTPE.js → chunk-UTO2M76W.js} +1 -1
  114. package/dist/cli/chunks/{chunk-D32YCVCA.js → chunk-V3VJNWOF.js} +2 -2
  115. package/dist/cli/chunks/{chunk-KKBSX43Q.js → chunk-V4DMYY6P.js} +2 -2
  116. package/dist/cli/chunks/{chunk-3NIHJIWP.js → chunk-VI2I5R6C.js} +2 -2
  117. package/dist/cli/chunks/{chunk-QNLZKD7E.js → chunk-VX6XHAG2.js} +2 -2
  118. package/dist/cli/chunks/{chunk-LNUWNRRJ.js → chunk-VYCFMW64.js} +9 -9
  119. package/dist/cli/chunks/{chunk-CSB2M7IX.js → chunk-W5HTZ3VZ.js} +2 -2
  120. package/dist/cli/chunks/{chunk-ZSC7NHK3.js → chunk-WGEJ646F.js} +2 -2
  121. package/dist/cli/chunks/{chunk-ICXWXO5P.js → chunk-WP55YBB2.js} +1 -1
  122. package/dist/cli/chunks/{chunk-MHL6CPGY.js → chunk-X66N7E7D.js} +1 -1
  123. package/dist/cli/chunks/{chunk-CUQBOVRP.js → chunk-XB4JRJU4.js} +1 -1
  124. package/dist/cli/chunks/{chunk-3FUKJT4S.js → chunk-XMMKAV5R.js} +2 -2
  125. package/dist/cli/chunks/{chunk-RPOW5LWO.js → chunk-XZOJWFLH.js} +1 -1
  126. package/dist/cli/chunks/{chunk-OUP2X3LT.js → chunk-Y47U7ICT.js} +1 -1
  127. package/dist/cli/chunks/{chunk-IMLH32AG.js → chunk-YE5AYBHX.js} +2 -2
  128. package/dist/cli/chunks/{chunk-D3FV5NNA.js → chunk-YUCMGFHE.js} +2 -2
  129. package/dist/cli/chunks/chunk-Z5R46W6Q.js +2 -0
  130. package/dist/cli/chunks/{chunk-4M7RBSW6.js → chunk-Z77BVREU.js} +2 -2
  131. package/dist/cli/chunks/{chunk-C5BRTU4V.js → chunk-ZI3UBCIN.js} +1 -1
  132. package/dist/cli/chunks/{chunk-65QA7MYW.js → chunk-ZLOMFM25.js} +2 -2
  133. package/dist/cli/chunks/{chunk-RSOOENGE.js → chunk-ZQKNVZPD.js} +2 -2
  134. package/dist/cli/chunks/{ci-BGUUHDUS.js → ci-TRWQ33L2.js} +2 -2
  135. package/dist/cli/chunks/{ci-output-CDFRGBNU.js → ci-output-TCFNHOTU.js} +2 -2
  136. package/dist/cli/chunks/{circuit-breaker-S3NFX6RQ.js → circuit-breaker-GO2TIL7E.js} +2 -2
  137. package/dist/cli/chunks/{claude-flow-setup-AJIPJFMC.js → claude-flow-setup-U77JVSVU.js} +2 -2
  138. package/dist/cli/chunks/client-B3QSCZSJ.js +2 -0
  139. package/dist/cli/chunks/{cline-installer-6O4KZ5UH.js → cline-installer-XFD3SMGS.js} +2 -2
  140. package/dist/cli/chunks/{code-IZALXUL5.js → code-V3VE2TMW.js} +2 -2
  141. package/dist/cli/chunks/{code-index-extractor-N7VDH4XF.js → code-index-extractor-C6DHOOWA.js} +2 -2
  142. package/dist/cli/chunks/{codex-installer-35GTWCFJ.js → codex-installer-IUR7MVE6.js} +2 -2
  143. package/dist/cli/chunks/{completions-XPJFHGG2.js → completions-R7FZHNJJ.js} +91 -10
  144. package/dist/cli/chunks/{complexity-analyzer-DNLCJGUJ.js → complexity-analyzer-EP4QF5CS.js} +2 -2
  145. package/dist/cli/chunks/{continuedev-installer-PXAIKNYO.js → continuedev-installer-6DW2SBMQ.js} +2 -2
  146. package/dist/cli/chunks/{copilot-installer-2TQ5IZNY.js → copilot-installer-U3UOX7D5.js} +2 -2
  147. package/dist/cli/chunks/{cost-tracker-A5XH4W6S.js → cost-tracker-5QZ5A46I.js} +2 -2
  148. package/dist/cli/chunks/{coverage-EPIMXTLW.js → coverage-QOOOITLD.js} +3 -3
  149. package/dist/cli/chunks/cross-domain-router-OYBTXKCV.js +2 -0
  150. package/dist/cli/chunks/{cursor-installer-WMMRPW44.js → cursor-installer-SY3TRE2I.js} +2 -2
  151. package/dist/cli/chunks/{daemon-55DSODOH.js → daemon-HBSBIPUZ.js} +3 -3
  152. package/dist/cli/chunks/{dag-attention-scheduler-5DSWXMMK.js → dag-attention-scheduler-ZNLUW2HL.js} +2 -2
  153. package/dist/cli/chunks/{detect-NOS46AWN.js → detect-DMUJPGNC.js} +2 -2
  154. package/dist/cli/chunks/dist-node-4RPPRXUH.js +2 -0
  155. package/dist/cli/chunks/{domain-handler-BFRNU6S3.js → domain-handler-XJFDML77.js} +2 -2
  156. package/dist/cli/chunks/{domain-transfer-BPSA4HFR.js → domain-transfer-MXPKJ2A2.js} +2 -2
  157. package/dist/cli/chunks/dream-R2F6L47W.js +2 -0
  158. package/dist/cli/chunks/{eval-YDLM23FB.js → eval-DHBZ74RL.js} +2 -2
  159. package/dist/cli/chunks/{fast-paths-GISZ7HBO.js → fast-paths-WTNFCV2I.js} +2 -2
  160. package/dist/cli/chunks/{feature-flags-3FLJF6CQ.js → feature-flags-264QUQ3E.js} +2 -2
  161. package/dist/cli/chunks/{feature-flags-5WGZLUPQ.js → feature-flags-VC7BQNHU.js} +2 -2
  162. package/dist/cli/chunks/{file-discovery-PPHUMFSI.js → file-discovery-LXQPIRKG.js} +2 -2
  163. package/dist/cli/chunks/{fleet-LHFZ53FS.js → fleet-4OAZWNXG.js} +3 -3
  164. package/dist/cli/chunks/{gnn-wrapper-Z45DRWGI.js → gnn-wrapper-MAXAOMTP.js} +2 -2
  165. package/dist/cli/chunks/{heartbeat-handler-VMLJ5PDH.js → heartbeat-handler-ZTUI75EB.js} +4 -4
  166. package/dist/cli/chunks/{heartbeat-scheduler-GUWYDHEY.js → heartbeat-scheduler-VWPA7XKA.js} +2 -2
  167. package/dist/cli/chunks/hnsw-adapter-TQPQE4OJ.js +2 -0
  168. package/dist/cli/chunks/hnsw-index-2X3NMTDU.js +2 -0
  169. package/dist/cli/chunks/{hnsw-legacy-bridge-S7UZWDUP.js → hnsw-legacy-bridge-EQDYPKGL.js} +2 -2
  170. package/dist/cli/chunks/{hnswlib-node-MIAAS7OI.js → hnswlib-node-G4QGTGIB.js} +2 -2
  171. package/dist/cli/chunks/hooks-RBVHAPBL.js +101 -0
  172. package/dist/cli/chunks/{hybrid-router-Y6LBFPL7.js → hybrid-router-XODWORQ3.js} +2 -2
  173. package/dist/cli/chunks/{hypergraph-engine-KK73LZYZ.js → hypergraph-engine-T73DH7N6.js} +2 -2
  174. package/dist/cli/chunks/{hypergraph-handler-OBGDPIWG.js → hypergraph-handler-OZJJJW5B.js} +3 -3
  175. package/dist/cli/chunks/impact-analyzer-B7GBDSA3.js +2 -0
  176. package/dist/cli/chunks/{init-handler-JJJ7VHM4.js → init-handler-YXXNCXM4.js} +6 -6
  177. package/dist/cli/chunks/init-wizard-7N6MCER4.js +2 -0
  178. package/dist/cli/chunks/kernel-6CJ4FP5Z.js +2 -0
  179. package/dist/cli/chunks/{kilocode-installer-EF6DPX2D.js → kilocode-installer-3RCK2JPW.js} +2 -2
  180. package/dist/cli/chunks/{kiro-installer-SG74CEVO.js → kiro-installer-LKC42QRS.js} +2 -2
  181. package/dist/cli/chunks/knowledge-graph-4XYLO6ZW.js +2 -0
  182. package/dist/cli/chunks/{learning-LVWYMHF6.js → learning-BIBRKCYL.js} +3 -3
  183. package/dist/cli/chunks/{llm-router-QFK7MNPY.js → llm-router-Z6Z7TTBI.js} +4 -4
  184. package/dist/cli/chunks/{load-6XPV4WA2.js → load-T2QUB663.js} +2 -2
  185. package/dist/cli/chunks/load-test-UODCPBYF.js +2 -0
  186. package/dist/cli/chunks/{mcp-GZXOPYMH.js → mcp-QBOL6TK4.js} +2 -2
  187. package/dist/cli/chunks/{memory-QTE2Z5HU.js → memory-7RQ2SF36.js} +5 -5
  188. package/dist/cli/chunks/memory-backend-PUPAE4QQ.js +2 -0
  189. package/dist/cli/chunks/{memory-handlers-PC4P4YEF.js → memory-handlers-5OHDUBJS.js} +2 -2
  190. package/dist/cli/chunks/{multi-model-executor-FZOPSUOT.js → multi-model-executor-PGSNT3NO.js} +2 -2
  191. package/dist/cli/chunks/{opencode-installer-CITDTCUQ.js → opencode-installer-AEOXTTFG.js} +2 -2
  192. package/dist/cli/chunks/{orchestrator-ZTG7MFHQ.js → orchestrator-6K2L36JA.js} +6 -6
  193. package/dist/cli/chunks/{pipeline-QXO4EJP4.js → pipeline-MFQCW7JD.js} +2 -2
  194. package/dist/cli/chunks/{platform-JJEDYCAK.js → platform-DM6RQ3FM.js} +2 -2
  195. package/dist/cli/chunks/{plugin-ZEKRM6F7.js → plugin-CCTGDC55.js} +2 -2
  196. package/dist/cli/chunks/{prime-radiant-advanced-wasm-GRS4T6LR.js → prime-radiant-advanced-wasm-J4FXB63L.js} +2 -2
  197. package/dist/cli/chunks/protocol-executor-X3EYJINP.js +2 -0
  198. package/dist/cli/chunks/{protocol-handler-KWI2T6OR.js → protocol-handler-7UOBNLET.js} +2 -2
  199. package/dist/cli/chunks/{prove-7FJN2HEH.js → prove-VAPGITFF.js} +2 -2
  200. package/dist/cli/chunks/{provider-manager-QYYZZLLO.js → provider-manager-F6TLUJFW.js} +2 -2
  201. package/dist/cli/chunks/qe-reasoning-bank-3RDWPSYG.js +2 -0
  202. package/dist/cli/chunks/{quality-4NHO2NY5.js → quality-7LJQI3SB.js} +2 -2
  203. package/dist/cli/chunks/queen-coordinator-XIQZIYAZ.js +2 -0
  204. package/dist/cli/chunks/{real-embeddings-SIELAOWX.js → real-embeddings-NHWAUSV3.js} +2 -2
  205. package/dist/cli/chunks/{roocode-installer-ANYXH3NR.js → roocode-installer-HQFQJJPU.js} +2 -2
  206. package/dist/cli/chunks/router-AFEFPU2A.js +2 -0
  207. package/dist/cli/chunks/routing-feedback-AGYMQFMV.js +2 -0
  208. package/dist/cli/chunks/{routing-handler-6QQHK4KV.js → routing-handler-VH66WSPU.js} +2 -2
  209. package/dist/cli/chunks/{ruvector-commands-YEUA3MZB.js → ruvector-commands-IPUWLJFU.js} +2 -2
  210. package/dist/cli/chunks/{rvf-dual-writer-UJFRHPVE.js → rvf-dual-writer-KRFEM6JH.js} +2 -2
  211. package/dist/cli/chunks/{rvf-migration-adapter-CSDFG7UA.js → rvf-migration-adapter-SVCZ72IU.js} +2 -2
  212. package/dist/cli/chunks/{rvf-migration-coordinator-QO7OENQF.js → rvf-migration-coordinator-FYBIF3SX.js} +2 -2
  213. package/dist/cli/chunks/rvf-native-adapter-AFOWXCZH.js +2 -0
  214. package/dist/cli/chunks/safe-db-NNF5DE5T.js +2 -0
  215. package/dist/cli/chunks/schedule-HJUZSHEA.js +2 -0
  216. package/dist/cli/chunks/scheduler-DZ53RPJQ.js +2 -0
  217. package/dist/cli/chunks/{security-QCIUC5FX.js → security-C2I6CG7B.js} +3 -3
  218. package/dist/cli/chunks/shared-rvf-adapter-5UQSTUSR.js +2 -0
  219. package/dist/cli/chunks/{shared-rvf-dual-writer-LVJJS3PD.js → shared-rvf-dual-writer-BPIFGN7I.js} +2 -2
  220. package/dist/cli/chunks/sqlite-persistence-27ESC5DX.js +2 -0
  221. package/dist/cli/chunks/{status-handler-O77A4JWM.js → status-handler-57UA6GNR.js} +2 -2
  222. package/dist/cli/chunks/{structural-health-WIIBIIQI.js → structural-health-KMHBG6FO.js} +2 -2
  223. package/dist/cli/chunks/{sync-UN6D6OF2.js → sync-53YM6U4S.js} +2 -2
  224. package/dist/cli/chunks/{task-handler-RBOSMJCK.js → task-handler-W2XPS5WW.js} +2 -2
  225. package/dist/cli/chunks/{task-handlers-VWMXQKAT.js → task-handlers-BG4IAMBJ.js} +2 -2
  226. package/dist/cli/chunks/{test-XK5M3PGT.js → test-QJBBVPL2.js} +4 -4
  227. package/dist/cli/chunks/{test-scheduling-CTQ3JJ7G.js → test-scheduling-Y4J6EY2K.js} +3 -3
  228. package/dist/cli/chunks/{token-bootstrap-D5CQ3I5M.js → token-bootstrap-3TKR3UIE.js} +2 -2
  229. package/dist/cli/chunks/{token-usage-L4QSLWQ5.js → token-usage-5FUNHHVZ.js} +2 -2
  230. package/dist/cli/chunks/{transformers-SRPJDBKA.js → transformers-KVPA35SR.js} +2 -2
  231. package/dist/cli/chunks/{tree-sitter-wasm-parser-DOU5ITWB.js → tree-sitter-wasm-parser-LTBBLY5U.js} +2 -2
  232. package/dist/cli/chunks/{types-LECYZUBN.js → types-Y2BHPD6B.js} +2 -2
  233. package/dist/cli/chunks/unified-memory-O7GFUSD3.js +2 -0
  234. package/dist/cli/chunks/unified-memory-hnsw-XBLROJEN.js +2 -0
  235. package/dist/cli/chunks/unified-persistence-YBHEAL2S.js +2 -0
  236. package/dist/cli/chunks/upgrade-E4VAQZQR.js +5 -0
  237. package/dist/cli/chunks/{validate-SIKNIS6B.js → validate-4ICDQCKJ.js} +2 -2
  238. package/dist/cli/chunks/{validate-swarm-EHAMMILJ.js → validate-swarm-AIEOQOUF.js} +2 -2
  239. package/dist/cli/chunks/{vibium-LJ4NYXMZ.js → vibium-AF2K6YXR.js} +2 -2
  240. package/dist/cli/chunks/visual-security-4F7VYCAU.js +2 -0
  241. package/dist/cli/chunks/{web-tree-sitter-DZQ3T4JD.js → web-tree-sitter-PM67K5SP.js} +2 -2
  242. package/dist/cli/chunks/{windsurf-installer-U6Z73O6J.js → windsurf-installer-4MKUQ2KT.js} +2 -2
  243. package/dist/cli/chunks/witness-chain-AXJ44BGW.js +2 -0
  244. package/dist/cli/chunks/{witness-chain-JE3QU4YP.js → witness-chain-FLPF7CS6.js} +2 -2
  245. package/dist/cli/chunks/{workflow-62QXGZQO.js → workflow-DHTCI6QD.js} +4 -4
  246. package/dist/cli/chunks/workflow-orchestrator-UAFUPHD3.js +2 -0
  247. package/dist/cli/chunks/{wrappers-CAX5EZSH.js → wrappers-5K6UGI3T.js} +2 -2
  248. package/dist/cli/commands/hooks-handlers/routing-hooks.d.ts +6 -0
  249. package/dist/cli/commands/hooks-handlers/routing-hooks.js +80 -4
  250. package/dist/cli/commands/upgrade.d.ts +96 -0
  251. package/dist/cli/commands/upgrade.js +342 -0
  252. package/dist/cli/completions/index.d.ts +27 -0
  253. package/dist/cli/completions/index.js +112 -14
  254. package/dist/cli/handlers/brain-handler.d.ts +2 -0
  255. package/dist/cli/handlers/brain-handler.js +221 -1
  256. package/dist/cli/index.js +5 -1
  257. package/dist/init/init-wizard-hooks.js +4 -1
  258. package/dist/init/phases/07-hooks.js +4 -1
  259. package/dist/integrations/ruvector/brain-diff.d.ts +93 -0
  260. package/dist/integrations/ruvector/brain-diff.js +281 -0
  261. package/dist/integrations/ruvector/brain-search.d.ts +78 -0
  262. package/dist/integrations/ruvector/brain-search.js +154 -0
  263. package/dist/mcp/bundle.js +348 -348
  264. package/package.json +2 -2
  265. package/dist/cli/chunks/adapter-P2EPBJLF.js +0 -2
  266. package/dist/cli/chunks/aqe-learning-engine-6UITO3NJ.js +0 -2
  267. package/dist/cli/chunks/base-JHBJXVGP.js +0 -2
  268. package/dist/cli/chunks/brain-handler-ISVST4MR.js +0 -68
  269. package/dist/cli/chunks/browser-workflow-U4OON5DZ.js +0 -2
  270. package/dist/cli/chunks/chunk-FEVTMHO6.js +0 -2
  271. package/dist/cli/chunks/chunk-MBDX4OHD.js +0 -2
  272. package/dist/cli/chunks/client-UHHMKUPF.js +0 -2
  273. package/dist/cli/chunks/cross-domain-router-GEBXTPZW.js +0 -2
  274. package/dist/cli/chunks/dream-XBRGYPBC.js +0 -2
  275. package/dist/cli/chunks/esm-node-EV4HOHTZ.js +0 -2
  276. package/dist/cli/chunks/hnsw-adapter-BG73YVXI.js +0 -2
  277. package/dist/cli/chunks/hnsw-index-K73ZTLJN.js +0 -2
  278. package/dist/cli/chunks/hooks-ZN4FV5XS.js +0 -101
  279. package/dist/cli/chunks/impact-analyzer-GWIUYYCQ.js +0 -2
  280. package/dist/cli/chunks/init-wizard-RIJJAKE3.js +0 -2
  281. package/dist/cli/chunks/kernel-SIPBCRGL.js +0 -2
  282. package/dist/cli/chunks/knowledge-graph-NOYZXHIG.js +0 -2
  283. package/dist/cli/chunks/load-test-DIMUH75F.js +0 -2
  284. package/dist/cli/chunks/memory-backend-IWOGO4BV.js +0 -2
  285. package/dist/cli/chunks/protocol-executor-NT4TILJW.js +0 -2
  286. package/dist/cli/chunks/qe-reasoning-bank-VDROHXFS.js +0 -2
  287. package/dist/cli/chunks/queen-coordinator-7LO73IV3.js +0 -2
  288. package/dist/cli/chunks/router-SFVOLN2W.js +0 -2
  289. package/dist/cli/chunks/routing-feedback-MRFV7WUZ.js +0 -2
  290. package/dist/cli/chunks/rvf-native-adapter-6L7FZZC7.js +0 -2
  291. package/dist/cli/chunks/safe-db-PYWBVGOV.js +0 -2
  292. package/dist/cli/chunks/schedule-BUQU75HY.js +0 -2
  293. package/dist/cli/chunks/scheduler-XOSKWZO2.js +0 -2
  294. package/dist/cli/chunks/shared-rvf-adapter-OZ7S4ZQL.js +0 -2
  295. package/dist/cli/chunks/sqlite-persistence-7UXQZ5Y6.js +0 -2
  296. package/dist/cli/chunks/unified-memory-L6735TFM.js +0 -2
  297. package/dist/cli/chunks/unified-memory-hnsw-7TZNEDGY.js +0 -2
  298. package/dist/cli/chunks/unified-persistence-FNYZ3C2B.js +0 -2
  299. package/dist/cli/chunks/visual-security-SMPZPDY4.js +0 -2
  300. package/dist/cli/chunks/witness-chain-FNCOTWFA.js +0 -2
  301. package/dist/cli/chunks/workflow-orchestrator-RCR4N7OA.js +0 -2
@@ -16,6 +16,8 @@ export declare class BrainHandler implements ICommandHandler {
16
16
  private executeExport;
17
17
  private executeImport;
18
18
  private executeInfo;
19
+ private executeDiff;
20
+ private executeSearch;
19
21
  private executeWitnessBackfill;
20
22
  getHelp(): string;
21
23
  }
@@ -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 --task "$PROMPT" --json',
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 --task "$PROMPT" --json',
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