agentic-qe 3.14.2 → 3.14.3

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 (372) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +72 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/bundle.js +5 -5
  5. package/dist/cli/chunks/adapter-AKQYU6UH.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-SD5N32MX.js → agent-booster-wasm-TQOMLWWX.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-OZRSJM7F.js → agent-handler-Q3SEMMI2.js} +2 -2
  8. package/dist/cli/chunks/{agent-memory-branch-NYTRANRN.js → agent-memory-branch-SJXAQSZI.js} +2 -2
  9. package/dist/cli/chunks/aqe-learning-engine-MICRPL3N.js +2 -0
  10. package/dist/cli/chunks/{arena-EX3SC2DP.js → arena-7RC7TBGW.js} +4 -4
  11. package/dist/cli/chunks/{arena-FOTVSRK4.js → arena-UPB7TKUY.js} +2 -2
  12. package/dist/cli/chunks/{audit-Q5GHSUQY.js → audit-IXN5R4WB.js} +3 -3
  13. package/dist/cli/chunks/base-DZK36ITB.js +2 -0
  14. package/dist/cli/chunks/{better-sqlite3-S7M5R2HS.js → better-sqlite3-RP4DEGK3.js} +2 -2
  15. package/dist/cli/chunks/{brain-handler-5FSA46R5.js → brain-handler-H5OVZ22L.js} +3 -3
  16. package/dist/cli/chunks/{branch-enumerator-RWAXTGEU.js → branch-enumerator-VPRWDGFJ.js} +2 -2
  17. package/dist/cli/chunks/{browser-IGDESJGF.js → browser-B6E7JPPJ.js} +2 -2
  18. package/dist/cli/chunks/browser-workflow-ADK54DOE.js +2 -0
  19. package/dist/cli/chunks/{chunk-E3Q7WNJD.js → chunk-26GM5CWD.js} +3 -3
  20. package/dist/cli/chunks/{chunk-BWRHOIYC.js → chunk-2GNRW3OD.js} +2 -2
  21. package/dist/cli/chunks/{chunk-ZCDXJ27H.js → chunk-2IGT5WNQ.js} +1 -1
  22. package/dist/cli/chunks/{chunk-7SK6IMGZ.js → chunk-2WT7AKKK.js} +2 -2
  23. package/dist/cli/chunks/{chunk-DVHWLAEO.js → chunk-33VPWGCM.js} +3 -3
  24. package/dist/cli/chunks/{chunk-NAZVPZJS.js → chunk-37BASGWC.js} +2 -2
  25. package/dist/cli/chunks/{chunk-Q335R4MR.js → chunk-3ABRGG3C.js} +2 -2
  26. package/dist/cli/chunks/{chunk-IWFL6EFI.js → chunk-3P6NCFI2.js} +2 -2
  27. package/dist/cli/chunks/{chunk-4AKGBUYD.js → chunk-42VSQ2MX.js} +3 -3
  28. package/dist/cli/chunks/{chunk-2LKAMMMI.js → chunk-44WISFTU.js} +2 -2
  29. package/dist/cli/chunks/{chunk-RFNEHNJV.js → chunk-4C6UJIHB.js} +1 -1
  30. package/dist/cli/chunks/{chunk-CTCQOYBS.js → chunk-4JBFJTHJ.js} +1 -1
  31. package/dist/cli/chunks/{chunk-GJAWEUIN.js → chunk-4OUPCTBS.js} +2 -2
  32. package/dist/cli/chunks/{chunk-2EHFEMRU.js → chunk-4Q35TI6Z.js} +2 -2
  33. package/dist/cli/chunks/{chunk-N3RN4QTC.js → chunk-4RP5VUBI.js} +2 -2
  34. package/dist/cli/chunks/{chunk-ZYLSOBOR.js → chunk-4TXAP3YH.js} +1 -1
  35. package/dist/cli/chunks/{chunk-KZOBLLXW.js → chunk-4UDZLD42.js} +2 -2
  36. package/dist/cli/chunks/{chunk-UYTWDS2R.js → chunk-4W7QVUNO.js} +2 -2
  37. package/dist/cli/chunks/{chunk-4ZUZDFAA.js → chunk-4XPPMADQ.js} +2 -2
  38. package/dist/cli/chunks/{chunk-TENYL5TI.js → chunk-527HQAY7.js} +2 -2
  39. package/dist/cli/chunks/chunk-5BLFXQEB.js +96 -0
  40. package/dist/cli/chunks/{chunk-OX6T26CD.js → chunk-5DFHE4H5.js} +3 -3
  41. package/dist/cli/chunks/{chunk-T46LOLW3.js → chunk-5F6DWHQG.js} +2 -2
  42. package/dist/cli/chunks/{chunk-FVGTINVR.js → chunk-5FOZO7KM.js} +81 -65
  43. package/dist/cli/chunks/{chunk-T4C56HBW.js → chunk-5IAB5NRZ.js} +2 -2
  44. package/dist/cli/chunks/{chunk-4MH22236.js → chunk-5P3G6ZW4.js} +1 -1
  45. package/dist/cli/chunks/{chunk-7AFBNU6K.js → chunk-5Y5TC6BY.js} +2 -2
  46. package/dist/cli/chunks/{chunk-VSYBMNIR.js → chunk-6F2RM6X2.js} +1 -1
  47. package/dist/cli/chunks/{chunk-ICKLBATY.js → chunk-72UJXEKQ.js} +2 -2
  48. package/dist/cli/chunks/{chunk-A7N3YUDJ.js → chunk-74PK3NEW.js} +2 -2
  49. package/dist/cli/chunks/{chunk-PMUBG2RU.js → chunk-7BUERZYL.js} +2 -2
  50. package/dist/cli/chunks/{chunk-HZMLNM2T.js → chunk-7FYMDKQH.js} +174 -169
  51. package/dist/cli/chunks/{chunk-67A6PEZM.js → chunk-7G6UX2QN.js} +2 -2
  52. package/dist/cli/chunks/{chunk-G2CLZVYI.js → chunk-7JQHPANT.js} +3 -3
  53. package/dist/cli/chunks/{chunk-TLPL3EQY.js → chunk-7SLAZAVU.js} +2 -2
  54. package/dist/cli/chunks/{chunk-4UCMTYFQ.js → chunk-7Y2CEXRS.js} +4 -4
  55. package/dist/cli/chunks/{chunk-2H5YJ5ZK.js → chunk-AB4U6ZNI.js} +2 -2
  56. package/dist/cli/chunks/chunk-AWNYEAGB.js +2 -0
  57. package/dist/cli/chunks/chunk-B2ZONZPZ.js +5 -0
  58. package/dist/cli/chunks/{chunk-6F4WHN7D.js → chunk-B5XFDFBT.js} +1 -1
  59. package/dist/cli/chunks/{chunk-5EHLGOWW.js → chunk-B7SWW5A6.js} +2 -2
  60. package/dist/cli/chunks/{chunk-P64DMQ2C.js → chunk-BN7DKW5D.js} +1 -1
  61. package/dist/cli/chunks/{chunk-CIESXO73.js → chunk-C46DMCWF.js} +1 -1
  62. package/dist/cli/chunks/{chunk-HZ6NEJMO.js → chunk-CB5JPRIZ.js} +2 -2
  63. package/dist/cli/chunks/{chunk-SEHCX4NH.js → chunk-CBOPBYPU.js} +1 -1
  64. package/dist/cli/chunks/{chunk-LWUJQGCS.js → chunk-CR3QGHVN.js} +2 -2
  65. package/dist/cli/chunks/{chunk-NHHWLJQF.js → chunk-D4Z2N74A.js} +1 -1
  66. package/dist/cli/chunks/{chunk-4K27ESCA.js → chunk-DBA3N742.js} +1 -1
  67. package/dist/cli/chunks/{chunk-2TG24LYQ.js → chunk-DX3C5HPN.js} +1 -1
  68. package/dist/cli/chunks/{chunk-S4MR6RTE.js → chunk-E3FBW6G2.js} +1 -1
  69. package/dist/cli/chunks/{chunk-GHUPID5E.js → chunk-ELU4IC3I.js} +1 -1
  70. package/dist/cli/chunks/{chunk-C7AXRI7E.js → chunk-EY4OQHU3.js} +1 -1
  71. package/dist/cli/chunks/{chunk-6LMLN5R2.js → chunk-F67AV5P2.js} +2 -2
  72. package/dist/cli/chunks/chunk-FD2JFEQC.js +2 -0
  73. package/dist/cli/chunks/chunk-FKG5OQFT.js +2 -0
  74. package/dist/cli/chunks/{chunk-UIGEUEBT.js → chunk-FUE6LL72.js} +2 -2
  75. package/dist/cli/chunks/{chunk-4RT7I7PI.js → chunk-G5C2XVZC.js} +1 -1
  76. package/dist/cli/chunks/{chunk-WVY22NHZ.js → chunk-G6DCESPU.js} +2 -2
  77. package/dist/cli/chunks/{chunk-3DFFFXXO.js → chunk-G6ZHTF42.js} +2 -2
  78. package/dist/cli/chunks/{chunk-CH2TQCV5.js → chunk-GNTVFN7D.js} +1 -1
  79. package/dist/cli/chunks/{chunk-WMW47QMR.js → chunk-H5ZRV5K5.js} +2 -2
  80. package/dist/cli/chunks/{chunk-4M6A3PVJ.js → chunk-H6XBM2LY.js} +2 -2
  81. package/dist/cli/chunks/{chunk-4N44UJGI.js → chunk-HOQQCY2K.js} +2 -2
  82. package/dist/cli/chunks/{chunk-D4RCV4LY.js → chunk-HRUU7E3D.js} +2 -2
  83. package/dist/cli/chunks/{chunk-EAJK25IS.js → chunk-HXE5NBJG.js} +1 -1
  84. package/dist/cli/chunks/{chunk-IUNMW454.js → chunk-I4NDQGKP.js} +2 -2
  85. package/dist/cli/chunks/{chunk-CJHVOBJY.js → chunk-IFFZR6GY.js} +1 -1
  86. package/dist/cli/chunks/{chunk-YN6W2XIT.js → chunk-IKIITGU5.js} +3 -3
  87. package/dist/cli/chunks/{chunk-JIUF6NV6.js → chunk-IP7NSFQQ.js} +2 -2
  88. package/dist/cli/chunks/{chunk-3C2K4YMS.js → chunk-IQEJGZV6.js} +3 -3
  89. package/dist/cli/chunks/{chunk-RGH3WGWD.js → chunk-IU4EBTA2.js} +3 -3
  90. package/dist/cli/chunks/{chunk-QW4LN5NK.js → chunk-JBB7E26R.js} +2 -2
  91. package/dist/cli/chunks/{chunk-RYJHREYS.js → chunk-JRYZKBY2.js} +2 -2
  92. package/dist/cli/chunks/{chunk-6EHN7Q2Q.js → chunk-JV4FZUE7.js} +2 -2
  93. package/dist/cli/chunks/{chunk-PZKZY6PB.js → chunk-KF63AYXD.js} +2 -2
  94. package/dist/cli/chunks/{chunk-ZFGND4QK.js → chunk-KPMGTVB4.js} +1 -1
  95. package/dist/cli/chunks/chunk-L2GKMBDP.js +2 -0
  96. package/dist/cli/chunks/{chunk-7FWP7CZY.js → chunk-LHGNNZ76.js} +3 -3
  97. package/dist/cli/chunks/{chunk-HSJ5FQCF.js → chunk-LKN7JQTW.js} +2 -2
  98. package/dist/cli/chunks/{chunk-EH5OCHAJ.js → chunk-LLVGTEHU.js} +1 -1
  99. package/dist/cli/chunks/{chunk-TYVQNYXX.js → chunk-LS3EUMBP.js} +6 -6
  100. package/dist/cli/chunks/{chunk-F2KRT2II.js → chunk-LTBCAFTZ.js} +3 -3
  101. package/dist/cli/chunks/{chunk-PVHO6KLB.js → chunk-LVLBIKJD.js} +1 -1
  102. package/dist/cli/chunks/{chunk-5WJUNRTY.js → chunk-MDZ6RRLX.js} +2 -2
  103. package/dist/cli/chunks/{chunk-W4OQYLYO.js → chunk-MWWAMDHI.js} +1 -1
  104. package/dist/cli/chunks/{chunk-N5ZRUOMR.js → chunk-MXMFGSWR.js} +2 -2
  105. package/dist/cli/chunks/{chunk-L2F7FVIU.js → chunk-N4H2QOT5.js} +2 -2
  106. package/dist/cli/chunks/{chunk-R5RNOLHI.js → chunk-NBWQBQO5.js} +1 -1
  107. package/dist/cli/chunks/{chunk-IVGVOGIZ.js → chunk-NN76NTOX.js} +1 -1
  108. package/dist/cli/chunks/{chunk-OBCKP3G4.js → chunk-NTSXHZTC.js} +2 -2
  109. package/dist/cli/chunks/{chunk-YF5OP6CR.js → chunk-OV5EZO3U.js} +2 -2
  110. package/dist/cli/chunks/{chunk-JQ2ZD3WO.js → chunk-OVDKWCD7.js} +2 -2
  111. package/dist/cli/chunks/{chunk-WBH4C4BG.js → chunk-OVPJQWHW.js} +2 -2
  112. package/dist/cli/chunks/{chunk-6SZKLWZT.js → chunk-OY7MLMEX.js} +5 -5
  113. package/dist/cli/chunks/{chunk-NG2UVPTW.js → chunk-OYMLHX2B.js} +1 -1
  114. package/dist/cli/chunks/{chunk-RVCWSAXI.js → chunk-PI74GOE4.js} +2 -2
  115. package/dist/cli/chunks/{chunk-42WUDDUU.js → chunk-PZTVH2AS.js} +2 -2
  116. package/dist/cli/chunks/{chunk-4PH7O5ZH.js → chunk-QLWNXBRU.js} +2 -2
  117. package/dist/cli/chunks/{chunk-FPHPP5TQ.js → chunk-R2AFVFRF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-MWQTACNA.js → chunk-RKJZWWB7.js} +2 -2
  119. package/dist/cli/chunks/{chunk-FREF6Y4L.js → chunk-ROX7NLS4.js} +2 -2
  120. package/dist/cli/chunks/{chunk-K574FLVB.js → chunk-RTJ2M6V6.js} +2 -2
  121. package/dist/cli/chunks/{chunk-NWFIJNEB.js → chunk-SG47AXJG.js} +1 -1
  122. package/dist/cli/chunks/{chunk-UHTAI4ZB.js → chunk-SGXSB7YO.js} +1 -1
  123. package/dist/cli/chunks/{chunk-PWEIDHT7.js → chunk-SHGKY3QB.js} +2 -2
  124. package/dist/cli/chunks/{chunk-MH73D5TN.js → chunk-SJPZSCZP.js} +2 -2
  125. package/dist/cli/chunks/{chunk-3WV4H33V.js → chunk-SQ3PPISY.js} +1 -1
  126. package/dist/cli/chunks/{chunk-RCI64RIJ.js → chunk-STRDSVH3.js} +2 -2
  127. package/dist/cli/chunks/{chunk-GHQ5PUOV.js → chunk-T35GZXTU.js} +2 -2
  128. package/dist/cli/chunks/{chunk-DRO5NJZA.js → chunk-T62DH4GG.js} +2 -2
  129. package/dist/cli/chunks/{chunk-W2FLULF4.js → chunk-TFHQE6NK.js} +2 -2
  130. package/dist/cli/chunks/{chunk-LML5VTFK.js → chunk-TGLAWI62.js} +1 -1
  131. package/dist/cli/chunks/{chunk-KFXZDQ5J.js → chunk-TISSZFHO.js} +1 -1
  132. package/dist/cli/chunks/{chunk-KPFG4OIM.js → chunk-TJEIOE7F.js} +1 -1
  133. package/dist/cli/chunks/{chunk-57TNBR2P.js → chunk-TTMHIOQ3.js} +2 -2
  134. package/dist/cli/chunks/{chunk-ARMZYHYL.js → chunk-UHQY3GK7.js} +2 -2
  135. package/dist/cli/chunks/{chunk-ADK7DF3G.js → chunk-UMENRGHK.js} +2 -2
  136. package/dist/cli/chunks/{chunk-ZWRQ5VAU.js → chunk-UMNYF5EZ.js} +2 -2
  137. package/dist/cli/chunks/{chunk-G6AV2HGY.js → chunk-UTVRQEZM.js} +3 -3
  138. package/dist/cli/chunks/{chunk-VOYJJ3KA.js → chunk-UYJHYMEQ.js} +2 -2
  139. package/dist/cli/chunks/{chunk-KEEBUVGV.js → chunk-V4AOVDCJ.js} +2 -2
  140. package/dist/cli/chunks/{chunk-HBTC4L53.js → chunk-VIDBBB6F.js} +2 -2
  141. package/dist/cli/chunks/{chunk-PFXX5Q32.js → chunk-VWNHKYK7.js} +2 -2
  142. package/dist/cli/chunks/{chunk-DW6ZMNMR.js → chunk-WYMGK5DX.js} +2 -2
  143. package/dist/cli/chunks/{chunk-CJCT452S.js → chunk-XA7CG3LH.js} +2 -2
  144. package/dist/cli/chunks/{chunk-QFUX7ELG.js → chunk-XX7HUSX2.js} +2 -2
  145. package/dist/cli/chunks/{chunk-WXMSRBQF.js → chunk-XXCYQXK3.js} +2 -2
  146. package/dist/cli/chunks/{chunk-6VKJAMZY.js → chunk-Y2DVFVGI.js} +1 -1
  147. package/dist/cli/chunks/{chunk-JDXLCNKV.js → chunk-Y5SQBI2F.js} +2 -2
  148. package/dist/cli/chunks/{chunk-QXTW7XCS.js → chunk-YAKS3CAB.js} +2 -2
  149. package/dist/cli/chunks/{chunk-Q3JHS3UD.js → chunk-YCBDE2N7.js} +2 -2
  150. package/dist/cli/chunks/{chunk-VNAKBHJI.js → chunk-YDNSLLBS.js} +2 -2
  151. package/dist/cli/chunks/{chunk-S7N4BKI3.js → chunk-YEXPFHV6.js} +2 -2
  152. package/dist/cli/chunks/{chunk-CG2MUD7U.js → chunk-YGB6R5DW.js} +1 -1
  153. package/dist/cli/chunks/{chunk-NNOMDM4N.js → chunk-YL7T3VV7.js} +2 -2
  154. package/dist/cli/chunks/{chunk-U54OOA24.js → chunk-ZHXWGNYM.js} +1 -1
  155. package/dist/cli/chunks/{chunk-NRR23SJV.js → chunk-ZK5JKHP4.js} +1 -1
  156. package/dist/cli/chunks/{chunk-XPLSLHRB.js → chunk-ZN3J6TZD.js} +1 -1
  157. package/dist/cli/chunks/{chunk-RHJVDCLV.js → chunk-ZUG5MOUB.js} +2 -2
  158. package/dist/cli/chunks/{ci-NTRH7PAW.js → ci-YVKDQWIX.js} +2 -2
  159. package/dist/cli/chunks/ci-output-LK3MBXLZ.js +2 -0
  160. package/dist/cli/chunks/{circuit-breaker-4WST3QSA.js → circuit-breaker-7AIXACR7.js} +2 -2
  161. package/dist/cli/chunks/{claude-flow-setup-KB4TKMYI.js → claude-flow-setup-UA7EO6VN.js} +2 -2
  162. package/dist/cli/chunks/client-M72GXFVQ.js +2 -0
  163. package/dist/cli/chunks/{cline-installer-W2ZHQ6WM.js → cline-installer-YDDCKKEV.js} +2 -2
  164. package/dist/cli/chunks/{code-TF2AVR5D.js → code-URB7UAKW.js} +2 -2
  165. package/dist/cli/chunks/{code-index-extractor-RMDRUVQJ.js → code-index-extractor-BL6HWH4Q.js} +2 -2
  166. package/dist/cli/chunks/{codex-installer-VSTRHJHV.js → codex-installer-2AVEO4EA.js} +2 -2
  167. package/dist/cli/chunks/{completions-3Q37QVFR.js → completions-RCKBSSSS.js} +2 -2
  168. package/dist/cli/chunks/{complexity-analyzer-3FNFLACD.js → complexity-analyzer-LEDG62YK.js} +2 -2
  169. package/dist/cli/chunks/{continuedev-installer-VTEXM455.js → continuedev-installer-VOTCEBFH.js} +2 -2
  170. package/dist/cli/chunks/{copilot-installer-AGY7DQUS.js → copilot-installer-NVTGLZX3.js} +2 -2
  171. package/dist/cli/chunks/core-handlers-C32RAMVI.js +2 -0
  172. package/dist/cli/chunks/{cost-tracker-LTZAQBX7.js → cost-tracker-GJIFB2BM.js} +2 -2
  173. package/dist/cli/chunks/{coverage-TT64IOS4.js → coverage-ZTPJWXWE.js} +3 -3
  174. package/dist/cli/chunks/cross-domain-router-UGFUCPKC.js +2 -0
  175. package/dist/cli/chunks/{cursor-installer-OVOJIOHN.js → cursor-installer-CMGJQMHX.js} +2 -2
  176. package/dist/cli/chunks/{daemon-DMFZMXKA.js → daemon-V456IWR3.js} +3 -3
  177. package/dist/cli/chunks/{daemon-XCULEHWY.js → daemon-Y2I3YVIU.js} +4 -4
  178. package/dist/cli/chunks/{dag-attention-scheduler-WW2RX4B5.js → dag-attention-scheduler-ZCBBOD3D.js} +2 -2
  179. package/dist/cli/chunks/{detect-QNWIM232.js → detect-2GHEA4A3.js} +2 -2
  180. package/dist/cli/chunks/{dist-node-6GQIY3CG.js → dist-node-44AGYJCH.js} +2 -2
  181. package/dist/cli/chunks/{domain-handler-6RJPDELX.js → domain-handler-IDLIEP6X.js} +2 -2
  182. package/dist/cli/chunks/{domain-transfer-WK524LBS.js → domain-transfer-KLEXGIRF.js} +2 -2
  183. package/dist/cli/chunks/dream-UFBBXY5W.js +2 -0
  184. package/dist/cli/chunks/{embed-and-insert-pattern-SO6GWJW7.js → embed-and-insert-pattern-DUW6K35A.js} +2 -2
  185. package/dist/cli/chunks/{eval-GL544IPO.js → eval-PR6YWDFM.js} +2 -2
  186. package/dist/cli/chunks/{experience-capture-middleware-BCCJ35OX.js → experience-capture-middleware-CJJJN7CF.js} +3 -3
  187. package/dist/cli/chunks/{fast-paths-CATDDBEU.js → fast-paths-LGLLKX6P.js} +2 -2
  188. package/dist/cli/chunks/{feature-flags-BUXNAORY.js → feature-flags-33D3I4DD.js} +2 -2
  189. package/dist/cli/chunks/{feature-flags-KNNWWP5G.js → feature-flags-QL4NCEGW.js} +2 -2
  190. package/dist/cli/chunks/{file-discovery-S4HF3O7D.js → file-discovery-GKCYJPFZ.js} +2 -2
  191. package/dist/cli/chunks/{fleet-DQVQQONW.js → fleet-QNT6X2YI.js} +3 -3
  192. package/dist/cli/chunks/{gnn-wrapper-G7ABZUG7.js → gnn-wrapper-ELSGT67Z.js} +2 -2
  193. package/dist/cli/chunks/{heartbeat-handler-UFMELIWT.js → heartbeat-handler-ZUI3DOOP.js} +4 -4
  194. package/dist/cli/chunks/heartbeat-scheduler-VQWHSGTY.js +2 -0
  195. package/dist/cli/chunks/hnsw-adapter-BS3NXWGU.js +2 -0
  196. package/dist/cli/chunks/hnsw-index-JP26B4HW.js +2 -0
  197. package/dist/cli/chunks/{hnsw-legacy-bridge-YIILSRXI.js → hnsw-legacy-bridge-EZMM5JWL.js} +2 -2
  198. package/dist/cli/chunks/{hnswlib-node-TSVRMXDH.js → hnswlib-node-G4CE3EOS.js} +2 -2
  199. package/dist/cli/chunks/{hooks-OHQPNK74.js → hooks-LCVXXA55.js} +10 -10
  200. package/dist/cli/chunks/{hypergraph-engine-LY7PJDSL.js → hypergraph-engine-6Z7RQ3HI.js} +2 -2
  201. package/dist/cli/chunks/{hypergraph-handler-YGDYZO6H.js → hypergraph-handler-PLI2GYPK.js} +3 -3
  202. package/dist/cli/chunks/impact-analyzer-WRE4CWPJ.js +2 -0
  203. package/dist/cli/chunks/{init-handler-MTK65LI3.js → init-handler-7VH3QJ5Y.js} +6 -6
  204. package/dist/cli/chunks/init-wizard-OFOEYB75.js +2 -0
  205. package/dist/cli/chunks/kernel-MXNFWNUD.js +2 -0
  206. package/dist/cli/chunks/{kilocode-installer-3IICU4RS.js → kilocode-installer-U3MW62DE.js} +2 -2
  207. package/dist/cli/chunks/{kiro-installer-MXOVQYQA.js → kiro-installer-PPEAC44T.js} +2 -2
  208. package/dist/cli/chunks/knowledge-graph-7JE2TVKJ.js +2 -0
  209. package/dist/cli/chunks/{learning-EV5LSOOM.js → learning-7B5NITDV.js} +3 -3
  210. package/dist/cli/chunks/{llm-router-7LYDJUOT.js → llm-router-BNEPT5OB.js} +4 -4
  211. package/dist/cli/chunks/llm-router-service-GTDVDKSU.js +2 -0
  212. package/dist/cli/chunks/{load-F4PVAMXQ.js → load-VO7ABNHV.js} +2 -2
  213. package/dist/cli/chunks/load-test-JZ4CLSBF.js +2 -0
  214. package/dist/cli/chunks/{mcp-DUYJUEME.js → mcp-THXEINCL.js} +2 -2
  215. package/dist/cli/chunks/{memory-XTTYORAS.js → memory-FZTT7ADM.js} +5 -5
  216. package/dist/cli/chunks/memory-backend-Q54CC5A5.js +2 -0
  217. package/dist/cli/chunks/memory-handlers-IIBJXKHZ.js +2 -0
  218. package/dist/cli/chunks/{multi-model-executor-R6XCTMCF.js → multi-model-executor-HEDVOZ6X.js} +2 -2
  219. package/dist/cli/chunks/{opencode-installer-33ULBU2F.js → opencode-installer-GQ7J5SBG.js} +2 -2
  220. package/dist/cli/chunks/{orchestrator-34ZJEKTJ.js → orchestrator-66JK2OS5.js} +5 -5
  221. package/dist/cli/chunks/pattern-null-store-W33O7FYO.js +2 -0
  222. package/dist/cli/chunks/{pattern-usage-recorder-GZ2M3F2E.js → pattern-usage-recorder-O6XHM2G5.js} +2 -2
  223. package/dist/cli/chunks/{pipeline-SR5OTY45.js → pipeline-UOG6UO6D.js} +2 -2
  224. package/dist/cli/chunks/{platform-VKJFJIAW.js → platform-Q7UH7FZQ.js} +2 -2
  225. package/dist/cli/chunks/{plugin-5C5UBQUQ.js → plugin-7OFLNGOS.js} +2 -2
  226. package/dist/cli/chunks/{prime-radiant-advanced-wasm-KO2PQI3D.js → prime-radiant-advanced-wasm-OSRDK2FW.js} +2 -2
  227. package/dist/cli/chunks/protocol-executor-VGN4M7XY.js +2 -0
  228. package/dist/cli/chunks/{protocol-handler-ZF74NIKA.js → protocol-handler-WLYTX6FS.js} +2 -2
  229. package/dist/cli/chunks/{prove-MO5TQQU4.js → prove-QVNE4V3J.js} +2 -2
  230. package/dist/cli/chunks/qe-reasoning-bank-7VB5LJGS.js +2 -0
  231. package/dist/cli/chunks/{quality-EYIN6AER.js → quality-DNE2RKE5.js} +2 -2
  232. package/dist/cli/chunks/{quality-gate-V6OQM57O.js → quality-gate-2K35GCSI.js} +3 -3
  233. package/dist/cli/chunks/queen-coordinator-HIDMJMMG.js +2 -0
  234. package/dist/cli/chunks/{real-embeddings-AR7TZX7U.js → real-embeddings-SF42ML7G.js} +2 -2
  235. package/dist/cli/chunks/{roocode-installer-46E626VZ.js → roocode-installer-NCEZPF5L.js} +2 -2
  236. package/dist/cli/chunks/router-CTIJS4D7.js +2 -0
  237. package/dist/cli/chunks/routing-feedback-LFYYZS5J.js +2 -0
  238. package/dist/cli/chunks/{routing-handler-ZNRVW6QW.js → routing-handler-4MXXZRYP.js} +2 -2
  239. package/dist/cli/chunks/{ruvector-commands-4L2CQMWS.js → ruvector-commands-WDFMMCMK.js} +2 -2
  240. package/dist/cli/chunks/rvf-dual-writer-MNPMIWVM.js +2 -0
  241. package/dist/cli/chunks/rvf-migration-adapter-DXOKSSNW.js +2 -0
  242. package/dist/cli/chunks/{rvf-migration-coordinator-H4RVGBIA.js → rvf-migration-coordinator-JT7ZCJY7.js} +2 -2
  243. package/dist/cli/chunks/rvf-native-adapter-PZKUKA7R.js +2 -0
  244. package/dist/cli/chunks/{rvf-store-integrity-OJGWWPLL.js → rvf-store-integrity-Q3FGYKFT.js} +2 -2
  245. package/dist/cli/chunks/safe-db-73BLFV2C.js +2 -0
  246. package/dist/cli/chunks/schedule-YVTGTTI4.js +2 -0
  247. package/dist/cli/chunks/scheduler-5DSAFIRQ.js +2 -0
  248. package/dist/cli/chunks/security-CJJ3WJSB.js +13 -0
  249. package/dist/cli/chunks/{shared-rvf-adapter-M6NNIZ5W.js → shared-rvf-adapter-6RGCTLHD.js} +2 -2
  250. package/dist/cli/chunks/{shared-rvf-dual-writer-LHMFCYVE.js → shared-rvf-dual-writer-KIA6Q6MT.js} +2 -2
  251. package/dist/cli/chunks/sqlite-persistence-LRG4IPCU.js +2 -0
  252. package/dist/cli/chunks/{status-handler-GMIOXQIE.js → status-handler-BADQV2KA.js} +2 -2
  253. package/dist/cli/chunks/{structural-health-YZXHVHM6.js → structural-health-VMYEYRZG.js} +2 -2
  254. package/dist/cli/chunks/{sync-GMPCPV5L.js → sync-PXLROLHB.js} +2 -2
  255. package/dist/cli/chunks/{sync-N56UQGCS.js → sync-ULY7T5II.js} +2 -2
  256. package/dist/cli/chunks/{task-handler-VTNRGAXP.js → task-handler-L7E2I267.js} +2 -2
  257. package/dist/cli/chunks/{task-handlers-FYSDH55N.js → task-handlers-6DPKE4AK.js} +3 -3
  258. package/dist/cli/chunks/{test-GQNCKRSP.js → test-WCLURQUT.js} +11 -11
  259. package/dist/cli/chunks/test-scheduling-4CNJA6TW.js +15 -0
  260. package/dist/cli/chunks/{token-bootstrap-76SRNXGG.js → token-bootstrap-GTI24JAL.js} +2 -2
  261. package/dist/cli/chunks/{token-usage-O7CZDP5Q.js → token-usage-DRVG6PKO.js} +2 -2
  262. package/dist/cli/chunks/{transformers-LTU4LSSC.js → transformers-IMDDAMYQ.js} +2 -2
  263. package/dist/cli/chunks/{tree-sitter-wasm-parser-NQSQCMBM.js → tree-sitter-wasm-parser-WBZIHVFA.js} +2 -2
  264. package/dist/cli/chunks/{types-OP6IWE6N.js → types-TXMY5M2K.js} +2 -2
  265. package/dist/cli/chunks/unified-memory-VBQ572X4.js +2 -0
  266. package/dist/cli/chunks/unified-memory-hnsw-J3L74ZRY.js +2 -0
  267. package/dist/cli/chunks/unified-persistence-EM2VYRTQ.js +2 -0
  268. package/dist/cli/chunks/{upgrade-OQWRBZ3R.js → upgrade-6ALSDWDD.js} +2 -2
  269. package/dist/cli/chunks/{validate-TH5SRP3E.js → validate-XF4ZG3LC.js} +2 -2
  270. package/dist/cli/chunks/{validate-swarm-UITL2JUS.js → validate-swarm-P5TAFRDA.js} +2 -2
  271. package/dist/cli/chunks/{vibium-O6PRAG4J.js → vibium-2XDXKNKZ.js} +2 -2
  272. package/dist/cli/chunks/visual-security-GX4S7K6O.js +2 -0
  273. package/dist/cli/chunks/{web-tree-sitter-XBFBY4OF.js → web-tree-sitter-4JVRQPX5.js} +2 -2
  274. package/dist/cli/chunks/{windsurf-installer-DVT5NRNY.js → windsurf-installer-WYJXVDO5.js} +2 -2
  275. package/dist/cli/chunks/witness-chain-QGKMHCNW.js +2 -0
  276. package/dist/cli/chunks/{witness-chain-VRSH2F36.js → witness-chain-RPZ2SE2V.js} +2 -2
  277. package/dist/cli/chunks/{witness-key-manager-GFHRDKQ4.js → witness-key-manager-LXG2VBQQ.js} +2 -2
  278. package/dist/cli/chunks/{workflow-HAZ6YKOG.js → workflow-2OYNO7UU.js} +4 -4
  279. package/dist/cli/chunks/workflow-orchestrator-KWHIJMFV.js +2 -0
  280. package/dist/cli/chunks/{wrappers-5LLLT7GM.js → wrappers-DIJNNFU6.js} +2 -2
  281. package/dist/cli/commands/security.js +167 -100
  282. package/dist/cli/commands/test.js +1 -0
  283. package/dist/cli/utils/ci-output.d.ts +17 -0
  284. package/dist/cli/utils/ci-output.js +34 -2
  285. package/dist/coordination/handlers/handler-types.d.ts +3 -0
  286. package/dist/coordination/handlers/quality-handlers.js +10 -0
  287. package/dist/coordination/handlers/security-handlers.js +168 -72
  288. package/dist/coordination/handlers/test-execution-handlers.js +37 -43
  289. package/dist/coordination/protocols/security-audit.d.ts +3 -0
  290. package/dist/coordination/protocols/security-audit.js +61 -39
  291. package/dist/coordination/result-saver.js +36 -5
  292. package/dist/coordination/task-executor.d.ts +3 -1
  293. package/dist/coordination/task-executor.js +4 -0
  294. package/dist/domains/security-compliance/interfaces.d.ts +5 -0
  295. package/dist/domains/security-compliance/interfaces.js +0 -6
  296. package/dist/domains/security-compliance/scan-discovery.d.ts +12 -0
  297. package/dist/domains/security-compliance/scan-discovery.js +105 -0
  298. package/dist/domains/security-compliance/scan-evidence.d.ts +57 -0
  299. package/dist/domains/security-compliance/scan-evidence.js +2 -0
  300. package/dist/domains/security-compliance/services/scanners/sast-scanner.d.ts +3 -2
  301. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +109 -65
  302. package/dist/domains/security-compliance/services/semgrep-integration.d.ts +9 -2
  303. package/dist/domains/security-compliance/services/semgrep-integration.js +68 -20
  304. package/dist/domains/test-execution/services/flaky-detector.js +14 -3
  305. package/dist/domains/test-execution/services/retry-handler.js +18 -8
  306. package/dist/domains/test-execution/services/test-executor.js +46 -12
  307. package/dist/init/init-wizard-hooks.js +2 -2
  308. package/dist/integrations/agentic-flow/reasoning-bank/index.js +3 -20
  309. package/dist/integrations/coherence/engines/cohomology-adapter.js +100 -30
  310. package/dist/mcp/bundle.js +499 -478
  311. package/dist/mcp/handlers/domain-handler-configs.d.ts +22 -1
  312. package/dist/mcp/handlers/domain-handler-configs.js +50 -19
  313. package/dist/mcp/handlers/domain-handlers.d.ts +7 -5
  314. package/dist/mcp/handlers/domain-handlers.js +7 -5
  315. package/dist/mcp/protocol-server.js +9 -5
  316. package/dist/mcp/types.d.ts +5 -0
  317. package/dist/shared/llm/router/hybrid-router.d.ts +4 -0
  318. package/dist/shared/llm/router/hybrid-router.js +74 -26
  319. package/dist/shared/llm/router/types.d.ts +9 -2
  320. package/dist/shared/test-runner-verdict.d.ts +29 -0
  321. package/dist/shared/test-runner-verdict.js +43 -0
  322. package/dist/shared/vitest-json-report.d.ts +45 -0
  323. package/dist/shared/vitest-json-report.js +71 -0
  324. package/dist/test-scheduling/executors/vitest-executor.js +18 -6
  325. package/dist/validation/frontier-judge.d.ts +7 -4
  326. package/dist/validation/frontier-judge.js +11 -6
  327. package/package.json +6 -6
  328. package/dist/cli/chunks/adapter-OJF6LAJV.js +0 -2
  329. package/dist/cli/chunks/aqe-learning-engine-FGT474XB.js +0 -2
  330. package/dist/cli/chunks/base-HH765JFV.js +0 -2
  331. package/dist/cli/chunks/browser-workflow-NPM4FUPI.js +0 -2
  332. package/dist/cli/chunks/chunk-OC2CKU7I.js +0 -2
  333. package/dist/cli/chunks/chunk-PHHXHG2W.js +0 -2
  334. package/dist/cli/chunks/chunk-U2AY57XZ.js +0 -5
  335. package/dist/cli/chunks/chunk-WBMRADQP.js +0 -81
  336. package/dist/cli/chunks/ci-output-F57RSD35.js +0 -2
  337. package/dist/cli/chunks/client-GPZEC54E.js +0 -2
  338. package/dist/cli/chunks/core-handlers-YMGHYIBR.js +0 -2
  339. package/dist/cli/chunks/cross-domain-router-ECBNTGYJ.js +0 -2
  340. package/dist/cli/chunks/dream-EHGKCFWH.js +0 -2
  341. package/dist/cli/chunks/heartbeat-scheduler-UFEL2CBW.js +0 -2
  342. package/dist/cli/chunks/hnsw-adapter-BLSD45CX.js +0 -2
  343. package/dist/cli/chunks/hnsw-index-A3RZODEN.js +0 -2
  344. package/dist/cli/chunks/impact-analyzer-OXHD3FOH.js +0 -2
  345. package/dist/cli/chunks/init-wizard-PKZL7QBU.js +0 -2
  346. package/dist/cli/chunks/kernel-XWPM72UJ.js +0 -2
  347. package/dist/cli/chunks/knowledge-graph-FRKR5XWI.js +0 -2
  348. package/dist/cli/chunks/llm-router-service-R7A5HHDM.js +0 -2
  349. package/dist/cli/chunks/load-test-5IKDWSYL.js +0 -2
  350. package/dist/cli/chunks/memory-backend-7VW5QCMO.js +0 -2
  351. package/dist/cli/chunks/memory-handlers-VZH3R2TQ.js +0 -2
  352. package/dist/cli/chunks/pattern-null-store-BU6LCB2W.js +0 -2
  353. package/dist/cli/chunks/protocol-executor-BSP5LWJN.js +0 -2
  354. package/dist/cli/chunks/qe-reasoning-bank-J2RC7P25.js +0 -2
  355. package/dist/cli/chunks/queen-coordinator-XI5AJV2V.js +0 -2
  356. package/dist/cli/chunks/router-VXQYYA3D.js +0 -2
  357. package/dist/cli/chunks/routing-feedback-HZQTASFF.js +0 -2
  358. package/dist/cli/chunks/rvf-dual-writer-BDTLLJER.js +0 -2
  359. package/dist/cli/chunks/rvf-migration-adapter-IB343MDN.js +0 -2
  360. package/dist/cli/chunks/rvf-native-adapter-Y7SN7LHU.js +0 -2
  361. package/dist/cli/chunks/safe-db-2VTKKBJU.js +0 -2
  362. package/dist/cli/chunks/schedule-QJ4CFGJY.js +0 -2
  363. package/dist/cli/chunks/scheduler-2NHDQPC3.js +0 -2
  364. package/dist/cli/chunks/security-JF3BVNRO.js +0 -14
  365. package/dist/cli/chunks/sqlite-persistence-NVVAPZN3.js +0 -2
  366. package/dist/cli/chunks/test-scheduling-GPRXSIRP.js +0 -15
  367. package/dist/cli/chunks/unified-memory-DSTIEDSH.js +0 -2
  368. package/dist/cli/chunks/unified-memory-hnsw-KBV3P4OS.js +0 -2
  369. package/dist/cli/chunks/unified-persistence-XKCOUBKY.js +0 -2
  370. package/dist/cli/chunks/visual-security-TTWSPZTZ.js +0 -2
  371. package/dist/cli/chunks/witness-chain-2KY73HPN.js +0 -2
  372. package/dist/cli/chunks/workflow-orchestrator-UK56AVOT.js +0 -2
@@ -111,16 +111,25 @@ export class SecurityAuditProtocol {
111
111
  triagedFindings: this.createEmptyTriagedFindings(),
112
112
  overallRiskScore: RiskScore.create(0),
113
113
  recommendations: [],
114
- deploymentDecision: { allowed: true, reason: '', blockingIssues: [], warnings: [] },
114
+ incompleteChecks: [],
115
+ deploymentDecision: { allowed: false, reason: 'Audit not completed', blockingIssues: [], warnings: [] },
115
116
  };
116
117
  // Adjust scope based on trigger
117
118
  const auditOptions = this.getAuditOptionsForTrigger(trigger);
118
119
  // Phase 1: Vulnerability Scan (SAST)
119
- this.updatePhase('vulnerability-scan');
120
- const sastResult = await this.scanVulnerabilities(auditOptions);
121
- if (sastResult.success) {
122
- this.currentAudit = { ...this.currentAudit, sastResult: sastResult.value };
123
- await this.publishVulnerabilities(sastResult.value.vulnerabilities);
120
+ if (auditOptions.includeSAST) {
121
+ this.updatePhase('vulnerability-scan');
122
+ const sastResult = await this.scanVulnerabilities(auditOptions);
123
+ if (sastResult.success) {
124
+ this.currentAudit = { ...this.currentAudit, sastResult: sastResult.value };
125
+ await this.publishVulnerabilities(sastResult.value.vulnerabilities);
126
+ if (sastResult.value.evidence?.completeness !== 'complete') {
127
+ this.recordIncompleteCheck('SAST coverage is incomplete or unverified');
128
+ }
129
+ }
130
+ else {
131
+ this.recordIncompleteCheck('SAST scan did not complete');
132
+ }
124
133
  }
125
134
  // Phase 2: Dependency Scan
126
135
  this.updatePhase('dependency-scan');
@@ -129,32 +138,51 @@ export class SecurityAuditProtocol {
129
138
  this.currentAudit = { ...this.currentAudit, dependencyResult: depResult.value };
130
139
  await this.publishDependencyVulnerabilities(depResult.value.vulnerabilities);
131
140
  }
141
+ else {
142
+ this.recordIncompleteCheck('Dependency scan did not complete');
143
+ }
132
144
  // Phase 3: Secret Scan (if enabled)
133
- if (this.config.enableSecretScan) {
145
+ if (auditOptions.includeSecrets) {
134
146
  this.updatePhase('secret-scan');
135
147
  const secretResult = await this.auditSecrets();
136
148
  if (secretResult.success) {
137
149
  this.currentAudit = { ...this.currentAudit, secretResult: secretResult.value };
138
150
  await this.publishSecretExposures(secretResult.value.secretsFound);
139
151
  }
152
+ else {
153
+ this.recordIncompleteCheck('Secret scan is unavailable');
154
+ }
140
155
  }
141
156
  // Phase 4: DAST Scan (if enabled and URL provided)
142
- if (this.config.enableDAST && this.config.targetUrl) {
157
+ if (auditOptions.includeDAST && this.config.targetUrl) {
143
158
  const dastResult = await this.runDASTScan(this.config.targetUrl);
144
159
  if (dastResult.success) {
145
160
  this.currentAudit = { ...this.currentAudit, dastResult: dastResult.value };
161
+ this.recordIncompleteCheck('DAST coverage is unverified: the scanner returned no execution receipt');
146
162
  await this.publishVulnerabilities(dastResult.value.vulnerabilities);
147
163
  }
164
+ else {
165
+ this.recordIncompleteCheck('DAST scan did not complete');
166
+ }
167
+ }
168
+ else if (auditOptions.includeDAST) {
169
+ this.recordIncompleteCheck('DAST requested without a target URL');
148
170
  }
149
171
  // Phase 5: Compliance Validation
150
- this.updatePhase('compliance-validation');
151
- const complianceResult = await this.validateCompliance();
152
- if (complianceResult.success) {
153
- this.currentAudit = {
154
- ...this.currentAudit,
155
- complianceReports: complianceResult.value,
156
- };
157
- await this.publishComplianceResults(complianceResult.value);
172
+ if (this.config.complianceStandards.length > 0) {
173
+ this.updatePhase('compliance-validation');
174
+ const complianceResult = await this.validateCompliance();
175
+ if (complianceResult.success) {
176
+ this.currentAudit = {
177
+ ...this.currentAudit,
178
+ complianceReports: complianceResult.value,
179
+ };
180
+ await this.publishComplianceResults(complianceResult.value);
181
+ this.recordIncompleteCheck('Protocol compliance checks have no verified execution receipt');
182
+ }
183
+ else {
184
+ this.recordIncompleteCheck('Compliance validation did not complete');
185
+ }
158
186
  }
159
187
  // Phase 6: Triage Findings
160
188
  this.updatePhase('triage');
@@ -296,26 +324,9 @@ export class SecurityAuditProtocol {
296
324
  * Audit for exposed secrets/credentials
297
325
  */
298
326
  async auditSecrets() {
299
- try {
300
- const agentId = await this.spawnAgent('secret-scanner', ['secret-scan', 'credential-audit']);
301
- if (!agentId.success) {
302
- return err(agentId.error);
303
- }
304
- const secretsFound = [];
305
- // In production, this would scan actual files with patterns like:
306
- // - API keys: /(?:api[_-]?key|apikey)/gi
307
- // - Passwords: /(?:password|passwd|pwd)/gi
308
- // - Tokens: /(?:secret|token|bearer)/gi
309
- // - Private keys: /-----BEGIN\s+(?:RSA\s+)?PRIVATE\s+KEY-----/gi
310
- // For now, report no secrets found (clean scan)
311
- return ok({
312
- secretsFound,
313
- filesScanned: this.config.scanPaths.length * 10, // Estimate
314
- });
315
- }
316
- catch (error) {
317
- return err(toError(error));
318
- }
327
+ // Agent allocation is not scan execution. Until this protocol has a real
328
+ // secret-scanner adapter, retain an explicit unavailable result.
329
+ return err(new Error('Secret scanning is unavailable in SecurityAuditProtocol: no scanner is implemented.'));
319
330
  }
320
331
  /**
321
332
  * Run DAST scan against target URL
@@ -383,7 +394,7 @@ export class SecurityAuditProtocol {
383
394
  return {
384
395
  riskScore: RiskScore.create(0),
385
396
  recommendations: [],
386
- deploymentDecision: { allowed: true, reason: 'No audit data', blockingIssues: [], warnings: [] },
397
+ deploymentDecision: { allowed: false, reason: 'No audit data', blockingIssues: ['No audit evidence'], warnings: [] },
387
398
  };
388
399
  }
389
400
  // Calculate risk score
@@ -641,6 +652,14 @@ export class SecurityAuditProtocol {
641
652
  this.currentAudit = { ...this.currentAudit, phase };
642
653
  }
643
654
  }
655
+ recordIncompleteCheck(reason) {
656
+ if (this.currentAudit) {
657
+ this.currentAudit = {
658
+ ...this.currentAudit,
659
+ incompleteChecks: [...(this.currentAudit.incompleteChecks ?? []), reason],
660
+ };
661
+ }
662
+ }
644
663
  createEmptyTriagedFindings() {
645
664
  return {
646
665
  critical: [],
@@ -717,6 +736,9 @@ export class SecurityAuditProtocol {
717
736
  const recommendations = [];
718
737
  if (!this.currentAudit)
719
738
  return recommendations;
739
+ for (const check of this.currentAudit.incompleteChecks ?? []) {
740
+ recommendations.push(`Complete the required security check before approving deployment: ${check}`);
741
+ }
720
742
  const { triagedFindings, complianceReports } = this.currentAudit;
721
743
  // Critical findings
722
744
  if (triagedFindings.critical.length > 0) {
@@ -747,10 +769,10 @@ export class SecurityAuditProtocol {
747
769
  return recommendations;
748
770
  }
749
771
  determineDeploymentDecision(_riskScore) {
750
- const blockingIssues = [];
772
+ const blockingIssues = [...(this.currentAudit?.incompleteChecks ?? [])];
751
773
  const warnings = [];
752
774
  if (!this.currentAudit) {
753
- return { allowed: true, reason: 'No audit data', blockingIssues, warnings };
775
+ return { allowed: false, reason: 'No audit data', blockingIssues: ['No audit evidence'], warnings };
754
776
  }
755
777
  const { triagedFindings, complianceReports } = this.currentAudit;
756
778
  // Check critical vulnerabilities
@@ -6,6 +6,11 @@ import * as fs from 'fs/promises';
6
6
  import * as path from 'path';
7
7
  import { createHash } from 'crypto';
8
8
  import { safeJsonParse } from '../shared/safe-json.js';
9
+ function securityReportExecution(data) {
10
+ return data.evidence?.completeness === 'complete' ? 'completed'
11
+ : data.evidence?.completeness === 'partial' ? 'partial'
12
+ : data.evidence ? 'unavailable' : 'unverified';
13
+ }
9
14
  // ============================================================================
10
15
  // Test File Patterns by Language/Framework
11
16
  // ============================================================================
@@ -319,6 +324,8 @@ end_of_record
319
324
  `;
320
325
  }
321
326
  generateSarif(data) {
327
+ const status = securityReportExecution(data);
328
+ const findings = data.findings ?? data.topVulnerabilities;
322
329
  return JSON.stringify({
323
330
  $schema: 'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json',
324
331
  version: '2.1.0',
@@ -330,14 +337,23 @@ end_of_record
330
337
  informationUri: 'https://github.com/ruvnet/agentic-qe',
331
338
  },
332
339
  },
333
- results: data.topVulnerabilities.map((v, i) => ({
340
+ properties: { securityScan: { status, evidence: data.evidence, coverage: data.coverage,
341
+ limitations: data.limitations, analysisDepth: data.analysisDepth } },
342
+ invocations: [{
343
+ executionSuccessful: data.evidence?.completeness === 'complete',
344
+ ...(data.evidence?.completeness === 'complete' ? {} : {
345
+ toolExecutionNotifications: [{ level: 'warning',
346
+ message: { text: `Security analysis ${status}; findings do not establish complete coverage.` } }],
347
+ }),
348
+ }],
349
+ results: findings.map((v, i) => ({
334
350
  ruleId: `VULN-${String(i + 1).padStart(3, '0')}`,
335
351
  level: v.severity === 'critical' ? 'error' : v.severity === 'high' ? 'error' : 'warning',
336
- message: { text: v.type },
352
+ message: { text: v.type ?? v.title ?? 'Security finding' },
337
353
  locations: [{
338
354
  physicalLocation: {
339
- artifactLocation: { uri: v.file },
340
- region: { startLine: v.line },
355
+ artifactLocation: { uri: v.file ?? v.location?.file ?? '' },
356
+ ...((v.line ?? v.location?.line ?? 0) > 0 ? { region: { startLine: v.line ?? v.location?.line } } : {}),
341
357
  },
342
358
  }],
343
359
  })),
@@ -411,6 +427,14 @@ ${data.gaps.length === 0 ? 'No significant gaps detected.' : data.gaps.map(g =>
411
427
 
412
428
  **Generated:** ${new Date().toISOString()}
413
429
  **Scanner:** Agentic QE v3 Security
430
+ **Execution:** ${securityReportExecution(data)}
431
+
432
+ ## Execution receipts
433
+
434
+ \`\`\`json
435
+ ${JSON.stringify({ evidence: data.evidence, coverage: data.coverage, limitations: data.limitations,
436
+ analysisDepth: data.analysisDepth }, null, 2)}
437
+ \`\`\`
414
438
 
415
439
  ## Summary
416
440
 
@@ -430,6 +454,12 @@ ${data.topVulnerabilities.map(v => `### ${v.type}
430
454
  - **Line:** ${v.line}
431
455
  `).join('\n')}
432
456
 
457
+ ## All findings
458
+
459
+ \`\`\`json
460
+ ${JSON.stringify(data.findings ?? data.topVulnerabilities, null, 2)}
461
+ \`\`\`
462
+
433
463
  ## Recommendations
434
464
 
435
465
  ${data.recommendations.map((r, i) => `${i + 1}. ${r}`).join('\n')}
@@ -443,7 +473,7 @@ ${data.recommendations.map((r, i) => `${i + 1}. ${r}`).join('\n')}
443
473
 
444
474
  ## Quality Score
445
475
 
446
- **${data.qualityScore.toFixed(1)}** / 100
476
+ ${typeof data.qualityScore === 'number' ? `**${data.qualityScore.toFixed(1)}** / 100` : 'N/A — measured gate uses individual checks.'}
447
477
 
448
478
  ## Metrics
449
479
 
@@ -500,6 +530,7 @@ ${data.recommendations.length === 0 ? 'No recommendations - all quality gates pa
500
530
  switch (taskType) {
501
531
  case 'scan-security':
502
532
  return {
533
+ status: securityReportExecution(data),
503
534
  vulnerabilities: data.vulnerabilities,
504
535
  critical: data.critical,
505
536
  high: data.high,
@@ -13,7 +13,7 @@
13
13
  * Handler implementations are extracted into ./handlers/ modules.
14
14
  */
15
15
  import { DomainName } from '../shared/types';
16
- import { EventBus, QEKernel } from '../kernel/interfaces';
16
+ import { EventBus, QEKernel, MemoryBackend } from '../kernel/interfaces';
17
17
  import { TaskType, QueenTask } from './queen-coordinator';
18
18
  import type { QualityFeedbackLoop } from '../feedback/feedback-loop.js';
19
19
  import type { TestGeneratorService } from '../domains/test-generation';
@@ -63,6 +63,8 @@ export declare class DomainTaskExecutor implements TaskHandlerContext {
63
63
  private coherenceActionGate;
64
64
  private readonly taskHandlers;
65
65
  constructor(kernel: QEKernel, eventBus: EventBus, config?: Partial<TaskExecutorConfig>);
66
+ /** Share the initialized kernel store with handlers that consume measured evidence. */
67
+ get memory(): MemoryBackend;
66
68
  /** Expose config to handler modules */
67
69
  get config(): {
68
70
  defaultLanguage: string;
@@ -150,6 +150,10 @@ export class DomainTaskExecutor {
150
150
  // ============================================================================
151
151
  // TaskHandlerContext implementation (used by handler modules)
152
152
  // ============================================================================
153
+ /** Share the initialized kernel store with handlers that consume measured evidence. */
154
+ get memory() {
155
+ return this.kernel.memory;
156
+ }
153
157
  /** Expose config to handler modules */
154
158
  get config() {
155
159
  return this._config;
@@ -1,3 +1,4 @@
1
+ import type { SecurityScanEvidence } from './scan-evidence.js';
1
2
  /**
2
3
  * Agentic QE v3 - Security & Compliance Domain Interfaces
3
4
  *
@@ -133,6 +134,8 @@ export interface SASTResult {
133
134
  readonly vulnerabilities: Vulnerability[];
134
135
  readonly summary: ScanSummary;
135
136
  readonly coverage: SecurityCoverage;
137
+ /** Absent on legacy adapters; absence does not prove completed analysis. */
138
+ readonly evidence?: SecurityScanEvidence;
136
139
  }
137
140
  export interface RuleSet {
138
141
  readonly id: string;
@@ -147,6 +150,8 @@ export interface FalsePositiveCheck {
147
150
  readonly reason?: string;
148
151
  }
149
152
  export interface SecurityCoverage {
153
+ /** Counter scope; external engine rule coverage is described in evidence. */
154
+ readonly rulesAppliedScope?: 'built-in-patterns';
150
155
  readonly filesScanned: number;
151
156
  readonly linesScanned: number;
152
157
  readonly rulesApplied: number;
@@ -1,8 +1,2 @@
1
- /**
2
- * Agentic QE v3 - Security & Compliance Domain Interfaces
3
- *
4
- * Bounded Context: Security & Compliance
5
- * Responsibility: SAST/DAST scanning, vulnerability analysis, compliance validation
6
- */
7
1
  export {};
8
2
  //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1,12 @@
1
+ import type { SecurityDiscoveryEvidence } from './scan-evidence.js';
2
+ export declare function isSecuritySourceFile(filePath: string): boolean;
3
+ export interface SecurityDiscoveryOptions {
4
+ readonly maxFiles?: number;
5
+ readonly maxDepth?: number;
6
+ }
7
+ /** Discover source inputs without turning failures or truncation into empty success. */
8
+ export declare function discoverSecurityFiles(target: string, options?: SecurityDiscoveryOptions): Promise<{
9
+ files: string[];
10
+ discovery: SecurityDiscoveryEvidence;
11
+ }>;
12
+ //# sourceMappingURL=scan-discovery.d.ts.map
@@ -0,0 +1,105 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ // The established security task's source-language scope. A direct file target
4
+ // is retained even when unsupported, so its scanner disposition is observable.
5
+ const SOURCE_EXTENSIONS = new Set([
6
+ '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', '.py', '.pyw', '.go', '.rs',
7
+ '.java', '.kt', '.kts', '.rb', '.cs', '.php', '.swift', '.c', '.h', '.cpp',
8
+ '.hpp', '.cc', '.scala',
9
+ ]);
10
+ const EXCLUDED_DIRECTORIES = new Set([
11
+ 'node_modules', '.git', 'dist', 'build', 'coverage', '.nyc_output',
12
+ '__pycache__', '.venv', 'venv', '.tox', '.mypy_cache', 'target', '.gradle',
13
+ 'vendor', '.bundle', '.agentic-qe', '.claude', '.cache', '.npm', '.yarn',
14
+ '.next', '.nuxt', '.svelte-kit', 'out', '.turbo', 'tmp', 'temp', '.tmp',
15
+ ]);
16
+ export function isSecuritySourceFile(filePath) {
17
+ return SOURCE_EXTENSIONS.has(path.extname(filePath).toLowerCase());
18
+ }
19
+ /** Discover source inputs without turning failures or truncation into empty success. */
20
+ export async function discoverSecurityFiles(target, options = {}) {
21
+ const maxFiles = options.maxFiles ?? 5000;
22
+ const maxDepth = options.maxDepth ?? 64;
23
+ if (!Number.isSafeInteger(maxFiles) || maxFiles < 1
24
+ || !Number.isSafeInteger(maxDepth) || maxDepth < 0) {
25
+ throw new Error('Security discovery requires a positive file limit and non-negative depth limit.');
26
+ }
27
+ const files = [];
28
+ const issues = [];
29
+ const excludedPaths = [];
30
+ const root = path.resolve(target);
31
+ let rootFailed = false;
32
+ let truncated = false;
33
+ function recordError(location, error) {
34
+ const code = error?.code;
35
+ // Raw errors can include source text, arguments, URLs, or credentials.
36
+ issues.push({ path: location, reason: typeof code === 'string' && /^[A-Z0-9_]{1,32}$/.test(code)
37
+ ? code : 'DISCOVERY_FAILED' });
38
+ }
39
+ async function walk(directory, depth) {
40
+ if (depth > maxDepth) {
41
+ issues.push({ path: directory, reason: 'DEPTH_LIMIT' });
42
+ return;
43
+ }
44
+ let entries;
45
+ try {
46
+ entries = await fs.readdir(directory, { withFileTypes: true });
47
+ }
48
+ catch (error) {
49
+ recordError(directory, error);
50
+ if (directory === root)
51
+ rootFailed = true;
52
+ return;
53
+ }
54
+ entries.sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
55
+ for (const entry of entries) {
56
+ if (truncated)
57
+ return;
58
+ const entryPath = path.join(directory, entry.name);
59
+ if (entry.isSymbolicLink()) {
60
+ // Observed symlinks are explicitly excluded; their targets are not
61
+ // claimed as scanned. Discovery does not guarantee an atomic snapshot.
62
+ excludedPaths.push(entryPath);
63
+ }
64
+ else if (entry.isDirectory()) {
65
+ if (EXCLUDED_DIRECTORIES.has(entry.name))
66
+ excludedPaths.push(entryPath);
67
+ else
68
+ await walk(entryPath, depth + 1);
69
+ }
70
+ else if (entry.isFile() && isSecuritySourceFile(entry.name)) {
71
+ if (files.length === maxFiles) {
72
+ issues.push({ path: entryPath, reason: 'FILE_LIMIT' });
73
+ truncated = true;
74
+ return;
75
+ }
76
+ files.push(entryPath);
77
+ }
78
+ }
79
+ }
80
+ try {
81
+ const stat = await fs.lstat(root);
82
+ if (stat.isFile())
83
+ files.push(root);
84
+ else if (stat.isDirectory())
85
+ await walk(root, 0);
86
+ else {
87
+ rootFailed = true;
88
+ issues.push({ path: root, reason: stat.isSymbolicLink() ? 'SYMLINK_TARGET' : 'NOT_REGULAR_INPUT' });
89
+ }
90
+ }
91
+ catch (error) {
92
+ rootFailed = true;
93
+ recordError(root, error);
94
+ }
95
+ return {
96
+ files,
97
+ discovery: {
98
+ status: rootFailed ? 'failed' : issues.length > 0 ? 'partial' : 'complete',
99
+ policy: 'aqe-security-source-files@1',
100
+ issues,
101
+ excludedPaths,
102
+ },
103
+ };
104
+ }
105
+ //# sourceMappingURL=scan-discovery.js.map
@@ -0,0 +1,57 @@
1
+ /** Evidence of executed security analysis; findings alone do not establish coverage. */
2
+ export type SecurityFileDisposition = 'analyzed' | 'unsupported' | 'unreadable' | 'excluded' | 'failed' | 'unavailable' | 'not-run';
3
+ export interface SecurityFileEvidence {
4
+ /** Normalized absolute path; normalization does not resolve symlinks. */
5
+ readonly path: string;
6
+ readonly engineId: string;
7
+ readonly status: SecurityFileDisposition;
8
+ /** SHA-256 of the exact source bytes read by this engine. */
9
+ readonly sourceDigest?: string;
10
+ readonly readLines: number;
11
+ readonly analyzedLines: number;
12
+ /** A bounded error code or static description; never source contents. */
13
+ readonly reason?: string;
14
+ }
15
+ export interface SecurityEngineEvidence {
16
+ readonly id: string;
17
+ readonly requested: boolean;
18
+ /** Whether this engine is required for the declared analysis scope. */
19
+ readonly required: boolean;
20
+ readonly status: 'completed' | 'partial' | 'failed' | 'unavailable' | 'disabled' | 'unverified' | 'not-run';
21
+ readonly scope: 'requested-files' | 'parent-directory' | 'url';
22
+ readonly target?: string;
23
+ /** Only populated when input membership was actually established. */
24
+ readonly analyzedFiles?: number;
25
+ readonly ruleIds?: readonly string[];
26
+ /** SHA-256 of selected rule definitions, when these are locally known. */
27
+ readonly rulesetDigest?: string;
28
+ readonly ruleCoverage: 'known' | 'unknown';
29
+ readonly version?: string;
30
+ readonly errors: readonly string[];
31
+ readonly limitations: readonly string[];
32
+ }
33
+ export interface SecurityScanEvidence {
34
+ readonly schemaVersion: 1;
35
+ /** Completeness of required declared scope, not absence of vulnerabilities. */
36
+ readonly completeness: 'complete' | 'partial' | 'none';
37
+ /** Unique normalized absolute requested paths, without resolving symlinks. */
38
+ readonly requestedFiles: number;
39
+ readonly requestedPaths: readonly string[];
40
+ readonly duplicateInputs: number;
41
+ /** A path may have separate receipts for independently executed engines. */
42
+ readonly files: readonly SecurityFileEvidence[];
43
+ readonly engines: readonly SecurityEngineEvidence[];
44
+ readonly limitations: readonly string[];
45
+ /** Discovery describes the declared source-file policy, not every repository file. */
46
+ readonly discovery?: SecurityDiscoveryEvidence;
47
+ }
48
+ export interface SecurityDiscoveryEvidence {
49
+ readonly status: 'complete' | 'partial' | 'failed';
50
+ readonly policy: 'aqe-security-source-files@1';
51
+ readonly issues: readonly {
52
+ readonly path: string;
53
+ readonly reason: string;
54
+ }[];
55
+ readonly excludedPaths: readonly string[];
56
+ }
57
+ //# sourceMappingURL=scan-evidence.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scan-evidence.js.map
@@ -2,8 +2,8 @@
2
2
  * Agentic QE v3 - SAST (Static Application Security Testing) Scanner
3
3
  * Performs static code analysis to detect security vulnerabilities
4
4
  */
5
+ import { FilePath } from '@shared/value-objects/index.js';
5
6
  import { Result } from '@shared/types/index.js';
6
- import type { FilePath } from '@shared/value-objects/index.js';
7
7
  import type { SecurityScannerConfig, Vulnerability, RemediationAdvice, SASTResult, RuleSet, FalsePositiveCheck, MemoryBackend, HybridRouter, ScanStatus } from './scanner-types.js';
8
8
  export declare class SASTScanner {
9
9
  private readonly config;
@@ -27,7 +27,7 @@ export declare class SASTScanner {
27
27
  private runPatternScanning;
28
28
  /**
29
29
  * Run semgrep scanning when enabled and available.
30
- * Returns converted vulnerabilities or empty array on failure/unavailability.
30
+ * Optional engine failure preserves completed pattern analysis and its findings.
31
31
  */
32
32
  private runSemgrepScanning;
33
33
  /**
@@ -54,6 +54,7 @@ export declare class SASTScanner {
54
54
  /**
55
55
  * Analyze a file for security vulnerabilities using pattern-based detection
56
56
  */
57
+ private getApplicablePatterns;
57
58
  private analyzeFile;
58
59
  /**
59
60
  * Find all matches of a security pattern in the file content