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
@@ -49,6 +49,11 @@ export interface TrendData {
49
49
  export declare class ResultSaver {
50
50
  private readonly baseDir;
51
51
  private readonly resultsDir;
52
+ /**
53
+ * @param baseDir Store directory. Defaults to the resolved project's
54
+ * `.agentic-qe` (review of #1026 N2: a cwd-relative default wrote
55
+ * `<tmp>/.agentic-qe/results` when run from a shared dir).
56
+ */
52
57
  constructor(baseDir?: string);
53
58
  /**
54
59
  * Save task result in appropriate format(s)
@@ -71,12 +76,29 @@ export declare class ResultSaver {
71
76
  private generateSecurityReport;
72
77
  private generateQualityReport;
73
78
  private ensureDirectories;
79
+ /** `YYYY-MM-DDTHH-MM-SS-mmm` (#1007: milliseconds, not seconds). */
74
80
  private formatTimestamp;
81
+ /** Short task-id fragment plus random hex, unique per save. */
82
+ private uniqueSuffix;
83
+ /** Write `filePath` via a temp file and rename, replacing any previous version. */
84
+ private replaceFile;
85
+ /**
86
+ * Create `filePath` exclusively and record it. If the name is taken (a
87
+ * reused custom prefix), write to
88
+ * `name-1.ext`, `name-2.ext`, … instead of replacing the earlier file (#1007).
89
+ */
90
+ private writeNewFile;
75
91
  private sanitizeFilename;
76
92
  private getTestExtension;
77
93
  private createFileEntry;
78
94
  private extractSummary;
95
+ /**
96
+ * Append to index.json. Concurrent saves read-modify-write the same file, so
97
+ * updates are serialized per index path in this process and the file is
98
+ * replaced atomically, otherwise one save's entry is lost (#1007).
99
+ */
79
100
  private updateIndex;
101
+ private writeIndexEntry;
80
102
  }
81
103
  export declare function createResultSaver(baseDir?: string): ResultSaver;
82
104
  //# sourceMappingURL=result-saver.d.ts.map
@@ -4,8 +4,9 @@
4
4
  */
5
5
  import * as fs from 'fs/promises';
6
6
  import * as path from 'path';
7
- import { createHash } from 'crypto';
7
+ import { createHash, randomBytes } from 'crypto';
8
8
  import { safeJsonParse } from '../shared/safe-json.js';
9
+ import { getProjectStorePath } from '../kernel/project-root.js';
9
10
  function securityReportExecution(data) {
10
11
  return data.evidence?.completeness === 'complete' ? 'completed'
11
12
  : data.evidence?.completeness === 'partial' ? 'partial'
@@ -77,7 +78,12 @@ const TEST_FILE_PATTERNS = {
77
78
  export class ResultSaver {
78
79
  baseDir;
79
80
  resultsDir;
80
- constructor(baseDir = '.agentic-qe') {
81
+ /**
82
+ * @param baseDir Store directory. Defaults to the resolved project's
83
+ * `.agentic-qe` (review of #1026 N2: a cwd-relative default wrote
84
+ * `<tmp>/.agentic-qe/results` when run from a shared dir).
85
+ */
86
+ constructor(baseDir = getProjectStorePath()) {
81
87
  this.baseDir = baseDir;
82
88
  this.resultsDir = path.join(baseDir, 'results');
83
89
  }
@@ -94,8 +100,13 @@ export class ResultSaver {
94
100
  // Ensure directories exist
95
101
  await this.ensureDirectories(taskType);
96
102
  // Get timestamp string for filenames
103
+ // #1007: millisecond timestamp plus a per-save suffix. Names to the second
104
+ // let two saves in the same second overwrite each other. Report, manifest
105
+ // and data files are created exclusively (see writeNewFile), so even a
106
+ // reused custom prefix never replaces an earlier result. Generated test
107
+ // files are the exception: one file per test name (see replaceFile).
97
108
  const tsStr = this.formatTimestamp(timestamp);
98
- const prefix = options.filenamePrefix || tsStr;
109
+ const prefix = options.filenamePrefix || `${tsStr}_${this.uniqueSuffix(taskId)}`;
99
110
  // Save based on task type
100
111
  switch (taskType) {
101
112
  case 'generate-tests':
@@ -159,8 +170,7 @@ export class ResultSaver {
159
170
  framework: options.framework || 'vitest',
160
171
  tests: data.tests,
161
172
  }, null, 2);
162
- await fs.writeFile(manifestPath, manifestContent);
163
- files.push(await this.createFileEntry(manifestPath, 'json'));
173
+ files.push(await this.writeNewFile(manifestPath, manifestContent, 'json'));
164
174
  // Save individual test files if code is provided
165
175
  if (data.tests) {
166
176
  for (const test of data.tests) {
@@ -168,16 +178,17 @@ export class ResultSaver {
168
178
  const ext = this.getTestExtension(options.language || 'typescript', options.framework || 'vitest');
169
179
  const testFilename = this.sanitizeFilename(test.name) + ext;
170
180
  const testPath = path.join(testDir, testFilename);
171
- await fs.writeFile(testPath, test.code);
172
- files.push(await this.createFileEntry(testPath, 'source'));
181
+ // Review of #1026 N7: a generated test keeps one file per test name
182
+ // (replaced atomically), unlike reports, so numbered copies never
183
+ // pile up for a test runner to collect.
184
+ files.push(await this.replaceFile(testPath, test.code, 'source'));
173
185
  }
174
186
  }
175
187
  }
176
188
  // Save markdown report
177
189
  const reportPath = path.join(this.resultsDir, 'tests', `${prefix}_report.md`);
178
190
  const reportContent = this.generateTestReport(data, options);
179
- await fs.writeFile(reportPath, reportContent);
180
- files.push(await this.createFileEntry(reportPath, 'markdown'));
191
+ files.push(await this.writeNewFile(reportPath, reportContent, 'markdown'));
181
192
  return files;
182
193
  }
183
194
  async saveCoverage(result, prefix, options) {
@@ -189,8 +200,7 @@ export class ResultSaver {
189
200
  const coverageDir = path.join(this.resultsDir, 'coverage');
190
201
  // Save JSON
191
202
  const jsonPath = path.join(coverageDir, `${prefix}_coverage.json`);
192
- await fs.writeFile(jsonPath, JSON.stringify(data, null, 2));
193
- files.push(await this.createFileEntry(jsonPath, 'json'));
203
+ files.push(await this.writeNewFile(jsonPath, JSON.stringify(data, null, 2), 'json'));
194
204
  // Save LCOV format — ONLY for genuinely measured coverage.
195
205
  //
196
206
  // #569/ADR-126: LCOV has nowhere to record provenance. Emitting it for an
@@ -202,14 +212,12 @@ export class ResultSaver {
202
212
  if (options.includeSecondary !== false && data.measured === true) {
203
213
  const lcovPath = path.join(coverageDir, `${prefix}_coverage.lcov`);
204
214
  const lcovContent = this.generateLcov(data);
205
- await fs.writeFile(lcovPath, lcovContent);
206
- files.push(await this.createFileEntry(lcovPath, 'lcov'));
215
+ files.push(await this.writeNewFile(lcovPath, lcovContent, 'lcov'));
207
216
  }
208
217
  // Save markdown report
209
218
  const reportPath = path.join(coverageDir, `${prefix}_report.md`);
210
219
  const reportContent = this.generateCoverageReport(data);
211
- await fs.writeFile(reportPath, reportContent);
212
- files.push(await this.createFileEntry(reportPath, 'markdown'));
220
+ files.push(await this.writeNewFile(reportPath, reportContent, 'markdown'));
213
221
  return files;
214
222
  }
215
223
  async saveSecurityScan(result, prefix, options) {
@@ -218,20 +226,17 @@ export class ResultSaver {
218
226
  const securityDir = path.join(this.resultsDir, 'security');
219
227
  // Save JSON
220
228
  const jsonPath = path.join(securityDir, `${prefix}_scan.json`);
221
- await fs.writeFile(jsonPath, JSON.stringify(data, null, 2));
222
- files.push(await this.createFileEntry(jsonPath, 'json'));
229
+ files.push(await this.writeNewFile(jsonPath, JSON.stringify(data, null, 2), 'json'));
223
230
  // Save SARIF format
224
231
  if (options.includeSecondary !== false) {
225
232
  const sarifPath = path.join(securityDir, `${prefix}_scan.sarif`);
226
233
  const sarifContent = this.generateSarif(data);
227
- await fs.writeFile(sarifPath, sarifContent);
228
- files.push(await this.createFileEntry(sarifPath, 'sarif'));
234
+ files.push(await this.writeNewFile(sarifPath, sarifContent, 'sarif'));
229
235
  }
230
236
  // Save markdown report
231
237
  const reportPath = path.join(securityDir, `${prefix}_report.md`);
232
238
  const reportContent = this.generateSecurityReport(data);
233
- await fs.writeFile(reportPath, reportContent);
234
- files.push(await this.createFileEntry(reportPath, 'markdown'));
239
+ files.push(await this.writeNewFile(reportPath, reportContent, 'markdown'));
235
240
  return files;
236
241
  }
237
242
  async saveQualityAssessment(result, prefix, _options) {
@@ -240,13 +245,11 @@ export class ResultSaver {
240
245
  const qualityDir = path.join(this.resultsDir, 'quality');
241
246
  // Save JSON
242
247
  const jsonPath = path.join(qualityDir, `${prefix}_assessment.json`);
243
- await fs.writeFile(jsonPath, JSON.stringify(data, null, 2));
244
- files.push(await this.createFileEntry(jsonPath, 'json'));
248
+ files.push(await this.writeNewFile(jsonPath, JSON.stringify(data, null, 2), 'json'));
245
249
  // Save markdown report
246
250
  const reportPath = path.join(qualityDir, `${prefix}_report.md`);
247
251
  const reportContent = this.generateQualityReport(data);
248
- await fs.writeFile(reportPath, reportContent);
249
- files.push(await this.createFileEntry(reportPath, 'markdown'));
252
+ files.push(await this.writeNewFile(reportPath, reportContent, 'markdown'));
250
253
  return files;
251
254
  }
252
255
  async saveCodeIndex(result, prefix, _options) {
@@ -256,8 +259,7 @@ export class ResultSaver {
256
259
  await fs.mkdir(indexDir, { recursive: true });
257
260
  // Save JSON
258
261
  const jsonPath = path.join(indexDir, `${prefix}_index.json`);
259
- await fs.writeFile(jsonPath, JSON.stringify(data, null, 2));
260
- files.push(await this.createFileEntry(jsonPath, 'json'));
262
+ files.push(await this.writeNewFile(jsonPath, JSON.stringify(data, null, 2), 'json'));
261
263
  return files;
262
264
  }
263
265
  async saveDefectPrediction(result, prefix, _options) {
@@ -266,8 +268,7 @@ export class ResultSaver {
266
268
  await fs.mkdir(defectDir, { recursive: true });
267
269
  // Save JSON
268
270
  const jsonPath = path.join(defectDir, `${prefix}_prediction.json`);
269
- await fs.writeFile(jsonPath, JSON.stringify(result, null, 2));
270
- files.push(await this.createFileEntry(jsonPath, 'json'));
271
+ files.push(await this.writeNewFile(jsonPath, JSON.stringify(result, null, 2), 'json'));
271
272
  return files;
272
273
  }
273
274
  async saveContractValidation(result, prefix, _options) {
@@ -276,8 +277,7 @@ export class ResultSaver {
276
277
  await fs.mkdir(contractDir, { recursive: true });
277
278
  // Save JSON
278
279
  const jsonPath = path.join(contractDir, `${prefix}_validation.json`);
279
- await fs.writeFile(jsonPath, JSON.stringify(result, null, 2));
280
- files.push(await this.createFileEntry(jsonPath, 'json'));
280
+ files.push(await this.writeNewFile(jsonPath, JSON.stringify(result, null, 2), 'json'));
281
281
  return files;
282
282
  }
283
283
  async saveAccessibilityTest(result, prefix, _options) {
@@ -286,8 +286,7 @@ export class ResultSaver {
286
286
  await fs.mkdir(a11yDir, { recursive: true });
287
287
  // Save JSON
288
288
  const jsonPath = path.join(a11yDir, `${prefix}_test.json`);
289
- await fs.writeFile(jsonPath, JSON.stringify(result, null, 2));
290
- files.push(await this.createFileEntry(jsonPath, 'json'));
289
+ files.push(await this.writeNewFile(jsonPath, JSON.stringify(result, null, 2), 'json'));
291
290
  return files;
292
291
  }
293
292
  async saveChaosTest(result, prefix, _options) {
@@ -296,8 +295,7 @@ export class ResultSaver {
296
295
  await fs.mkdir(chaosDir, { recursive: true });
297
296
  // Save JSON
298
297
  const jsonPath = path.join(chaosDir, `${prefix}_chaos.json`);
299
- await fs.writeFile(jsonPath, JSON.stringify(result, null, 2));
300
- files.push(await this.createFileEntry(jsonPath, 'json'));
298
+ files.push(await this.writeNewFile(jsonPath, JSON.stringify(result, null, 2), 'json'));
301
299
  return files;
302
300
  }
303
301
  async saveGeneric(taskType, result, prefix) {
@@ -305,8 +303,7 @@ export class ResultSaver {
305
303
  const genericDir = path.join(this.resultsDir, 'other');
306
304
  await fs.mkdir(genericDir, { recursive: true });
307
305
  const jsonPath = path.join(genericDir, `${prefix}_${taskType}.json`);
308
- await fs.writeFile(jsonPath, JSON.stringify(result, null, 2));
309
- files.push(await this.createFileEntry(jsonPath, 'json'));
306
+ files.push(await this.writeNewFile(jsonPath, JSON.stringify(result, null, 2), 'json'));
310
307
  return files;
311
308
  }
312
309
  // ==========================================================================
@@ -486,7 +483,12 @@ ${data.recommendations.map((r, i) => `${i + 1}. ${r}`).join('\n')}
486
483
 
487
484
  ## Quality Score
488
485
 
489
- ${typeof data.qualityScore === 'number' ? `**${data.qualityScore.toFixed(1)}** / 100` : 'N/A — measured gate uses individual checks.'}
486
+ ${typeof data.qualityScore !== 'number' ? 'N/A — measured gate uses individual checks.'
487
+ : data.qualityScore < 0 ? 'Not measured — no requested metric had measured data (#1011).'
488
+ : data.evidenceStatus === 'insufficient-evidence'
489
+ ? `Subset score over measured metrics: ${data.qualityScore.toFixed(1)} (not a verdict)`
490
+ + (data.scoreBasis?.length ? `\nBased on: ${data.scoreBasis.join(', ')}` : '')
491
+ : `**${data.qualityScore.toFixed(1)}** / 100`}
490
492
 
491
493
  ## Metrics
492
494
 
@@ -515,8 +517,51 @@ ${data.recommendations.length === 0 ? noRecommendations : data.recommendations.m
515
517
  await fs.mkdir(dir, { recursive: true });
516
518
  }
517
519
  }
520
+ /** `YYYY-MM-DDTHH-MM-SS-mmm` (#1007: milliseconds, not seconds). */
518
521
  formatTimestamp(date) {
519
- return date.toISOString().replace(/[:.]/g, '-').slice(0, 19);
522
+ return date.toISOString().replace(/[:.]/g, '-').slice(0, 23);
523
+ }
524
+ /** Short task-id fragment plus random hex, unique per save. */
525
+ uniqueSuffix(taskId) {
526
+ const idPart = this.sanitizeFilename(taskId).slice(-12) || 'task';
527
+ return `${idPart}-${randomBytes(3).toString('hex')}`;
528
+ }
529
+ /** Write `filePath` via a temp file and rename, replacing any previous version. */
530
+ async replaceFile(filePath, content, format) {
531
+ const tmpPath = `${filePath}.${process.pid}.${randomBytes(4).toString('hex')}.tmp`;
532
+ try {
533
+ await fs.writeFile(tmpPath, content, { flag: 'wx' });
534
+ await fs.rename(tmpPath, filePath);
535
+ }
536
+ catch (error) {
537
+ await fs.rm(tmpPath, { force: true });
538
+ throw error;
539
+ }
540
+ return this.createFileEntry(filePath, format);
541
+ }
542
+ /**
543
+ * Create `filePath` exclusively and record it. If the name is taken (a
544
+ * reused custom prefix), write to
545
+ * `name-1.ext`, `name-2.ext`, … instead of replacing the earlier file (#1007).
546
+ */
547
+ async writeNewFile(filePath, content, format) {
548
+ const dir = path.dirname(filePath);
549
+ const base = path.basename(filePath);
550
+ const dot = base.indexOf('.', 1);
551
+ const stem = dot > 0 ? base.slice(0, dot) : base;
552
+ const ext = dot > 0 ? base.slice(dot) : '';
553
+ for (let attempt = 0; attempt < 1000; attempt++) {
554
+ const candidate = attempt === 0 ? filePath : path.join(dir, `${stem}-${attempt}${ext}`);
555
+ try {
556
+ await fs.writeFile(candidate, content, { flag: 'wx' });
557
+ return this.createFileEntry(candidate, format);
558
+ }
559
+ catch (error) {
560
+ if (error.code !== 'EEXIST')
561
+ throw error;
562
+ }
563
+ }
564
+ throw new Error(`ResultSaver: no free file name for ${filePath}`);
520
565
  }
521
566
  sanitizeFilename(name) {
522
567
  return name.replace(/[^a-zA-Z0-9_-]/g, '_').toLowerCase();
@@ -555,7 +600,10 @@ ${data.recommendations.length === 0 ? noRecommendations : data.recommendations.m
555
600
  };
556
601
  case 'assess-quality':
557
602
  return {
558
- qualityScore: data.qualityScore,
603
+ // #1021: -1 means "not measured", and a subset score under insufficient
604
+ // evidence is not a verdict; keep both out of the index and trends.
605
+ ...(typeof data.qualityScore === 'number' && data.qualityScore >= 0
606
+ && data.evidenceStatus !== 'insufficient-evidence' ? { qualityScore: data.qualityScore } : {}),
559
607
  passed: data.passed,
560
608
  ...(data.evidenceStatus !== undefined ? { evidenceStatus: data.evidenceStatus } : {}),
561
609
  };
@@ -568,8 +616,26 @@ ${data.recommendations.length === 0 ? noRecommendations : data.recommendations.m
568
616
  return {};
569
617
  }
570
618
  }
571
- async updateIndex(taskId, taskType, timestamp, files, summary) {
572
- const indexPath = path.join(this.resultsDir, 'index.json');
619
+ /**
620
+ * Append to index.json. Concurrent saves read-modify-write the same file, so
621
+ * updates are serialized per index path in this process and the file is
622
+ * replaced atomically, otherwise one save's entry is lost (#1007).
623
+ */
624
+ updateIndex(taskId, taskType, timestamp, files, summary) {
625
+ const indexPath = path.resolve(this.resultsDir, 'index.json');
626
+ const previous = indexUpdateQueues.get(indexPath) ?? Promise.resolve();
627
+ const next = previous
628
+ .catch(() => undefined)
629
+ .then(() => this.writeIndexEntry(indexPath, taskId, taskType, timestamp, files, summary));
630
+ indexUpdateQueues.set(indexPath, next);
631
+ const settle = () => {
632
+ if (indexUpdateQueues.get(indexPath) === next)
633
+ indexUpdateQueues.delete(indexPath);
634
+ };
635
+ next.then(settle, settle);
636
+ return next;
637
+ }
638
+ async writeIndexEntry(indexPath, taskId, taskType, timestamp, files, summary) {
573
639
  let index;
574
640
  try {
575
641
  const content = await fs.readFile(indexPath, 'utf-8');
@@ -598,9 +664,13 @@ ${data.recommendations.length === 0 ? noRecommendations : data.recommendations.m
598
664
  if (index.results.length > 100) {
599
665
  index.results = index.results.slice(-100);
600
666
  }
601
- await fs.writeFile(indexPath, JSON.stringify(index, null, 2));
667
+ const tmpPath = `${indexPath}.${process.pid}.${randomBytes(4).toString('hex')}.tmp`;
668
+ await fs.writeFile(tmpPath, JSON.stringify(index, null, 2));
669
+ await fs.rename(tmpPath, indexPath);
602
670
  }
603
671
  }
672
+ /** Pending index.json updates, keyed by absolute index path (#1007). */
673
+ const indexUpdateQueues = new Map();
604
674
  // Factory function
605
675
  export function createResultSaver(baseDir) {
606
676
  return new ResultSaver(baseDir);
@@ -22,6 +22,7 @@ type CoverageAnalyzerService = import('../domains/coverage-analysis').CoverageAn
22
22
  type SecurityScannerService = import('../domains/security-compliance').SecurityScannerService;
23
23
  type KnowledgeGraphService = import('../domains/code-intelligence').KnowledgeGraphService;
24
24
  type QualityAnalyzerService = import('../domains/quality-assessment').QualityAnalyzerService;
25
+ type ProjectMetricsCollector = import('./handlers/handler-types').ProjectMetricsCollector;
25
26
  export interface TaskExecutorConfig {
26
27
  timeout: number;
27
28
  maxRetries: number;
@@ -106,6 +107,12 @@ export declare class DomainTaskExecutor implements TaskHandlerContext {
106
107
  */
107
108
  private resolveLLMRouter;
108
109
  getKnowledgeGraph(): KnowledgeGraphService;
110
+ /**
111
+ * #999: the code-intelligence coordinator, so the MCP index-code handler can
112
+ * run the same project-metric step as `aqe code index`. Loads the domain
113
+ * lazily; undefined when it is disabled or fails to load.
114
+ */
115
+ getCodeIntelligenceCoordinator(): Promise<ProjectMetricsCollector | undefined>;
109
116
  getQualityAnalyzer(): QualityAnalyzerService;
110
117
  private registerHandlers;
111
118
  /**
@@ -16,6 +16,7 @@ import { v4 as uuidv4 } from 'uuid';
16
16
  import { isCallerInputError, toErrorMessage } from '../shared/error-utils.js';
17
17
  import { InsufficientQualityEvidenceError } from '../domains/quality-assessment/quality-evidence.js';
18
18
  import { createResultSaver } from './result-saver.js';
19
+ import { getProjectStorePath } from '../kernel/project-root.js';
19
20
  import { createLogger } from '../logging/logger-factory.js';
20
21
  import { getClaudeModelForTier } from '../shared/llm/model-registry.js';
21
22
  // ADR-051: Agent Booster integration for Tier 0 tasks
@@ -54,9 +55,15 @@ function resolveQualityAnalyzerService(memory) {
54
55
  const factory = DomainServiceRegistry.resolve(ServiceKeys.QualityAnalyzerService);
55
56
  return factory(memory);
56
57
  }
57
- /** #996: structured details, only from the one error type that is known to carry them. */
58
+ /**
59
+ * #996: structured details, only from error types known to carry them.
60
+ * #1021 round 2b: a caller-input error is marked so learners do not record
61
+ * the caller's mistake as a component failure.
62
+ */
58
63
  function errorDetailsOf(error) {
59
- return error instanceof InsufficientQualityEvidenceError ? { ...error.toDetails() } : undefined;
64
+ if (error instanceof InsufficientQualityEvidenceError)
65
+ return { ...error.toDetails() };
66
+ return isCallerInputError(error) ? { callerError: true } : undefined;
60
67
  }
61
68
  // ============================================================================
62
69
  // ADR-051: Model Routing Support
@@ -141,7 +148,8 @@ export class DomainTaskExecutor {
141
148
  maxRetries: config?.maxRetries ?? 3,
142
149
  enableCaching: config?.enableCaching ?? true,
143
150
  saveResults: config?.saveResults ?? true,
144
- resultsDir: config?.resultsDir ?? '.agentic-qe',
151
+ // Review of #1026 N2: resolve the project store, not a cwd-relative one.
152
+ resultsDir: config?.resultsDir ?? getProjectStorePath(),
145
153
  defaultLanguage: config?.defaultLanguage ?? 'typescript',
146
154
  defaultFramework: config?.defaultFramework ?? 'vitest',
147
155
  };
@@ -240,6 +248,25 @@ export class DomainTaskExecutor {
240
248
  }
241
249
  return this.knowledgeGraph;
242
250
  }
251
+ /**
252
+ * #999: the code-intelligence coordinator, so the MCP index-code handler can
253
+ * run the same project-metric step as `aqe code index`. Loads the domain
254
+ * lazily; undefined when it is disabled or fails to load.
255
+ */
256
+ async getCodeIntelligenceCoordinator() {
257
+ try {
258
+ const api = this.kernel.getDomainAPIAsync
259
+ ? await this.kernel.getDomainAPIAsync('code-intelligence')
260
+ : this.kernel.getDomainAPI('code-intelligence');
261
+ return typeof api?.getCoordinator === 'function' ? api.getCoordinator() : undefined;
262
+ }
263
+ catch (error) {
264
+ logger.debug('code-intelligence coordinator unavailable for project metrics', {
265
+ error: error instanceof Error ? error.message : String(error),
266
+ });
267
+ return undefined;
268
+ }
269
+ }
243
270
  getQualityAnalyzer() {
244
271
  if (!this.qualityAnalyzer) {
245
272
  this.qualityAnalyzer = resolveQualityAnalyzerService(this.kernel.memory);
@@ -498,12 +525,14 @@ export class DomainTaskExecutor {
498
525
  await this.publishTaskFailed(task.id, errorMessage, domain, isCallerInputError(error));
499
526
  // ADR-051: Record failed outcome
500
527
  this.recordOutcome(task, routingTier, false, Date.now() - startTime).catch((e) => { logger.warn('recordOutcome failed', { error: e instanceof Error ? e.message : String(e), taskId: task.id }); });
528
+ const errorDetails = errorDetailsOf(error);
501
529
  return {
502
530
  taskId: task.id,
503
531
  success: false,
504
532
  error: errorMessage,
505
533
  duration: Date.now() - startTime,
506
534
  domain,
535
+ ...(errorDetails ? { errorDetails } : {}),
507
536
  };
508
537
  }
509
538
  }
@@ -9,6 +9,7 @@ import { KnowledgeGraphService, } from './services/knowledge-graph.js';
9
9
  import { SemanticAnalyzerService, } from './services/semantic-analyzer.js';
10
10
  import { toError } from '../../shared/error-utils.js';
11
11
  import { ImpactAnalyzerService, } from './services/impact-analyzer.js';
12
+ import { isMeasuredGapPayload } from '../../shared/events/domain-events.js';
12
13
  /**
13
14
  * Code Intelligence Domain Plugin
14
15
  * Provides knowledge graph, semantic search, and impact analysis capabilities
@@ -301,6 +302,9 @@ export class CodeIntelligencePlugin extends BaseDomainPlugin {
301
302
  );
302
303
  }
303
304
  async handleCoverageGap(event) {
305
+ // #1014: only a gap found in MEASURED coverage is acted on / learned from.
306
+ if (!isMeasuredGapPayload(event.payload))
307
+ return;
304
308
  // Coverage gap detected - update risk scores in knowledge graph
305
309
  const payload = event.payload;
306
310
  // Store coverage gap info for impact analysis
@@ -14,6 +14,7 @@
14
14
  */
15
15
  import { existsSync, readFileSync, readdirSync } from 'fs';
16
16
  import { join, extname } from 'path';
17
+ import { AQE_STATE_DIR } from '../../../../shared/aqe-managed-dirs.js';
17
18
  import { DEFAULT_METRIC_CONFIG, } from './interfaces.js';
18
19
  import { countLOC, checkLOCTools } from './loc-counter.js';
19
20
  import { countTests, checkTestRunners } from './test-counter.js';
@@ -211,6 +212,10 @@ export class MetricCollectorService {
211
212
  let totalTodos = 0;
212
213
  let totalConsole = 0;
213
214
  const patterns = this.getPatternsForLanguage(language);
215
+ // #999: same exclusions as LOC/test counting (.agentic-qe anywhere; .claude at
216
+ // the root or next to a nested .agentic-qe)
217
+ const excludeDirs = new Set(this.config.excludeDirs);
218
+ const rootExcludeDirs = new Set(this.config.excludeRootDirs ?? []);
214
219
  function walkDirectory(dirPath) {
215
220
  if (!existsSync(dirPath))
216
221
  return;
@@ -219,8 +224,10 @@ export class MetricCollectorService {
219
224
  const fullPath = join(dirPath, entry.name);
220
225
  if (entry.isDirectory()) {
221
226
  // Skip excluded directories
222
- const excludeDirs = ['node_modules', 'dist', 'coverage', 'build', '.git', 'vendor', 'target'];
223
- if (excludeDirs.includes(entry.name))
227
+ if (excludeDirs.has(entry.name))
228
+ continue;
229
+ if (rootExcludeDirs.has(entry.name) &&
230
+ (dirPath === projectPath || existsSync(join(dirPath, AQE_STATE_DIR))))
224
231
  continue;
225
232
  walkDirectory(fullPath);
226
233
  }
@@ -130,6 +130,15 @@ export interface MetricCollectorConfig {
130
130
  timeout: number;
131
131
  /** Directories to exclude from LOC counting */
132
132
  excludeDirs: string[];
133
+ /** File names (exact match) to exclude from LOC counting, e.g. lockfiles (#999) */
134
+ excludeFiles: string[];
135
+ /**
136
+ * Directories excluded directly under the project root, and nested only when
137
+ * they sit next to a `.agentic-qe/` (a nested `aqe init`): the assets init
138
+ * writes. Any other directory of the same name (e.g. a plugin's own
139
+ * `.claude/hooks` source) is still counted (#999 review N4 / round 2b).
140
+ */
141
+ excludeRootDirs: string[];
133
142
  /** File patterns to include for test counting */
134
143
  testPatterns: string[];
135
144
  /** Enable caching of metrics (default: true) */
@@ -137,6 +146,18 @@ export interface MetricCollectorConfig {
137
146
  /** Cache TTL in milliseconds (default: 300000 = 5 minutes) */
138
147
  cacheTTL: number;
139
148
  }
149
+ /**
150
+ * Generated dependency lockfiles. They are machine-written, often thousands of
151
+ * lines, and are not project code, so LOC counting skips them (#999: a 3-line
152
+ * project reported 1662 LOC from package-lock.json).
153
+ */
154
+ export declare const LOC_EXCLUDED_FILE_NAMES: readonly string[];
155
+ /**
156
+ * Init-written assets: excluded at the project root, and nested only next to a
157
+ * `.agentic-qe/` (a nested `aqe init`). `.agentic-qe` itself is in excludeDirs
158
+ * (state, never source, at any depth). #999 review N4 / round 2b.
159
+ */
160
+ export declare const PROJECT_ROOT_EXCLUDED_DIRS: readonly string[];
140
161
  /**
141
162
  * Default configuration values
142
163
  */
@@ -6,6 +6,27 @@
6
6
  *
7
7
  * @see docs/plans/AQE_V3_IMPROVEMENTS_PLAN.md - Phase 5
8
8
  */
9
+ /**
10
+ * Generated dependency lockfiles. They are machine-written, often thousands of
11
+ * lines, and are not project code, so LOC counting skips them (#999: a 3-line
12
+ * project reported 1662 LOC from package-lock.json).
13
+ */
14
+ export const LOC_EXCLUDED_FILE_NAMES = Object.freeze([
15
+ // JS/TS
16
+ 'package-lock.json', 'npm-shrinkwrap.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb', 'bun.lock',
17
+ 'deno.lock',
18
+ // Python
19
+ 'poetry.lock', 'Pipfile.lock', 'uv.lock', 'pdm.lock',
20
+ // Rust / Go / Ruby / PHP / Elixir / Dart / .NET / Swift / Nix / Gradle
21
+ 'Cargo.lock', 'go.sum', 'Gemfile.lock', 'composer.lock', 'mix.lock', 'pubspec.lock',
22
+ 'packages.lock.json', 'Package.resolved', 'flake.lock', 'gradle.lockfile',
23
+ ]);
24
+ /**
25
+ * Init-written assets: excluded at the project root, and nested only next to a
26
+ * `.agentic-qe/` (a nested `aqe init`). `.agentic-qe` itself is in excludeDirs
27
+ * (state, never source, at any depth). #999 review N4 / round 2b.
28
+ */
29
+ export const PROJECT_ROOT_EXCLUDED_DIRS = Object.freeze(['.claude']);
9
30
  /**
10
31
  * Default configuration values
11
32
  */
@@ -20,7 +41,11 @@ export const DEFAULT_METRIC_CONFIG = {
20
41
  'target', '.gradle', 'vendor', '.bundle',
21
42
  // General
22
43
  '.git', '.svn', '.hg',
44
+ // AQE runtime state: never source, at any depth (#999)
45
+ '.agentic-qe',
23
46
  ],
47
+ excludeFiles: [...LOC_EXCLUDED_FILE_NAMES],
48
+ excludeRootDirs: [...PROJECT_ROOT_EXCLUDED_DIRS],
24
49
  testPatterns: ['**/*.test.ts', '**/*.spec.ts', '**/*.test.js', '**/*.spec.js'],
25
50
  enableCache: true,
26
51
  cacheTTL: 300000,
@@ -25,4 +25,16 @@ export declare function countLOC(projectPath: string, config?: Partial<MetricCol
25
25
  * Check which LOC counting tools are available
26
26
  */
27
27
  export declare function checkLOCTools(): ToolAvailability[];
28
+ /**
29
+ * cloc `--not-match-f` regex matching any of `names` exactly (basename), or
30
+ * null when there is nothing to exclude.
31
+ */
32
+ export declare function excludedFileNamesRegex(names: readonly string[] | undefined): string | null;
33
+ /**
34
+ * cloc `--not-match-d` regex (with --fullpath) matching the given
35
+ * project-relative directories ('/'-separated) and everything below them, but
36
+ * no other directory of the same name (#999 review N4 / round 2b). Either
37
+ * path separator matches. Null when there are none.
38
+ */
39
+ export declare function rootAnchoredDirsRegex(projectPath: string, relDirs: readonly string[] | undefined): string | null;
28
40
  //# sourceMappingURL=loc-counter.d.ts.map