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.
- package/.claude/helpers/.helpers-version +1 -1
- package/.claude/helpers/helpers.manifest.json +2 -2
- package/.claude/helpers/statusline.cjs +89 -40
- package/.claude/skills/qe-court/SKILL.md +4 -4
- package/.claude/skills/qe-court/config-schema.json +38 -0
- package/.claude/skills/qe-court/evals/qe-court.yaml +8 -8
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +93 -0
- package/assets/skills/qe-court/SKILL.md +4 -4
- package/assets/skills/qe-court/config-schema.json +38 -0
- package/assets/skills/qe-court/evals/qe-court.yaml +8 -8
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/brain-commands.d.ts +1 -0
- package/dist/cli/brain-commands.js +1 -0
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-3VBXL7DO.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-5ARDZYNO.js → agent-booster-wasm-JZO6VUW4.js} +2 -2
- package/dist/cli/chunks/{agent-handler-SVKEPF7B.js → agent-handler-534KFGEJ.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-QDL7OVHC.js → agent-memory-branch-B7KWLWY4.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-NXRNKJNA.js +2 -0
- package/dist/cli/chunks/{arena-7OCKBN6O.js → arena-7CCD3S3I.js} +2 -2
- package/dist/cli/chunks/{arena-HQLSNQZ3.js → arena-OW5MELJX.js} +4 -4
- package/dist/cli/chunks/{audit-2EQJW5UE.js → audit-BHVKN4E2.js} +3 -3
- package/dist/cli/chunks/base-F6GMOKU2.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-OBFNNE4T.js → better-sqlite3-P5FA6WFK.js} +2 -2
- package/dist/cli/chunks/brain-handler-WNW5LOV7.js +90 -0
- package/dist/cli/chunks/{branch-enumerator-6B4L5O3D.js → branch-enumerator-TVZ2ODKH.js} +2 -2
- package/dist/cli/chunks/{browser-VDMGBWNK.js → browser-TCEB2W2F.js} +2 -2
- package/dist/cli/chunks/browser-workflow-QRDC46LR.js +2 -0
- package/dist/cli/chunks/{chunk-M3MRFZKD.js → chunk-2D7UBX5S.js} +1 -1
- package/dist/cli/chunks/{chunk-IZF3VLNW.js → chunk-2HYVOX6N.js} +1 -1
- package/dist/cli/chunks/{chunk-U6G6RUFI.js → chunk-2NO4H35K.js} +1 -1
- package/dist/cli/chunks/{chunk-4TJJU5Y2.js → chunk-2O4DDPEA.js} +19 -19
- package/dist/cli/chunks/{chunk-24XW7KUX.js → chunk-3EM2MK3Z.js} +2 -2
- package/dist/cli/chunks/chunk-3GUO4ERR.js +24 -0
- package/dist/cli/chunks/{chunk-YRCNWQBO.js → chunk-3JIJBR4V.js} +2 -2
- package/dist/cli/chunks/{chunk-2E2QCIGR.js → chunk-3QT6S3A3.js} +3 -3
- package/dist/cli/chunks/{chunk-W2T36CS5.js → chunk-3RYTAYR6.js} +1 -1
- package/dist/cli/chunks/chunk-43GPSYAL.js +14 -0
- package/dist/cli/chunks/{chunk-YYAJEPRD.js → chunk-4FEJEVG7.js} +1 -1
- package/dist/cli/chunks/{chunk-4DTBGQWA.js → chunk-4MK2G6TK.js} +2 -2
- package/dist/cli/chunks/{chunk-CK7ZLMD2.js → chunk-4XTHRAUV.js} +1 -1
- package/dist/cli/chunks/{chunk-LM727BVL.js → chunk-4ZVGSVHV.js} +4 -4
- package/dist/cli/chunks/{chunk-DPZ4AU6W.js → chunk-52DFCV57.js} +2 -2
- package/dist/cli/chunks/{chunk-PADCR4LY.js → chunk-5LEAGKX5.js} +2 -2
- package/dist/cli/chunks/{chunk-P736OKQN.js → chunk-5MZF4N4Q.js} +1 -1
- package/dist/cli/chunks/{chunk-XZI4QXJJ.js → chunk-5VDVYTO5.js} +2 -2
- package/dist/cli/chunks/chunk-5XGVSQS2.js +11 -0
- package/dist/cli/chunks/{chunk-AAPJG3WI.js → chunk-6AOZU3UN.js} +2 -2
- package/dist/cli/chunks/{chunk-NC7HTDH5.js → chunk-6AYO3IR2.js} +2 -2
- package/dist/cli/chunks/{chunk-TJ67B7S7.js → chunk-6DPAMYLU.js} +2 -2
- package/dist/cli/chunks/{chunk-PZHAPI47.js → chunk-6IJMD2ZL.js} +3 -3
- package/dist/cli/chunks/{chunk-RGUKQXKL.js → chunk-6IZQSLYZ.js} +2 -2
- package/dist/cli/chunks/{chunk-2E3PRDEX.js → chunk-6W42XWLL.js} +2 -2
- package/dist/cli/chunks/{chunk-ATRUE6CT.js → chunk-7BOPFN3Y.js} +2 -2
- package/dist/cli/chunks/{chunk-LIGDJP6H.js → chunk-7OUMJCJT.js} +1 -1
- package/dist/cli/chunks/{chunk-2Y3PW5EJ.js → chunk-7RAB2BZY.js} +160 -26
- package/dist/cli/chunks/{chunk-XEUUWOSS.js → chunk-7RVAHJQZ.js} +3 -3
- package/dist/cli/chunks/{chunk-HHEWINDL.js → chunk-A2WZEMWT.js} +1 -1
- package/dist/cli/chunks/{chunk-36ONUM43.js → chunk-A7SKM6JL.js} +1 -1
- package/dist/cli/chunks/chunk-AFGT26NR.js +2 -0
- package/dist/cli/chunks/{chunk-23E37MDA.js → chunk-AR6SATU3.js} +2 -2
- package/dist/cli/chunks/{chunk-IYMV4CU5.js → chunk-AVLA5PBJ.js} +2 -2
- package/dist/cli/chunks/{chunk-OLPJGYO5.js → chunk-B3H4K7CY.js} +2 -2
- package/dist/cli/chunks/{chunk-JWT675RM.js → chunk-BQCTO7UB.js} +2 -2
- package/dist/cli/chunks/{chunk-JKP2BUF5.js → chunk-BZ4QVFP2.js} +2 -2
- package/dist/cli/chunks/{chunk-WINYWMQP.js → chunk-CIUOC5F3.js} +1 -1
- package/dist/cli/chunks/{chunk-SJJFU7KK.js → chunk-CIZ6LSNV.js} +2 -2
- package/dist/cli/chunks/{chunk-2D7SBOZ4.js → chunk-DDPJUAXQ.js} +2 -2
- package/dist/cli/chunks/{chunk-H7QWOJF2.js → chunk-DJITEQYS.js} +2 -2
- package/dist/cli/chunks/{chunk-DMHQ4ZUZ.js → chunk-DOWCOZDO.js} +2 -2
- package/dist/cli/chunks/{chunk-PBJ5I2NS.js → chunk-E4NU4BJA.js} +2 -2
- package/dist/cli/chunks/{chunk-E54QUKAD.js → chunk-E722WNWC.js} +2 -2
- package/dist/cli/chunks/chunk-ECTPFCON.js +2 -0
- package/dist/cli/chunks/{chunk-MUAW4AJ6.js → chunk-EJ6IP7DE.js} +5 -5
- package/dist/cli/chunks/{chunk-NHL37QAZ.js → chunk-ENGKLFLY.js} +2 -2
- package/dist/cli/chunks/{chunk-VU3ARH4S.js → chunk-FF43SRP6.js} +1 -1
- package/dist/cli/chunks/{chunk-PJNIDDER.js → chunk-FOHYBR3O.js} +1 -1
- package/dist/cli/chunks/{chunk-LREIHR2A.js → chunk-FRL3X2QA.js} +2 -2
- package/dist/cli/chunks/{chunk-WYQM7GXW.js → chunk-GKNDP5VK.js} +2 -2
- package/dist/cli/chunks/{chunk-JK6ENS3J.js → chunk-GVEJP5T7.js} +2 -2
- package/dist/cli/chunks/{chunk-H3BHOIT6.js → chunk-H3YDDKBW.js} +3 -3
- package/dist/cli/chunks/{chunk-3SPYI7TS.js → chunk-H6NFDOMK.js} +1 -1
- package/dist/cli/chunks/{chunk-AZVV7POX.js → chunk-H76TV4UU.js} +3 -3
- package/dist/cli/chunks/{chunk-2HT5HRAA.js → chunk-HJIAVR6P.js} +2 -2
- package/dist/cli/chunks/{chunk-UZ7OWJ75.js → chunk-HLNQDRHA.js} +1 -1
- package/dist/cli/chunks/{chunk-IGW5L7YM.js → chunk-HNKPLVYS.js} +1 -1
- package/dist/cli/chunks/{chunk-Y2S6SS7M.js → chunk-HQ7243G3.js} +2 -2
- package/dist/cli/chunks/{chunk-TZA45FI7.js → chunk-HQHLHSJO.js} +2 -2
- package/dist/cli/chunks/{chunk-YEPJS4AM.js → chunk-I3VHXA2W.js} +2 -2
- package/dist/cli/chunks/{chunk-W2NQDAJZ.js → chunk-IE5LC7MB.js} +2 -2
- package/dist/cli/chunks/{chunk-TU4BYSXR.js → chunk-IL4AEB3J.js} +27 -25
- package/dist/cli/chunks/{chunk-JTQSXU6V.js → chunk-IL6QRXRP.js} +6 -6
- package/dist/cli/chunks/{chunk-UX5SM2PW.js → chunk-IQ3JFHZN.js} +1 -1
- package/dist/cli/chunks/{chunk-RAV2NJNX.js → chunk-IQLRA4FV.js} +1 -1
- package/dist/cli/chunks/{chunk-S3FNAHNC.js → chunk-J3XSHJGK.js} +2 -2
- package/dist/cli/chunks/{chunk-AHG2O5HT.js → chunk-JAK5UUWH.js} +2 -2
- package/dist/cli/chunks/{chunk-XDK2TPI5.js → chunk-JGROLJ33.js} +1 -1
- package/dist/cli/chunks/{chunk-MWTFFGU3.js → chunk-JMKMDSXG.js} +2 -2
- package/dist/cli/chunks/{chunk-BVKFBJX6.js → chunk-JRKEBESE.js} +2 -2
- package/dist/cli/chunks/{chunk-76NSSNB3.js → chunk-JTWJR2KY.js} +2 -2
- package/dist/cli/chunks/{chunk-QYHRDBKI.js → chunk-JY4VZ6BN.js} +2 -2
- package/dist/cli/chunks/{chunk-DLL3AJH7.js → chunk-K6CGQR5R.js} +1 -1
- package/dist/cli/chunks/{chunk-7HTYM6XY.js → chunk-KDIZQHG5.js} +2 -2
- package/dist/cli/chunks/{chunk-B646CE3C.js → chunk-KTSCZ7AW.js} +2 -2
- package/dist/cli/chunks/{chunk-LLP3UW62.js → chunk-L4C42WYI.js} +2 -2
- package/dist/cli/chunks/{chunk-H3AKF2HS.js → chunk-LCSVROU7.js} +10 -10
- package/dist/cli/chunks/{chunk-HZR4G6I3.js → chunk-LKR7T3OZ.js} +1 -1
- package/dist/cli/chunks/{chunk-Z5ARI4XT.js → chunk-LZHTCUCO.js} +2 -2
- package/dist/cli/chunks/{chunk-YDEYB6Z2.js → chunk-M3HUZD2I.js} +1 -1
- package/dist/cli/chunks/{chunk-GWTGBQ6X.js → chunk-MO7EITJK.js} +2 -2
- package/dist/cli/chunks/{chunk-5364DBZG.js → chunk-N2YAUDAV.js} +2 -2
- package/dist/cli/chunks/{chunk-XVFSZLRS.js → chunk-NDPQ2WPU.js} +1 -1
- package/dist/cli/chunks/{chunk-CTS545BF.js → chunk-NKWO2X3T.js} +1 -1
- package/dist/cli/chunks/{chunk-GPJDZFFV.js → chunk-NOPVFBQM.js} +2 -2
- package/dist/cli/chunks/{chunk-VNVGCJCS.js → chunk-NYARYONH.js} +1 -1
- package/dist/cli/chunks/{chunk-WRZ5WZG3.js → chunk-O2MZZL54.js} +2 -2
- package/dist/cli/chunks/{chunk-EKFKQGIT.js → chunk-OIYUSWHX.js} +1 -1
- package/dist/cli/chunks/{chunk-ZNGFSR5M.js → chunk-OONCRNFA.js} +2 -2
- package/dist/cli/chunks/{chunk-LUAXQB57.js → chunk-PEW6FZ47.js} +1 -1
- package/dist/cli/chunks/{chunk-W7BB4XLP.js → chunk-Q73RRTLE.js} +2 -2
- package/dist/cli/chunks/{chunk-JKPMV5VB.js → chunk-QKQZ4IJF.js} +5 -5
- package/dist/cli/chunks/{chunk-EHZQIXH6.js → chunk-QMMDN4WX.js} +3 -3
- package/dist/cli/chunks/chunk-QQCENKCX.js +2 -0
- package/dist/cli/chunks/{chunk-7YL7P5XG.js → chunk-QSPRQPEL.js} +2 -2
- package/dist/cli/chunks/{chunk-DXQMVATY.js → chunk-QZPFUFZG.js} +2 -2
- package/dist/cli/chunks/chunk-R2B6EE45.js +2 -0
- package/dist/cli/chunks/{chunk-VLW63UA2.js → chunk-R6WJF4D5.js} +2 -2
- package/dist/cli/chunks/{chunk-EWH7PFV6.js → chunk-RGVD6ZUX.js} +1 -1
- package/dist/cli/chunks/{chunk-UGFHEVG4.js → chunk-RKUYVVGJ.js} +2 -2
- package/dist/cli/chunks/{chunk-V7QZMOG3.js → chunk-S5YVLPXU.js} +2 -2
- package/dist/cli/chunks/{chunk-UDFTDQ6C.js → chunk-SROZXIMT.js} +37 -37
- package/dist/cli/chunks/{chunk-AFXMTSO3.js → chunk-SSV6KSFT.js} +1 -1
- package/dist/cli/chunks/{chunk-HGPMS6JL.js → chunk-SUSMHSXT.js} +2 -2
- package/dist/cli/chunks/{chunk-BL5BHBXR.js → chunk-T3BZAFLP.js} +1 -1
- package/dist/cli/chunks/{chunk-K652SCBA.js → chunk-TGOGCA74.js} +2 -2
- package/dist/cli/chunks/{chunk-VHNAN7E2.js → chunk-TKYEP7OR.js} +1 -1
- package/dist/cli/chunks/{chunk-OJUI65TR.js → chunk-TQJE7DNL.js} +2 -2
- package/dist/cli/chunks/{chunk-MS5CAEPA.js → chunk-TRDEULS7.js} +2 -2
- package/dist/cli/chunks/{chunk-YRV45WDT.js → chunk-U4GZWPKM.js} +2 -2
- package/dist/cli/chunks/{chunk-2BDTZYQN.js → chunk-UI6WSPEK.js} +3 -3
- package/dist/cli/chunks/{chunk-TMY2Y7SC.js → chunk-UUJ5VQJM.js} +1 -1
- package/dist/cli/chunks/{chunk-4CTKRLRX.js → chunk-VESOYP6A.js} +2 -2
- package/dist/cli/chunks/{chunk-UPMQHCC2.js → chunk-VOSISOFD.js} +1 -1
- package/dist/cli/chunks/{chunk-IZOWGVTU.js → chunk-VPVZHJSU.js} +2 -2
- package/dist/cli/chunks/{chunk-TBO64O56.js → chunk-VRRG66XB.js} +1 -1
- package/dist/cli/chunks/{chunk-WJB6YYMJ.js → chunk-VXU53F7Z.js} +2 -2
- package/dist/cli/chunks/{chunk-4TUGQESL.js → chunk-VYENTZ45.js} +2 -2
- package/dist/cli/chunks/chunk-WJXHE52V.js +65 -0
- package/dist/cli/chunks/{chunk-EN36AFRJ.js → chunk-WKNWRDA5.js} +1 -1
- package/dist/cli/chunks/{chunk-4X4GTEQY.js → chunk-WTHAVFIC.js} +1 -1
- package/dist/cli/chunks/{chunk-LPDT27EC.js → chunk-WWWX76QB.js} +2 -2
- package/dist/cli/chunks/{chunk-TCVEXQLL.js → chunk-XITTURP2.js} +2 -2
- package/dist/cli/chunks/{chunk-HV6LJ57R.js → chunk-XXFKN7LB.js} +1 -1
- package/dist/cli/chunks/{chunk-UJ2NRIAS.js → chunk-YEAC3DC6.js} +2 -2
- package/dist/cli/chunks/{chunk-FBASWZ7G.js → chunk-YKWMKRYB.js} +1 -1
- package/dist/cli/chunks/chunk-YKZV7O65.js +2 -0
- package/dist/cli/chunks/{chunk-PT6U3IIK.js → chunk-YW4RNZWT.js} +2 -2
- package/dist/cli/chunks/{chunk-H5DS7S4B.js → chunk-ZAAYOENS.js} +2 -2
- package/dist/cli/chunks/chunk-ZBKGX72B.js +13 -0
- package/dist/cli/chunks/{chunk-WVNLNXXI.js → chunk-ZBOWR4XT.js} +2 -2
- package/dist/cli/chunks/{chunk-FPX4JSFH.js → chunk-ZCVJCCQQ.js} +2 -2
- package/dist/cli/chunks/{chunk-OQWG7GOD.js → chunk-ZI3UO7QR.js} +8 -7
- package/dist/cli/chunks/{chunk-BPPEN7SS.js → chunk-ZNSMVQCG.js} +2 -2
- package/dist/cli/chunks/{chunk-EI4KYBNI.js → chunk-ZQSXG7FA.js} +2 -2
- package/dist/cli/chunks/{ci-M6WYL2XY.js → ci-B432UH6N.js} +2 -2
- package/dist/cli/chunks/{ci-output-JFC3WOHX.js → ci-output-GTHH7WYG.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-IMVBU6WP.js → circuit-breaker-VW75DLME.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-M5T5ZUXX.js → claude-flow-setup-RE3IVT7U.js} +2 -2
- package/dist/cli/chunks/client-HNBZUEVV.js +2 -0
- package/dist/cli/chunks/{cline-installer-LSFAUHXC.js → cline-installer-NUBZZ55N.js} +2 -2
- package/dist/cli/chunks/{code-N3SWJ3XL.js → code-K6JCWKNW.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-WPGRG36B.js → code-index-extractor-I4ILB5JN.js} +2 -2
- package/dist/cli/chunks/{codex-installer-LKRCSDU5.js → codex-installer-AKQ5BCHU.js} +2 -2
- package/dist/cli/chunks/{completions-E5TBZ5AB.js → completions-V3KJVJF4.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-3FOSOELK.js → complexity-analyzer-HRG7OOY3.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-ZSVFWMQB.js → continuedev-installer-CNTDONWG.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-POSKHPZM.js → copilot-installer-XPWWIWYA.js} +2 -2
- package/dist/cli/chunks/core-handlers-TB7NLYXL.js +2 -0
- package/dist/cli/chunks/{cost-tracker-3UWDCNGC.js → cost-tracker-MFNLQ56K.js} +2 -2
- package/dist/cli/chunks/{coverage-HPBO67JF.js → coverage-KOIK654V.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-MDSI553U.js +2 -0
- package/dist/cli/chunks/{cursor-installer-DSW3L62X.js → cursor-installer-S5MKLRQQ.js} +2 -2
- package/dist/cli/chunks/{daemon-2622ZCMJ.js → daemon-DUS6JYW6.js} +3 -3
- package/dist/cli/chunks/{daemon-33KTKDUM.js → daemon-Z7VPGWHY.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-YFT5JMM6.js → dag-attention-scheduler-7CQ3ARNI.js} +2 -2
- package/dist/cli/chunks/{detect-COR3Q6BE.js → detect-WORBCAYF.js} +2 -2
- package/dist/cli/chunks/{dist-node-5TRNTNWI.js → dist-node-KRNI6OYW.js} +2 -2
- package/dist/cli/chunks/{domain-handler-TZC4GCF6.js → domain-handler-KRUR2VQG.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-D2TENM3Y.js → domain-transfer-VEOVLV54.js} +2 -2
- package/dist/cli/chunks/dream-X7ISHFEE.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-QU3NQVA5.js +3 -0
- package/dist/cli/chunks/{eval-5ID5D77H.js → eval-AYQ7BSUP.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-MT4Z74TD.js → experience-capture-middleware-AWQBL6LT.js} +3 -3
- package/dist/cli/chunks/{fast-paths-MACRZGSE.js → fast-paths-V5EL4BYJ.js} +2 -2
- package/dist/cli/chunks/{feature-flags-LFNL6BHS.js → feature-flags-BXX7BP22.js} +2 -2
- package/dist/cli/chunks/{feature-flags-JZX6ZBUX.js → feature-flags-P34BPRWU.js} +2 -2
- package/dist/cli/chunks/{file-discovery-DA5BEAO2.js → file-discovery-MS6BKQ2U.js} +2 -2
- package/dist/cli/chunks/{fleet-35I4F7D2.js → fleet-7WVVPA4W.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-2W3HM3ZI.js → gnn-wrapper-7WQ3LEPG.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-6O2D2FU2.js → heartbeat-handler-P7QD3BZH.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-2C5XGFQT.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-KCVMXLUL.js +2 -0
- package/dist/cli/chunks/hnsw-index-OGWZS6MP.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-GWBXEMQR.js → hnsw-legacy-bridge-Y3GAR3UP.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-TZ4VLARU.js → hnswlib-node-5QUXZQWQ.js} +2 -2
- package/dist/cli/chunks/{hooks-723GPTQ4.js → hooks-2D64KPRY.js} +10 -10
- package/dist/cli/chunks/{hypergraph-engine-ILRYFJM5.js → hypergraph-engine-5INXEZDP.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-523TSK4P.js → hypergraph-handler-YJJJ3ESZ.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-IBJ43GQL.js +2 -0
- package/dist/cli/chunks/{init-handler-RBDYIXNV.js → init-handler-QSFYJN5Q.js} +6 -6
- package/dist/cli/chunks/init-wizard-6XMFD5LP.js +2 -0
- package/dist/cli/chunks/kernel-UDUMUPB3.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-E2QSX7Z7.js → kilocode-installer-3N3QGTJU.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-EZZLT2R5.js → kiro-installer-GIWVTFZQ.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-JRYTUG3W.js +2 -0
- package/dist/cli/chunks/learning-SGO2DQ5Q.js +122 -0
- package/dist/cli/chunks/llm-router-HBBULO65.js +37 -0
- package/dist/cli/chunks/llm-router-service-KF5ZALUQ.js +2 -0
- package/dist/cli/chunks/{load-QFQ3YOBQ.js → load-B5OFYB4H.js} +2 -2
- package/dist/cli/chunks/load-test-LHMBCNCH.js +2 -0
- package/dist/cli/chunks/{mcp-FPBBJJFY.js → mcp-FG3LNQR4.js} +2 -2
- package/dist/cli/chunks/{memory-RKN6KV75.js → memory-SPS7ZWLC.js} +5 -5
- package/dist/cli/chunks/memory-backend-WZHKHBZK.js +2 -0
- package/dist/cli/chunks/memory-handlers-P7FTPWP3.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-OUNW3JM5.js → multi-model-executor-PUB7E6KH.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-FXETYGGY.js → opencode-installer-TGCSGVG2.js} +2 -2
- package/dist/cli/chunks/{orchestrator-35UTVXSP.js → orchestrator-S5FTJFGB.js} +10 -13
- package/dist/cli/chunks/pattern-null-store-UZSHCRL2.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-YEQDS7DN.js → pattern-usage-recorder-LCXXGRAB.js} +2 -2
- package/dist/cli/chunks/{pipeline-YDJMWCAR.js → pipeline-ENOSRHKW.js} +2 -2
- package/dist/cli/chunks/{platform-L3LPNVKT.js → platform-WCRBO3Z7.js} +2 -2
- package/dist/cli/chunks/{plugin-55EYFJH5.js → plugin-JZ5ODJSU.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-SUZT6RTM.js → prime-radiant-advanced-wasm-DPJUPNCG.js} +2 -2
- package/dist/cli/chunks/protocol-executor-42NLVDTC.js +2 -0
- package/dist/cli/chunks/{protocol-handler-QNBFRJNY.js → protocol-handler-IP4NLVY3.js} +2 -2
- package/dist/cli/chunks/{prove-3X5NQP4L.js → prove-P6FM4RU7.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-W74RSMMU.js +2 -0
- package/dist/cli/chunks/{quality-5ZONTNA6.js → quality-UHP4XO26.js} +2 -2
- package/dist/cli/chunks/{quality-gate-JPNREEVR.js → quality-gate-63DDBSGM.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-XELKSRMS.js +2 -0
- package/dist/cli/chunks/real-embeddings-6SO5MFRQ.js +2 -0
- package/dist/cli/chunks/{roocode-installer-ZK73O2GD.js → roocode-installer-WTWUOFCH.js} +2 -2
- package/dist/cli/chunks/router-GTW2EQZV.js +2 -0
- package/dist/cli/chunks/routing-feedback-NVOBWEMK.js +2 -0
- package/dist/cli/chunks/{routing-handler-2UN5GRHJ.js → routing-handler-IK7HYERQ.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-EQQUEVWN.js → ruvector-commands-THLB4NIM.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-5OPVMXNL.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-5S4YFTX4.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-BUKCSHBD.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-LYSJHEVX.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-66FEC3MD.js → rvf-store-integrity-ECTADZIN.js} +2 -2
- package/dist/cli/chunks/safe-db-AEB3JMLD.js +2 -0
- package/dist/cli/chunks/schedule-4QNPCQNT.js +2 -0
- package/dist/cli/chunks/scheduler-S3DFHX6A.js +2 -0
- package/dist/cli/chunks/{security-H7PEUUCV.js → security-HN4UXFXX.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-XETNK4ID.js → shared-rvf-adapter-XJCPX5SN.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-PXD54BWJ.js → shared-rvf-dual-writer-23X5PNY5.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-L2KISU2H.js +2 -0
- package/dist/cli/chunks/status-handler-ZXANTHKT.js +47 -0
- package/dist/cli/chunks/{structural-health-EIFBDCRI.js → structural-health-LR6WI3AH.js} +2 -2
- package/dist/cli/chunks/{sync-PECWQ64K.js → sync-4OEI3BC2.js} +2 -2
- package/dist/cli/chunks/{sync-3SU4H6R3.js → sync-I5IUJF33.js} +2 -2
- package/dist/cli/chunks/{task-handler-ZTUAT6YF.js → task-handler-R3ATJKU5.js} +2 -2
- package/dist/cli/chunks/{task-handlers-4RIO7LJJ.js → task-handlers-4X357AEW.js} +3 -3
- package/dist/cli/chunks/{test-EV7BSUTI.js → test-PR2B5H2F.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-4WVI5DLE.js → test-scheduling-ZNOSQVLD.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-LYXOI72S.js +2 -0
- package/dist/cli/chunks/{token-usage-FR3JOWYB.js → token-usage-R6EQZBX2.js} +2 -2
- package/dist/cli/chunks/{transformers-FENO33LA.js → transformers-COQWK27J.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-YFGJLSMB.js → tree-sitter-wasm-parser-LLIW2X3M.js} +2 -2
- package/dist/cli/chunks/{types-N3Y565RZ.js → types-MEYTZITK.js} +2 -2
- package/dist/cli/chunks/unified-memory-5KQMA7FV.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-PQRPTYOD.js +2 -0
- package/dist/cli/chunks/unified-persistence-YDONVPJB.js +2 -0
- package/dist/cli/chunks/{upgrade-33ZVVZFW.js → upgrade-DVIJ456A.js} +2 -2
- package/dist/cli/chunks/{validate-CS5PXGDF.js → validate-UYTSMJ5X.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-GRZPWYNM.js → validate-swarm-P32WCJR6.js} +2 -2
- package/dist/cli/chunks/{vibium-IO7N4VEE.js → vibium-JGVOLM6X.js} +2 -2
- package/dist/cli/chunks/visual-security-RJ7RTNGJ.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-UQXR5HHR.js → web-tree-sitter-5ZGNCTPN.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-BCKLSLZT.js → windsurf-installer-IILSSQAE.js} +2 -2
- package/dist/cli/chunks/{witness-chain-R3V26QWL.js → witness-chain-JZMXCG3B.js} +2 -2
- package/dist/cli/chunks/witness-chain-YXXXNGAM.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-Y36HMPEM.js → witness-key-manager-UUTLNUIH.js} +2 -2
- package/dist/cli/chunks/{workflow-4TCIUUFQ.js → workflow-NS7HXVHZ.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-5KUAVSTH.js +2 -0
- package/dist/cli/chunks/{wrappers-MD4JRHJH.js → wrappers-XKEDSV5W.js} +2 -2
- package/dist/cli/commands/learning.js +44 -0
- package/dist/cli/commands/llm-router.js +62 -27
- package/dist/cli/handlers/brain-handler.js +2 -0
- package/dist/cli/handlers/status-handler.js +18 -2
- package/dist/context/compaction/index.d.ts +1 -0
- package/dist/context/compaction/index.js +3 -0
- package/dist/context/compaction/instruction-provenance.d.ts +20 -0
- package/dist/context/compaction/instruction-provenance.js +18 -0
- package/dist/context/compaction/tier2-session-summary.d.ts +8 -0
- package/dist/context/compaction/tier2-session-summary.js +20 -0
- package/dist/context/compaction/tier3-llm-compact.d.ts +4 -0
- package/dist/context/compaction/tier3-llm-compact.js +32 -4
- package/dist/init/phases/07-hooks.js +0 -3
- package/dist/integrations/embeddings/base/EmbeddingGenerator.js +4 -2
- package/dist/integrations/ruvector/brain-exporter.d.ts +1 -1
- package/dist/integrations/ruvector/brain-exporter.js +15 -3
- package/dist/integrations/ruvector/brain-rvf-exporter.d.ts +4 -0
- package/dist/integrations/ruvector/brain-rvf-exporter.js +118 -37
- package/dist/integrations/ruvector/brain-search.d.ts +1 -1
- package/dist/integrations/ruvector/brain-search.js +1 -1
- package/dist/integrations/ruvector/brain-shared.d.ts +4 -2
- package/dist/integrations/ruvector/brain-shared.js +11 -4
- package/dist/integrations/ruvector/brain-table-ddl.d.ts +2 -2
- package/dist/integrations/ruvector/brain-table-ddl.js +20 -8
- package/dist/integrations/ruvector/cognitive-container.js +1 -1
- package/dist/integrations/ruvector/rvf-dual-writer.d.ts +4 -0
- package/dist/integrations/ruvector/rvf-dual-writer.js +57 -9
- package/dist/integrations/ruvector/rvf-store-integrity.js +1 -1
- package/dist/kernel/unified-memory-schemas.d.ts +4 -3
- package/dist/kernel/unified-memory-schemas.js +19 -9
- package/dist/kernel/unified-memory.d.ts +2 -0
- package/dist/kernel/unified-memory.js +19 -0
- package/dist/learning/embed-and-insert-pattern.js +6 -3
- package/dist/learning/embedding-space.d.ts +50 -0
- package/dist/learning/embedding-space.js +128 -0
- package/dist/learning/evidence-admission-store.d.ts +15 -0
- package/dist/learning/evidence-admission-store.js +68 -0
- package/dist/learning/index.d.ts +4 -0
- package/dist/learning/index.js +2 -0
- package/dist/learning/learning-evidence-admission.d.ts +44 -0
- package/dist/learning/learning-evidence-admission.js +97 -0
- package/dist/learning/pattern-store.d.ts +5 -0
- package/dist/learning/pattern-store.js +36 -7
- package/dist/learning/qe-flywheel/coupled-anchor.d.ts +8 -0
- package/dist/learning/qe-flywheel/coupled-anchor.js +46 -3
- package/dist/learning/qe-reasoning-bank.js +4 -0
- package/dist/learning/real-embeddings.d.ts +3 -0
- package/dist/learning/real-embeddings.js +40 -3
- package/dist/learning/real-qe-reasoning-bank.js +7 -3
- package/dist/learning/rvf-pattern-migration.d.ts +2 -0
- package/dist/learning/rvf-pattern-migration.js +5 -3
- package/dist/learning/rvf-pattern-store.d.ts +3 -0
- package/dist/learning/rvf-pattern-store.js +21 -1
- package/dist/learning/sqlite-persistence.d.ts +7 -2
- package/dist/learning/sqlite-persistence.js +58 -21
- package/dist/mcp/bundle.js +607 -443
- package/dist/mcp/handlers/memory-handlers.js +6 -2
- package/dist/migrations/20260830_add_learning_evidence_tables.d.ts +7 -0
- package/dist/migrations/20260830_add_learning_evidence_tables.js +173 -0
- package/dist/persistence/rvf-migration-adapter.d.ts +2 -0
- package/dist/persistence/rvf-migration-adapter.js +56 -12
- package/dist/shared/llm/billing-modes.d.ts +5 -0
- package/dist/shared/llm/billing-modes.js +42 -3
- package/dist/shared/llm/index.d.ts +4 -1
- package/dist/shared/llm/index.js +5 -1
- package/dist/shared/llm/interfaces.d.ts +34 -3
- package/dist/shared/llm/interfaces.js +17 -0
- package/dist/shared/llm/llm-router-service.d.ts +8 -0
- package/dist/shared/llm/llm-router-service.js +21 -3
- package/dist/shared/llm/provider-manager.js +8 -1
- package/dist/shared/llm/provider-registry.d.ts +135 -0
- package/dist/shared/llm/provider-registry.js +227 -0
- package/dist/shared/llm/providers/external-cli.d.ts +129 -0
- package/dist/shared/llm/providers/external-cli.js +385 -0
- package/dist/shared/llm/router/config-store.d.ts +14 -0
- package/dist/shared/llm/router/config-store.js +102 -14
- package/dist/shared/llm/router/external-provider-config.d.ts +47 -0
- package/dist/shared/llm/router/external-provider-config.js +105 -0
- package/dist/shared/llm/router/types.d.ts +50 -4
- package/dist/shared/llm/router/types.js +10 -0
- package/dist/shared/llm/translation/message-formatter.js +7 -1
- package/dist/shared/sql-safety.js +4 -0
- package/dist/skills/qe-court/cli.d.ts +3 -0
- package/dist/skills/qe-court/cli.js +54 -0
- package/dist/verification/adversarial-verify/calibrate.d.ts +46 -2
- package/dist/verification/adversarial-verify/calibrate.js +104 -2
- package/dist/verification/adversarial-verify/index.d.ts +1 -1
- package/dist/verification/adversarial-verify/index.js +1 -1
- package/package.json +12 -3
- package/dist/cli/chunks/adapter-YBSKQFQ4.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-3H7DRDD4.js +0 -2
- package/dist/cli/chunks/base-ZTD6PFD7.js +0 -2
- package/dist/cli/chunks/brain-handler-FV2AJZ4A.js +0 -89
- package/dist/cli/chunks/browser-workflow-GKWDM25H.js +0 -2
- package/dist/cli/chunks/chunk-2CBEQV6R.js +0 -2
- package/dist/cli/chunks/chunk-4ZQOJ7Q2.js +0 -2
- package/dist/cli/chunks/chunk-CYQRZ645.js +0 -2
- package/dist/cli/chunks/chunk-FXKOHZBN.js +0 -2
- package/dist/cli/chunks/chunk-GJTGHVAX.js +0 -65
- package/dist/cli/chunks/chunk-GP5QBJVO.js +0 -3
- package/dist/cli/chunks/chunk-JGXP67BP.js +0 -2
- package/dist/cli/chunks/chunk-SW56PB22.js +0 -2
- package/dist/cli/chunks/chunk-T5M4TZRB.js +0 -12
- package/dist/cli/chunks/chunk-UDSNWQQI.js +0 -2
- package/dist/cli/chunks/chunk-VC77SDNH.js +0 -9
- package/dist/cli/chunks/chunk-WRMJWQUI.js +0 -12
- package/dist/cli/chunks/chunk-YXUFGDGS.js +0 -2
- package/dist/cli/chunks/client-4Q5JE7RY.js +0 -2
- package/dist/cli/chunks/core-handlers-4GKEYGPS.js +0 -2
- package/dist/cli/chunks/cross-domain-router-PBJ2ZGPJ.js +0 -2
- package/dist/cli/chunks/dream-4EXVFHUJ.js +0 -2
- package/dist/cli/chunks/embed-and-insert-pattern-COAZZGS6.js +0 -3
- package/dist/cli/chunks/heartbeat-scheduler-UNEYR3WR.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-JQG66H4L.js +0 -2
- package/dist/cli/chunks/hnsw-index-2NOROILM.js +0 -2
- package/dist/cli/chunks/hybrid-router-FXTAJATE.js +0 -2
- package/dist/cli/chunks/impact-analyzer-VHZSBWMT.js +0 -2
- package/dist/cli/chunks/init-wizard-EML4OET2.js +0 -2
- package/dist/cli/chunks/kernel-TMRJOEO2.js +0 -2
- package/dist/cli/chunks/knowledge-graph-FMKVCMJQ.js +0 -2
- package/dist/cli/chunks/learning-II2U3EV2.js +0 -119
- package/dist/cli/chunks/llm-router-WC66OXZH.js +0 -36
- package/dist/cli/chunks/llm-router-service-GOSVGMKM.js +0 -2
- package/dist/cli/chunks/load-test-WIRGDZIA.js +0 -2
- package/dist/cli/chunks/memory-backend-XBBIXDZU.js +0 -2
- package/dist/cli/chunks/memory-handlers-SQHNK3DK.js +0 -2
- package/dist/cli/chunks/pattern-null-store-PFLKHRVU.js +0 -2
- package/dist/cli/chunks/protocol-executor-GAMNY2JB.js +0 -2
- package/dist/cli/chunks/provider-manager-VTIG5AKU.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-KAX63PXV.js +0 -2
- package/dist/cli/chunks/queen-coordinator-UYW2MDKI.js +0 -2
- package/dist/cli/chunks/real-embeddings-HHR75AR5.js +0 -2
- package/dist/cli/chunks/router-NVDU7IIA.js +0 -2
- package/dist/cli/chunks/routing-feedback-KHR3J2J3.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-43L75WLF.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-Y5OVCYTO.js +0 -2
- package/dist/cli/chunks/rvf-migration-coordinator-NEPDFB3N.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-PQ4IOTZU.js +0 -2
- package/dist/cli/chunks/safe-db-QHSFV63M.js +0 -2
- package/dist/cli/chunks/schedule-JGZFHJGM.js +0 -2
- package/dist/cli/chunks/scheduler-NGCDQIW5.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-3JSNWL6I.js +0 -2
- package/dist/cli/chunks/status-handler-CTXOH3FX.js +0 -47
- package/dist/cli/chunks/token-bootstrap-3P22AYZ4.js +0 -2
- package/dist/cli/chunks/unified-memory-4VO5KSHP.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-ZR2FZXOB.js +0 -2
- package/dist/cli/chunks/unified-persistence-VFPW5MFM.js +0 -2
- package/dist/cli/chunks/visual-security-SNADRUPR.js +0 -2
- package/dist/cli/chunks/witness-chain-2TXUTEJE.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-ON6UYRVE.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
3.38.
|
|
1
|
+
3.38.12
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest": {
|
|
3
|
-
"version": "3.38.
|
|
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": "
|
|
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 = "[2m", G = "[1;32m", Y = "[1;33m", C = "[1;36m", R = "[0m";
|
|
8
|
-
//
|
|
9
|
-
|
|
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){}
|
|
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.
|
|
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 '
|
|
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
|
|
192
|
-
|
|
193
|
-
|
|
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
|
|
7
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
64
|
+
command: aqe-court-referee self-test verdict-classes
|
|
65
65
|
expected:
|
|
66
66
|
exit_code: 0
|
|
67
67
|
|
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 '
|
|
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
|
|
192
|
-
|
|
193
|
-
|
|
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
|