agentic-qe 3.13.11 → 3.14.0

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 (438) hide show
  1. package/.claude/helpers/.helpers-version +1 -1
  2. package/.claude/helpers/helpers.manifest.json +2 -2
  3. package/.claude/helpers/statusline.cjs +89 -40
  4. package/.claude/skills/qe-court/SKILL.md +4 -4
  5. package/.claude/skills/qe-court/config-schema.json +38 -0
  6. package/.claude/skills/qe-court/evals/qe-court.yaml +8 -8
  7. package/.claude/skills/skills-manifest.json +1 -1
  8. package/CHANGELOG.md +93 -0
  9. package/assets/skills/qe-court/SKILL.md +4 -4
  10. package/assets/skills/qe-court/config-schema.json +38 -0
  11. package/assets/skills/qe-court/evals/qe-court.yaml +8 -8
  12. package/assets/skills/skills-manifest.json +1 -1
  13. package/dist/cli/brain-commands.d.ts +1 -0
  14. package/dist/cli/brain-commands.js +1 -0
  15. package/dist/cli/bundle.js +5 -5
  16. package/dist/cli/chunks/adapter-3VBXL7DO.js +2 -0
  17. package/dist/cli/chunks/{agent-booster-wasm-5ARDZYNO.js → agent-booster-wasm-JZO6VUW4.js} +2 -2
  18. package/dist/cli/chunks/{agent-handler-SVKEPF7B.js → agent-handler-534KFGEJ.js} +2 -2
  19. package/dist/cli/chunks/{agent-memory-branch-QDL7OVHC.js → agent-memory-branch-B7KWLWY4.js} +2 -2
  20. package/dist/cli/chunks/aqe-learning-engine-NXRNKJNA.js +2 -0
  21. package/dist/cli/chunks/{arena-7OCKBN6O.js → arena-7CCD3S3I.js} +2 -2
  22. package/dist/cli/chunks/{arena-HQLSNQZ3.js → arena-OW5MELJX.js} +4 -4
  23. package/dist/cli/chunks/{audit-2EQJW5UE.js → audit-BHVKN4E2.js} +3 -3
  24. package/dist/cli/chunks/base-F6GMOKU2.js +2 -0
  25. package/dist/cli/chunks/{better-sqlite3-OBFNNE4T.js → better-sqlite3-P5FA6WFK.js} +2 -2
  26. package/dist/cli/chunks/brain-handler-WNW5LOV7.js +90 -0
  27. package/dist/cli/chunks/{branch-enumerator-6B4L5O3D.js → branch-enumerator-TVZ2ODKH.js} +2 -2
  28. package/dist/cli/chunks/{browser-VDMGBWNK.js → browser-TCEB2W2F.js} +2 -2
  29. package/dist/cli/chunks/browser-workflow-QRDC46LR.js +2 -0
  30. package/dist/cli/chunks/{chunk-M3MRFZKD.js → chunk-2D7UBX5S.js} +1 -1
  31. package/dist/cli/chunks/{chunk-IZF3VLNW.js → chunk-2HYVOX6N.js} +1 -1
  32. package/dist/cli/chunks/{chunk-U6G6RUFI.js → chunk-2NO4H35K.js} +1 -1
  33. package/dist/cli/chunks/{chunk-4TJJU5Y2.js → chunk-2O4DDPEA.js} +19 -19
  34. package/dist/cli/chunks/{chunk-24XW7KUX.js → chunk-3EM2MK3Z.js} +2 -2
  35. package/dist/cli/chunks/chunk-3GUO4ERR.js +24 -0
  36. package/dist/cli/chunks/{chunk-YRCNWQBO.js → chunk-3JIJBR4V.js} +2 -2
  37. package/dist/cli/chunks/{chunk-2E2QCIGR.js → chunk-3QT6S3A3.js} +3 -3
  38. package/dist/cli/chunks/{chunk-W2T36CS5.js → chunk-3RYTAYR6.js} +1 -1
  39. package/dist/cli/chunks/chunk-43GPSYAL.js +14 -0
  40. package/dist/cli/chunks/{chunk-YYAJEPRD.js → chunk-4FEJEVG7.js} +1 -1
  41. package/dist/cli/chunks/{chunk-4DTBGQWA.js → chunk-4MK2G6TK.js} +2 -2
  42. package/dist/cli/chunks/{chunk-CK7ZLMD2.js → chunk-4XTHRAUV.js} +1 -1
  43. package/dist/cli/chunks/{chunk-LM727BVL.js → chunk-4ZVGSVHV.js} +4 -4
  44. package/dist/cli/chunks/{chunk-DPZ4AU6W.js → chunk-52DFCV57.js} +2 -2
  45. package/dist/cli/chunks/{chunk-PADCR4LY.js → chunk-5LEAGKX5.js} +2 -2
  46. package/dist/cli/chunks/{chunk-P736OKQN.js → chunk-5MZF4N4Q.js} +1 -1
  47. package/dist/cli/chunks/{chunk-XZI4QXJJ.js → chunk-5VDVYTO5.js} +2 -2
  48. package/dist/cli/chunks/chunk-5XGVSQS2.js +11 -0
  49. package/dist/cli/chunks/{chunk-AAPJG3WI.js → chunk-6AOZU3UN.js} +2 -2
  50. package/dist/cli/chunks/{chunk-NC7HTDH5.js → chunk-6AYO3IR2.js} +2 -2
  51. package/dist/cli/chunks/{chunk-TJ67B7S7.js → chunk-6DPAMYLU.js} +2 -2
  52. package/dist/cli/chunks/{chunk-PZHAPI47.js → chunk-6IJMD2ZL.js} +3 -3
  53. package/dist/cli/chunks/{chunk-RGUKQXKL.js → chunk-6IZQSLYZ.js} +2 -2
  54. package/dist/cli/chunks/{chunk-2E3PRDEX.js → chunk-6W42XWLL.js} +2 -2
  55. package/dist/cli/chunks/{chunk-ATRUE6CT.js → chunk-7BOPFN3Y.js} +2 -2
  56. package/dist/cli/chunks/{chunk-LIGDJP6H.js → chunk-7OUMJCJT.js} +1 -1
  57. package/dist/cli/chunks/{chunk-2Y3PW5EJ.js → chunk-7RAB2BZY.js} +160 -26
  58. package/dist/cli/chunks/{chunk-XEUUWOSS.js → chunk-7RVAHJQZ.js} +3 -3
  59. package/dist/cli/chunks/{chunk-HHEWINDL.js → chunk-A2WZEMWT.js} +1 -1
  60. package/dist/cli/chunks/{chunk-36ONUM43.js → chunk-A7SKM6JL.js} +1 -1
  61. package/dist/cli/chunks/chunk-AFGT26NR.js +2 -0
  62. package/dist/cli/chunks/{chunk-23E37MDA.js → chunk-AR6SATU3.js} +2 -2
  63. package/dist/cli/chunks/{chunk-IYMV4CU5.js → chunk-AVLA5PBJ.js} +2 -2
  64. package/dist/cli/chunks/{chunk-OLPJGYO5.js → chunk-B3H4K7CY.js} +2 -2
  65. package/dist/cli/chunks/{chunk-JWT675RM.js → chunk-BQCTO7UB.js} +2 -2
  66. package/dist/cli/chunks/{chunk-JKP2BUF5.js → chunk-BZ4QVFP2.js} +2 -2
  67. package/dist/cli/chunks/{chunk-WINYWMQP.js → chunk-CIUOC5F3.js} +1 -1
  68. package/dist/cli/chunks/{chunk-SJJFU7KK.js → chunk-CIZ6LSNV.js} +2 -2
  69. package/dist/cli/chunks/{chunk-2D7SBOZ4.js → chunk-DDPJUAXQ.js} +2 -2
  70. package/dist/cli/chunks/{chunk-H7QWOJF2.js → chunk-DJITEQYS.js} +2 -2
  71. package/dist/cli/chunks/{chunk-DMHQ4ZUZ.js → chunk-DOWCOZDO.js} +2 -2
  72. package/dist/cli/chunks/{chunk-PBJ5I2NS.js → chunk-E4NU4BJA.js} +2 -2
  73. package/dist/cli/chunks/{chunk-E54QUKAD.js → chunk-E722WNWC.js} +2 -2
  74. package/dist/cli/chunks/chunk-ECTPFCON.js +2 -0
  75. package/dist/cli/chunks/{chunk-MUAW4AJ6.js → chunk-EJ6IP7DE.js} +5 -5
  76. package/dist/cli/chunks/{chunk-NHL37QAZ.js → chunk-ENGKLFLY.js} +2 -2
  77. package/dist/cli/chunks/{chunk-VU3ARH4S.js → chunk-FF43SRP6.js} +1 -1
  78. package/dist/cli/chunks/{chunk-PJNIDDER.js → chunk-FOHYBR3O.js} +1 -1
  79. package/dist/cli/chunks/{chunk-LREIHR2A.js → chunk-FRL3X2QA.js} +2 -2
  80. package/dist/cli/chunks/{chunk-WYQM7GXW.js → chunk-GKNDP5VK.js} +2 -2
  81. package/dist/cli/chunks/{chunk-JK6ENS3J.js → chunk-GVEJP5T7.js} +2 -2
  82. package/dist/cli/chunks/{chunk-H3BHOIT6.js → chunk-H3YDDKBW.js} +3 -3
  83. package/dist/cli/chunks/{chunk-3SPYI7TS.js → chunk-H6NFDOMK.js} +1 -1
  84. package/dist/cli/chunks/{chunk-AZVV7POX.js → chunk-H76TV4UU.js} +3 -3
  85. package/dist/cli/chunks/{chunk-2HT5HRAA.js → chunk-HJIAVR6P.js} +2 -2
  86. package/dist/cli/chunks/{chunk-UZ7OWJ75.js → chunk-HLNQDRHA.js} +1 -1
  87. package/dist/cli/chunks/{chunk-IGW5L7YM.js → chunk-HNKPLVYS.js} +1 -1
  88. package/dist/cli/chunks/{chunk-Y2S6SS7M.js → chunk-HQ7243G3.js} +2 -2
  89. package/dist/cli/chunks/{chunk-TZA45FI7.js → chunk-HQHLHSJO.js} +2 -2
  90. package/dist/cli/chunks/{chunk-YEPJS4AM.js → chunk-I3VHXA2W.js} +2 -2
  91. package/dist/cli/chunks/{chunk-W2NQDAJZ.js → chunk-IE5LC7MB.js} +2 -2
  92. package/dist/cli/chunks/{chunk-TU4BYSXR.js → chunk-IL4AEB3J.js} +27 -25
  93. package/dist/cli/chunks/{chunk-JTQSXU6V.js → chunk-IL6QRXRP.js} +6 -6
  94. package/dist/cli/chunks/{chunk-UX5SM2PW.js → chunk-IQ3JFHZN.js} +1 -1
  95. package/dist/cli/chunks/{chunk-RAV2NJNX.js → chunk-IQLRA4FV.js} +1 -1
  96. package/dist/cli/chunks/{chunk-S3FNAHNC.js → chunk-J3XSHJGK.js} +2 -2
  97. package/dist/cli/chunks/{chunk-AHG2O5HT.js → chunk-JAK5UUWH.js} +2 -2
  98. package/dist/cli/chunks/{chunk-XDK2TPI5.js → chunk-JGROLJ33.js} +1 -1
  99. package/dist/cli/chunks/{chunk-MWTFFGU3.js → chunk-JMKMDSXG.js} +2 -2
  100. package/dist/cli/chunks/{chunk-BVKFBJX6.js → chunk-JRKEBESE.js} +2 -2
  101. package/dist/cli/chunks/{chunk-76NSSNB3.js → chunk-JTWJR2KY.js} +2 -2
  102. package/dist/cli/chunks/{chunk-QYHRDBKI.js → chunk-JY4VZ6BN.js} +2 -2
  103. package/dist/cli/chunks/{chunk-DLL3AJH7.js → chunk-K6CGQR5R.js} +1 -1
  104. package/dist/cli/chunks/{chunk-7HTYM6XY.js → chunk-KDIZQHG5.js} +2 -2
  105. package/dist/cli/chunks/{chunk-B646CE3C.js → chunk-KTSCZ7AW.js} +2 -2
  106. package/dist/cli/chunks/{chunk-LLP3UW62.js → chunk-L4C42WYI.js} +2 -2
  107. package/dist/cli/chunks/{chunk-H3AKF2HS.js → chunk-LCSVROU7.js} +10 -10
  108. package/dist/cli/chunks/{chunk-HZR4G6I3.js → chunk-LKR7T3OZ.js} +1 -1
  109. package/dist/cli/chunks/{chunk-Z5ARI4XT.js → chunk-LZHTCUCO.js} +2 -2
  110. package/dist/cli/chunks/{chunk-YDEYB6Z2.js → chunk-M3HUZD2I.js} +1 -1
  111. package/dist/cli/chunks/{chunk-GWTGBQ6X.js → chunk-MO7EITJK.js} +2 -2
  112. package/dist/cli/chunks/{chunk-5364DBZG.js → chunk-N2YAUDAV.js} +2 -2
  113. package/dist/cli/chunks/{chunk-XVFSZLRS.js → chunk-NDPQ2WPU.js} +1 -1
  114. package/dist/cli/chunks/{chunk-CTS545BF.js → chunk-NKWO2X3T.js} +1 -1
  115. package/dist/cli/chunks/{chunk-GPJDZFFV.js → chunk-NOPVFBQM.js} +2 -2
  116. package/dist/cli/chunks/{chunk-VNVGCJCS.js → chunk-NYARYONH.js} +1 -1
  117. package/dist/cli/chunks/{chunk-WRZ5WZG3.js → chunk-O2MZZL54.js} +2 -2
  118. package/dist/cli/chunks/{chunk-EKFKQGIT.js → chunk-OIYUSWHX.js} +1 -1
  119. package/dist/cli/chunks/{chunk-ZNGFSR5M.js → chunk-OONCRNFA.js} +2 -2
  120. package/dist/cli/chunks/{chunk-LUAXQB57.js → chunk-PEW6FZ47.js} +1 -1
  121. package/dist/cli/chunks/{chunk-W7BB4XLP.js → chunk-Q73RRTLE.js} +2 -2
  122. package/dist/cli/chunks/{chunk-JKPMV5VB.js → chunk-QKQZ4IJF.js} +5 -5
  123. package/dist/cli/chunks/{chunk-EHZQIXH6.js → chunk-QMMDN4WX.js} +3 -3
  124. package/dist/cli/chunks/chunk-QQCENKCX.js +2 -0
  125. package/dist/cli/chunks/{chunk-7YL7P5XG.js → chunk-QSPRQPEL.js} +2 -2
  126. package/dist/cli/chunks/{chunk-DXQMVATY.js → chunk-QZPFUFZG.js} +2 -2
  127. package/dist/cli/chunks/chunk-R2B6EE45.js +2 -0
  128. package/dist/cli/chunks/{chunk-VLW63UA2.js → chunk-R6WJF4D5.js} +2 -2
  129. package/dist/cli/chunks/{chunk-EWH7PFV6.js → chunk-RGVD6ZUX.js} +1 -1
  130. package/dist/cli/chunks/{chunk-UGFHEVG4.js → chunk-RKUYVVGJ.js} +2 -2
  131. package/dist/cli/chunks/{chunk-V7QZMOG3.js → chunk-S5YVLPXU.js} +2 -2
  132. package/dist/cli/chunks/{chunk-UDFTDQ6C.js → chunk-SROZXIMT.js} +37 -37
  133. package/dist/cli/chunks/{chunk-AFXMTSO3.js → chunk-SSV6KSFT.js} +1 -1
  134. package/dist/cli/chunks/{chunk-HGPMS6JL.js → chunk-SUSMHSXT.js} +2 -2
  135. package/dist/cli/chunks/{chunk-BL5BHBXR.js → chunk-T3BZAFLP.js} +1 -1
  136. package/dist/cli/chunks/{chunk-K652SCBA.js → chunk-TGOGCA74.js} +2 -2
  137. package/dist/cli/chunks/{chunk-VHNAN7E2.js → chunk-TKYEP7OR.js} +1 -1
  138. package/dist/cli/chunks/{chunk-OJUI65TR.js → chunk-TQJE7DNL.js} +2 -2
  139. package/dist/cli/chunks/{chunk-MS5CAEPA.js → chunk-TRDEULS7.js} +2 -2
  140. package/dist/cli/chunks/{chunk-YRV45WDT.js → chunk-U4GZWPKM.js} +2 -2
  141. package/dist/cli/chunks/{chunk-2BDTZYQN.js → chunk-UI6WSPEK.js} +3 -3
  142. package/dist/cli/chunks/{chunk-TMY2Y7SC.js → chunk-UUJ5VQJM.js} +1 -1
  143. package/dist/cli/chunks/{chunk-4CTKRLRX.js → chunk-VESOYP6A.js} +2 -2
  144. package/dist/cli/chunks/{chunk-UPMQHCC2.js → chunk-VOSISOFD.js} +1 -1
  145. package/dist/cli/chunks/{chunk-IZOWGVTU.js → chunk-VPVZHJSU.js} +2 -2
  146. package/dist/cli/chunks/{chunk-TBO64O56.js → chunk-VRRG66XB.js} +1 -1
  147. package/dist/cli/chunks/{chunk-WJB6YYMJ.js → chunk-VXU53F7Z.js} +2 -2
  148. package/dist/cli/chunks/{chunk-4TUGQESL.js → chunk-VYENTZ45.js} +2 -2
  149. package/dist/cli/chunks/chunk-WJXHE52V.js +65 -0
  150. package/dist/cli/chunks/{chunk-EN36AFRJ.js → chunk-WKNWRDA5.js} +1 -1
  151. package/dist/cli/chunks/{chunk-4X4GTEQY.js → chunk-WTHAVFIC.js} +1 -1
  152. package/dist/cli/chunks/{chunk-LPDT27EC.js → chunk-WWWX76QB.js} +2 -2
  153. package/dist/cli/chunks/{chunk-TCVEXQLL.js → chunk-XITTURP2.js} +2 -2
  154. package/dist/cli/chunks/{chunk-HV6LJ57R.js → chunk-XXFKN7LB.js} +1 -1
  155. package/dist/cli/chunks/{chunk-UJ2NRIAS.js → chunk-YEAC3DC6.js} +2 -2
  156. package/dist/cli/chunks/{chunk-FBASWZ7G.js → chunk-YKWMKRYB.js} +1 -1
  157. package/dist/cli/chunks/chunk-YKZV7O65.js +2 -0
  158. package/dist/cli/chunks/{chunk-PT6U3IIK.js → chunk-YW4RNZWT.js} +2 -2
  159. package/dist/cli/chunks/{chunk-H5DS7S4B.js → chunk-ZAAYOENS.js} +2 -2
  160. package/dist/cli/chunks/chunk-ZBKGX72B.js +13 -0
  161. package/dist/cli/chunks/{chunk-WVNLNXXI.js → chunk-ZBOWR4XT.js} +2 -2
  162. package/dist/cli/chunks/{chunk-FPX4JSFH.js → chunk-ZCVJCCQQ.js} +2 -2
  163. package/dist/cli/chunks/{chunk-OQWG7GOD.js → chunk-ZI3UO7QR.js} +8 -7
  164. package/dist/cli/chunks/{chunk-BPPEN7SS.js → chunk-ZNSMVQCG.js} +2 -2
  165. package/dist/cli/chunks/{chunk-EI4KYBNI.js → chunk-ZQSXG7FA.js} +2 -2
  166. package/dist/cli/chunks/{ci-M6WYL2XY.js → ci-B432UH6N.js} +2 -2
  167. package/dist/cli/chunks/{ci-output-JFC3WOHX.js → ci-output-GTHH7WYG.js} +2 -2
  168. package/dist/cli/chunks/{circuit-breaker-IMVBU6WP.js → circuit-breaker-VW75DLME.js} +2 -2
  169. package/dist/cli/chunks/{claude-flow-setup-M5T5ZUXX.js → claude-flow-setup-RE3IVT7U.js} +2 -2
  170. package/dist/cli/chunks/client-HNBZUEVV.js +2 -0
  171. package/dist/cli/chunks/{cline-installer-LSFAUHXC.js → cline-installer-NUBZZ55N.js} +2 -2
  172. package/dist/cli/chunks/{code-N3SWJ3XL.js → code-K6JCWKNW.js} +2 -2
  173. package/dist/cli/chunks/{code-index-extractor-WPGRG36B.js → code-index-extractor-I4ILB5JN.js} +2 -2
  174. package/dist/cli/chunks/{codex-installer-LKRCSDU5.js → codex-installer-AKQ5BCHU.js} +2 -2
  175. package/dist/cli/chunks/{completions-E5TBZ5AB.js → completions-V3KJVJF4.js} +2 -2
  176. package/dist/cli/chunks/{complexity-analyzer-3FOSOELK.js → complexity-analyzer-HRG7OOY3.js} +2 -2
  177. package/dist/cli/chunks/{continuedev-installer-ZSVFWMQB.js → continuedev-installer-CNTDONWG.js} +2 -2
  178. package/dist/cli/chunks/{copilot-installer-POSKHPZM.js → copilot-installer-XPWWIWYA.js} +2 -2
  179. package/dist/cli/chunks/core-handlers-TB7NLYXL.js +2 -0
  180. package/dist/cli/chunks/{cost-tracker-3UWDCNGC.js → cost-tracker-MFNLQ56K.js} +2 -2
  181. package/dist/cli/chunks/{coverage-HPBO67JF.js → coverage-KOIK654V.js} +3 -3
  182. package/dist/cli/chunks/cross-domain-router-MDSI553U.js +2 -0
  183. package/dist/cli/chunks/{cursor-installer-DSW3L62X.js → cursor-installer-S5MKLRQQ.js} +2 -2
  184. package/dist/cli/chunks/{daemon-2622ZCMJ.js → daemon-DUS6JYW6.js} +3 -3
  185. package/dist/cli/chunks/{daemon-33KTKDUM.js → daemon-Z7VPGWHY.js} +4 -4
  186. package/dist/cli/chunks/{dag-attention-scheduler-YFT5JMM6.js → dag-attention-scheduler-7CQ3ARNI.js} +2 -2
  187. package/dist/cli/chunks/{detect-COR3Q6BE.js → detect-WORBCAYF.js} +2 -2
  188. package/dist/cli/chunks/{dist-node-5TRNTNWI.js → dist-node-KRNI6OYW.js} +2 -2
  189. package/dist/cli/chunks/{domain-handler-TZC4GCF6.js → domain-handler-KRUR2VQG.js} +2 -2
  190. package/dist/cli/chunks/{domain-transfer-D2TENM3Y.js → domain-transfer-VEOVLV54.js} +2 -2
  191. package/dist/cli/chunks/dream-X7ISHFEE.js +2 -0
  192. package/dist/cli/chunks/embed-and-insert-pattern-QU3NQVA5.js +3 -0
  193. package/dist/cli/chunks/{eval-5ID5D77H.js → eval-AYQ7BSUP.js} +2 -2
  194. package/dist/cli/chunks/{experience-capture-middleware-MT4Z74TD.js → experience-capture-middleware-AWQBL6LT.js} +3 -3
  195. package/dist/cli/chunks/{fast-paths-MACRZGSE.js → fast-paths-V5EL4BYJ.js} +2 -2
  196. package/dist/cli/chunks/{feature-flags-LFNL6BHS.js → feature-flags-BXX7BP22.js} +2 -2
  197. package/dist/cli/chunks/{feature-flags-JZX6ZBUX.js → feature-flags-P34BPRWU.js} +2 -2
  198. package/dist/cli/chunks/{file-discovery-DA5BEAO2.js → file-discovery-MS6BKQ2U.js} +2 -2
  199. package/dist/cli/chunks/{fleet-35I4F7D2.js → fleet-7WVVPA4W.js} +3 -3
  200. package/dist/cli/chunks/{gnn-wrapper-2W3HM3ZI.js → gnn-wrapper-7WQ3LEPG.js} +2 -2
  201. package/dist/cli/chunks/{heartbeat-handler-6O2D2FU2.js → heartbeat-handler-P7QD3BZH.js} +4 -4
  202. package/dist/cli/chunks/heartbeat-scheduler-2C5XGFQT.js +2 -0
  203. package/dist/cli/chunks/hnsw-adapter-KCVMXLUL.js +2 -0
  204. package/dist/cli/chunks/hnsw-index-OGWZS6MP.js +2 -0
  205. package/dist/cli/chunks/{hnsw-legacy-bridge-GWBXEMQR.js → hnsw-legacy-bridge-Y3GAR3UP.js} +2 -2
  206. package/dist/cli/chunks/{hnswlib-node-TZ4VLARU.js → hnswlib-node-5QUXZQWQ.js} +2 -2
  207. package/dist/cli/chunks/{hooks-723GPTQ4.js → hooks-2D64KPRY.js} +10 -10
  208. package/dist/cli/chunks/{hypergraph-engine-ILRYFJM5.js → hypergraph-engine-5INXEZDP.js} +2 -2
  209. package/dist/cli/chunks/{hypergraph-handler-523TSK4P.js → hypergraph-handler-YJJJ3ESZ.js} +3 -3
  210. package/dist/cli/chunks/impact-analyzer-IBJ43GQL.js +2 -0
  211. package/dist/cli/chunks/{init-handler-RBDYIXNV.js → init-handler-QSFYJN5Q.js} +6 -6
  212. package/dist/cli/chunks/init-wizard-6XMFD5LP.js +2 -0
  213. package/dist/cli/chunks/kernel-UDUMUPB3.js +2 -0
  214. package/dist/cli/chunks/{kilocode-installer-E2QSX7Z7.js → kilocode-installer-3N3QGTJU.js} +2 -2
  215. package/dist/cli/chunks/{kiro-installer-EZZLT2R5.js → kiro-installer-GIWVTFZQ.js} +2 -2
  216. package/dist/cli/chunks/knowledge-graph-JRYTUG3W.js +2 -0
  217. package/dist/cli/chunks/learning-SGO2DQ5Q.js +122 -0
  218. package/dist/cli/chunks/llm-router-HBBULO65.js +37 -0
  219. package/dist/cli/chunks/llm-router-service-KF5ZALUQ.js +2 -0
  220. package/dist/cli/chunks/{load-QFQ3YOBQ.js → load-B5OFYB4H.js} +2 -2
  221. package/dist/cli/chunks/load-test-LHMBCNCH.js +2 -0
  222. package/dist/cli/chunks/{mcp-FPBBJJFY.js → mcp-FG3LNQR4.js} +2 -2
  223. package/dist/cli/chunks/{memory-RKN6KV75.js → memory-SPS7ZWLC.js} +5 -5
  224. package/dist/cli/chunks/memory-backend-WZHKHBZK.js +2 -0
  225. package/dist/cli/chunks/memory-handlers-P7FTPWP3.js +2 -0
  226. package/dist/cli/chunks/{multi-model-executor-OUNW3JM5.js → multi-model-executor-PUB7E6KH.js} +2 -2
  227. package/dist/cli/chunks/{opencode-installer-FXETYGGY.js → opencode-installer-TGCSGVG2.js} +2 -2
  228. package/dist/cli/chunks/{orchestrator-35UTVXSP.js → orchestrator-S5FTJFGB.js} +10 -13
  229. package/dist/cli/chunks/pattern-null-store-UZSHCRL2.js +2 -0
  230. package/dist/cli/chunks/{pattern-usage-recorder-YEQDS7DN.js → pattern-usage-recorder-LCXXGRAB.js} +2 -2
  231. package/dist/cli/chunks/{pipeline-YDJMWCAR.js → pipeline-ENOSRHKW.js} +2 -2
  232. package/dist/cli/chunks/{platform-L3LPNVKT.js → platform-WCRBO3Z7.js} +2 -2
  233. package/dist/cli/chunks/{plugin-55EYFJH5.js → plugin-JZ5ODJSU.js} +2 -2
  234. package/dist/cli/chunks/{prime-radiant-advanced-wasm-SUZT6RTM.js → prime-radiant-advanced-wasm-DPJUPNCG.js} +2 -2
  235. package/dist/cli/chunks/protocol-executor-42NLVDTC.js +2 -0
  236. package/dist/cli/chunks/{protocol-handler-QNBFRJNY.js → protocol-handler-IP4NLVY3.js} +2 -2
  237. package/dist/cli/chunks/{prove-3X5NQP4L.js → prove-P6FM4RU7.js} +2 -2
  238. package/dist/cli/chunks/qe-reasoning-bank-W74RSMMU.js +2 -0
  239. package/dist/cli/chunks/{quality-5ZONTNA6.js → quality-UHP4XO26.js} +2 -2
  240. package/dist/cli/chunks/{quality-gate-JPNREEVR.js → quality-gate-63DDBSGM.js} +3 -3
  241. package/dist/cli/chunks/queen-coordinator-XELKSRMS.js +2 -0
  242. package/dist/cli/chunks/real-embeddings-6SO5MFRQ.js +2 -0
  243. package/dist/cli/chunks/{roocode-installer-ZK73O2GD.js → roocode-installer-WTWUOFCH.js} +2 -2
  244. package/dist/cli/chunks/router-GTW2EQZV.js +2 -0
  245. package/dist/cli/chunks/routing-feedback-NVOBWEMK.js +2 -0
  246. package/dist/cli/chunks/{routing-handler-2UN5GRHJ.js → routing-handler-IK7HYERQ.js} +2 -2
  247. package/dist/cli/chunks/{ruvector-commands-EQQUEVWN.js → ruvector-commands-THLB4NIM.js} +2 -2
  248. package/dist/cli/chunks/rvf-dual-writer-5OPVMXNL.js +2 -0
  249. package/dist/cli/chunks/rvf-migration-adapter-5S4YFTX4.js +2 -0
  250. package/dist/cli/chunks/rvf-migration-coordinator-BUKCSHBD.js +2 -0
  251. package/dist/cli/chunks/rvf-native-adapter-LYSJHEVX.js +2 -0
  252. package/dist/cli/chunks/{rvf-store-integrity-66FEC3MD.js → rvf-store-integrity-ECTADZIN.js} +2 -2
  253. package/dist/cli/chunks/safe-db-AEB3JMLD.js +2 -0
  254. package/dist/cli/chunks/schedule-4QNPCQNT.js +2 -0
  255. package/dist/cli/chunks/scheduler-S3DFHX6A.js +2 -0
  256. package/dist/cli/chunks/{security-H7PEUUCV.js → security-HN4UXFXX.js} +3 -3
  257. package/dist/cli/chunks/{shared-rvf-adapter-XETNK4ID.js → shared-rvf-adapter-XJCPX5SN.js} +2 -2
  258. package/dist/cli/chunks/{shared-rvf-dual-writer-PXD54BWJ.js → shared-rvf-dual-writer-23X5PNY5.js} +2 -2
  259. package/dist/cli/chunks/sqlite-persistence-L2KISU2H.js +2 -0
  260. package/dist/cli/chunks/status-handler-ZXANTHKT.js +47 -0
  261. package/dist/cli/chunks/{structural-health-EIFBDCRI.js → structural-health-LR6WI3AH.js} +2 -2
  262. package/dist/cli/chunks/{sync-PECWQ64K.js → sync-4OEI3BC2.js} +2 -2
  263. package/dist/cli/chunks/{sync-3SU4H6R3.js → sync-I5IUJF33.js} +2 -2
  264. package/dist/cli/chunks/{task-handler-ZTUAT6YF.js → task-handler-R3ATJKU5.js} +2 -2
  265. package/dist/cli/chunks/{task-handlers-4RIO7LJJ.js → task-handlers-4X357AEW.js} +3 -3
  266. package/dist/cli/chunks/{test-EV7BSUTI.js → test-PR2B5H2F.js} +4 -4
  267. package/dist/cli/chunks/{test-scheduling-4WVI5DLE.js → test-scheduling-ZNOSQVLD.js} +3 -3
  268. package/dist/cli/chunks/token-bootstrap-LYXOI72S.js +2 -0
  269. package/dist/cli/chunks/{token-usage-FR3JOWYB.js → token-usage-R6EQZBX2.js} +2 -2
  270. package/dist/cli/chunks/{transformers-FENO33LA.js → transformers-COQWK27J.js} +2 -2
  271. package/dist/cli/chunks/{tree-sitter-wasm-parser-YFGJLSMB.js → tree-sitter-wasm-parser-LLIW2X3M.js} +2 -2
  272. package/dist/cli/chunks/{types-N3Y565RZ.js → types-MEYTZITK.js} +2 -2
  273. package/dist/cli/chunks/unified-memory-5KQMA7FV.js +2 -0
  274. package/dist/cli/chunks/unified-memory-hnsw-PQRPTYOD.js +2 -0
  275. package/dist/cli/chunks/unified-persistence-YDONVPJB.js +2 -0
  276. package/dist/cli/chunks/{upgrade-33ZVVZFW.js → upgrade-DVIJ456A.js} +2 -2
  277. package/dist/cli/chunks/{validate-CS5PXGDF.js → validate-UYTSMJ5X.js} +2 -2
  278. package/dist/cli/chunks/{validate-swarm-GRZPWYNM.js → validate-swarm-P32WCJR6.js} +2 -2
  279. package/dist/cli/chunks/{vibium-IO7N4VEE.js → vibium-JGVOLM6X.js} +2 -2
  280. package/dist/cli/chunks/visual-security-RJ7RTNGJ.js +2 -0
  281. package/dist/cli/chunks/{web-tree-sitter-UQXR5HHR.js → web-tree-sitter-5ZGNCTPN.js} +2 -2
  282. package/dist/cli/chunks/{windsurf-installer-BCKLSLZT.js → windsurf-installer-IILSSQAE.js} +2 -2
  283. package/dist/cli/chunks/{witness-chain-R3V26QWL.js → witness-chain-JZMXCG3B.js} +2 -2
  284. package/dist/cli/chunks/witness-chain-YXXXNGAM.js +2 -0
  285. package/dist/cli/chunks/{witness-key-manager-Y36HMPEM.js → witness-key-manager-UUTLNUIH.js} +2 -2
  286. package/dist/cli/chunks/{workflow-4TCIUUFQ.js → workflow-NS7HXVHZ.js} +4 -4
  287. package/dist/cli/chunks/workflow-orchestrator-5KUAVSTH.js +2 -0
  288. package/dist/cli/chunks/{wrappers-MD4JRHJH.js → wrappers-XKEDSV5W.js} +2 -2
  289. package/dist/cli/commands/learning.js +44 -0
  290. package/dist/cli/commands/llm-router.js +62 -27
  291. package/dist/cli/handlers/brain-handler.js +2 -0
  292. package/dist/cli/handlers/status-handler.js +18 -2
  293. package/dist/context/compaction/index.d.ts +1 -0
  294. package/dist/context/compaction/index.js +3 -0
  295. package/dist/context/compaction/instruction-provenance.d.ts +20 -0
  296. package/dist/context/compaction/instruction-provenance.js +18 -0
  297. package/dist/context/compaction/tier2-session-summary.d.ts +8 -0
  298. package/dist/context/compaction/tier2-session-summary.js +20 -0
  299. package/dist/context/compaction/tier3-llm-compact.d.ts +4 -0
  300. package/dist/context/compaction/tier3-llm-compact.js +32 -4
  301. package/dist/init/phases/07-hooks.js +0 -3
  302. package/dist/integrations/embeddings/base/EmbeddingGenerator.js +4 -2
  303. package/dist/integrations/ruvector/brain-exporter.d.ts +1 -1
  304. package/dist/integrations/ruvector/brain-exporter.js +15 -3
  305. package/dist/integrations/ruvector/brain-rvf-exporter.d.ts +4 -0
  306. package/dist/integrations/ruvector/brain-rvf-exporter.js +118 -37
  307. package/dist/integrations/ruvector/brain-search.d.ts +1 -1
  308. package/dist/integrations/ruvector/brain-search.js +1 -1
  309. package/dist/integrations/ruvector/brain-shared.d.ts +4 -2
  310. package/dist/integrations/ruvector/brain-shared.js +11 -4
  311. package/dist/integrations/ruvector/brain-table-ddl.d.ts +2 -2
  312. package/dist/integrations/ruvector/brain-table-ddl.js +20 -8
  313. package/dist/integrations/ruvector/cognitive-container.js +1 -1
  314. package/dist/integrations/ruvector/rvf-dual-writer.d.ts +4 -0
  315. package/dist/integrations/ruvector/rvf-dual-writer.js +57 -9
  316. package/dist/integrations/ruvector/rvf-store-integrity.js +1 -1
  317. package/dist/kernel/unified-memory-schemas.d.ts +4 -3
  318. package/dist/kernel/unified-memory-schemas.js +19 -9
  319. package/dist/kernel/unified-memory.d.ts +2 -0
  320. package/dist/kernel/unified-memory.js +19 -0
  321. package/dist/learning/embed-and-insert-pattern.js +6 -3
  322. package/dist/learning/embedding-space.d.ts +50 -0
  323. package/dist/learning/embedding-space.js +128 -0
  324. package/dist/learning/evidence-admission-store.d.ts +15 -0
  325. package/dist/learning/evidence-admission-store.js +68 -0
  326. package/dist/learning/index.d.ts +4 -0
  327. package/dist/learning/index.js +2 -0
  328. package/dist/learning/learning-evidence-admission.d.ts +44 -0
  329. package/dist/learning/learning-evidence-admission.js +97 -0
  330. package/dist/learning/pattern-store.d.ts +5 -0
  331. package/dist/learning/pattern-store.js +36 -7
  332. package/dist/learning/qe-flywheel/coupled-anchor.d.ts +8 -0
  333. package/dist/learning/qe-flywheel/coupled-anchor.js +46 -3
  334. package/dist/learning/qe-reasoning-bank.js +4 -0
  335. package/dist/learning/real-embeddings.d.ts +3 -0
  336. package/dist/learning/real-embeddings.js +40 -3
  337. package/dist/learning/real-qe-reasoning-bank.js +7 -3
  338. package/dist/learning/rvf-pattern-migration.d.ts +2 -0
  339. package/dist/learning/rvf-pattern-migration.js +5 -3
  340. package/dist/learning/rvf-pattern-store.d.ts +3 -0
  341. package/dist/learning/rvf-pattern-store.js +21 -1
  342. package/dist/learning/sqlite-persistence.d.ts +7 -2
  343. package/dist/learning/sqlite-persistence.js +58 -21
  344. package/dist/mcp/bundle.js +607 -443
  345. package/dist/mcp/handlers/memory-handlers.js +6 -2
  346. package/dist/migrations/20260830_add_learning_evidence_tables.d.ts +7 -0
  347. package/dist/migrations/20260830_add_learning_evidence_tables.js +173 -0
  348. package/dist/persistence/rvf-migration-adapter.d.ts +2 -0
  349. package/dist/persistence/rvf-migration-adapter.js +56 -12
  350. package/dist/shared/llm/billing-modes.d.ts +5 -0
  351. package/dist/shared/llm/billing-modes.js +42 -3
  352. package/dist/shared/llm/index.d.ts +4 -1
  353. package/dist/shared/llm/index.js +5 -1
  354. package/dist/shared/llm/interfaces.d.ts +34 -3
  355. package/dist/shared/llm/interfaces.js +17 -0
  356. package/dist/shared/llm/llm-router-service.d.ts +8 -0
  357. package/dist/shared/llm/llm-router-service.js +21 -3
  358. package/dist/shared/llm/provider-manager.js +8 -1
  359. package/dist/shared/llm/provider-registry.d.ts +135 -0
  360. package/dist/shared/llm/provider-registry.js +227 -0
  361. package/dist/shared/llm/providers/external-cli.d.ts +129 -0
  362. package/dist/shared/llm/providers/external-cli.js +385 -0
  363. package/dist/shared/llm/router/config-store.d.ts +14 -0
  364. package/dist/shared/llm/router/config-store.js +102 -14
  365. package/dist/shared/llm/router/external-provider-config.d.ts +47 -0
  366. package/dist/shared/llm/router/external-provider-config.js +105 -0
  367. package/dist/shared/llm/router/types.d.ts +50 -4
  368. package/dist/shared/llm/router/types.js +10 -0
  369. package/dist/shared/llm/translation/message-formatter.js +7 -1
  370. package/dist/shared/sql-safety.js +4 -0
  371. package/dist/skills/qe-court/cli.d.ts +3 -0
  372. package/dist/skills/qe-court/cli.js +54 -0
  373. package/dist/verification/adversarial-verify/calibrate.d.ts +46 -2
  374. package/dist/verification/adversarial-verify/calibrate.js +104 -2
  375. package/dist/verification/adversarial-verify/index.d.ts +1 -1
  376. package/dist/verification/adversarial-verify/index.js +1 -1
  377. package/package.json +12 -3
  378. package/dist/cli/chunks/adapter-YBSKQFQ4.js +0 -2
  379. package/dist/cli/chunks/aqe-learning-engine-3H7DRDD4.js +0 -2
  380. package/dist/cli/chunks/base-ZTD6PFD7.js +0 -2
  381. package/dist/cli/chunks/brain-handler-FV2AJZ4A.js +0 -89
  382. package/dist/cli/chunks/browser-workflow-GKWDM25H.js +0 -2
  383. package/dist/cli/chunks/chunk-2CBEQV6R.js +0 -2
  384. package/dist/cli/chunks/chunk-4ZQOJ7Q2.js +0 -2
  385. package/dist/cli/chunks/chunk-CYQRZ645.js +0 -2
  386. package/dist/cli/chunks/chunk-FXKOHZBN.js +0 -2
  387. package/dist/cli/chunks/chunk-GJTGHVAX.js +0 -65
  388. package/dist/cli/chunks/chunk-GP5QBJVO.js +0 -3
  389. package/dist/cli/chunks/chunk-JGXP67BP.js +0 -2
  390. package/dist/cli/chunks/chunk-SW56PB22.js +0 -2
  391. package/dist/cli/chunks/chunk-T5M4TZRB.js +0 -12
  392. package/dist/cli/chunks/chunk-UDSNWQQI.js +0 -2
  393. package/dist/cli/chunks/chunk-VC77SDNH.js +0 -9
  394. package/dist/cli/chunks/chunk-WRMJWQUI.js +0 -12
  395. package/dist/cli/chunks/chunk-YXUFGDGS.js +0 -2
  396. package/dist/cli/chunks/client-4Q5JE7RY.js +0 -2
  397. package/dist/cli/chunks/core-handlers-4GKEYGPS.js +0 -2
  398. package/dist/cli/chunks/cross-domain-router-PBJ2ZGPJ.js +0 -2
  399. package/dist/cli/chunks/dream-4EXVFHUJ.js +0 -2
  400. package/dist/cli/chunks/embed-and-insert-pattern-COAZZGS6.js +0 -3
  401. package/dist/cli/chunks/heartbeat-scheduler-UNEYR3WR.js +0 -2
  402. package/dist/cli/chunks/hnsw-adapter-JQG66H4L.js +0 -2
  403. package/dist/cli/chunks/hnsw-index-2NOROILM.js +0 -2
  404. package/dist/cli/chunks/hybrid-router-FXTAJATE.js +0 -2
  405. package/dist/cli/chunks/impact-analyzer-VHZSBWMT.js +0 -2
  406. package/dist/cli/chunks/init-wizard-EML4OET2.js +0 -2
  407. package/dist/cli/chunks/kernel-TMRJOEO2.js +0 -2
  408. package/dist/cli/chunks/knowledge-graph-FMKVCMJQ.js +0 -2
  409. package/dist/cli/chunks/learning-II2U3EV2.js +0 -119
  410. package/dist/cli/chunks/llm-router-WC66OXZH.js +0 -36
  411. package/dist/cli/chunks/llm-router-service-GOSVGMKM.js +0 -2
  412. package/dist/cli/chunks/load-test-WIRGDZIA.js +0 -2
  413. package/dist/cli/chunks/memory-backend-XBBIXDZU.js +0 -2
  414. package/dist/cli/chunks/memory-handlers-SQHNK3DK.js +0 -2
  415. package/dist/cli/chunks/pattern-null-store-PFLKHRVU.js +0 -2
  416. package/dist/cli/chunks/protocol-executor-GAMNY2JB.js +0 -2
  417. package/dist/cli/chunks/provider-manager-VTIG5AKU.js +0 -2
  418. package/dist/cli/chunks/qe-reasoning-bank-KAX63PXV.js +0 -2
  419. package/dist/cli/chunks/queen-coordinator-UYW2MDKI.js +0 -2
  420. package/dist/cli/chunks/real-embeddings-HHR75AR5.js +0 -2
  421. package/dist/cli/chunks/router-NVDU7IIA.js +0 -2
  422. package/dist/cli/chunks/routing-feedback-KHR3J2J3.js +0 -2
  423. package/dist/cli/chunks/rvf-dual-writer-43L75WLF.js +0 -2
  424. package/dist/cli/chunks/rvf-migration-adapter-Y5OVCYTO.js +0 -2
  425. package/dist/cli/chunks/rvf-migration-coordinator-NEPDFB3N.js +0 -2
  426. package/dist/cli/chunks/rvf-native-adapter-PQ4IOTZU.js +0 -2
  427. package/dist/cli/chunks/safe-db-QHSFV63M.js +0 -2
  428. package/dist/cli/chunks/schedule-JGZFHJGM.js +0 -2
  429. package/dist/cli/chunks/scheduler-NGCDQIW5.js +0 -2
  430. package/dist/cli/chunks/sqlite-persistence-3JSNWL6I.js +0 -2
  431. package/dist/cli/chunks/status-handler-CTXOH3FX.js +0 -47
  432. package/dist/cli/chunks/token-bootstrap-3P22AYZ4.js +0 -2
  433. package/dist/cli/chunks/unified-memory-4VO5KSHP.js +0 -2
  434. package/dist/cli/chunks/unified-memory-hnsw-ZR2FZXOB.js +0 -2
  435. package/dist/cli/chunks/unified-persistence-VFPW5MFM.js +0 -2
  436. package/dist/cli/chunks/visual-security-SNADRUPR.js +0 -2
  437. package/dist/cli/chunks/witness-chain-2TXUTEJE.js +0 -2
  438. package/dist/cli/chunks/workflow-orchestrator-ON6UYRVE.js +0 -2
@@ -1 +1 @@
1
- 3.38.8
1
+ 3.38.12
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": {
3
- "version": "3.38.8",
3
+ "version": "3.38.12",
4
4
  "files": {
5
5
  "auto-memory-hook.mjs": "85fe05c757421c52137c0bc8545a0896bab6b4714538c2a11d1d0835bfcc8c1c",
6
6
  "hook-handler.cjs": "dae295fb9ae2626b89899c19a20cc911541af82b52d2eeb9b214d618b96e9a86",
@@ -8,6 +8,6 @@
8
8
  "statusline.cjs": "0457fe53f8cd2c56458ff178392536a5868efd1a573665fa43bc01d2d95ca677"
9
9
  }
10
10
  },
11
- "signature": "EoEEuSnNwaVCAmnwd7Evq+V2sD0Zz5cOqqZO4PecBOchzrcimyqFqkz4eOyhYF6iIhEtQ8+XsOvZKFKMbtKIDg==",
11
+ "signature": "8JINtA8uubiBqNQbsz8OL2fcc4xmKGk6gKPGoa1ib7/21nYDaYWiWrZB/4xli8AGUdmQuMS9GT6ANbpPjqAcCw==",
12
12
  "algorithm": "ed25519"
13
13
  }
@@ -1,12 +1,61 @@
1
1
  #!/usr/bin/env node
2
2
  /* ruflo-seg:BEGIN */
3
+ function rufloStatuslineDebug(stage, error){
4
+ if (!process || !process.env || process.env.AK_STATUSLINE_DEBUG !== "1") return;
5
+ if (error && error.code === "ENOENT") return; // optional source genuinely absent
6
+ try {
7
+ var fs = require("fs"), path = require("path"), os = require("os");
8
+ var root = process.env.XDG_STATE_HOME || path.join(os.homedir(), ".local", "state");
9
+ var file = process.env.AK_STATUSLINE_DEBUG_FILE || path.join(root, "agentic-kit", "statusline-debug.log");
10
+ var safeStage = String(stage || "unknown").replace(/[^a-z0-9._-]/gi, "_").slice(0, 64);
11
+ var safeName = String(error && error.name || "Error").replace(/[^A-Za-z0-9_-]/g, "").slice(0, 40) || "Error";
12
+ var safeCode = String(error && (error.code || error.errcode) || "unknown").replace(/[^A-Za-z0-9_-]/g, "").slice(0, 40) || "unknown";
13
+ var line = new Date().toISOString() + " stage=" + safeStage + " name=" + safeName + " code=" + safeCode + "\n";
14
+ fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
15
+ var size = 0; try { size = fs.statSync(file).size; } catch(_missing){}
16
+ if (size >= 65536) fs.writeFileSync(file, line, { mode: 0o600 });
17
+ else fs.appendFileSync(file, line, { mode: 0o600 });
18
+ try { fs.chmodSync(file, 0o600); } catch(_mode){}
19
+ } catch(_debugFailure) { /* diagnostics must never break the renderer */ }
20
+ }
3
21
  function rufloActivationSegments(cwd){
4
22
  try {
5
23
  var fs = require("fs"), path = require("path"), cp = require("child_process");
6
24
  var RED = "\x1b[1;31m"; // alarm-only segments (aidefence OFF) — matches ruflo's own brightRed
7
25
  var DIM = "", G = "", Y = "", C = "", R = "";
8
- // execFileSync (no shell) db path / sql are passed as argv, never interpolated into a command line.
9
- function q(db, sql){ try { return cp.execFileSync("sqlite3", [db, sql], {stdio:["ignore","pipe","ignore"], timeout:1500}).toString().trim(); } catch(e){ return ""; } }
26
+ // ── quota tee (ADR-0010): Claude Code pushes plan utilization into every
27
+ // statusline invocation (rate_limits: five_hour/seven_day used_percentage +
28
+ // reset epochs — code.claude.com/docs/en/statusline.md). This is the ONLY
29
+ // supported channel for those numbers on a Pro/Max plan, and it is push-
30
+ // only, so the kit persists the latest payload for the dashboard's Limits
31
+ // view to read (quota.mjs). Throttled to one write/min (the statusline
32
+ // refreshes every ~5s); atomic tmp+rename at 0600 — account utilization is
33
+ // the user's own business. Failure is silent by design: a broken tee must
34
+ // never cost a statusline render.
35
+ try {
36
+ if (typeof getStdinData === "function") {
37
+ var _qsd = getStdinData();
38
+ if (_qsd && _qsd.rate_limits && typeof _qsd.rate_limits === "object") {
39
+ var _qdir = path.join(process.env.XDG_CONFIG_HOME || path.join(require("os").homedir(), ".config"), "agentic-kit");
40
+ var _qf = path.join(_qdir, "claude-rate-limits.json");
41
+ var _qold = 0;
42
+ try { _qold = fs.statSync(_qf).mtimeMs; } catch(e){ rufloStatuslineDebug("quota-cache-stat", e); }
43
+ if (Date.now() - _qold > 60000) {
44
+ fs.mkdirSync(_qdir, { recursive: true });
45
+ var _qtmp = _qf + "." + process.pid + ".tmp";
46
+ fs.writeFileSync(_qtmp, JSON.stringify({
47
+ teedAt: Date.now(),
48
+ session_id: _qsd.session_id || null,
49
+ model: (_qsd.model && _qsd.model.id) || null,
50
+ rate_limits: _qsd.rate_limits,
51
+ context_window: _qsd.context_window || null,
52
+ cost: _qsd.cost || null
53
+ }), { mode: 0o600 });
54
+ fs.renameSync(_qtmp, _qf);
55
+ }
56
+ }
57
+ }
58
+ } catch(e){ rufloStatuslineDebug("quota-tee", e); }
10
59
  function bar(n, max){ n = Math.max(0, Math.min(max, n)); return "[" + "●".repeat(n) + "○".repeat(max - n) + "]"; }
11
60
  // ── self-learning (SONA): own line with a volume bar (patterns/traj/HNSW) plus a
12
61
  // LIVE micro-LoRA adaptation field (Δ‖W‖, appended further below). The Δ‖W‖ tracker
@@ -26,7 +75,7 @@ function rufloActivationSegments(cwd){
26
75
  learn = C + "🧠 SONA" + R + " " + DIM + bar(dots, 5) + R + " " + parts.join(DIM + " · " + R);
27
76
  }
28
77
  }
29
- } catch(e){}
78
+ } catch(e){ rufloStatuslineDebug("sona-stats", e); }
30
79
  // ── micro-LoRA LIVE adaptation: Δ‖W‖<cum> +<session> <trend> n<count> ──
31
80
  // Shows the model ACTUALLY ADAPTING FROM YOUR WORK, live. ruflo's own micro-LoRA is
32
81
  // per-process scratch ("resets per process", intelligence.js) — every hook reinits it
@@ -48,7 +97,7 @@ function rufloActivationSegments(cwd){
48
97
  var nd = path.join(cwd, ".claude-flow", "neural");
49
98
  var pPath = path.join(nd, "patterns.json"), sPath = path.join(nd, "lora-live.json");
50
99
  if (fs.existsSync(pPath)) {
51
- var st = null; try { st = JSON.parse(fs.readFileSync(sPath, "utf8")); } catch(e){}
100
+ var st = null; try { st = JSON.parse(fs.readFileSync(sPath, "utf8")); } catch(e){ rufloStatuslineDebug("lora-state-read", e); }
52
101
  var nowS = Math.floor(Date.now() / 1000);
53
102
  var pMtimeMs = fs.statSync(pPath).mtimeMs; // ms precision: same-second writes still detected
54
103
  var TTL = Number(process.env.RUFLO_LORA_TTL_S || 60);
@@ -57,7 +106,7 @@ function rufloActivationSegments(cwd){
57
106
  // getStdinData() is the host statusline's cached single-read of that JSON; guard the
58
107
  // call so the segment still works on a template that lacks it, or run standalone.
59
108
  var sid = "";
60
- try { if (typeof getStdinData === "function") { var _sd = getStdinData(); sid = (_sd && (_sd.session_id || _sd.sessionId)) || ""; } } catch(e){}
109
+ try { if (typeof getStdinData === "function") { var _sd = getStdinData(); sid = (_sd && (_sd.session_id || _sd.sessionId)) || ""; } } catch(e){ rufloStatuslineDebug("lora-session-input", e); }
61
110
  // Refresh when: no state yet, the session changed (reset the +session baseline even
62
111
  // with no new patterns), or patterns changed and the TTL has elapsed.
63
112
  var sidChanged = !!(sid && st && (st.sessionId || "") !== sid);
@@ -69,7 +118,7 @@ function rufloActivationSegments(cwd){
69
118
  var sj = path.join(path.dirname(process.execPath), "..", "lib", "node_modules", "ruflo",
70
119
  "node_modules", "@ruvector", "ruvllm", "dist", "cjs", "sona.js");
71
120
  if (fs.existsSync(sj)) SC = require(sj).SonaCoordinator;
72
- } catch(e){}
121
+ } catch(e){ rufloStatuslineDebug("lora-module-load", e); }
73
122
  if (SC) {
74
123
  var pats = JSON.parse(fs.readFileSync(pPath, "utf8"));
75
124
  // Seed Math.random so the first-ever loraA init is deterministic; restore after ctor.
@@ -79,7 +128,7 @@ function rufloActivationSegments(cwd){
79
128
  Math.random = orig;
80
129
  var applied = new Set((st && st.appliedIds) || []);
81
130
  var n = (st && st.n) || 0;
82
- if (st && st.loraA) { try { coord.microLora.setWeights({ loraA: st.loraA, loraB: st.loraB, scaling: st.scaling }); } catch(e){} }
131
+ if (st && st.loraA) { try { coord.microLora.setWeights({ loraA: st.loraA, loraB: st.loraB, scaling: st.scaling }); } catch(e){ rufloStatuslineDebug("lora-weight-restore", e); } }
83
132
  var prevSid = st ? (st.sessionId || "") : "";
84
133
  var newSession;
85
134
  if (sid) {
@@ -102,7 +151,7 @@ function rufloActivationSegments(cwd){
102
151
  var rec = { loraA: w.loraA, loraB: w.loraB, scaling: w.scaling, appliedIds: Array.from(applied),
103
152
  n: n, deltaNorm: nm, sessionBase: sessionBase, sessionTs: sessionTs, sessionId: sid,
104
153
  pms: pMtimeMs, ts: nowS };
105
- try { var tmp = sPath + ".tmp"; fs.writeFileSync(tmp, JSON.stringify(rec)); fs.renameSync(tmp, sPath); } catch(e){}
154
+ try { var tmp = sPath + ".tmp"; fs.writeFileSync(tmp, JSON.stringify(rec)); fs.renameSync(tmp, sPath); } catch(e){ rufloStatuslineDebug("lora-state-write", e); }
106
155
  st = rec;
107
156
  }
108
157
  }
@@ -118,7 +167,7 @@ function rufloActivationSegments(cwd){
118
167
  else { learn = C + "🧠 Δ LoRA" + R + " " + dseg; }
119
168
  }
120
169
  }
121
- } catch(e){}
170
+ } catch(e){ rufloStatuslineDebug("lora-segment", e); }
122
171
  // ── route Q-learner (📈 RL): live agent-routing metrics, fs-only, honesty-gated ──
123
172
  // F3 (ruvnet/ruflo#2239) is fixed in ruflo 3.10.11 (FNV-1a lossless fold) — the
124
173
  // state encoder no longer collapses keyword-distinct tasks, so |Q| is a
@@ -158,7 +207,7 @@ function rufloActivationSegments(cwd){
158
207
  }
159
208
  }
160
209
  }
161
- } catch(e){}
210
+ } catch(e){ rufloStatuslineDebug("route-learning", e); }
162
211
  // ── proof verdict (self-improvement eval): ALARM-ONLY, fs-only ──
163
212
  // Sources the most recent ruflo-improvement-eval run (.claude-flow/improvement.json):
164
213
  // a pre-registered causal test (one-sided permutation p + Cohen's d + above-chance)
@@ -187,7 +236,7 @@ function rufloActivationSegments(cwd){
187
236
  proof = Y + "◷ proof FAIL" + R + (pp.length ? " " + DIM + pp.join(" · ") + R : "");
188
237
  }
189
238
  }
190
- } catch(e){}
239
+ } catch(e){ rufloStatuslineDebug("proof-verdict", e); }
191
240
  // ── AI defense (AIMDS) — ALARM-ONLY: renders only when it is MISSING ────────
192
241
  // Was a permanent green "🛡 aidefence on". Two reasons it inverted:
193
242
  // 1. Issue #8's rule, already law for the proof segment below: the expected state
@@ -223,7 +272,7 @@ function rufloActivationSegments(cwd){
223
272
  if (rufloAidefenceState(rufloFindRufloRoot()) === "off") {
224
273
  sec = RED + "⚠ aidefence OFF" + R + DIM + " — no prompt-injection defense · ak sync restores it" + R;
225
274
  }
226
- } catch(e){}
275
+ } catch(e){ rufloStatuslineDebug("aidefence-state", e); }
227
276
  // ── daemon visibility (⚙): GLOBAL count of running ruflo daemons, so no daemon
228
277
  // is ever invisible (token-burn incident lesson). Machine-global, not per-project,
229
278
  // so it is cached in tmpdir and shared across every project's statusline — one
@@ -239,13 +288,13 @@ function rufloActivationSegments(cwd){
239
288
  var dCache = path.join(os.tmpdir(), "ruflo-daemon-count.json");
240
289
  var dTtl = Number(process.env.RUFLO_DAEMON_STATUSLINE_TTL_MS || 30000);
241
290
  var dCount = null;
242
- try { var dc = JSON.parse(fs.readFileSync(dCache, "utf8")); if (dc && typeof dc.n === "number" && dTtl > 0 && (Date.now() - dc.ts) < dTtl) dCount = dc.n; } catch(e){}
291
+ try { var dc = JSON.parse(fs.readFileSync(dCache, "utf8")); if (dc && typeof dc.n === "number" && dTtl > 0 && (Date.now() - dc.ts) < dTtl) dCount = dc.n; } catch(e){ rufloStatuslineDebug("daemon-cache-read", e); }
243
292
  if (dCount === null) {
244
293
  try {
245
294
  var pg = cp.execFileSync("pgrep", ["-f", "cli.js daemon start"], {stdio:["ignore","pipe","ignore"], timeout:1500}).toString().trim();
246
295
  dCount = pg ? pg.split("\n").filter(Boolean).length : 0;
247
296
  } catch(e){ dCount = 0; } // pgrep exits 1 (=> throws) when nothing matches
248
- try { fs.writeFileSync(dCache, JSON.stringify({ts: Date.now(), n: dCount})); } catch(e){}
297
+ try { fs.writeFileSync(dCache, JSON.stringify({ts: Date.now(), n: dCount})); } catch(e){ rufloStatuslineDebug("daemon-cache-write", e); }
249
298
  }
250
299
  if (dCount > 0) {
251
300
  var dCol = dCount >= 4 ? Y : DIM;
@@ -253,7 +302,7 @@ function rufloActivationSegments(cwd){
253
302
  + (dCount >= 4 ? DIM + " — ruflo-daemon-gc to inspect" + R : "");
254
303
  }
255
304
  }
256
- } catch(e){}
305
+ } catch(e){ rufloStatuslineDebug("daemon-segment", e); }
257
306
  // ── RuvNet Brain (🧿): offline rUv-stack knowledge base — honesty-gated, fs-only ──
258
307
  // The brain is NOT an npm package — `npx github:stuinfla/ruvnet-brain` drops a
259
308
  // ~2GB offline knowledge base at ~/.cache/ruvnet-brain/kb (honors RUVNET_BRAIN_KB)
@@ -290,12 +339,12 @@ function rufloActivationSegments(cwd){
290
339
  var srcJ = JSON.parse(fs.readFileSync(path.join(kbDir, "SOURCE.json"), "utf8"));
291
340
  var rawTag = String(srcJ.releaseTag || "");
292
341
  if (/^[A-Za-z0-9._-]{1,32}$/.test(rawTag)) relTag = rawTag;
293
- } catch(e){}
342
+ } catch(e){ rufloStatuslineDebug("brain-source-stamp", e); }
294
343
  if (!relTag) try {
295
344
  var kitCfg = path.join(os2.homedir(), ".config", "agentic-kit", "kit.json");
296
345
  var kj = JSON.parse(fs.readFileSync(kitCfg, "utf8"));
297
346
  if (kj && kj.versionCheck && kj.versionCheck.ruvnetBrain) relTag = kj.versionCheck.ruvnetBrain.installedRelease;
298
- } catch(e){}
347
+ } catch(e){ rufloStatuslineDebug("brain-kit-stamp", e); }
299
348
  if (relTag) {
300
349
  bver = " V" + String(relTag).replace(/^v/, "");
301
350
  } else {
@@ -304,7 +353,7 @@ function rufloActivationSegments(cwd){
304
353
  var bv = JSON.parse(fs.readFileSync(bpkg, "utf8")).version;
305
354
  if (bv) bver = " V" + String(bv).replace(/^v/, "");
306
355
  }
307
- } catch(e){}
356
+ } catch(e){ rufloStatuslineDebug("brain-version", e); }
308
357
  // KB size — TTL-cached shallow sum of top-level files, keyed on kbDir so an
309
358
  // env-overridden path (or a moved KB) never serves a stale foreign size.
310
359
  var bBytes = null;
@@ -314,16 +363,16 @@ function rufloActivationSegments(cwd){
314
363
  try {
315
364
  var bc = JSON.parse(fs.readFileSync(bCache, "utf8"));
316
365
  if (bc && bc.dir === kbDir && typeof bc.bytes === "number" && bTtl > 0 && (Date.now() - bc.ts) < bTtl) bBytes = bc.bytes;
317
- } catch(e){}
366
+ } catch(e){ rufloStatuslineDebug("brain-size-cache-read", e); }
318
367
  if (bBytes === null) {
319
368
  var sum = 0;
320
369
  fs.readdirSync(kbDir).forEach(function(f){
321
- try { var s = fs.statSync(path.join(kbDir, f)); if (s.isFile()) sum += s.size; } catch(e){}
370
+ try { var s = fs.statSync(path.join(kbDir, f)); if (s.isFile()) sum += s.size; } catch(e){ rufloStatuslineDebug("brain-size-entry", e); }
322
371
  });
323
372
  bBytes = sum;
324
- try { fs.writeFileSync(bCache, JSON.stringify({ts: Date.now(), dir: kbDir, bytes: sum})); } catch(e){}
373
+ try { fs.writeFileSync(bCache, JSON.stringify({ts: Date.now(), dir: kbDir, bytes: sum})); } catch(e){ rufloStatuslineDebug("brain-size-cache-write", e); }
325
374
  }
326
- } catch(e){}
375
+ } catch(e){ rufloStatuslineDebug("brain-size", e); }
327
376
  var bp = [];
328
377
  if (bBytes && bBytes > 0) {
329
378
  var bkb = Math.round(bBytes / 1024);
@@ -331,7 +380,7 @@ function rufloActivationSegments(cwd){
331
380
  }
332
381
  brain = C + "🧿 RuvNet Brain" + bver + R + " " + (bp.length ? bp.join(DIM + " · " + R) : G + "✓" + R);
333
382
  }
334
- } catch(e){}
383
+ } catch(e){ rufloStatuslineDebug("brain-segment", e); }
335
384
  // ── agentic-qe — TTL-cached; one sqlite3 spawn only on a cache miss (issue #3) ──
336
385
  var qe = "";
337
386
  try {
@@ -344,7 +393,7 @@ function rufloActivationSegments(cwd){
344
393
  try {
345
394
  var cc = JSON.parse(fs.readFileSync(cacheFile, "utf8"));
346
395
  if (cc && typeof cc.line === "string" && ttl > 0 && (Date.now() - cc.ts) < ttl) cachedLine = cc.line;
347
- } catch(e){}
396
+ } catch(e){ rufloStatuslineDebug("qe-cache-read", e); }
348
397
  if (cachedLine !== null) {
349
398
  qe = cachedLine; // hit: zero sqlite3 spawns
350
399
  } else {
@@ -359,7 +408,7 @@ function rufloActivationSegments(cwd){
359
408
  + "SELECT 'traj',COUNT(*) FROM qe_trajectories;\n";
360
409
  var raw = "";
361
410
  try { raw = cp.execFileSync("sqlite3", [db], {input: sql, stdio:["pipe","pipe","ignore"], timeout:1500}).toString(); }
362
- catch(e){ raw = (e && e.stdout) ? e.stdout.toString() : ""; }
411
+ catch(e){ rufloStatuslineDebug("qe-sqlite-query", e); raw = (e && e.stdout) ? e.stdout.toString() : ""; }
363
412
  var pat = 0, qtj = 0, qv = 0;
364
413
  raw.split("\n").forEach(function(ln){
365
414
  var i = ln.indexOf("|"); if (i < 0) return;
@@ -370,7 +419,7 @@ function rufloActivationSegments(cwd){
370
419
  if (pat > 0) qp.push("🎓 " + pat + " patterns");
371
420
  if (qtj > 0) qp.push("🧭 " + qtj + " traj");
372
421
  if (qv > 0) qp.push("🧬 " + qv + " vec" + G + "⚡" + R);
373
- try { var kb = Math.round(fs.statSync(db).size / 1024); qp.push("💾 " + (kb >= 1024 ? (kb/1024).toFixed(1) + "MB" : kb + "KB")); } catch(e){}
422
+ try { var kb = Math.round(fs.statSync(db).size / 1024); qp.push("💾 " + (kb >= 1024 ? (kb/1024).toFixed(1) + "MB" : kb + "KB")); } catch(e){ rufloStatuslineDebug("qe-db-stat", e); }
374
423
  // Installed agentic-qe version — shown next to the label, mirroring "RuFlo V<x>"
375
424
  // in ruflo's native header. Prefer the global install (matches the aidefence
376
425
  // probe above); fall back to a project-local node_modules copy.
@@ -380,12 +429,12 @@ function rufloActivationSegments(cwd){
380
429
  if (!fs.existsSync(qpkg)) qpkg = path.join(cwd, "node_modules", "agentic-qe", "package.json");
381
430
  var qv2 = JSON.parse(fs.readFileSync(qpkg, "utf8")).version;
382
431
  if (qv2) qver = " V" + qv2;
383
- } catch(e){}
432
+ } catch(e){ rufloStatuslineDebug("qe-version", e); }
384
433
  qe = Y + "🎓 Agentic QE" + qver + R + " " + (qp.length ? qp.join(DIM + " · " + R) : "on");
385
- try { fs.mkdirSync(cacheDir, {recursive:true}); fs.writeFileSync(cacheFile, JSON.stringify({ts: Date.now(), line: qe})); } catch(e){}
434
+ try { fs.mkdirSync(cacheDir, {recursive:true}); fs.writeFileSync(cacheFile, JSON.stringify({ts: Date.now(), line: qe})); } catch(e){ rufloStatuslineDebug("qe-cache-write", e); }
386
435
  }
387
436
  }
388
- } catch(e){}
437
+ } catch(e){ rufloStatuslineDebug("qe-segment", e); }
389
438
  // ── assemble: one ruflo feature per line (SONA, 📈 RL, ◷ proof FAIL alarm,
390
439
  // ⚠ aidefence OFF alarm), then a divider, then the agentic-qe line. The two alarms
391
440
  // are silent in the healthy case, so a well-configured machine shows only the live
@@ -405,7 +454,7 @@ function rufloActivationSegments(cwd){
405
454
  if (qe) out.push(qe);
406
455
  if (!out.length) return "";
407
456
  return "\n" + out.join("\n");
408
- } catch(e){ return ""; }
457
+ } catch(e){ rufloStatuslineDebug("renderer", e); return ""; }
409
458
  }
410
459
  // ── AI-defense probe (companion to the alarm-only segment above) ─────────────
411
460
  // Locates the global ruflo install WITHOUT spawning npm (this runs on every render).
@@ -429,7 +478,7 @@ function rufloFindRufloRoot(){
429
478
  if (fs.existsSync(path.join(cands[ci], "package.json"))) return cands[ci];
430
479
  }
431
480
  return "";
432
- } catch(e){ return ""; }
481
+ } catch(e){ rufloStatuslineDebug("ruflo-root-probe", e); return ""; }
433
482
  }
434
483
  // ── real CLI bins (companion to the ruflo-bin wrapper) ──────────────────────
435
484
  // Upstream's resolveCliBinCandidates looks for `ruflo/bin/cli.js`, but the ruflo
@@ -452,8 +501,8 @@ function rufloRealCliBins(cwd){
452
501
  out.push(path.join(roots[i], "bin", "ruflo.js"));
453
502
  out.push(path.join(roots[i], "node_modules", "@claude-flow", "cli", "bin", "cli.js"));
454
503
  }
455
- return out.filter(function(p){ try { return fs.existsSync(p); } catch(e){ return false; } });
456
- } catch(e){ return []; }
504
+ return out.filter(function(p){ try { return fs.existsSync(p); } catch(e){ rufloStatuslineDebug("ruflo-bin-entry", e); return false; } });
505
+ } catch(e){ rufloStatuslineDebug("ruflo-bin-probe", e); return []; }
457
506
  }
458
507
  // Three states, not two — the distinction IS the fail-safe. "off" is asserted only on
459
508
  // positive evidence: a real ruflo install that does not contain aidefence. Anything we
@@ -467,7 +516,7 @@ function rufloAidefenceState(rufloRoot){
467
516
  if (!rufloRoot || !fs.existsSync(path.join(rufloRoot, "package.json"))) return "unknown";
468
517
  var ad = path.join(rufloRoot, "node_modules", "@claude-flow", "aidefence", "package.json");
469
518
  return fs.existsSync(ad) ? "on" : "off";
470
- } catch(e){ return "unknown"; }
519
+ } catch(e){ rufloStatuslineDebug("aidefence-probe", e); return "unknown"; }
471
520
  }
472
521
  // ── security overlay: replaces ruflo's FABRICATED CVE counter with the real scan ──
473
522
  // Upstream (@claude-flow/cli dist/src/funnel/local-signals.js, getSecurityStatus) does:
@@ -504,11 +553,11 @@ function rufloLocalSecurity(cwd, upstream){
504
553
  // Prefer the scan's own timestamp; fall back to mtime so a hand-written or
505
554
  // older-format scan file still orders correctly instead of sorting to epoch 0.
506
555
  var t = Date.parse(j && j.timestamp);
507
- if (!t) { try { t = fs.statSync(path.join(dir, f)).mtimeMs; } catch(e){ t = 0; } }
556
+ if (!t) { try { t = fs.statSync(path.join(dir, f)).mtimeMs; } catch(e){ rufloStatuslineDebug("security-scan-stat", e); t = 0; } }
508
557
  if (!newest || t > newest.t) newest = { t: t, j: j };
509
- } catch(e){} // unreadable/!JSON scan file: ignore, never let it break the render
558
+ } catch(e){ rufloStatuslineDebug("security-scan-file", e); } // unreadable/!JSON scan file: ignore, never let it break the render
510
559
  });
511
- } catch(e){} // no directory => never scanned
560
+ } catch(e){ rufloStatuslineDebug("security-scan-directory", e); } // no directory => never scanned
512
561
  if (!newest) return { status: "PENDING", cvesFixed: 0, totalCves: 0 };
513
562
  var s = newest.j.summary || {};
514
563
  var n = typeof s.total === "number" ? s.total
@@ -519,7 +568,7 @@ function rufloLocalSecurity(cwd, upstream){
519
568
  return { status: "STALE", cvesFixed: 0, totalCves: 0 };
520
569
  }
521
570
  return { status: "CLEAN", cvesFixed: 0, totalCves: 0 };
522
- } catch(e){ return upstream; }
571
+ } catch(e){ rufloStatuslineDebug("security-overlay", e); return upstream; }
523
572
  }
524
573
  // ── insight-row companion to rufloLocalSecurity ──────────────────────────────
525
574
  // The fabricated count reaches the render through a SECOND, independent path: the
@@ -545,7 +594,7 @@ function rufloHonestInsight(promo, sec){
545
594
  return { text: "⚠ " + n + " security issue" + (n === 1 ? "" : "s") + " found — see .claude/security-scans", kind: "insight" };
546
595
  }
547
596
  return null; // CLEAN: say nothing. The slot falls blank rather than nagging about a lie.
548
- } catch(e){ return promo; }
597
+ } catch(e){ rufloStatuslineDebug("security-insight", e); return promo; }
549
598
  }
550
599
  /* ruflo-seg:END */
551
600
  /* ruflo-bin:BEGIN */
@@ -1402,7 +1451,7 @@ function getPkgVersion() {
1402
1451
  // version (see generateStatuslineScript()'s doc comment) — correct even
1403
1452
  // when this renders via a pure npx invocation with no local install for
1404
1453
  // the candidate scan below to find.
1405
- let ver = "3.38.8";
1454
+ let ver = "3.38.12";
1406
1455
  try {
1407
1456
  const home = os.homedir();
1408
1457
  const pkgPaths = [
@@ -161,7 +161,7 @@ is Phase 2). To run a court now:
161
161
  the panel before seating it** — this step is not optional:
162
162
 
163
163
  ```ts
164
- import { validateCourtConfig } from 'src/skills/qe-court/referee';
164
+ import { validateCourtConfig } from 'agentic-qe/skills/qe-court/referee';
165
165
  const violations = validateCourtConfig(config); // [] == valid
166
166
  if (violations.length) throw new Error(`Cannot convene: ${violations.join(', ')}`);
167
167
  ```
@@ -188,9 +188,9 @@ Durable, attestable evidence — the "jury waiting for everything you ship."
188
188
 
189
189
  ## Trust tier
190
190
 
191
- **Tier 3 (verified).** The court's falsifiable invariants are enforced in code
192
- (`src/skills/qe-court/referee.ts`) and covered by an oracle suite
193
- (`tests/unit/skills/qe-court/referee.test.ts`) that the acceptance eval
191
+ **Tier 3 (verified).** The court's falsifiable invariants are enforced by the
192
+ published `agentic-qe/skills/qe-court/referee` entrypoint and covered by a
193
+ consumer-runnable `aqe-court-referee self-test <oracle>` suite that the acceptance eval
194
194
  (`evals/qe-court.yaml`, command-eval mode) runs through the `aqe eval` CLI —
195
195
  15/15 green as of 2026-07-29. That suite now validates the **shipped `config.json`
196
196
  itself**, so a routing edit that seats a colluding panel fails in CI rather than in
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agentic-qe.dev/schemas/qe-court-config.json",
4
+ "title": "QE-Court configuration",
5
+ "type": "object",
6
+ "required": ["prosecutors", "overturnDepth", "routing", "options"],
7
+ "properties": {
8
+ "prosecutors": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
9
+ "overturnDepth": { "type": "integer", "minimum": 0 },
10
+ "emitScore": { "type": "boolean" },
11
+ "routing": {
12
+ "type": "object",
13
+ "required": ["jury"],
14
+ "additionalProperties": {
15
+ "anyOf": [
16
+ { "type": "string" },
17
+ {
18
+ "type": "object",
19
+ "properties": { "provider": { "type": "string", "minLength": 1 }, "model": { "type": "string" } },
20
+ "additionalProperties": false
21
+ }
22
+ ]
23
+ }
24
+ },
25
+ "options": {
26
+ "type": "object",
27
+ "required": ["writerIsNeverJuror", "minDistinctVendors"],
28
+ "properties": {
29
+ "blindFiling": { "type": "boolean" },
30
+ "writerIsNeverJuror": { "const": true },
31
+ "minDistinctVendors": { "type": "integer", "minimum": 2 },
32
+ "requireDoeGatedScore": { "type": "boolean" },
33
+ "signCourtRecord": { "type": "boolean" }
34
+ },
35
+ "additionalProperties": false
36
+ }
37
+ }
38
+ }
@@ -3,8 +3,8 @@ version: 0.3.0
3
3
  status: active
4
4
  description: >
5
5
  Acceptance eval for the QE-Court adversarial review protocol (ADR-124).
6
- Command-eval suite: each case runs a real oracle from the referee suite
7
- (tests/unit/skills/qe-court/referee.test.ts) through the `aqe eval` CLI and
6
+ Command-eval suite: each case runs a real oracle through the published
7
+ `aqe-court-referee` executable and
8
8
  asserts it passes. Each oracle passes on correct referee logic and FAILS on a
9
9
  seeded regression, so a green run is genuine tier-3 evidence — not a self-report.
10
10
  The seeded-mutant is mirrored in fixtures/seeded-mutant-delivery/ (canSpend
@@ -16,7 +16,7 @@ test_cases:
16
16
  category: overturn
17
17
  priority: critical
18
18
  input:
19
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "overturn_catches_mutant"
19
+ command: aqe-court-referee self-test overturn-catches-mutant
20
20
  expected:
21
21
  exit_code: 0
22
22
 
@@ -25,7 +25,7 @@ test_cases:
25
25
  category: overturn
26
26
  priority: critical
27
27
  input:
28
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "overturn_disabled"
28
+ command: aqe-court-referee self-test overturn-disabled
29
29
  expected:
30
30
  exit_code: 0
31
31
 
@@ -34,7 +34,7 @@ test_cases:
34
34
  category: anti-collusion
35
35
  priority: critical
36
36
  input:
37
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "writer_not_juror_enforced"
37
+ command: aqe-court-referee self-test writer-not-juror
38
38
  expected:
39
39
  exit_code: 0
40
40
 
@@ -43,7 +43,7 @@ test_cases:
43
43
  category: anti-collusion
44
44
  priority: high
45
45
  input:
46
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "vendor_diversity_enforced"
46
+ command: aqe-court-referee self-test vendor-diversity
47
47
  expected:
48
48
  exit_code: 0
49
49
 
@@ -52,7 +52,7 @@ test_cases:
52
52
  category: doe-gate
53
53
  priority: high
54
54
  input:
55
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "no_score_without_doe_gate"
55
+ command: aqe-court-referee self-test doe-score-gate
56
56
  expected:
57
57
  exit_code: 0
58
58
 
@@ -61,7 +61,7 @@ test_cases:
61
61
  category: verdict
62
62
  priority: high
63
63
  input:
64
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "verdict_classes"
64
+ command: aqe-court-referee self-test verdict-classes
65
65
  expected:
66
66
  exit_code: 0
67
67
 
@@ -940,7 +940,7 @@
940
940
  },
941
941
  "metadata": {
942
942
  "generatedBy": "Agentic QE Fleet",
943
- "fleetVersion": "3.13.10",
943
+ "fleetVersion": "3.14.0",
944
944
  "manifestVersion": "1.4.0",
945
945
  "lastUpdated": "2026-04-13T00:00:00.000Z",
946
946
  "contributors": [
package/CHANGELOG.md CHANGED
@@ -5,6 +5,99 @@ All notable changes to the Agentic QE project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.14.0] - 2026-08-30
9
+
10
+ This release makes learned evidence, semantic vectors, recovery mirrors, and
11
+ adversarial verdicts carry explicit provenance and fail closed when that
12
+ provenance cannot be established.
13
+
14
+ ### Added
15
+
16
+ - Added immutable learning-evidence manifests, segment graphs, admission
17
+ decisions, and pattern lineage in additive unified-memory schema v12, with
18
+ disposable-copy migration coverage and portable JSONL/RVF backup support
19
+ ([#638]).
20
+ - Added embedding-space identity and compatibility checks for learned patterns,
21
+ persisted `space_id` provenance in additive schema v13, and a read-only
22
+ `aqe learning embedding-health` diagnostic ([#633]).
23
+ - Added the published `agentic-qe/skills/qe-court/referee` export and
24
+ `aqe-court-referee` executable, including consumer self-tests ([#632]).
25
+ - Added context-compaction authority lineage, fault-stratified judge
26
+ qualification, and architecture decisions ADR-129 through ADR-131
27
+ ([#635], [#636], [#638]).
28
+
29
+ ### Fixed
30
+
31
+ - Made RVF recovery-mirror replacement compare every portable table and fail
32
+ closed on ambiguous inspection while retaining explicit corruption recovery
33
+ and force-overwrite controls ([#629]).
34
+ - Made configured subscription and external providers reachable by the advisor
35
+ without allowing repository configuration to redirect ambient credentials or
36
+ replace trusted CLI executables ([#628], [#631]).
37
+ - Preserved authority labels through compaction using JSON-framed transcript
38
+ records so tool content cannot forge a user-authorized record ([#636]).
39
+ - Required mandatory severity strata, precision, false-keep limits, and
40
+ directional Wilson confidence bounds before judge automation ([#635]).
41
+ - Added the missing user-facing security disclosure for embedding-backed
42
+ analysis ([#615]).
43
+
44
+ ### Changed
45
+
46
+ - Brain exports now cover 31 portable tables and exclude unverified vectors
47
+ from the portable ANN while retaining their SQLite rows for later repair.
48
+ - The package adds public QE Court API and executable surfaces; this is an
49
+ additive minor release.
50
+
51
+ [#615]: https://github.com/proffesor-for-testing/agentic-qe/issues/615
52
+ [#628]: https://github.com/proffesor-for-testing/agentic-qe/issues/628
53
+ [#629]: https://github.com/proffesor-for-testing/agentic-qe/issues/629
54
+ [#631]: https://github.com/proffesor-for-testing/agentic-qe/issues/631
55
+ [#632]: https://github.com/proffesor-for-testing/agentic-qe/issues/632
56
+ [#633]: https://github.com/proffesor-for-testing/agentic-qe/issues/633
57
+ [#635]: https://github.com/proffesor-for-testing/agentic-qe/issues/635
58
+ [#636]: https://github.com/proffesor-for-testing/agentic-qe/issues/636
59
+ [#638]: https://github.com/proffesor-for-testing/agentic-qe/issues/638
60
+
61
+ ## [3.13.12] - 2026-08-21
62
+
63
+ Downstream tools can now give a host they supervise its own AQE provider
64
+ identity, instead of forking the provider enum or misreporting the vendor that
65
+ served the work.
66
+
67
+ ### Added
68
+
69
+ - Added external provider registration, so a project can declare a host it runs
70
+ and select it with `AQE_LLM_PROVIDER=<host>`. Declare it as data in
71
+ `.agentic-qe/llm-config.json` under `externalProviders` — the declaration is
72
+ picked up identically by the CLI and the MCP server — or call
73
+ `registerProvider()` when embedding AQE as a library. Declared hosts are
74
+ first-class everywhere a provider is accepted: `defaultProvider`,
75
+ `fallbackChain`, and `agentOverrides` ([#628]).
76
+ - Added `agentic-qe/shared/llm` as a package export. The module's own usage
77
+ example had documented this import path while it was never actually
78
+ exported, so library consumers had to reach it through `agentic-qe/shared`
79
+ ([#628]).
80
+
81
+ ### Fixed
82
+
83
+ - Corrected billing attribution for subscription-billed providers. Any provider
84
+ reporting subscription billing was described as running on the user's *Claude
85
+ Code* subscription, which was accurate only while the two built-in
86
+ subscription providers were the only ones possible. External hosts are now
87
+ reported as `external — <mode> (declared by <source>, not verified by AQE)`
88
+ in `aqe health` and in the startup notice ([#628]).
89
+
90
+ ### Changed
91
+
92
+ - The provider type is now open to registered identities while the shipped set
93
+ stays closed, so per-provider lookup tables still fail the build when a
94
+ built-in provider is added without updating them. `ALL_PROVIDER_TYPES`
95
+ continues to mean "the providers AQE ships" and is unchanged ([#628]).
96
+ - `aqe llm providers` now lists declared external providers, marked with `*` and
97
+ a footnote so they are never mistaken for providers AQE ships ([#628]).
98
+
99
+ [#628]: https://github.com/proffesor-for-testing/agentic-qe/issues/628
100
+
8
101
  ## [3.13.11] - 2026-08-14
9
102
 
10
103
  Diagnostics, native ESM imports, and learned pattern visibility now behave
@@ -161,7 +161,7 @@ is Phase 2). To run a court now:
161
161
  the panel before seating it** — this step is not optional:
162
162
 
163
163
  ```ts
164
- import { validateCourtConfig } from 'src/skills/qe-court/referee';
164
+ import { validateCourtConfig } from 'agentic-qe/skills/qe-court/referee';
165
165
  const violations = validateCourtConfig(config); // [] == valid
166
166
  if (violations.length) throw new Error(`Cannot convene: ${violations.join(', ')}`);
167
167
  ```
@@ -188,9 +188,9 @@ Durable, attestable evidence — the "jury waiting for everything you ship."
188
188
 
189
189
  ## Trust tier
190
190
 
191
- **Tier 3 (verified).** The court's falsifiable invariants are enforced in code
192
- (`src/skills/qe-court/referee.ts`) and covered by an oracle suite
193
- (`tests/unit/skills/qe-court/referee.test.ts`) that the acceptance eval
191
+ **Tier 3 (verified).** The court's falsifiable invariants are enforced by the
192
+ published `agentic-qe/skills/qe-court/referee` entrypoint and covered by a
193
+ consumer-runnable `aqe-court-referee self-test <oracle>` suite that the acceptance eval
194
194
  (`evals/qe-court.yaml`, command-eval mode) runs through the `aqe eval` CLI —
195
195
  15/15 green as of 2026-07-29. That suite now validates the **shipped `config.json`
196
196
  itself**, so a routing edit that seats a colluding panel fails in CI rather than in