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
@@ -0,0 +1,2 @@
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.14.3");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i}from"./chunk-SJPZSCZP.js";import"./chunk-OV5EZO3U.js";import"./chunk-TFHQE6NK.js";import"./chunk-4RP5VUBI.js";import"./chunk-5F6DWHQG.js";import"./chunk-L2GKMBDP.js";import"./chunk-72UJXEKQ.js";import"./chunk-Y5SQBI2F.js";import"./chunk-YAKS3CAB.js";import"./chunk-HRUU7E3D.js";import"./chunk-MXMFGSWR.js";import"./chunk-VIDBBB6F.js";import"./chunk-PI74GOE4.js";import"./chunk-5IAB5NRZ.js";import"./chunk-OVDKWCD7.js";import"./chunk-XA7CG3LH.js";import"./chunk-YEXPFHV6.js";import"./chunk-IP7NSFQQ.js";import"./chunk-T35GZXTU.js";import"./chunk-Y2DVFVGI.js";export{a as GENESIS_PREV_HASH,f as WitnessChain,i as _resetWitnessChainForTests,h as createWitnessChain,g as getWitnessChain,d as hashWith,e as serializeEntry,b as sha256,c as shake256};
@@ -1,2 +1,2 @@
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.14.2");process.exit(0)}
2
- import{a,b,c,d,e,f,g}from"./chunk-K574FLVB.js";import"./chunk-PHHXHG2W.js";import"./chunk-ICKLBATY.js";import"./chunk-GHQ5PUOV.js";import"./chunk-6VKJAMZY.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
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.14.3");process.exit(0)}
2
+ import{a,b,c,d,e,f,g}from"./chunk-RTJ2M6V6.js";import"./chunk-L2GKMBDP.js";import"./chunk-72UJXEKQ.js";import"./chunk-T35GZXTU.js";import"./chunk-Y2DVFVGI.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
@@ -1,2 +1,2 @@
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.14.2");process.exit(0)}
2
- import{a,b,c}from"./chunk-YF5OP6CR.js";import"./chunk-JDXLCNKV.js";import"./chunk-6VKJAMZY.js";export{a as WitnessKeyManager,c as _resetDefaultWitnessKeyManagerForTests,b as getDefaultWitnessKeyManager};
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.14.3");process.exit(0)}
2
+ import{a,b,c}from"./chunk-OV5EZO3U.js";import"./chunk-Y5SQBI2F.js";import"./chunk-Y2DVFVGI.js";export{a as WitnessKeyManager,c as _resetDefaultWitnessKeyManagerForTests,b as getDefaultWitnessKeyManager};
@@ -1,5 +1,5 @@
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.14.2");process.exit(0)}
2
- import{b as $}from"./chunk-4RT7I7PI.js";import"./chunk-WXMSRBQF.js";import{d as R}from"./chunk-2EHFEMRU.js";import{b as k,c as C,d as b}from"./chunk-QW4LN5NK.js";import{c as W}from"./chunk-QXTW7XCS.js";import"./chunk-CIESXO73.js";import"./chunk-D4RCV4LY.js";import"./chunk-6VKJAMZY.js";import{Command as O}from"commander";import o from"chalk";function P(d,a){let m=d.indexOf("=");return m>0&&(a[d.substring(0,m)]=d.substring(m+1)),a}function x(d,a,m){let y=new O("workflow").description("Manage QE workflows and pipelines (ADR-041)");return y.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(t,l)=>{if(!await m())return;let e=await import("fs"),c=(await import("path")).resolve(t);try{console.log(o.blue(`
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.14.3");process.exit(0)}
2
+ import{b as $}from"./chunk-G5C2XVZC.js";import"./chunk-XXCYQXK3.js";import{d as R}from"./chunk-4Q35TI6Z.js";import{b as k,c as C,d as b}from"./chunk-JBB7E26R.js";import{c as W}from"./chunk-YAKS3CAB.js";import"./chunk-C46DMCWF.js";import"./chunk-HRUU7E3D.js";import"./chunk-Y2DVFVGI.js";import{Command as O}from"commander";import o from"chalk";function P(d,a){let m=d.indexOf("=");return m>0&&(a[d.substring(0,m)]=d.substring(m+1)),a}function x(d,a,m){let y=new O("workflow").description("Manage QE workflows and pipelines (ADR-041)");return y.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(t,l)=>{if(!await m())return;let e=await import("fs"),c=(await import("path")).resolve(t);try{console.log(o.blue(`
3
3
  Running workflow from: ${t}
4
4
  `));let s=k(c);if(!s.success||!s.workflow){console.log(o.red("Failed to parse pipeline:"));for(let w of s.errors)console.log(o.red(` ${w}`));await a(1)}let r={...W(l.params,"params")};if(s.pipeline){for(let w of s.pipeline.stages)if(w.params)for(let[S,h]of Object.entries(w.params))r[S]=h}if(!d.workflowOrchestrator.getWorkflow(s.workflow.id)){let w=d.workflowOrchestrator.registerWorkflow(s.workflow);w.success||(console.log(o.red(`Failed to register workflow: ${w.error.message}`)),await a(1))}let n=await d.workflowOrchestrator.executeWorkflow(s.workflow.id,r);if(!n.success){console.log(o.red(`Failed to start workflow: ${n.error.message}`)),await a(1);return}let p=n.value;if(console.log(o.cyan(` Execution ID: ${p}`)),console.log(o.gray(` Workflow: ${s.workflow.name}`)),console.log(o.gray(` Stages: ${s.workflow.steps.length}`)),console.log(""),l.watch){console.log(o.blue(`Workflow Progress:
5
5
  `));let w,S=Date.now();for(;;){let g=d.workflowOrchestrator.getWorkflowStatus(p);if(!g)break;if(!w||w.progress!==g.progress||w.status!==g.status||JSON.stringify(w.currentSteps)!==JSON.stringify(g.currentSteps)){process.stdout.write("\r\x1B[K");let v="\u2588".repeat(Math.floor(g.progress/5))+"\u2591".repeat(20-Math.floor(g.progress/5)),D=g.status==="completed"?o.green:g.status==="failed"?o.red:g.status==="running"?o.yellow:o.gray;console.log(` [${v}] ${g.progress}% - ${D(g.status)}`),g.currentSteps.length>0&&l.verbose&&console.log(o.gray(` Running: ${g.currentSteps.join(", ")}`)),w=g}if(g.status==="completed"||g.status==="failed"||g.status==="cancelled")break;await new Promise(v=>setTimeout(v,500))}let h=d.workflowOrchestrator.getWorkflowStatus(p);if(h){console.log("");let g=h.duration||Date.now()-S;h.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(g)}`)),console.log(o.gray(` Completed: ${h.completedSteps.length} stages`)),h.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${h.skippedSteps.length} stages`))):h.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${h.error}`)),console.log(o.gray(` Failed stages: ${h.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${h.status}`))}}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${p}' to check progress`));console.log(""),await a(0)}catch(s){console.error(o.red(`
@@ -35,10 +35,10 @@ Workflow cancelled: ${t}
35
35
  `)):console.log(o.red(`
36
36
  Failed to cancel workflow: ${l.error.message}
37
37
  `)),await a(l.success?0:1)}catch(l){console.error(o.red(`
38
- Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-NPM4FUPI.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
38
+ Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-ADK54DOE.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
39
39
  Browser Workflow Templates:
40
40
  `));for(let u of e.data.availableTemplates)console.log(` ${o.cyan(u)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await a(0)}catch(t){console.error(o.red(`
41
- Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-NPM4FUPI.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-F57RSD35.js"),s=new e,f={variables:l.var||{}};if(l.yaml)f.workflowYaml=l.yaml;else if(t)if(t.endsWith(".yaml")||t.endsWith(".yml")){let i=await import("fs"),p=(await import("path")).resolve(t);i.existsSync(p)||(console.log(o.red(`
41
+ Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-ADK54DOE.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-LK3MBXLZ.js"),s=new e,f={variables:l.var||{}};if(l.yaml)f.workflowYaml=l.yaml;else if(t)if(t.endsWith(".yaml")||t.endsWith(".yml")){let i=await import("fs"),p=(await import("path")).resolve(t);i.existsSync(p)||(console.log(o.red(`
42
42
  File not found: ${p}
43
43
  `)),await a(1)),f.workflowYaml=i.readFileSync(p,"utf-8")}else f.templateName=t;else console.log(o.red(`
44
44
  Provide a template name or --yaml. Use "workflow browser-list" to see templates.
@@ -0,0 +1,2 @@
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.14.3");process.exit(0)}
2
+ import{a,b,c,d}from"./chunk-4OUPCTBS.js";import"./chunk-N4H2QOT5.js";import"./chunk-TFHQE6NK.js";import"./chunk-4RP5VUBI.js";import"./chunk-5F6DWHQG.js";import"./chunk-L2GKMBDP.js";import"./chunk-72UJXEKQ.js";import"./chunk-Y5SQBI2F.js";import"./chunk-YAKS3CAB.js";import"./chunk-C46DMCWF.js";import"./chunk-HRUU7E3D.js";import"./chunk-OYMLHX2B.js";import"./chunk-MXMFGSWR.js";import"./chunk-VIDBBB6F.js";import"./chunk-PI74GOE4.js";import"./chunk-5IAB5NRZ.js";import"./chunk-OVDKWCD7.js";import"./chunk-XA7CG3LH.js";import"./chunk-YEXPFHV6.js";import"./chunk-IP7NSFQQ.js";import"./chunk-T35GZXTU.js";import"./chunk-Y2DVFVGI.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
@@ -1,2 +1,2 @@
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.14.2");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-57TNBR2P.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-6LMLN5R2.js";import"./chunk-W2FLULF4.js";import"./chunk-N3RN4QTC.js";import"./chunk-T46LOLW3.js";import"./chunk-PHHXHG2W.js";import"./chunk-ICKLBATY.js";import"./chunk-JDXLCNKV.js";import"./chunk-QXTW7XCS.js";import"./chunk-D4RCV4LY.js";import"./chunk-N5ZRUOMR.js";import"./chunk-HBTC4L53.js";import"./chunk-RVCWSAXI.js";import"./chunk-T4C56HBW.js";import"./chunk-JQ2ZD3WO.js";import"./chunk-CJCT452S.js";import"./chunk-S7N4BKI3.js";import"./chunk-JIUF6NV6.js";import"./chunk-GHQ5PUOV.js";import"./chunk-6VKJAMZY.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
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.14.3");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-TTMHIOQ3.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-F67AV5P2.js";import"./chunk-TFHQE6NK.js";import"./chunk-4RP5VUBI.js";import"./chunk-5F6DWHQG.js";import"./chunk-L2GKMBDP.js";import"./chunk-72UJXEKQ.js";import"./chunk-Y5SQBI2F.js";import"./chunk-YAKS3CAB.js";import"./chunk-HRUU7E3D.js";import"./chunk-MXMFGSWR.js";import"./chunk-VIDBBB6F.js";import"./chunk-PI74GOE4.js";import"./chunk-5IAB5NRZ.js";import"./chunk-OVDKWCD7.js";import"./chunk-XA7CG3LH.js";import"./chunk-YEXPFHV6.js";import"./chunk-IP7NSFQQ.js";import"./chunk-T35GZXTU.js";import"./chunk-Y2DVFVGI.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
@@ -5,7 +5,8 @@
5
5
  */
6
6
  import { Command } from 'commander';
7
7
  import chalk from 'chalk';
8
- import { walkSourceFiles } from '../utils/file-discovery.js';
8
+ import { discoverSecurityFiles } from '../../domains/security-compliance/scan-discovery.js';
9
+ import { FilePath } from '../../shared/value-objects/index.js';
9
10
  import { writeOutput, toJSON, toSARIF, securityToMarkdown } from '../utils/ci-output.js';
10
11
  export function createSecurityCommand(context, cleanupAndExit, ensureInitialized) {
11
12
  const securityCmd = new Command('security')
@@ -84,126 +85,192 @@ export function createSecurityCommand(context, cleanupAndExit, ensureInitialized
84
85
  }
85
86
  return; // Don't fall through to SAST/DAST path
86
87
  }
88
+ const format = options.format;
89
+ const runSAST = options.sast || (!options.dast && !options.compliance);
90
+ const frameworks = options.compliance
91
+ ? options.compliance.split(',').map((value) => value.trim()).filter(Boolean)
92
+ : [];
93
+ const scanResult = {
94
+ vulnerabilities: [], target: options.target,
95
+ scanType: [runSAST && 'SAST', options.dast && 'DAST', frameworks.length > 0 && 'Compliance'].filter(Boolean).join('+'),
96
+ checks: [], status: 'not-run',
97
+ };
98
+ const checks = scanResult.checks;
87
99
  try {
88
- const format = options.format;
89
- if (format === 'text') {
90
- console.log(chalk.blue(`\n Running security scan on ${options.target}...\n`));
91
- }
92
100
  const securityAPI = await context.kernel.getDomainAPIAsync('security-compliance');
93
101
  if (!securityAPI) {
94
- console.log(chalk.red('Security domain not available'));
95
- return;
96
- }
97
- const path = await import('path');
98
- const targetPath = path.resolve(options.target);
99
- // Fix #280: Use shared file discovery supporting all languages
100
- const files = walkSourceFiles(targetPath, { includeTests: true });
101
- if (files.length === 0) {
102
- console.log(chalk.yellow('No files found to scan'));
103
- return;
104
- }
105
- if (format === 'text') {
106
- console.log(chalk.gray(` Scanning ${files.length} files...\n`));
102
+ checks.push({ name: scanResult.scanType, status: 'failed', reason: 'Security domain not available' });
107
103
  }
108
- const scanResult = {
109
- vulnerabilities: [],
110
- target: options.target,
111
- scanType: [options.sast && 'SAST', options.dast && 'DAST', options.compliance && 'Compliance'].filter(Boolean).join('+') || 'SAST',
112
- };
113
- // Run SAST if requested
114
- if (options.sast) {
115
- if (format === 'text')
116
- console.log(chalk.blue(' SAST Scan:'));
117
- const sastResult = await securityAPI.runSASTScan(files);
118
- if (sastResult.success && sastResult.value) {
119
- const result = sastResult.value;
120
- const vulns = result.vulnerabilities || [];
121
- scanResult.vulnerabilities = vulns;
122
- if (format === 'text') {
123
- if (vulns.length === 0) {
124
- console.log(chalk.green(' * No vulnerabilities found'));
125
- }
126
- else {
127
- console.log(chalk.yellow(` ! Found ${vulns.length} potential issues:`));
128
- for (const v of vulns.slice(0, 10)) {
129
- const color = v.severity === 'high' ? chalk.red : v.severity === 'medium' ? chalk.yellow : chalk.gray;
130
- console.log(color(` [${v.severity}] ${v.type}: ${v.file}:${v.line}`));
131
- console.log(chalk.gray(` ${v.message}`));
104
+ else {
105
+ if (runSAST) {
106
+ const { files, discovery } = await discoverSecurityFiles(options.target);
107
+ scanResult.discovery = discovery;
108
+ if (files.length === 0) {
109
+ checks.push({ name: 'SAST', status: 'not-run', reason: 'No analyzable input was discovered; no SAST scan ran.' });
110
+ }
111
+ else {
112
+ try {
113
+ const sastResult = await securityAPI.runSASTScan(files.map(file => FilePath.create(file)));
114
+ if (sastResult.success && sastResult.value) {
115
+ const result = sastResult.value;
116
+ scanResult.vulnerabilities = result.vulnerabilities.map(formatVulnerability);
117
+ scanResult.coverage = result.evidence ? result.coverage : undefined;
118
+ scanResult.evidence = result.evidence;
119
+ checks.push({
120
+ name: 'SAST', status: result.evidence?.completeness ?? 'unverified',
121
+ ...(!result.evidence ? { reason: 'The scanner returned no execution receipts.' } : {}),
122
+ });
132
123
  }
133
- if (vulns.length > 10) {
134
- console.log(chalk.gray(` ... and ${vulns.length - 10} more`));
124
+ else {
125
+ checks.push({ name: 'SAST', status: 'failed', reason: !sastResult.success ? securityFailureReason('SAST scan', sastResult.error) : 'SAST scan returned no result' });
135
126
  }
136
127
  }
128
+ catch (error) {
129
+ checks.push({ name: 'SAST', status: 'failed', reason: securityFailureReason('SAST scan', error) });
130
+ }
131
+ }
132
+ if (discovery.status !== 'complete') {
133
+ checks.push({ name: 'Source discovery', status: discovery.status, reason: 'Requested source discovery did not complete; inspect discovery issues.' });
137
134
  }
138
135
  }
139
- else if (format === 'text') {
140
- console.log(chalk.red(` x SAST failed: ${sastResult.error?.message || 'Unknown error'}`));
141
- }
142
- if (format === 'text')
143
- console.log('');
144
- }
145
- // Run compliance check if requested
146
- if (options.compliance) {
147
- const frameworks = options.compliance.split(',');
148
- if (format === 'text')
149
- console.log(chalk.blue(` Compliance Check (${frameworks.join(', ')}):`));
150
- // Run compliance check for each framework
151
- const compResults = await Promise.all(frameworks.map((f) => securityAPI.runComplianceCheck(f.trim())));
152
- const compResult = compResults[0]; // Primary result for display
153
- if (compResult.success && compResult.value) {
154
- const result = compResult.value;
155
- scanResult.compliance = result;
156
- if (format === 'text') {
157
- if (result.compliant) {
158
- console.log(chalk.green(' * Compliant with all frameworks'));
159
- }
160
- else {
161
- console.log(chalk.yellow(' ! Compliance issues found:'));
162
- for (const issue of (result.issues || []).slice(0, 5)) {
163
- console.log(chalk.yellow(` [${issue.framework}] ${issue.issue}`));
136
+ if (frameworks.length > 0) {
137
+ const issues = [];
138
+ let compliant = true;
139
+ for (const framework of frameworks) {
140
+ try {
141
+ const outcome = await securityAPI.runComplianceCheck(framework);
142
+ if (!outcome.success || !outcome.value) {
143
+ compliant = false;
144
+ checks.push({ name: `Compliance:${framework}`, status: 'failed', reason: !outcome.success ? securityFailureReason('Compliance check', outcome.error) : 'Compliance check returned no result' });
145
+ continue;
164
146
  }
147
+ const report = outcome.value;
148
+ const legacy = report;
149
+ const violations = report.violations ?? [];
150
+ const skipped = report.skippedRules ?? [];
151
+ const passed = report.passedRules ?? [];
152
+ const measured = Array.isArray(report.violations) && Array.isArray(report.passedRules) && Array.isArray(report.skippedRules);
153
+ const status = !measured ? 'unverified' : skipped.length > 0 ? 'partial' : passed.length + violations.length > 0 ? 'complete' : 'none';
154
+ checks.push({ name: `Compliance:${framework}`, status, ...(skipped.length ? { reason: `${skipped.length} compliance rules were skipped.` } : {}) });
155
+ issues.push(...violations.map(violation => ({ framework, issue: violation.details })));
156
+ if (legacy.issues)
157
+ issues.push(...legacy.issues);
158
+ if (status !== 'complete' || violations.length > 0 || legacy.compliant === false)
159
+ compliant = false;
160
+ }
161
+ catch (error) {
162
+ compliant = false;
163
+ checks.push({ name: `Compliance:${framework}`, status: 'failed', reason: securityFailureReason('Compliance check', error) });
165
164
  }
166
165
  }
166
+ scanResult.compliance = { compliant, issues };
167
167
  }
168
- else if (format === 'text') {
169
- console.log(chalk.red(` x Compliance check failed: ${compResult.error?.message || 'Unknown error'}`));
170
- }
171
- if (format === 'text')
172
- console.log('');
173
168
  }
174
- // DAST note
175
- if (options.dast && format === 'text') {
176
- console.log(chalk.gray('Note: DAST requires running application URLs. Use --target with URLs for DAST scanning.'));
169
+ if (options.dast) {
170
+ checks.push({ name: 'DAST', status: 'not-run', reason: 'This CLI command does not execute DAST. A running application URL and DAST execution path are required.' });
177
171
  }
178
- // Format-aware output
179
- if (format === 'json') {
172
+ }
173
+ catch (error) {
174
+ checks.push({ name: scanResult.scanType, status: 'failed', reason: securityFailureReason('Security scan', error) });
175
+ }
176
+ scanResult.status = summarizeChecks(checks);
177
+ try {
178
+ if (format === 'json')
180
179
  writeOutput(toJSON(scanResult), options.output);
181
- }
182
- else if (format === 'sarif') {
180
+ else if (format === 'sarif')
183
181
  writeOutput(toSARIF(scanResult), options.output);
184
- }
185
- else if (format === 'markdown') {
182
+ else if (format === 'markdown')
186
183
  writeOutput(securityToMarkdown(scanResult), options.output);
187
- }
188
- else {
189
- console.log(chalk.green(' Security scan complete\n'));
190
- }
191
- // Exit codes: 1 = critical/high vulns, 2 = medium-only vulns, 0 = low/none
192
- const hasHighSeverity = scanResult.vulnerabilities.some(v => v.severity === 'high' || v.severity === 'critical');
193
- const hasMediumSeverity = scanResult.vulnerabilities.some(v => v.severity === 'medium');
194
- if (hasHighSeverity) {
195
- await cleanupAndExit(1);
196
- }
197
- else if (hasMediumSeverity) {
198
- await cleanupAndExit(2);
199
- }
200
- await cleanupAndExit(0);
184
+ else
185
+ printSecurityResult(scanResult);
201
186
  }
202
- catch (err) {
203
- console.error(chalk.red('\nFailed:'), err);
204
- await cleanupAndExit(1);
187
+ catch (error) {
188
+ console.error(chalk.red('Failed to write security report:'), error);
189
+ return cleanupAndExit(1);
205
190
  }
191
+ // Incomplete execution never has a clean exit, even if it found no vulnerabilities.
192
+ if (scanResult.status !== 'complete' || scanResult.compliance?.compliant === false)
193
+ return cleanupAndExit(1);
194
+ if (scanResult.vulnerabilities.some(v => v.severity === 'high' || v.severity === 'critical'))
195
+ return cleanupAndExit(1);
196
+ if (scanResult.vulnerabilities.some(v => v.severity === 'medium'))
197
+ return cleanupAndExit(2);
198
+ return cleanupAndExit(0);
206
199
  });
207
200
  return securityCmd;
208
201
  }
202
+ /** Provider exceptions can contain credentials or source; expose only an operation and errno. */
203
+ function securityFailureReason(operation, error) {
204
+ const code = error && typeof error === 'object' && 'code' in error ? error.code : undefined;
205
+ return typeof code === 'string' && /^[A-Z0-9_]{1,32}$/.test(code)
206
+ ? `${operation} failed (${code}).`
207
+ : `${operation} failed.`;
208
+ }
209
+ function summarizeChecks(checks) {
210
+ if (checks.length === 0)
211
+ return 'not-run';
212
+ if (checks.every(check => check.status === 'complete'))
213
+ return 'complete';
214
+ if (checks.some(check => check.status === 'partial' || check.status === 'complete'))
215
+ return 'partial';
216
+ if (checks.some(check => check.status === 'failed'))
217
+ return 'failed';
218
+ if (checks.some(check => check.status === 'unverified'))
219
+ return 'unverified';
220
+ if (checks.some(check => check.status === 'none'))
221
+ return 'none';
222
+ return 'not-run';
223
+ }
224
+ function formatVulnerability(value) {
225
+ if ('location' in value) {
226
+ return {
227
+ severity: value.severity, type: value.title || value.category,
228
+ file: value.location.file, line: value.location.line ?? 1,
229
+ message: value.description,
230
+ };
231
+ }
232
+ return value;
233
+ }
234
+ function printSecurityResult(result) {
235
+ console.log(chalk.blue(`\n Security scan on ${result.target}\n`));
236
+ for (const check of result.checks ?? []) {
237
+ const color = check.status === 'complete' ? chalk.green : chalk.yellow;
238
+ console.log(color(` ${check.name}: ${check.status}${check.reason ? ` — ${check.reason}` : ''}`));
239
+ }
240
+ if (result.coverage) {
241
+ console.log(` Analyzed ${result.coverage.filesScanned} files, ${result.coverage.linesScanned} lines; ${result.coverage.rulesApplied} rules applied${result.coverage.rulesAppliedScope ? ` (${result.coverage.rulesAppliedScope})` : ''}.`);
242
+ }
243
+ if (result.vulnerabilities.length === 0) {
244
+ console.log(result.status === 'complete'
245
+ ? ' No vulnerabilities found in completed checks.'
246
+ : ' No vulnerabilities reported; requested analysis is incomplete or unverified.');
247
+ }
248
+ else {
249
+ console.log(chalk.yellow(` Found ${result.vulnerabilities.length} potential issues:`));
250
+ for (const vulnerability of result.vulnerabilities.slice(0, 10)) {
251
+ console.log(` [${vulnerability.severity}] ${vulnerability.type}: ${vulnerability.file}:${vulnerability.line}`);
252
+ console.log(` ${vulnerability.message}`);
253
+ }
254
+ if (result.vulnerabilities.length > 10)
255
+ console.log(` ... and ${result.vulnerabilities.length - 10} more`);
256
+ }
257
+ if (result.compliance) {
258
+ console.log(` Compliance: ${result.compliance.compliant ? 'compliant in completed checks' : 'failed or incomplete'}`);
259
+ for (const issue of result.compliance.issues ?? [])
260
+ console.log(` [${issue.framework}] ${issue.issue}`);
261
+ }
262
+ const limitations = [
263
+ ...(result.evidence?.limitations ?? []),
264
+ ...(result.evidence?.engines.flatMap(engine => engine.status === 'completed' ? [] : [`${engine.id}: ${engine.status}`, ...engine.errors]) ?? []),
265
+ ...(result.evidence?.files.filter(file => file.status !== 'analyzed' && file.status !== 'excluded').map(file => `${file.path}: ${file.status}${file.reason ? ` (${file.reason})` : ''}`) ?? []),
266
+ ...(result.discovery?.issues.map(issue => `${issue.path}: ${issue.reason}`) ?? []),
267
+ ];
268
+ for (const limitation of limitations.slice(0, 10))
269
+ console.log(chalk.yellow(` ${limitation}`));
270
+ if (limitations.length > 10)
271
+ console.log(` ... ${limitations.length - 10} additional limitations; use JSON, Markdown, or SARIF for full receipts.`);
272
+ if (result.evidence)
273
+ console.log(' Scope: completed checks of the declared required engines; this is not full SAST assurance.');
274
+ console.log(`\n Security analysis: ${result.status}\n`);
275
+ }
209
276
  //# sourceMappingURL=security.js.map
@@ -179,6 +179,7 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
179
179
  }
180
180
  else {
181
181
  console.log(chalk.red(`Failed: ${result.error?.message || 'Unknown error'}`));
182
+ await cleanupAndExit(1);
182
183
  }
183
184
  }
184
185
  else if (action === 'schedule') {
@@ -4,6 +4,9 @@
4
4
  * Provides structured output formatting for CI/CD pipeline integration.
5
5
  * Supports: text (default), json, sarif, junit, markdown
6
6
  */
7
+ import type { SecurityCoverage } from '../../domains/security-compliance/interfaces.js';
8
+ import type { SecurityScanEvidence } from '../../domains/security-compliance/scan-evidence.js';
9
+ import type { discoverSecurityFiles } from '../../domains/security-compliance/scan-discovery.js';
7
10
  export type OutputFormat = 'text' | 'json' | 'sarif' | 'junit' | 'markdown';
8
11
  export interface CIOutputOptions {
9
12
  format: OutputFormat;
@@ -29,7 +32,21 @@ export interface SecurityScanResult {
29
32
  };
30
33
  target: string;
31
34
  scanType: string;
35
+ /** Execution completeness is independent of finding severity. */
36
+ status?: SecurityExecutionStatus;
37
+ checks?: SecurityCheckResult[];
38
+ coverage?: SecurityCoverage;
39
+ evidence?: SecurityScanEvidence;
40
+ discovery?: Awaited<ReturnType<typeof discoverSecurityFiles>>['discovery'];
32
41
  }
42
+ export type SecurityExecutionStatus = 'complete' | 'partial' | 'none' | 'failed' | 'not-run' | 'unverified';
43
+ export interface SecurityCheckResult {
44
+ name: string;
45
+ status: SecurityExecutionStatus;
46
+ reason?: string;
47
+ }
48
+ /** Legacy finding-only reports carry no evidence that the requested work ran. */
49
+ export declare function securityExecutionStatus(result: SecurityScanResult): SecurityExecutionStatus;
33
50
  export interface TestResult {
34
51
  name: string;
35
52
  passed: boolean;
@@ -29,6 +29,10 @@ function getPackageVersion() {
29
29
  catch { /* fallback */ }
30
30
  return 'unknown';
31
31
  }
32
+ /** Legacy finding-only reports carry no evidence that the requested work ran. */
33
+ export function securityExecutionStatus(result) {
34
+ return result.status ?? result.evidence?.completeness ?? 'unverified';
35
+ }
32
36
  // ============================================================================
33
37
  // Commander Option Helpers
34
38
  // ============================================================================
@@ -70,6 +74,7 @@ export function toJSON(data) {
70
74
  // ============================================================================
71
75
  const SARIF_SCHEMA = 'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json';
72
76
  export function toSARIF(result) {
77
+ const status = securityExecutionStatus(result);
73
78
  const severityToLevel = (severity) => {
74
79
  switch (severity.toLowerCase()) {
75
80
  case 'critical':
@@ -124,9 +129,20 @@ export function toSARIF(result) {
124
129
  },
125
130
  },
126
131
  results,
132
+ properties: {
133
+ securityScan: {
134
+ status, target: result.target, scanType: result.scanType, coverage: result.evidence ? result.coverage : undefined,
135
+ evidence: result.evidence, discovery: result.discovery, checks: result.checks,
136
+ },
137
+ },
127
138
  invocations: [{
128
- executionSuccessful: true,
129
- commandLine: `aqe security --sast --format sarif -t ${result.target}`,
139
+ executionSuccessful: status === 'complete',
140
+ ...(status === 'complete' ? {} : {
141
+ toolExecutionNotifications: [{
142
+ level: 'warning',
143
+ message: { text: `Security analysis ${status}; findings do not establish complete coverage.` },
144
+ }],
145
+ }),
130
146
  }],
131
147
  }],
132
148
  };
@@ -236,7 +252,23 @@ export function securityToMarkdown(result) {
236
252
  let md = `# Security Scan Report\n\n`;
237
253
  md += `**Target:** ${result.target}\n`;
238
254
  md += `**Scan Type:** ${result.scanType}\n`;
255
+ md += `**Execution:** ${securityExecutionStatus(result)}\n`;
239
256
  md += `**Vulnerabilities Found:** ${result.vulnerabilities.length}\n\n`;
257
+ if (result.checks?.length) {
258
+ md += `## Check execution\n\n`;
259
+ for (const check of result.checks) {
260
+ md += `- **${check.name}:** ${check.status}${check.reason ? ` — ${check.reason}` : ''}\n`;
261
+ }
262
+ md += '\n';
263
+ }
264
+ if (result.coverage && result.evidence) {
265
+ md += `**Analyzed files:** ${result.coverage.filesScanned}\n`;
266
+ md += `**Analyzed lines:** ${result.coverage.linesScanned}\n`;
267
+ md += `**Rules applied:** ${result.coverage.rulesApplied}${result.coverage.rulesAppliedScope ? ` (${result.coverage.rulesAppliedScope})` : ''}\n\n`;
268
+ }
269
+ if (result.evidence || result.discovery) {
270
+ md += `## Execution receipts\n\n\`\`\`json\n${toJSON({ evidence: result.evidence, discovery: result.discovery })}\n\`\`\`\n\n`;
271
+ }
240
272
  if (result.vulnerabilities.length > 0) {
241
273
  md += `## Vulnerabilities\n\n`;
242
274
  md += `| Severity | Type | File | Line | Message |\n`;
@@ -5,6 +5,7 @@
5
5
  * of DomainTaskExecutor needed to register and implement handlers.
6
6
  */
7
7
  import type { Result } from '../../shared/types';
8
+ import type { MemoryBackend } from '../../kernel/interfaces.js';
8
9
  import type { QueenTask, TaskType } from '../queen-coordinator';
9
10
  import type { CoverageAnalyzerService } from '../../domains/coverage-analysis';
10
11
  import type { SecurityScannerService } from '../../domains/security-compliance';
@@ -20,6 +21,8 @@ export type InstanceTaskHandler = (task: QueenTask) => Promise<Result<unknown, E
20
21
  export interface TaskHandlerContext {
21
22
  /** Register a handler for a given task type */
22
23
  registerHandler(type: TaskType, handler: InstanceTaskHandler): void;
24
+ /** Initialized kernel memory, including canonical measured quality evidence. */
25
+ readonly memory: MemoryBackend;
23
26
  /** Lazy service getters */
24
27
  getCoverageAnalyzer(): CoverageAnalyzerService;
25
28
  getSecurityScanner(): SecurityScannerService;
@@ -7,11 +7,21 @@
7
7
  import { ok, err } from '../../shared/types/index.js';
8
8
  import { toError } from '../../shared/error-utils.js';
9
9
  import { discoverSourceFiles } from './handler-utils.js';
10
+ import { evaluateQualityEvidence, loadQualityEvidence, } from '../../domains/quality-assessment/quality-evidence.js';
10
11
  export function registerQualityHandlers(ctx) {
11
12
  // Register quality assessment handler - REAL IMPLEMENTATION
12
13
  ctx.registerHandler('assess-quality', async (task) => {
13
14
  const payload = task.payload;
14
15
  try {
16
+ // An explicit gate evaluates the same measured, timestamped evidence as
17
+ // `aqe quality --gate`. Static source scores cannot substitute for it.
18
+ if (payload.runGate === true) {
19
+ const measured = await loadQualityEvidence(ctx.memory);
20
+ return ok({
21
+ ...evaluateQualityEvidence(measured),
22
+ metrics: measured,
23
+ });
24
+ }
15
25
  const analyzer = ctx.getQualityAnalyzer();
16
26
  const threshold = payload.threshold || 80;
17
27
  // Determine source files to analyze