agentic-qe 3.15.9 → 3.15.11

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 (668) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +365 -0
  3. package/README.md +8 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/adapters/a2a/agent-cards/generator.js +6 -3
  6. package/dist/adapters/a2a/tasks/task-router.js +3 -1
  7. package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
  8. package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
  9. package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
  10. package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
  11. package/dist/adapters/ag-ui/json-patch.js +10 -6
  12. package/dist/adapters/trajectory-adapter.js +1 -1
  13. package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
  14. package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
  15. package/dist/agents/overlay-loader.js +26 -21
  16. package/dist/audit/witness-chain.d.ts +1 -1
  17. package/dist/cli/bundle.js +6 -6
  18. package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
  19. package/dist/cli/chunks/agent-booster-wasm-TIDSQ3ZK.js +2 -0
  20. package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-G3EPBVA7.js} +2 -2
  21. package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-ARC5C7GW.js} +2 -2
  22. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
  23. package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-36DTATJV.js} +4 -4
  24. package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-K4I4QDXB.js} +2 -2
  25. package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-WQSJSJZF.js} +3 -3
  26. package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
  27. package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-BB4K67MT.js} +2 -2
  28. package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-CU3GOIU3.js} +3 -3
  29. package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-NJQX7ZNB.js} +2 -2
  30. package/dist/cli/chunks/browser-6YJF4FQW.js +4 -0
  31. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
  32. package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-25P77WA5.js} +1 -1
  33. package/dist/cli/chunks/chunk-2CW7VRPH.js +141 -0
  34. package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
  35. package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-2KFFEKSI.js} +2 -2
  36. package/dist/cli/chunks/chunk-2VLYUF7U.js +2 -0
  37. package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-325QCVDI.js} +2 -2
  38. package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-35M2X3C5.js} +2 -2
  39. package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-3RHOPP7A.js} +1 -1
  40. package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-4HJKQIX5.js} +2 -2
  41. package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
  42. package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-4RAQ7PJA.js} +8 -8
  43. package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-4RH5I24Q.js} +2 -2
  44. package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-4UBVAJFO.js} +3 -3
  45. package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-4UX35V7P.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-4X4MWMHB.js} +2 -2
  47. package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-55CH76ZO.js} +3 -3
  48. package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-57LNKSW7.js} +2 -2
  49. package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
  50. package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-5HQP4SLM.js} +2 -2
  51. package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-5MNASJOH.js} +2 -2
  52. package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-5MTWCCZJ.js} +2 -2
  53. package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-5N25I53C.js} +2 -2
  54. package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-5WYZHDIZ.js} +1 -1
  55. package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-5YLOLACR.js} +2 -2
  56. package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-672XOJDG.js} +2 -2
  57. package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-6NA3KZZT.js} +10 -10
  58. package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
  59. package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-76SNL7GU.js} +2 -2
  60. package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-7HEMJHPP.js} +2 -2
  61. package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-7R5HC56U.js} +1 -1
  62. package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-AFFN6E6Q.js} +2 -2
  63. package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-AMZKAJLJ.js} +2 -2
  64. package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-AP3ADWDK.js} +2 -2
  65. package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-APPZATXA.js} +2 -2
  66. package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-AUUJBXWX.js} +25 -20
  67. package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-BTVWA35P.js} +2 -2
  68. package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-BZPE3LDO.js} +2 -2
  69. package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-CFWGGRE7.js} +1 -1
  70. package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-CIAL4YRY.js} +2 -2
  71. package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-CO3DX2AX.js} +2 -2
  72. package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-DDEOZPWJ.js} +2 -2
  73. package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-DOBZPSKE.js} +1 -1
  74. package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-DOFREOPQ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-E44NNCEU.js} +2 -2
  76. package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-E6PF35JZ.js} +2 -2
  77. package/dist/cli/chunks/chunk-EBPJY4DI.js +3 -0
  78. package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EH2S6AOR.js} +2 -2
  79. package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-EIDJNT5C.js} +1 -1
  80. package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-EJPK7OTR.js} +2 -2
  81. package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EK5GMOSO.js} +1 -1
  82. package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ERN43HOX.js} +430 -433
  83. package/dist/cli/chunks/chunk-ETVAYGCB.js +180 -0
  84. package/dist/cli/chunks/chunk-EWPUQCN4.js +2 -0
  85. package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-FL32MTKT.js} +2 -2
  86. package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
  87. package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-FUYOOKTH.js} +5 -5
  88. package/dist/cli/chunks/chunk-FWSGPE3V.js +12 -0
  89. package/dist/cli/chunks/chunk-FZHSG75I.js +3 -0
  90. package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-G2IJFNZS.js} +2 -2
  91. package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-G4CKPWF6.js} +1 -1
  92. package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-G4FAPO57.js} +5 -5
  93. package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-G77MLBDF.js} +2 -2
  94. package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-GBFUANTC.js} +1 -1
  95. package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-GVKVJJQX.js} +2 -2
  96. package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GWJWSLDA.js} +2 -2
  97. package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-H43AFUKL.js} +2 -2
  98. package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
  99. package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-HDJUYAZG.js} +1 -1
  100. package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-HDNWSKHA.js} +2 -2
  101. package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-HFFPYC4G.js} +2 -2
  102. package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-HJ3XNTTJ.js} +2 -2
  103. package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-HYXUN7BW.js} +1 -1
  104. package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-I36CRDHF.js} +2 -2
  105. package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-I4K2HTQU.js} +1 -1
  106. package/dist/cli/chunks/chunk-IENZSO3K.js +4 -0
  107. package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
  108. package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-IOZRKXR5.js} +2 -2
  109. package/dist/cli/chunks/chunk-ITL3IN2E.js +3 -0
  110. package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-ITPGWGQS.js} +14 -14
  111. package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-IW6WDGHM.js} +1 -1
  112. package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-J4JMCZVA.js} +2 -2
  113. package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-JFLU7L3W.js} +2 -2
  114. package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-JGJXXAS6.js} +4 -4
  115. package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-JUMICXM6.js} +2 -2
  116. package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-K2HBNYAZ.js} +2 -2
  117. package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-K7V2WZNF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-KDI5JOYZ.js} +2 -2
  119. package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-KJCIMNHS.js} +1 -1
  120. package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-KKYO2NKV.js} +2 -2
  121. package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-KSE5TDM5.js} +2 -2
  122. package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-KSLLHFVY.js} +1 -1
  123. package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-KXS3Y2AX.js} +2 -2
  124. package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LBX7M4LW.js} +2 -2
  125. package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-LCVEEII4.js} +2 -2
  126. package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-LD5CFK53.js} +54 -33
  127. package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-LPU6PAJE.js} +2 -2
  128. package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-LQ4NUC6Q.js} +2 -2
  129. package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
  130. package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-LXQ3B4RY.js} +2 -2
  131. package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-M5RQ6U3G.js} +2 -2
  132. package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-M5XYIQYZ.js} +2 -2
  133. package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
  134. package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-MIK4RBEH.js} +1 -1
  135. package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-NC6K7SCQ.js} +2 -2
  136. package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-NKTWKYHB.js} +2 -2
  137. package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-NPZOBSAN.js} +2 -2
  138. package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-NQZNMCZU.js} +2 -2
  139. package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-NT7JRHMH.js} +1 -1
  140. package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-NTB342NJ.js} +1 -1
  141. package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-O4JAKWWM.js} +13 -13
  142. package/dist/cli/chunks/chunk-OD5D4LSZ.js +2 -0
  143. package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-OH5V5EJW.js} +2 -2
  144. package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-OHR7C777.js} +2 -2
  145. package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-OURITHFV.js} +2 -2
  146. package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-OV5RPLKV.js} +2 -2
  147. package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-OYJC3YON.js} +2 -2
  148. package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-QDESWOZP.js} +2 -2
  149. package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
  150. package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-R5LGV6GZ.js} +2 -2
  151. package/dist/cli/chunks/chunk-RBZCA7SD.js +12 -0
  152. package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
  153. package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
  154. package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-RTY7VSZB.js} +2 -2
  155. package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-S6IYEBAI.js} +2 -2
  156. package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-SMVVAVN2.js} +2 -2
  157. package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-T5KHJ3J7.js} +5 -5
  158. package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-TCYSBC7Y.js} +1 -1
  159. package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-TFW7CCKS.js} +1 -1
  160. package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
  161. package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-U3LJNNVJ.js} +5 -5
  162. package/dist/cli/chunks/chunk-UKKYMW3S.js +3 -0
  163. package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-UMVSWQNB.js} +2 -2
  164. package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-UTTSH4NH.js} +3 -3
  165. package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-V5AADCBC.js} +1 -1
  166. package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-V7DA4HAK.js} +1 -1
  167. package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-VBK2YAYY.js} +2 -2
  168. package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-VEEYL2CZ.js} +2 -2
  169. package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-VLD7Z2ED.js} +3 -3
  170. package/dist/cli/chunks/chunk-VO3DRK4P.js +3 -0
  171. package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-VWUZSNVC.js} +1 -1
  172. package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-VYTILW4R.js} +2 -2
  173. package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-WCAVIJ64.js} +1 -1
  174. package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-WCVCOT4E.js} +2 -2
  175. package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-WM3SRRA6.js} +2 -2
  176. package/dist/cli/chunks/chunk-X3PZCXWG.js +2 -0
  177. package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-X4J73KP3.js} +1 -1
  178. package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-XDI5X3FR.js} +1 -1
  179. package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-XGBU3KEM.js} +2 -2
  180. package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-XGPTZUKQ.js} +2 -2
  181. package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-XJKZ7FTR.js} +2 -2
  182. package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-XNLIWQYE.js} +2 -2
  183. package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-XS2XF3YG.js} +6 -5
  184. package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
  185. package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-YBBT3YYG.js} +1 -1
  186. package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-YNOCQ2SL.js} +1 -1
  187. package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-YOCULVHR.js} +1 -1
  188. package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-YPX2TV3M.js} +1 -1
  189. package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-Z2EA7A4Z.js} +1 -1
  190. package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-ZMC543GI.js} +2 -2
  191. package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
  192. package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-ZP75ASUU.js} +1 -1
  193. package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-ZQHDA4O7.js} +1 -1
  194. package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-6GUFAZMJ.js} +2 -2
  195. package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-J665XNOX.js} +2 -2
  196. package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-PEQQQWVD.js} +2 -2
  197. package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-HHB2JSKH.js} +2 -2
  198. package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-JKUJRWPN.js} +2 -2
  199. package/dist/cli/chunks/client-HL2COSFM.js +2 -0
  200. package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-Y77BWTAN.js} +2 -2
  201. package/dist/cli/chunks/{code-ONKLMVQ2.js → code-LV2HAGJY.js} +3 -3
  202. package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4GKKSETB.js} +2 -2
  203. package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-WMKBYE5Y.js} +2 -2
  204. package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-SBGFAOIJ.js} +2 -2
  205. package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-AQHFIJXC.js} +2 -2
  206. package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-26AYFS2E.js} +2 -2
  207. package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-4UD3DK55.js} +2 -2
  208. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
  209. package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-TP4NZCG4.js} +2 -2
  210. package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B2KIXHAI.js} +3 -3
  211. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
  212. package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-AVZEQZ4W.js} +2 -2
  213. package/dist/cli/chunks/daemon-P574WWBW.js +18 -0
  214. package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-XM2A7LQU.js} +3 -3
  215. package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
  216. package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-TYR7HT23.js} +2 -2
  217. package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-2DGVQGLS.js} +2 -2
  218. package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-RRA4ZOMF.js} +2 -2
  219. package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-IVZEZ5RB.js} +2 -2
  220. package/dist/cli/chunks/domain-transfer-DOBI67K6.js +2 -0
  221. package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
  222. package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
  223. package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-QV4LVPUF.js} +2 -2
  224. package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-DAPKT763.js} +3 -3
  225. package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-WVRFPHX7.js} +2 -2
  226. package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-DEFTUIYT.js} +2 -2
  227. package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-O7ZXDDCD.js} +2 -2
  228. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
  229. package/dist/cli/chunks/fleet-FVAUMKUT.js +46 -0
  230. package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-LS4LZJDR.js} +2 -2
  231. package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-RFTERD4K.js} +4 -4
  232. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
  233. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
  234. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
  235. package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
  236. package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-PHL3F2PR.js} +2 -2
  237. package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-GYJ6D4QM.js} +36 -36
  238. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
  239. package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
  240. package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-ZIMM647V.js} +3 -3
  241. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
  242. package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-VOMBXJXG.js} +2 -2
  243. package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-PSMUBWK5.js} +26 -25
  244. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
  245. package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
  246. package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-2YNTFBWJ.js} +2 -2
  247. package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-XHJDPVAZ.js} +2 -2
  248. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
  249. package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-GNSIDRNG.js} +24 -24
  250. package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-LQDM7IU2.js} +4 -4
  251. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
  252. package/dist/cli/chunks/{load-ZM43WGDO.js → load-YATHI72E.js} +2 -2
  253. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
  254. package/dist/cli/chunks/mcp-4Y6GDLYK.js +2 -0
  255. package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-OUW3L7H2.js} +5 -5
  256. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
  257. package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
  258. package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-UBZJXAD2.js} +2 -2
  259. package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-AMMNWVH5.js} +2 -2
  260. package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-Y44WDOER.js} +69 -25
  261. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
  262. package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-ESR42RME.js} +2 -2
  263. package/dist/cli/chunks/pipeline-EDTS6OSC.js +19 -0
  264. package/dist/cli/chunks/{platform-KJDABL5C.js → platform-5WONJSUX.js} +2 -2
  265. package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-IJXPCLD4.js} +2 -2
  266. package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
  267. package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
  268. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
  269. package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-DRD3GVNW.js} +2 -2
  270. package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-KTGW2HMJ.js} +2 -2
  271. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
  272. package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-DV2WPRRS.js} +2 -2
  273. package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-HFUAFVZC.js} +3 -3
  274. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
  275. package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RQRVOKVM.js} +2 -2
  276. package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-QWSKS5OY.js} +2 -2
  277. package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-RBAYRCHX.js} +2 -2
  278. package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
  279. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
  280. package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-FMPP3XKO.js} +2 -2
  281. package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-KZZT4HWF.js} +2 -2
  282. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
  283. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
  284. package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
  285. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
  286. package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
  287. package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
  288. package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
  289. package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
  290. package/dist/cli/chunks/{security-AUDTRX3I.js → security-CUEA3UIM.js} +3 -3
  291. package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
  292. package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
  293. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
  294. package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-IAHA3M6B.js} +2 -2
  295. package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-AFUCASTX.js} +2 -2
  296. package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-AQRV6JJ6.js} +2 -2
  297. package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-GX7FMJHL.js} +2 -2
  298. package/dist/cli/chunks/sync-XW5TLZ7M.js +2 -0
  299. package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-TFKVUTNF.js} +2 -2
  300. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
  301. package/dist/cli/chunks/{test-XFSGQELD.js → test-D2XDJNDX.js} +17 -17
  302. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
  303. package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-TS6I2PR7.js} +3 -3
  304. package/dist/cli/chunks/token-bootstrap-HBBLPCZ3.js +2 -0
  305. package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-3MBUX4PR.js} +2 -2
  306. package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-ZWMQO3L2.js} +2 -2
  307. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
  308. package/dist/cli/chunks/{types-JTWLBAZJ.js → types-5YEMGPSQ.js} +2 -2
  309. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
  310. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
  311. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
  312. package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-2TPBKIHI.js} +2 -2
  313. package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-XRAXXFW6.js} +2 -2
  314. package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-IYSCS3BZ.js} +2 -2
  315. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
  316. package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
  317. package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-U6XWFRVT.js} +2 -2
  318. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
  319. package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
  320. package/dist/cli/chunks/witness-chain-repair-K7YX2AO6.js +2 -0
  321. package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
  322. package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-YBNKMOP6.js} +2 -2
  323. package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-UAJUILFQ.js} +4 -4
  324. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
  325. package/dist/cli/chunks/wrappers-AVZ3GPAL.js +2 -0
  326. package/dist/cli/commands/fleet.js +23 -13
  327. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
  328. package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
  329. package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
  330. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
  331. package/dist/cli/commands/learning.js +5 -3
  332. package/dist/cli/commands/ruvector-commands.js +2 -1
  333. package/dist/cli/commands/test.js +11 -2
  334. package/dist/cli/handlers/init-handler.d.ts +12 -0
  335. package/dist/cli/handlers/init-handler.js +27 -12
  336. package/dist/cli/utils/ci-output.d.ts +11 -0
  337. package/dist/cli/utils/ci-output.js +2 -0
  338. package/dist/cli/utils/fleet-operation.d.ts +32 -0
  339. package/dist/cli/utils/fleet-operation.js +71 -0
  340. package/dist/cli/utils/fleet-result.d.ts +31 -0
  341. package/dist/cli/utils/fleet-result.js +124 -0
  342. package/dist/cli/utils/progress.d.ts +16 -2
  343. package/dist/cli/utils/progress.js +31 -14
  344. package/dist/context/sources/git-source.js +6 -2
  345. package/dist/coordination/consensus/consensus-engine.js +3 -1
  346. package/dist/coordination/handlers/code-intelligence-handlers.js +63 -7
  347. package/dist/coordination/handlers/coverage-collection.js +3 -1
  348. package/dist/coordination/handlers/coverage-handlers.js +10 -1
  349. package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
  350. package/dist/coordination/handlers/coverage-runner.js +6 -22
  351. package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
  352. package/dist/coordination/handlers/coverage-stderr.js +39 -0
  353. package/dist/coordination/handlers/coverage-target.js +6 -3
  354. package/dist/coordination/handlers/handler-utils.js +3 -1
  355. package/dist/coordination/handlers/requirements-handlers.js +18 -3
  356. package/dist/coordination/handlers/security-handlers.js +45 -21
  357. package/dist/coordination/handlers/test-execution-handlers.js +25 -7
  358. package/dist/coordination/mincut/queen-integration.d.ts +39 -1
  359. package/dist/coordination/mincut/queen-integration.js +83 -6
  360. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
  361. package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
  362. package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
  363. package/dist/coordination/protocols/learning-consolidation.js +71 -22
  364. package/dist/coordination/queen-coordinator.d.ts +1 -1
  365. package/dist/coordination/queen-coordinator.js +27 -10
  366. package/dist/coordination/queen-event-handlers.js +13 -0
  367. package/dist/coordination/queen-task-management.d.ts +18 -24
  368. package/dist/coordination/queen-task-management.js +62 -168
  369. package/dist/coordination/queen-task-queue.d.ts +41 -0
  370. package/dist/coordination/queen-task-queue.js +194 -0
  371. package/dist/coordination/queen-types.d.ts +1 -1
  372. package/dist/coordination/queen-work-stealing.d.ts +6 -1
  373. package/dist/coordination/queen-work-stealing.js +7 -4
  374. package/dist/coordination/result-saver-adapters.d.ts +15 -0
  375. package/dist/coordination/result-saver-adapters.js +57 -0
  376. package/dist/coordination/result-saver.d.ts +1 -1
  377. package/dist/coordination/result-saver.js +8 -5
  378. package/dist/coordination/task-executability.d.ts +12 -0
  379. package/dist/coordination/task-executability.js +27 -0
  380. package/dist/coordination/workflow-orchestrator.d.ts +6 -0
  381. package/dist/coordination/workflow-orchestrator.js +22 -8
  382. package/dist/coordination/yaml-pipeline-loader.js +5 -2
  383. package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
  384. package/dist/domains/code-intelligence/index-path-guard.js +20 -50
  385. package/dist/domains/code-intelligence/plugin.js +5 -1
  386. package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
  387. package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
  388. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
  389. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
  390. package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
  391. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
  392. package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
  393. package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
  394. package/dist/domains/contract-testing/services/contract-validator.js +6 -4
  395. package/dist/domains/contract-testing/services/schema-validator.js +8 -5
  396. package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
  397. package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
  398. package/dist/domains/defect-intelligence/plugin.js +11 -2
  399. package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
  400. package/dist/domains/defect-intelligence/prediction-history.js +68 -0
  401. package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
  402. package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
  403. package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
  404. package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
  405. package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
  406. package/dist/domains/learning-optimization/active-patterns.js +2 -2
  407. package/dist/domains/learning-optimization/coordinator.js +9 -5
  408. package/dist/domains/learning-optimization/interfaces.d.ts +8 -2
  409. package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
  410. package/dist/domains/learning-optimization/pattern-archive.js +56 -0
  411. package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
  412. package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
  413. package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
  414. package/dist/domains/learning-optimization/reward-source.js +8 -1
  415. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
  416. package/dist/domains/learning-optimization/services/learning-coordinator.js +47 -59
  417. package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
  418. package/dist/domains/learning-optimization/services/production-intel.js +3 -1
  419. package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
  420. package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
  421. package/dist/domains/security-compliance/plugin.js +17 -3
  422. package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
  423. package/dist/domains/security-compliance/sast-path-guard.js +17 -0
  424. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
  425. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
  426. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
  427. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
  428. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
  429. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
  430. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
  431. package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
  432. package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
  433. package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
  434. package/dist/domains/security-compliance/services/security-auditor.js +3 -2
  435. package/dist/domains/test-execution/coordinator.d.ts +6 -0
  436. package/dist/domains/test-execution/coordinator.js +28 -22
  437. package/dist/domains/test-execution/interfaces.d.ts +36 -1
  438. package/dist/domains/test-execution/plugin.js +19 -4
  439. package/dist/domains/test-execution/services/flaky-detector.js +9 -7
  440. package/dist/domains/test-execution/services/retry-handler.js +46 -7
  441. package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
  442. package/dist/domains/test-execution/services/retry-outcome.js +53 -0
  443. package/dist/domains/test-execution/services/runner-test-cases.d.ts +11 -0
  444. package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
  445. package/dist/domains/test-execution/services/test-executor.js +8 -8
  446. package/dist/domains/test-generation/coordinator.js +2 -2
  447. package/dist/domains/test-generation/plugin.js +7 -2
  448. package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
  449. package/dist/domains/test-generation/services/test-data-generator.js +3 -1
  450. package/dist/domains/test-generation/services/test-generator.js +2 -2
  451. package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
  452. package/dist/governance/evolution-pipeline-integration.js +3 -1
  453. package/dist/hooks/cross-phase-hooks.js +5 -2
  454. package/dist/init/init-wizard-steps.js +5 -1
  455. package/dist/init/phases/04-database.js +7 -0
  456. package/dist/init/phases/10-workers.js +50 -6
  457. package/dist/init/phases/12-verification.js +14 -4
  458. package/dist/init/settings-merge.js +7 -4
  459. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +7 -0
  460. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
  461. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
  462. package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
  463. package/dist/integrations/browser/agent-browser/client.js +37 -52
  464. package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
  465. package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
  466. package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
  467. package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
  468. package/dist/integrations/browser/web-content-fetcher.js +9 -3
  469. package/dist/integrations/ruvector/filter-adapter.js +2 -1
  470. package/dist/integrations/vibium/client.js +2 -2
  471. package/dist/integrations/vibium/runtime.d.ts +1 -1
  472. package/dist/integrations/vibium/runtime.js +14 -11
  473. package/dist/kernel/unified-memory-schemas.d.ts +3 -2
  474. package/dist/kernel/unified-memory-schemas.js +3 -2
  475. package/dist/kernel/unified-memory.js +25 -6
  476. package/dist/learning/dream/dream-commit.d.ts +65 -0
  477. package/dist/learning/dream/dream-commit.js +104 -0
  478. package/dist/learning/dream/dream-engine.d.ts +81 -31
  479. package/dist/learning/dream/dream-engine.js +225 -168
  480. package/dist/learning/dream/dream-insights-pruner.d.ts +9 -3
  481. package/dist/learning/dream/dream-insights-pruner.js +16 -30
  482. package/dist/learning/dream/index.d.ts +3 -2
  483. package/dist/learning/dream/index.js +3 -1
  484. package/dist/learning/dream/insight-generator.js +5 -4
  485. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
  486. package/dist/learning/dream/rvcow-branch-manager.js +8 -1
  487. package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
  488. package/dist/learning/dream/speculative-dreamer.js +64 -111
  489. package/dist/learning/dream/spreading-activation.d.ts +2 -1
  490. package/dist/learning/dream/spreading-activation.js +15 -6
  491. package/dist/learning/experience-capture.d.ts +9 -0
  492. package/dist/learning/experience-capture.js +18 -4
  493. package/dist/learning/memory-auditor.js +3 -1
  494. package/dist/learning/qe-patterns.js +2 -1
  495. package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
  496. package/dist/learning/qe-reasoning-bank.js +22 -11
  497. package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
  498. package/dist/learning/real-qe-reasoning-bank.js +70 -38
  499. package/dist/learning/sqlite-persistence.d.ts +6 -0
  500. package/dist/learning/sqlite-persistence.js +16 -2
  501. package/dist/learning/usage-outcome.d.ts +68 -0
  502. package/dist/learning/usage-outcome.js +84 -0
  503. package/dist/mcp/background-workers.d.ts +13 -1
  504. package/dist/mcp/background-workers.js +17 -3
  505. package/dist/mcp/bundle.js +612 -580
  506. package/dist/mcp/handlers/core-handlers.js +11 -0
  507. package/dist/mcp/handlers/domain-handler-configs.d.ts +7 -0
  508. package/dist/mcp/handlers/domain-handler-configs.js +19 -5
  509. package/dist/mcp/handlers/handler-factory.d.ts +2 -1
  510. package/dist/mcp/handlers/handler-factory.js +36 -15
  511. package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
  512. package/dist/mcp/handlers/orchestrate-routes.js +88 -0
  513. package/dist/mcp/handlers/task-handlers.d.ts +16 -0
  514. package/dist/mcp/handlers/task-handlers.js +77 -24
  515. package/dist/mcp/handlers/validation-pipeline-handler.js +14 -10
  516. package/dist/mcp/protocol-server.js +10 -8
  517. package/dist/mcp/qe-tool-bridge.js +3 -0
  518. package/dist/mcp/security/schema-validator.js +3 -2
  519. package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
  520. package/dist/mcp/services/reasoning-bank-service.js +4 -0
  521. package/dist/mcp/tool-annotations.js +4 -1
  522. package/dist/mcp/tools/code-intelligence/c4.js +11 -1
  523. package/dist/mcp/tools/coherence/check.js +1 -0
  524. package/dist/mcp/tools/coherence/consensus.js +4 -2
  525. package/dist/mcp/tools/coverage-analysis/index.js +31 -2
  526. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
  527. package/dist/mcp/tools/learning-optimization/dream.js +38 -34
  528. package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
  529. package/dist/mcp/tools/learning-optimization/optimize.js +59 -12
  530. package/dist/mcp/tools/mincut/index.js +3 -0
  531. package/dist/mcp/tools/quality-assessment/gate.js +19 -1
  532. package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
  533. package/dist/mcp/tools/requirements-validation/quality-criteria.js +17 -3
  534. package/dist/mcp/tools/security-compliance/scan.js +4 -2
  535. package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
  536. package/dist/mcp/tools/test-execution/execute.js +3 -2
  537. package/dist/memory/crdt/crdt-store.js +5 -0
  538. package/dist/memory/crdt/lww-register.js +12 -2
  539. package/dist/migration/agent-compat.js +7 -5
  540. package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
  541. package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
  542. package/dist/optimization/early-exit-token-optimizer.js +3 -1
  543. package/dist/planning/goap-planner.js +5 -0
  544. package/dist/planning/plan-executor.js +5 -0
  545. package/dist/shared/git/git-analyzer.d.ts +49 -0
  546. package/dist/shared/git/git-analyzer.js +159 -319
  547. package/dist/shared/git/git-process.d.ts +22 -0
  548. package/dist/shared/git/git-process.js +37 -0
  549. package/dist/shared/git/index.d.ts +1 -0
  550. package/dist/shared/git/index.js +1 -0
  551. package/dist/shared/io/confined-read.d.ts +74 -0
  552. package/dist/shared/io/confined-read.js +256 -0
  553. package/dist/shared/io/file-reader.d.ts +6 -6
  554. package/dist/shared/io/file-reader.js +16 -42
  555. package/dist/shared/io/payload-path-guard.d.ts +75 -0
  556. package/dist/shared/io/payload-path-guard.js +190 -0
  557. package/dist/shared/llm/providers/claude-code.js +4 -1
  558. package/dist/shared/llm/router/agent-router-config.js +2 -1
  559. package/dist/shared/llm/translation/tool-translator.js +2 -1
  560. package/dist/shared/native-module-errors.d.ts +51 -0
  561. package/dist/shared/native-module-errors.js +129 -0
  562. package/dist/shared/safe-db.js +14 -4
  563. package/dist/shared/security/osv-client.js +4 -1
  564. package/dist/shared/test-runner-args.d.ts +5 -0
  565. package/dist/shared/test-runner-args.js +6 -1
  566. package/dist/shared/test-runner-process.d.ts +6 -0
  567. package/dist/shared/test-runner-process.js +14 -0
  568. package/dist/shared/test-runner-verdict.d.ts +9 -1
  569. package/dist/shared/test-runner-verdict.js +15 -4
  570. package/dist/shared/types/test-frameworks.js +2 -2
  571. package/dist/shared/utils/namespaced-search.d.ts +14 -0
  572. package/dist/shared/utils/namespaced-search.js +19 -1
  573. package/dist/shared/utils/safe-expression-evaluator.js +4 -3
  574. package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
  575. package/dist/sync/readers/json-reader.js +2 -1
  576. package/dist/validation/anchor-set.d.ts +6 -0
  577. package/dist/validation/anchor-set.js +9 -1
  578. package/dist/validation/gate-reexecute.js +7 -4
  579. package/dist/validation/quality-gate-runner.d.ts +7 -1
  580. package/dist/validation/quality-gate-runner.js +3 -3
  581. package/dist/workers/daemon.js +13 -1
  582. package/dist/workers/quality-daemon/git-watcher.js +9 -9
  583. package/dist/workers/workers/defect-predictor.d.ts +8 -3
  584. package/dist/workers/workers/defect-predictor.js +48 -49
  585. package/dist/workers/workers/learning-consolidation.d.ts +2 -0
  586. package/dist/workers/workers/learning-consolidation.js +12 -1
  587. package/dist/workflows/browser/workflow-loader.js +8 -5
  588. package/package.json +1 -1
  589. package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
  590. package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
  591. package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
  592. package/dist/cli/chunks/base-67DXSAYM.js +0 -2
  593. package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
  594. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
  595. package/dist/cli/chunks/chunk-2XITOPYV.js +0 -6
  596. package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
  597. package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
  598. package/dist/cli/chunks/chunk-6PXA2BQJ.js +0 -742
  599. package/dist/cli/chunks/chunk-6YL6JOQB.js +0 -4
  600. package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
  601. package/dist/cli/chunks/chunk-AR2E4B7K.js +0 -6
  602. package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
  603. package/dist/cli/chunks/chunk-FJ4VTLLK.js +0 -2
  604. package/dist/cli/chunks/chunk-FV3NHVC7.js +0 -59
  605. package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
  606. package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
  607. package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
  608. package/dist/cli/chunks/chunk-JEP4ULR6.js +0 -21
  609. package/dist/cli/chunks/chunk-JK2ME6IT.js +0 -2
  610. package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
  611. package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
  612. package/dist/cli/chunks/chunk-N5PDFGCQ.js +0 -180
  613. package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
  614. package/dist/cli/chunks/chunk-P2CXVNKK.js +0 -4
  615. package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
  616. package/dist/cli/chunks/chunk-VU2EL424.js +0 -14
  617. package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
  618. package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
  619. package/dist/cli/chunks/chunk-XZJ2O3VC.js +0 -2
  620. package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
  621. package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
  622. package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
  623. package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
  624. package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
  625. package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
  626. package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
  627. package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
  628. package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
  629. package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
  630. package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
  631. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
  632. package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
  633. package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
  634. package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
  635. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
  636. package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
  637. package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
  638. package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
  639. package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
  640. package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
  641. package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
  642. package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
  643. package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
  644. package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
  645. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
  646. package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
  647. package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
  648. package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
  649. package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
  650. package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
  651. package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
  652. package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
  653. package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
  654. package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
  655. package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
  656. package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
  657. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
  658. package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
  659. package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
  660. package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
  661. package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
  662. package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
  663. package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
  664. package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
  665. package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
  666. package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
  667. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
  668. package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
@@ -31,6 +31,13 @@ export function bareSearchKey(found, namespace, pattern) {
31
31
  }
32
32
  /** First request size for `searchAllKeys`. Each further request doubles it. */
33
33
  export const DEFAULT_KEY_SCAN_PAGE_SIZE = 10_000;
34
+ /**
35
+ * Most `search()` requests one scan may make (#1106). The limit doubles each
36
+ * time, so this covers more keys than any store holds (2^31 x the first page)
37
+ * while still guaranteeing the loop ends for a backend that never returns a
38
+ * short page.
39
+ */
40
+ export const MAX_KEY_SCAN_REQUESTS = 32;
34
41
  /**
35
42
  * Every key matching `pattern`, bare (usable with `get(key, retrieve)`),
36
43
  * de-duplicated and sorted.
@@ -38,11 +45,22 @@ export const DEFAULT_KEY_SCAN_PAGE_SIZE = 10_000;
38
45
  * `search()` has no offset, so this widens the request until the backend
39
46
  * returns fewer keys than were asked for. That is the only point at which the
40
47
  * result is known to be complete; no cap ever truncates it.
48
+ *
49
+ * #1106: a backend that always returns at least `limit` keys (for example
50
+ * one that pads or repeats results) never gives a short page. After
51
+ * MAX_KEY_SCAN_REQUESTS this throws instead of looping forever or returning a
52
+ * list that may be incomplete, because callers select patterns to archive
53
+ * from it. A backend that ignores `limit` and returns every key still ends:
54
+ * the limit doubles past the key count.
41
55
  */
42
56
  export async function searchAllKeys(memory, pattern, options = {}) {
43
57
  let limit = Math.max(1, Math.floor(options.pageSize ?? DEFAULT_KEY_SCAN_PAGE_SIZE));
44
58
  let found = await memory.search(pattern, limit, options.retrieve);
45
- while (found.length >= limit) {
59
+ for (let requests = 1; found.length >= limit; requests++) {
60
+ if (requests >= MAX_KEY_SCAN_REQUESTS) {
61
+ throw new Error(`searchAllKeys('${pattern}'): the backend never returned a short page after ${requests} requests ` +
62
+ `(last limit ${limit}); refusing to return a possibly incomplete key list`);
63
+ }
46
64
  limit *= 2;
47
65
  found = await memory.search(pattern, limit, options.retrieve);
48
66
  }
@@ -243,8 +243,9 @@ class Parser {
243
243
  parseIdentifier() {
244
244
  let value = this.context;
245
245
  const name = this.advance().value;
246
- // Get initial value from context
247
- if (typeof value === 'object' && value !== null && name in value) {
246
+ // Get initial value from context. #1136: own properties only, so an
247
+ // identifier such as `constructor` does not read an inherited member.
248
+ if (typeof value === 'object' && value !== null && Object.hasOwn(value, name)) {
248
249
  value = value[name];
249
250
  }
250
251
  else {
@@ -254,7 +255,7 @@ class Parser {
254
255
  while (this.current().type === 'DOT') {
255
256
  this.advance(); // consume dot
256
257
  const prop = this.expect('IDENTIFIER').value;
257
- if (value !== null && value !== undefined && typeof value === 'object') {
258
+ if (value !== null && value !== undefined && typeof value === 'object' && Object.hasOwn(value, prop)) {
258
259
  value = value[prop];
259
260
  }
260
261
  else {
@@ -59,7 +59,11 @@ export class RecoveryPlaybook {
59
59
  getRecoveryPlan(serviceName) {
60
60
  if (!this.config)
61
61
  return undefined;
62
- return this.config.services[serviceName];
62
+ // Own-property lookup only: a name like `constructor` or `toString` must
63
+ // not resolve to an Object.prototype member (#1118).
64
+ return Object.hasOwn(this.config.services, serviceName)
65
+ ? this.config.services[serviceName]
66
+ : undefined;
63
67
  }
64
68
  /**
65
69
  * List all service names defined in the playbook.
@@ -89,7 +93,9 @@ export class RecoveryPlaybook {
89
93
  const defaultTimeoutMs = defaults.timeoutMs ?? 10_000;
90
94
  const defaultMaxRetries = defaults.maxRetries ?? 3;
91
95
  const defaultBackoffMs = defaults.backoffMs ?? [2000, 5000, 10_000];
92
- const services = {};
96
+ // Null-prototype map so a service named `__proto__` is stored as an own
97
+ // key instead of silently replacing the prototype (#1118).
98
+ const services = Object.create(null);
93
99
  if (raw.services) {
94
100
  for (const [name, rawService] of Object.entries(raw.services)) {
95
101
  services[name] = this.parseService(name, rawService, defaultTimeoutMs, defaultMaxRetries, defaultBackoffMs);
@@ -137,7 +143,11 @@ export class RecoveryPlaybook {
137
143
  */
138
144
  interpolate(template) {
139
145
  return template.replace(/\$\{([^}]+)\}/g, (_match, varName) => {
140
- return this.variables[varName] ?? _match;
146
+ // Own properties only: `${constructor}` must stay unresolved rather
147
+ // than expand to Object's function source (#1118).
148
+ return Object.hasOwn(this.variables, varName)
149
+ ? (this.variables[varName] ?? _match)
150
+ : _match;
141
151
  });
142
152
  }
143
153
  }
@@ -130,7 +130,8 @@ export class JSONReader {
130
130
  const pathParts = jsonPath.replace(/^\$\./, '').split('.');
131
131
  let current = data;
132
132
  for (const part of pathParts) {
133
- if (current && typeof current === 'object' && part in current) {
133
+ // #1157: own keys only; `$.constructor` is not a path into the data.
134
+ if (current && typeof current === 'object' && Object.hasOwn(current, part)) {
134
135
  current = current[part];
135
136
  }
136
137
  else {
@@ -57,6 +57,12 @@ export declare function computeContentHash(items: AnchorItem[]): string;
57
57
  * except through this loader.
58
58
  */
59
59
  export declare function loadAnchorSet(path: string): AnchorSet;
60
+ /**
61
+ * Parse and verify an anchor set already read by the caller (#1161: the MCP
62
+ * gate reads a caller-named anchor through a confined read). `path` only
63
+ * labels error messages. Applies the same hash and non-empty checks.
64
+ */
65
+ export declare function parseAnchorSet(text: string, path: string): AnchorSet;
60
66
  /** The score of one anchor item = its oracle mutation kill rate. */
61
67
  export declare function anchorItemScore(oracleResult: {
62
68
  mutationScore: number;
@@ -43,7 +43,15 @@ export function computeContentHash(items) {
43
43
  * except through this loader.
44
44
  */
45
45
  export function loadAnchorSet(path) {
46
- const raw = JSON.parse(fs.readFileSync(path, 'utf8'));
46
+ return parseAnchorSet(fs.readFileSync(path, 'utf8'), path);
47
+ }
48
+ /**
49
+ * Parse and verify an anchor set already read by the caller (#1161: the MCP
50
+ * gate reads a caller-named anchor through a confined read). `path` only
51
+ * labels error messages. Applies the same hash and non-empty checks.
52
+ */
53
+ export function parseAnchorSet(text, path) {
54
+ const raw = JSON.parse(text);
47
55
  const recomputed = computeContentHash(raw.items);
48
56
  if (recomputed !== raw.contentHash) {
49
57
  throw new Error(`Anchor set hash drift at ${path}: recorded ${raw.contentHash}, `
@@ -26,6 +26,7 @@ import { createHash } from 'node:crypto';
26
26
  import { meetsNoRegression } from './anchor-set.js';
27
27
  import { tierAllowsPromotion } from '../learning/provenance-tier.js';
28
28
  import { bootstrapDeltaCILow, pairedDeltas } from './paired-bootstrap.js';
29
+ import { getOwn } from '../shared/utils/safe-record.js';
29
30
  /** Tag domain-separating the rule fingerprint hash. */
30
31
  const RULE_TAG = 'aqe:accept-rule:v1+sig';
31
32
  /**
@@ -137,14 +138,16 @@ export function sealedHash(sealed) {
137
138
  * unknown version so a missing rule can never silently pass verification.
138
139
  */
139
140
  export function gateFingerprint(ruleVersion) {
140
- if (!(ruleVersion in ACCEPTANCE_RULES)) {
141
+ // #1136: own entries only; `constructor` is not a registered rule.
142
+ if (!Object.hasOwn(ACCEPTANCE_RULES, ruleVersion)) {
141
143
  throw new Error(`Unknown acceptance rule version '${ruleVersion}' — cannot fingerprint an unregistered rule.`);
142
144
  }
143
145
  return createHash('sha256').update(RULE_TAG).update('\0').update(ruleVersion).digest('hex');
144
146
  }
145
147
  /** Re-execute a frozen rule on sealed inputs. Throws for an unknown version. */
146
148
  export function reExecuteGate(ruleVersion, sealed) {
147
- const rule = ACCEPTANCE_RULES[ruleVersion];
149
+ // #1136: an inherited member (`constructor` is Object) is not a rule.
150
+ const rule = getOwn(ACCEPTANCE_RULES, ruleVersion);
148
151
  if (!rule) {
149
152
  throw new Error(`Unknown acceptance rule version '${ruleVersion}' — refusing to re-execute an unregistered rule.`);
150
153
  }
@@ -260,14 +263,14 @@ export function pathSealedHash(sealed) {
260
263
  }
261
264
  /** Fingerprint of a path-rule VERSION. Throws for an unregistered rule. */
262
265
  export function pathGateFingerprint(ruleVersion) {
263
- if (!(ruleVersion in PROMOTION_PATH_RULES)) {
266
+ if (!Object.hasOwn(PROMOTION_PATH_RULES, ruleVersion)) {
264
267
  throw new Error(`Unknown promotion-path rule version '${ruleVersion}' — cannot fingerprint an unregistered rule.`);
265
268
  }
266
269
  return createHash('sha256').update(PATH_RULE_TAG).update('\0').update(ruleVersion).digest('hex');
267
270
  }
268
271
  /** Re-execute a frozen path rule on sealed inputs. Throws for an unknown version. */
269
272
  export function reExecutePathGate(ruleVersion, sealed) {
270
- const rule = PROMOTION_PATH_RULES[ruleVersion];
273
+ const rule = getOwn(PROMOTION_PATH_RULES, ruleVersion);
271
274
  if (!rule) {
272
275
  throw new Error(`Unknown promotion-path rule version '${ruleVersion}' — refusing to re-execute an unregistered rule.`);
273
276
  }
@@ -16,6 +16,7 @@
16
16
  * The oracle result and the judge are injected — this module owns no LLM and no
17
17
  * mutation runner, so it is deterministic and unit-testable with a fake judge.
18
18
  */
19
+ import { type AnchorSet } from './anchor-set.js';
19
20
  import { type Judge, type QualityVerdictResult, type RequirementChecklist } from './quality-verdict.js';
20
21
  import type { OracleResult } from './oracle-eval.js';
21
22
  import { type VerificationCoverageVerdict, type VerificationReachManifest, type VerificationReachResult } from './verification-reach.js';
@@ -35,6 +36,11 @@ export interface QualityGateRequest {
35
36
  judge: Judge;
36
37
  /** Override the frozen anchor path (absolute, or relative to project root). */
37
38
  anchorPath?: string;
39
+ /**
40
+ * The anchor set, already read and verified by the caller (#1161). When
41
+ * given, it is used instead of reading `anchorPath`, which only labels errors.
42
+ */
43
+ anchor?: AnchorSet;
38
44
  /** Revision-bound failure-mode reach evidence. Omit only for legacy migration. */
39
45
  verificationManifest?: VerificationReachManifest;
40
46
  }
@@ -66,7 +72,7 @@ export declare function runQualityGate(req: QualityGateRequest): Promise<ReachAw
66
72
  * Load the pinned checklist for `checklistId` from the frozen anchor. Exposed so
67
73
  * callers (CLI/MCP) can list valid ids or pre-validate before building a judge.
68
74
  */
69
- export declare function loadChecklist(checklistId: string, anchorPath?: string): RequirementChecklist;
75
+ export declare function loadChecklist(checklistId: string, anchorPath?: string, preloaded?: AnchorSet): RequirementChecklist;
70
76
  /** List every checklist id in the frozen anchor (for CLI/MCP discoverability). */
71
77
  export declare function listChecklistIds(anchorPath?: string): string[];
72
78
  //# sourceMappingURL=quality-gate-runner.d.ts.map
@@ -29,7 +29,7 @@ export const DEFAULT_ANCHOR_RELATIVE_PATH = 'verification/anchors/qe-anchor-v1.j
29
29
  * every judgement outcome is returned as a three-valued reach-aware result.
30
30
  */
31
31
  export async function runQualityGate(req) {
32
- const checklist = loadChecklist(req.checklistId, req.anchorPath);
32
+ const checklist = loadChecklist(req.checklistId, req.anchorPath, req.anchor);
33
33
  if (req.verificationManifest
34
34
  && req.verificationManifest.artifact.digest !== computeVerificationArtifactDigest(req.artifact)) {
35
35
  throw new Error('Verification reach manifest artifact digest does not match the judged artifact');
@@ -67,9 +67,9 @@ function combineVerdicts(quality, coverage) {
67
67
  * Load the pinned checklist for `checklistId` from the frozen anchor. Exposed so
68
68
  * callers (CLI/MCP) can list valid ids or pre-validate before building a judge.
69
69
  */
70
- export function loadChecklist(checklistId, anchorPath) {
70
+ export function loadChecklist(checklistId, anchorPath, preloaded) {
71
71
  const resolved = resolveAnchorPath(anchorPath);
72
- const anchor = loadAnchorSet(resolved); // throws on hash drift (ADR-117 §2)
72
+ const anchor = preloaded ?? loadAnchorSet(resolved); // throws on hash drift (ADR-117 §2)
73
73
  const item = anchor.items.find((it) => it.id === checklistId);
74
74
  if (!item) {
75
75
  const available = anchor.items.map((it) => it.id).join(', ');
@@ -74,7 +74,19 @@ export class QEDaemon {
74
74
  this._healthCheckTimer.unref?.();
75
75
  // Auto-start workers if configured
76
76
  if (this.config.autoStart) {
77
- await this.workerManager.startAll();
77
+ try {
78
+ await this.workerManager.startAll();
79
+ }
80
+ catch (error) {
81
+ // #1116: a failed start must not leave the daemon reporting running.
82
+ this._running = false;
83
+ this._startedAt = undefined;
84
+ if (this._healthCheckTimer)
85
+ clearInterval(this._healthCheckTimer);
86
+ this._healthCheckTimer = undefined;
87
+ await this.workerManager.stopAll().catch(() => undefined);
88
+ throw error;
89
+ }
78
90
  console.info('[Daemon] All workers started');
79
91
  }
80
92
  // Log registered workers
@@ -6,12 +6,12 @@
6
6
  * 'next' priority analysis tasks into the daemon queue.
7
7
  */
8
8
  import { watch } from 'fs';
9
- import { execFile } from 'child_process';
10
- import { promisify } from 'util';
11
9
  import { resolve, join } from 'path';
12
10
  import { existsSync, readFileSync } from 'fs';
13
11
  import { getGitRefError } from '../../shared/git/ref-validation.js';
14
- const execFileAsync = promisify(execFile);
12
+ import { runGit } from '../../shared/git/git-process.js';
13
+ /** A hung git must not stall the watcher; its process group is stopped (#1115). */
14
+ const GIT_TIMEOUT_MS = 10_000;
15
15
  const DEFAULTS = {
16
16
  repoRoot: process.cwd(),
17
17
  debounceMs: 500,
@@ -100,11 +100,11 @@ export class GitWatcher {
100
100
  this._polling = true;
101
101
  const changedBranches = [];
102
102
  try {
103
- const { stdout } = await execFileAsync('git', [
103
+ const stdout = await runGit([
104
104
  'for-each-ref',
105
105
  '--format=%(refname:short) %(objectname:short)',
106
106
  'refs/heads/',
107
- ], { cwd: this.options.repoRoot });
107
+ ], { cwd: this.options.repoRoot, timeout: GIT_TIMEOUT_MS });
108
108
  for (const line of stdout.trim().split('\n')) {
109
109
  if (!line)
110
110
  continue;
@@ -162,13 +162,13 @@ export class GitWatcher {
162
162
  return;
163
163
  let changedFiles = [];
164
164
  try {
165
- const { stdout } = await execFileAsync('git', [
165
+ const stdout = await runGit([
166
166
  'diff-tree',
167
167
  '--no-commit-id',
168
168
  '--name-only',
169
169
  '-r',
170
170
  commitHash,
171
- ], { cwd: this.options.repoRoot });
171
+ ], { cwd: this.options.repoRoot, timeout: GIT_TIMEOUT_MS });
172
172
  changedFiles = stdout
173
173
  .trim()
174
174
  .split('\n')
@@ -196,11 +196,11 @@ export class GitWatcher {
196
196
  }
197
197
  async snapshotHeads() {
198
198
  try {
199
- const { stdout } = await execFileAsync('git', [
199
+ const stdout = await runGit([
200
200
  'for-each-ref',
201
201
  '--format=%(refname:short) %(objectname:short)',
202
202
  'refs/heads/',
203
- ], { cwd: this.options.repoRoot });
203
+ ], { cwd: this.options.repoRoot, timeout: GIT_TIMEOUT_MS });
204
204
  for (const line of stdout.trim().split('\n')) {
205
205
  if (!line)
206
206
  continue;
@@ -8,10 +8,14 @@
8
8
  *
9
9
  * #1043: every prediction comes from a run of the defect-intelligence
10
10
  * predictor (`defect-intelligence:predictor:prediction:<id>` in the
11
- * `defect-intelligence` namespace, written by DefectPredictorService), and
11
+ * `defect-intelligence` namespace, written by DefectPredictorService or the
12
+ * public MCP handler), and
12
13
  * only files that exist in the project are kept. Code hotspots have no
13
14
  * measured source and are reported unmeasured. Nothing predicted → nothing
14
- * stored, an "unmeasured" info finding. A `defect:predictions` record without
15
+ * stored, an "unmeasured" info finding. A recorded static scan is labelled
16
+ * `estimated: true` with its prediction method: `measured` means an actual
17
+ * analysis ran, not that its risk estimate is a calibrated probability.
18
+ * A `defect:predictions` record without
15
19
  * the measured stamp (the invented one written by <= 3.15.6) is ignored and
16
20
  * replaced by the next measured run.
17
21
  */
@@ -30,7 +34,8 @@ export declare class DefectPredictorWorker extends BaseWorker {
30
34
  * #1043: the most recent prediction run the defect-intelligence predictor
31
35
  * recorded, restricted to regular files whose real path is inside the
32
36
  * project root. `measured` is `null` when there is no such prediction;
33
- * `unusable` describes a newest prediction none of whose files qualify.
37
+ * `unusable` describes an ambiguous newest timestamp or a newest prediction
38
+ * none of whose files qualify.
34
39
  */
35
40
  private readLatestPrediction;
36
41
  private analyzeHighRiskPredictions;
@@ -8,16 +8,21 @@
8
8
  *
9
9
  * #1043: every prediction comes from a run of the defect-intelligence
10
10
  * predictor (`defect-intelligence:predictor:prediction:<id>` in the
11
- * `defect-intelligence` namespace, written by DefectPredictorService), and
11
+ * `defect-intelligence` namespace, written by DefectPredictorService or the
12
+ * public MCP handler), and
12
13
  * only files that exist in the project are kept. Code hotspots have no
13
14
  * measured source and are reported unmeasured. Nothing predicted → nothing
14
- * stored, an "unmeasured" info finding. A `defect:predictions` record without
15
+ * stored, an "unmeasured" info finding. A recorded static scan is labelled
16
+ * `estimated: true` with its prediction method: `measured` means an actual
17
+ * analysis ran, not that its risk estimate is a calibrated probability.
18
+ * A `defect:predictions` record without
15
19
  * the measured stamp (the invented one written by <= 3.15.6) is ignored and
16
20
  * replaced by the next measured run.
17
21
  */
18
22
  import * as fs from 'fs';
19
23
  import * as path from 'path';
20
24
  import { bareSearchKey } from '../namespaced-keys.js';
25
+ import { parsePredictionRecord } from '../../domains/defect-intelligence/prediction-history.js';
21
26
  import { BaseWorker } from '../base-worker.js';
22
27
  import { findProjectRoot } from '../../kernel/project-root.js';
23
28
  const CONFIG = {
@@ -36,10 +41,6 @@ const DEFECT_NAMESPACE = 'defect-intelligence';
36
41
  const PREDICTION_KEY_PATTERN = 'defect-intelligence:predictor:prediction:*';
37
42
  const PREDICTIONS_KEY = 'defect:predictions';
38
43
  const SCHEMA_VERSION = 1;
39
- /** The predictor keeps its records for 7 days; nothing older is current. */
40
- const MAX_PREDICTION_AGE_MS = 7 * 24 * 60 * 60 * 1000;
41
- const MAX_PREDICTION_RECORDS = 1000;
42
- const RISK_LEVELS = ['critical', 'high', 'medium', 'low', 'info'];
43
44
  /**
44
45
  * Where a predicted path lies, resolved against the project root with
45
46
  * symlinks followed: only a regular file whose real path is inside the
@@ -75,39 +76,6 @@ function realProjectRoot() {
75
76
  return path.resolve(root);
76
77
  }
77
78
  }
78
- const isRecord = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
79
- function parseFilePrediction(raw) {
80
- if (!isRecord(raw))
81
- return null;
82
- const { file, probability, riskLevel } = raw;
83
- if (typeof file !== 'string' || file.length === 0)
84
- return null;
85
- if (typeof probability !== 'number' || !Number.isFinite(probability) || probability < 0 || probability > 1)
86
- return null;
87
- if (!RISK_LEVELS.includes(riskLevel))
88
- return null;
89
- const factors = Array.isArray(raw.factors)
90
- ? raw.factors.filter((f) => isRecord(f) && typeof f.name === 'string' && typeof f.contribution === 'number' && Number.isFinite(f.contribution))
91
- : [];
92
- const recommendations = Array.isArray(raw.recommendations)
93
- ? raw.recommendations.filter((r) => typeof r === 'string')
94
- : [];
95
- return { file, probability, riskLevel: riskLevel, factors, recommendations };
96
- }
97
- /** A recorded prediction run, or `null` when the record is not a usable one. */
98
- function parsePredictionRecord(raw, now) {
99
- if (!isRecord(raw) || typeof raw.id !== 'string' || typeof raw.timestamp !== 'string')
100
- return null;
101
- const t = Date.parse(raw.timestamp);
102
- if (!Number.isFinite(t) || t > now + 60_000 || now - t > MAX_PREDICTION_AGE_MS)
103
- return null;
104
- if (!Array.isArray(raw.predictions) || raw.predictions.length === 0)
105
- return null;
106
- const predictions = raw.predictions.map(parseFilePrediction);
107
- if (predictions.some((p) => p === null))
108
- return null;
109
- return { id: raw.id, timestamp: raw.timestamp, predictions: predictions };
110
- }
111
79
  export class DefectPredictorWorker extends BaseWorker {
112
80
  constructor() {
113
81
  super(CONFIG);
@@ -124,10 +92,12 @@ export class DefectPredictorWorker extends BaseWorker {
124
92
  severity: 'info',
125
93
  domain: 'defect-intelligence',
126
94
  title: 'Defect Prediction Unmeasured',
127
- description: (unusable
128
- ? `The latest defect prediction (${unusable.id}) names no file inside this project ` +
129
- `(${unusable.outside} outside the project root, ${unusable.missing} missing), so no risk is reported. `
130
- : 'No defect prediction for files in this project has been recorded in the last 7 days, so no risk is reported. ') +
95
+ description: (unusable?.ambiguous
96
+ ? 'Multiple defect predictions have the same timestamp, so no unique latest analysis can be identified. No risk is reported. '
97
+ : unusable
98
+ ? `The latest defect prediction (${unusable.id}) names no file inside this project ` +
99
+ `(${unusable.outside} outside the project root, ${unusable.missing} missing), so no risk is reported. `
100
+ : 'No defect prediction for files in this project has been recorded in the last 7 days, so no risk is reported. ') +
131
101
  'Run defect_predict on the files to assess.',
132
102
  });
133
103
  if (unusable)
@@ -147,7 +117,14 @@ export class DefectPredictorWorker extends BaseWorker {
147
117
  }, findings, recommendations);
148
118
  }
149
119
  const { predictions } = latest;
150
- this.analyzeHighRiskPredictions(predictions, findings, recommendations);
120
+ if (latest.filesSkipped) {
121
+ findings.push({
122
+ type: 'defect-prediction-partial', severity: 'info', domain: 'defect-intelligence',
123
+ title: 'Partial Defect Prediction',
124
+ description: `${latest.filesSkipped} source files could not be read; risk estimates cover only ${predictions.length} successfully analyzed files.`,
125
+ });
126
+ }
127
+ this.analyzeHighRiskPredictions(predictions, findings, recommendations, latest.estimated === true);
151
128
  await context.memory.set(PREDICTIONS_KEY, latest);
152
129
  await context.memory.set('defect:lastAnalysis', latest.evaluatedAt);
153
130
  const healthScore = this.calculateHealthScore(predictions);
@@ -165,6 +142,8 @@ export class DefectPredictorWorker extends BaseWorker {
165
142
  trend: 'stable',
166
143
  domainMetrics: {
167
144
  filesAnalyzed: predictions.length,
145
+ filesSkipped: latest.filesSkipped ?? 0,
146
+ scanStatus: latest.filesSkipped ? 'partial' : 'complete',
168
147
  highRiskFiles: highRisk,
169
148
  missingFilesSkipped: latest.missingFilesSkipped,
170
149
  outsideProjectSkipped: latest.outsideProjectSkipped,
@@ -192,21 +171,37 @@ export class DefectPredictorWorker extends BaseWorker {
192
171
  * #1043: the most recent prediction run the defect-intelligence predictor
193
172
  * recorded, restricted to regular files whose real path is inside the
194
173
  * project root. `measured` is `null` when there is no such prediction;
195
- * `unusable` describes a newest prediction none of whose files qualify.
174
+ * `unusable` describes an ambiguous newest timestamp or a newest prediction
175
+ * none of whose files qualify.
196
176
  */
197
177
  async readLatestPrediction(context) {
198
- const keys = await context.memory.search(PREDICTION_KEY_PATTERN, MAX_PREDICTION_RECORDS, { namespace: DEFECT_NAMESPACE });
178
+ const keys = await context.memory.search(PREDICTION_KEY_PATTERN, Number.MAX_SAFE_INTEGER, { namespace: DEFECT_NAMESPACE });
199
179
  const now = Date.now();
200
180
  let latest = null;
181
+ let ambiguous = false;
201
182
  for (const found of keys) {
202
183
  // #1049: the in-memory backend returns `<namespace>:<key>` from a namespaced search.
203
184
  const key = bareSearchKey(found, DEFECT_NAMESPACE, PREDICTION_KEY_PATTERN);
204
185
  const parsed = parsePredictionRecord(await context.memory.get(key, { namespace: DEFECT_NAMESPACE }), now);
205
- if (parsed && (!latest || Date.parse(parsed.timestamp) > Date.parse(latest.timestamp)))
186
+ if (!parsed)
187
+ continue;
188
+ if (!latest || Date.parse(parsed.timestamp) > Date.parse(latest.timestamp)) {
206
189
  latest = parsed;
190
+ ambiguous = false;
191
+ }
192
+ else if (Date.parse(parsed.timestamp) === Date.parse(latest.timestamp) && parsed.id !== latest.id) {
193
+ ambiguous = true;
194
+ }
207
195
  }
208
196
  if (!latest)
209
197
  return { measured: null, unusable: null };
198
+ // Timestamp precision cannot establish ordering between concurrent runs.
199
+ // Never let backend key ordering decide whether the current scan is clean.
200
+ if (ambiguous)
201
+ return {
202
+ measured: null,
203
+ unusable: { id: `ambiguous:${latest.timestamp}`, outside: 0, missing: 0, ambiguous: true },
204
+ };
210
205
  const realRoot = realProjectRoot();
211
206
  const disposition = latest.predictions.map((p) => classifyPredictedFile(p.file, realRoot));
212
207
  const existing = latest.predictions.filter((_, i) => disposition[i] === 'inside');
@@ -224,6 +219,7 @@ export class DefectPredictorWorker extends BaseWorker {
224
219
  schemaVersion: SCHEMA_VERSION,
225
220
  source: 'defect-intelligence',
226
221
  predictionId: latest.id,
222
+ ...(latest.estimated ? { estimated: true, predictionMethod: latest.predictionMethod, filesSkipped: latest.filesSkipped } : {}),
227
223
  predictedAt: latest.timestamp,
228
224
  evaluatedAt: new Date().toISOString(),
229
225
  predictions: existing,
@@ -231,7 +227,7 @@ export class DefectPredictorWorker extends BaseWorker {
231
227
  outsideProjectSkipped: outside,
232
228
  } };
233
229
  }
234
- analyzeHighRiskPredictions(predictions, findings, recommendations) {
230
+ analyzeHighRiskPredictions(predictions, findings, recommendations, estimated = false) {
235
231
  const critical = predictions.filter(p => p.riskLevel === 'critical');
236
232
  const high = predictions.filter(p => p.riskLevel === 'high');
237
233
  for (const prediction of [...critical, ...high]) {
@@ -241,10 +237,13 @@ export class DefectPredictorWorker extends BaseWorker {
241
237
  severity: prediction.riskLevel,
242
238
  domain: 'defect-intelligence',
243
239
  title: `${prediction.riskLevel === 'critical' ? 'Critical' : 'High'} Defect Risk: ${name}`,
244
- description: `${(prediction.probability * 100).toFixed(0)}% predicted defect probability (defect-intelligence predictor)`,
240
+ description: estimated
241
+ ? `${(prediction.probability * 100).toFixed(0)}% estimated code-risk score (static-code-indicators); not a calibrated defect probability`
242
+ : `${(prediction.probability * 100).toFixed(0)}% predicted defect probability (defect-intelligence predictor)`,
245
243
  resource: prediction.file,
246
244
  context: {
247
245
  probability: prediction.probability,
246
+ ...(estimated ? { estimated: true, predictionMethod: 'static-code-indicators' } : {}),
248
247
  factors: prediction.factors,
249
248
  recommendations: prediction.recommendations,
250
249
  },
@@ -31,6 +31,8 @@ export declare class LearningConsolidationWorker extends BaseWorker {
31
31
  private readonly dreamInsightsPruneNotBefore;
32
32
  /** #1061: an invalid retention value is reported once per process. */
33
33
  private retentionWarningLogged;
34
+ /** #1116: NULL-id stale rows last reported, so the warning is not repeated every tick. */
35
+ private nullIdRowsReported;
34
36
  constructor();
35
37
  /**
36
38
  * Initialize or get the pattern lifecycle manager
@@ -61,6 +61,8 @@ export class LearningConsolidationWorker extends BaseWorker {
61
61
  dreamInsightsPruneNotBefore = Date.now() + CONFIG.intervalMs;
62
62
  /** #1061: an invalid retention value is reported once per process. */
63
63
  retentionWarningLogged = false;
64
+ /** #1116: NULL-id stale rows last reported, so the warning is not repeated every tick. */
65
+ nullIdRowsReported = 0;
64
66
  constructor() {
65
67
  super(CONFIG);
66
68
  }
@@ -252,7 +254,16 @@ export class LearningConsolidationWorker extends BaseWorker {
252
254
  return 0;
253
255
  const db = getUnifiedMemory().getDatabase();
254
256
  // #1066: rows are copied to dream_insights_archive and verified first.
255
- const { pruned, archived } = pruneStaleDreamInsights(db, { retentionDays });
257
+ const { pruned, archived, skippedNullId } = pruneStaleDreamInsights(db, { retentionDays });
258
+ // #1116: rows with a NULL id cannot be archived and are left in place.
259
+ // Warn when their number changes, not on every tick.
260
+ if (skippedNullId !== this.nullIdRowsReported) {
261
+ this.nullIdRowsReported = skippedNullId;
262
+ if (skippedNullId > 0) {
263
+ process.stderr.write(`[AQE] WARN dream_insights retention: ${skippedNullId} stale insight(s) have no id and were ` +
264
+ 'left in place (they cannot be archived); the other stale insights were archived as usual\n');
265
+ }
266
+ }
256
267
  if (pruned > 0) {
257
268
  // Default log level, stderr only: MCP stdout carries JSON-RPC.
258
269
  process.stderr.write(`[AQE] dream_insights retention: moved ${pruned} unapplied insight(s) ` +
@@ -3,6 +3,7 @@ import { join, basename, dirname } from 'path';
3
3
  import { fileURLToPath } from 'url';
4
4
  import { parse as parseYaml } from 'yaml';
5
5
  import { safeEvaluateBoolean } from '../../shared/utils/safe-expression-evaluator.js';
6
+ import { setOwn } from '../../shared/utils/safe-record.js';
6
7
  const __filename = fileURLToPath(import.meta.url);
7
8
  const __dirname = dirname(__filename);
8
9
  /**
@@ -142,8 +143,9 @@ export class WorkflowLoader {
142
143
  async createContext(templateName, variables) {
143
144
  const workflow = await this.load(templateName);
144
145
  // Validate required variables
146
+ // #1136: a variable counts as given only when it is an own property.
145
147
  const missingVars = workflow.variables
146
- .filter(v => v.required && !(v.name in variables))
148
+ .filter(v => v.required && !Object.hasOwn(variables, v.name))
147
149
  .map(v => v.name);
148
150
  if (missingVars.length > 0) {
149
151
  throw new Error(`Missing required variables: ${missingVars.join(', ')}`);
@@ -151,11 +153,11 @@ export class WorkflowLoader {
151
153
  // Resolve variables with defaults
152
154
  const resolvedVariables = {};
153
155
  workflow.variables.forEach(varDef => {
154
- if (varDef.name in variables) {
155
- resolvedVariables[varDef.name] = variables[varDef.name];
156
+ if (Object.hasOwn(variables, varDef.name)) {
157
+ setOwn(resolvedVariables, varDef.name, variables[varDef.name]);
156
158
  }
157
159
  else if ('default' in varDef) {
158
- resolvedVariables[varDef.name] = varDef.default;
160
+ setOwn(resolvedVariables, varDef.name, varDef.default);
159
161
  }
160
162
  });
161
163
  return {
@@ -217,7 +219,8 @@ export function interpolateVariables(template, variables) {
217
219
  const keys = trimmedKey.split('.');
218
220
  let value = variables;
219
221
  for (const k of keys) {
220
- if (value && typeof value === 'object' && k in value) {
222
+ // #1136: own properties only; {{constructor}} is not a variable.
223
+ if (value && typeof value === 'object' && Object.hasOwn(value, k)) {
221
224
  value = value[k];
222
225
  }
223
226
  else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "3.15.9",
3
+ "version": "3.15.11",
4
4
  "description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.9");process.exit(0)}
2
- import{a,b,c}from"./chunk-PBZI2ZPV.js";import"./chunk-A6YIH4C4.js";import"./chunk-KIXYKUCI.js";import"./chunk-PVIA2FPD.js";import"./chunk-N3KEY4XJ.js";import"./chunk-HZ5NC6U5.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};