agentic-qe 3.15.5 → 3.15.7

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 (584) 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 +262 -0
  6. package/README.md +2 -0
  7. package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
  8. package/assets/skills/qe-court/evals/qe-court.yaml +3 -2
  9. package/assets/skills/qe-quality-assessment/schemas/output.json +12 -2
  10. package/assets/skills/skills-manifest.json +1 -1
  11. package/dist/cli/bundle.js +8 -6
  12. package/dist/cli/chunks/adapter-PEOUNYXJ.js +2 -0
  13. package/dist/cli/chunks/{agent-booster-wasm-CCTTGCQS.js → agent-booster-wasm-OS5G7KMQ.js} +2 -2
  14. package/dist/cli/chunks/{agent-handler-DHYUF3NX.js → agent-handler-PI4I7PME.js} +2 -2
  15. package/dist/cli/chunks/{agent-memory-branch-642W7CYX.js → agent-memory-branch-J7TXHX4U.js} +2 -2
  16. package/dist/cli/chunks/aqe-learning-engine-DHKZI5RX.js +2 -0
  17. package/dist/cli/chunks/{arena-MUCC7UUN.js → arena-FXESDCFR.js} +4 -4
  18. package/dist/cli/chunks/{arena-NW2JVAFY.js → arena-OWUGXKNT.js} +2 -2
  19. package/dist/cli/chunks/{audit-VKQTZJAA.js → audit-EPAWLYIZ.js} +3 -3
  20. package/dist/cli/chunks/base-QZWK3D5P.js +2 -0
  21. package/dist/cli/chunks/{better-sqlite3-7ZUFVWLQ.js → better-sqlite3-IYVR5EQY.js} +2 -2
  22. package/dist/cli/chunks/{brain-handler-7LKAWSBI.js → brain-handler-3W2E6TC6.js} +3 -3
  23. package/dist/cli/chunks/{branch-enumerator-HUNXJKM4.js → branch-enumerator-HU7VACJ4.js} +2 -2
  24. package/dist/cli/chunks/{browser-ZSZEYUDP.js → browser-72XOR6E2.js} +2 -2
  25. package/dist/cli/chunks/browser-workflow-ITPX72RX.js +2 -0
  26. package/dist/cli/chunks/{chunk-PVAE65B4.js → chunk-2423JAA5.js} +1 -1
  27. package/dist/cli/chunks/{chunk-VLOIEVER.js → chunk-24CENUT4.js} +3 -3
  28. package/dist/cli/chunks/chunk-2AYBYXOA.js +4 -0
  29. package/dist/cli/chunks/{chunk-FWYJ6UDX.js → chunk-2E3XWKEU.js} +2 -2
  30. package/dist/cli/chunks/{chunk-L375O3CZ.js → chunk-2RJYA6WK.js} +2 -2
  31. package/dist/cli/chunks/{chunk-SDWMLT7B.js → chunk-2YVJ5OUL.js} +5 -5
  32. package/dist/cli/chunks/{chunk-WN55MNZ2.js → chunk-34JLY3U6.js} +2 -2
  33. package/dist/cli/chunks/{chunk-6ZIDZ4TJ.js → chunk-3JD2USUH.js} +2 -2
  34. package/dist/cli/chunks/{chunk-5BOZCMXZ.js → chunk-3RM46XFP.js} +1 -1
  35. package/dist/cli/chunks/{chunk-UE22ODHN.js → chunk-44DPYNPE.js} +1 -1
  36. package/dist/cli/chunks/{chunk-AUZXRFOX.js → chunk-4DIZ5BT6.js} +2 -2
  37. package/dist/cli/chunks/{chunk-RUSLEOMC.js → chunk-4G2VNW4C.js} +2 -2
  38. package/dist/cli/chunks/{chunk-VML4SG3X.js → chunk-56ZKQYZY.js} +3 -3
  39. package/dist/cli/chunks/{chunk-FHUJCVT3.js → chunk-5KCBX225.js} +2 -2
  40. package/dist/cli/chunks/chunk-5KS7HA37.js +2 -0
  41. package/dist/cli/chunks/{chunk-IJ2EXSMO.js → chunk-5PBRBS7D.js} +2 -2
  42. package/dist/cli/chunks/chunk-5Q22XPTH.js +2 -0
  43. package/dist/cli/chunks/{chunk-PDPEMBFV.js → chunk-634D2ENF.js} +2 -2
  44. package/dist/cli/chunks/{chunk-BYXNHGQC.js → chunk-6AYRAOCA.js} +2 -2
  45. package/dist/cli/chunks/{chunk-ORTBRO7F.js → chunk-6BO3WCK7.js} +2 -2
  46. package/dist/cli/chunks/{chunk-6LG5UEQE.js → chunk-6FEQ73BF.js} +2 -2
  47. package/dist/cli/chunks/{chunk-JYY7AYGA.js → chunk-6JT73S5B.js} +1 -1
  48. package/dist/cli/chunks/{chunk-LNO5IWGH.js → chunk-6OS7HREG.js} +1 -1
  49. package/dist/cli/chunks/{chunk-XNEEYXR2.js → chunk-6PKCQXEW.js} +2 -2
  50. package/dist/cli/chunks/{chunk-KHCALIFP.js → chunk-7EX4DEQR.js} +2 -2
  51. package/dist/cli/chunks/chunk-7UCVYYWL.js +3 -0
  52. package/dist/cli/chunks/chunk-AAA4SHEG.js +2 -0
  53. package/dist/cli/chunks/{chunk-DTJODGCE.js → chunk-AXO7OOOA.js} +2 -2
  54. package/dist/cli/chunks/{chunk-ZT3GUYM5.js → chunk-B7M323VL.js} +2 -2
  55. package/dist/cli/chunks/{chunk-L6SVCNXK.js → chunk-BB7OLQKO.js} +1 -1
  56. package/dist/cli/chunks/{chunk-6UYN5PHA.js → chunk-BTIBXGVQ.js} +4 -4
  57. package/dist/cli/chunks/chunk-BTYKGVJ5.js +2 -0
  58. package/dist/cli/chunks/{chunk-6JFGB2JB.js → chunk-C2CUPJGR.js} +1 -1
  59. package/dist/cli/chunks/{chunk-EAYQCBXL.js → chunk-C2MDBBFF.js} +3 -3
  60. package/dist/cli/chunks/{chunk-3AYYGR6W.js → chunk-CG5DZCOZ.js} +1 -1
  61. package/dist/cli/chunks/chunk-CIFWOMNX.js +2 -0
  62. package/dist/cli/chunks/{chunk-Y2WMPEUP.js → chunk-CWPRU7ZI.js} +2 -2
  63. package/dist/cli/chunks/{chunk-XNHB6TLC.js → chunk-CXTJ47QS.js} +2 -2
  64. package/dist/cli/chunks/{chunk-4PT5KNXL.js → chunk-DCJW2DPL.js} +4 -4
  65. package/dist/cli/chunks/{chunk-VCKDVOPD.js → chunk-DGK6GQMO.js} +2 -2
  66. package/dist/cli/chunks/{chunk-47GEI2LT.js → chunk-DVPGBDBP.js} +3 -3
  67. package/dist/cli/chunks/chunk-EB2PP6X2.js +2 -0
  68. package/dist/cli/chunks/{chunk-CXOXUBYU.js → chunk-ECSLJJOQ.js} +1 -1
  69. package/dist/cli/chunks/{chunk-A2WOQO2N.js → chunk-ED32XJ5R.js} +2 -2
  70. package/dist/cli/chunks/{chunk-35MDATQE.js → chunk-EDU72RTW.js} +1 -1
  71. package/dist/cli/chunks/{chunk-PCCIZFD7.js → chunk-EL75G2A3.js} +1 -1
  72. package/dist/cli/chunks/{chunk-4UXPDV7E.js → chunk-EV2BYY6T.js} +1 -1
  73. package/dist/cli/chunks/{chunk-3YASZPLO.js → chunk-F62EKVVC.js} +2 -2
  74. package/dist/cli/chunks/{chunk-AQN5EDBM.js → chunk-FTTFJ7SJ.js} +1 -1
  75. package/dist/cli/chunks/chunk-FVBFASOD.js +2 -0
  76. package/dist/cli/chunks/{chunk-QXY3IRBW.js → chunk-G762PEFO.js} +26 -26
  77. package/dist/cli/chunks/{chunk-A5J4XJS6.js → chunk-G7YTZTGU.js} +1 -1
  78. package/dist/cli/chunks/{chunk-YINFES3E.js → chunk-GY2SAIXP.js} +2 -2
  79. package/dist/cli/chunks/chunk-H4WHDFB5.js +4 -0
  80. package/dist/cli/chunks/chunk-HLZATDD2.js +2 -0
  81. package/dist/cli/chunks/{chunk-7EZLOC4K.js → chunk-HPG7354V.js} +2 -2
  82. package/dist/cli/chunks/{chunk-HLFDC4SF.js → chunk-HSDOOFV7.js} +1 -1
  83. package/dist/cli/chunks/{chunk-MQGEZA2A.js → chunk-HTWIGQL4.js} +2 -2
  84. package/dist/cli/chunks/{chunk-HBYQYGXP.js → chunk-HXBAQKMH.js} +2 -2
  85. package/dist/cli/chunks/chunk-HZFT3P5B.js +2 -0
  86. package/dist/cli/chunks/{chunk-MS3Z2CP5.js → chunk-I7H4IP7T.js} +2 -2
  87. package/dist/cli/chunks/{chunk-IHFUEPZH.js → chunk-IARSGAG7.js} +2 -2
  88. package/dist/cli/chunks/{chunk-ZTC5FBL6.js → chunk-IC2WSSD5.js} +8 -8
  89. package/dist/cli/chunks/{chunk-GKPRECLL.js → chunk-ICPALF4Q.js} +2 -2
  90. package/dist/cli/chunks/{chunk-FQKEZVN6.js → chunk-IWQQIXHO.js} +2 -2
  91. package/dist/cli/chunks/{chunk-DWZI3IVB.js → chunk-IYQ7XNE5.js} +2 -2
  92. package/dist/cli/chunks/{chunk-ZLBBX24Q.js → chunk-J26GADQE.js} +418 -412
  93. package/dist/cli/chunks/{chunk-NMJVG22Z.js → chunk-J43DV3ME.js} +1 -1
  94. package/dist/cli/chunks/{chunk-EUEHBERE.js → chunk-JFPXCQNP.js} +1 -1
  95. package/dist/cli/chunks/{chunk-3YNP33GB.js → chunk-JK6B3ULP.js} +2 -2
  96. package/dist/cli/chunks/{chunk-FBEXG4HD.js → chunk-JPHDMHFG.js} +2 -2
  97. package/dist/cli/chunks/{chunk-U6OVPMQX.js → chunk-JVYPXW6Y.js} +2 -2
  98. package/dist/cli/chunks/{chunk-X52TMBHU.js → chunk-JY4AIEZ7.js} +1 -1
  99. package/dist/cli/chunks/{chunk-MNQ36MAF.js → chunk-JY4WLN3K.js} +2 -2
  100. package/dist/cli/chunks/{chunk-E4VIVMDL.js → chunk-JYXOFN3E.js} +2 -2
  101. package/dist/cli/chunks/{chunk-CR2JUANW.js → chunk-K7W55B7Q.js} +3 -3
  102. package/dist/cli/chunks/{chunk-WLIYWBQR.js → chunk-KPOPBUUJ.js} +2 -2
  103. package/dist/cli/chunks/{chunk-DXVZBJE4.js → chunk-LDXQRNTT.js} +1 -1
  104. package/dist/cli/chunks/{chunk-W3ZGNNDV.js → chunk-LDZWIV2O.js} +1 -1
  105. package/dist/cli/chunks/{chunk-VRJPH3LG.js → chunk-LGBN7TKC.js} +2 -2
  106. package/dist/cli/chunks/{chunk-RUJLVJDE.js → chunk-LMEU64TR.js} +2 -2
  107. package/dist/cli/chunks/{chunk-JI77KJP7.js → chunk-LP4AS2E4.js} +1 -1
  108. package/dist/cli/chunks/{chunk-QPV3OKX2.js → chunk-LQOVA4YX.js} +2 -2
  109. package/dist/cli/chunks/{chunk-NLDFNAOS.js → chunk-LVEX4GID.js} +2 -2
  110. package/dist/cli/chunks/{chunk-U4TV75AC.js → chunk-M63QB466.js} +2 -2
  111. package/dist/cli/chunks/{chunk-SAPIRK2G.js → chunk-MDC4G323.js} +1 -1
  112. package/dist/cli/chunks/chunk-MHZPC4HJ.js +2 -0
  113. package/dist/cli/chunks/{chunk-WR64BKUE.js → chunk-MJJC6HUK.js} +1 -1
  114. package/dist/cli/chunks/{chunk-Y7GPLOXB.js → chunk-MKFQNCXI.js} +2 -2
  115. package/dist/cli/chunks/{chunk-BZFT4QDQ.js → chunk-MMXG3LL6.js} +2 -2
  116. package/dist/cli/chunks/{chunk-HGBJ2QQ4.js → chunk-MNCF643K.js} +2 -2
  117. package/dist/cli/chunks/{chunk-XIE7OHML.js → chunk-MNZFEIE5.js} +1 -1
  118. package/dist/cli/chunks/{chunk-FE3AIZI6.js → chunk-MQ6OF6DU.js} +1 -1
  119. package/dist/cli/chunks/{chunk-3QD7U3FY.js → chunk-MRHM4COP.js} +2 -2
  120. package/dist/cli/chunks/{chunk-663ZFPUL.js → chunk-N4PMPSJJ.js} +2 -2
  121. package/dist/cli/chunks/{chunk-DL5JENWD.js → chunk-NZQPP533.js} +3 -3
  122. package/dist/cli/chunks/{chunk-4XSCZVON.js → chunk-OA4GR3EZ.js} +2 -2
  123. package/dist/cli/chunks/{chunk-IJOFZBXD.js → chunk-OJEZNLB6.js} +2 -2
  124. package/dist/cli/chunks/{chunk-OU4ZAWCC.js → chunk-ONVALAZN.js} +2 -2
  125. package/dist/cli/chunks/{chunk-A337MD3C.js → chunk-PEKDSJBC.js} +2 -2
  126. package/dist/cli/chunks/{chunk-D3G2NN7F.js → chunk-PG64YV6C.js} +66 -65
  127. package/dist/cli/chunks/{chunk-VYDNLQJN.js → chunk-PQV7E7XH.js} +2 -2
  128. package/dist/cli/chunks/chunk-PTK66HEY.js +2 -0
  129. package/dist/cli/chunks/{chunk-LRASYSGV.js → chunk-PUECC4WI.js} +2 -2
  130. package/dist/cli/chunks/{chunk-3OAQPN2N.js → chunk-PXZKPUW6.js} +2 -2
  131. package/dist/cli/chunks/chunk-PYHYOKYT.js +2 -0
  132. package/dist/cli/chunks/{chunk-WT3JC4A6.js → chunk-PZG3542B.js} +2 -2
  133. package/dist/cli/chunks/{chunk-RMJ7PJOS.js → chunk-Q2T5FXEA.js} +2 -2
  134. package/dist/cli/chunks/chunk-QJE6ZW2X.js +6 -0
  135. package/dist/cli/chunks/{chunk-2XYTS2WY.js → chunk-QNQSM2OG.js} +2 -2
  136. package/dist/cli/chunks/{chunk-EVCFUYYK.js → chunk-QQT6QENQ.js} +9 -9
  137. package/dist/cli/chunks/{chunk-VH3EB6ZG.js → chunk-QVG4ZDXX.js} +3 -3
  138. package/dist/cli/chunks/chunk-QWLTHFZW.js +16 -0
  139. package/dist/cli/chunks/{chunk-GGDKOJVF.js → chunk-RCYLCA7E.js} +10 -6
  140. package/dist/cli/chunks/{chunk-BMWAWZAN.js → chunk-REEIFA6A.js} +2 -2
  141. package/dist/cli/chunks/{chunk-Y2E3IJ53.js → chunk-RNYX4CPI.js} +2 -2
  142. package/dist/cli/chunks/{chunk-BY646JOM.js → chunk-RORZ5O5Z.js} +2 -2
  143. package/dist/cli/chunks/{chunk-JNMUVBAJ.js → chunk-RRPYWBFX.js} +2 -2
  144. package/dist/cli/chunks/{chunk-XQRE2HWM.js → chunk-RXAFLK34.js} +2 -2
  145. package/dist/cli/chunks/{chunk-UXZEVIFX.js → chunk-SQHLC6I5.js} +1 -1
  146. package/dist/cli/chunks/{chunk-DPV33C77.js → chunk-SSP2B2WR.js} +2 -2
  147. package/dist/cli/chunks/chunk-SX2YSHE7.js +115 -0
  148. package/dist/cli/chunks/chunk-T3ZDVU6F.js +5 -0
  149. package/dist/cli/chunks/{chunk-JCC7QEKZ.js → chunk-T6W5APYP.js} +1 -1
  150. package/dist/cli/chunks/{chunk-DEGWCUMY.js → chunk-TU4LIIOP.js} +2 -2
  151. package/dist/cli/chunks/{chunk-CQMHDAJS.js → chunk-UBYCR3O4.js} +2 -2
  152. package/dist/cli/chunks/{chunk-PHP4UJYP.js → chunk-UCLN6AME.js} +1 -1
  153. package/dist/cli/chunks/{chunk-HIUNCO2W.js → chunk-UIYKR2SA.js} +2 -2
  154. package/dist/cli/chunks/{chunk-ONCH5AXU.js → chunk-UUHIEM2M.js} +18 -18
  155. package/dist/cli/chunks/{chunk-CFPR24YK.js → chunk-UY3REQOK.js} +2 -2
  156. package/dist/cli/chunks/{chunk-FNAYDITO.js → chunk-V2SAEMZY.js} +1 -1
  157. package/dist/cli/chunks/{chunk-JANLATHN.js → chunk-V5NGBQAQ.js} +2 -2
  158. package/dist/cli/chunks/{chunk-644DFAGS.js → chunk-VCA6YYII.js} +1 -1
  159. package/dist/cli/chunks/chunk-VJRZFWR5.js +2 -0
  160. package/dist/cli/chunks/{chunk-7BIYJRQJ.js → chunk-VKPKYMCT.js} +2 -2
  161. package/dist/cli/chunks/{chunk-2KWI3MT3.js → chunk-VNW5Q2CX.js} +2 -2
  162. package/dist/cli/chunks/chunk-VUFRTGML.js +3 -0
  163. package/dist/cli/chunks/{chunk-PHAQWAEV.js → chunk-W4X2VTIY.js} +2 -2
  164. package/dist/cli/chunks/{chunk-PURHGLEC.js → chunk-WTLIEBDH.js} +1 -1
  165. package/dist/cli/chunks/{chunk-3SH23PS3.js → chunk-WUV5RZUI.js} +2 -2
  166. package/dist/cli/chunks/{chunk-OGYWWZU7.js → chunk-WXI2STKQ.js} +2 -2
  167. package/dist/cli/chunks/{chunk-OW42F2TX.js → chunk-XEWXYGJI.js} +2 -2
  168. package/dist/cli/chunks/{chunk-DPYDUKVZ.js → chunk-XNSQZ3O7.js} +2 -2
  169. package/dist/cli/chunks/{chunk-B2UHTA4Q.js → chunk-XTJMY3KS.js} +1 -1
  170. package/dist/cli/chunks/{chunk-NF6AFIAX.js → chunk-XXAVQACL.js} +1 -1
  171. package/dist/cli/chunks/{chunk-V7GNUVYI.js → chunk-Y4SAWE45.js} +1 -1
  172. package/dist/cli/chunks/{chunk-WC47GICZ.js → chunk-Y6A46M3B.js} +2 -2
  173. package/dist/cli/chunks/{chunk-3DTEQHFB.js → chunk-YDZJWDR6.js} +3 -3
  174. package/dist/cli/chunks/{chunk-KJ3KBP24.js → chunk-YFOBQSOW.js} +2 -2
  175. package/dist/cli/chunks/{chunk-MB4VFAJC.js → chunk-YK3NOC2R.js} +2 -2
  176. package/dist/cli/chunks/{chunk-GRIPCYW5.js → chunk-YUC7RJGR.js} +1 -1
  177. package/dist/cli/chunks/{chunk-HPLMX62I.js → chunk-Z3VJLWRR.js} +2 -2
  178. package/dist/cli/chunks/{chunk-EOR3RECZ.js → chunk-ZLVQSEZK.js} +2 -2
  179. package/dist/cli/chunks/{chunk-4AZP7ZCW.js → chunk-ZRLNACPY.js} +2 -2
  180. package/dist/cli/chunks/{chunk-OQDC7GCM.js → chunk-ZTMZFF25.js} +2 -2
  181. package/dist/cli/chunks/chunk-ZUMDDMDE.js +3 -0
  182. package/dist/cli/chunks/ci-5HEXJZ2C.js +81 -0
  183. package/dist/cli/chunks/{ci-config-XDDZOOEI.js → ci-config-WU4NPDAM.js} +2 -2
  184. package/dist/cli/chunks/{ci-output-7ZUQI4U6.js → ci-output-BJQVXX5E.js} +2 -2
  185. package/dist/cli/chunks/{circuit-breaker-ALXKCFAL.js → circuit-breaker-3BMGTQCB.js} +2 -2
  186. package/dist/cli/chunks/{claude-flow-setup-RL7K2NI2.js → claude-flow-setup-GVDGJWMU.js} +2 -2
  187. package/dist/cli/chunks/client-S7GNYTZ5.js +2 -0
  188. package/dist/cli/chunks/{cline-installer-2Z2QQKC3.js → cline-installer-V4MRGWVA.js} +2 -2
  189. package/dist/cli/chunks/{code-QSZTDINQ.js → code-A3TGQPEO.js} +3 -3
  190. package/dist/cli/chunks/{code-index-extractor-5CGR5D3Y.js → code-index-extractor-YJQSYWD3.js} +2 -2
  191. package/dist/cli/chunks/{codex-installer-7JLSEDE5.js → codex-installer-7N7UQPAH.js} +2 -2
  192. package/dist/cli/chunks/{completions-U4NBSXEB.js → completions-PPGVYLZS.js} +2 -2
  193. package/dist/cli/chunks/{complexity-analyzer-WYZD2YSY.js → complexity-analyzer-XZTFLYV5.js} +2 -2
  194. package/dist/cli/chunks/{continuedev-installer-UPXINJFT.js → continuedev-installer-Z5I57RAH.js} +2 -2
  195. package/dist/cli/chunks/{copilot-installer-WIVYQRIF.js → copilot-installer-F5YZ6BHB.js} +2 -2
  196. package/dist/cli/chunks/core-handlers-CUEPOQIO.js +2 -0
  197. package/dist/cli/chunks/{cost-tracker-RIN4JDDM.js → cost-tracker-GO33ZQAP.js} +2 -2
  198. package/dist/cli/chunks/coverage-GSHKLY74.js +49 -0
  199. package/dist/cli/chunks/cross-domain-router-CXN5QFEV.js +2 -0
  200. package/dist/cli/chunks/{cursor-installer-POM7NGCC.js → cursor-installer-JJ7IVJZB.js} +2 -2
  201. package/dist/cli/chunks/daemon-3DQCKRYO.js +10 -0
  202. package/dist/cli/chunks/{daemon-HFGKQ6LB.js → daemon-IRL7QRNE.js} +5 -5
  203. package/dist/cli/chunks/{dag-attention-scheduler-HJXM7Q5P.js → dag-attention-scheduler-ORXSUHPA.js} +2 -2
  204. package/dist/cli/chunks/{detect-XKQGLZYN.js → detect-RHU62KRI.js} +2 -2
  205. package/dist/cli/chunks/{dist-node-SSKB53QL.js → dist-node-3VKV4Z6C.js} +2 -2
  206. package/dist/cli/chunks/{domain-handler-6BNDHATU.js → domain-handler-SFIML4FK.js} +2 -2
  207. package/dist/cli/chunks/{domain-plugins-DOX54YE3.js → domain-plugins-CJ4FA3OC.js} +2 -2
  208. package/dist/cli/chunks/{domain-transfer-FW4ZX3Z7.js → domain-transfer-BCRKPCAA.js} +2 -2
  209. package/dist/cli/chunks/dream-5AUNJW24.js +2 -0
  210. package/dist/cli/chunks/embed-and-insert-pattern-VL3HFLPV.js +3 -0
  211. package/dist/cli/chunks/{eval-K7E4XXBS.js → eval-GGKRI4P5.js} +2 -2
  212. package/dist/cli/chunks/experience-capture-middleware-F72TIRQY.js +40 -0
  213. package/dist/cli/chunks/{fast-paths-5JXXTYAG.js → fast-paths-7KOOF3MA.js} +2 -2
  214. package/dist/cli/chunks/{feature-flags-2CR3CO23.js → feature-flags-FNHBTHBH.js} +2 -2
  215. package/dist/cli/chunks/{feature-flags-RB72LHOJ.js → feature-flags-IOZEWWFU.js} +2 -2
  216. package/dist/cli/chunks/file-discovery-AYWF357I.js +2 -0
  217. package/dist/cli/chunks/{fleet-SDU7QEOA.js → fleet-QX5KXTRC.js} +3 -3
  218. package/dist/cli/chunks/{gnn-wrapper-AWCFODUV.js → gnn-wrapper-OH2DOQP7.js} +2 -2
  219. package/dist/cli/chunks/{heartbeat-handler-A4PJ3NFP.js → heartbeat-handler-W67NXTNE.js} +4 -4
  220. package/dist/cli/chunks/heartbeat-scheduler-7ZIDVXIP.js +2 -0
  221. package/dist/cli/chunks/hnsw-adapter-P77OC7FM.js +2 -0
  222. package/dist/cli/chunks/hnsw-index-3LBOTQAW.js +2 -0
  223. package/dist/cli/chunks/{hnsw-legacy-bridge-KRS7SSFM.js → hnsw-legacy-bridge-6MLLOGOE.js} +2 -2
  224. package/dist/cli/chunks/{hnswlib-node-OGGCPKPO.js → hnswlib-node-4UDISJ3G.js} +2 -2
  225. package/dist/cli/chunks/{hooks-XNRNMUBW.js → hooks-NOQJWQ4P.js} +43 -43
  226. package/dist/cli/chunks/hybrid-backend-LOM54PDD.js +2 -0
  227. package/dist/cli/chunks/{hypergraph-engine-X35LTXYT.js → hypergraph-engine-2OD3APVP.js} +2 -2
  228. package/dist/cli/chunks/{hypergraph-handler-M6THKAG6.js → hypergraph-handler-5AZGMBUM.js} +3 -3
  229. package/dist/cli/chunks/impact-analyzer-QSDJVBPS.js +2 -0
  230. package/dist/cli/chunks/init-guard-SMGJ45PW.js +2 -0
  231. package/dist/cli/chunks/init-handler-5T4MP2NM.js +88 -0
  232. package/dist/cli/chunks/init-wizard-MK2325JJ.js +2 -0
  233. package/dist/cli/chunks/kernel-2NJQQ2KT.js +2 -0
  234. package/dist/cli/chunks/{kilocode-installer-TEPR2ZJD.js → kilocode-installer-RLZYLVQJ.js} +2 -2
  235. package/dist/cli/chunks/{kiro-installer-RUKHGDEE.js → kiro-installer-LFZOC7VD.js} +2 -2
  236. package/dist/cli/chunks/knowledge-graph-SDISHO62.js +2 -0
  237. package/dist/cli/chunks/learning-XRPGLUWR.js +122 -0
  238. package/dist/cli/chunks/{llm-router-7GECMDCP.js → llm-router-OMK5HYPH.js} +4 -4
  239. package/dist/cli/chunks/llm-router-service-YTCMRBAN.js +2 -0
  240. package/dist/cli/chunks/{load-NTJ4Y4ZR.js → load-XADC7KCU.js} +2 -2
  241. package/dist/cli/chunks/load-test-RPKHLBCC.js +2 -0
  242. package/dist/cli/chunks/{mcp-4335GTTG.js → mcp-PIBKSSVU.js} +2 -2
  243. package/dist/cli/chunks/{memory-HYC4M4XS.js → memory-AP7EZERS.js} +5 -5
  244. package/dist/cli/chunks/memory-backend-BZXFO4JZ.js +2 -0
  245. package/dist/cli/chunks/memory-handlers-MOFDNB6E.js +2 -0
  246. package/dist/cli/chunks/{multi-model-executor-T7FYKM6T.js → multi-model-executor-7JJ2FZ33.js} +2 -2
  247. package/dist/cli/chunks/{opencode-installer-3USXVT5M.js → opencode-installer-ZZZ6EBYJ.js} +2 -2
  248. package/dist/cli/chunks/orchestrator-2H2YKSGJ.js +452 -0
  249. package/dist/cli/chunks/pattern-null-store-4PRPIOR6.js +2 -0
  250. package/dist/cli/chunks/{pattern-usage-recorder-CMZLPX2K.js → pattern-usage-recorder-7MJJWC2Z.js} +2 -2
  251. package/dist/cli/chunks/{pipeline-BTRZOVSL.js → pipeline-LIE5BWQY.js} +2 -2
  252. package/dist/cli/chunks/{platform-2MCRKC25.js → platform-SMYUNLGX.js} +2 -2
  253. package/dist/cli/chunks/plugin-LJDIXQNT.js +27 -0
  254. package/dist/cli/chunks/{prime-radiant-advanced-wasm-TXFEMBP6.js → prime-radiant-advanced-wasm-RIDNE5D2.js} +2 -2
  255. package/dist/cli/chunks/project-root-NBIQF63D.js +2 -0
  256. package/dist/cli/chunks/protocol-executor-BRPGIYWQ.js +2 -0
  257. package/dist/cli/chunks/{protocol-handler-DZ26OYVZ.js → protocol-handler-YVM66DLI.js} +2 -2
  258. package/dist/cli/chunks/{prove-QWONEJWX.js → prove-ZBDT52GD.js} +2 -2
  259. package/dist/cli/chunks/qe-reasoning-bank-GDZACWKW.js +2 -0
  260. package/dist/cli/chunks/{quality-WFH54FY7.js → quality-DUKXGDDO.js} +2 -2
  261. package/dist/cli/chunks/{quality-gate-ONJB7XU7.js → quality-gate-SM3RXF4V.js} +3 -3
  262. package/dist/cli/chunks/queen-coordinator-LDKLBPD5.js +2 -0
  263. package/dist/cli/chunks/real-embeddings-4QLQZDB5.js +2 -0
  264. package/dist/cli/chunks/{ref-validation-HW5Y55ZC.js → ref-validation-M3EO32YQ.js} +2 -2
  265. package/dist/cli/chunks/{roocode-installer-5OABDNZT.js → roocode-installer-S6Q5OLV5.js} +2 -2
  266. package/dist/cli/chunks/router-H5YSIRH2.js +2 -0
  267. package/dist/cli/chunks/routing-feedback-5R36TJDH.js +2 -0
  268. package/dist/cli/chunks/{routing-handler-CVHVOQTC.js → routing-handler-55FMUACP.js} +2 -2
  269. package/dist/cli/chunks/{ruvector-commands-KKDKFGIQ.js → ruvector-commands-QATKAAPK.js} +2 -2
  270. package/dist/cli/chunks/rvf-dual-writer-TT2DBQQQ.js +2 -0
  271. package/dist/cli/chunks/rvf-migration-adapter-BCLFJKSK.js +2 -0
  272. package/dist/cli/chunks/rvf-migration-coordinator-RFXFU6JD.js +2 -0
  273. package/dist/cli/chunks/rvf-native-adapter-UXI66OQJ.js +2 -0
  274. package/dist/cli/chunks/{rvf-store-integrity-UGUXKIFX.js → rvf-store-integrity-PKDVXQAW.js} +2 -2
  275. package/dist/cli/chunks/safe-db-MSTD2GDH.js +2 -0
  276. package/dist/cli/chunks/schedule-KST6KIFD.js +2 -0
  277. package/dist/cli/chunks/scheduler-FTQS6YK3.js +2 -0
  278. package/dist/cli/chunks/security-CMRB6WA3.js +18 -0
  279. package/dist/cli/chunks/shared-rvf-adapter-YHLLNFHF.js +2 -0
  280. package/dist/cli/chunks/{shared-rvf-dual-writer-ZSHYG5IA.js → shared-rvf-dual-writer-4BGDVPQ7.js} +2 -2
  281. package/dist/cli/chunks/sqlite-persistence-ZX5QFDMR.js +2 -0
  282. package/dist/cli/chunks/{standalone-memory-MHZEEYMK.js → standalone-memory-LUHKQAGM.js} +2 -2
  283. package/dist/cli/chunks/{status-handler-JKXPJ22K.js → status-handler-S6S5PNR7.js} +2 -2
  284. package/dist/cli/chunks/{structural-health-J4RKCYWF.js → structural-health-PQ7NZAJ4.js} +2 -2
  285. package/dist/cli/chunks/{sync-PDPORHVN.js → sync-Q6KRQXU6.js} +2 -2
  286. package/dist/cli/chunks/sync-S744AEJC.js +2 -0
  287. package/dist/cli/chunks/{task-handler-VERADM44.js → task-handler-GAMGEHUW.js} +2 -2
  288. package/dist/cli/chunks/{task-handlers-4RUCWUR2.js → task-handlers-6CRDEELN.js} +3 -3
  289. package/dist/cli/chunks/{test-DMBJFQNL.js → test-FNH67DBK.js} +12 -12
  290. package/dist/cli/chunks/{test-scheduling-LUPTVGCD.js → test-scheduling-NZA5SHK6.js} +3 -3
  291. package/dist/cli/chunks/token-bootstrap-CXKG55JD.js +2 -0
  292. package/dist/cli/chunks/{token-usage-VOA34IKM.js → token-usage-M7WWEDJX.js} +2 -2
  293. package/dist/cli/chunks/{transformers-GU4TYAN5.js → transformers-2IFMCK6A.js} +2 -2
  294. package/dist/cli/chunks/{tree-sitter-wasm-parser-MZPXAH7C.js → tree-sitter-wasm-parser-NMNA6RJC.js} +2 -2
  295. package/dist/cli/chunks/{types-K4FLXR2K.js → types-N7FWTOLD.js} +2 -2
  296. package/dist/cli/chunks/unified-memory-2Z2F446J.js +2 -0
  297. package/dist/cli/chunks/unified-memory-hnsw-A4EWYPJQ.js +2 -0
  298. package/dist/cli/chunks/unified-persistence-Z6N6JZFA.js +2 -0
  299. package/dist/cli/chunks/{upgrade-M3ATDRMK.js → upgrade-KDB5RGL7.js} +2 -2
  300. package/dist/cli/chunks/{validate-AAP773B3.js → validate-KMUV5FUA.js} +2 -2
  301. package/dist/cli/chunks/{validate-swarm-7RGAZX5F.js → validate-swarm-ANZWRCJU.js} +2 -2
  302. package/dist/cli/chunks/visual-security-GXYZV7KR.js +2 -0
  303. package/dist/cli/chunks/{web-tree-sitter-GQMRHGGI.js → web-tree-sitter-SXXC4NMS.js} +2 -2
  304. package/dist/cli/chunks/{windsurf-installer-HG6HF2GF.js → windsurf-installer-2LWSKMBU.js} +2 -2
  305. package/dist/cli/chunks/witness-chain-52PEIEGK.js +2 -0
  306. package/dist/cli/chunks/{witness-chain-WKU3ZIBQ.js → witness-chain-JJMSJFZP.js} +2 -2
  307. package/dist/cli/chunks/witness-chain-repair-OX7VFW6T.js +2 -0
  308. package/dist/cli/chunks/{witness-chain-verifier-Q2KW3QEQ.js → witness-chain-verifier-QLSMXHAZ.js} +2 -2
  309. package/dist/cli/chunks/witness-key-manager-3DS4L7LE.js +2 -0
  310. package/dist/cli/chunks/{workflow-CX6SHFBW.js → workflow-ARWAMHD3.js} +28 -28
  311. package/dist/cli/chunks/workflow-orchestrator-DORMQMG7.js +2 -0
  312. package/dist/cli/chunks/wrappers-J6KGTUSJ.js +2 -0
  313. package/dist/cli/commands/ci.js +47 -25
  314. package/dist/cli/commands/coverage.d.ts +1 -28
  315. package/dist/cli/commands/coverage.js +63 -134
  316. package/dist/cli/commands/daemon.js +7 -1
  317. package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +15 -0
  318. package/dist/cli/commands/hooks-handlers/stats-hooks.js +54 -2
  319. package/dist/cli/commands/learning.js +50 -9
  320. package/dist/cli/commands/security.d.ts +16 -0
  321. package/dist/cli/commands/security.js +76 -9
  322. package/dist/cli/commands/test.js +6 -7
  323. package/dist/cli/commands/workflow.js +9 -5
  324. package/dist/cli/handlers/init-guard.d.ts +33 -0
  325. package/dist/cli/handlers/init-guard.js +66 -0
  326. package/dist/cli/handlers/init-handler.d.ts +3 -0
  327. package/dist/cli/handlers/init-handler.js +64 -54
  328. package/dist/cli/handlers/interfaces.js +5 -1
  329. package/dist/cli/index.js +11 -0
  330. package/dist/cli/scheduler/persistent-scheduler.d.ts +6 -2
  331. package/dist/cli/scheduler/persistent-scheduler.js +107 -41
  332. package/dist/cli/utils/ci-output.d.ts +13 -1
  333. package/dist/cli/utils/ci-output.js +21 -2
  334. package/dist/cli/utils/coverage-data.d.ts +3 -0
  335. package/dist/cli/utils/coverage-data.js +14 -39
  336. package/dist/cli/utils/coverage-verdict.d.ts +130 -0
  337. package/dist/cli/utils/coverage-verdict.js +193 -0
  338. package/dist/cli/utils/file-discovery.js +5 -0
  339. package/dist/coordination/deterministic-actions.js +24 -13
  340. package/dist/coordination/handlers/code-intelligence-handlers.d.ts +8 -0
  341. package/dist/coordination/handlers/code-intelligence-handlers.js +39 -0
  342. package/dist/coordination/handlers/coverage-handlers.js +34 -6
  343. package/dist/coordination/handlers/coverage-runner.d.ts +22 -0
  344. package/dist/coordination/handlers/coverage-runner.js +105 -10
  345. package/dist/coordination/handlers/coverage-target.d.ts +1 -0
  346. package/dist/coordination/handlers/coverage-target.js +4 -1
  347. package/dist/coordination/handlers/handler-types.d.ts +9 -0
  348. package/dist/coordination/handlers/handler-utils.d.ts +14 -1
  349. package/dist/coordination/handlers/handler-utils.js +46 -22
  350. package/dist/coordination/handlers/quality-handlers.js +108 -18
  351. package/dist/coordination/handlers/security-handlers.js +22 -6
  352. package/dist/coordination/handlers/test-execution-handlers.js +4 -1
  353. package/dist/coordination/protocols/defect-investigation.d.ts +2 -1
  354. package/dist/coordination/protocols/defect-investigation.js +12 -3
  355. package/dist/coordination/protocols/quality-gate.js +10 -6
  356. package/dist/coordination/protocols/security-audit.js +11 -0
  357. package/dist/coordination/result-saver.d.ts +31 -0
  358. package/dist/coordination/result-saver.js +146 -46
  359. package/dist/coordination/task-executor.d.ts +7 -0
  360. package/dist/coordination/task-executor.js +32 -3
  361. package/dist/domains/code-intelligence/plugin.js +4 -0
  362. package/dist/domains/code-intelligence/services/metric-collector/index.js +9 -2
  363. package/dist/domains/code-intelligence/services/metric-collector/interfaces.d.ts +21 -0
  364. package/dist/domains/code-intelligence/services/metric-collector/interfaces.js +25 -0
  365. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +12 -0
  366. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +69 -3
  367. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +4 -1
  368. package/dist/domains/coverage-analysis/collected-metrics.d.ts +35 -0
  369. package/dist/domains/coverage-analysis/collected-metrics.js +42 -0
  370. package/dist/domains/coverage-analysis/coordinator.js +18 -6
  371. package/dist/domains/coverage-analysis/interfaces.d.ts +44 -0
  372. package/dist/domains/coverage-analysis/interfaces.js +6 -1
  373. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +61 -34
  374. package/dist/domains/coverage-analysis/services/gap-detector.js +7 -2
  375. package/dist/domains/defect-intelligence/plugin.js +4 -0
  376. package/dist/domains/defect-intelligence/services/defect-predictor.js +13 -8
  377. package/dist/domains/learning-optimization/coordinator.js +4 -0
  378. package/dist/domains/learning-optimization/plugin.js +4 -0
  379. package/dist/domains/quality-assessment/coordinator-rl-integration.d.ts +14 -0
  380. package/dist/domains/quality-assessment/coordinator-rl-integration.js +54 -16
  381. package/dist/domains/quality-assessment/coordinator.js +10 -6
  382. package/dist/domains/quality-assessment/coverage-report-event.d.ts +32 -8
  383. package/dist/domains/quality-assessment/coverage-report-event.js +28 -6
  384. package/dist/domains/quality-assessment/index.d.ts +1 -1
  385. package/dist/domains/quality-assessment/interfaces.d.ts +50 -0
  386. package/dist/domains/quality-assessment/quality-evidence.d.ts +49 -3
  387. package/dist/domains/quality-assessment/quality-evidence.js +62 -0
  388. package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +23 -2
  389. package/dist/domains/quality-assessment/services/quality-analyzer.js +197 -112
  390. package/dist/domains/quality-assessment/services/quality-gate.js +12 -3
  391. package/dist/domains/security-compliance/dependency-advisory-engine.d.ts +52 -0
  392. package/dist/domains/security-compliance/dependency-advisory-engine.js +113 -0
  393. package/dist/domains/security-compliance/interfaces.d.ts +30 -0
  394. package/dist/domains/security-compliance/plugin.d.ts +7 -1
  395. package/dist/domains/security-compliance/plugin.js +19 -0
  396. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +22 -16
  397. package/dist/domains/security-compliance/services/scanners/dependency-resolver.d.ts +71 -0
  398. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +232 -0
  399. package/dist/domains/security-compliance/services/scanners/dependency-scanner.d.ts +21 -6
  400. package/dist/domains/security-compliance/services/scanners/dependency-scanner.js +142 -64
  401. package/dist/domains/security-compliance/services/scanners/lockfile-versions.d.ts +43 -0
  402. package/dist/domains/security-compliance/services/scanners/lockfile-versions.js +248 -0
  403. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +30 -2
  404. package/dist/domains/security-compliance/services/security-auditor.d.ts +19 -6
  405. package/dist/domains/security-compliance/services/security-auditor.js +133 -92
  406. package/dist/domains/test-execution/interfaces.d.ts +10 -6
  407. package/dist/domains/test-execution/plugin.js +4 -0
  408. package/dist/domains/test-execution/services/retry-handler.js +17 -6
  409. package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
  410. package/dist/domains/test-execution/services/test-executor.js +239 -109
  411. package/dist/domains/test-generation/coordinator.js +4 -0
  412. package/dist/domains/test-generation/plugin.js +4 -0
  413. package/dist/feedback/coverage-learner.js +4 -1
  414. package/dist/feedback/coverage-session-provenance.d.ts +29 -0
  415. package/dist/feedback/coverage-session-provenance.js +39 -0
  416. package/dist/init/orchestrator.js +2 -0
  417. package/dist/init/phases/09-assets.d.ts +4 -0
  418. package/dist/init/phases/09-assets.js +35 -0
  419. package/dist/init/retired-assets.d.ts +86 -0
  420. package/dist/init/retired-assets.js +230 -0
  421. package/dist/init/skills-installer.d.ts +2 -0
  422. package/dist/init/skills-installer.js +4 -0
  423. package/dist/init/types.d.ts +3 -0
  424. package/dist/integrations/ruvector/rvf-native-adapter.d.ts +2 -0
  425. package/dist/integrations/ruvector/rvf-native-adapter.js +5 -0
  426. package/dist/integrations/ruvector/server-client.js +4 -12
  427. package/dist/kernel/project-root.d.ts +17 -0
  428. package/dist/kernel/project-root.js +54 -2
  429. package/dist/kernel/shared-dirs.d.ts +66 -0
  430. package/dist/kernel/shared-dirs.js +180 -0
  431. package/dist/learning/daily-log.js +2 -1
  432. package/dist/learning/experience-capture-middleware.d.ts +22 -0
  433. package/dist/learning/experience-capture-middleware.js +35 -0
  434. package/dist/learning/learnable-result.d.ts +16 -0
  435. package/dist/learning/learnable-result.js +24 -0
  436. package/dist/learning/pattern-mutation-error.d.ts +8 -0
  437. package/dist/learning/pattern-mutation-error.js +12 -0
  438. package/dist/learning/qe-reasoning-bank.d.ts +10 -0
  439. package/dist/learning/qe-reasoning-bank.js +50 -1
  440. package/dist/learning/rvf-reconcile.d.ts +39 -0
  441. package/dist/learning/rvf-reconcile.js +40 -0
  442. package/dist/learning/sqlite-persistence.d.ts +14 -0
  443. package/dist/learning/sqlite-persistence.js +36 -0
  444. package/dist/mcp/bundle.js +908 -896
  445. package/dist/mcp/handlers/domain-handler-configs.d.ts +35 -1
  446. package/dist/mcp/handlers/domain-handler-configs.js +42 -4
  447. package/dist/mcp/handlers/handler-factory.js +40 -14
  448. package/dist/mcp/protocol-server.js +29 -3
  449. package/dist/mcp/tool-cache-scope.d.ts +31 -0
  450. package/dist/mcp/tool-cache-scope.js +71 -0
  451. package/dist/mcp/tools/code-intelligence/analyze.js +5 -3
  452. package/dist/mcp/types.d.ts +10 -0
  453. package/dist/optimization/session-cache.d.ts +19 -1
  454. package/dist/optimization/session-cache.js +36 -2
  455. package/dist/plugins/cache.js +2 -1
  456. package/dist/plugins/sources/github.js +2 -1
  457. package/dist/plugins/sources/npm.js +2 -1
  458. package/dist/shared/aqe-managed-dirs.d.ts +24 -0
  459. package/dist/shared/aqe-managed-dirs.js +56 -0
  460. package/dist/shared/events/domain-events.d.ts +18 -3
  461. package/dist/shared/events/domain-events.js +4 -0
  462. package/dist/shared/http/http-client.d.ts +6 -0
  463. package/dist/shared/http/http-client.js +13 -15
  464. package/dist/shared/io/file-reader.d.ts +26 -0
  465. package/dist/shared/io/file-reader.js +111 -17
  466. package/dist/shared/llm/providers/response-deadline.d.ts +7 -2
  467. package/dist/shared/llm/providers/response-deadline.js +17 -5
  468. package/dist/shared/metrics/code-metrics.d.ts +24 -0
  469. package/dist/shared/metrics/code-metrics.js +93 -6
  470. package/dist/shared/metrics/index.d.ts +1 -1
  471. package/dist/shared/security/index.d.ts +2 -2
  472. package/dist/shared/security/index.js +1 -1
  473. package/dist/shared/security/osv-client.d.ts +79 -132
  474. package/dist/shared/security/osv-client.js +344 -167
  475. package/dist/shared/security/osv-lookup.d.ts +124 -0
  476. package/dist/shared/security/osv-lookup.js +246 -0
  477. package/dist/shared/security/osv-types.d.ts +119 -0
  478. package/dist/shared/security/osv-types.js +6 -0
  479. package/dist/workers/interfaces.d.ts +15 -2
  480. package/dist/workers/namespaced-keys.d.ts +16 -0
  481. package/dist/workers/namespaced-keys.js +24 -0
  482. package/dist/workers/quality-daemon/coverage-delta.d.ts +4 -3
  483. package/dist/workers/quality-daemon/coverage-delta.js +13 -6
  484. package/dist/workers/quality-daemon/index.js +6 -5
  485. package/dist/workers/quality-daemon/notification-service.js +3 -3
  486. package/dist/workers/quality-daemon/persistent-memory.d.ts +3 -3
  487. package/dist/workers/quality-daemon/persistent-memory.js +4 -4
  488. package/dist/workers/worker-manager.js +10 -3
  489. package/dist/workers/workers/coverage-tracker.js +69 -33
  490. package/dist/workers/workers/defect-predictor.d.ts +25 -8
  491. package/dist/workers/workers/defect-predictor.js +223 -216
  492. package/dist/workers/workers/performance-baseline.d.ts +24 -9
  493. package/dist/workers/workers/performance-baseline.js +187 -230
  494. package/dist/workers/workers/quality-gate.d.ts +11 -9
  495. package/dist/workers/workers/quality-gate.js +125 -267
  496. package/dist/workers/workers/regression-monitor.d.ts +18 -1
  497. package/dist/workers/workers/regression-monitor.js +276 -117
  498. package/dist/workers/workers/security-scan-records.d.ts +111 -0
  499. package/dist/workers/workers/security-scan-records.js +128 -0
  500. package/dist/workers/workers/security-scan.d.ts +25 -7
  501. package/dist/workers/workers/security-scan.js +187 -164
  502. package/package.json +2 -2
  503. package/dist/cli/chunks/adapter-EGIPTX5H.js +0 -2
  504. package/dist/cli/chunks/aqe-learning-engine-WP4GCBDT.js +0 -2
  505. package/dist/cli/chunks/base-6ORFD62I.js +0 -2
  506. package/dist/cli/chunks/browser-workflow-PIXGERWP.js +0 -2
  507. package/dist/cli/chunks/chunk-2WFTZSRT.js +0 -2
  508. package/dist/cli/chunks/chunk-7YB2KELI.js +0 -5
  509. package/dist/cli/chunks/chunk-BBL6YXD3.js +0 -2
  510. package/dist/cli/chunks/chunk-BJ5P4IV2.js +0 -2
  511. package/dist/cli/chunks/chunk-BO4PKNYP.js +0 -102
  512. package/dist/cli/chunks/chunk-DFPL5N3Q.js +0 -16
  513. package/dist/cli/chunks/chunk-DLY4YEN3.js +0 -2
  514. package/dist/cli/chunks/chunk-ERGWWI4Y.js +0 -3
  515. package/dist/cli/chunks/chunk-GTSOFCMQ.js +0 -2
  516. package/dist/cli/chunks/chunk-KZVJW2SD.js +0 -2
  517. package/dist/cli/chunks/chunk-L336HFFE.js +0 -2
  518. package/dist/cli/chunks/chunk-N2TJNIHA.js +0 -2
  519. package/dist/cli/chunks/chunk-RCXMUEZN.js +0 -3
  520. package/dist/cli/chunks/chunk-SEZLYRCS.js +0 -2
  521. package/dist/cli/chunks/chunk-TDLKXLJC.js +0 -4
  522. package/dist/cli/chunks/chunk-WOZIXXY5.js +0 -7
  523. package/dist/cli/chunks/ci-KP4GZKJ7.js +0 -81
  524. package/dist/cli/chunks/client-C3KHVRM6.js +0 -2
  525. package/dist/cli/chunks/core-handlers-KSQM6Q6S.js +0 -2
  526. package/dist/cli/chunks/coverage-SPFVHRRU.js +0 -43
  527. package/dist/cli/chunks/coverage-target-GSRBNHXE.js +0 -2
  528. package/dist/cli/chunks/cross-domain-router-CTGNOVCF.js +0 -2
  529. package/dist/cli/chunks/daemon-M5TD5Y6T.js +0 -10
  530. package/dist/cli/chunks/dream-MIK2E4UL.js +0 -2
  531. package/dist/cli/chunks/embed-and-insert-pattern-QST77T2B.js +0 -3
  532. package/dist/cli/chunks/experience-capture-middleware-X66IYSRV.js +0 -40
  533. package/dist/cli/chunks/file-discovery-3NHRUQQB.js +0 -2
  534. package/dist/cli/chunks/heartbeat-scheduler-OCKRACUW.js +0 -2
  535. package/dist/cli/chunks/hnsw-adapter-X67XG73C.js +0 -2
  536. package/dist/cli/chunks/hnsw-index-I7KCQBQR.js +0 -2
  537. package/dist/cli/chunks/hybrid-backend-FOUHTKAK.js +0 -2
  538. package/dist/cli/chunks/impact-analyzer-GXYVX46O.js +0 -2
  539. package/dist/cli/chunks/init-handler-2AXMXHYF.js +0 -86
  540. package/dist/cli/chunks/init-wizard-C2MRX2QG.js +0 -2
  541. package/dist/cli/chunks/kernel-Q2IUDIDC.js +0 -2
  542. package/dist/cli/chunks/knowledge-graph-E2Z6K5EE.js +0 -2
  543. package/dist/cli/chunks/learning-BEA26RNA.js +0 -122
  544. package/dist/cli/chunks/llm-router-service-YATYFEDD.js +0 -2
  545. package/dist/cli/chunks/load-test-LV77JXWA.js +0 -2
  546. package/dist/cli/chunks/memory-backend-XME3X3QX.js +0 -2
  547. package/dist/cli/chunks/memory-handlers-VG47X5DX.js +0 -2
  548. package/dist/cli/chunks/orchestrator-VHUXUYIM.js +0 -452
  549. package/dist/cli/chunks/pattern-null-store-TAXMLENP.js +0 -2
  550. package/dist/cli/chunks/plugin-2VAYWAO3.js +0 -27
  551. package/dist/cli/chunks/project-root-CFFPBGPX.js +0 -2
  552. package/dist/cli/chunks/protocol-executor-ML76QAVQ.js +0 -2
  553. package/dist/cli/chunks/qe-reasoning-bank-LUZH6RYV.js +0 -2
  554. package/dist/cli/chunks/queen-coordinator-EWXNIXB6.js +0 -2
  555. package/dist/cli/chunks/real-embeddings-GZV4VKK4.js +0 -2
  556. package/dist/cli/chunks/router-MXOBVEBF.js +0 -2
  557. package/dist/cli/chunks/routing-feedback-T6CCRUEK.js +0 -2
  558. package/dist/cli/chunks/rvf-dual-writer-WHXVT3V3.js +0 -2
  559. package/dist/cli/chunks/rvf-migration-adapter-JFPWIRCG.js +0 -2
  560. package/dist/cli/chunks/rvf-migration-coordinator-D4KUBNRZ.js +0 -2
  561. package/dist/cli/chunks/rvf-native-adapter-KOXR7TJL.js +0 -2
  562. package/dist/cli/chunks/safe-db-CI6IPSIN.js +0 -2
  563. package/dist/cli/chunks/schedule-X4HW6TVJ.js +0 -2
  564. package/dist/cli/chunks/scheduler-KCNJ2ON3.js +0 -2
  565. package/dist/cli/chunks/security-7723AZZ4.js +0 -13
  566. package/dist/cli/chunks/shared-rvf-adapter-KEQ5CLNI.js +0 -2
  567. package/dist/cli/chunks/sqlite-persistence-PGHU6VUR.js +0 -2
  568. package/dist/cli/chunks/sync-EFWXMA2H.js +0 -2
  569. package/dist/cli/chunks/token-bootstrap-S346YBVO.js +0 -2
  570. package/dist/cli/chunks/unified-memory-6CK3TUNQ.js +0 -2
  571. package/dist/cli/chunks/unified-memory-hnsw-A7BWBGYN.js +0 -2
  572. package/dist/cli/chunks/unified-persistence-GEPMDBQZ.js +0 -2
  573. package/dist/cli/chunks/visual-security-L4J7LQWT.js +0 -2
  574. package/dist/cli/chunks/witness-chain-CDUMX623.js +0 -2
  575. package/dist/cli/chunks/witness-chain-repair-WNYH6O4L.js +0 -2
  576. package/dist/cli/chunks/witness-key-manager-NQ5DAAC4.js +0 -2
  577. package/dist/cli/chunks/workflow-orchestrator-USJDWVDR.js +0 -2
  578. package/dist/cli/chunks/wrappers-CZDI6Z3X.js +0 -2
  579. /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
  580. /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
  581. /package/.claude/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
  582. /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
  583. /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
  584. /package/assets/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Agentic QE v3 - security-scan worker: recorded scan parsing (#1043, #1049)
3
+ *
4
+ * Parses the `security:scan:<id>` records the security-compliance domain writes
5
+ * (OSV dependency scans and SAST scans) into what the security-scan worker
6
+ * reports. Nothing is filled in: a field a record does not carry stays absent.
7
+ */
8
+ export const SCHEMA_VERSION = 1;
9
+ /** The dependency scanner keeps its records for 7 days; nothing older is current. */
10
+ export const MAX_SCAN_AGE_MS = 7 * 24 * 60 * 60 * 1000;
11
+ export const SEVERITIES = ['critical', 'high', 'medium', 'low', 'informational'];
12
+ export const CVE_ID = /^CVE-\d{4}-\d{4,}$/;
13
+ export const isCount = (v) => typeof v === 'number' && Number.isInteger(v) && v >= 0;
14
+ export const isRecord = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
15
+ export function parseCounts(raw) {
16
+ if (!isRecord(raw))
17
+ return null;
18
+ const counts = {};
19
+ for (const s of SEVERITIES) {
20
+ if (!isCount(raw[s]))
21
+ return null;
22
+ counts[s] = raw[s];
23
+ }
24
+ return counts;
25
+ }
26
+ /** `scannedAt` when the record's timestamp is valid, not in the future and within the scanner's retention. */
27
+ export function parseScannedAt(raw, now) {
28
+ if (typeof raw !== 'string')
29
+ return null;
30
+ const t = Date.parse(raw);
31
+ if (!Number.isFinite(t) || t > now + 60_000 || now - t > MAX_SCAN_AGE_MS)
32
+ return null;
33
+ return raw;
34
+ }
35
+ export function parseVulnerability(raw, kind) {
36
+ if (!isRecord(raw))
37
+ return null;
38
+ const severity = raw.severity;
39
+ if (!SEVERITIES.includes(severity) || typeof raw.title !== 'string')
40
+ return null;
41
+ const location = isRecord(raw.location) ? raw.location : {};
42
+ const remediation = isRecord(raw.remediation) ? raw.remediation : {};
43
+ const vuln = {
44
+ severity,
45
+ title: raw.title,
46
+ description: typeof raw.description === 'string' ? raw.description : '',
47
+ category: typeof raw.category === 'string' ? raw.category : 'other',
48
+ references: Array.isArray(raw.references) ? raw.references.filter((r) => typeof r === 'string') : [],
49
+ };
50
+ if (typeof raw.cveId === 'string' && CVE_ID.test(raw.cveId))
51
+ vuln.cve = raw.cveId;
52
+ if (kind === 'dependency') {
53
+ const dep = isRecord(location.dependency) && typeof location.dependency.name === 'string'
54
+ ? location.dependency.name
55
+ : typeof location.snippet === 'string' ? /^"([^"]+)":/.exec(location.snippet)?.[1] : undefined;
56
+ if (dep)
57
+ vuln.package = dep;
58
+ const fixed = typeof remediation.fixExample === 'string' ? /@([^@\s]+)$/.exec(remediation.fixExample)?.[1] : undefined;
59
+ if (fixed)
60
+ vuln.fixedIn = fixed;
61
+ }
62
+ else if (typeof location.file === 'string') {
63
+ vuln.location = typeof location.line === 'number' ? `${location.file}:${location.line}` : location.file;
64
+ }
65
+ return vuln;
66
+ }
67
+ export function parseUnchecked(raw) {
68
+ if (!Array.isArray(raw))
69
+ return [];
70
+ return raw.filter(isRecord).map((p) => ({
71
+ name: typeof p.name === 'string' ? p.name : '?',
72
+ version: typeof p.version === 'string' ? p.version : '?',
73
+ reason: typeof p.reason === 'string' ? p.reason : 'unknown',
74
+ }));
75
+ }
76
+ /**
77
+ * #1049: a dependency scan is a measurement only when its OSV lookup checked
78
+ * every requested package (`measured: true` and `status: 'complete'`).
79
+ */
80
+ export function dependencyCompleteness(raw) {
81
+ if (raw.measured === true && raw.status === 'complete')
82
+ return { complete: true };
83
+ return {
84
+ complete: false,
85
+ status: raw.status === 'incomplete' || raw.status === 'failed' ? raw.status : 'unknown',
86
+ ...(typeof raw.error === 'string' && raw.error ? { error: raw.error } : {}),
87
+ uncheckedPackages: parseUnchecked(raw.uncheckedPackages),
88
+ ...(isCount(raw.packagesChecked) ? { packagesChecked: raw.packagesChecked } : {}),
89
+ };
90
+ }
91
+ export const SEVERITY_LABEL = {
92
+ critical: 'Critical', high: 'High Severity', medium: 'Medium Severity', low: 'Low Severity', informational: 'Informational',
93
+ };
94
+ /** Health penalty for the real critical/high advisories of a partial dependency scan (#1049). */
95
+ export function partialDependencyPenalty(incomplete) {
96
+ return incomplete ? incomplete.scan.summary.critical * 20 + incomplete.scan.summary.high * 10 : 0;
97
+ }
98
+ /** What a partial dependency scan did check; the dependency totals stay 'unmeasured' (#1049). */
99
+ export function partialDependencyMetrics(incomplete) {
100
+ return incomplete
101
+ ? { dependencyVulnerabilitiesInCheckedPackages: incomplete.scan.total, dependencyPackagesUnchecked: incomplete.uncheckedPackages.length }
102
+ : {};
103
+ }
104
+ /** A recorded dependency (OSV) or SAST scan, or `null` when the record is not one. */
105
+ export function parseRecordedScan(raw, now) {
106
+ if (!isRecord(raw))
107
+ return null;
108
+ const kind = raw.scanType;
109
+ if (kind !== 'dependency' && kind !== 'sast')
110
+ return null;
111
+ const scannedAt = parseScannedAt(raw.timestamp, now);
112
+ const summary = parseCounts(raw.summary);
113
+ if (typeof raw.scanId !== 'string' || !scannedAt || !summary)
114
+ return null;
115
+ const listed = kind === 'dependency' ? raw.vulnerabilities : raw.criticalVulnerabilities;
116
+ if (!Array.isArray(listed))
117
+ return null;
118
+ const vulnerabilities = listed.map((v) => parseVulnerability(v, kind));
119
+ if (vulnerabilities.some((v) => v === null))
120
+ return null;
121
+ const counted = SEVERITIES.reduce((sum, s) => sum + summary[s], 0);
122
+ const total = kind === 'sast' && isCount(raw.vulnerabilityCount) ? raw.vulnerabilityCount : counted;
123
+ const scan = {
124
+ scanId: raw.scanId, scannedAt, summary, vulnerabilities: vulnerabilities, total,
125
+ };
126
+ return kind === 'sast' ? { kind, scan } : { kind, scan, completeness: dependencyCompleteness(raw) };
127
+ }
128
+ //# sourceMappingURL=security-scan-records.js.map
@@ -2,21 +2,39 @@
2
2
  * Agentic QE v3 - Security Scan Worker
3
3
  * ADR-014: Background Workers for QE Monitoring
4
4
  *
5
- * Performs security vulnerability scanning including:
6
- * - Dependency vulnerability checks
7
- * - Code pattern analysis for security issues
8
- * - Secret detection
9
- * - Security configuration validation
5
+ * Reports the security state from scans the security-compliance domain
6
+ * actually ran:
7
+ * - Dependency vulnerabilities from the OSV dependency scan
8
+ * - Code security issues from the SAST scan
9
+ *
10
+ * #1043: every finding comes from a recorded scan (`security:scan:<id>` in the
11
+ * `security-compliance` namespace, written by DependencyScanner and
12
+ * SASTScanner). The worker runs no scan itself — a background tick must not
13
+ * send the project's dependency list to an external advisory API unasked — and
14
+ * never emits a vulnerability or CVE id a scan did not report. Nothing
15
+ * recorded → nothing stored, an "unmeasured" info finding.
16
+ *
17
+ * #1049: a dependency scan counts only when its OSV lookup was complete
18
+ * (`measured: true`, `status: 'complete'`). The latest scan being incomplete,
19
+ * failed or pre-#1049 (no `status`) leaves the dependency side unmeasured —
20
+ * never "0 vulnerabilities" — with a finding naming the unchecked packages.
10
21
  */
11
22
  import { BaseWorker } from '../base-worker';
12
23
  import { WorkerContext, WorkerResult } from '../interfaces';
13
24
  export declare class SecurityScanWorker extends BaseWorker {
14
25
  constructor();
15
26
  protected doExecute(context: WorkerContext): Promise<WorkerResult>;
16
- private runSecurityScans;
27
+ /** The most recent recorded dependency and SAST scans, or `null` when neither exists (#1043). */
28
+ private readRecordedScans;
29
+ /**
30
+ * #1049: a dependency scan whose lookup was not complete is unmeasured —
31
+ * never "0 vulnerabilities". Advisories OSV did return for checked packages
32
+ * are real and still reported, marked as coming from a partial scan.
33
+ */
34
+ private reportIncompleteDependencyScan;
17
35
  private analyzeDependencyVulnerabilities;
18
36
  private analyzeCodeSecurityIssues;
19
- private reportSecretsDetected;
37
+ /** Score from the recorded scans' own severity counts. */
20
38
  private calculateHealthScore;
21
39
  }
22
40
  //# sourceMappingURL=security-scan.d.ts.map
@@ -2,13 +2,26 @@
2
2
  * Agentic QE v3 - Security Scan Worker
3
3
  * ADR-014: Background Workers for QE Monitoring
4
4
  *
5
- * Performs security vulnerability scanning including:
6
- * - Dependency vulnerability checks
7
- * - Code pattern analysis for security issues
8
- * - Secret detection
9
- * - Security configuration validation
5
+ * Reports the security state from scans the security-compliance domain
6
+ * actually ran:
7
+ * - Dependency vulnerabilities from the OSV dependency scan
8
+ * - Code security issues from the SAST scan
9
+ *
10
+ * #1043: every finding comes from a recorded scan (`security:scan:<id>` in the
11
+ * `security-compliance` namespace, written by DependencyScanner and
12
+ * SASTScanner). The worker runs no scan itself — a background tick must not
13
+ * send the project's dependency list to an external advisory API unasked — and
14
+ * never emits a vulnerability or CVE id a scan did not report. Nothing
15
+ * recorded → nothing stored, an "unmeasured" info finding.
16
+ *
17
+ * #1049: a dependency scan counts only when its OSV lookup was complete
18
+ * (`measured: true`, `status: 'complete'`). The latest scan being incomplete,
19
+ * failed or pre-#1049 (no `status`) leaves the dependency side unmeasured —
20
+ * never "0 vulnerabilities" — with a finding naming the unchecked packages.
10
21
  */
22
+ import { bareSearchKey } from '../namespaced-keys.js';
11
23
  import { BaseWorker } from '../base-worker.js';
24
+ import { SCHEMA_VERSION, SEVERITIES, SEVERITY_LABEL, parseRecordedScan, partialDependencyMetrics, partialDependencyPenalty, } from './security-scan-records.js';
12
25
  const CONFIG = {
13
26
  id: 'security-scan',
14
27
  name: 'Security Vulnerability Scanner',
@@ -21,6 +34,10 @@ const CONFIG = {
21
34
  retryCount: 3,
22
35
  retryDelayMs: 30000,
23
36
  };
37
+ const SECURITY_NAMESPACE = 'security-compliance';
38
+ const SCAN_KEY_PATTERN = 'security:scan:*';
39
+ const LAST_SCAN_KEY = 'security:lastScan';
40
+ const MAX_SCAN_RECORDS = 1000;
24
41
  export class SecurityScanWorker extends BaseWorker {
25
42
  constructor() {
26
43
  super(CONFIG);
@@ -30,124 +47,161 @@ export class SecurityScanWorker extends BaseWorker {
30
47
  context.logger.info('Starting security vulnerability scan');
31
48
  const findings = [];
32
49
  const recommendations = [];
33
- // Run security scans
34
- const scanResult = await this.runSecurityScans(context);
35
- // Analyze dependency vulnerabilities
36
- this.analyzeDependencyVulnerabilities(scanResult.dependencyVulnerabilities, findings, recommendations);
37
- // Analyze code security issues
38
- this.analyzeCodeSecurityIssues(scanResult.codeSecurityIssues, findings, recommendations);
39
- // Check for secrets
40
- if (scanResult.secretsDetected > 0) {
41
- this.reportSecretsDetected(scanResult.secretsDetected, findings, recommendations);
50
+ const { scan, incompleteDependency } = await this.readRecordedScans(context);
51
+ if (incompleteDependency) {
52
+ this.reportIncompleteDependencyScan(incompleteDependency, findings, recommendations);
53
+ }
54
+ if (!scan) {
55
+ if (!incompleteDependency)
56
+ findings.push({
57
+ type: 'security-unmeasured',
58
+ severity: 'info',
59
+ domain: 'security-compliance',
60
+ title: 'Security Scan Unmeasured',
61
+ description: 'No dependency or SAST scan has been recorded in the last 7 days, so no vulnerabilities are ' +
62
+ 'reported and nothing was stored. Run security_scan_comprehensive (or `aqe security`) to scan the project.',
63
+ });
64
+ context.logger.info('Security scan complete', { measured: false });
65
+ return this.createResult(Date.now() - startTime, {
66
+ itemsAnalyzed: incompleteDependency?.scan.total ?? 0,
67
+ issuesFound: findings.filter((f) => f.severity !== 'info').length,
68
+ healthScore: Math.max(0, 100 - partialDependencyPenalty(incompleteDependency)),
69
+ trend: 'stable',
70
+ domainMetrics: {
71
+ dependencyScan: 'unmeasured',
72
+ codeScan: 'unmeasured',
73
+ dependencyVulnerabilities: 'unmeasured',
74
+ codeSecurityIssues: 'unmeasured',
75
+ ...partialDependencyMetrics(incompleteDependency),
76
+ },
77
+ }, findings, recommendations);
42
78
  }
43
- // Store results
44
- await context.memory.set('security:lastScan', scanResult);
45
- await context.memory.set('security:lastScanTime', new Date().toISOString());
46
- const healthScore = this.calculateHealthScore(scanResult);
47
- const totalIssues = scanResult.dependencyVulnerabilities.length +
48
- scanResult.codeSecurityIssues.length +
49
- scanResult.secretsDetected +
50
- scanResult.configurationIssues;
79
+ if (scan.dependency)
80
+ this.analyzeDependencyVulnerabilities(scan.dependency, findings, recommendations);
81
+ if (scan.code)
82
+ this.analyzeCodeSecurityIssues(scan.code, findings, recommendations);
83
+ await context.memory.set(LAST_SCAN_KEY, scan);
84
+ await context.memory.set('security:lastScanTime', scan.evaluatedAt);
85
+ const healthScore = Math.max(0, this.calculateHealthScore(scan) - partialDependencyPenalty(incompleteDependency));
51
86
  context.logger.info('Security scan complete', {
87
+ measured: true,
52
88
  healthScore,
53
- totalIssues,
54
- criticalIssues: scanResult.dependencyVulnerabilities.filter(v => v.severity === 'critical').length +
55
- scanResult.codeSecurityIssues.filter(i => i.severity === 'critical').length,
89
+ dependencyScanId: scan.dependency?.scanId ?? null,
90
+ codeScanId: scan.code?.scanId ?? null,
56
91
  });
57
92
  return this.createResult(Date.now() - startTime, {
58
- itemsAnalyzed: totalIssues,
93
+ itemsAnalyzed: (scan.dependency?.total ?? 0) + (scan.code?.total ?? 0),
59
94
  issuesFound: findings.length,
60
95
  healthScore,
61
96
  trend: 'stable',
62
97
  domainMetrics: {
63
- dependencyVulnerabilities: scanResult.dependencyVulnerabilities.length,
64
- codeSecurityIssues: scanResult.codeSecurityIssues.length,
65
- secretsDetected: scanResult.secretsDetected,
66
- configurationIssues: scanResult.configurationIssues,
67
- scanDuration: `${scanResult.scanDurationMs}ms`,
98
+ dependencyScan: scan.dependency ? scan.dependency.scannedAt : 'unmeasured',
99
+ codeScan: scan.code ? scan.code.scannedAt : 'unmeasured',
100
+ dependencyVulnerabilities: scan.dependency ? scan.dependency.total : 'unmeasured',
101
+ codeSecurityIssues: scan.code ? scan.code.total : 'unmeasured',
102
+ ...partialDependencyMetrics(incompleteDependency),
68
103
  },
69
104
  }, findings, recommendations);
70
105
  }
71
- async runSecurityScans(_context) {
72
- // In a real implementation, this would:
73
- // 1. Run npm audit or similar for dependencies
74
- // 2. Run static analysis for code issues
75
- // 3. Scan for secrets with tools like gitleaks
76
- // 4. Check security configurations
77
- return {
78
- dependencyVulnerabilities: [
79
- {
80
- package: 'lodash',
81
- version: '4.17.15',
82
- severity: 'high',
83
- cve: 'CVE-2021-23337',
84
- title: 'Command Injection',
85
- description: 'Lodash versions prior to 4.17.21 are vulnerable to Command Injection via the template function.',
86
- fixedIn: '4.17.21',
87
- },
88
- {
89
- package: 'minimist',
90
- version: '1.2.5',
91
- severity: 'critical',
92
- cve: 'CVE-2021-44906',
93
- title: 'Prototype Pollution',
94
- description: 'Prototype pollution vulnerability allows attackers to manipulate JavaScript object prototypes.',
95
- fixedIn: '1.2.6',
96
- },
97
- ],
98
- codeSecurityIssues: [
99
- {
100
- file: 'src/shared/http/http-client.ts',
101
- line: 45,
102
- rule: 'no-eval',
103
- severity: 'high',
104
- message: 'Avoid using eval() as it can execute arbitrary code',
105
- category: 'injection',
106
- },
107
- {
108
- file: 'src/kernel/memory-backend.ts',
109
- line: 122,
110
- rule: 'sql-injection',
111
- severity: 'medium',
112
- message: 'Potential SQL injection - use parameterized queries',
113
- category: 'injection',
114
- },
115
- ],
116
- secretsDetected: 0,
117
- configurationIssues: 1,
118
- scanDurationMs: 2500,
119
- };
120
- }
121
- analyzeDependencyVulnerabilities(vulnerabilities, findings, recommendations) {
122
- const critical = vulnerabilities.filter(v => v.severity === 'critical');
123
- const high = vulnerabilities.filter(v => v.severity === 'high');
124
- for (const vuln of critical) {
125
- findings.push({
126
- type: 'critical-vulnerability',
127
- severity: 'critical',
128
- domain: 'security-compliance',
129
- title: `Critical Vulnerability in ${vuln.package}`,
130
- description: `${vuln.title}: ${vuln.description}`,
131
- resource: vuln.package,
132
- context: {
133
- cve: vuln.cve,
134
- currentVersion: vuln.version,
135
- fixedIn: vuln.fixedIn,
136
- },
137
- });
106
+ /** The most recent recorded dependency and SAST scans, or `null` when neither exists (#1043). */
107
+ async readRecordedScans(context) {
108
+ const keys = await context.memory.search(SCAN_KEY_PATTERN, MAX_SCAN_RECORDS, { namespace: SECURITY_NAMESPACE });
109
+ const now = Date.now();
110
+ let latestDependency = null;
111
+ let code = null;
112
+ const newer = (a, b) => !b || Date.parse(a.scannedAt) > Date.parse(b.scannedAt);
113
+ for (const found of keys) {
114
+ // The in-memory kernel backend returns namespaced searches as
115
+ // `<namespace>:<key>`; the hybrid backend returns the bare key (#1049).
116
+ const key = bareSearchKey(found, SECURITY_NAMESPACE, SCAN_KEY_PATTERN);
117
+ const parsed = parseRecordedScan(await context.memory.get(key, { namespace: SECURITY_NAMESPACE }), now);
118
+ if (!parsed)
119
+ continue;
120
+ if (parsed.kind === 'dependency' && newer(parsed.scan, latestDependency?.scan ?? null))
121
+ latestDependency = parsed;
122
+ if (parsed.kind === 'sast' && newer(parsed.scan, code))
123
+ code = parsed.scan;
138
124
  }
139
- for (const vuln of high) {
125
+ // #1049: only the latest dependency scan counts, and only when its lookup
126
+ // was complete — an older complete scan must not mask a newer failure.
127
+ const completeness = latestDependency?.completeness;
128
+ const dependency = latestDependency && completeness?.complete ? latestDependency.scan : null;
129
+ const incompleteDependency = latestDependency && completeness && !completeness.complete
130
+ ? {
131
+ scan: latestDependency.scan,
132
+ status: completeness.status,
133
+ ...(completeness.error ? { error: completeness.error } : {}),
134
+ uncheckedPackages: completeness.uncheckedPackages,
135
+ ...(completeness.packagesChecked !== undefined ? { packagesChecked: completeness.packagesChecked } : {}),
136
+ }
137
+ : null;
138
+ if (!dependency && !code)
139
+ return { scan: null, incompleteDependency };
140
+ return { incompleteDependency, scan: {
141
+ measured: true,
142
+ schemaVersion: SCHEMA_VERSION,
143
+ evaluatedAt: new Date().toISOString(),
144
+ dependency: dependency ? { ...dependency, source: 'osv' } : null,
145
+ code: code ? { ...code, source: 'sast' } : null,
146
+ } };
147
+ }
148
+ /**
149
+ * #1049: a dependency scan whose lookup was not complete is unmeasured —
150
+ * never "0 vulnerabilities". Advisories OSV did return for checked packages
151
+ * are real and still reported, marked as coming from a partial scan.
152
+ */
153
+ reportIncompleteDependencyScan(incomplete, findings, recommendations) {
154
+ const { scan, status, error, uncheckedPackages, packagesChecked } = incomplete;
155
+ const unchecked = uncheckedPackages.map((p) => `${p.name}@${p.version} (${p.reason})`);
156
+ const counts = scan.summary;
157
+ const inChecked = scan.total > 0
158
+ ? ` OSV reported ${scan.total} advisory finding(s) in the ${packagesChecked ?? ''}${packagesChecked === undefined ? '' : ' '}checked package(s)` +
159
+ ` (${counts.critical} critical, ${counts.high} high, ${counts.medium} medium, ${counts.low} low); they are listed as separate findings.`
160
+ : '';
161
+ const why = status === 'unknown'
162
+ ? 'was recorded before scans stated whether every package was checked, so a failed lookup cannot be told apart from a clean one'
163
+ : `is ${status}${error ? ` (${error})` : ''}`;
164
+ findings.push({
165
+ type: 'dependency-scan-incomplete',
166
+ severity: 'info',
167
+ domain: 'security-compliance',
168
+ title: 'Dependency Scan Unmeasured',
169
+ description: `The latest dependency scan (${scan.scannedAt}) ${why}; its result is not a vulnerability count.` +
170
+ (unchecked.length > 0 ? ` Unchecked packages: ${unchecked.join(', ')}.` : '') + inChecked +
171
+ ' Re-run the dependency scan.',
172
+ context: {
173
+ scanId: scan.scanId, status, ...(error ? { error } : {}), uncheckedPackages,
174
+ ...(packagesChecked !== undefined ? { packagesChecked } : {}),
175
+ advisoriesInCheckedPackages: scan.total,
176
+ },
177
+ });
178
+ this.analyzeDependencyVulnerabilities(scan, findings, recommendations, true);
179
+ }
180
+ analyzeDependencyVulnerabilities(scan, findings, recommendations, partialScan = false) {
181
+ const critical = scan.vulnerabilities.filter(v => v.severity === 'critical');
182
+ const high = scan.vulnerabilities.filter(v => v.severity === 'high');
183
+ // #1049: a complete scan carries medium/low in its counts; a partial scan has
184
+ // no measured count, so every advisory OSV returned for a checked package is relayed.
185
+ const relayed = partialScan
186
+ ? SEVERITIES.flatMap((s) => scan.vulnerabilities.filter(v => v.severity === s))
187
+ : [...critical, ...high];
188
+ for (const vuln of relayed) {
189
+ const pkg = vuln.package ?? vuln.title;
140
190
  findings.push({
141
- type: 'high-vulnerability',
142
- severity: 'high',
191
+ type: `${vuln.severity}-vulnerability`,
192
+ severity: vuln.severity === 'informational' ? 'info' : vuln.severity,
143
193
  domain: 'security-compliance',
144
- title: `High Severity Vulnerability in ${vuln.package}`,
145
- description: `${vuln.title}: ${vuln.description}`,
146
- resource: vuln.package,
194
+ title: `${SEVERITY_LABEL[vuln.severity]} Vulnerability in ${pkg}`,
195
+ description: vuln.description ? `${vuln.title}: ${vuln.description}` : vuln.title,
196
+ resource: pkg,
147
197
  context: {
148
- cve: vuln.cve,
149
- currentVersion: vuln.version,
150
- fixedIn: vuln.fixedIn,
198
+ advisorySource: 'osv',
199
+ scanId: scan.scanId,
200
+ scannedAt: scan.scannedAt,
201
+ ...(vuln.cve ? { cve: vuln.cve } : {}),
202
+ ...(vuln.fixedIn ? { fixedIn: vuln.fixedIn } : {}),
203
+ references: vuln.references,
204
+ ...(partialScan ? { partialScan: true } : {}),
151
205
  },
152
206
  });
153
207
  }
@@ -156,7 +210,7 @@ export class SecurityScanWorker extends BaseWorker {
156
210
  priority: 'p0',
157
211
  domain: 'security-compliance',
158
212
  action: 'Update Critical Vulnerabilities Immediately',
159
- description: `${critical.length} packages have critical vulnerabilities. Update immediately to patched versions.`,
213
+ description: `The dependency scan of ${scan.scannedAt} reported ${critical.length} critical vulnerabilities. Update to patched versions.`,
160
214
  estimatedImpact: 'high',
161
215
  effort: 'low',
162
216
  autoFixable: true,
@@ -167,97 +221,66 @@ export class SecurityScanWorker extends BaseWorker {
167
221
  priority: 'p1',
168
222
  domain: 'security-compliance',
169
223
  action: 'Address High Severity Vulnerabilities',
170
- description: `${high.length} packages have high severity vulnerabilities. Plan updates within current sprint.`,
224
+ description: `The dependency scan of ${scan.scannedAt} reported ${high.length} high severity vulnerabilities. Plan updates within current sprint.`,
171
225
  estimatedImpact: 'high',
172
226
  effort: 'low',
173
227
  autoFixable: true,
174
228
  });
175
229
  }
176
230
  }
177
- analyzeCodeSecurityIssues(issues, findings, recommendations) {
178
- const byCategory = new Map();
179
- for (const issue of issues) {
180
- const existing = byCategory.get(issue.category) || [];
181
- existing.push(issue);
182
- byCategory.set(issue.category, existing);
183
- }
184
- for (const issue of issues) {
231
+ analyzeCodeSecurityIssues(scan, findings, recommendations) {
232
+ for (const issue of scan.vulnerabilities) {
185
233
  findings.push({
186
234
  type: `code-security-${issue.category}`,
187
- severity: issue.severity,
235
+ severity: issue.severity === 'informational' ? 'info' : issue.severity,
188
236
  domain: 'security-compliance',
189
- title: `Security Issue: ${issue.rule}`,
190
- description: issue.message,
191
- resource: `${issue.file}:${issue.line}`,
237
+ title: `Security Issue: ${issue.title}`,
238
+ description: issue.description || issue.title,
239
+ ...(issue.location ? { resource: issue.location } : {}),
192
240
  context: {
193
- rule: issue.rule,
194
241
  category: issue.category,
242
+ scanId: scan.scanId,
243
+ scannedAt: scan.scannedAt,
244
+ ...(issue.cve ? { cve: issue.cve } : {}),
195
245
  },
196
246
  });
197
247
  }
198
- // Category-specific recommendations
199
- const injectionIssues = byCategory.get('injection') || [];
248
+ const injectionIssues = scan.vulnerabilities.filter(v => v.category === 'injection');
200
249
  if (injectionIssues.length > 0) {
201
250
  recommendations.push({
202
251
  priority: 'p0',
203
252
  domain: 'security-compliance',
204
253
  action: 'Fix Injection Vulnerabilities',
205
- description: `${injectionIssues.length} potential injection vulnerabilities found. Use parameterized queries and avoid eval().`,
254
+ description: `The SAST scan of ${scan.scannedAt} reported ${injectionIssues.length} potential injection vulnerabilities. Use parameterized queries and avoid eval().`,
206
255
  estimatedImpact: 'high',
207
256
  effort: 'medium',
208
257
  autoFixable: false,
209
258
  });
210
259
  }
211
- const cryptoIssues = byCategory.get('crypto') || [];
260
+ const cryptoIssues = scan.vulnerabilities.filter(v => v.category === 'sensitive-data');
212
261
  if (cryptoIssues.length > 0) {
213
262
  recommendations.push({
214
263
  priority: 'p1',
215
264
  domain: 'security-compliance',
216
- action: 'Review Cryptographic Implementations',
217
- description: `${cryptoIssues.length} cryptographic issues found. Ensure using secure algorithms and proper key management.`,
265
+ action: 'Review Sensitive Data Handling',
266
+ description: `The SAST scan of ${scan.scannedAt} reported ${cryptoIssues.length} sensitive-data issues. Ensure secure algorithms and key management.`,
218
267
  estimatedImpact: 'high',
219
268
  effort: 'high',
220
269
  autoFixable: false,
221
270
  });
222
271
  }
223
272
  }
224
- reportSecretsDetected(count, findings, recommendations) {
225
- findings.push({
226
- type: 'secrets-detected',
227
- severity: 'critical',
228
- domain: 'security-compliance',
229
- title: 'Secrets Detected in Codebase',
230
- description: `${count} potential secrets/credentials found in source code`,
231
- context: { count },
232
- });
233
- recommendations.push({
234
- priority: 'p0',
235
- domain: 'security-compliance',
236
- action: 'Remove Secrets from Codebase',
237
- description: 'Immediately rotate any exposed credentials and move them to secure secret management.',
238
- estimatedImpact: 'high',
239
- effort: 'medium',
240
- autoFixable: false,
241
- });
242
- }
243
- calculateHealthScore(result) {
273
+ /** Score from the recorded scans' own severity counts. */
274
+ calculateHealthScore(scan) {
244
275
  let score = 100;
245
- // Critical vulnerabilities: -20 each
246
- const criticalVulns = result.dependencyVulnerabilities.filter(v => v.severity === 'critical').length;
247
- score -= criticalVulns * 20;
248
- // High vulnerabilities: -10 each
249
- const highVulns = result.dependencyVulnerabilities.filter(v => v.severity === 'high').length;
250
- score -= highVulns * 10;
251
- // Critical code issues: -15 each
252
- const criticalCode = result.codeSecurityIssues.filter(i => i.severity === 'critical').length;
253
- score -= criticalCode * 15;
254
- // High code issues: -8 each
255
- const highCode = result.codeSecurityIssues.filter(i => i.severity === 'high').length;
256
- score -= highCode * 8;
257
- // Secrets: -30 each
258
- score -= result.secretsDetected * 30;
259
- // Config issues: -5 each
260
- score -= result.configurationIssues * 5;
276
+ if (scan.dependency) {
277
+ score -= scan.dependency.summary.critical * 20;
278
+ score -= scan.dependency.summary.high * 10;
279
+ }
280
+ if (scan.code) {
281
+ score -= scan.code.summary.critical * 15;
282
+ score -= scan.code.summary.high * 8;
283
+ }
261
284
  return Math.max(0, Math.round(score));
262
285
  }
263
286
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "3.15.5",
3
+ "version": "3.15.7",
4
4
  "description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -199,7 +199,7 @@
199
199
  "typescript": "^5.9.3",
200
200
  "uuid": "^14.0.0",
201
201
  "web-tree-sitter": "~0.26.8",
202
- "yaml": "^2.8.2"
202
+ "yaml": "^2.9.1"
203
203
  },
204
204
  "peerDependencies": {
205
205
  "@claude-flow/browser": "3.0.0-alpha.1",
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.5");process.exit(0)}
2
- import{a,b,c}from"./chunk-VML4SG3X.js";import"./chunk-KJ3KBP24.js";import"./chunk-GRIPCYW5.js";import"./chunk-RUSLEOMC.js";import"./chunk-NLDFNAOS.js";import"./chunk-HLFDC4SF.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.5");process.exit(0)}
2
- import{a,b,c,d,e,f}from"./chunk-DL5JENWD.js";import"./chunk-Y2WMPEUP.js";import"./chunk-ZTC5FBL6.js";import"./chunk-4UXPDV7E.js";import"./chunk-4PT5KNXL.js";import"./chunk-4AZP7ZCW.js";import"./chunk-FNAYDITO.js";import"./chunk-A5J4XJS6.js";import"./chunk-V7GNUVYI.js";import"./chunk-OW42F2TX.js";import"./chunk-PDPEMBFV.js";import"./chunk-NMJVG22Z.js";import"./chunk-FHUJCVT3.js";import"./chunk-GGDKOJVF.js";import"./chunk-L6SVCNXK.js";import"./chunk-663ZFPUL.js";import"./chunk-EOR3RECZ.js";import"./chunk-RUJLVJDE.js";import"./chunk-RUSLEOMC.js";import"./chunk-KHCALIFP.js";import"./chunk-2XYTS2WY.js";import"./chunk-3YASZPLO.js";import"./chunk-MQGEZA2A.js";import"./chunk-OU4ZAWCC.js";import"./chunk-OQDC7GCM.js";import"./chunk-RMJ7PJOS.js";import"./chunk-EAYQCBXL.js";import"./chunk-Y2E3IJ53.js";import"./chunk-AQN5EDBM.js";import"./chunk-3AYYGR6W.js";import"./chunk-OGYWWZU7.js";import"./chunk-L336HFFE.js";import"./chunk-E4VIVMDL.js";import"./chunk-WLIYWBQR.js";import"./chunk-NLDFNAOS.js";import"./chunk-VRJPH3LG.js";import"./chunk-3QD7U3FY.js";import"./chunk-KZVJW2SD.js";import"./chunk-UE22ODHN.js";import"./chunk-N2TJNIHA.js";import"./chunk-IHFUEPZH.js";import"./chunk-U6OVPMQX.js";import"./chunk-HLFDC4SF.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};