agentic-qe 3.9.15 → 3.9.16

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 (295) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +25 -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-XFJIW42U.js +2 -0
  8. package/dist/cli/chunks/{agent-booster-wasm-NA2VN5U2.js → agent-booster-wasm-IECTFMRK.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-NRIF5IOC.js → agent-handler-HLLTKZ5G.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-NW3UB2UW.js → agent-memory-branch-WJUD3DS4.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-UD4SXENM.js +2 -0
  12. package/dist/cli/chunks/{audit-5CSEDVJR.js → audit-3DLZNWHO.js} +2 -2
  13. package/dist/cli/chunks/base-ETEN7L2V.js +2 -0
  14. package/dist/cli/chunks/{better-sqlite3-FZ32SHZ6.js → better-sqlite3-Q356NEQ6.js} +2 -2
  15. package/dist/cli/chunks/brain-handler-MX2HP7LO.js +89 -0
  16. package/dist/cli/chunks/{branch-enumerator-IUHWHIMV.js → branch-enumerator-Z3TF3HVO.js} +2 -2
  17. package/dist/cli/chunks/{browser-D4F3327X.js → browser-Z6PQ7FTO.js} +2 -2
  18. package/dist/cli/chunks/browser-workflow-KVHPOIBA.js +2 -0
  19. package/dist/cli/chunks/{chunk-ELLNKP3I.js → chunk-2KCMS4UW.js} +3 -3
  20. package/dist/cli/chunks/{chunk-IMLH32AG.js → chunk-2MJEAEOW.js} +2 -2
  21. package/dist/cli/chunks/{chunk-ISNXE6TP.js → chunk-3ADFXSO2.js} +2 -2
  22. package/dist/cli/chunks/{chunk-WI6UA5HV.js → chunk-3CAPNE2H.js} +2 -2
  23. package/dist/cli/chunks/{chunk-65QA7MYW.js → chunk-3EUA73H6.js} +2 -2
  24. package/dist/cli/chunks/{chunk-D3FV5NNA.js → chunk-3H657FNU.js} +2 -2
  25. package/dist/cli/chunks/{chunk-OMTYOIOS.js → chunk-3K4IX7L4.js} +2 -2
  26. package/dist/cli/chunks/{chunk-DYQ7HTEU.js → chunk-3SLFWPRE.js} +3 -3
  27. package/dist/cli/chunks/{chunk-MHL6CPGY.js → chunk-3ZGYB23S.js} +1 -1
  28. package/dist/cli/chunks/{chunk-IHDW4HW7.js → chunk-46K7ALFU.js} +2 -2
  29. package/dist/cli/chunks/{chunk-HNAQNAGI.js → chunk-4CFQZHUC.js} +3 -3
  30. package/dist/cli/chunks/{chunk-2XW36KDQ.js → chunk-4PFHQH4B.js} +2 -2
  31. package/dist/cli/chunks/{chunk-C5BRTU4V.js → chunk-4ZN4GM7W.js} +1 -1
  32. package/dist/cli/chunks/{chunk-3FUKJT4S.js → chunk-5A5XANSD.js} +2 -2
  33. package/dist/cli/chunks/{chunk-OUP2X3LT.js → chunk-5E7FVOOG.js} +1 -1
  34. package/dist/cli/chunks/chunk-5LDXAVDC.js +2 -0
  35. package/dist/cli/chunks/{chunk-6Z7LYE2B.js → chunk-666L7MC2.js} +2 -2
  36. package/dist/cli/chunks/{chunk-DPEG44BS.js → chunk-66BUIFFH.js} +2 -2
  37. package/dist/cli/chunks/{chunk-HJNFBJT5.js → chunk-6V5P2VMQ.js} +8 -8
  38. package/dist/cli/chunks/{chunk-3NIHJIWP.js → chunk-6XKZ62O7.js} +2 -2
  39. package/dist/cli/chunks/{chunk-D3ZUSXFY.js → chunk-77OVXVN2.js} +2 -2
  40. package/dist/cli/chunks/{chunk-WCOJGDGO.js → chunk-7DP2IQ6F.js} +2 -2
  41. package/dist/cli/chunks/{chunk-Q3GDSFGA.js → chunk-7IF4LRX2.js} +2 -2
  42. package/dist/cli/chunks/{chunk-ZOAPOVYW.js → chunk-7JFSMXIA.js} +2 -2
  43. package/dist/cli/chunks/{chunk-O6J7MKRV.js → chunk-7MF6LVLH.js} +2 -2
  44. package/dist/cli/chunks/{chunk-REUGPZIA.js → chunk-7NMLIJHL.js} +1 -1
  45. package/dist/cli/chunks/{chunk-DATFN5DG.js → chunk-7PHYOV2X.js} +2 -2
  46. package/dist/cli/chunks/{chunk-RSOOENGE.js → chunk-7V2Z3PUJ.js} +2 -2
  47. package/dist/cli/chunks/{chunk-UZOFXYNC.js → chunk-AA6IUBCM.js} +2 -2
  48. package/dist/cli/chunks/{chunk-QNLZKD7E.js → chunk-AFLQFUXA.js} +2 -2
  49. package/dist/cli/chunks/{chunk-7J5KWUC2.js → chunk-BCT26J7X.js} +1 -1
  50. package/dist/cli/chunks/{chunk-RODJK6G6.js → chunk-BEE5KXQT.js} +1 -1
  51. package/dist/cli/chunks/{chunk-BGUCXJEJ.js → chunk-BNDK7JRW.js} +2 -2
  52. package/dist/cli/chunks/{chunk-6AMD4PZB.js → chunk-CR7LLS26.js} +2 -2
  53. package/dist/cli/chunks/{chunk-62MVVEGH.js → chunk-DBCN7R63.js} +1 -1
  54. package/dist/cli/chunks/{chunk-AVKUFN3C.js → chunk-DF3DZP7H.js} +2 -2
  55. package/dist/cli/chunks/{chunk-HWK27KJK.js → chunk-DJPS7H2M.js} +1 -1
  56. package/dist/cli/chunks/{chunk-MBDX4OHD.js → chunk-ED5OUSYZ.js} +1 -1
  57. package/dist/cli/chunks/{chunk-FW6QBTPE.js → chunk-EFTK4ZVP.js} +1 -1
  58. package/dist/cli/chunks/{chunk-N2RPLPVG.js → chunk-FEQ5RDQL.js} +2 -2
  59. package/dist/cli/chunks/{chunk-JQRR37YY.js → chunk-FKQV52TC.js} +2 -2
  60. package/dist/cli/chunks/{chunk-KJTXY3DW.js → chunk-FLWIEPAT.js} +1 -1
  61. package/dist/cli/chunks/{chunk-ORKGVVXK.js → chunk-FQTUUZVK.js} +1 -1
  62. package/dist/cli/chunks/{chunk-RTVD7SZQ.js → chunk-G5DMEEQQ.js} +1 -1
  63. package/dist/cli/chunks/{chunk-IPVKVPAF.js → chunk-GB6D3SSY.js} +2 -2
  64. package/dist/cli/chunks/{chunk-37ZSWRRP.js → chunk-GP7IXB3E.js} +2 -2
  65. package/dist/cli/chunks/{chunk-LNUWNRRJ.js → chunk-H3JEGAFC.js} +9 -9
  66. package/dist/cli/chunks/{chunk-LLVS3UYZ.js → chunk-H4BZJVKU.js} +2 -2
  67. package/dist/cli/chunks/{chunk-RPOW5LWO.js → chunk-HFGCLV56.js} +1 -1
  68. package/dist/cli/chunks/{chunk-MS6T4VCU.js → chunk-HJUC2DE6.js} +2 -2
  69. package/dist/cli/chunks/{chunk-II5KTTIS.js → chunk-HN6GVQ4Q.js} +4 -4
  70. package/dist/cli/chunks/{chunk-CSB2M7IX.js → chunk-HON4X4Z3.js} +2 -2
  71. package/dist/cli/chunks/{chunk-NL2PQLRD.js → chunk-HVAW64YW.js} +2 -2
  72. package/dist/cli/chunks/{chunk-6TOUMCSE.js → chunk-HXF4FUPY.js} +2 -2
  73. package/dist/cli/chunks/{chunk-TJDAXI6E.js → chunk-IUQ6HE2J.js} +2 -2
  74. package/dist/cli/chunks/{chunk-7ZPNQ3T6.js → chunk-J2ERTUDX.js} +1 -1
  75. package/dist/cli/chunks/{chunk-2CN2NPJQ.js → chunk-JCQ5PXVM.js} +2 -2
  76. package/dist/cli/chunks/{chunk-WAQ3U4FC.js → chunk-JNXIYHLI.js} +1 -1
  77. package/dist/cli/chunks/{chunk-EY2DGYQX.js → chunk-JUKCBZCZ.js} +1 -1
  78. package/dist/cli/chunks/{chunk-TZWCVGG2.js → chunk-JZOMOYHZ.js} +1 -1
  79. package/dist/cli/chunks/{chunk-ZSC7NHK3.js → chunk-KLVS6FT2.js} +2 -2
  80. package/dist/cli/chunks/{chunk-XALB3KRR.js → chunk-KR7S4IZZ.js} +2 -2
  81. package/dist/cli/chunks/{chunk-MO4Q5ZGE.js → chunk-L2GANTQN.js} +2 -2
  82. package/dist/cli/chunks/{chunk-ESQSX37W.js → chunk-LJINNQNN.js} +2 -2
  83. package/dist/cli/chunks/{chunk-OBZMQFWG.js → chunk-LSA4XGSE.js} +2 -2
  84. package/dist/cli/chunks/{chunk-3Y4YZDHJ.js → chunk-LVA53A5R.js} +4 -4
  85. package/dist/cli/chunks/{chunk-V775NJOM.js → chunk-LVK2PDUW.js} +1 -1
  86. package/dist/cli/chunks/{chunk-B4BOOOYM.js → chunk-LWG7LKOK.js} +1 -1
  87. package/dist/cli/chunks/{chunk-NWMYV7KG.js → chunk-MECDNFOJ.js} +2 -2
  88. package/dist/cli/chunks/{chunk-Q3E6Z2RQ.js → chunk-MFRC267A.js} +1 -1
  89. package/dist/cli/chunks/{chunk-2BBKAX7X.js → chunk-MJKFU6A6.js} +2 -2
  90. package/dist/cli/chunks/{chunk-4T36OQUK.js → chunk-MQHP65QB.js} +3 -3
  91. package/dist/cli/chunks/{chunk-GLJ6CJNY.js → chunk-MTF6ABUH.js} +2 -2
  92. package/dist/cli/chunks/{chunk-56YHSI6R.js → chunk-N5ZTPAX7.js} +2 -2
  93. package/dist/cli/chunks/{chunk-V65DK6ZZ.js → chunk-NCXXXZGL.js} +1 -1
  94. package/dist/cli/chunks/{chunk-YCYFUYCE.js → chunk-NIXMFJJC.js} +2 -2
  95. package/dist/cli/chunks/{chunk-GHEO5YVA.js → chunk-NLU4XJBN.js} +1 -1
  96. package/dist/cli/chunks/{chunk-CUQBOVRP.js → chunk-NOJVROCD.js} +1 -1
  97. package/dist/cli/chunks/{chunk-HPY7HGVQ.js → chunk-OE7SGIX2.js} +2 -2
  98. package/dist/cli/chunks/{chunk-AE65B2ZE.js → chunk-OP7X434R.js} +2 -2
  99. package/dist/cli/chunks/{chunk-E3EDVRB5.js → chunk-P4IYRPCB.js} +1 -1
  100. package/dist/cli/chunks/{chunk-PSOIVDD2.js → chunk-PNZADZSI.js} +3 -3
  101. package/dist/cli/chunks/{chunk-FSOY2XB4.js → chunk-PPUEXTH2.js} +3 -3
  102. package/dist/cli/chunks/{chunk-6F3H2C5H.js → chunk-PQLT3X6X.js} +3 -3
  103. package/dist/cli/chunks/{chunk-W4PUKTBF.js → chunk-QEKZA2NJ.js} +1 -1
  104. package/dist/cli/chunks/{chunk-IPTGPCEL.js → chunk-QKQAQPXY.js} +2 -2
  105. package/dist/cli/chunks/{chunk-JAIIPEE6.js → chunk-RFLSJ7OL.js} +2 -2
  106. package/dist/cli/chunks/{chunk-U4WDJPRL.js → chunk-RVQXMMRO.js} +2 -2
  107. package/dist/cli/chunks/{chunk-EORSYD66.js → chunk-RYCAVZSD.js} +2 -2
  108. package/dist/cli/chunks/{chunk-D32YCVCA.js → chunk-SMNOZEM7.js} +2 -2
  109. package/dist/cli/chunks/{chunk-ZHTCZGML.js → chunk-T36IXY5W.js} +2 -2
  110. package/dist/cli/chunks/{chunk-6OEGZSRK.js → chunk-T7VIUEKI.js} +2 -2
  111. package/dist/cli/chunks/{chunk-6BHAGCZD.js → chunk-TFBEX7ED.js} +1 -1
  112. package/dist/cli/chunks/{chunk-V6QARSVQ.js → chunk-TPRYLARW.js} +2 -2
  113. package/dist/cli/chunks/{chunk-3BA2FGSA.js → chunk-TR4NPMRW.js} +2 -2
  114. package/dist/cli/chunks/{chunk-R4G64UH3.js → chunk-TUPFBZKO.js} +1 -1
  115. package/dist/cli/chunks/{chunk-KKBSX43Q.js → chunk-TWEBJWJI.js} +2 -2
  116. package/dist/cli/chunks/{chunk-RWVFOXYM.js → chunk-UH7TV6BY.js} +1 -1
  117. package/dist/cli/chunks/{chunk-2L5ZFBHP.js → chunk-UT4CXF6C.js} +2 -2
  118. package/dist/cli/chunks/{chunk-JJDHD7SC.js → chunk-V2ELGHLG.js} +2 -2
  119. package/dist/cli/chunks/{chunk-G3FUOFXA.js → chunk-VK2GKQYI.js} +2 -2
  120. package/dist/cli/chunks/{chunk-VBEVZUQW.js → chunk-VNAAXZGF.js} +1 -1
  121. package/dist/cli/chunks/{chunk-O6CHLZYT.js → chunk-VOAECU7B.js} +2 -2
  122. package/dist/cli/chunks/{chunk-3RSPEFU3.js → chunk-W4ZV6LAJ.js} +2 -2
  123. package/dist/cli/chunks/{chunk-XXRDI53H.js → chunk-W6TMZY5R.js} +2 -2
  124. package/dist/cli/chunks/{chunk-CWWUBZNX.js → chunk-WKLSXJD4.js} +2 -2
  125. package/dist/cli/chunks/{chunk-H6DAP4KS.js → chunk-WSKASZYC.js} +2 -2
  126. package/dist/cli/chunks/{chunk-VDDQSW4L.js → chunk-WVFLNGOK.js} +2 -2
  127. package/dist/cli/chunks/{chunk-SSQ42GI7.js → chunk-WVHH3OQ4.js} +2 -2
  128. package/dist/cli/chunks/{chunk-OHESV6I3.js → chunk-XAULPLOC.js} +4 -4
  129. package/dist/cli/chunks/{chunk-GWUO3RY5.js → chunk-XKMMFQSJ.js} +1 -1
  130. package/dist/cli/chunks/{chunk-SXUX6PTE.js → chunk-XQ6WIPDC.js} +1 -1
  131. package/dist/cli/chunks/{chunk-4M7RBSW6.js → chunk-ZCE6JNRI.js} +2 -2
  132. package/dist/cli/chunks/{chunk-CF3W34BA.js → chunk-ZCZJYM42.js} +1 -1
  133. package/dist/cli/chunks/{chunk-ICXWXO5P.js → chunk-ZXLF3IKT.js} +1 -1
  134. package/dist/cli/chunks/{ci-BGUUHDUS.js → ci-TTP5HJSW.js} +2 -2
  135. package/dist/cli/chunks/{ci-output-CDFRGBNU.js → ci-output-TKESU45X.js} +2 -2
  136. package/dist/cli/chunks/{circuit-breaker-S3NFX6RQ.js → circuit-breaker-GFRV5R7E.js} +2 -2
  137. package/dist/cli/chunks/{claude-flow-setup-AJIPJFMC.js → claude-flow-setup-LY6MADFA.js} +2 -2
  138. package/dist/cli/chunks/client-ZDVM5WFL.js +2 -0
  139. package/dist/cli/chunks/{cline-installer-6O4KZ5UH.js → cline-installer-OSAILLDH.js} +2 -2
  140. package/dist/cli/chunks/{code-IZALXUL5.js → code-ASRSOGYH.js} +2 -2
  141. package/dist/cli/chunks/{code-index-extractor-N7VDH4XF.js → code-index-extractor-AMLGVHB7.js} +2 -2
  142. package/dist/cli/chunks/{codex-installer-35GTWCFJ.js → codex-installer-3CKH3WV4.js} +2 -2
  143. package/dist/cli/chunks/{completions-XPJFHGG2.js → completions-MXNPWLOE.js} +91 -10
  144. package/dist/cli/chunks/{complexity-analyzer-DNLCJGUJ.js → complexity-analyzer-2Z347PXF.js} +2 -2
  145. package/dist/cli/chunks/{continuedev-installer-PXAIKNYO.js → continuedev-installer-LE7K745N.js} +2 -2
  146. package/dist/cli/chunks/{copilot-installer-2TQ5IZNY.js → copilot-installer-CHJL3275.js} +2 -2
  147. package/dist/cli/chunks/{cost-tracker-A5XH4W6S.js → cost-tracker-C3ZWNNSV.js} +2 -2
  148. package/dist/cli/chunks/{coverage-EPIMXTLW.js → coverage-6JOXBVDL.js} +3 -3
  149. package/dist/cli/chunks/cross-domain-router-J5VK276J.js +2 -0
  150. package/dist/cli/chunks/{cursor-installer-WMMRPW44.js → cursor-installer-RKCNWO42.js} +2 -2
  151. package/dist/cli/chunks/{daemon-55DSODOH.js → daemon-XXWOT6TM.js} +3 -3
  152. package/dist/cli/chunks/{dag-attention-scheduler-5DSWXMMK.js → dag-attention-scheduler-37MG6XR4.js} +2 -2
  153. package/dist/cli/chunks/{detect-NOS46AWN.js → detect-QOTL36CE.js} +2 -2
  154. package/dist/cli/chunks/{domain-handler-BFRNU6S3.js → domain-handler-TJNLNJ7Z.js} +2 -2
  155. package/dist/cli/chunks/{domain-transfer-BPSA4HFR.js → domain-transfer-FDHC2MGH.js} +2 -2
  156. package/dist/cli/chunks/dream-VCLN6RM4.js +2 -0
  157. package/dist/cli/chunks/esm-node-YZSRCH6T.js +2 -0
  158. package/dist/cli/chunks/{eval-YDLM23FB.js → eval-JP7CLUTD.js} +2 -2
  159. package/dist/cli/chunks/{fast-paths-GISZ7HBO.js → fast-paths-CWTVLIIC.js} +2 -2
  160. package/dist/cli/chunks/{feature-flags-5WGZLUPQ.js → feature-flags-H2UU53L4.js} +2 -2
  161. package/dist/cli/chunks/{feature-flags-3FLJF6CQ.js → feature-flags-SKFBAHR3.js} +2 -2
  162. package/dist/cli/chunks/{file-discovery-PPHUMFSI.js → file-discovery-RWVGKIDB.js} +2 -2
  163. package/dist/cli/chunks/{fleet-LHFZ53FS.js → fleet-JOSUYRTZ.js} +3 -3
  164. package/dist/cli/chunks/{gnn-wrapper-Z45DRWGI.js → gnn-wrapper-WNOZFTDD.js} +2 -2
  165. package/dist/cli/chunks/{heartbeat-handler-VMLJ5PDH.js → heartbeat-handler-73YSR6K7.js} +4 -4
  166. package/dist/cli/chunks/{heartbeat-scheduler-GUWYDHEY.js → heartbeat-scheduler-EN52JZUX.js} +2 -2
  167. package/dist/cli/chunks/hnsw-adapter-Y5HVTNJW.js +2 -0
  168. package/dist/cli/chunks/hnsw-index-NZTCPZA5.js +2 -0
  169. package/dist/cli/chunks/{hnsw-legacy-bridge-S7UZWDUP.js → hnsw-legacy-bridge-PWD6DXS4.js} +2 -2
  170. package/dist/cli/chunks/{hnswlib-node-MIAAS7OI.js → hnswlib-node-VAZOCNY7.js} +2 -2
  171. package/dist/cli/chunks/{hooks-ZN4FV5XS.js → hooks-K7XGDF2Y.js} +6 -6
  172. package/dist/cli/chunks/{hybrid-router-Y6LBFPL7.js → hybrid-router-6W323WKW.js} +2 -2
  173. package/dist/cli/chunks/{hypergraph-engine-KK73LZYZ.js → hypergraph-engine-R2N4C24I.js} +2 -2
  174. package/dist/cli/chunks/{hypergraph-handler-OBGDPIWG.js → hypergraph-handler-AY4YZDOG.js} +3 -3
  175. package/dist/cli/chunks/impact-analyzer-ROWLIS6H.js +2 -0
  176. package/dist/cli/chunks/{init-handler-JJJ7VHM4.js → init-handler-UDBW4P3Z.js} +6 -6
  177. package/dist/cli/chunks/init-wizard-MI76CUL5.js +2 -0
  178. package/dist/cli/chunks/kernel-5WVAV5RX.js +2 -0
  179. package/dist/cli/chunks/{kilocode-installer-EF6DPX2D.js → kilocode-installer-J2NZUDEQ.js} +2 -2
  180. package/dist/cli/chunks/{kiro-installer-SG74CEVO.js → kiro-installer-AHOOKFQH.js} +2 -2
  181. package/dist/cli/chunks/knowledge-graph-QXL3AWPV.js +2 -0
  182. package/dist/cli/chunks/{learning-LVWYMHF6.js → learning-VC7X2HKA.js} +3 -3
  183. package/dist/cli/chunks/{llm-router-QFK7MNPY.js → llm-router-3PU7CH5P.js} +4 -4
  184. package/dist/cli/chunks/{load-6XPV4WA2.js → load-WB4JD6X7.js} +2 -2
  185. package/dist/cli/chunks/load-test-2JOY7YH6.js +2 -0
  186. package/dist/cli/chunks/{mcp-GZXOPYMH.js → mcp-QUU2DYYK.js} +2 -2
  187. package/dist/cli/chunks/{memory-QTE2Z5HU.js → memory-UAEWPG34.js} +5 -5
  188. package/dist/cli/chunks/memory-backend-ZKGLAWQZ.js +2 -0
  189. package/dist/cli/chunks/{memory-handlers-PC4P4YEF.js → memory-handlers-3FBXIZG4.js} +2 -2
  190. package/dist/cli/chunks/{multi-model-executor-FZOPSUOT.js → multi-model-executor-CIUHXR43.js} +2 -2
  191. package/dist/cli/chunks/{opencode-installer-CITDTCUQ.js → opencode-installer-VV6RIHNR.js} +2 -2
  192. package/dist/cli/chunks/{orchestrator-ZTG7MFHQ.js → orchestrator-WV27PZZM.js} +5 -5
  193. package/dist/cli/chunks/{pipeline-QXO4EJP4.js → pipeline-JRBCX2U3.js} +2 -2
  194. package/dist/cli/chunks/{platform-JJEDYCAK.js → platform-TUPMH4ND.js} +2 -2
  195. package/dist/cli/chunks/{plugin-ZEKRM6F7.js → plugin-H757CYQK.js} +2 -2
  196. package/dist/cli/chunks/{prime-radiant-advanced-wasm-GRS4T6LR.js → prime-radiant-advanced-wasm-5BWO25RA.js} +2 -2
  197. package/dist/cli/chunks/protocol-executor-3Q4QY7G6.js +2 -0
  198. package/dist/cli/chunks/{protocol-handler-KWI2T6OR.js → protocol-handler-Z6DCNTUU.js} +2 -2
  199. package/dist/cli/chunks/{prove-7FJN2HEH.js → prove-4OGWFOUM.js} +2 -2
  200. package/dist/cli/chunks/{provider-manager-QYYZZLLO.js → provider-manager-K736L6LN.js} +2 -2
  201. package/dist/cli/chunks/qe-reasoning-bank-SAMJF3NF.js +2 -0
  202. package/dist/cli/chunks/{quality-4NHO2NY5.js → quality-YFLEATGZ.js} +2 -2
  203. package/dist/cli/chunks/queen-coordinator-OFRH67Y2.js +2 -0
  204. package/dist/cli/chunks/{real-embeddings-SIELAOWX.js → real-embeddings-5QUSL7J4.js} +2 -2
  205. package/dist/cli/chunks/{roocode-installer-ANYXH3NR.js → roocode-installer-HDWE5XW3.js} +2 -2
  206. package/dist/cli/chunks/router-UDHEENEY.js +2 -0
  207. package/dist/cli/chunks/routing-feedback-PBZRVFVL.js +2 -0
  208. package/dist/cli/chunks/{routing-handler-6QQHK4KV.js → routing-handler-P6PP3FYW.js} +2 -2
  209. package/dist/cli/chunks/{ruvector-commands-YEUA3MZB.js → ruvector-commands-VNMTRQML.js} +2 -2
  210. package/dist/cli/chunks/{rvf-dual-writer-UJFRHPVE.js → rvf-dual-writer-A7VW5CAT.js} +2 -2
  211. package/dist/cli/chunks/{rvf-migration-adapter-CSDFG7UA.js → rvf-migration-adapter-QIPSNASM.js} +2 -2
  212. package/dist/cli/chunks/{rvf-migration-coordinator-QO7OENQF.js → rvf-migration-coordinator-XT4XDLRZ.js} +2 -2
  213. package/dist/cli/chunks/rvf-native-adapter-CJFEDG74.js +2 -0
  214. package/dist/cli/chunks/safe-db-YMSZFHWP.js +2 -0
  215. package/dist/cli/chunks/schedule-B43N6CVB.js +2 -0
  216. package/dist/cli/chunks/scheduler-ITZH5YQM.js +2 -0
  217. package/dist/cli/chunks/{security-QCIUC5FX.js → security-E2XCP5CG.js} +3 -3
  218. package/dist/cli/chunks/shared-rvf-adapter-PV5ZBJ25.js +2 -0
  219. package/dist/cli/chunks/{shared-rvf-dual-writer-LVJJS3PD.js → shared-rvf-dual-writer-NPWTXHUI.js} +2 -2
  220. package/dist/cli/chunks/sqlite-persistence-RK5CKPHB.js +2 -0
  221. package/dist/cli/chunks/{status-handler-O77A4JWM.js → status-handler-MWVNDZSZ.js} +2 -2
  222. package/dist/cli/chunks/{structural-health-WIIBIIQI.js → structural-health-2KZO43IF.js} +2 -2
  223. package/dist/cli/chunks/{sync-UN6D6OF2.js → sync-C5BOK3WU.js} +2 -2
  224. package/dist/cli/chunks/{task-handler-RBOSMJCK.js → task-handler-KRVSHJGJ.js} +2 -2
  225. package/dist/cli/chunks/{task-handlers-VWMXQKAT.js → task-handlers-CKOHD633.js} +2 -2
  226. package/dist/cli/chunks/{test-XK5M3PGT.js → test-3B7FK6MJ.js} +4 -4
  227. package/dist/cli/chunks/{test-scheduling-CTQ3JJ7G.js → test-scheduling-HZIMSTAX.js} +3 -3
  228. package/dist/cli/chunks/{token-bootstrap-D5CQ3I5M.js → token-bootstrap-JJCANIHJ.js} +2 -2
  229. package/dist/cli/chunks/{token-usage-L4QSLWQ5.js → token-usage-5VCMBZU7.js} +2 -2
  230. package/dist/cli/chunks/{transformers-SRPJDBKA.js → transformers-ETUTMOTF.js} +2 -2
  231. package/dist/cli/chunks/{tree-sitter-wasm-parser-DOU5ITWB.js → tree-sitter-wasm-parser-TMR44BKP.js} +2 -2
  232. package/dist/cli/chunks/{types-LECYZUBN.js → types-GYT6373C.js} +2 -2
  233. package/dist/cli/chunks/unified-memory-LIKELZVA.js +2 -0
  234. package/dist/cli/chunks/unified-memory-hnsw-VTN3MUB4.js +2 -0
  235. package/dist/cli/chunks/unified-persistence-MQVUY5WN.js +2 -0
  236. package/dist/cli/chunks/upgrade-534QLY7P.js +5 -0
  237. package/dist/cli/chunks/{validate-SIKNIS6B.js → validate-UBVF3CSS.js} +2 -2
  238. package/dist/cli/chunks/{validate-swarm-EHAMMILJ.js → validate-swarm-2XD45EVM.js} +2 -2
  239. package/dist/cli/chunks/{vibium-LJ4NYXMZ.js → vibium-NMT6AQ4S.js} +2 -2
  240. package/dist/cli/chunks/visual-security-HVJWGY7T.js +2 -0
  241. package/dist/cli/chunks/{web-tree-sitter-DZQ3T4JD.js → web-tree-sitter-RNG6NRDD.js} +2 -2
  242. package/dist/cli/chunks/{windsurf-installer-U6Z73O6J.js → windsurf-installer-RVCDSJT3.js} +2 -2
  243. package/dist/cli/chunks/witness-chain-5R322YYF.js +2 -0
  244. package/dist/cli/chunks/{witness-chain-JE3QU4YP.js → witness-chain-YDFB22MT.js} +2 -2
  245. package/dist/cli/chunks/{workflow-62QXGZQO.js → workflow-MHW4KHNK.js} +4 -4
  246. package/dist/cli/chunks/workflow-orchestrator-637BCZI4.js +2 -0
  247. package/dist/cli/chunks/{wrappers-CAX5EZSH.js → wrappers-SAZY3C2S.js} +2 -2
  248. package/dist/cli/commands/upgrade.d.ts +96 -0
  249. package/dist/cli/commands/upgrade.js +342 -0
  250. package/dist/cli/completions/index.d.ts +27 -0
  251. package/dist/cli/completions/index.js +112 -14
  252. package/dist/cli/handlers/brain-handler.d.ts +2 -0
  253. package/dist/cli/handlers/brain-handler.js +221 -1
  254. package/dist/cli/index.js +5 -1
  255. package/dist/integrations/ruvector/brain-diff.d.ts +93 -0
  256. package/dist/integrations/ruvector/brain-diff.js +281 -0
  257. package/dist/integrations/ruvector/brain-search.d.ts +78 -0
  258. package/dist/integrations/ruvector/brain-search.js +154 -0
  259. package/dist/mcp/bundle.js +1 -1
  260. package/package.json +1 -1
  261. package/dist/cli/chunks/adapter-P2EPBJLF.js +0 -2
  262. package/dist/cli/chunks/aqe-learning-engine-6UITO3NJ.js +0 -2
  263. package/dist/cli/chunks/base-JHBJXVGP.js +0 -2
  264. package/dist/cli/chunks/brain-handler-ISVST4MR.js +0 -68
  265. package/dist/cli/chunks/browser-workflow-U4OON5DZ.js +0 -2
  266. package/dist/cli/chunks/chunk-FEVTMHO6.js +0 -2
  267. package/dist/cli/chunks/client-UHHMKUPF.js +0 -2
  268. package/dist/cli/chunks/cross-domain-router-GEBXTPZW.js +0 -2
  269. package/dist/cli/chunks/dream-XBRGYPBC.js +0 -2
  270. package/dist/cli/chunks/esm-node-EV4HOHTZ.js +0 -2
  271. package/dist/cli/chunks/hnsw-adapter-BG73YVXI.js +0 -2
  272. package/dist/cli/chunks/hnsw-index-K73ZTLJN.js +0 -2
  273. package/dist/cli/chunks/impact-analyzer-GWIUYYCQ.js +0 -2
  274. package/dist/cli/chunks/init-wizard-RIJJAKE3.js +0 -2
  275. package/dist/cli/chunks/kernel-SIPBCRGL.js +0 -2
  276. package/dist/cli/chunks/knowledge-graph-NOYZXHIG.js +0 -2
  277. package/dist/cli/chunks/load-test-DIMUH75F.js +0 -2
  278. package/dist/cli/chunks/memory-backend-IWOGO4BV.js +0 -2
  279. package/dist/cli/chunks/protocol-executor-NT4TILJW.js +0 -2
  280. package/dist/cli/chunks/qe-reasoning-bank-VDROHXFS.js +0 -2
  281. package/dist/cli/chunks/queen-coordinator-7LO73IV3.js +0 -2
  282. package/dist/cli/chunks/router-SFVOLN2W.js +0 -2
  283. package/dist/cli/chunks/routing-feedback-MRFV7WUZ.js +0 -2
  284. package/dist/cli/chunks/rvf-native-adapter-6L7FZZC7.js +0 -2
  285. package/dist/cli/chunks/safe-db-PYWBVGOV.js +0 -2
  286. package/dist/cli/chunks/schedule-BUQU75HY.js +0 -2
  287. package/dist/cli/chunks/scheduler-XOSKWZO2.js +0 -2
  288. package/dist/cli/chunks/shared-rvf-adapter-OZ7S4ZQL.js +0 -2
  289. package/dist/cli/chunks/sqlite-persistence-7UXQZ5Y6.js +0 -2
  290. package/dist/cli/chunks/unified-memory-L6735TFM.js +0 -2
  291. package/dist/cli/chunks/unified-memory-hnsw-7TZNEDGY.js +0 -2
  292. package/dist/cli/chunks/unified-persistence-FNYZ3C2B.js +0 -2
  293. package/dist/cli/chunks/visual-security-SMPZPDY4.js +0 -2
  294. package/dist/cli/chunks/witness-chain-FNCOTWFA.js +0 -2
  295. package/dist/cli/chunks/workflow-orchestrator-RCR4N7OA.js +0 -2
@@ -0,0 +1,342 @@
1
+ /**
2
+ * `aqe upgrade` — read-only advisory
3
+ *
4
+ * Detects which optional native bindings load on this platform and prints a
5
+ * report with recommendations. Does NOT modify feature flags, env vars, or
6
+ * config files — it only tells the user what they'd gain by installing the
7
+ * missing optional deps.
8
+ *
9
+ * Related: issue #383 item 2.
10
+ */
11
+ import { Command } from 'commander';
12
+ import chalk from 'chalk';
13
+ import { createRequire } from 'node:module';
14
+ import { platform, arch } from 'node:os';
15
+ import { getRuVectorFeatureFlags } from '../../integrations/ruvector/feature-flags.js';
16
+ // ============================================================================
17
+ // Native catalog
18
+ // ============================================================================
19
+ /**
20
+ * The set of packages `aqe upgrade` inspects. Order controls the report
21
+ * rendering order.
22
+ */
23
+ export const NATIVE_CATALOG = [
24
+ {
25
+ packageName: 'better-sqlite3',
26
+ role: 'SQLite storage (required — memory.db, patterns, audit)',
27
+ fallback: 'n/a — required',
28
+ affectsFlags: [],
29
+ required: true,
30
+ },
31
+ {
32
+ packageName: 'web-tree-sitter',
33
+ role: 'Tree-sitter WASM parser runtime (required — code intelligence)',
34
+ fallback: 'n/a — required',
35
+ affectsFlags: [],
36
+ required: true,
37
+ },
38
+ {
39
+ packageName: 'hnswlib-node',
40
+ role: 'Canonical HNSW vector index (default since ADR-090)',
41
+ fallback: 'ProgressiveHnswBackend (JS) — correct but slower on large codebases',
42
+ affectsFlags: ['useNativeHNSW'],
43
+ required: false,
44
+ },
45
+ {
46
+ packageName: '@ruvector/rvf-node',
47
+ role: 'Persistent HNSW pattern store + RVF brain export format',
48
+ fallback: 'SQLite-backed HNSW + JSONL brain export',
49
+ affectsFlags: ['useRVFPatternStore'],
50
+ required: false,
51
+ },
52
+ {
53
+ packageName: '@ruvector/solver-node',
54
+ role: 'Sublinear PageRank on the pattern citation graph',
55
+ fallback: 'TypeScript power iteration — O(n·m) (practical cap ≈ 50K nodes)',
56
+ affectsFlags: ['useSublinearSolver'],
57
+ required: false,
58
+ },
59
+ {
60
+ packageName: '@ruvector/attention',
61
+ role: 'Flash Attention with SIMD acceleration',
62
+ fallback: 'Plain attention — 2.5–7× slower on large sequences',
63
+ affectsFlags: ['useQEFlashAttention'],
64
+ required: false,
65
+ },
66
+ {
67
+ packageName: '@ruvector/gnn',
68
+ role: 'GraphMAE native acceleration',
69
+ fallback: 'TypeScript GraphMAE — correct but slower',
70
+ affectsFlags: ['useGraphMAEEmbeddings'],
71
+ required: false,
72
+ },
73
+ ];
74
+ /** Default probe — uses a CJS require relative to this module's location. */
75
+ export function createDefaultLoadProbe() {
76
+ const req = createRequire(import.meta.url);
77
+ return (packageName) => {
78
+ try {
79
+ req(packageName);
80
+ return { ok: true };
81
+ }
82
+ catch (err) {
83
+ return { ok: false, error: err instanceof Error ? err : new Error(String(err)) };
84
+ }
85
+ };
86
+ }
87
+ export function detectNatives(catalog, probe) {
88
+ return catalog.map((check) => {
89
+ const result = probe(check.packageName);
90
+ if (result.ok) {
91
+ return { ...check, status: 'loaded' };
92
+ }
93
+ const missingModule = isModuleNotFound(result.error);
94
+ const status = check.required
95
+ ? 'required-missing'
96
+ : missingModule
97
+ ? 'missing'
98
+ : 'missing';
99
+ return { ...check, status, loadError: result.error.message };
100
+ });
101
+ }
102
+ function isModuleNotFound(err) {
103
+ return err.code === 'MODULE_NOT_FOUND';
104
+ }
105
+ // ============================================================================
106
+ // Environment overrides
107
+ // ============================================================================
108
+ /**
109
+ * Map of RUVECTOR_* env vars → feature flag names that aqe upgrade cares about.
110
+ * Only includes flags tied to optional natives — the full list is in
111
+ * feature-flags.ts.
112
+ */
113
+ const ENV_VAR_TO_FLAG = {
114
+ RUVECTOR_USE_RVF_PATTERN_STORE: 'useRVFPatternStore',
115
+ RUVECTOR_USE_SUBLINEAR_SOLVER: 'useSublinearSolver',
116
+ RUVECTOR_USE_NATIVE_HNSW: 'useNativeHNSW',
117
+ RUVECTOR_USE_GNN_INDEX: 'useQEGNNIndex',
118
+ RUVECTOR_USE_FLASH_ATTENTION: 'useQEFlashAttention',
119
+ RUVECTOR_USE_GRAPH_MAE_EMBEDDINGS: 'useGraphMAEEmbeddings',
120
+ };
121
+ export function readEnvOverrides(env) {
122
+ const out = [];
123
+ for (const [envVar, flagName] of Object.entries(ENV_VAR_TO_FLAG)) {
124
+ const v = env[envVar];
125
+ if (v !== undefined)
126
+ out.push({ envVar, value: v, flagName });
127
+ }
128
+ return out;
129
+ }
130
+ export function buildRecommendations(input) {
131
+ const recs = [];
132
+ const nativeByName = new Map(input.natives.map((n) => [n.packageName, n]));
133
+ // Missing required deps are a hard error.
134
+ for (const n of input.natives) {
135
+ if (n.status === 'required-missing') {
136
+ recs.push({
137
+ severity: 'error',
138
+ message: `Required dependency missing: ${n.packageName} — ${n.role}`,
139
+ action: `npm install ${n.packageName}`,
140
+ });
141
+ }
142
+ }
143
+ // Missing optional deps: suggest install, note fallback.
144
+ for (const n of input.natives) {
145
+ if (n.status === 'missing' && !n.required) {
146
+ recs.push({
147
+ severity: 'warn',
148
+ message: `Optional native missing: ${n.packageName} — falls back to ${n.fallback}`,
149
+ action: `npm install ${n.packageName}`,
150
+ });
151
+ }
152
+ }
153
+ // Env override conflicts: user forced a flag ON but the native isn't loadable.
154
+ const flagByName = { ...input.flags };
155
+ for (const override of input.envOverrides) {
156
+ const natives = input.natives.filter((n) => n.affectsFlags.includes(override.flagName));
157
+ const anyLoaded = natives.some((n) => n.status === 'loaded');
158
+ const wantsOn = override.value === 'true' || override.value === '1';
159
+ if (wantsOn && natives.length > 0 && !anyLoaded) {
160
+ const missing = natives.map((n) => n.packageName).join(', ');
161
+ recs.push({
162
+ severity: 'warn',
163
+ message: `${override.envVar}=${override.value} requests flag ${override.flagName}=true, ` +
164
+ `but required native(s) not loaded: ${missing}. The flag will silently fall back.`,
165
+ action: natives[0] ? `npm install ${natives[0].packageName}` : undefined,
166
+ });
167
+ }
168
+ }
169
+ void flagByName; // reserved for future rules
170
+ void nativeByName;
171
+ // All optionals loaded → positive-confirmation info line.
172
+ const optionalMissing = input.natives.filter((n) => !n.required && n.status === 'missing');
173
+ if (optionalMissing.length === 0 && input.natives.every((n) => n.status !== 'required-missing')) {
174
+ recs.push({
175
+ severity: 'info',
176
+ message: 'All recommended native bindings are loaded — no action required.',
177
+ });
178
+ }
179
+ return recs;
180
+ }
181
+ export function buildReport(input) {
182
+ const natives = detectNatives(NATIVE_CATALOG, input.probe);
183
+ const envOverrides = readEnvOverrides(input.env);
184
+ const recommendations = buildRecommendations({
185
+ natives,
186
+ flags: input.flags,
187
+ envOverrides,
188
+ });
189
+ const optionalLoadedCount = natives.filter((n) => !n.required && n.status === 'loaded').length;
190
+ const optionalMissingCount = natives.filter((n) => !n.required && n.status === 'missing').length;
191
+ const requiredOk = natives.filter((n) => n.required).every((n) => n.status === 'loaded');
192
+ return {
193
+ aqeVersion: input.aqeVersion,
194
+ platform: {
195
+ os: platform(),
196
+ arch: arch(),
197
+ node: process.version,
198
+ },
199
+ natives,
200
+ flags: input.flags,
201
+ envOverrides,
202
+ recommendations,
203
+ summary: {
204
+ requiredOk,
205
+ optionalMissingCount,
206
+ optionalLoadedCount,
207
+ },
208
+ };
209
+ }
210
+ // ============================================================================
211
+ // Exit-code policy
212
+ // ============================================================================
213
+ export function exitCodeFor(report, strict) {
214
+ if (!report.summary.requiredOk)
215
+ return 2;
216
+ if (strict && report.summary.optionalMissingCount > 0)
217
+ return 1;
218
+ return 0;
219
+ }
220
+ // ============================================================================
221
+ // Rendering
222
+ // ============================================================================
223
+ export function renderReportHuman(report) {
224
+ const lines = [];
225
+ const push = (s = '') => lines.push(s);
226
+ push('');
227
+ push(chalk.bold.blue(' aqe upgrade — native binding report'));
228
+ push(chalk.gray(' ──────────────────────────────────────'));
229
+ push('');
230
+ push(` AQE: ${chalk.cyan(report.aqeVersion)}`);
231
+ push(` Platform: ${chalk.cyan(`${report.platform.os} ${report.platform.arch}`)}`);
232
+ push(` Node: ${chalk.cyan(report.platform.node)}`);
233
+ push('');
234
+ push(chalk.blue(' Native bindings:'));
235
+ for (const n of report.natives) {
236
+ const status = statusBadge(n.status);
237
+ push(` ${status} ${chalk.bold(n.packageName.padEnd(28))} ${chalk.gray(n.role)}`);
238
+ if (n.status !== 'loaded' && n.loadError) {
239
+ // Node's MODULE_NOT_FOUND error message carries a multi-line "Require
240
+ // stack:" trailer that adds no signal here — keep the first line only.
241
+ push(` ${chalk.gray(n.loadError.split('\n')[0])}`);
242
+ }
243
+ }
244
+ push('');
245
+ push(chalk.blue(' Flag state (after env overrides):'));
246
+ const flagEntries = Object.entries(report.flags);
247
+ for (const [name, value] of flagEntries) {
248
+ const badge = value ? chalk.green('on ') : chalk.yellow('off');
249
+ push(` ${badge} ${name}`);
250
+ }
251
+ if (report.envOverrides.length > 0) {
252
+ push('');
253
+ push(chalk.blue(' Env overrides in effect:'));
254
+ for (const o of report.envOverrides) {
255
+ push(` ${chalk.cyan(o.envVar)}=${chalk.cyan(o.value)} ${chalk.gray(`→ ${o.flagName}`)}`);
256
+ }
257
+ }
258
+ push('');
259
+ push(chalk.blue(' Recommendations:'));
260
+ if (report.recommendations.length === 0) {
261
+ push(chalk.gray(' (none)'));
262
+ }
263
+ else {
264
+ for (const rec of report.recommendations) {
265
+ const prefix = recommendationPrefix(rec.severity);
266
+ push(` ${prefix} ${rec.message}`);
267
+ if (rec.action)
268
+ push(` ${chalk.gray('→')} ${chalk.cyan(rec.action)}`);
269
+ }
270
+ }
271
+ push('');
272
+ const okBadge = report.summary.requiredOk ? chalk.green('OK') : chalk.red('FAIL');
273
+ push(` Summary: required ${okBadge} ` +
274
+ `optional loaded ${chalk.cyan(report.summary.optionalLoadedCount)} / ` +
275
+ `${chalk.cyan(report.summary.optionalLoadedCount + report.summary.optionalMissingCount)}`);
276
+ push('');
277
+ return lines.join('\n');
278
+ }
279
+ function statusBadge(status) {
280
+ switch (status) {
281
+ case 'loaded':
282
+ return chalk.green('✓');
283
+ case 'missing':
284
+ return chalk.yellow('…');
285
+ case 'required-missing':
286
+ return chalk.red('✗');
287
+ }
288
+ }
289
+ function recommendationPrefix(severity) {
290
+ switch (severity) {
291
+ case 'info':
292
+ return chalk.green('✓');
293
+ case 'warn':
294
+ return chalk.yellow('!');
295
+ case 'error':
296
+ return chalk.red('✗');
297
+ }
298
+ }
299
+ export function createUpgradeCommand(cleanupAndExit) {
300
+ const cmd = new Command('upgrade')
301
+ .description('Detect optional native bindings and recommend install / flag changes (read-only)')
302
+ .option('--json', 'Emit the report as JSON to stdout', false)
303
+ .option('--strict', 'Exit non-zero if any recommended optional native is missing', false)
304
+ .action(async (options) => {
305
+ const aqeVersion = resolveAqeVersion();
306
+ const rvFlags = getRuVectorFeatureFlags();
307
+ const report = buildReport({
308
+ aqeVersion,
309
+ probe: createDefaultLoadProbe(),
310
+ env: process.env,
311
+ flags: {
312
+ useRVFPatternStore: rvFlags.useRVFPatternStore,
313
+ useSublinearSolver: rvFlags.useSublinearSolver,
314
+ useNativeHNSW: rvFlags.useNativeHNSW,
315
+ useGraphMAEEmbeddings: rvFlags.useGraphMAEEmbeddings,
316
+ useQEFlashAttention: rvFlags.useQEFlashAttention,
317
+ },
318
+ });
319
+ if (options.json) {
320
+ process.stdout.write(JSON.stringify(report, null, 2) + '\n');
321
+ }
322
+ else {
323
+ process.stdout.write(renderReportHuman(report));
324
+ }
325
+ await cleanupAndExit(exitCodeFor(report, options.strict === true));
326
+ });
327
+ return cmd;
328
+ }
329
+ // ============================================================================
330
+ // Helpers
331
+ // ============================================================================
332
+ function resolveAqeVersion() {
333
+ try {
334
+ const req = createRequire(import.meta.url);
335
+ const pkg = req('../../../package.json');
336
+ return pkg.version ?? 'unknown';
337
+ }
338
+ catch {
339
+ return 'unknown';
340
+ }
341
+ }
342
+ //# sourceMappingURL=upgrade.js.map
@@ -152,6 +152,33 @@ export declare const COMMANDS: {
152
152
  };
153
153
  };
154
154
  };
155
+ readonly brain: {
156
+ readonly description: "Export, import, and inspect QE brain state";
157
+ readonly subcommands: {
158
+ readonly export: {
159
+ readonly options: readonly ["-o", "--output", "--format", "--db"];
160
+ };
161
+ readonly import: {
162
+ readonly options: readonly ["-i", "--input", "--strategy", "--dry-run", "--db"];
163
+ };
164
+ readonly info: {
165
+ readonly options: readonly ["-i", "--input"];
166
+ };
167
+ readonly diff: {
168
+ readonly options: readonly ["--table", "--verbose", "--json"];
169
+ };
170
+ readonly search: {
171
+ readonly options: readonly ["-i", "--input", "--table", "--domain", "--pattern-type", "--since", "--until", "-q", "--query", "-l", "--limit", "--json"];
172
+ };
173
+ readonly 'witness-backfill': {
174
+ readonly options: readonly ["--db"];
175
+ };
176
+ };
177
+ };
178
+ readonly upgrade: {
179
+ readonly description: "Detect optional native bindings and recommend install / flag changes";
180
+ readonly options: readonly ["--json", "--strict"];
181
+ };
155
182
  };
156
183
  /**
157
184
  * Task types for completion
@@ -231,6 +231,23 @@ export const COMMANDS = {
231
231
  install: { options: ['--shell'] },
232
232
  },
233
233
  },
234
+ // Brain export/import/diff/search
235
+ brain: {
236
+ description: 'Export, import, and inspect QE brain state',
237
+ subcommands: {
238
+ export: { options: ['-o', '--output', '--format', '--db'] },
239
+ import: { options: ['-i', '--input', '--strategy', '--dry-run', '--db'] },
240
+ info: { options: ['-i', '--input'] },
241
+ diff: { options: ['--table', '--verbose', '--json'] },
242
+ search: { options: ['-i', '--input', '--table', '--domain', '--pattern-type', '--since', '--until', '-q', '--query', '-l', '--limit', '--json'] },
243
+ 'witness-backfill': { options: ['--db'] },
244
+ },
245
+ },
246
+ // Native binding advisor
247
+ upgrade: {
248
+ description: 'Detect optional native bindings and recommend install / flag changes',
249
+ options: ['--json', '--strict'],
250
+ },
234
251
  };
235
252
  /**
236
253
  * Task types for completion
@@ -284,40 +301,40 @@ export function generateBashCompletion() {
284
301
 
285
302
  # Helper function to complete test files (*.test.ts, *.spec.ts, *.test.js, etc.)
286
303
  _aqe_complete_test_files() {
287
- local cur="\$1"
304
+ local cur="$1"
288
305
  local IFS=$'\\n'
289
306
  local files=()
290
307
 
291
308
  # Complete test files with common test file patterns
292
309
  # Use find for more reliable glob matching across directories
293
- if [[ -z "\$cur" || "\$cur" == "." ]]; then
310
+ if [[ -z "$cur" || "$cur" == "." ]]; then
294
311
  # No prefix - search from current directory
295
312
  while IFS= read -r file; do
296
- files+=("\$file")
313
+ files+=("$file")
297
314
  done < <(find . -maxdepth 3 -type f \\( -name "*.test.ts" -o -name "*.spec.ts" -o -name "*.test.js" -o -name "*.spec.js" -o -name "*.test.tsx" -o -name "*.spec.tsx" \\) 2>/dev/null | head -30)
298
315
  else
299
316
  # Has prefix - use compgen with glob patterns
300
- files+=(\$(compgen -f -X '!*.test.ts' -- "\$cur" 2>/dev/null))
301
- files+=(\$(compgen -f -X '!*.spec.ts' -- "\$cur" 2>/dev/null))
302
- files+=(\$(compgen -f -X '!*.test.js' -- "\$cur" 2>/dev/null))
303
- files+=(\$(compgen -f -X '!*.spec.js' -- "\$cur" 2>/dev/null))
304
- files+=(\$(compgen -f -X '!*.test.tsx' -- "\$cur" 2>/dev/null))
305
- files+=(\$(compgen -f -X '!*.spec.tsx' -- "\$cur" 2>/dev/null))
317
+ files+=($(compgen -f -X '!*.test.ts' -- "$cur" 2>/dev/null))
318
+ files+=($(compgen -f -X '!*.spec.ts' -- "$cur" 2>/dev/null))
319
+ files+=($(compgen -f -X '!*.test.js' -- "$cur" 2>/dev/null))
320
+ files+=($(compgen -f -X '!*.spec.js' -- "$cur" 2>/dev/null))
321
+ files+=($(compgen -f -X '!*.test.tsx' -- "$cur" 2>/dev/null))
322
+ files+=($(compgen -f -X '!*.spec.tsx' -- "$cur" 2>/dev/null))
306
323
  fi
307
324
 
308
325
  # Also include directories for navigation
309
- COMPREPLY=(\$(compgen -d -- "\$cur"))
326
+ COMPREPLY=($(compgen -d -- "$cur"))
310
327
 
311
328
  # Add test files to completions
312
329
  for file in "\${files[@]}"; do
313
- [[ -n "\$file" ]] && COMPREPLY+=("\$file")
330
+ [[ -n "$file" ]] && COMPREPLY+=("$file")
314
331
  done
315
332
  }
316
333
 
317
334
  # Helper function to complete directories
318
335
  _aqe_complete_directories() {
319
- local cur="\$1"
320
- COMPREPLY=( \$(compgen -d -- "$cur") )
336
+ local cur="$1"
337
+ COMPREPLY=( $(compgen -d -- "$cur") )
321
338
  }
322
339
 
323
340
  # Main completion function (version-agnostic name per ADR-042)
@@ -325,12 +342,13 @@ _aqe_completions() {
325
342
  local cur prev words cword
326
343
  _init_completion || return
327
344
 
328
- local commands="init status health task agent domain protocol test coverage quality security code migrate hypergraph completions"
345
+ local commands="init status health task agent domain protocol test coverage quality security code migrate hypergraph completions brain upgrade"
329
346
  local task_subcmds="submit list cancel status"
330
347
  local agent_subcmds="list spawn"
331
348
  local domain_subcmds="list health"
332
349
  local protocol_subcmds="run"
333
350
  local completions_subcmds="bash zsh fish powershell install"
351
+ local brain_subcmds="export import info diff search witness-backfill"
334
352
  local code_actions="index search impact deps"
335
353
  local test_actions="generate execute"
336
354
 
@@ -663,6 +681,48 @@ _aqe_completions() {
663
681
  ;;
664
682
  esac
665
683
  ;;
684
+ brain)
685
+ case "\${words[2]}" in
686
+ export)
687
+ COMPREPLY=( $(compgen -W "-o --output --format --db" -- "$cur") )
688
+ return
689
+ ;;
690
+ import)
691
+ COMPREPLY=( $(compgen -W "-i --input --strategy --dry-run --db" -- "$cur") )
692
+ return
693
+ ;;
694
+ info)
695
+ COMPREPLY=( $(compgen -W "-i --input" -- "$cur") )
696
+ return
697
+ ;;
698
+ diff)
699
+ COMPREPLY=( $(compgen -W "--table --verbose --json" -- "$cur") )
700
+ return
701
+ ;;
702
+ search)
703
+ case "$prev" in
704
+ --domain)
705
+ COMPREPLY=( $(compgen -W "$domains" -- "$cur") )
706
+ return
707
+ ;;
708
+ esac
709
+ COMPREPLY=( $(compgen -W "-i --input --table --domain --pattern-type --since --until -q --query -l --limit --json" -- "$cur") )
710
+ return
711
+ ;;
712
+ witness-backfill)
713
+ COMPREPLY=( $(compgen -W "--db" -- "$cur") )
714
+ return
715
+ ;;
716
+ *)
717
+ COMPREPLY=( $(compgen -W "$brain_subcmds" -- "$cur") )
718
+ return
719
+ ;;
720
+ esac
721
+ ;;
722
+ upgrade)
723
+ COMPREPLY=( $(compgen -W "--json --strict" -- "$cur") )
724
+ return
725
+ ;;
666
726
  *)
667
727
  COMPREPLY=( $(compgen -W "$commands" -- "$cur") )
668
728
  return
@@ -722,6 +782,8 @@ _aqe() {
722
782
  'hypergraph:Query the code knowledge hypergraph'
723
783
  'migrate:V2 to V3 migration'
724
784
  'completions:Generate shell completions'
785
+ 'brain:Export, import, and inspect QE brain state'
786
+ 'upgrade:Detect optional native bindings and recommend flags'
725
787
  )
726
788
 
727
789
  domains=(
@@ -1016,6 +1078,30 @@ _aqe() {
1016
1078
  ;;
1017
1079
  esac
1018
1080
  ;;
1081
+ brain)
1082
+ local -a brain_commands
1083
+ brain_commands=(
1084
+ 'export:Export brain state to a portable file/directory'
1085
+ 'import:Import a brain export into the local database'
1086
+ 'info:Show manifest metadata for a brain export'
1087
+ 'diff:Compare two brain exports'
1088
+ 'search:Filtered search over a JSONL brain export'
1089
+ 'witness-backfill:Create witness chain entries for legacy patterns'
1090
+ )
1091
+ _arguments -C \\
1092
+ '1:brain subcommand:->brain_cmd' \\
1093
+ '*::arg:->brain_args'
1094
+ case "$state" in
1095
+ brain_cmd)
1096
+ _describe -t commands 'brain subcommands' brain_commands
1097
+ ;;
1098
+ esac
1099
+ ;;
1100
+ upgrade)
1101
+ _arguments \\
1102
+ '--json[Emit the report as JSON]' \\
1103
+ '--strict[Exit non-zero if any optional native is missing]'
1104
+ ;;
1019
1105
  esac
1020
1106
  ;;
1021
1107
  esac
@@ -1063,6 +1149,16 @@ complete -c aqe -n "__fish_seen_subcommand_from hypergraph; and not __fish_seen_
1063
1149
  complete -c aqe -n "__fish_seen_subcommand_from hypergraph; and not __fish_seen_subcommand_from stats untested impacted gaps" -a "impacted" -d "Find impacted tests"
1064
1150
  complete -c aqe -n "__fish_seen_subcommand_from hypergraph; and not __fish_seen_subcommand_from stats untested impacted gaps" -a "gaps" -d "Find coverage gaps"
1065
1151
  complete -c aqe -n "__fish_use_subcommand" -a "migrate" -d "V2 to V3 migration"
1152
+ complete -c aqe -n "__fish_use_subcommand" -a "brain" -d "Export, import, and inspect QE brain state"
1153
+ complete -c aqe -n "__fish_seen_subcommand_from brain; and not __fish_seen_subcommand_from export import info diff search witness-backfill" -a "export" -d "Export brain state"
1154
+ complete -c aqe -n "__fish_seen_subcommand_from brain; and not __fish_seen_subcommand_from export import info diff search witness-backfill" -a "import" -d "Import a brain export"
1155
+ complete -c aqe -n "__fish_seen_subcommand_from brain; and not __fish_seen_subcommand_from export import info diff search witness-backfill" -a "info" -d "Show manifest info"
1156
+ complete -c aqe -n "__fish_seen_subcommand_from brain; and not __fish_seen_subcommand_from export import info diff search witness-backfill" -a "diff" -d "Compare two brain exports"
1157
+ complete -c aqe -n "__fish_seen_subcommand_from brain; and not __fish_seen_subcommand_from export import info diff search witness-backfill" -a "search" -d "Filtered search over a JSONL brain export"
1158
+ complete -c aqe -n "__fish_seen_subcommand_from brain; and not __fish_seen_subcommand_from export import info diff search witness-backfill" -a "witness-backfill" -d "Backfill witness chain entries"
1159
+ complete -c aqe -n "__fish_use_subcommand" -a "upgrade" -d "Detect optional native bindings and recommend install / flag changes"
1160
+ complete -c aqe -n "__fish_seen_subcommand_from upgrade" -l json -d "Emit the report as JSON"
1161
+ complete -c aqe -n "__fish_seen_subcommand_from upgrade" -l strict -d "Exit non-zero if any optional native is missing"
1066
1162
  complete -c aqe -n "__fish_use_subcommand" -a "completions" -d "Generate shell completions"
1067
1163
 
1068
1164
  # Domains list
@@ -1267,6 +1363,8 @@ $script:AQE_COMMANDS = @{
1267
1363
  'hypergraph' = 'Query the code knowledge hypergraph'
1268
1364
  'migrate' = 'V2 to V3 migration'
1269
1365
  'completions' = 'Generate shell completions'
1366
+ 'brain' = 'Export, import, and inspect QE brain state'
1367
+ 'upgrade' = 'Detect optional native bindings and recommend flags'
1270
1368
  }
1271
1369
 
1272
1370
  Register-ArgumentCompleter -Native -CommandName 'aqe' -ScriptBlock {
@@ -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
  }