agentic-qe 3.15.5 → 3.15.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
  2. package/.claude/skills/qe-court/evals/qe-court.yaml +3 -2
  3. package/.claude/skills/qe-quality-assessment/schemas/output.json +12 -2
  4. package/.claude/skills/skills-manifest.json +1 -1
  5. package/CHANGELOG.md +121 -0
  6. package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
  7. package/assets/skills/qe-court/evals/qe-court.yaml +3 -2
  8. package/assets/skills/qe-quality-assessment/schemas/output.json +12 -2
  9. package/assets/skills/skills-manifest.json +1 -1
  10. package/dist/cli/bundle.js +5 -5
  11. package/dist/cli/chunks/adapter-PP3XIXDV.js +2 -0
  12. package/dist/cli/chunks/{agent-booster-wasm-CCTTGCQS.js → agent-booster-wasm-SY7UCLBL.js} +2 -2
  13. package/dist/cli/chunks/{agent-handler-DHYUF3NX.js → agent-handler-KAMYBU3S.js} +2 -2
  14. package/dist/cli/chunks/{agent-memory-branch-642W7CYX.js → agent-memory-branch-2CAW3KUM.js} +2 -2
  15. package/dist/cli/chunks/aqe-learning-engine-VDUQJKKY.js +2 -0
  16. package/dist/cli/chunks/{arena-NW2JVAFY.js → arena-4OFLJ3R2.js} +2 -2
  17. package/dist/cli/chunks/{arena-MUCC7UUN.js → arena-QCCVIOAH.js} +4 -4
  18. package/dist/cli/chunks/{audit-VKQTZJAA.js → audit-RBDQJQJB.js} +3 -3
  19. package/dist/cli/chunks/base-QSYWWPCE.js +2 -0
  20. package/dist/cli/chunks/{better-sqlite3-7ZUFVWLQ.js → better-sqlite3-5JRACCDQ.js} +2 -2
  21. package/dist/cli/chunks/{brain-handler-7LKAWSBI.js → brain-handler-W4QIIRT4.js} +3 -3
  22. package/dist/cli/chunks/{branch-enumerator-HUNXJKM4.js → branch-enumerator-IBNGI572.js} +2 -2
  23. package/dist/cli/chunks/{browser-ZSZEYUDP.js → browser-GMSCVAOI.js} +2 -2
  24. package/dist/cli/chunks/browser-workflow-WXXPBSCM.js +2 -0
  25. package/dist/cli/chunks/{chunk-RUSLEOMC.js → chunk-22OZIJAD.js} +2 -2
  26. package/dist/cli/chunks/{chunk-WR64BKUE.js → chunk-24ZSGYC6.js} +1 -1
  27. package/dist/cli/chunks/{chunk-CR2JUANW.js → chunk-2CIDFR2H.js} +3 -3
  28. package/dist/cli/chunks/{chunk-SDWMLT7B.js → chunk-2IWPJUVV.js} +5 -5
  29. package/dist/cli/chunks/{chunk-VYDNLQJN.js → chunk-2ZTWPMTK.js} +2 -2
  30. package/dist/cli/chunks/{chunk-WN55MNZ2.js → chunk-34MDMFET.js} +2 -2
  31. package/dist/cli/chunks/{chunk-D3G2NN7F.js → chunk-3DJNKNBR.js} +66 -65
  32. package/dist/cli/chunks/{chunk-XQRE2HWM.js → chunk-3NJ7O3OH.js} +2 -2
  33. package/dist/cli/chunks/chunk-45MVRQG4.js +2 -0
  34. package/dist/cli/chunks/chunk-46HBVDMU.js +2 -0
  35. package/dist/cli/chunks/{chunk-MNQ36MAF.js → chunk-47Q7JL3V.js} +2 -2
  36. package/dist/cli/chunks/chunk-4CLDYT36.js +2 -0
  37. package/dist/cli/chunks/{chunk-ORTBRO7F.js → chunk-4KOVHQXK.js} +2 -2
  38. package/dist/cli/chunks/{chunk-B2UHTA4Q.js → chunk-4POOJYXA.js} +1 -1
  39. package/dist/cli/chunks/{chunk-QXY3IRBW.js → chunk-5DH5QI7G.js} +26 -26
  40. package/dist/cli/chunks/{chunk-7BIYJRQJ.js → chunk-5GIJU2ZY.js} +2 -2
  41. package/dist/cli/chunks/{chunk-6LG5UEQE.js → chunk-5HAPS6VD.js} +2 -2
  42. package/dist/cli/chunks/{chunk-OU4ZAWCC.js → chunk-5LST62QR.js} +2 -2
  43. package/dist/cli/chunks/{chunk-Y2E3IJ53.js → chunk-5MT7DMD7.js} +2 -2
  44. package/dist/cli/chunks/{chunk-6UYN5PHA.js → chunk-5NC7QEJ6.js} +4 -4
  45. package/dist/cli/chunks/{chunk-3DTEQHFB.js → chunk-5UPIL62W.js} +3 -3
  46. package/dist/cli/chunks/{chunk-YINFES3E.js → chunk-5VUIXDY2.js} +2 -2
  47. package/dist/cli/chunks/chunk-5VZVMO7B.js +3 -0
  48. package/dist/cli/chunks/{chunk-JCC7QEKZ.js → chunk-624QRKQX.js} +1 -1
  49. package/dist/cli/chunks/{chunk-HIUNCO2W.js → chunk-66NW3ZB4.js} +2 -2
  50. package/dist/cli/chunks/{chunk-4AZP7ZCW.js → chunk-6HWARQWV.js} +2 -2
  51. package/dist/cli/chunks/{chunk-LNO5IWGH.js → chunk-6MXAJBEA.js} +1 -1
  52. package/dist/cli/chunks/{chunk-XNEEYXR2.js → chunk-6R3FBFCJ.js} +2 -2
  53. package/dist/cli/chunks/{chunk-ZT3GUYM5.js → chunk-6RDVY26I.js} +2 -2
  54. package/dist/cli/chunks/{chunk-W3ZGNNDV.js → chunk-6T6AHVLF.js} +1 -1
  55. package/dist/cli/chunks/{chunk-JANLATHN.js → chunk-6WOZUSSN.js} +2 -2
  56. package/dist/cli/chunks/chunk-72MQCZSM.js +2 -0
  57. package/dist/cli/chunks/chunk-7QVPMH25.js +3 -0
  58. package/dist/cli/chunks/{chunk-HLFDC4SF.js → chunk-7SAMMQVS.js} +1 -1
  59. package/dist/cli/chunks/{chunk-644DFAGS.js → chunk-7TJZDRDU.js} +1 -1
  60. package/dist/cli/chunks/{chunk-BYXNHGQC.js → chunk-7TVIX4WL.js} +2 -2
  61. package/dist/cli/chunks/{chunk-FBEXG4HD.js → chunk-7VTKR44N.js} +2 -2
  62. package/dist/cli/chunks/{chunk-UE22ODHN.js → chunk-7XTANLTN.js} +1 -1
  63. package/dist/cli/chunks/chunk-7XUB7U6Z.js +4 -0
  64. package/dist/cli/chunks/{chunk-HPLMX62I.js → chunk-A74J23QB.js} +2 -2
  65. package/dist/cli/chunks/{chunk-VRJPH3LG.js → chunk-A7ANPS4E.js} +2 -2
  66. package/dist/cli/chunks/{chunk-IHFUEPZH.js → chunk-AJT3XDRD.js} +2 -2
  67. package/dist/cli/chunks/{chunk-EUEHBERE.js → chunk-ALCIUWFC.js} +1 -1
  68. package/dist/cli/chunks/{chunk-NMJVG22Z.js → chunk-AUN4FG7V.js} +1 -1
  69. package/dist/cli/chunks/{chunk-DWZI3IVB.js → chunk-AUOSHM63.js} +2 -2
  70. package/dist/cli/chunks/{chunk-7EZLOC4K.js → chunk-AX26QJ6T.js} +2 -2
  71. package/dist/cli/chunks/{chunk-PDPEMBFV.js → chunk-B7RHBKHL.js} +2 -2
  72. package/dist/cli/chunks/{chunk-DEGWCUMY.js → chunk-BAYGQRNP.js} +2 -2
  73. package/dist/cli/chunks/{chunk-ONCH5AXU.js → chunk-BIXRTOH3.js} +18 -18
  74. package/dist/cli/chunks/{chunk-U4TV75AC.js → chunk-BO7UFNYV.js} +2 -2
  75. package/dist/cli/chunks/{chunk-FNAYDITO.js → chunk-BUTGIVKW.js} +1 -1
  76. package/dist/cli/chunks/{chunk-HBYQYGXP.js → chunk-BXATKI5S.js} +2 -2
  77. package/dist/cli/chunks/{chunk-BO4PKNYP.js → chunk-CCL436IU.js} +32 -27
  78. package/dist/cli/chunks/{chunk-XIE7OHML.js → chunk-CEXNW5TR.js} +1 -1
  79. package/dist/cli/chunks/{chunk-663ZFPUL.js → chunk-CLAMMGY3.js} +2 -2
  80. package/dist/cli/chunks/{chunk-PVAE65B4.js → chunk-CR66HNAE.js} +1 -1
  81. package/dist/cli/chunks/{chunk-LRASYSGV.js → chunk-CZBIREL5.js} +2 -2
  82. package/dist/cli/chunks/{chunk-WLIYWBQR.js → chunk-D5N2O5EH.js} +2 -2
  83. package/dist/cli/chunks/{chunk-A337MD3C.js → chunk-DA7DGDTI.js} +2 -2
  84. package/dist/cli/chunks/{chunk-WC47GICZ.js → chunk-DLSFT6PO.js} +2 -2
  85. package/dist/cli/chunks/{chunk-KHCALIFP.js → chunk-DQNUPEY5.js} +2 -2
  86. package/dist/cli/chunks/{chunk-GTSOFCMQ.js → chunk-EECF4CMA.js} +1 -1
  87. package/dist/cli/chunks/{chunk-5BOZCMXZ.js → chunk-EF5UHDCG.js} +1 -1
  88. package/dist/cli/chunks/{chunk-L6SVCNXK.js → chunk-EJ4KZFZN.js} +1 -1
  89. package/dist/cli/chunks/{chunk-CFPR24YK.js → chunk-ELI4GDQO.js} +2 -2
  90. package/dist/cli/chunks/{chunk-KJ3KBP24.js → chunk-F3KS3TAB.js} +2 -2
  91. package/dist/cli/chunks/{chunk-RMJ7PJOS.js → chunk-F7A2UBZO.js} +2 -2
  92. package/dist/cli/chunks/{chunk-U6OVPMQX.js → chunk-FOJRPEIP.js} +2 -2
  93. package/dist/cli/chunks/{chunk-JYY7AYGA.js → chunk-FQ5N666N.js} +1 -1
  94. package/dist/cli/chunks/{chunk-4XSCZVON.js → chunk-FU7LNUD7.js} +2 -2
  95. package/dist/cli/chunks/{chunk-OW42F2TX.js → chunk-GFB6BZWU.js} +2 -2
  96. package/dist/cli/chunks/{chunk-JI77KJP7.js → chunk-GI5HWS4H.js} +1 -1
  97. package/dist/cli/chunks/{chunk-4UXPDV7E.js → chunk-GNYOHZVV.js} +1 -1
  98. package/dist/cli/chunks/{chunk-VCKDVOPD.js → chunk-GVRFSXY6.js} +2 -2
  99. package/dist/cli/chunks/{chunk-PURHGLEC.js → chunk-GWM4M5NF.js} +1 -1
  100. package/dist/cli/chunks/{chunk-BY646JOM.js → chunk-HAN4MS5T.js} +2 -2
  101. package/dist/cli/chunks/{chunk-OGYWWZU7.js → chunk-HEGGV2PT.js} +2 -2
  102. package/dist/cli/chunks/{chunk-FHUJCVT3.js → chunk-HOEWMEF2.js} +2 -2
  103. package/dist/cli/chunks/{chunk-CXOXUBYU.js → chunk-HZFK2Z2Z.js} +1 -1
  104. package/dist/cli/chunks/chunk-I7WAW7TM.js +2 -0
  105. package/dist/cli/chunks/{chunk-E4VIVMDL.js → chunk-IEPWO4XP.js} +2 -2
  106. package/dist/cli/chunks/{chunk-DTJODGCE.js → chunk-ITIJ23K2.js} +2 -2
  107. package/dist/cli/chunks/{chunk-AQN5EDBM.js → chunk-IVJIHZSM.js} +1 -1
  108. package/dist/cli/chunks/{chunk-PHP4UJYP.js → chunk-JAPBSSFY.js} +1 -1
  109. package/dist/cli/chunks/{chunk-A2WOQO2N.js → chunk-JCE76MPP.js} +2 -2
  110. package/dist/cli/chunks/{chunk-A5J4XJS6.js → chunk-JPJEAK4G.js} +1 -1
  111. package/dist/cli/chunks/{chunk-3OAQPN2N.js → chunk-JYKQVYX2.js} +2 -2
  112. package/dist/cli/chunks/{chunk-MQGEZA2A.js → chunk-K55EAWZ5.js} +2 -2
  113. package/dist/cli/chunks/chunk-KCB6P463.js +3 -0
  114. package/dist/cli/chunks/{chunk-L375O3CZ.js → chunk-KIDOBLUO.js} +2 -2
  115. package/dist/cli/chunks/{chunk-NLDFNAOS.js → chunk-KYVIOC3C.js} +2 -2
  116. package/dist/cli/chunks/{chunk-CQMHDAJS.js → chunk-L2TDHJR3.js} +2 -2
  117. package/dist/cli/chunks/{chunk-FE3AIZI6.js → chunk-L4D3TPFP.js} +1 -1
  118. package/dist/cli/chunks/{chunk-VLOIEVER.js → chunk-LAY7NCQK.js} +3 -3
  119. package/dist/cli/chunks/{chunk-WT3JC4A6.js → chunk-LCCTJ2PC.js} +2 -2
  120. package/dist/cli/chunks/{chunk-VML4SG3X.js → chunk-LJCEDTUM.js} +3 -3
  121. package/dist/cli/chunks/{chunk-NF6AFIAX.js → chunk-LMAEMVPA.js} +1 -1
  122. package/dist/cli/chunks/{chunk-2XYTS2WY.js → chunk-LZWJ5BMP.js} +2 -2
  123. package/dist/cli/chunks/{chunk-PHAQWAEV.js → chunk-MP3FSUNB.js} +2 -2
  124. package/dist/cli/chunks/{chunk-IJ2EXSMO.js → chunk-MQCTLTGE.js} +2 -2
  125. package/dist/cli/chunks/{chunk-GRIPCYW5.js → chunk-MQTA6KIO.js} +1 -1
  126. package/dist/cli/chunks/{chunk-GGDKOJVF.js → chunk-NBUXM5X6.js} +10 -6
  127. package/dist/cli/chunks/{chunk-DPYDUKVZ.js → chunk-NHRF3V4B.js} +2 -2
  128. package/dist/cli/chunks/chunk-NMY4KTWA.js +16 -0
  129. package/dist/cli/chunks/chunk-NYS2GUNO.js +2 -0
  130. package/dist/cli/chunks/{chunk-AUZXRFOX.js → chunk-ONPPBLRB.js} +2 -2
  131. package/dist/cli/chunks/{chunk-HGBJ2QQ4.js → chunk-OPDZBRIL.js} +2 -2
  132. package/dist/cli/chunks/{chunk-DXVZBJE4.js → chunk-OQ4S6B7P.js} +1 -1
  133. package/dist/cli/chunks/{chunk-Y2WMPEUP.js → chunk-ORBODZSO.js} +2 -2
  134. package/dist/cli/chunks/{chunk-IJOFZBXD.js → chunk-ORFL3YXB.js} +2 -2
  135. package/dist/cli/chunks/{chunk-BMWAWZAN.js → chunk-P7DXVL2S.js} +2 -2
  136. package/dist/cli/chunks/chunk-PEMSXSP2.js +4 -0
  137. package/dist/cli/chunks/chunk-PS6WFCA4.js +6 -0
  138. package/dist/cli/chunks/{chunk-DPV33C77.js → chunk-Q2RBOC7V.js} +2 -2
  139. package/dist/cli/chunks/{chunk-3AYYGR6W.js → chunk-QLKUCMZC.js} +1 -1
  140. package/dist/cli/chunks/{chunk-EVCFUYYK.js → chunk-QLYO3H7E.js} +9 -9
  141. package/dist/cli/chunks/{chunk-3SH23PS3.js → chunk-QS5KZYUZ.js} +2 -2
  142. package/dist/cli/chunks/{chunk-3YNP33GB.js → chunk-R363XXGH.js} +2 -2
  143. package/dist/cli/chunks/chunk-RD5BYLN7.js +2 -0
  144. package/dist/cli/chunks/{chunk-MS3Z2CP5.js → chunk-RFDFET3O.js} +2 -2
  145. package/dist/cli/chunks/{chunk-ZLBBX24Q.js → chunk-RHIQ6QO5.js} +357 -351
  146. package/dist/cli/chunks/chunk-RLB7K7QP.js +2 -0
  147. package/dist/cli/chunks/{chunk-3YASZPLO.js → chunk-RUTO67PT.js} +2 -2
  148. package/dist/cli/chunks/{chunk-V7GNUVYI.js → chunk-RV6HSMKJ.js} +1 -1
  149. package/dist/cli/chunks/{chunk-4PT5KNXL.js → chunk-SOSJWM3E.js} +4 -4
  150. package/dist/cli/chunks/{chunk-6ZIDZ4TJ.js → chunk-SV5BUYHH.js} +2 -2
  151. package/dist/cli/chunks/{chunk-ZTC5FBL6.js → chunk-TL5GV3PR.js} +8 -8
  152. package/dist/cli/chunks/{chunk-GKPRECLL.js → chunk-TLUIO37P.js} +2 -2
  153. package/dist/cli/chunks/{chunk-FWYJ6UDX.js → chunk-TUDENMAE.js} +2 -2
  154. package/dist/cli/chunks/chunk-TVLOED6O.js +2 -0
  155. package/dist/cli/chunks/{chunk-3QD7U3FY.js → chunk-UB6DQGWM.js} +2 -2
  156. package/dist/cli/chunks/{chunk-SAPIRK2G.js → chunk-UHHMAKPE.js} +1 -1
  157. package/dist/cli/chunks/{chunk-35MDATQE.js → chunk-ULCHPPW2.js} +1 -1
  158. package/dist/cli/chunks/chunk-V3OLS2NG.js +2 -0
  159. package/dist/cli/chunks/{chunk-UXZEVIFX.js → chunk-VAYZ5QIE.js} +1 -1
  160. package/dist/cli/chunks/{chunk-VH3EB6ZG.js → chunk-VCONCVSY.js} +3 -3
  161. package/dist/cli/chunks/{chunk-QPV3OKX2.js → chunk-VVF337SV.js} +2 -2
  162. package/dist/cli/chunks/{chunk-XNHB6TLC.js → chunk-WKDWRRDT.js} +2 -2
  163. package/dist/cli/chunks/{chunk-RUJLVJDE.js → chunk-X2DR27AY.js} +2 -2
  164. package/dist/cli/chunks/{chunk-47GEI2LT.js → chunk-X33F7NXH.js} +3 -3
  165. package/dist/cli/chunks/{chunk-MB4VFAJC.js → chunk-XBEI2JBA.js} +2 -2
  166. package/dist/cli/chunks/{chunk-OQDC7GCM.js → chunk-XBFQJZWX.js} +2 -2
  167. package/dist/cli/chunks/{chunk-EAYQCBXL.js → chunk-XFPQIWEH.js} +3 -3
  168. package/dist/cli/chunks/{chunk-2KWI3MT3.js → chunk-XPB5BVU6.js} +2 -2
  169. package/dist/cli/chunks/{chunk-DL5JENWD.js → chunk-XQ53PZEF.js} +3 -3
  170. package/dist/cli/chunks/{chunk-BZFT4QDQ.js → chunk-XZ46CI35.js} +2 -2
  171. package/dist/cli/chunks/chunk-YLNYPQDR.js +2 -0
  172. package/dist/cli/chunks/{chunk-EOR3RECZ.js → chunk-YNG7E26C.js} +2 -2
  173. package/dist/cli/chunks/{chunk-6JFGB2JB.js → chunk-YXU35GGD.js} +1 -1
  174. package/dist/cli/chunks/{chunk-JNMUVBAJ.js → chunk-ZCP4P6O2.js} +2 -2
  175. package/dist/cli/chunks/{chunk-Y7GPLOXB.js → chunk-ZL5LJT7D.js} +2 -2
  176. package/dist/cli/chunks/{chunk-PCCIZFD7.js → chunk-ZOUEQ6DL.js} +1 -1
  177. package/dist/cli/chunks/{chunk-FQKEZVN6.js → chunk-ZSBD4FUX.js} +2 -2
  178. package/dist/cli/chunks/chunk-ZTB32K5N.js +5 -0
  179. package/dist/cli/chunks/{chunk-X52TMBHU.js → chunk-ZUTFHGEO.js} +1 -1
  180. package/dist/cli/chunks/ci-GEJCXMBK.js +81 -0
  181. package/dist/cli/chunks/{ci-config-XDDZOOEI.js → ci-config-2ZVV4OXL.js} +2 -2
  182. package/dist/cli/chunks/{ci-output-7ZUQI4U6.js → ci-output-E45OGVPR.js} +2 -2
  183. package/dist/cli/chunks/{circuit-breaker-ALXKCFAL.js → circuit-breaker-X73ITYZC.js} +2 -2
  184. package/dist/cli/chunks/{claude-flow-setup-RL7K2NI2.js → claude-flow-setup-W4PPH46C.js} +2 -2
  185. package/dist/cli/chunks/client-6XKSQ4JT.js +2 -0
  186. package/dist/cli/chunks/{cline-installer-2Z2QQKC3.js → cline-installer-NUEPMWDE.js} +2 -2
  187. package/dist/cli/chunks/{code-QSZTDINQ.js → code-6WQHBS7G.js} +3 -3
  188. package/dist/cli/chunks/{code-index-extractor-5CGR5D3Y.js → code-index-extractor-BXQIFIFT.js} +2 -2
  189. package/dist/cli/chunks/{codex-installer-7JLSEDE5.js → codex-installer-Z337R2KH.js} +2 -2
  190. package/dist/cli/chunks/{completions-U4NBSXEB.js → completions-F5DMYFHV.js} +2 -2
  191. package/dist/cli/chunks/{complexity-analyzer-WYZD2YSY.js → complexity-analyzer-W2SYPZDI.js} +2 -2
  192. package/dist/cli/chunks/{continuedev-installer-UPXINJFT.js → continuedev-installer-ZCHUIFTN.js} +2 -2
  193. package/dist/cli/chunks/{copilot-installer-WIVYQRIF.js → copilot-installer-M5JNODXF.js} +2 -2
  194. package/dist/cli/chunks/core-handlers-OJYW4Y6M.js +2 -0
  195. package/dist/cli/chunks/{cost-tracker-RIN4JDDM.js → cost-tracker-LSYTHBHV.js} +2 -2
  196. package/dist/cli/chunks/coverage-PGMRS5SS.js +49 -0
  197. package/dist/cli/chunks/cross-domain-router-QVUPQ2SC.js +2 -0
  198. package/dist/cli/chunks/{cursor-installer-POM7NGCC.js → cursor-installer-XPUA73UW.js} +2 -2
  199. package/dist/cli/chunks/{daemon-HFGKQ6LB.js → daemon-ITKDIYMW.js} +5 -5
  200. package/dist/cli/chunks/daemon-QBYTCIMH.js +10 -0
  201. package/dist/cli/chunks/{dag-attention-scheduler-HJXM7Q5P.js → dag-attention-scheduler-T55AXLD6.js} +2 -2
  202. package/dist/cli/chunks/{detect-XKQGLZYN.js → detect-DR7J6K4O.js} +2 -2
  203. package/dist/cli/chunks/{dist-node-SSKB53QL.js → dist-node-LAJJBOUT.js} +2 -2
  204. package/dist/cli/chunks/{domain-handler-6BNDHATU.js → domain-handler-OMSHCRMK.js} +2 -2
  205. package/dist/cli/chunks/{domain-plugins-DOX54YE3.js → domain-plugins-EQXSKC5K.js} +2 -2
  206. package/dist/cli/chunks/{domain-transfer-FW4ZX3Z7.js → domain-transfer-FKRAGVSW.js} +2 -2
  207. package/dist/cli/chunks/dream-3UABDRZJ.js +2 -0
  208. package/dist/cli/chunks/embed-and-insert-pattern-JZFPCNL3.js +3 -0
  209. package/dist/cli/chunks/{eval-K7E4XXBS.js → eval-JSNNASBW.js} +2 -2
  210. package/dist/cli/chunks/experience-capture-middleware-UPD3IZBK.js +40 -0
  211. package/dist/cli/chunks/{fast-paths-5JXXTYAG.js → fast-paths-YNMIBS2E.js} +2 -2
  212. package/dist/cli/chunks/{feature-flags-2CR3CO23.js → feature-flags-SRLXDKBI.js} +2 -2
  213. package/dist/cli/chunks/{feature-flags-RB72LHOJ.js → feature-flags-VIR7O4L7.js} +2 -2
  214. package/dist/cli/chunks/file-discovery-ZFGZTKZ4.js +2 -0
  215. package/dist/cli/chunks/{fleet-SDU7QEOA.js → fleet-K2ED46EL.js} +3 -3
  216. package/dist/cli/chunks/{gnn-wrapper-AWCFODUV.js → gnn-wrapper-QCU4ZRYW.js} +2 -2
  217. package/dist/cli/chunks/{heartbeat-handler-A4PJ3NFP.js → heartbeat-handler-YYQI4WZM.js} +4 -4
  218. package/dist/cli/chunks/heartbeat-scheduler-MJ6MTPDF.js +2 -0
  219. package/dist/cli/chunks/hnsw-adapter-FQWJCFVW.js +2 -0
  220. package/dist/cli/chunks/hnsw-index-NJYKJUHC.js +2 -0
  221. package/dist/cli/chunks/{hnsw-legacy-bridge-KRS7SSFM.js → hnsw-legacy-bridge-C5TJSWTZ.js} +2 -2
  222. package/dist/cli/chunks/{hnswlib-node-OGGCPKPO.js → hnswlib-node-SE3MJJYS.js} +2 -2
  223. package/dist/cli/chunks/{hooks-XNRNMUBW.js → hooks-C572SRDH.js} +43 -43
  224. package/dist/cli/chunks/hybrid-backend-SL7RFID7.js +2 -0
  225. package/dist/cli/chunks/{hypergraph-engine-X35LTXYT.js → hypergraph-engine-35A6G3M5.js} +2 -2
  226. package/dist/cli/chunks/{hypergraph-handler-M6THKAG6.js → hypergraph-handler-U2756CWI.js} +3 -3
  227. package/dist/cli/chunks/impact-analyzer-5ZJTXPVC.js +2 -0
  228. package/dist/cli/chunks/init-handler-PCLYQUSB.js +88 -0
  229. package/dist/cli/chunks/init-wizard-MQMDSIOF.js +2 -0
  230. package/dist/cli/chunks/kernel-MEJ5GMRH.js +2 -0
  231. package/dist/cli/chunks/{kilocode-installer-TEPR2ZJD.js → kilocode-installer-32PX5YH7.js} +2 -2
  232. package/dist/cli/chunks/{kiro-installer-RUKHGDEE.js → kiro-installer-C4ROMMUS.js} +2 -2
  233. package/dist/cli/chunks/knowledge-graph-XUBZSEZE.js +2 -0
  234. package/dist/cli/chunks/learning-GEPVZGJQ.js +122 -0
  235. package/dist/cli/chunks/{llm-router-7GECMDCP.js → llm-router-XRKTTJTX.js} +4 -4
  236. package/dist/cli/chunks/llm-router-service-QZAPAEPX.js +2 -0
  237. package/dist/cli/chunks/{load-NTJ4Y4ZR.js → load-XVH6HW7E.js} +2 -2
  238. package/dist/cli/chunks/load-test-OVXIQ3AF.js +2 -0
  239. package/dist/cli/chunks/{mcp-4335GTTG.js → mcp-IULSTM4Z.js} +2 -2
  240. package/dist/cli/chunks/{memory-HYC4M4XS.js → memory-6K7IAU4T.js} +5 -5
  241. package/dist/cli/chunks/memory-backend-TRPOMPK4.js +2 -0
  242. package/dist/cli/chunks/memory-handlers-CG6DRLAW.js +2 -0
  243. package/dist/cli/chunks/{multi-model-executor-T7FYKM6T.js → multi-model-executor-VZDUYPLX.js} +2 -2
  244. package/dist/cli/chunks/{opencode-installer-3USXVT5M.js → opencode-installer-QUTXKNH4.js} +2 -2
  245. package/dist/cli/chunks/orchestrator-PCKKUWOP.js +452 -0
  246. package/dist/cli/chunks/pattern-null-store-JWYBRBZG.js +2 -0
  247. package/dist/cli/chunks/{pattern-usage-recorder-CMZLPX2K.js → pattern-usage-recorder-PX5HQVRL.js} +2 -2
  248. package/dist/cli/chunks/{pipeline-BTRZOVSL.js → pipeline-O562GTOG.js} +2 -2
  249. package/dist/cli/chunks/{platform-2MCRKC25.js → platform-PM7Q2AZS.js} +2 -2
  250. package/dist/cli/chunks/plugin-OTYTFGPY.js +27 -0
  251. package/dist/cli/chunks/{prime-radiant-advanced-wasm-TXFEMBP6.js → prime-radiant-advanced-wasm-6CFXTHC2.js} +2 -2
  252. package/dist/cli/chunks/project-root-VVSTHIP4.js +2 -0
  253. package/dist/cli/chunks/protocol-executor-PXZCLZD3.js +2 -0
  254. package/dist/cli/chunks/{protocol-handler-DZ26OYVZ.js → protocol-handler-PPGNSAOS.js} +2 -2
  255. package/dist/cli/chunks/{prove-QWONEJWX.js → prove-WQ3BKRZG.js} +2 -2
  256. package/dist/cli/chunks/qe-reasoning-bank-42FRS5V3.js +2 -0
  257. package/dist/cli/chunks/{quality-WFH54FY7.js → quality-C5WUU3AA.js} +2 -2
  258. package/dist/cli/chunks/{quality-gate-ONJB7XU7.js → quality-gate-WSSRKD5U.js} +3 -3
  259. package/dist/cli/chunks/queen-coordinator-UI3B7DI6.js +2 -0
  260. package/dist/cli/chunks/real-embeddings-CFQE7IRQ.js +2 -0
  261. package/dist/cli/chunks/{ref-validation-HW5Y55ZC.js → ref-validation-DHKHXVZT.js} +2 -2
  262. package/dist/cli/chunks/{roocode-installer-5OABDNZT.js → roocode-installer-3PPODABV.js} +2 -2
  263. package/dist/cli/chunks/router-HYRPWLAY.js +2 -0
  264. package/dist/cli/chunks/routing-feedback-BPZ5R6F3.js +2 -0
  265. package/dist/cli/chunks/{routing-handler-CVHVOQTC.js → routing-handler-JNXTGT6T.js} +2 -2
  266. package/dist/cli/chunks/{ruvector-commands-KKDKFGIQ.js → ruvector-commands-6YLROPVP.js} +2 -2
  267. package/dist/cli/chunks/rvf-dual-writer-DEKDQ6KO.js +2 -0
  268. package/dist/cli/chunks/rvf-migration-adapter-L53VBS7I.js +2 -0
  269. package/dist/cli/chunks/rvf-migration-coordinator-4DWB4WRK.js +2 -0
  270. package/dist/cli/chunks/rvf-native-adapter-I6RUGD2D.js +2 -0
  271. package/dist/cli/chunks/{rvf-store-integrity-UGUXKIFX.js → rvf-store-integrity-YKR2ZNBF.js} +2 -2
  272. package/dist/cli/chunks/safe-db-KS65XDCP.js +2 -0
  273. package/dist/cli/chunks/schedule-KD2VN6GB.js +2 -0
  274. package/dist/cli/chunks/scheduler-ZH3RMUHY.js +2 -0
  275. package/dist/cli/chunks/{security-7723AZZ4.js → security-PWQTGDRU.js} +3 -3
  276. package/dist/cli/chunks/shared-rvf-adapter-LNRLFP5I.js +2 -0
  277. package/dist/cli/chunks/{shared-rvf-dual-writer-ZSHYG5IA.js → shared-rvf-dual-writer-GWU6YQNS.js} +2 -2
  278. package/dist/cli/chunks/sqlite-persistence-6DTVME5D.js +2 -0
  279. package/dist/cli/chunks/{standalone-memory-MHZEEYMK.js → standalone-memory-46KKBSSV.js} +2 -2
  280. package/dist/cli/chunks/{status-handler-JKXPJ22K.js → status-handler-35T5FTDQ.js} +2 -2
  281. package/dist/cli/chunks/{structural-health-J4RKCYWF.js → structural-health-P7QPQWLO.js} +2 -2
  282. package/dist/cli/chunks/{sync-PDPORHVN.js → sync-W6Z4R4PL.js} +2 -2
  283. package/dist/cli/chunks/sync-Y43EWBSY.js +2 -0
  284. package/dist/cli/chunks/{task-handler-VERADM44.js → task-handler-5CX3ZYT7.js} +2 -2
  285. package/dist/cli/chunks/{task-handlers-4RUCWUR2.js → task-handlers-DQZGOJNE.js} +3 -3
  286. package/dist/cli/chunks/{test-DMBJFQNL.js → test-TPP53VVV.js} +12 -12
  287. package/dist/cli/chunks/{test-scheduling-LUPTVGCD.js → test-scheduling-WBV4UMQH.js} +3 -3
  288. package/dist/cli/chunks/token-bootstrap-GIIDXHLC.js +2 -0
  289. package/dist/cli/chunks/{token-usage-VOA34IKM.js → token-usage-AKK37RB7.js} +2 -2
  290. package/dist/cli/chunks/{transformers-GU4TYAN5.js → transformers-7MASPELS.js} +2 -2
  291. package/dist/cli/chunks/{tree-sitter-wasm-parser-MZPXAH7C.js → tree-sitter-wasm-parser-YZKD6UGB.js} +2 -2
  292. package/dist/cli/chunks/{types-K4FLXR2K.js → types-AZ3BTXDP.js} +2 -2
  293. package/dist/cli/chunks/unified-memory-FCX7NLFZ.js +2 -0
  294. package/dist/cli/chunks/unified-memory-hnsw-VU5QJK37.js +2 -0
  295. package/dist/cli/chunks/unified-persistence-FM376LGE.js +2 -0
  296. package/dist/cli/chunks/{upgrade-M3ATDRMK.js → upgrade-L7OTDKEK.js} +2 -2
  297. package/dist/cli/chunks/{validate-AAP773B3.js → validate-O3QVFIGP.js} +2 -2
  298. package/dist/cli/chunks/{validate-swarm-7RGAZX5F.js → validate-swarm-2UGBGLTX.js} +2 -2
  299. package/dist/cli/chunks/visual-security-EU7Y3X46.js +2 -0
  300. package/dist/cli/chunks/{web-tree-sitter-GQMRHGGI.js → web-tree-sitter-J75IYPRO.js} +2 -2
  301. package/dist/cli/chunks/{windsurf-installer-HG6HF2GF.js → windsurf-installer-FQ5DBFCG.js} +2 -2
  302. package/dist/cli/chunks/witness-chain-CSEBT52D.js +2 -0
  303. package/dist/cli/chunks/{witness-chain-WKU3ZIBQ.js → witness-chain-I7TN4MXZ.js} +2 -2
  304. package/dist/cli/chunks/witness-chain-repair-D3NE3NQK.js +2 -0
  305. package/dist/cli/chunks/{witness-chain-verifier-Q2KW3QEQ.js → witness-chain-verifier-RU2WOP5M.js} +2 -2
  306. package/dist/cli/chunks/witness-key-manager-IHQB2FR5.js +2 -0
  307. package/dist/cli/chunks/{workflow-CX6SHFBW.js → workflow-6BWTNVV6.js} +28 -28
  308. package/dist/cli/chunks/workflow-orchestrator-ALNKOM3N.js +2 -0
  309. package/dist/cli/chunks/wrappers-URVP25VU.js +2 -0
  310. package/dist/cli/commands/ci.js +47 -25
  311. package/dist/cli/commands/coverage.d.ts +1 -28
  312. package/dist/cli/commands/coverage.js +63 -134
  313. package/dist/cli/commands/daemon.js +7 -1
  314. package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +15 -0
  315. package/dist/cli/commands/hooks-handlers/stats-hooks.js +54 -2
  316. package/dist/cli/commands/learning.js +47 -7
  317. package/dist/cli/commands/test.js +6 -7
  318. package/dist/cli/commands/workflow.js +9 -5
  319. package/dist/cli/handlers/init-guard.d.ts +13 -0
  320. package/dist/cli/handlers/init-guard.js +23 -0
  321. package/dist/cli/handlers/init-handler.d.ts +3 -0
  322. package/dist/cli/handlers/init-handler.js +9 -0
  323. package/dist/cli/handlers/interfaces.js +5 -1
  324. package/dist/cli/scheduler/persistent-scheduler.d.ts +6 -2
  325. package/dist/cli/scheduler/persistent-scheduler.js +107 -41
  326. package/dist/cli/utils/ci-output.d.ts +8 -1
  327. package/dist/cli/utils/ci-output.js +13 -2
  328. package/dist/cli/utils/coverage-data.d.ts +3 -0
  329. package/dist/cli/utils/coverage-data.js +14 -39
  330. package/dist/cli/utils/coverage-verdict.d.ts +130 -0
  331. package/dist/cli/utils/coverage-verdict.js +193 -0
  332. package/dist/cli/utils/file-discovery.js +5 -0
  333. package/dist/coordination/deterministic-actions.js +24 -13
  334. package/dist/coordination/handlers/code-intelligence-handlers.d.ts +8 -0
  335. package/dist/coordination/handlers/code-intelligence-handlers.js +39 -0
  336. package/dist/coordination/handlers/coverage-handlers.js +34 -6
  337. package/dist/coordination/handlers/coverage-runner.d.ts +22 -0
  338. package/dist/coordination/handlers/coverage-runner.js +105 -10
  339. package/dist/coordination/handlers/coverage-target.d.ts +1 -0
  340. package/dist/coordination/handlers/coverage-target.js +4 -1
  341. package/dist/coordination/handlers/handler-types.d.ts +9 -0
  342. package/dist/coordination/handlers/handler-utils.d.ts +14 -1
  343. package/dist/coordination/handlers/handler-utils.js +46 -22
  344. package/dist/coordination/handlers/quality-handlers.js +108 -18
  345. package/dist/coordination/handlers/test-execution-handlers.js +4 -1
  346. package/dist/coordination/protocols/defect-investigation.d.ts +2 -1
  347. package/dist/coordination/protocols/defect-investigation.js +6 -3
  348. package/dist/coordination/protocols/quality-gate.js +10 -6
  349. package/dist/coordination/result-saver.d.ts +22 -0
  350. package/dist/coordination/result-saver.js +113 -43
  351. package/dist/coordination/task-executor.d.ts +7 -0
  352. package/dist/coordination/task-executor.js +32 -3
  353. package/dist/domains/code-intelligence/plugin.js +4 -0
  354. package/dist/domains/code-intelligence/services/metric-collector/index.js +9 -2
  355. package/dist/domains/code-intelligence/services/metric-collector/interfaces.d.ts +21 -0
  356. package/dist/domains/code-intelligence/services/metric-collector/interfaces.js +25 -0
  357. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +12 -0
  358. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +69 -3
  359. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +4 -1
  360. package/dist/domains/coverage-analysis/collected-metrics.d.ts +33 -0
  361. package/dist/domains/coverage-analysis/collected-metrics.js +36 -0
  362. package/dist/domains/coverage-analysis/coordinator.js +18 -6
  363. package/dist/domains/coverage-analysis/interfaces.d.ts +44 -0
  364. package/dist/domains/coverage-analysis/interfaces.js +6 -1
  365. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +61 -34
  366. package/dist/domains/coverage-analysis/services/gap-detector.js +7 -2
  367. package/dist/domains/defect-intelligence/plugin.js +4 -0
  368. package/dist/domains/defect-intelligence/services/defect-predictor.js +6 -4
  369. package/dist/domains/learning-optimization/coordinator.js +4 -0
  370. package/dist/domains/learning-optimization/plugin.js +4 -0
  371. package/dist/domains/quality-assessment/coordinator-rl-integration.d.ts +14 -0
  372. package/dist/domains/quality-assessment/coordinator-rl-integration.js +54 -16
  373. package/dist/domains/quality-assessment/coordinator.js +10 -6
  374. package/dist/domains/quality-assessment/coverage-report-event.d.ts +32 -8
  375. package/dist/domains/quality-assessment/coverage-report-event.js +28 -6
  376. package/dist/domains/quality-assessment/index.d.ts +1 -1
  377. package/dist/domains/quality-assessment/interfaces.d.ts +46 -0
  378. package/dist/domains/quality-assessment/quality-evidence.d.ts +48 -2
  379. package/dist/domains/quality-assessment/quality-evidence.js +62 -0
  380. package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +23 -2
  381. package/dist/domains/quality-assessment/services/quality-analyzer.js +192 -109
  382. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +22 -16
  383. package/dist/domains/test-execution/interfaces.d.ts +10 -6
  384. package/dist/domains/test-execution/plugin.js +4 -0
  385. package/dist/domains/test-execution/services/test-executor.js +152 -102
  386. package/dist/domains/test-generation/coordinator.js +4 -0
  387. package/dist/domains/test-generation/plugin.js +4 -0
  388. package/dist/feedback/coverage-learner.js +4 -1
  389. package/dist/feedback/coverage-session-provenance.d.ts +29 -0
  390. package/dist/feedback/coverage-session-provenance.js +39 -0
  391. package/dist/init/orchestrator.js +2 -0
  392. package/dist/init/phases/09-assets.d.ts +4 -0
  393. package/dist/init/phases/09-assets.js +35 -0
  394. package/dist/init/retired-assets.d.ts +86 -0
  395. package/dist/init/retired-assets.js +230 -0
  396. package/dist/init/skills-installer.d.ts +2 -0
  397. package/dist/init/skills-installer.js +4 -0
  398. package/dist/init/types.d.ts +3 -0
  399. package/dist/integrations/ruvector/rvf-native-adapter.d.ts +2 -0
  400. package/dist/integrations/ruvector/rvf-native-adapter.js +5 -0
  401. package/dist/integrations/ruvector/server-client.js +4 -12
  402. package/dist/kernel/project-root.d.ts +17 -0
  403. package/dist/kernel/project-root.js +54 -2
  404. package/dist/kernel/shared-dirs.d.ts +66 -0
  405. package/dist/kernel/shared-dirs.js +168 -0
  406. package/dist/learning/daily-log.js +2 -1
  407. package/dist/learning/experience-capture-middleware.d.ts +22 -0
  408. package/dist/learning/experience-capture-middleware.js +35 -0
  409. package/dist/learning/learnable-result.d.ts +16 -0
  410. package/dist/learning/learnable-result.js +24 -0
  411. package/dist/learning/pattern-mutation-error.d.ts +8 -0
  412. package/dist/learning/pattern-mutation-error.js +12 -0
  413. package/dist/learning/qe-reasoning-bank.d.ts +10 -0
  414. package/dist/learning/qe-reasoning-bank.js +50 -1
  415. package/dist/learning/rvf-reconcile.d.ts +39 -0
  416. package/dist/learning/rvf-reconcile.js +40 -0
  417. package/dist/learning/sqlite-persistence.d.ts +14 -0
  418. package/dist/learning/sqlite-persistence.js +36 -0
  419. package/dist/mcp/bundle.js +516 -504
  420. package/dist/mcp/handlers/domain-handler-configs.d.ts +31 -1
  421. package/dist/mcp/handlers/domain-handler-configs.js +37 -3
  422. package/dist/mcp/handlers/handler-factory.js +40 -14
  423. package/dist/mcp/protocol-server.js +27 -2
  424. package/dist/mcp/tool-cache-scope.d.ts +31 -0
  425. package/dist/mcp/tool-cache-scope.js +71 -0
  426. package/dist/mcp/tools/code-intelligence/analyze.js +5 -3
  427. package/dist/mcp/types.d.ts +4 -0
  428. package/dist/optimization/session-cache.d.ts +19 -1
  429. package/dist/optimization/session-cache.js +36 -2
  430. package/dist/plugins/cache.js +2 -1
  431. package/dist/plugins/sources/github.js +2 -1
  432. package/dist/plugins/sources/npm.js +2 -1
  433. package/dist/shared/aqe-managed-dirs.d.ts +24 -0
  434. package/dist/shared/aqe-managed-dirs.js +56 -0
  435. package/dist/shared/events/domain-events.d.ts +18 -3
  436. package/dist/shared/events/domain-events.js +4 -0
  437. package/dist/shared/http/http-client.d.ts +6 -0
  438. package/dist/shared/http/http-client.js +13 -15
  439. package/dist/shared/io/file-reader.d.ts +26 -0
  440. package/dist/shared/io/file-reader.js +111 -17
  441. package/dist/shared/llm/providers/response-deadline.d.ts +7 -2
  442. package/dist/shared/llm/providers/response-deadline.js +17 -5
  443. package/dist/shared/metrics/code-metrics.d.ts +24 -0
  444. package/dist/shared/metrics/code-metrics.js +93 -6
  445. package/dist/shared/metrics/index.d.ts +1 -1
  446. package/dist/workers/interfaces.d.ts +9 -1
  447. package/dist/workers/quality-daemon/coverage-delta.d.ts +4 -3
  448. package/dist/workers/quality-daemon/coverage-delta.js +13 -6
  449. package/dist/workers/quality-daemon/index.js +6 -5
  450. package/dist/workers/quality-daemon/notification-service.js +3 -3
  451. package/dist/workers/quality-daemon/persistent-memory.d.ts +2 -2
  452. package/dist/workers/quality-daemon/persistent-memory.js +2 -2
  453. package/dist/workers/worker-manager.js +5 -1
  454. package/dist/workers/workers/coverage-tracker.js +69 -33
  455. package/dist/workers/workers/regression-monitor.d.ts +18 -1
  456. package/dist/workers/workers/regression-monitor.js +276 -117
  457. package/package.json +1 -1
  458. package/dist/cli/chunks/adapter-EGIPTX5H.js +0 -2
  459. package/dist/cli/chunks/aqe-learning-engine-WP4GCBDT.js +0 -2
  460. package/dist/cli/chunks/base-6ORFD62I.js +0 -2
  461. package/dist/cli/chunks/browser-workflow-PIXGERWP.js +0 -2
  462. package/dist/cli/chunks/chunk-2WFTZSRT.js +0 -2
  463. package/dist/cli/chunks/chunk-7YB2KELI.js +0 -5
  464. package/dist/cli/chunks/chunk-BBL6YXD3.js +0 -2
  465. package/dist/cli/chunks/chunk-BJ5P4IV2.js +0 -2
  466. package/dist/cli/chunks/chunk-DFPL5N3Q.js +0 -16
  467. package/dist/cli/chunks/chunk-DLY4YEN3.js +0 -2
  468. package/dist/cli/chunks/chunk-ERGWWI4Y.js +0 -3
  469. package/dist/cli/chunks/chunk-KZVJW2SD.js +0 -2
  470. package/dist/cli/chunks/chunk-L336HFFE.js +0 -2
  471. package/dist/cli/chunks/chunk-N2TJNIHA.js +0 -2
  472. package/dist/cli/chunks/chunk-RCXMUEZN.js +0 -3
  473. package/dist/cli/chunks/chunk-SEZLYRCS.js +0 -2
  474. package/dist/cli/chunks/chunk-TDLKXLJC.js +0 -4
  475. package/dist/cli/chunks/chunk-WOZIXXY5.js +0 -7
  476. package/dist/cli/chunks/ci-KP4GZKJ7.js +0 -81
  477. package/dist/cli/chunks/client-C3KHVRM6.js +0 -2
  478. package/dist/cli/chunks/core-handlers-KSQM6Q6S.js +0 -2
  479. package/dist/cli/chunks/coverage-SPFVHRRU.js +0 -43
  480. package/dist/cli/chunks/coverage-target-GSRBNHXE.js +0 -2
  481. package/dist/cli/chunks/cross-domain-router-CTGNOVCF.js +0 -2
  482. package/dist/cli/chunks/daemon-M5TD5Y6T.js +0 -10
  483. package/dist/cli/chunks/dream-MIK2E4UL.js +0 -2
  484. package/dist/cli/chunks/embed-and-insert-pattern-QST77T2B.js +0 -3
  485. package/dist/cli/chunks/experience-capture-middleware-X66IYSRV.js +0 -40
  486. package/dist/cli/chunks/file-discovery-3NHRUQQB.js +0 -2
  487. package/dist/cli/chunks/heartbeat-scheduler-OCKRACUW.js +0 -2
  488. package/dist/cli/chunks/hnsw-adapter-X67XG73C.js +0 -2
  489. package/dist/cli/chunks/hnsw-index-I7KCQBQR.js +0 -2
  490. package/dist/cli/chunks/hybrid-backend-FOUHTKAK.js +0 -2
  491. package/dist/cli/chunks/impact-analyzer-GXYVX46O.js +0 -2
  492. package/dist/cli/chunks/init-handler-2AXMXHYF.js +0 -86
  493. package/dist/cli/chunks/init-wizard-C2MRX2QG.js +0 -2
  494. package/dist/cli/chunks/kernel-Q2IUDIDC.js +0 -2
  495. package/dist/cli/chunks/knowledge-graph-E2Z6K5EE.js +0 -2
  496. package/dist/cli/chunks/learning-BEA26RNA.js +0 -122
  497. package/dist/cli/chunks/llm-router-service-YATYFEDD.js +0 -2
  498. package/dist/cli/chunks/load-test-LV77JXWA.js +0 -2
  499. package/dist/cli/chunks/memory-backend-XME3X3QX.js +0 -2
  500. package/dist/cli/chunks/memory-handlers-VG47X5DX.js +0 -2
  501. package/dist/cli/chunks/orchestrator-VHUXUYIM.js +0 -452
  502. package/dist/cli/chunks/pattern-null-store-TAXMLENP.js +0 -2
  503. package/dist/cli/chunks/plugin-2VAYWAO3.js +0 -27
  504. package/dist/cli/chunks/project-root-CFFPBGPX.js +0 -2
  505. package/dist/cli/chunks/protocol-executor-ML76QAVQ.js +0 -2
  506. package/dist/cli/chunks/qe-reasoning-bank-LUZH6RYV.js +0 -2
  507. package/dist/cli/chunks/queen-coordinator-EWXNIXB6.js +0 -2
  508. package/dist/cli/chunks/real-embeddings-GZV4VKK4.js +0 -2
  509. package/dist/cli/chunks/router-MXOBVEBF.js +0 -2
  510. package/dist/cli/chunks/routing-feedback-T6CCRUEK.js +0 -2
  511. package/dist/cli/chunks/rvf-dual-writer-WHXVT3V3.js +0 -2
  512. package/dist/cli/chunks/rvf-migration-adapter-JFPWIRCG.js +0 -2
  513. package/dist/cli/chunks/rvf-migration-coordinator-D4KUBNRZ.js +0 -2
  514. package/dist/cli/chunks/rvf-native-adapter-KOXR7TJL.js +0 -2
  515. package/dist/cli/chunks/safe-db-CI6IPSIN.js +0 -2
  516. package/dist/cli/chunks/schedule-X4HW6TVJ.js +0 -2
  517. package/dist/cli/chunks/scheduler-KCNJ2ON3.js +0 -2
  518. package/dist/cli/chunks/shared-rvf-adapter-KEQ5CLNI.js +0 -2
  519. package/dist/cli/chunks/sqlite-persistence-PGHU6VUR.js +0 -2
  520. package/dist/cli/chunks/sync-EFWXMA2H.js +0 -2
  521. package/dist/cli/chunks/token-bootstrap-S346YBVO.js +0 -2
  522. package/dist/cli/chunks/unified-memory-6CK3TUNQ.js +0 -2
  523. package/dist/cli/chunks/unified-memory-hnsw-A7BWBGYN.js +0 -2
  524. package/dist/cli/chunks/unified-persistence-GEPMDBQZ.js +0 -2
  525. package/dist/cli/chunks/visual-security-L4J7LQWT.js +0 -2
  526. package/dist/cli/chunks/witness-chain-CDUMX623.js +0 -2
  527. package/dist/cli/chunks/witness-chain-repair-WNYH6O4L.js +0 -2
  528. package/dist/cli/chunks/witness-key-manager-NQ5DAAC4.js +0 -2
  529. package/dist/cli/chunks/workflow-orchestrator-USJDWVDR.js +0 -2
  530. package/dist/cli/chunks/wrappers-CZDI6Z3X.js +0 -2
  531. /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
  532. /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
  533. /package/.claude/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
  534. /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
  535. /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
  536. /package/assets/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
@@ -10,6 +10,7 @@ import { DomainHandlerConfig } from './handler-factory';
10
10
  import { TestGenerateParams, TestGenerateResult, TestExecuteParams, CoverageAnalyzeParams, CoverageAnalyzeResult, QualityAssessParams, SecurityScanParams, ContractValidateParams, AccessibilityTestParams, ChaosTestParams } from '../types';
11
11
  import type { SecurityScanEvidence } from '../../domains/security-compliance/scan-evidence.js';
12
12
  import type { SecurityCoverage } from '../../domains/security-compliance/interfaces.js';
13
+ import type { ExcludedQualityFile, PartialQualityMetric } from '../../domains/quality-assessment/interfaces.js';
13
14
  import { type RiskDecision } from '../../contracts/verdicts.js';
14
15
  import { type EvaluatedQualityCheck } from '../../domains/quality-assessment/quality-evidence.js';
15
16
  import { type MeasuredFailure } from '../../domains/quality-assessment/evidence-sufficiency.js';
@@ -20,7 +21,8 @@ export interface TestExecuteResult {
20
21
  passed: number;
21
22
  failed: number;
22
23
  duration: number;
23
- coverage?: number;
24
+ /** Measured line coverage of the run, or null when none was collected (#1027 N5). */
25
+ coverage?: number | null;
24
26
  workerStats?: Record<string, unknown>;
25
27
  retryStats?: Record<string, unknown>;
26
28
  results?: unknown[];
@@ -58,6 +60,22 @@ export interface QualityAssessResult {
58
60
  evidenceStatus?: 'measured' | 'insufficient-evidence';
59
61
  /** #996: requested metrics with no measured data (reported as -1 in `metrics`). */
60
62
  unmeasured?: string[];
63
+ /** #1011: why each unmeasured metric has no value (e.g. a file could not be parsed). */
64
+ unmeasuredReasons?: Record<string, string>;
65
+ /** #1021: metrics measured over part of the scope (files that failed to read or parse are listed). */
66
+ partialMetrics?: PartialQualityMetric[];
67
+ /** #1021: files left out of the analysis (binary, generated, minified, .d.ts, reader policy); first 50. */
68
+ excludedFiles?: ExcludedQualityFile[];
69
+ /** #1021: total number of excluded files. */
70
+ excludedCount?: number;
71
+ /** #1021: the directory, file, or 'sourceFiles' that was analysed. */
72
+ scope?: string;
73
+ /**
74
+ * #1021 round 2b: the metrics `qualityScore` was computed from, present when
75
+ * the score covers only part of the request (insufficient evidence) or of the
76
+ * files (partial metrics). Such a score is not a verdict.
77
+ */
78
+ scoreBasis?: string[];
61
79
  /** #996: measured metrics that fail their own limit; any entry blocks. */
62
80
  measuredFailures?: MeasuredFailure[];
63
81
  /** #996: false for static analysis (runGate omitted/false) — no quality gate ran. */
@@ -201,6 +219,18 @@ export interface CodeIndexResult {
201
219
  symbolsExtracted: number;
202
220
  relationsFound: number;
203
221
  duration: number;
222
+ /**
223
+ * #999 MCP-CLI parity: project metrics collected by the code-intelligence
224
+ * coordinator, rooted at the target (as `aqe code index` does). Absent when
225
+ * no project root resolves or the metric step is unavailable.
226
+ */
227
+ projectMetrics?: {
228
+ root: string;
229
+ loc: number;
230
+ locByLanguage: Record<string, number>;
231
+ tests: number;
232
+ toolsUsed: string[];
233
+ };
204
234
  savedFiles?: string[];
205
235
  /** #933: true when result files were written; see savedFiles for their paths. */
206
236
  resultsSaved?: boolean;
@@ -9,6 +9,7 @@
9
9
  import { generateV2LearningFeedback, analyzeComplexity, generateV2AIInsights, generateV2Tests, detectAntiPatterns, generateTestId, } from './handler-factory.js';
10
10
  import { describeSavedResults } from './save-results-option.js';
11
11
  import { MetricsCollector } from '../metrics/index.js';
12
+ import { CallerInputError } from '../../shared/error-utils.js';
12
13
  import { DEFAULT_FRAMEWORKS, FRAMEWORK_TO_LANGUAGE, } from '../../shared/types/test-frameworks.js';
13
14
  import { buildRiskDecisionFromQualityGate, validateRiskDecision, } from '../../contracts/verdicts.js';
14
15
  import { INSUFFICIENT_EVIDENCE, } from '../../domains/quality-assessment/quality-evidence.js';
@@ -202,7 +203,8 @@ export const testExecuteConfig = {
202
203
  const total = data.total || 0;
203
204
  const passed = data.passed || 0;
204
205
  const failed = data.failed || 0;
205
- const coverage = data.coverage;
206
+ // #1027 N5: no measured coverage → null, never a hardcoded 0.
207
+ const coverage = typeof data.coverage === 'number' && Number.isFinite(data.coverage) ? data.coverage : null;
206
208
  const parallelism = params?.parallelism || 4;
207
209
  const realRetryStats = MetricsCollector.getRetryStats();
208
210
  const workersUsed = MetricsCollector.getWorkersUsed();
@@ -307,7 +309,8 @@ export const coverageAnalyzeConfig = {
307
309
  const rawLine = summary?.line ?? data.lineCoverage;
308
310
  const lineCoverage = rawLine ?? null;
309
311
  const rawStatement = summary?.statement ?? data.statementCoverage;
310
- const statementCoverage = rawStatement ?? lineCoverage;
312
+ // #1027 N7: an explicit null (no statement data, e.g. lcov) stays null.
313
+ const statementCoverage = rawStatement === undefined ? lineCoverage : rawStatement;
311
314
  const learning = generateV2LearningFeedback('coverage-analyzer');
312
315
  // Map gap analysis from real data — never fabricate file paths
313
316
  const detailedGaps = gaps.map((gap, i) => {
@@ -405,6 +408,7 @@ export const coverageAnalyzeConfig = {
405
408
  coverageMethod: data.coverageMethod ?? 'unknown',
406
409
  branchDataCollected,
407
410
  functionDataCollected,
411
+ ...(data.runStatus === 'passed' || data.runStatus === 'failed' ? { runStatus: data.runStatus } : {}),
408
412
  // #995: the target has no measurement at all — distinct from a measured 0%.
409
413
  ...(data.unmeasured === true ? { unmeasured: true } : {}),
410
414
  ...(data.warning ? { warning: data.warning } : {}),
@@ -428,8 +432,20 @@ export const qualityAssessConfig = {
428
432
  const metrics = params.metrics === undefined
429
433
  ? ['coverage', 'complexity', 'maintainability']
430
434
  : validateRequestedMetrics(params.metrics);
435
+ // #1021: scope the analysis instead of silently analysing <cwd>/src.
436
+ // Containment in the project root is enforced by the handler.
437
+ // CallerInputError: a caller mistake, never a component failure (round 2b).
438
+ if (params.target !== undefined && (typeof params.target !== 'string' || params.target.trim() === '')) {
439
+ throw new CallerInputError('target must be a non-empty string path.');
440
+ }
441
+ if (params.sourceFiles !== undefined && (!Array.isArray(params.sourceFiles) || params.sourceFiles.length === 0
442
+ || params.sourceFiles.some((f) => typeof f !== 'string' || f.trim() === ''))) {
443
+ throw new CallerInputError('sourceFiles must be a non-empty array of file paths.');
444
+ }
431
445
  return {
432
446
  runGate: params.runGate ?? false,
447
+ ...(params.target !== undefined ? { target: params.target } : {}),
448
+ ...(params.sourceFiles !== undefined ? { sourceFiles: params.sourceFiles } : {}),
433
449
  threshold: params.threshold || 80,
434
450
  // #996: only a caller-supplied threshold overrides the configured/default
435
451
  // per-metric limits; the 80 fallback above must not.
@@ -453,6 +469,15 @@ export const qualityAssessConfig = {
453
469
  ? data.measuredFailures
454
470
  : undefined;
455
471
  const failedMetrics = (measuredFailures ?? []).map((f) => f.metric);
472
+ // #1011: reasons travel only as a string-to-string map.
473
+ const unmeasuredReasons = data.unmeasuredReasons && typeof data.unmeasuredReasons === 'object'
474
+ && Object.values(data.unmeasuredReasons).every((r) => typeof r === 'string')
475
+ ? data.unmeasuredReasons
476
+ : undefined;
477
+ // -1 = no measured score; never quote it as a score.
478
+ const measuredScore = typeof data.qualityScore === 'number' && data.qualityScore >= 0
479
+ ? data.qualityScore
480
+ : undefined;
456
481
  const passed = !insufficient && failedMetrics.length === 0 && data.passed === true;
457
482
  // ADR-103: attach a schema-validated RiskDecision envelope at the MCP
458
483
  // boundary (additive — existing fields unchanged). Omit rather than
@@ -461,7 +486,7 @@ export const qualityAssessConfig = {
461
486
  passed: insufficient || failedMetrics.length > 0
462
487
  ? false
463
488
  : typeof data.passed === 'boolean' ? data.passed : undefined,
464
- qualityScore: data.qualityScore,
489
+ qualityScore: measuredScore,
465
490
  recommendations: data.recommendations || [],
466
491
  unmeasured: insufficient ? (unmeasured?.length ? unmeasured : ['unknown']) : [],
467
492
  failedMetrics,
@@ -480,6 +505,14 @@ export const qualityAssessConfig = {
480
505
  ? { evidenceStatus: insufficient ? INSUFFICIENT_EVIDENCE : 'measured' }
481
506
  : {}),
482
507
  ...(unmeasured ? { unmeasured } : {}),
508
+ ...(unmeasuredReasons ? { unmeasuredReasons } : {}),
509
+ // #1021: partial evidence, exclusions and the analysed scope travel with the verdict.
510
+ ...(Array.isArray(data.partialMetrics) ? { partialMetrics: data.partialMetrics } : {}),
511
+ ...(Array.isArray(data.excludedFiles) ? { excludedFiles: data.excludedFiles } : {}),
512
+ ...(typeof data.excludedCount === 'number' ? { excludedCount: data.excludedCount } : {}),
513
+ ...(typeof data.scope === 'string' ? { scope: data.scope } : {}),
514
+ ...(Array.isArray(data.scoreBasis) && data.scoreBasis.every((m) => typeof m === 'string')
515
+ ? { scoreBasis: data.scoreBasis } : {}),
483
516
  ...(measuredFailures ? { measuredFailures } : {}),
484
517
  ...(gateEvaluated !== undefined ? { gateEvaluated } : {}),
485
518
  ...(confidence !== undefined ? { confidence } : {}),
@@ -721,6 +754,7 @@ export const codeIndexConfig = {
721
754
  filesIndexed: data.filesIndexed || 0,
722
755
  symbolsExtracted: data.symbolsExtracted || 0,
723
756
  relationsFound: data.relationsFound || 0,
757
+ ...(data.projectMetrics ? { projectMetrics: data.projectMetrics } : {}),
724
758
  duration,
725
759
  savedFiles,
726
760
  }),
@@ -14,9 +14,10 @@ import { randomUUID } from 'crypto';
14
14
  import { getFleetState, isFleetInitialized } from './core-handlers.js';
15
15
  import { createTaskExecutor } from '../../coordination/task-executor.js';
16
16
  import { getTaskRouter } from '../services/task-router.js';
17
- import { toErrorMessage } from '../../shared/error-utils.js';
17
+ import { isCallerInputError, toErrorMessage } from '../../shared/error-utils.js';
18
18
  import { describeSavedResults, readSaveResultsOption } from './save-results-option.js';
19
19
  import { createInitializedFeedbackLoop, getQualityFeedbackLoop } from '../../feedback/feedback-loop.js';
20
+ import { isLearnableResult } from '../../learning/learnable-result.js';
20
21
  // ============================================================================
21
22
  // Shared Utilities (exported for response mappers)
22
23
  // ============================================================================
@@ -171,7 +172,10 @@ async function recordDomainFeedback(domain, data, durationMs, params) {
171
172
  await loop.recordTestOutcome(outcome);
172
173
  }
173
174
  }
174
- if (domain === 'coverage-analysis' && data) {
175
+ // #1014: only MEASURED coverage becomes a coverage_sessions row. An
176
+ // estimate or an UNMEASURED target wrote after_lines = the estimate / 0.0,
177
+ // which gate-check, threshold-check and the coverage-learner then read.
178
+ if (domain === 'coverage-analysis' && data && isLearnableResult(domain, data)) {
175
179
  // Extract coverage session data and record for learning
176
180
  const session = {
177
181
  id: randomUUID(),
@@ -203,6 +207,14 @@ async function recordDomainFeedback(domain, data, durationMs, params) {
203
207
  durationMs,
204
208
  startedAt: new Date(Date.now() - durationMs),
205
209
  completedAt: new Date(),
210
+ // #1014: provenance stamp — readers ignore legacy rows of this agent
211
+ // without it (see feedback/coverage-session-provenance.ts).
212
+ context: {
213
+ measured: true,
214
+ coverageMethod: data.coverageMethod ?? 'instrumented-report',
215
+ branchDataCollected: data.branchCoverage !== null && data.branchCoverage !== undefined,
216
+ functionDataCollected: data.functionCoverage !== null && data.functionCoverage !== undefined,
217
+ },
206
218
  };
207
219
  await loop.recordCoverageSession(session);
208
220
  }
@@ -646,16 +658,22 @@ export function createDomainHandler(config) {
646
658
  const mappedResult = mapToResult(submitResult.value, data, result.duration, result.savedFiles, params);
647
659
  // #933: every result-saving tool reports what it wrote, the same way.
648
660
  Object.assign(mappedResult, describeSavedResults(saveResults, result.savedFiles));
649
- // Step 5b: Record pattern usage on success (Phase 5.3 — fire-and-forget)
650
- recordPatternUsageAsync(routingResult?.patternHints, true, domain, result.duration);
651
- // Step 5c: Capture real execution learning (fire-and-forget)
652
- captureExecutionLearning(`qe-${domain}`, taskType, params, data, result.duration).catch(() => { }); // Swallow errors — learning is non-critical
653
- // Step 5d: Record feedback for test_outcomes / coverage_sessions
654
- try {
655
- await recordDomainFeedback(domain, data, result.duration, params);
656
- }
657
- catch {
658
- // Non-critical — don't fail handler if feedback recording fails
661
+ // #1014: a run without evidence (a coverage estimate, an UNMEASURED
662
+ // target, an insufficient-evidence gate) still succeeds as a tool call,
663
+ // but is not recorded as successful learning anywhere below.
664
+ const learnable = isLearnableResult(domain, data) && isLearnableResult('', mappedResult);
665
+ if (learnable) {
666
+ // Step 5b: Record pattern usage on success (Phase 5.3 — fire-and-forget)
667
+ recordPatternUsageAsync(routingResult?.patternHints, true, domain, result.duration);
668
+ // Step 5c: Capture real execution learning (fire-and-forget)
669
+ captureExecutionLearning(`qe-${domain}`, taskType, params, data, result.duration).catch(() => { }); // Swallow errors — learning is non-critical
670
+ // Step 5d: Record feedback for test_outcomes / coverage_sessions
671
+ try {
672
+ await recordDomainFeedback(domain, data, result.duration, params);
673
+ }
674
+ catch {
675
+ // Non-critical — don't fail handler if feedback recording fails
676
+ }
659
677
  }
660
678
  return {
661
679
  success: true,
@@ -665,11 +683,19 @@ export function createDomainHandler(config) {
665
683
  catch (error) {
666
684
  // Step 6: Error handling
667
685
  const errorMessage = toErrorMessage(error);
668
- // Record pattern usage on failure (Phase 5.3 — fire-and-forget)
669
- recordPatternUsageAsync(routingResult?.patternHints, false, domain, 0);
686
+ // A caller-input error thrown before the task runs (e.g. by
687
+ // mapToPayload's shape checks) is the caller's mistake, not a domain
688
+ // failure: it is marked for the experience middleware and not recorded
689
+ // as a pattern-usage failure.
690
+ const callerError = isCallerInputError(error);
691
+ if (!callerError) {
692
+ // Record pattern usage on failure (Phase 5.3 — fire-and-forget)
693
+ recordPatternUsageAsync(routingResult?.patternHints, false, domain, 0);
694
+ }
670
695
  return {
671
696
  success: false,
672
697
  error: `Failed to ${taskType.replace(/-/g, ' ')}: ${errorMessage}`,
698
+ ...(callerError ? { data: { callerError: true } } : {}),
673
699
  };
674
700
  }
675
701
  };
@@ -477,9 +477,16 @@ export class MCPProtocolServer {
477
477
  const { getSessionCache } = await import('../optimization/session-cache.js');
478
478
  const cache = getSessionCache();
479
479
  const { domain, action } = parseToolDomainAction(name);
480
+ // #998: key on the project root, working directory and a fingerprint
481
+ // of every path argument, not on the raw arguments alone. A call that
482
+ // reads a directory tree is neither served from nor stored in cache.
483
+ const { buildToolCacheScope } = await import('./tool-cache-scope.js');
484
+ const { scope, reusable } = buildToolCacheScope(name, processedCtx.params);
480
485
  cacheGeneration = cache.getGeneration();
481
- cacheFingerprint = cache.computeFingerprint(domain, action, processedCtx.params || {});
482
- const hit = cache.get(cacheFingerprint);
486
+ cacheFingerprint = reusable
487
+ ? cache.computeFingerprint(domain, action, processedCtx.params || {}, scope)
488
+ : null;
489
+ const hit = cacheFingerprint ? cache.get(cacheFingerprint) : null;
483
490
  if (hit) {
484
491
  // Cache hit — return the stored result without running the handler.
485
492
  const cachedText = JSON.stringify(hit.result, null, 2);
@@ -887,6 +894,10 @@ export class MCPProtocolServer {
887
894
  description: `Analyze code coverage with O(log n) sublinear algorithm and ML-powered gap detection. ${SAVE_RESULTS_HINT} Example: coverage_analyze_sublinear({ target: "src/", detectGaps: true })`,
888
895
  category: 'domain',
889
896
  isConcurrencySafe: true,
897
+ // #998: never replay from the session cache. The result measures
898
+ // mutable project state (source tree, test runs, reports on disk), so a
899
+ // cached answer goes stale as soon as those inputs change.
900
+ isCacheable: false,
890
901
  parameters: [
891
902
  { name: 'target', type: 'string', description: 'Target path to analyze', required: true },
892
903
  { name: 'detectGaps', type: 'boolean', description: 'Detect coverage gaps', default: true },
@@ -902,9 +913,15 @@ export class MCPProtocolServer {
902
913
  description: `Assess code quality metrics and optionally run a pass/fail quality gate. Unmeasured metrics never pass. ${SAVE_RESULTS_HINT} Example: quality_assess({ runGate: true })`,
903
914
  category: 'domain',
904
915
  isConcurrencySafe: true,
916
+ // #998: never replay from the session cache. The result measures
917
+ // mutable project state (source tree, test runs, reports on disk), so a
918
+ // cached answer goes stale as soon as those inputs change.
919
+ isCacheable: false,
905
920
  parameters: [
906
921
  { name: 'runGate', type: 'boolean', description: 'Evaluate all seven canonical measured quality checks; requires complete, valid evidence from the last 24 hours. Returns individual checks, not a static aggregate score. Missing, stale or malformed evidence fails with status "insufficient-evidence" and lists the metrics in unmeasured. When false, only static analysis runs (gateEvaluated: false).', default: false },
907
922
  { name: 'metrics', type: 'array', description: 'Static-analysis metrics to assess (default coverage, complexity, maintainability). Known: coverage, complexity, maintainability, duplication, testability, security. Any requested metric without measured data gives status "insufficient-evidence", passed: false, and lists it in unmeasured; a measured metric failing its threshold blocks.', items: { type: 'string' } },
923
+ { name: 'target', type: 'string', description: 'File or directory to analyse, resolved against the project root and required to stay inside it (default: src/, else the root). Binary, generated, minified and .d.ts files are excluded and listed in excludedFiles; files that fail to parse are listed in partialMetrics.' },
924
+ { name: 'sourceFiles', type: 'array', description: 'Explicit files to analyse (each inside the project root); takes precedence over target. If a listed file cannot be read or parsed, the affected metrics are unmeasured.', items: { type: 'string' } },
908
925
  saveResultsParameter('quality_assess'),
909
926
  ],
910
927
  },
@@ -974,6 +991,10 @@ export class MCPProtocolServer {
974
991
  description: `Predict potential defects using AI analysis of code complexity and change history. ${SAVE_RESULTS_HINT} Example: defect_predict({ target: "src/auth/" })`,
975
992
  category: 'domain',
976
993
  isConcurrencySafe: true,
994
+ // #998: never replay from the session cache. The result measures
995
+ // mutable project state (source tree, test runs, reports on disk), so a
996
+ // cached answer goes stale as soon as those inputs change.
997
+ isCacheable: false,
977
998
  parameters: [
978
999
  { name: 'target', type: 'string', description: 'Target path', required: true },
979
1000
  saveResultsParameter('defect_predict'),
@@ -1002,6 +1023,10 @@ export class MCPProtocolServer {
1002
1023
  description: `Index source code into the knowledge graph for dependency and impact analysis. ${SAVE_RESULTS_HINT} Example: code_index({ target: "src/" })`,
1003
1024
  category: 'domain',
1004
1025
  isConcurrencySafe: true,
1026
+ // #998: never replay from the session cache. The result measures
1027
+ // mutable project state (source tree, test runs, reports on disk), so a
1028
+ // cached answer goes stale as soon as those inputs change.
1029
+ isCacheable: false,
1005
1030
  parameters: [
1006
1031
  { name: 'target', type: 'string', description: 'Target path', required: true },
1007
1032
  saveResultsParameter('code_index'),
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Agentic QE v3 - MCP result-cache scope (#998)
3
+ *
4
+ * The protocol server reuses results of read-only tools through the session
5
+ * cache. A result is only reusable for the same project and the same inputs,
6
+ * so the cache key carries:
7
+ * - the resolved project root and working directory, and
8
+ * - for each path argument, its absolute path plus an mtime/size fingerprint,
9
+ * so an edited requirements file misses the cache.
10
+ *
11
+ * A directory argument cannot be fingerprinted cheaply (editing a file inside
12
+ * it does not change the directory's mtime), so a call that reads a directory
13
+ * tree is reported as not reusable and runs every time.
14
+ *
15
+ * @module mcp/tool-cache-scope
16
+ */
17
+ import type { CacheScope } from '../optimization/session-cache.js';
18
+ /** Argument names that tools treat as filesystem paths. */
19
+ export declare const PATH_ARGUMENTS: readonly ["target", "requirementsPath", "contractPath", "testPath", "path", "filePath", "file"];
20
+ export interface ToolCacheScope {
21
+ scope: CacheScope;
22
+ /** False when the call reads a directory tree, so no cached result may be reused. */
23
+ reusable: boolean;
24
+ }
25
+ /**
26
+ * Build the cache scope for one tool call: project root, working directory
27
+ * and a fingerprint of every path argument (relative ones resolved to
28
+ * absolute paths against the working directory).
29
+ */
30
+ export declare function buildToolCacheScope(toolName: string, params: Record<string, unknown> | undefined): ToolCacheScope;
31
+ //# sourceMappingURL=tool-cache-scope.d.ts.map
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Agentic QE v3 - MCP result-cache scope (#998)
3
+ *
4
+ * The protocol server reuses results of read-only tools through the session
5
+ * cache. A result is only reusable for the same project and the same inputs,
6
+ * so the cache key carries:
7
+ * - the resolved project root and working directory, and
8
+ * - for each path argument, its absolute path plus an mtime/size fingerprint,
9
+ * so an edited requirements file misses the cache.
10
+ *
11
+ * A directory argument cannot be fingerprinted cheaply (editing a file inside
12
+ * it does not change the directory's mtime), so a call that reads a directory
13
+ * tree is reported as not reusable and runs every time.
14
+ *
15
+ * @module mcp/tool-cache-scope
16
+ */
17
+ import * as fs from 'fs';
18
+ import * as path from 'path';
19
+ import { findProjectRoot } from '../kernel/project-root.js';
20
+ /** Argument names that tools treat as filesystem paths. */
21
+ export const PATH_ARGUMENTS = [
22
+ 'target', 'requirementsPath', 'contractPath', 'testPath', 'path', 'filePath', 'file',
23
+ ];
24
+ function fingerprintPath(value, cwd) {
25
+ const absolute = path.resolve(cwd, value);
26
+ try {
27
+ const stat = fs.statSync(absolute);
28
+ return {
29
+ path: absolute,
30
+ exists: true,
31
+ kind: stat.isFile() ? 'file' : stat.isDirectory() ? 'directory' : 'other',
32
+ size: stat.size,
33
+ mtimeMs: stat.mtimeMs,
34
+ };
35
+ }
36
+ catch {
37
+ return { path: absolute, exists: false };
38
+ }
39
+ }
40
+ /**
41
+ * Tools that scan the working directory tree when their path argument is
42
+ * omitted. Such a call reads mutable files that no fingerprint here covers.
43
+ */
44
+ const IMPLICIT_DIRECTORY_ARGUMENT = {
45
+ requirements_validate: 'requirementsPath',
46
+ };
47
+ /**
48
+ * Build the cache scope for one tool call: project root, working directory
49
+ * and a fingerprint of every path argument (relative ones resolved to
50
+ * absolute paths against the working directory).
51
+ */
52
+ export function buildToolCacheScope(toolName, params) {
53
+ const cwd = process.cwd();
54
+ const projectRoot = path.resolve(findProjectRoot());
55
+ const inputs = {};
56
+ let reusable = true;
57
+ for (const name of PATH_ARGUMENTS) {
58
+ const value = params?.[name];
59
+ if (typeof value === 'string' && value.length > 0) {
60
+ const fingerprint = fingerprintPath(value, cwd);
61
+ inputs[name] = fingerprint;
62
+ if (fingerprint.kind === 'directory')
63
+ reusable = false;
64
+ }
65
+ }
66
+ const implicit = IMPLICIT_DIRECTORY_ARGUMENT[toolName];
67
+ if (implicit && inputs[implicit] === undefined)
68
+ reusable = false;
69
+ return { scope: { projectRoot, cwd, inputs }, reusable };
70
+ }
71
+ //# sourceMappingURL=tool-cache-scope.js.map
@@ -14,6 +14,7 @@ import { SemanticAnalyzerService } from '../../../domains/code-intelligence/serv
14
14
  import { ImpactAnalyzerService } from '../../../domains/code-intelligence/services/impact-analyzer.js';
15
15
  import * as fs from 'fs';
16
16
  import * as path from 'path';
17
+ import { isAqeManagedDir } from '../../../shared/aqe-managed-dirs.js';
17
18
  import { toErrorMessage } from '../../../shared/error-utils.js';
18
19
  // ============================================================================
19
20
  // Tool Implementation
@@ -405,7 +406,7 @@ export class CodeAnalyzeTool extends MCPToolBase {
405
406
  /**
406
407
  * Find source files in a directory
407
408
  */
408
- async findSourceFiles(dir) {
409
+ async findSourceFiles(dir, isRoot = true) {
409
410
  const files = [];
410
411
  const extensions = ['.ts', '.tsx', '.js', '.jsx'];
411
412
  const ignoreDirs = ['node_modules', '.git', 'dist', 'build', 'coverage'];
@@ -414,8 +415,9 @@ export class CodeAnalyzeTool extends MCPToolBase {
414
415
  for (const entry of entries) {
415
416
  const fullPath = path.join(dir, entry.name);
416
417
  if (entry.isDirectory()) {
417
- if (!ignoreDirs.includes(entry.name)) {
418
- const subFiles = await this.findSourceFiles(fullPath);
418
+ // #999: AQE state/assets (.agentic-qe anywhere; .claude at the root or next to .agentic-qe)
419
+ if (!ignoreDirs.includes(entry.name) && !isAqeManagedDir(dir, entry.name, isRoot)) {
420
+ const subFiles = await this.findSourceFiles(fullPath, false);
419
421
  files.push(...subFiles);
420
422
  }
421
423
  }
@@ -221,6 +221,10 @@ export interface QualityAssessParams {
221
221
  runGate?: boolean;
222
222
  threshold?: number;
223
223
  metrics?: string[];
224
+ /** #1021: file or directory to analyse, relative to (and contained in) the project root. Default: src/ (or the root). */
225
+ target?: string;
226
+ /** #1021: explicit files to analyse, each contained in the project root. Takes precedence over target. */
227
+ sourceFiles?: string[];
224
228
  /** #933: write result files under .agentic-qe/results/ (default true). false skips them. */
225
229
  saveResults?: boolean;
226
230
  }
@@ -22,6 +22,19 @@ export interface CachedOperation {
22
22
  hitCount: number;
23
23
  lastHitAt: number;
24
24
  }
25
+ /**
26
+ * Where a cached operation ran (#998). Arguments alone do not identify a
27
+ * result: the same relative `target: "."` means a different tree in another
28
+ * project, and a file argument means different content after an edit.
29
+ */
30
+ export interface CacheScope {
31
+ /** Resolved project root. Defaults to `findProjectRoot()`. */
32
+ projectRoot?: string;
33
+ /** Working directory relative arguments resolve against. Defaults to `process.cwd()`. */
34
+ cwd?: string;
35
+ /** Fingerprints of the inputs the operation reads (absolute path, mtime, size). */
36
+ inputs?: Record<string, unknown>;
37
+ }
25
38
  export interface SessionCacheConfig {
26
39
  /** Enable the cache (default: true) */
27
40
  enabled: boolean;
@@ -62,8 +75,13 @@ export declare class SessionOperationCache {
62
75
  *
63
76
  * Including the version means an upgrade misses cleanly rather than serving
64
77
  * stale answers; entries from the old build simply age out.
78
+ *
79
+ * The scope (project root, working directory and input fingerprints) is part
80
+ * of the key too (#998): without it a relative target returned another
81
+ * project's cached result. When no scope is passed, the current project root
82
+ * and working directory are used, so every caller is project-scoped.
65
83
  */
66
- computeFingerprint(domain: string, action: string, input: Record<string, unknown>): string;
84
+ computeFingerprint(domain: string, action: string, input: Record<string, unknown>, scope?: CacheScope): string;
67
85
  /**
68
86
  * Look up a cached result by fingerprint.
69
87
  * Returns null on miss or expired entry.
@@ -13,6 +13,8 @@
13
13
  * - TTL-based expiry, LRU-ish eviction at capacity
14
14
  */
15
15
  import { createHash } from 'crypto';
16
+ import * as path from 'path';
17
+ import { findProjectRoot } from '../kernel/project-root.js';
16
18
  /**
17
19
  * Build identity mixed into every cache fingerprint so persisted entries never
18
20
  * outlive the code that produced them. `__CLI_VERSION__` is substituted at bundle
@@ -54,6 +56,31 @@ function canonicalStringify(value) {
54
56
  }
55
57
  return encode(normalized);
56
58
  }
59
+ function resolveScope(scope) {
60
+ let projectRoot = scope?.projectRoot;
61
+ if (!projectRoot) {
62
+ try {
63
+ projectRoot = findProjectRoot();
64
+ }
65
+ catch {
66
+ projectRoot = '';
67
+ }
68
+ }
69
+ let cwd = scope?.cwd;
70
+ if (!cwd) {
71
+ try {
72
+ cwd = process.cwd();
73
+ }
74
+ catch {
75
+ cwd = '';
76
+ }
77
+ }
78
+ return {
79
+ projectRoot: projectRoot ? path.resolve(projectRoot) : '',
80
+ cwd: cwd ? path.resolve(cwd) : '',
81
+ inputs: scope?.inputs ?? {},
82
+ };
83
+ }
57
84
  // ============================================================================
58
85
  // Implementation
59
86
  // ============================================================================
@@ -81,9 +108,16 @@ export class SessionOperationCache {
81
108
  *
82
109
  * Including the version means an upgrade misses cleanly rather than serving
83
110
  * stale answers; entries from the old build simply age out.
111
+ *
112
+ * The scope (project root, working directory and input fingerprints) is part
113
+ * of the key too (#998): without it a relative target returned another
114
+ * project's cached result. When no scope is passed, the current project root
115
+ * and working directory are used, so every caller is project-scoped.
84
116
  */
85
- computeFingerprint(domain, action, input) {
86
- const canonical = canonicalStringify({ action, build: getBuildIdentity(), domain, input });
117
+ computeFingerprint(domain, action, input, scope) {
118
+ const canonical = canonicalStringify({
119
+ action, build: getBuildIdentity(), domain, input, scope: resolveScope(scope),
120
+ });
87
121
  return createHash('sha256').update(canonical).digest('hex').slice(0, 16);
88
122
  }
89
123
  /**
@@ -8,6 +8,7 @@
8
8
  import * as fs from 'fs';
9
9
  import * as path from 'path';
10
10
  import { validVersion, newestVersionFirst } from './version-policy.js';
11
+ import { getProjectStorePath } from '../kernel/project-root.js';
11
12
  // ============================================================================
12
13
  // PluginCache
13
14
  // ============================================================================
@@ -16,7 +17,7 @@ export class PluginCache {
16
17
  keepVersions;
17
18
  constructor(options = {}) {
18
19
  this.cacheDir = options.cacheDir
19
- ?? path.join(process.cwd(), '.agentic-qe', 'plugins');
20
+ ?? getProjectStorePath('plugins');
20
21
  this.keepVersions = options.keepVersions ?? 2;
21
22
  }
22
23
  /** Check if a specific version is cached. */
@@ -7,6 +7,7 @@
7
7
  import * as path from 'path';
8
8
  import { execFileSync } from 'child_process';
9
9
  import { parseManifest } from '../manifest.js';
10
+ import { getProjectStorePath } from '../../kernel/project-root.js';
10
11
  // ============================================================================
11
12
  // Input Validation
12
13
  // ============================================================================
@@ -28,7 +29,7 @@ export class GitHubPluginSource {
28
29
  type = 'github';
29
30
  cacheDir;
30
31
  constructor(cacheDir) {
31
- this.cacheDir = cacheDir ?? path.join(process.cwd(), '.agentic-qe', 'plugins-cache');
32
+ this.cacheDir = cacheDir ?? getProjectStorePath('plugins-cache');
32
33
  }
33
34
  async resolve(location) {
34
35
  const pluginPath = await this.getPluginPath(location);
@@ -9,6 +9,7 @@ import * as path from 'path';
9
9
  import * as fs from 'fs';
10
10
  import { execFileSync } from 'child_process';
11
11
  import { parseManifest } from '../manifest.js';
12
+ import { getProjectStorePath } from '../../kernel/project-root.js';
12
13
  // ============================================================================
13
14
  // Input Validation
14
15
  // ============================================================================
@@ -30,7 +31,7 @@ export class NpmPluginSource {
30
31
  type = 'npm';
31
32
  cacheDir;
32
33
  constructor(cacheDir) {
33
- this.cacheDir = cacheDir ?? path.join(process.cwd(), '.agentic-qe', 'plugins-cache', 'npm');
34
+ this.cacheDir = cacheDir ?? getProjectStorePath('plugins-cache', 'npm');
34
35
  }
35
36
  async resolve(location) {
36
37
  const pluginPath = await this.getPluginPath(location);
@@ -0,0 +1,24 @@
1
+ /**
2
+ * AQE-managed directories that source walkers must not treat as project code
3
+ * (#999, review N4 / round 2b).
4
+ *
5
+ * - `.agentic-qe/` is AQE runtime state (workers, results, DBs) at ANY depth;
6
+ * it is never source.
7
+ * - `.claude/` holds the assets `aqe init` writes (helpers, skills, agents).
8
+ * It is AQE-managed at the walk root, and nested only when it sits next to
9
+ * a `.agentic-qe/` (a nested `aqe init` in a monorepo package). A nested
10
+ * `.claude/` with no AQE install beside it (e.g. a Claude Code plugin's own
11
+ * `.claude/hooks/*.ts`) is the package's source and is walked.
12
+ */
13
+ export declare const AQE_STATE_DIR = ".agentic-qe";
14
+ export declare const AQE_CLAUDE_DIR = ".claude";
15
+ /** True when directory `name` inside `parentDir` is AQE-managed (never project source). */
16
+ export declare function isAqeManagedDir(parentDir: string, name: string, isWalkRoot: boolean): boolean;
17
+ /**
18
+ * Root-relative ('/'-separated) paths of the AQE-managed `.claude` directories
19
+ * under `projectRoot`: the root one (if present) and every `.claude` that has a
20
+ * sibling `.agentic-qe`. Used to anchor cloc/tokei excludes. Bounded walk that
21
+ * skips `skipDirs` and dot-directories.
22
+ */
23
+ export declare function findAqeClaudeDirs(projectRoot: string, skipDirs?: readonly string[], maxDepth?: number): string[];
24
+ //# sourceMappingURL=aqe-managed-dirs.d.ts.map