agentic-qe 3.15.6 → 3.15.8

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 (441) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +263 -0
  3. package/README.md +2 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +8 -6
  6. package/dist/cli/chunks/adapter-FC4EY447.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-SY7UCLBL.js → agent-booster-wasm-W3V5P7LE.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-KAMYBU3S.js → agent-handler-2NQFHAWE.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-2CAW3KUM.js → agent-memory-branch-457ECHHK.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +2 -0
  11. package/dist/cli/chunks/{arena-QCCVIOAH.js → arena-IYBQ3GPY.js} +4 -4
  12. package/dist/cli/chunks/{arena-4OFLJ3R2.js → arena-JV3WSEHU.js} +2 -2
  13. package/dist/cli/chunks/{audit-RBDQJQJB.js → audit-5OS3T3K6.js} +3 -3
  14. package/dist/cli/chunks/base-2XML4WH7.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-5JRACCDQ.js → better-sqlite3-IQKBFVAO.js} +2 -2
  16. package/dist/cli/chunks/{brain-handler-W4QIIRT4.js → brain-handler-KA3SGAFM.js} +3 -3
  17. package/dist/cli/chunks/{branch-enumerator-IBNGI572.js → branch-enumerator-QZDU2VOQ.js} +2 -2
  18. package/dist/cli/chunks/{browser-GMSCVAOI.js → browser-ZL7OLKJQ.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +2 -0
  20. package/dist/cli/chunks/{chunk-6HWARQWV.js → chunk-22DOS3PM.js} +2 -2
  21. package/dist/cli/chunks/{chunk-VCONCVSY.js → chunk-2DPHFCMW.js} +2 -2
  22. package/dist/cli/chunks/{chunk-ALCIUWFC.js → chunk-2GSAAUW3.js} +1 -1
  23. package/dist/cli/chunks/{chunk-AX26QJ6T.js → chunk-2JCLACCS.js} +2 -2
  24. package/dist/cli/chunks/{chunk-7XTANLTN.js → chunk-2QRGIEQV.js} +1 -1
  25. package/dist/cli/chunks/{chunk-MP3FSUNB.js → chunk-2UN4JOTN.js} +2 -2
  26. package/dist/cli/chunks/{chunk-CR66HNAE.js → chunk-2ZRNXEVI.js} +1 -1
  27. package/dist/cli/chunks/{chunk-WKDWRRDT.js → chunk-3LFLO2WK.js} +2 -2
  28. package/dist/cli/chunks/{chunk-QLYO3H7E.js → chunk-3N627QRU.js} +2 -2
  29. package/dist/cli/chunks/{chunk-VVF337SV.js → chunk-4C3RYBTT.js} +2 -2
  30. package/dist/cli/chunks/{chunk-MQCTLTGE.js → chunk-4C7KE2EL.js} +2 -2
  31. package/dist/cli/chunks/{chunk-AUN4FG7V.js → chunk-4GUVVGJX.js} +1 -1
  32. package/dist/cli/chunks/{chunk-ZOUEQ6DL.js → chunk-4GYFONJB.js} +1 -1
  33. package/dist/cli/chunks/{chunk-24ZSGYC6.js → chunk-4I35ARWW.js} +1 -1
  34. package/dist/cli/chunks/{chunk-6MXAJBEA.js → chunk-4NTLGGXO.js} +1 -1
  35. package/dist/cli/chunks/{chunk-EF5UHDCG.js → chunk-4TZLZRZ4.js} +1 -1
  36. package/dist/cli/chunks/{chunk-RD5BYLN7.js → chunk-4YUBWU3E.js} +1 -1
  37. package/dist/cli/chunks/{chunk-7TVIX4WL.js → chunk-52YRSWPS.js} +2 -2
  38. package/dist/cli/chunks/{chunk-LAY7NCQK.js → chunk-5DZDLOY6.js} +3 -3
  39. package/dist/cli/chunks/{chunk-34MDMFET.js → chunk-5MBNRTT5.js} +2 -2
  40. package/dist/cli/chunks/{chunk-VAYZ5QIE.js → chunk-5ONJ7AV6.js} +1 -1
  41. package/dist/cli/chunks/{chunk-RV6HSMKJ.js → chunk-5YOO5QSE.js} +1 -1
  42. package/dist/cli/chunks/{chunk-BUTGIVKW.js → chunk-62T7U25U.js} +1 -1
  43. package/dist/cli/chunks/{chunk-66NW3ZB4.js → chunk-6CKTLVYV.js} +2 -2
  44. package/dist/cli/chunks/{chunk-TUDENMAE.js → chunk-6E7EOHMN.js} +2 -2
  45. package/dist/cli/chunks/{chunk-GVRFSXY6.js → chunk-6GIC2263.js} +2 -2
  46. package/dist/cli/chunks/{chunk-KIDOBLUO.js → chunk-767SR7WH.js} +2 -2
  47. package/dist/cli/chunks/{chunk-NBUXM5X6.js → chunk-7C6FMLQR.js} +2 -2
  48. package/dist/cli/chunks/{chunk-4POOJYXA.js → chunk-7CVMT64N.js} +1 -1
  49. package/dist/cli/chunks/{chunk-R363XXGH.js → chunk-7DHSHD5B.js} +2 -2
  50. package/dist/cli/chunks/{chunk-IEPWO4XP.js → chunk-7H3GNRNA.js} +2 -2
  51. package/dist/cli/chunks/{chunk-DQNUPEY5.js → chunk-7SLEUVPZ.js} +2 -2
  52. package/dist/cli/chunks/{chunk-YNG7E26C.js → chunk-7XGM7Q2N.js} +2 -2
  53. package/dist/cli/chunks/{chunk-5MT7DMD7.js → chunk-A2UGPKCS.js} +2 -2
  54. package/dist/cli/chunks/{chunk-2CIDFR2H.js → chunk-A6GCO6ZU.js} +2 -2
  55. package/dist/cli/chunks/{chunk-XFPQIWEH.js → chunk-BEVWCF3Q.js} +3 -3
  56. package/dist/cli/chunks/{chunk-LCCTJ2PC.js → chunk-BLZEOGQE.js} +2 -2
  57. package/dist/cli/chunks/{chunk-6R3FBFCJ.js → chunk-BQUIZ5QT.js} +2 -2
  58. package/dist/cli/chunks/{chunk-ZUTFHGEO.js → chunk-BTMEOZYY.js} +1 -1
  59. package/dist/cli/chunks/{chunk-FU7LNUD7.js → chunk-CDLG3Q2O.js} +2 -2
  60. package/dist/cli/chunks/{chunk-NYS2GUNO.js → chunk-CQ3SBRDP.js} +2 -2
  61. package/dist/cli/chunks/chunk-CQ5G64EA.js +3 -0
  62. package/dist/cli/chunks/{chunk-JCE76MPP.js → chunk-CRUQ6RXU.js} +2 -2
  63. package/dist/cli/chunks/{chunk-XBFQJZWX.js → chunk-D4IBIMWI.js} +2 -2
  64. package/dist/cli/chunks/{chunk-LZWJ5BMP.js → chunk-D4O3TJI7.js} +2 -2
  65. package/dist/cli/chunks/{chunk-AUOSHM63.js → chunk-DAFMHM64.js} +2 -2
  66. package/dist/cli/chunks/{chunk-V3OLS2NG.js → chunk-DCYUHCPK.js} +2 -2
  67. package/dist/cli/chunks/{chunk-F7A2UBZO.js → chunk-DKFSCJEF.js} +2 -2
  68. package/dist/cli/chunks/{chunk-5LST62QR.js → chunk-DN3AKAPY.js} +2 -2
  69. package/dist/cli/chunks/{chunk-OQ4S6B7P.js → chunk-DY37YMMQ.js} +1 -1
  70. package/dist/cli/chunks/{chunk-XQ53PZEF.js → chunk-EUVSSIGR.js} +3 -3
  71. package/dist/cli/chunks/{chunk-6WOZUSSN.js → chunk-FAYXES7R.js} +2 -2
  72. package/dist/cli/chunks/{chunk-GNYOHZVV.js → chunk-FEN2DHFM.js} +1 -1
  73. package/dist/cli/chunks/{chunk-BAYGQRNP.js → chunk-FEPFXXI7.js} +2 -2
  74. package/dist/cli/chunks/{chunk-DLSFT6PO.js → chunk-FJAO4UX2.js} +2 -2
  75. package/dist/cli/chunks/{chunk-22OZIJAD.js → chunk-FWXNFPLS.js} +2 -2
  76. package/dist/cli/chunks/{chunk-X33F7NXH.js → chunk-G6CLO74Q.js} +3 -3
  77. package/dist/cli/chunks/{chunk-HAN4MS5T.js → chunk-G77Q22EN.js} +2 -2
  78. package/dist/cli/chunks/{chunk-5DH5QI7G.js → chunk-GENNJRNK.js} +3 -3
  79. package/dist/cli/chunks/{chunk-LMAEMVPA.js → chunk-GGSTLKY5.js} +1 -1
  80. package/dist/cli/chunks/{chunk-EJ4KZFZN.js → chunk-GSOK4M6V.js} +1 -1
  81. package/dist/cli/chunks/{chunk-DA7DGDTI.js → chunk-HI6OBDDY.js} +2 -2
  82. package/dist/cli/chunks/{chunk-XZ46CI35.js → chunk-HNGNRIZZ.js} +2 -2
  83. package/dist/cli/chunks/{chunk-CLAMMGY3.js → chunk-HXCGV5UJ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-5UPIL62W.js → chunk-I4U7YCXG.js} +3 -3
  85. package/dist/cli/chunks/{chunk-RFDFET3O.js → chunk-I77D65X5.js} +2 -2
  86. package/dist/cli/chunks/{chunk-HEGGV2PT.js → chunk-IJSFZO7P.js} +2 -2
  87. package/dist/cli/chunks/{chunk-GWM4M5NF.js → chunk-IMSRWNWF.js} +1 -1
  88. package/dist/cli/chunks/{chunk-B7RHBKHL.js → chunk-J6LL25QJ.js} +2 -2
  89. package/dist/cli/chunks/{chunk-KYVIOC3C.js → chunk-J7FLNP5L.js} +2 -2
  90. package/dist/cli/chunks/{chunk-YLNYPQDR.js → chunk-J7RCI25Q.js} +1 -1
  91. package/dist/cli/chunks/{chunk-72MQCZSM.js → chunk-JFWQFB3S.js} +2 -2
  92. package/dist/cli/chunks/{chunk-SV5BUYHH.js → chunk-JLTGO5BB.js} +2 -2
  93. package/dist/cli/chunks/{chunk-CCL436IU.js → chunk-JWPYMRIX.js} +14 -6
  94. package/dist/cli/chunks/{chunk-ONPPBLRB.js → chunk-K4N2MBCE.js} +2 -2
  95. package/dist/cli/chunks/{chunk-7SAMMQVS.js → chunk-K5R3WUJP.js} +1 -1
  96. package/dist/cli/chunks/{chunk-GI5HWS4H.js → chunk-KITKQUBX.js} +1 -1
  97. package/dist/cli/chunks/{chunk-7TJZDRDU.js → chunk-KJNUETCB.js} +1 -1
  98. package/dist/cli/chunks/{chunk-JYKQVYX2.js → chunk-KMVFBYJO.js} +2 -2
  99. package/dist/cli/chunks/{chunk-ZSBD4FUX.js → chunk-KMZW2P3R.js} +2 -2
  100. package/dist/cli/chunks/{chunk-PEMSXSP2.js → chunk-KNHLOANK.js} +2 -2
  101. package/dist/cli/chunks/{chunk-47Q7JL3V.js → chunk-KNQUHGNY.js} +2 -2
  102. package/dist/cli/chunks/{chunk-A7ANPS4E.js → chunk-KVMKYUOE.js} +2 -2
  103. package/dist/cli/chunks/{chunk-XBEI2JBA.js → chunk-LHRVSK44.js} +2 -2
  104. package/dist/cli/chunks/{chunk-AJT3XDRD.js → chunk-LPSMVBB3.js} +2 -2
  105. package/dist/cli/chunks/{chunk-ORBODZSO.js → chunk-LVHZK7GW.js} +2 -2
  106. package/dist/cli/chunks/{chunk-ZTB32K5N.js → chunk-LZWBUVCK.js} +3 -3
  107. package/dist/cli/chunks/{chunk-OPDZBRIL.js → chunk-MMY52Y6R.js} +2 -2
  108. package/dist/cli/chunks/{chunk-MQTA6KIO.js → chunk-MUDBF2JC.js} +1 -1
  109. package/dist/cli/chunks/{chunk-GFB6BZWU.js → chunk-MV4S3TEC.js} +2 -2
  110. package/dist/cli/chunks/{chunk-UB6DQGWM.js → chunk-NF63NHJH.js} +2 -2
  111. package/dist/cli/chunks/{chunk-D5N2O5EH.js → chunk-NHOMVBCI.js} +2 -2
  112. package/dist/cli/chunks/{chunk-3NJ7O3OH.js → chunk-NLYUC63R.js} +2 -2
  113. package/dist/cli/chunks/{chunk-4CLDYT36.js → chunk-NQDYOF35.js} +2 -2
  114. package/dist/cli/chunks/{chunk-ORFL3YXB.js → chunk-NW7HTOSN.js} +2 -2
  115. package/dist/cli/chunks/{chunk-FQ5N666N.js → chunk-NWFBF3KT.js} +1 -1
  116. package/dist/cli/chunks/{chunk-P7DXVL2S.js → chunk-NZATJ2C6.js} +2 -2
  117. package/dist/cli/chunks/{chunk-HOEWMEF2.js → chunk-O4RRVTXN.js} +2 -2
  118. package/dist/cli/chunks/{chunk-4KOVHQXK.js → chunk-OCLAMZJG.js} +2 -2
  119. package/dist/cli/chunks/{chunk-TLUIO37P.js → chunk-OJWEZYLR.js} +2 -2
  120. package/dist/cli/chunks/{chunk-A74J23QB.js → chunk-OWBFVAEH.js} +2 -2
  121. package/dist/cli/chunks/{chunk-6T6AHVLF.js → chunk-P2EA62YS.js} +1 -1
  122. package/dist/cli/chunks/{chunk-TL5GV3PR.js → chunk-P4UT4LBE.js} +3 -3
  123. package/dist/cli/chunks/{chunk-IVJIHZSM.js → chunk-PICEGWGB.js} +1 -1
  124. package/dist/cli/chunks/{chunk-ITIJ23K2.js → chunk-PIEKGKW6.js} +2 -2
  125. package/dist/cli/chunks/{chunk-2ZTWPMTK.js → chunk-PJGQ2TKN.js} +2 -2
  126. package/dist/cli/chunks/{chunk-KCB6P463.js → chunk-PPIM7B5G.js} +2 -2
  127. package/dist/cli/chunks/{chunk-L2TDHJR3.js → chunk-PUYQ6EKC.js} +2 -2
  128. package/dist/cli/chunks/{chunk-2IWPJUVV.js → chunk-PWA6XBW4.js} +8 -8
  129. package/dist/cli/chunks/{chunk-XPB5BVU6.js → chunk-PZ7FJ4UG.js} +2 -2
  130. package/dist/cli/chunks/{chunk-SOSJWM3E.js → chunk-QFYUZYRA.js} +4 -4
  131. package/dist/cli/chunks/{chunk-RUTO67PT.js → chunk-R2NHGESM.js} +2 -2
  132. package/dist/cli/chunks/{chunk-K55EAWZ5.js → chunk-RG42LDOB.js} +2 -2
  133. package/dist/cli/chunks/{chunk-JAPBSSFY.js → chunk-RSMPJWQH.js} +1 -1
  134. package/dist/cli/chunks/{chunk-46HBVDMU.js → chunk-SFPGLUXS.js} +1 -1
  135. package/dist/cli/chunks/{chunk-TVLOED6O.js → chunk-SHEVM5PF.js} +2 -2
  136. package/dist/cli/chunks/{chunk-6RDVY26I.js → chunk-SJMZZMHP.js} +2 -2
  137. package/dist/cli/chunks/{chunk-3DJNKNBR.js → chunk-ST7ASEJO.js} +57 -57
  138. package/dist/cli/chunks/{chunk-QS5KZYUZ.js → chunk-SWY6KGMF.js} +2 -2
  139. package/dist/cli/chunks/{chunk-UHHMAKPE.js → chunk-T2TDTBFV.js} +1 -1
  140. package/dist/cli/chunks/{chunk-5HAPS6VD.js → chunk-TC52M542.js} +2 -2
  141. package/dist/cli/chunks/chunk-TMNEK7TP.js +2 -0
  142. package/dist/cli/chunks/{chunk-ELI4GDQO.js → chunk-U3BWBP6B.js} +2 -2
  143. package/dist/cli/chunks/{chunk-CZBIREL5.js → chunk-U7CIY3YR.js} +2 -2
  144. package/dist/cli/chunks/{chunk-X2DR27AY.js → chunk-UDCYQLTD.js} +2 -2
  145. package/dist/cli/chunks/{chunk-CEXNW5TR.js → chunk-UKKFZJME.js} +1 -1
  146. package/dist/cli/chunks/{chunk-5NC7QEJ6.js → chunk-UQLAN5TX.js} +4 -4
  147. package/dist/cli/chunks/{chunk-BIXRTOH3.js → chunk-UTFMMZ57.js} +3 -3
  148. package/dist/cli/chunks/{chunk-YXU35GGD.js → chunk-UTNKMPTC.js} +1 -1
  149. package/dist/cli/chunks/{chunk-HZFK2Z2Z.js → chunk-V4QJ3MMT.js} +1 -1
  150. package/dist/cli/chunks/{chunk-LJCEDTUM.js → chunk-V7VZSNDK.js} +3 -3
  151. package/dist/cli/chunks/{chunk-RLB7K7QP.js → chunk-VKFVJCIH.js} +1 -1
  152. package/dist/cli/chunks/{chunk-5GIJU2ZY.js → chunk-VQRBBR27.js} +2 -2
  153. package/dist/cli/chunks/{chunk-Q2RBOC7V.js → chunk-VVK4ECVJ.js} +2 -2
  154. package/dist/cli/chunks/{chunk-624QRKQX.js → chunk-VWRNG3UK.js} +1 -1
  155. package/dist/cli/chunks/{chunk-F3KS3TAB.js → chunk-VWSGWYRB.js} +2 -2
  156. package/dist/cli/chunks/{chunk-I7WAW7TM.js → chunk-W5A36V3Z.js} +2 -2
  157. package/dist/cli/chunks/chunk-WAWKAYPY.js +2 -0
  158. package/dist/cli/chunks/{chunk-NMY4KTWA.js → chunk-WLXGUQOZ.js} +2 -2
  159. package/dist/cli/chunks/{chunk-7VTKR44N.js → chunk-X3HM7SV4.js} +2 -2
  160. package/dist/cli/chunks/chunk-X6VYQVUM.js +2 -0
  161. package/dist/cli/chunks/{chunk-ZL5LJT7D.js → chunk-X7ZQIFES.js} +2 -2
  162. package/dist/cli/chunks/{chunk-5VUIXDY2.js → chunk-XOOBLZXR.js} +2 -2
  163. package/dist/cli/chunks/{chunk-L4D3TPFP.js → chunk-XZQVC3GD.js} +1 -1
  164. package/dist/cli/chunks/{chunk-BO7UFNYV.js → chunk-Y5ZBF7MA.js} +2 -2
  165. package/dist/cli/chunks/{chunk-ULCHPPW2.js → chunk-YNQPHRUZ.js} +1 -1
  166. package/dist/cli/chunks/{chunk-ZCP4P6O2.js → chunk-YRH7KMTU.js} +2 -2
  167. package/dist/cli/chunks/{chunk-QLKUCMZC.js → chunk-YTYS2XSY.js} +1 -1
  168. package/dist/cli/chunks/{chunk-JPJEAK4G.js → chunk-YUP3APSN.js} +1 -1
  169. package/dist/cli/chunks/{chunk-BXATKI5S.js → chunk-YVWMJZ6O.js} +2 -2
  170. package/dist/cli/chunks/{chunk-PS6WFCA4.js → chunk-Z3LDUPLQ.js} +2 -2
  171. package/dist/cli/chunks/{chunk-FOJRPEIP.js → chunk-ZBI7PJFX.js} +2 -2
  172. package/dist/cli/chunks/{chunk-NHRF3V4B.js → chunk-ZG7UKWBB.js} +2 -2
  173. package/dist/cli/chunks/{chunk-7XUB7U6Z.js → chunk-ZOHS32SI.js} +2 -2
  174. package/dist/cli/chunks/{chunk-RHIQ6QO5.js → chunk-ZOVAZTXE.js} +430 -430
  175. package/dist/cli/chunks/{chunk-7QVPMH25.js → chunk-ZWMFKZEQ.js} +2 -2
  176. package/dist/cli/chunks/{ci-GEJCXMBK.js → ci-7NUCRGWO.js} +2 -2
  177. package/dist/cli/chunks/{ci-config-2ZVV4OXL.js → ci-config-VQVECCFI.js} +2 -2
  178. package/dist/cli/chunks/{ci-output-E45OGVPR.js → ci-output-P7GQ6TKF.js} +2 -2
  179. package/dist/cli/chunks/{circuit-breaker-X73ITYZC.js → circuit-breaker-5YP6N6HE.js} +2 -2
  180. package/dist/cli/chunks/{claude-flow-setup-W4PPH46C.js → claude-flow-setup-W5H7CMU6.js} +2 -2
  181. package/dist/cli/chunks/client-RFUSQRUZ.js +2 -0
  182. package/dist/cli/chunks/{cline-installer-NUEPMWDE.js → cline-installer-OYANSZ54.js} +2 -2
  183. package/dist/cli/chunks/{code-6WQHBS7G.js → code-OMT4UEZI.js} +3 -3
  184. package/dist/cli/chunks/{code-index-extractor-BXQIFIFT.js → code-index-extractor-M2JEWKNF.js} +2 -2
  185. package/dist/cli/chunks/{codex-installer-Z337R2KH.js → codex-installer-YBS6N5O3.js} +2 -2
  186. package/dist/cli/chunks/{completions-F5DMYFHV.js → completions-U7GS5RG6.js} +2 -2
  187. package/dist/cli/chunks/{complexity-analyzer-W2SYPZDI.js → complexity-analyzer-QSXPIUIU.js} +2 -2
  188. package/dist/cli/chunks/{continuedev-installer-ZCHUIFTN.js → continuedev-installer-W5TTT743.js} +2 -2
  189. package/dist/cli/chunks/{copilot-installer-M5JNODXF.js → copilot-installer-KC2RT24C.js} +2 -2
  190. package/dist/cli/chunks/core-handlers-ZC7QB432.js +2 -0
  191. package/dist/cli/chunks/{cost-tracker-LSYTHBHV.js → cost-tracker-OQPVR6V4.js} +2 -2
  192. package/dist/cli/chunks/{coverage-PGMRS5SS.js → coverage-TCO2A2NX.js} +3 -3
  193. package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +2 -0
  194. package/dist/cli/chunks/{cursor-installer-XPUA73UW.js → cursor-installer-MH7GWD4L.js} +2 -2
  195. package/dist/cli/chunks/daemon-JER6HE2J.js +12 -0
  196. package/dist/cli/chunks/{daemon-ITKDIYMW.js → daemon-UJEARJZ2.js} +3 -3
  197. package/dist/cli/chunks/{dag-attention-scheduler-T55AXLD6.js → dag-attention-scheduler-F3SUJU5O.js} +2 -2
  198. package/dist/cli/chunks/{detect-DR7J6K4O.js → detect-5QTCRB32.js} +2 -2
  199. package/dist/cli/chunks/{dist-node-LAJJBOUT.js → dist-node-XKZPHDBO.js} +2 -2
  200. package/dist/cli/chunks/{domain-handler-OMSHCRMK.js → domain-handler-V3UEADKW.js} +2 -2
  201. package/dist/cli/chunks/{domain-plugins-EQXSKC5K.js → domain-plugins-7PES4UHZ.js} +2 -2
  202. package/dist/cli/chunks/{domain-transfer-FKRAGVSW.js → domain-transfer-NF7UJW7B.js} +2 -2
  203. package/dist/cli/chunks/dream-VALD726W.js +2 -0
  204. package/dist/cli/chunks/{embed-and-insert-pattern-JZFPCNL3.js → embed-and-insert-pattern-D2HWORHF.js} +2 -2
  205. package/dist/cli/chunks/{eval-JSNNASBW.js → eval-UF2UBAUC.js} +2 -2
  206. package/dist/cli/chunks/{experience-capture-middleware-UPD3IZBK.js → experience-capture-middleware-2OUCEHHM.js} +3 -3
  207. package/dist/cli/chunks/{fast-paths-YNMIBS2E.js → fast-paths-KV5DKKHC.js} +2 -2
  208. package/dist/cli/chunks/{feature-flags-SRLXDKBI.js → feature-flags-6YWMTNO5.js} +2 -2
  209. package/dist/cli/chunks/{feature-flags-VIR7O4L7.js → feature-flags-MTW6NMR3.js} +2 -2
  210. package/dist/cli/chunks/file-discovery-VL73ASNI.js +2 -0
  211. package/dist/cli/chunks/{fleet-K2ED46EL.js → fleet-GJ66QFXK.js} +3 -3
  212. package/dist/cli/chunks/{gnn-wrapper-QCU4ZRYW.js → gnn-wrapper-52V6ANOY.js} +2 -2
  213. package/dist/cli/chunks/{heartbeat-handler-YYQI4WZM.js → heartbeat-handler-X7NHNRC7.js} +4 -4
  214. package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +2 -0
  215. package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +2 -0
  216. package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +2 -0
  217. package/dist/cli/chunks/{hnsw-legacy-bridge-C5TJSWTZ.js → hnsw-legacy-bridge-DZBE3KMK.js} +2 -2
  218. package/dist/cli/chunks/{hnswlib-node-SE3MJJYS.js → hnswlib-node-2AWWUJAZ.js} +2 -2
  219. package/dist/cli/chunks/{hooks-C572SRDH.js → hooks-XLPVROL3.js} +10 -10
  220. package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +2 -0
  221. package/dist/cli/chunks/{hypergraph-engine-35A6G3M5.js → hypergraph-engine-6TI7YP6P.js} +2 -2
  222. package/dist/cli/chunks/{hypergraph-handler-U2756CWI.js → hypergraph-handler-DBIBBOXS.js} +3 -3
  223. package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +2 -0
  224. package/dist/cli/chunks/init-guard-OSO6MIDD.js +2 -0
  225. package/dist/cli/chunks/init-handler-7S7IHMUF.js +88 -0
  226. package/dist/cli/chunks/init-wizard-VH34J4TL.js +2 -0
  227. package/dist/cli/chunks/kernel-KJD24NO7.js +2 -0
  228. package/dist/cli/chunks/{kilocode-installer-32PX5YH7.js → kilocode-installer-2KBRFXMA.js} +2 -2
  229. package/dist/cli/chunks/{kiro-installer-C4ROMMUS.js → kiro-installer-5VFR4OQZ.js} +2 -2
  230. package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +2 -0
  231. package/dist/cli/chunks/{learning-GEPVZGJQ.js → learning-G5NHL3DV.js} +20 -20
  232. package/dist/cli/chunks/{llm-router-XRKTTJTX.js → llm-router-4EAPPMHS.js} +4 -4
  233. package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +2 -0
  234. package/dist/cli/chunks/{load-XVH6HW7E.js → load-UYMZPEY6.js} +2 -2
  235. package/dist/cli/chunks/load-test-OTQ2JQ5F.js +2 -0
  236. package/dist/cli/chunks/{mcp-IULSTM4Z.js → mcp-NOTDZBW5.js} +2 -2
  237. package/dist/cli/chunks/{memory-6K7IAU4T.js → memory-QL53YIHP.js} +5 -5
  238. package/dist/cli/chunks/memory-backend-4QSNRRV6.js +2 -0
  239. package/dist/cli/chunks/{memory-handlers-CG6DRLAW.js → memory-handlers-YFFYRSM6.js} +2 -2
  240. package/dist/cli/chunks/{multi-model-executor-VZDUYPLX.js → multi-model-executor-PDDDXF2B.js} +2 -2
  241. package/dist/cli/chunks/{opencode-installer-QUTXKNH4.js → opencode-installer-75D2SKOT.js} +2 -2
  242. package/dist/cli/chunks/{orchestrator-PCKKUWOP.js → orchestrator-3WIZBV4T.js} +5 -5
  243. package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +2 -0
  244. package/dist/cli/chunks/{pattern-usage-recorder-PX5HQVRL.js → pattern-usage-recorder-TEX2JGHA.js} +2 -2
  245. package/dist/cli/chunks/{pipeline-O562GTOG.js → pipeline-7ATPA6LU.js} +2 -2
  246. package/dist/cli/chunks/{platform-PM7Q2AZS.js → platform-WPSKRJE7.js} +2 -2
  247. package/dist/cli/chunks/{plugin-OTYTFGPY.js → plugin-UUFOVVMU.js} +2 -2
  248. package/dist/cli/chunks/{prime-radiant-advanced-wasm-6CFXTHC2.js → prime-radiant-advanced-wasm-PDFSYWKZ.js} +2 -2
  249. package/dist/cli/chunks/project-root-SRTA6TBL.js +2 -0
  250. package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +2 -0
  251. package/dist/cli/chunks/{protocol-handler-PPGNSAOS.js → protocol-handler-3VRYRIQB.js} +2 -2
  252. package/dist/cli/chunks/{prove-WQ3BKRZG.js → prove-2NAUROGF.js} +2 -2
  253. package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +2 -0
  254. package/dist/cli/chunks/{quality-C5WUU3AA.js → quality-ZIEI2WGA.js} +2 -2
  255. package/dist/cli/chunks/{quality-gate-WSSRKD5U.js → quality-gate-KWJO4SWQ.js} +3 -3
  256. package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +2 -0
  257. package/dist/cli/chunks/{real-embeddings-CFQE7IRQ.js → real-embeddings-TSZ4UIAE.js} +2 -2
  258. package/dist/cli/chunks/{ref-validation-DHKHXVZT.js → ref-validation-DWFFRETJ.js} +2 -2
  259. package/dist/cli/chunks/{roocode-installer-3PPODABV.js → roocode-installer-XTZHLUBO.js} +2 -2
  260. package/dist/cli/chunks/router-AUD4GATI.js +2 -0
  261. package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +2 -0
  262. package/dist/cli/chunks/{routing-handler-JNXTGT6T.js → routing-handler-GG525TDM.js} +2 -2
  263. package/dist/cli/chunks/{ruvector-commands-6YLROPVP.js → ruvector-commands-QKRJDM7Z.js} +2 -2
  264. package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +2 -0
  265. package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +2 -0
  266. package/dist/cli/chunks/{rvf-migration-coordinator-4DWB4WRK.js → rvf-migration-coordinator-FF52OS6Q.js} +2 -2
  267. package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +2 -0
  268. package/dist/cli/chunks/{rvf-store-integrity-YKR2ZNBF.js → rvf-store-integrity-M6DXTAZ4.js} +2 -2
  269. package/dist/cli/chunks/safe-db-Q6JUKG2A.js +2 -0
  270. package/dist/cli/chunks/schedule-44OSMGE5.js +2 -0
  271. package/dist/cli/chunks/scheduler-V3HO2QQT.js +2 -0
  272. package/dist/cli/chunks/security-EHXSW22U.js +18 -0
  273. package/dist/cli/chunks/{shared-rvf-adapter-LNRLFP5I.js → shared-rvf-adapter-6EH7UVJL.js} +2 -2
  274. package/dist/cli/chunks/{shared-rvf-dual-writer-GWU6YQNS.js → shared-rvf-dual-writer-WML274E7.js} +2 -2
  275. package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +2 -0
  276. package/dist/cli/chunks/{standalone-memory-46KKBSSV.js → standalone-memory-C7QKAXS4.js} +2 -2
  277. package/dist/cli/chunks/{status-handler-35T5FTDQ.js → status-handler-VLI7MRLM.js} +2 -2
  278. package/dist/cli/chunks/{structural-health-P7QPQWLO.js → structural-health-3LPG6MQN.js} +2 -2
  279. package/dist/cli/chunks/{sync-Y43EWBSY.js → sync-4IMMQEPT.js} +2 -2
  280. package/dist/cli/chunks/{sync-W6Z4R4PL.js → sync-JFJEJBVK.js} +2 -2
  281. package/dist/cli/chunks/{task-handler-5CX3ZYT7.js → task-handler-IED3K6E4.js} +2 -2
  282. package/dist/cli/chunks/{task-handlers-DQZGOJNE.js → task-handlers-FH6DNTHW.js} +3 -3
  283. package/dist/cli/chunks/{test-TPP53VVV.js → test-GPKT3CKZ.js} +4 -4
  284. package/dist/cli/chunks/{test-scheduling-WBV4UMQH.js → test-scheduling-Z42XXZP6.js} +3 -3
  285. package/dist/cli/chunks/{token-bootstrap-GIIDXHLC.js → token-bootstrap-HMM3AHXM.js} +2 -2
  286. package/dist/cli/chunks/{token-usage-AKK37RB7.js → token-usage-6Y2ERYIY.js} +2 -2
  287. package/dist/cli/chunks/{transformers-7MASPELS.js → transformers-MB63T2XO.js} +2 -2
  288. package/dist/cli/chunks/{tree-sitter-wasm-parser-YZKD6UGB.js → tree-sitter-wasm-parser-56GDQCMR.js} +2 -2
  289. package/dist/cli/chunks/{types-AZ3BTXDP.js → types-J4J6QV3I.js} +2 -2
  290. package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +2 -0
  291. package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +2 -0
  292. package/dist/cli/chunks/unified-persistence-72OCJJKK.js +2 -0
  293. package/dist/cli/chunks/{upgrade-L7OTDKEK.js → upgrade-U4XU7LFM.js} +2 -2
  294. package/dist/cli/chunks/{validate-O3QVFIGP.js → validate-B57HA4YK.js} +2 -2
  295. package/dist/cli/chunks/{validate-swarm-2UGBGLTX.js → validate-swarm-UPPA4M6T.js} +2 -2
  296. package/dist/cli/chunks/visual-security-7F5UV23J.js +2 -0
  297. package/dist/cli/chunks/{web-tree-sitter-J75IYPRO.js → web-tree-sitter-GDZMUKOZ.js} +2 -2
  298. package/dist/cli/chunks/{windsurf-installer-FQ5DBFCG.js → windsurf-installer-VJRWCHXP.js} +2 -2
  299. package/dist/cli/chunks/witness-chain-KZ57QUFE.js +2 -0
  300. package/dist/cli/chunks/{witness-chain-I7TN4MXZ.js → witness-chain-LFASSMZK.js} +2 -2
  301. package/dist/cli/chunks/{witness-chain-repair-D3NE3NQK.js → witness-chain-repair-TPHN4DXN.js} +2 -2
  302. package/dist/cli/chunks/{witness-chain-verifier-RU2WOP5M.js → witness-chain-verifier-Z23FVABW.js} +2 -2
  303. package/dist/cli/chunks/{witness-key-manager-IHQB2FR5.js → witness-key-manager-745MJ7WO.js} +2 -2
  304. package/dist/cli/chunks/{workflow-6BWTNVV6.js → workflow-T245QNQM.js} +4 -4
  305. package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.js +2 -0
  306. package/dist/cli/chunks/{wrappers-URVP25VU.js → wrappers-WCAYIQUX.js} +2 -2
  307. package/dist/cli/commands/learning.js +3 -2
  308. package/dist/cli/commands/security.d.ts +16 -0
  309. package/dist/cli/commands/security.js +76 -9
  310. package/dist/cli/handlers/init-guard.d.ts +21 -1
  311. package/dist/cli/handlers/init-guard.js +51 -8
  312. package/dist/cli/handlers/init-handler.js +57 -56
  313. package/dist/cli/index.js +11 -0
  314. package/dist/cli/utils/ci-output.d.ts +5 -0
  315. package/dist/cli/utils/ci-output.js +8 -0
  316. package/dist/coordination/handlers/security-handlers.js +22 -6
  317. package/dist/coordination/protocols/defect-investigation.js +7 -1
  318. package/dist/coordination/protocols/learning-consolidation.js +6 -12
  319. package/dist/coordination/protocols/security-audit.js +11 -0
  320. package/dist/coordination/result-saver.d.ts +9 -0
  321. package/dist/coordination/result-saver.js +34 -4
  322. package/dist/domains/coverage-analysis/collected-metrics.d.ts +2 -0
  323. package/dist/domains/coverage-analysis/collected-metrics.js +8 -1
  324. package/dist/domains/defect-intelligence/services/defect-predictor.js +9 -6
  325. package/dist/domains/learning-optimization/active-patterns.d.ts +55 -0
  326. package/dist/domains/learning-optimization/active-patterns.js +77 -0
  327. package/dist/domains/learning-optimization/coordinator.js +12 -9
  328. package/dist/domains/learning-optimization/services/learning-coordinator.js +15 -17
  329. package/dist/domains/quality-assessment/interfaces.d.ts +4 -0
  330. package/dist/domains/quality-assessment/quality-evidence.d.ts +1 -1
  331. package/dist/domains/quality-assessment/services/quality-analyzer.js +7 -5
  332. package/dist/domains/quality-assessment/services/quality-gate.js +12 -3
  333. package/dist/domains/security-compliance/dependency-advisory-engine.d.ts +52 -0
  334. package/dist/domains/security-compliance/dependency-advisory-engine.js +113 -0
  335. package/dist/domains/security-compliance/interfaces.d.ts +30 -0
  336. package/dist/domains/security-compliance/plugin.d.ts +7 -1
  337. package/dist/domains/security-compliance/plugin.js +19 -0
  338. package/dist/domains/security-compliance/services/scanners/dependency-resolver.d.ts +71 -0
  339. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +232 -0
  340. package/dist/domains/security-compliance/services/scanners/dependency-scanner.d.ts +21 -6
  341. package/dist/domains/security-compliance/services/scanners/dependency-scanner.js +142 -64
  342. package/dist/domains/security-compliance/services/scanners/lockfile-versions.d.ts +43 -0
  343. package/dist/domains/security-compliance/services/scanners/lockfile-versions.js +248 -0
  344. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +30 -2
  345. package/dist/domains/security-compliance/services/security-auditor.d.ts +19 -6
  346. package/dist/domains/security-compliance/services/security-auditor.js +133 -92
  347. package/dist/domains/test-execution/services/retry-handler.js +34 -7
  348. package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
  349. package/dist/domains/test-execution/services/test-executor.js +87 -7
  350. package/dist/kernel/shared-dirs.js +17 -5
  351. package/dist/learning/dream/dream-engine.d.ts +27 -1
  352. package/dist/learning/dream/dream-engine.js +56 -2
  353. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -0
  354. package/dist/learning/dream/rvcow-branch-manager.js +8 -0
  355. package/dist/learning/dream/speculative-dreamer.d.ts +8 -0
  356. package/dist/learning/dream/speculative-dreamer.js +8 -0
  357. package/dist/mcp/background-workers.d.ts +15 -0
  358. package/dist/mcp/background-workers.js +71 -0
  359. package/dist/mcp/bundle.js +881 -878
  360. package/dist/mcp/entry.js +4 -49
  361. package/dist/mcp/handlers/domain-handler-configs.d.ts +4 -0
  362. package/dist/mcp/handlers/domain-handler-configs.js +5 -1
  363. package/dist/mcp/protocol-server.js +2 -1
  364. package/dist/mcp/types.d.ts +6 -0
  365. package/dist/shared/security/index.d.ts +2 -2
  366. package/dist/shared/security/index.js +1 -1
  367. package/dist/shared/security/osv-client.d.ts +79 -132
  368. package/dist/shared/security/osv-client.js +344 -167
  369. package/dist/shared/security/osv-lookup.d.ts +124 -0
  370. package/dist/shared/security/osv-lookup.js +246 -0
  371. package/dist/shared/security/osv-types.d.ts +119 -0
  372. package/dist/shared/security/osv-types.js +6 -0
  373. package/dist/workers/daemon.d.ts +5 -0
  374. package/dist/workers/daemon.js +16 -2
  375. package/dist/workers/interfaces.d.ts +6 -1
  376. package/dist/workers/namespaced-keys.d.ts +16 -0
  377. package/dist/workers/namespaced-keys.js +24 -0
  378. package/dist/workers/quality-daemon/persistent-memory.d.ts +1 -1
  379. package/dist/workers/quality-daemon/persistent-memory.js +2 -2
  380. package/dist/workers/worker-env.d.ts +45 -0
  381. package/dist/workers/worker-env.js +76 -0
  382. package/dist/workers/worker-manager.js +5 -2
  383. package/dist/workers/workers/defect-predictor.d.ts +25 -8
  384. package/dist/workers/workers/defect-predictor.js +223 -216
  385. package/dist/workers/workers/learning-consolidation.d.ts +20 -0
  386. package/dist/workers/workers/learning-consolidation.js +53 -22
  387. package/dist/workers/workers/performance-baseline.d.ts +24 -9
  388. package/dist/workers/workers/performance-baseline.js +187 -230
  389. package/dist/workers/workers/quality-gate.d.ts +11 -9
  390. package/dist/workers/workers/quality-gate.js +125 -267
  391. package/dist/workers/workers/security-scan-records.d.ts +111 -0
  392. package/dist/workers/workers/security-scan-records.js +128 -0
  393. package/dist/workers/workers/security-scan.d.ts +25 -7
  394. package/dist/workers/workers/security-scan.js +187 -164
  395. package/package.json +2 -2
  396. package/dist/cli/chunks/adapter-PP3XIXDV.js +0 -2
  397. package/dist/cli/chunks/aqe-learning-engine-VDUQJKKY.js +0 -2
  398. package/dist/cli/chunks/base-QSYWWPCE.js +0 -2
  399. package/dist/cli/chunks/browser-workflow-WXXPBSCM.js +0 -2
  400. package/dist/cli/chunks/chunk-45MVRQG4.js +0 -2
  401. package/dist/cli/chunks/chunk-5VZVMO7B.js +0 -3
  402. package/dist/cli/chunks/chunk-EECF4CMA.js +0 -2
  403. package/dist/cli/chunks/client-6XKSQ4JT.js +0 -2
  404. package/dist/cli/chunks/core-handlers-OJYW4Y6M.js +0 -2
  405. package/dist/cli/chunks/cross-domain-router-QVUPQ2SC.js +0 -2
  406. package/dist/cli/chunks/daemon-QBYTCIMH.js +0 -10
  407. package/dist/cli/chunks/dream-3UABDRZJ.js +0 -2
  408. package/dist/cli/chunks/file-discovery-ZFGZTKZ4.js +0 -2
  409. package/dist/cli/chunks/heartbeat-scheduler-MJ6MTPDF.js +0 -2
  410. package/dist/cli/chunks/hnsw-adapter-FQWJCFVW.js +0 -2
  411. package/dist/cli/chunks/hnsw-index-NJYKJUHC.js +0 -2
  412. package/dist/cli/chunks/hybrid-backend-SL7RFID7.js +0 -2
  413. package/dist/cli/chunks/impact-analyzer-5ZJTXPVC.js +0 -2
  414. package/dist/cli/chunks/init-handler-PCLYQUSB.js +0 -88
  415. package/dist/cli/chunks/init-wizard-MQMDSIOF.js +0 -2
  416. package/dist/cli/chunks/kernel-MEJ5GMRH.js +0 -2
  417. package/dist/cli/chunks/knowledge-graph-XUBZSEZE.js +0 -2
  418. package/dist/cli/chunks/llm-router-service-QZAPAEPX.js +0 -2
  419. package/dist/cli/chunks/load-test-OVXIQ3AF.js +0 -2
  420. package/dist/cli/chunks/memory-backend-TRPOMPK4.js +0 -2
  421. package/dist/cli/chunks/pattern-null-store-JWYBRBZG.js +0 -2
  422. package/dist/cli/chunks/project-root-VVSTHIP4.js +0 -2
  423. package/dist/cli/chunks/protocol-executor-PXZCLZD3.js +0 -2
  424. package/dist/cli/chunks/qe-reasoning-bank-42FRS5V3.js +0 -2
  425. package/dist/cli/chunks/queen-coordinator-UI3B7DI6.js +0 -2
  426. package/dist/cli/chunks/router-HYRPWLAY.js +0 -2
  427. package/dist/cli/chunks/routing-feedback-BPZ5R6F3.js +0 -2
  428. package/dist/cli/chunks/rvf-dual-writer-DEKDQ6KO.js +0 -2
  429. package/dist/cli/chunks/rvf-migration-adapter-L53VBS7I.js +0 -2
  430. package/dist/cli/chunks/rvf-native-adapter-I6RUGD2D.js +0 -2
  431. package/dist/cli/chunks/safe-db-KS65XDCP.js +0 -2
  432. package/dist/cli/chunks/schedule-KD2VN6GB.js +0 -2
  433. package/dist/cli/chunks/scheduler-ZH3RMUHY.js +0 -2
  434. package/dist/cli/chunks/security-PWQTGDRU.js +0 -13
  435. package/dist/cli/chunks/sqlite-persistence-6DTVME5D.js +0 -2
  436. package/dist/cli/chunks/unified-memory-FCX7NLFZ.js +0 -2
  437. package/dist/cli/chunks/unified-memory-hnsw-VU5QJK37.js +0 -2
  438. package/dist/cli/chunks/unified-persistence-FM376LGE.js +0 -2
  439. package/dist/cli/chunks/visual-security-EU7Y3X46.js +0 -2
  440. package/dist/cli/chunks/witness-chain-CSEBT52D.js +0 -2
  441. package/dist/cli/chunks/workflow-orchestrator-ALNKOM3N.js +0 -2
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Agentic QE v3 - OSV lookup outcome types and response validation (#1049)
3
+ *
4
+ * A failed or partial advisory lookup is never "no vulnerabilities". Every
5
+ * package the lookup could not check is listed with the reason, and the
6
+ * overall status says whether the result can be read as a measurement.
7
+ */
8
+ import type { ParsedVulnerability } from './osv-types';
9
+ /** A package handed to an OSV lookup. */
10
+ export interface OSVPackageQuery {
11
+ name: string;
12
+ ecosystem: string;
13
+ version?: string;
14
+ }
15
+ /** A package whose advisories could not be checked, and why. */
16
+ export interface OSVUncheckedPackage {
17
+ name: string;
18
+ ecosystem: string;
19
+ version?: string;
20
+ reason: string;
21
+ }
22
+ /**
23
+ * Outcome of an OSV batch lookup.
24
+ * - complete: every package was checked; `results` is a measurement.
25
+ * - incomplete: some packages were checked (their findings are real), others not.
26
+ * - failed: no package could be checked.
27
+ */
28
+ export interface OSVBatchLookup {
29
+ status: 'complete' | 'incomplete' | 'failed';
30
+ /** Keyed `${ecosystem}:${name}`; only packages that were actually checked. */
31
+ results: Map<string, ParsedVulnerability[]>;
32
+ packagesRequested: number;
33
+ packagesChecked: number;
34
+ unchecked: OSVUncheckedPackage[];
35
+ /** Bounded, request-level error descriptions (no response bodies). */
36
+ errors: string[];
37
+ }
38
+ /** Thrown by the legacy list-returning methods when a lookup did not complete. */
39
+ export declare class OSVLookupError extends Error {
40
+ readonly lookup?: OSVBatchLookup;
41
+ constructor(message: string, lookup?: OSVBatchLookup);
42
+ static fromLookup(lookup: OSVBatchLookup): OSVLookupError;
43
+ }
44
+ /**
45
+ * Result key for one queried package: `${ecosystem}:${name}@${version}`.
46
+ * Keyed by version so two versions of one package never overwrite each other.
47
+ */
48
+ export declare const lookupKey: (pkg: {
49
+ ecosystem: string;
50
+ name: string;
51
+ version?: string;
52
+ }) => string;
53
+ /** At most `max` ids, then "and N more" — keeps reasons bounded. */
54
+ export declare function boundedList(items: readonly string[], max?: number): string;
55
+ /**
56
+ * The exact npm version a spec pins ("4.17.15", "=4.17.15", "v4.17.15"), or
57
+ * null for anything else: ranges (^ ~ < > <= >= || hyphen), wildcards, tags,
58
+ * and non-registry specs. A range is never reduced to a guessed version (#1049).
59
+ */
60
+ export declare function exactNpmVersion(spec: string): string | null;
61
+ /**
62
+ * What an npm dependency spec points at (#1049):
63
+ * - `local`: a workspace / linked / local-directory package. Not an OSV subject
64
+ * (its own dependencies are what can carry advisories).
65
+ * - `remote`: git, GitHub shorthand, URL or tarball (incl. `file:*.tgz`): third-party
66
+ * code with no registry version, so advisories cannot be matched.
67
+ * - `alias`: `npm:<real>@<range>` — the registry package `<real>`.
68
+ * - `registry`: an ordinary registry spec (exact version, range or tag).
69
+ */
70
+ export type NpmSpecKind = {
71
+ kind: 'local';
72
+ } | {
73
+ kind: 'remote';
74
+ } | {
75
+ kind: 'alias';
76
+ name: string;
77
+ spec: string;
78
+ } | {
79
+ kind: 'registry';
80
+ spec: string;
81
+ };
82
+ export declare function classifyNpmSpec(spec: string): NpmSpecKind;
83
+ /** A spec whose source is not the npm registry (local or remote); aliases are registry packages. */
84
+ export declare function isNonRegistrySpec(spec: string): boolean;
85
+ /**
86
+ * True for a concrete version OSV can match ("4.17.15", "1.0rc1", "2.0.0-beta.1").
87
+ * Ranges, tags, wildcards, URLs and aliases are not: querying OSV without a
88
+ * concrete version returns every advisory the package ever had.
89
+ */
90
+ export declare function isConcreteVersion(version: string): boolean;
91
+ /** Longest version string considered; versions come from repo-controlled files. */
92
+ export declare const MAX_VERSION_LENGTH = 256;
93
+ /** One querybatch entry: the advisory ids reported for a package, or why it is unusable. */
94
+ export type BatchEntry = {
95
+ ids: string[];
96
+ } | {
97
+ reason: string;
98
+ };
99
+ /**
100
+ * Validate a querybatch body against the queries sent. `null` means the body as
101
+ * a whole is unusable (every package in the chunk is unchecked).
102
+ */
103
+ export declare function parseBatchBody(body: unknown, expected: number): BatchEntry[] | null;
104
+ /** A full OSV advisory record has a string id and an `affected` array. */
105
+ export declare function isAdvisoryRecord(body: unknown): body is {
106
+ id: string;
107
+ affected: unknown[];
108
+ };
109
+ /**
110
+ * Whether an advisory affects `pkg@version` according to its own `affected`
111
+ * entries. Used to confirm querybatch matches: OSV's batch endpoint can return
112
+ * advisories whose ranges for the package exclude the version. An advisory is
113
+ * dropped only when every matching entry is positively evaluated as not
114
+ * affected; anything that cannot be evaluated (no matching entry, ECOSYSTEM/GIT
115
+ * ranges, unparseable versions) is kept.
116
+ */
117
+ export declare function advisoryAffectsVersion(advisory: unknown, pkg: {
118
+ name: string;
119
+ ecosystem: string;
120
+ version: string;
121
+ }): boolean;
122
+ /** Lookup status from the counts. */
123
+ export declare function lookupStatus(requested: number, checked: number): OSVBatchLookup['status'];
124
+ //# sourceMappingURL=osv-lookup.d.ts.map
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Agentic QE v3 - OSV lookup outcome types and response validation (#1049)
3
+ *
4
+ * A failed or partial advisory lookup is never "no vulnerabilities". Every
5
+ * package the lookup could not check is listed with the reason, and the
6
+ * overall status says whether the result can be read as a measurement.
7
+ */
8
+ /** Thrown by the legacy list-returning methods when a lookup did not complete. */
9
+ export class OSVLookupError extends Error {
10
+ lookup;
11
+ constructor(message, lookup) {
12
+ super(message);
13
+ this.name = 'OSVLookupError';
14
+ this.lookup = lookup;
15
+ }
16
+ static fromLookup(lookup) {
17
+ const reasons = [...new Set(lookup.unchecked.map((p) => p.reason))].slice(0, 3).join('; ');
18
+ return new OSVLookupError(`OSV advisories could not be checked for ${lookup.unchecked.length} of ${lookup.packagesRequested} package(s): ${reasons}`, lookup);
19
+ }
20
+ }
21
+ /**
22
+ * Result key for one queried package: `${ecosystem}:${name}@${version}`.
23
+ * Keyed by version so two versions of one package never overwrite each other.
24
+ */
25
+ export const lookupKey = (pkg) => `${pkg.ecosystem}:${pkg.name}@${pkg.version ?? ''}`;
26
+ /** At most `max` ids, then "and N more" — keeps reasons bounded. */
27
+ export function boundedList(items, max = 5) {
28
+ return items.length <= max ? items.join(', ') : `${items.slice(0, max).join(', ')} and ${items.length - max} more`;
29
+ }
30
+ /**
31
+ * The exact npm version a spec pins ("4.17.15", "=4.17.15", "v4.17.15"), or
32
+ * null for anything else: ranges (^ ~ < > <= >= || hyphen), wildcards, tags,
33
+ * and non-registry specs. A range is never reduced to a guessed version (#1049).
34
+ */
35
+ export function exactNpmVersion(spec) {
36
+ const m = /^=?v?(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?)$/.exec(spec.trim());
37
+ return m ? m[1] : null;
38
+ }
39
+ export function classifyNpmSpec(spec) {
40
+ const s = spec.trim();
41
+ const alias = /^npm:((?:@[^/@\s]+\/)?[^@\s]+)(?:@(.*))?$/.exec(s);
42
+ if (alias)
43
+ return { kind: 'alias', name: alias[1], spec: alias[2] ?? '' };
44
+ if (/^(workspace:|link:|portal:)/.test(s))
45
+ return { kind: 'local' };
46
+ if (/^file:/.test(s))
47
+ return /\.(tgz|tar\.gz|tar)$/i.test(s) ? { kind: 'remote' } : { kind: 'local' };
48
+ if (/^(\.{0,2}\/|~\/)/.test(s))
49
+ return /\.(tgz|tar\.gz|tar)$/i.test(s) ? { kind: 'remote' } : { kind: 'local' };
50
+ if (/^(patch:|exec:|git\+|git:|github:|gitlab:|bitbucket:|https?:)/.test(s))
51
+ return { kind: 'remote' };
52
+ if (/^[^\s@/:]+\/[^\s@/:]+(#.*)?$/.test(s))
53
+ return { kind: 'remote' }; // GitHub "user/repo" shorthand
54
+ return { kind: 'registry', spec: s };
55
+ }
56
+ /** A spec whose source is not the npm registry (local or remote); aliases are registry packages. */
57
+ export function isNonRegistrySpec(spec) {
58
+ const k = classifyNpmSpec(spec).kind;
59
+ return k === 'local' || k === 'remote';
60
+ }
61
+ /**
62
+ * True for a concrete version OSV can match ("4.17.15", "1.0rc1", "2.0.0-beta.1").
63
+ * Ranges, tags, wildcards, URLs and aliases are not: querying OSV without a
64
+ * concrete version returns every advisory the package ever had.
65
+ */
66
+ export function isConcreteVersion(version) {
67
+ if (version.length === 0 || version.length > MAX_VERSION_LENGTH)
68
+ return false;
69
+ if (!matchesVersionShape(version))
70
+ return false;
71
+ return !/(^|\.)[xX*](\.|$)/.test(version);
72
+ }
73
+ /** Longest version string considered; versions come from repo-controlled files. */
74
+ export const MAX_VERSION_LENGTH = 256;
75
+ const VERSION_CORE = /^\d+(?:\.\d+)*$/;
76
+ const VERSION_TAIL = /^[0-9A-Za-z][0-9A-Za-z.+-]*$/;
77
+ /**
78
+ * Linear equivalent of `^\d+(\.\d+)*([-+._]?[0-9A-Za-z][0-9A-Za-z.+-]*)?$`
79
+ * (whose overlapping quantifiers backtrack polynomially, CodeQL js/polynomial-redos).
80
+ * `_` is not in the tail class, so it can only be the separator right after the
81
+ * numeric core. Without `_`, any accepted split can be re-split after the first
82
+ * digit run (the remaining `.digits` segments fit the tail class).
83
+ */
84
+ function matchesVersionShape(version) {
85
+ const underscore = version.indexOf('_');
86
+ if (underscore >= 0) {
87
+ return VERSION_CORE.test(version.slice(0, underscore)) && VERSION_TAIL.test(version.slice(underscore + 1));
88
+ }
89
+ let i = 0;
90
+ while (i < version.length && version.charCodeAt(i) >= 48 && version.charCodeAt(i) <= 57)
91
+ i++;
92
+ if (i === 0)
93
+ return false;
94
+ const rest = version.slice(i);
95
+ if (rest === '')
96
+ return true;
97
+ // Splitting inside a 2+ digit run makes the tail start with a digit: the rest
98
+ // then only has to fit the tail class ("11." = core "1" + tail "1.").
99
+ if (i >= 2 && VERSION_TAIL_REST.test(rest))
100
+ return true;
101
+ const sep = rest[0] === '-' || rest[0] === '+' || rest[0] === '.';
102
+ return VERSION_TAIL.test(sep ? rest.slice(1) : rest);
103
+ }
104
+ const VERSION_TAIL_REST = /^[0-9A-Za-z.+-]*$/;
105
+ const isObject = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
106
+ /**
107
+ * Validate a querybatch body against the queries sent. `null` means the body as
108
+ * a whole is unusable (every package in the chunk is unchecked).
109
+ */
110
+ export function parseBatchBody(body, expected) {
111
+ if (!isObject(body) || !Array.isArray(body.results) || body.results.length !== expected)
112
+ return null;
113
+ return body.results.map((entry) => {
114
+ if (!isObject(entry))
115
+ return { reason: 'malformed OSV result entry' };
116
+ if (typeof entry.next_page_token === 'string' && entry.next_page_token) {
117
+ return { reason: 'OSV advisory list was truncated (paginated) and not fully retrieved' };
118
+ }
119
+ if (entry.vulns === undefined)
120
+ return { ids: [] };
121
+ if (!Array.isArray(entry.vulns))
122
+ return { reason: 'malformed OSV result entry' };
123
+ const ids = [];
124
+ for (const v of entry.vulns) {
125
+ if (!isObject(v) || typeof v.id !== 'string' || !v.id)
126
+ return { reason: 'malformed OSV advisory reference' };
127
+ ids.push(v.id);
128
+ }
129
+ return { ids };
130
+ });
131
+ }
132
+ /** A full OSV advisory record has a string id and an `affected` array. */
133
+ export function isAdvisoryRecord(body) {
134
+ return isObject(body) && typeof body.id === 'string' && Array.isArray(body.affected);
135
+ }
136
+ function parseSemver(version) {
137
+ const m = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/.exec(version.trim());
138
+ if (!m)
139
+ return null;
140
+ return { nums: [Number(m[1]), Number(m[2]), Number(m[3])], pre: m[4] ? m[4].split('.') : [] };
141
+ }
142
+ function compareSemver(a, b) {
143
+ for (let i = 0; i < 3; i++)
144
+ if (a.nums[i] !== b.nums[i])
145
+ return a.nums[i] < b.nums[i] ? -1 : 1;
146
+ if (a.pre.length === 0 || b.pre.length === 0)
147
+ return a.pre.length === b.pre.length ? 0 : a.pre.length === 0 ? 1 : -1;
148
+ for (let i = 0; i < Math.max(a.pre.length, b.pre.length); i++) {
149
+ const x = a.pre[i];
150
+ const y = b.pre[i];
151
+ if (x === undefined || y === undefined)
152
+ return x === undefined ? -1 : 1;
153
+ if (x === y)
154
+ continue;
155
+ const nx = /^\d+$/.test(x);
156
+ const ny = /^\d+$/.test(y);
157
+ if (nx && ny)
158
+ return Number(x) < Number(y) ? -1 : 1;
159
+ if (nx !== ny)
160
+ return nx ? -1 : 1;
161
+ return x < y ? -1 : 1;
162
+ }
163
+ return 0;
164
+ }
165
+ /** OSV SEMVER range evaluation; null when an event version cannot be parsed. */
166
+ function semverRangeAffects(version, events) {
167
+ // `at: null` is `introduced: "0"`: before every version, prereleases included.
168
+ const keyed = [];
169
+ for (const e of events) {
170
+ const kind = e.introduced !== undefined ? 'introduced' : e.fixed !== undefined ? 'fixed' : e.last_affected !== undefined ? 'last_affected' : null;
171
+ if (!kind)
172
+ continue; // `limit` does not change membership for a single version
173
+ const raw = e[kind];
174
+ if (kind === 'introduced' && raw === '0') {
175
+ keyed.push({ at: null, kind });
176
+ continue;
177
+ }
178
+ const at = parseSemver(raw);
179
+ if (!at)
180
+ return null;
181
+ keyed.push({ at, kind });
182
+ }
183
+ // Sort by version; on a tie a fixed/last_affected closes the earlier window
184
+ // before an introduced at the same version opens the next one.
185
+ const tieRank = (kind) => (kind === 'introduced' ? 1 : 0);
186
+ keyed.sort((a, b) => {
187
+ if (!a.at || !b.at)
188
+ return a.at === b.at ? 0 : a.at ? 1 : -1;
189
+ return compareSemver(a.at, b.at) || tieRank(a.kind) - tieRank(b.kind);
190
+ });
191
+ let affected = false;
192
+ for (const { at, kind } of keyed) {
193
+ if (!at) {
194
+ affected = true;
195
+ continue;
196
+ }
197
+ const cmp = compareSemver(version, at);
198
+ if (kind === 'introduced' && cmp >= 0)
199
+ affected = true;
200
+ else if (kind === 'fixed' && cmp >= 0)
201
+ affected = false;
202
+ else if (kind === 'last_affected' && cmp > 0)
203
+ affected = false;
204
+ }
205
+ return affected;
206
+ }
207
+ /**
208
+ * Whether an advisory affects `pkg@version` according to its own `affected`
209
+ * entries. Used to confirm querybatch matches: OSV's batch endpoint can return
210
+ * advisories whose ranges for the package exclude the version. An advisory is
211
+ * dropped only when every matching entry is positively evaluated as not
212
+ * affected; anything that cannot be evaluated (no matching entry, ECOSYSTEM/GIT
213
+ * ranges, unparseable versions) is kept.
214
+ */
215
+ export function advisoryAffectsVersion(advisory, pkg) {
216
+ const affected = advisory.affected;
217
+ if (!Array.isArray(affected))
218
+ return true;
219
+ const entries = affected.filter((a) => isObject(a) && isObject(a.package)
220
+ && a.package.name === pkg.name && a.package.ecosystem === pkg.ecosystem);
221
+ if (entries.length === 0)
222
+ return true;
223
+ const version = parseSemver(pkg.version);
224
+ for (const entry of entries) {
225
+ if (Array.isArray(entry.versions) && entry.versions.includes(pkg.version))
226
+ return true;
227
+ const ranges = Array.isArray(entry.ranges) ? entry.ranges.filter(isObject) : [];
228
+ if (ranges.length === 0 && !Array.isArray(entry.versions))
229
+ return true;
230
+ for (const range of ranges) {
231
+ if (range.type !== 'SEMVER' || !version || !Array.isArray(range.events))
232
+ return true;
233
+ const verdict = semverRangeAffects(version, range.events);
234
+ if (verdict !== false)
235
+ return true;
236
+ }
237
+ }
238
+ return false;
239
+ }
240
+ /** Lookup status from the counts. */
241
+ export function lookupStatus(requested, checked) {
242
+ if (checked === requested)
243
+ return 'complete';
244
+ return checked === 0 ? 'failed' : 'incomplete';
245
+ }
246
+ //# sourceMappingURL=osv-lookup.js.map
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Agentic QE v3 - OSV API record types
3
+ * API Documentation: https://google.github.io/osv.dev/api/
4
+ */
5
+ /**
6
+ * OSV query request
7
+ */
8
+ export interface OSVQueryRequest {
9
+ /** Package name */
10
+ package?: {
11
+ name: string;
12
+ ecosystem: OSVEcosystem;
13
+ };
14
+ /** Git commit hash */
15
+ commit?: string;
16
+ /**
17
+ * Package version to match. OSV reads it here, at the top level of the query;
18
+ * a `version` inside `package` is ignored (it returns every advisory ever).
19
+ */
20
+ version?: string;
21
+ }
22
+ /**
23
+ * Supported ecosystems
24
+ */
25
+ export type OSVEcosystem = 'npm' | 'PyPI' | 'Go' | 'Maven' | 'crates.io' | 'NuGet' | 'Packagist' | 'RubyGems' | 'Hex' | 'Pub';
26
+ /**
27
+ * OSV vulnerability record
28
+ */
29
+ export interface OSVVulnerability {
30
+ id: string;
31
+ summary: string;
32
+ details?: string;
33
+ aliases?: string[];
34
+ modified: string;
35
+ published?: string;
36
+ withdrawn?: string;
37
+ severity?: OSVSeverity[];
38
+ affected: OSVAffected[];
39
+ references?: OSVReference[];
40
+ database_specific?: Record<string, unknown>;
41
+ }
42
+ /**
43
+ * OSV severity rating
44
+ */
45
+ export interface OSVSeverity {
46
+ type: 'CVSS_V2' | 'CVSS_V3';
47
+ score: string;
48
+ }
49
+ /**
50
+ * OSV affected package information
51
+ */
52
+ export interface OSVAffected {
53
+ package: {
54
+ name: string;
55
+ ecosystem: string;
56
+ purl?: string;
57
+ };
58
+ ranges?: OSVRange[];
59
+ versions?: string[];
60
+ ecosystem_specific?: Record<string, unknown>;
61
+ database_specific?: Record<string, unknown>;
62
+ }
63
+ /**
64
+ * OSV version range
65
+ */
66
+ export interface OSVRange {
67
+ type: 'SEMVER' | 'ECOSYSTEM' | 'GIT';
68
+ repo?: string;
69
+ events: Array<{
70
+ introduced?: string;
71
+ fixed?: string;
72
+ last_affected?: string;
73
+ limit?: string;
74
+ }>;
75
+ }
76
+ /**
77
+ * OSV reference link
78
+ */
79
+ export interface OSVReference {
80
+ type: 'ADVISORY' | 'ARTICLE' | 'DETECTION' | 'DISCUSSION' | 'REPORT' | 'FIX' | 'GIT' | 'PACKAGE' | 'EVIDENCE' | 'WEB';
81
+ url: string;
82
+ }
83
+ /**
84
+ * OSV query response
85
+ */
86
+ export interface OSVQueryResponse {
87
+ vulns: OSVVulnerability[];
88
+ }
89
+ /**
90
+ * OSV batch query request
91
+ */
92
+ export interface OSVBatchQueryRequest {
93
+ queries: OSVQueryRequest[];
94
+ }
95
+ /**
96
+ * OSV batch query response
97
+ */
98
+ export interface OSVBatchQueryResponse {
99
+ results: Array<{
100
+ vulns?: OSVVulnerability[];
101
+ }>;
102
+ }
103
+ /**
104
+ * Parsed vulnerability for easier consumption
105
+ */
106
+ export interface ParsedVulnerability {
107
+ id: string;
108
+ cveIds: string[];
109
+ summary: string;
110
+ details: string;
111
+ severity: 'critical' | 'high' | 'medium' | 'low' | 'unknown';
112
+ cvssScore: number | null;
113
+ affectedPackage: string;
114
+ affectedVersions: string[];
115
+ fixedVersions: string[];
116
+ publishedDate: Date | null;
117
+ references: string[];
118
+ }
119
+ //# sourceMappingURL=osv-types.d.ts.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Agentic QE v3 - OSV API record types
3
+ * API Documentation: https://google.github.io/osv.dev/api/
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=osv-types.js.map
@@ -15,6 +15,11 @@ export interface DaemonConfig {
15
15
  autoStart?: boolean;
16
16
  /** Workers to enable (defaults to all) */
17
17
  enabledWorkers?: string[];
18
+ /**
19
+ * Workers to skip even when enabled (#1061). Defaults to the comma list in
20
+ * `AQE_DISABLED_WORKERS`.
21
+ */
22
+ disabledWorkers?: string[];
18
23
  /** Log level */
19
24
  logLevel?: 'debug' | 'info' | 'warn' | 'error';
20
25
  /** Health check interval (ms) */
@@ -9,12 +9,14 @@ import { WorkerManagerImpl } from './worker-manager.js';
9
9
  // Import all QE workers (ADR-014)
10
10
  import { TestHealthWorker, CoverageTrackerWorker, FlakyDetectorWorker, SecurityScanWorker, QualityGateWorker, LearningConsolidationWorker, DefectPredictorWorker, RegressionMonitorWorker, PerformanceBaselineWorker, ComplianceCheckerWorker, HeartbeatSchedulerWorker, } from './workers/index.js';
11
11
  import { QualityDaemon } from './quality-daemon/index.js';
12
+ import { parseDisabledWorkers } from './worker-env.js';
12
13
  /**
13
14
  * Default daemon configuration
14
15
  */
15
16
  const DEFAULT_CONFIG = {
16
17
  autoStart: true,
17
18
  enabledWorkers: [],
19
+ disabledWorkers: [],
18
20
  logLevel: 'info',
19
21
  healthCheckIntervalMs: 60000,
20
22
  };
@@ -29,7 +31,11 @@ export class QEDaemon {
29
31
  config;
30
32
  _qualityDaemon;
31
33
  constructor(config) {
32
- this.config = { ...DEFAULT_CONFIG, ...config };
34
+ this.config = {
35
+ ...DEFAULT_CONFIG,
36
+ ...config,
37
+ disabledWorkers: config?.disabledWorkers ?? parseDisabledWorkers(),
38
+ };
33
39
  this.workerManager = new WorkerManagerImpl();
34
40
  this.registerWorkers();
35
41
  }
@@ -158,12 +164,20 @@ export class QEDaemon {
158
164
  new HeartbeatSchedulerWorker(), // 30 min - Token-free heartbeat
159
165
  ];
160
166
  for (const worker of allWorkers) {
161
- // Check if worker is enabled
167
+ // Check if worker is enabled and not explicitly disabled (#1061)
168
+ if (this.config.disabledWorkers.includes(worker.config.id)) {
169
+ continue;
170
+ }
162
171
  if (this.config.enabledWorkers.length === 0 ||
163
172
  this.config.enabledWorkers.includes(worker.config.id)) {
164
173
  this.workerManager.register(worker);
165
174
  }
166
175
  }
176
+ const knownIds = new Set(allWorkers.map((worker) => worker.config.id));
177
+ const unknownIds = this.config.disabledWorkers.filter((id) => !knownIds.has(id));
178
+ if (unknownIds.length > 0) {
179
+ console.warn(`[AQE] WARN AQE_DISABLED_WORKERS: unknown worker id(s) ignored: ${unknownIds.join(', ')}`);
180
+ }
167
181
  }
168
182
  performHealthCheck() {
169
183
  const health = this.workerManager.getHealth();
@@ -163,7 +163,12 @@ export interface WorkerMemory {
163
163
  */
164
164
  get<T>(key: string, options?: WorkerMemoryReadOptions): Promise<T | undefined>;
165
165
  set<T>(key: string, value: T): Promise<void>;
166
- search(pattern: string): Promise<string[]>;
166
+ /**
167
+ * Keys matching a glob pattern. Like `get`, `options.namespace` searches
168
+ * another domain's records (e.g. recorded security scans, #1043); a backend
169
+ * without namespaces returns nothing for one.
170
+ */
171
+ search(pattern: string, limit?: number, options?: WorkerMemoryReadOptions): Promise<string[]>;
167
172
  }
168
173
  export interface WorkerLogger {
169
174
  debug(message: string, meta?: Record<string, unknown>): void;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Agentic QE v3 - namespaced search keys (#1049)
3
+ *
4
+ * Kernel memory backends disagree on what a namespaced `search` returns: the
5
+ * hybrid (sqlite) backend returns bare keys, the in-memory backend returns
6
+ * `<namespace>:<key>`. A worker that passes a search result straight back to
7
+ * `get(key, { namespace })` then double-prefixes the key and reads nothing.
8
+ */
9
+ /**
10
+ * The bare key for a key returned by `search(pattern, limit, { namespace })`.
11
+ * A result that already matches `pattern` is bare (keys may legitimately start
12
+ * with the namespace name, e.g. `defect-intelligence:predictor:…`); otherwise a
13
+ * leading `<namespace>:` is the backend's prefix and is removed.
14
+ */
15
+ export declare function bareSearchKey(found: string, namespace: string, pattern: string): string;
16
+ //# sourceMappingURL=namespaced-keys.d.ts.map
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Agentic QE v3 - namespaced search keys (#1049)
3
+ *
4
+ * Kernel memory backends disagree on what a namespaced `search` returns: the
5
+ * hybrid (sqlite) backend returns bare keys, the in-memory backend returns
6
+ * `<namespace>:<key>`. A worker that passes a search result straight back to
7
+ * `get(key, { namespace })` then double-prefixes the key and reads nothing.
8
+ */
9
+ function globToRegExp(pattern) {
10
+ const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
11
+ return new RegExp(`^${escaped.replace(/\*/g, '.*').replace(/\?/g, '.')}$`, 's');
12
+ }
13
+ /**
14
+ * The bare key for a key returned by `search(pattern, limit, { namespace })`.
15
+ * A result that already matches `pattern` is bare (keys may legitimately start
16
+ * with the namespace name, e.g. `defect-intelligence:predictor:…`); otherwise a
17
+ * leading `<namespace>:` is the backend's prefix and is removed.
18
+ */
19
+ export function bareSearchKey(found, namespace, pattern) {
20
+ if (globToRegExp(pattern).test(found))
21
+ return found;
22
+ return found.startsWith(`${namespace}:`) ? found.slice(namespace.length + 1) : found;
23
+ }
24
+ //# sourceMappingURL=namespaced-keys.js.map
@@ -26,6 +26,6 @@ export declare class PersistentWorkerMemory implements WorkerMemory {
26
26
  constructor(backend: KVBackend);
27
27
  get<T>(key: string, options?: WorkerMemoryReadOptions): Promise<T | undefined>;
28
28
  set<T>(key: string, value: T): Promise<void>;
29
- search(pattern: string): Promise<string[]>;
29
+ search(pattern: string, limit?: number, options?: WorkerMemoryReadOptions): Promise<string[]>;
30
30
  }
31
31
  //# sourceMappingURL=persistent-memory.d.ts.map
@@ -23,8 +23,8 @@ export class PersistentWorkerMemory {
23
23
  async set(key, value) {
24
24
  await this.backend.kvSet(key, value, NAMESPACE);
25
25
  }
26
- async search(pattern) {
27
- return this.backend.kvSearch(pattern, NAMESPACE);
26
+ async search(pattern, limit, options) {
27
+ return this.backend.kvSearch(pattern, options?.namespace ?? NAMESPACE, limit);
28
28
  }
29
29
  }
30
30
  //# sourceMappingURL=persistent-memory.js.map