agentic-qe 3.15.14 → 3.15.16
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/agents/v3/templates/qx-report-template.html +1 -1
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +136 -0
- package/assets/agents/v3/templates/qx-report-template.html +1 -1
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/audit/witness-chain.d.ts +7 -0
- package/dist/audit/witness-chain.js +10 -0
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-6CQ2PIP5.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-45NWEKVS.js +2 -0
- package/dist/cli/chunks/{agent-handler-P3IY7XEE.js → agent-handler-LVHMYFEF.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-WWKC2H3G.js → agent-memory-branch-YDWOJFEQ.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-73RR52VS.js +2 -0
- package/dist/cli/chunks/{arena-EIV5OALF.js → arena-CZKHXDDS.js} +2 -2
- package/dist/cli/chunks/{arena-4BMFF6BS.js → arena-ELDZH3CZ.js} +4 -4
- package/dist/cli/chunks/{audit-DNTI453H.js → audit-5MT4T47Z.js} +3 -3
- package/dist/cli/chunks/base-SMCMMVGP.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-TQBQGNC6.js → better-sqlite3-6TGYPC2B.js} +2 -2
- package/dist/cli/chunks/{brain-handler-HY57CNAO.js → brain-handler-HQWZFO52.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-THPMZPHQ.js → branch-enumerator-WVILM4SO.js} +2 -2
- package/dist/cli/chunks/{browser-O6JJOZCK.js → browser-RX5ALU3H.js} +2 -2
- package/dist/cli/chunks/browser-workflow-A2MEZ66K.js +2 -0
- package/dist/cli/chunks/{chunk-CIINJHOX.js → chunk-24OX5TQJ.js} +1 -1
- package/dist/cli/chunks/{chunk-6P4Q4RTC.js → chunk-24QHCVX6.js} +1 -1
- package/dist/cli/chunks/{chunk-U6IOQKCT.js → chunk-2H4XH6FT.js} +2 -2
- package/dist/cli/chunks/{chunk-OGEIHS76.js → chunk-2YZ4G6NW.js} +1 -1
- package/dist/cli/chunks/chunk-32BPDLRZ.js +27 -0
- package/dist/cli/chunks/{chunk-5PLBQZ5J.js → chunk-32GN3JKR.js} +1 -1
- package/dist/cli/chunks/{chunk-AJVLVF7V.js → chunk-3HD7E6HN.js} +2 -2
- package/dist/cli/chunks/{chunk-X7CUI7KH.js → chunk-4D4DENG6.js} +2 -2
- package/dist/cli/chunks/{chunk-E2JLAW3U.js → chunk-4LQFBY5L.js} +6 -6
- package/dist/cli/chunks/{chunk-E3QIQMMN.js → chunk-4NFQLP6R.js} +1 -1
- package/dist/cli/chunks/{chunk-7Y3LXH57.js → chunk-525CFDUE.js} +2 -2
- package/dist/cli/chunks/chunk-5B5QPCNU.js +65 -0
- package/dist/cli/chunks/{chunk-X6Q2N5S5.js → chunk-5JZRZI4S.js} +2 -2
- package/dist/cli/chunks/{chunk-MB4UKUBV.js → chunk-5LAVKGLH.js} +2 -2
- package/dist/cli/chunks/chunk-5NNNEWLS.js +755 -0
- package/dist/cli/chunks/{chunk-NKOLILT7.js → chunk-5PBLPQ5T.js} +2 -2
- package/dist/cli/chunks/chunk-5QO3R3TU.js +6 -0
- package/dist/cli/chunks/{chunk-7T6L3LFN.js → chunk-5SPCGMBB.js} +2 -2
- package/dist/cli/chunks/{chunk-2QLE6NDW.js → chunk-5V3TI2LG.js} +1 -1
- package/dist/cli/chunks/{chunk-A2T56XVL.js → chunk-5VZL4UVN.js} +2 -2
- package/dist/cli/chunks/{chunk-TWOV3I3A.js → chunk-63GMRQ25.js} +1 -1
- package/dist/cli/chunks/{chunk-YGOSSVY5.js → chunk-63ZKI4PX.js} +6 -6
- package/dist/cli/chunks/{chunk-FHPNWHY7.js → chunk-67Z5R7RJ.js} +2 -2
- package/dist/cli/chunks/{chunk-PCQZIAXB.js → chunk-6DPYNAOK.js} +2 -2
- package/dist/cli/chunks/{chunk-WCM6WE7G.js → chunk-6ICX3FEG.js} +3 -3
- package/dist/cli/chunks/{chunk-JB7R77SH.js → chunk-6XXZDV2C.js} +2 -2
- package/dist/cli/chunks/{chunk-FJOIBZUB.js → chunk-6ZBXSOX6.js} +2 -2
- package/dist/cli/chunks/{chunk-WZQADC5R.js → chunk-72XSEQMW.js} +2 -2
- package/dist/cli/chunks/{chunk-AYLEH2UF.js → chunk-7TE5ONQQ.js} +1 -1
- package/dist/cli/chunks/{chunk-7QUSNBAA.js → chunk-A5GBXCP5.js} +2 -2
- package/dist/cli/chunks/{chunk-7724KXM2.js → chunk-AAMLQ2LF.js} +3 -3
- package/dist/cli/chunks/chunk-AG2EWGXS.js +21 -0
- package/dist/cli/chunks/{chunk-2UZBLC5H.js → chunk-AGRV5B3T.js} +2 -2
- package/dist/cli/chunks/{chunk-V6SE2ZU2.js → chunk-AJMJNQMP.js} +1 -1
- package/dist/cli/chunks/{chunk-2HPNGK7A.js → chunk-AR67RJPY.js} +2 -2
- package/dist/cli/chunks/{chunk-G7HGUQAE.js → chunk-ASEOFRIG.js} +2 -2
- package/dist/cli/chunks/{chunk-7TH4PJSU.js → chunk-BEKDKVQT.js} +2 -2
- package/dist/cli/chunks/{chunk-M5JEA6ZY.js → chunk-BY5OF7OH.js} +2 -2
- package/dist/cli/chunks/{chunk-OLUOVNUF.js → chunk-C5FP5GW3.js} +2 -2
- package/dist/cli/chunks/{chunk-R5RRWLRI.js → chunk-C6D5AHBO.js} +2 -2
- package/dist/cli/chunks/{chunk-K7GFYFBO.js → chunk-CAKMOVZ6.js} +2 -2
- package/dist/cli/chunks/{chunk-6NIGSY5L.js → chunk-CEYSYSK5.js} +2 -2
- package/dist/cli/chunks/{chunk-U4TML2VD.js → chunk-CGGUM2YJ.js} +2 -2
- package/dist/cli/chunks/{chunk-YE54T2NQ.js → chunk-CJSHWQXP.js} +2 -2
- package/dist/cli/chunks/{chunk-7SQTLUEN.js → chunk-CRPIYUTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-65EE2EST.js → chunk-D6COXLYE.js} +2 -2
- package/dist/cli/chunks/{chunk-4WLIOPHX.js → chunk-DTMAS2GB.js} +2 -2
- package/dist/cli/chunks/{chunk-E7QTWGPI.js → chunk-DVYHMDFR.js} +470 -411
- package/dist/cli/chunks/chunk-DXD6K2ZP.js +3 -0
- package/dist/cli/chunks/{chunk-HSDWPQQY.js → chunk-E3D4GPLP.js} +3 -3
- package/dist/cli/chunks/{chunk-JJHLGGPP.js → chunk-EA4YQVKS.js} +1 -1
- package/dist/cli/chunks/{chunk-EIEEST4T.js → chunk-EGYE5UPQ.js} +2 -2
- package/dist/cli/chunks/{chunk-O756AOUX.js → chunk-EK7OLYOZ.js} +2 -2
- package/dist/cli/chunks/{chunk-57DRT6UA.js → chunk-F742SZAX.js} +2 -2
- package/dist/cli/chunks/{chunk-6OI5SK7M.js → chunk-FBDVGRSC.js} +1 -1
- package/dist/cli/chunks/{chunk-H3C5FJRH.js → chunk-FDDC72IA.js} +2 -2
- package/dist/cli/chunks/{chunk-IQRPR4KB.js → chunk-FL64OUBA.js} +2 -2
- package/dist/cli/chunks/{chunk-BNG4J3CE.js → chunk-FLNAW7C4.js} +2 -2
- package/dist/cli/chunks/{chunk-C3OIBFAA.js → chunk-G5RHFBAY.js} +2 -2
- package/dist/cli/chunks/{chunk-NPCXGX7N.js → chunk-GAHNO6JJ.js} +2 -2
- package/dist/cli/chunks/{chunk-PNRPVQGI.js → chunk-GFWHUQSF.js} +2 -2
- package/dist/cli/chunks/{chunk-OCN53CCK.js → chunk-GJYHWYXR.js} +2 -2
- package/dist/cli/chunks/{chunk-5Z4MO2F3.js → chunk-GQ6TUIKY.js} +1 -1
- package/dist/cli/chunks/{chunk-N736GLWZ.js → chunk-GSKMOPL7.js} +2 -2
- package/dist/cli/chunks/{chunk-43XHGWYH.js → chunk-HCH4Y6XX.js} +2 -2
- package/dist/cli/chunks/{chunk-QP6GL3O5.js → chunk-HGWXF45W.js} +1 -1
- package/dist/cli/chunks/{chunk-PGN4TARY.js → chunk-HJ6ZGVTB.js} +2 -2
- package/dist/cli/chunks/{chunk-M2TG7VDK.js → chunk-HLUXXCHF.js} +1 -1
- package/dist/cli/chunks/{chunk-UMHFTQTR.js → chunk-HVRRLYX6.js} +4 -4
- package/dist/cli/chunks/{chunk-L7PC675Y.js → chunk-I7MQIM2U.js} +1 -1
- package/dist/cli/chunks/{chunk-JSSU4RIK.js → chunk-IESR7TNB.js} +2 -2
- package/dist/cli/chunks/{chunk-H4LYXLAT.js → chunk-IHRXZZQM.js} +1 -1
- package/dist/cli/chunks/{chunk-HV43NX4A.js → chunk-IOKYCMTJ.js} +6 -6
- package/dist/cli/chunks/{chunk-NZQYJCO6.js → chunk-IOQ6ZQ5W.js} +1 -1
- package/dist/cli/chunks/{chunk-JO26SG47.js → chunk-IOYG4VFL.js} +2 -2
- package/dist/cli/chunks/{chunk-6O63ZTVX.js → chunk-IUBJVHNB.js} +2 -2
- package/dist/cli/chunks/{chunk-XSPMLJCQ.js → chunk-J442IZLE.js} +1 -1
- package/dist/cli/chunks/{chunk-LTGQJYYO.js → chunk-J4ELZNLY.js} +2 -2
- package/dist/cli/chunks/chunk-J7I6PABJ.js +153 -0
- package/dist/cli/chunks/chunk-JDIYMZCQ.js +2 -0
- package/dist/cli/chunks/{chunk-TOJF3ZG4.js → chunk-JHQCRRJI.js} +2 -2
- package/dist/cli/chunks/{chunk-QUZ745UQ.js → chunk-JQ3DYUMS.js} +2 -2
- package/dist/cli/chunks/{chunk-P2TPH3TC.js → chunk-KITOPKRG.js} +2 -2
- package/dist/cli/chunks/{chunk-QNQE3EOH.js → chunk-KKU2QGSJ.js} +2 -2
- package/dist/cli/chunks/chunk-KL7OKSU2.js +4 -0
- package/dist/cli/chunks/{chunk-L5VSLPMW.js → chunk-KNSRL6NO.js} +2 -2
- package/dist/cli/chunks/{chunk-INGXD5IX.js → chunk-KPRCB5LT.js} +2 -2
- package/dist/cli/chunks/{chunk-GY4P7KAI.js → chunk-KQYJ4VQ5.js} +1 -1
- package/dist/cli/chunks/{chunk-Z2S7DNFP.js → chunk-KU2AUFGX.js} +2 -2
- package/dist/cli/chunks/{chunk-O5CEL447.js → chunk-KVF4NXGQ.js} +2 -2
- package/dist/cli/chunks/{chunk-2IJO3657.js → chunk-KXCLACFG.js} +2 -2
- package/dist/cli/chunks/{chunk-ZJGFQK27.js → chunk-L2DWPVNJ.js} +1 -1
- package/dist/cli/chunks/{chunk-E7OR6V3V.js → chunk-L6QSTQME.js} +2 -2
- package/dist/cli/chunks/{chunk-RE6JTSDM.js → chunk-LE4QJREF.js} +1 -1
- package/dist/cli/chunks/{chunk-DSQESXL4.js → chunk-LKTTUHLF.js} +2 -2
- package/dist/cli/chunks/{chunk-YGC5QKQ4.js → chunk-LQLPB2T6.js} +2 -2
- package/dist/cli/chunks/{chunk-VGZOPQQY.js → chunk-LRSX2FJM.js} +1 -1
- package/dist/cli/chunks/chunk-M4FRQ4TE.js +12 -0
- package/dist/cli/chunks/chunk-M7WJCTG3.js +2 -0
- package/dist/cli/chunks/{chunk-56NSE3LJ.js → chunk-MAFQV4U4.js} +2 -2
- package/dist/cli/chunks/{chunk-MKYOE7NE.js → chunk-MD43XRX5.js} +1 -1
- package/dist/cli/chunks/{chunk-3TF27MG5.js → chunk-MI5MFHRA.js} +2 -2
- package/dist/cli/chunks/{chunk-JK6PMLQQ.js → chunk-MO55CVMT.js} +32 -32
- package/dist/cli/chunks/{chunk-X6NJOT3V.js → chunk-N7HL5PHH.js} +1 -1
- package/dist/cli/chunks/chunk-NAEWCFQT.js +14 -0
- package/dist/cli/chunks/{chunk-WUGXXNK4.js → chunk-NDJ7P2EP.js} +1 -1
- package/dist/cli/chunks/{chunk-D5GB5PUU.js → chunk-NO3IV5Q5.js} +1 -1
- package/dist/cli/chunks/{chunk-3XACRXBY.js → chunk-NQXXI77K.js} +2 -2
- package/dist/cli/chunks/{chunk-EC65UZ77.js → chunk-NVEWF4JV.js} +1 -1
- package/dist/cli/chunks/{chunk-JI67T6Q2.js → chunk-NZU4ACBZ.js} +2 -2
- package/dist/cli/chunks/chunk-O5W3FIO6.js +63 -0
- package/dist/cli/chunks/{chunk-YEFTK4HD.js → chunk-OAEE6JWQ.js} +2 -2
- package/dist/cli/chunks/{chunk-JAOCHPYX.js → chunk-OCV2XEWQ.js} +2 -2
- package/dist/cli/chunks/{chunk-IDBA5GK2.js → chunk-P3EYRILV.js} +2 -2
- package/dist/cli/chunks/{chunk-4RPBODN5.js → chunk-PEQDY4BO.js} +2 -2
- package/dist/cli/chunks/{chunk-CPPYZYXC.js → chunk-PF7RBAYL.js} +2 -2
- package/dist/cli/chunks/{chunk-WCPSR4MJ.js → chunk-PHT5N7SC.js} +2 -2
- package/dist/cli/chunks/{chunk-O2AAYJUV.js → chunk-PINSJCM3.js} +1 -1
- package/dist/cli/chunks/{chunk-HEDGFKC5.js → chunk-PPUZWYUG.js} +2 -2
- package/dist/cli/chunks/{chunk-XMCSKYDE.js → chunk-QPEOLAAS.js} +1 -1
- package/dist/cli/chunks/{chunk-7MUO4DEH.js → chunk-QQWBWEJS.js} +18 -18
- package/dist/cli/chunks/{chunk-UFP7SN5V.js → chunk-QVDCVD5D.js} +2 -2
- package/dist/cli/chunks/{chunk-NHEG2DLN.js → chunk-RJIEG3NA.js} +2 -2
- package/dist/cli/chunks/{chunk-KJ5A54ZH.js → chunk-RV74I3YO.js} +2 -2
- package/dist/cli/chunks/{chunk-UDSB3XCG.js → chunk-S75SOOZL.js} +2 -2
- package/dist/cli/chunks/{chunk-BPDAQB3F.js → chunk-SASBO5Y5.js} +2 -2
- package/dist/cli/chunks/{chunk-VJBJRFUO.js → chunk-SDLWKRVL.js} +9 -9
- package/dist/cli/chunks/{chunk-J6ASX536.js → chunk-SHKOCGNK.js} +2 -2
- package/dist/cli/chunks/{chunk-J35JWDJE.js → chunk-SI6DPU5D.js} +1 -1
- package/dist/cli/chunks/{chunk-V3MGY76S.js → chunk-SJ6Y4725.js} +2 -2
- package/dist/cli/chunks/{chunk-FTYRPEJS.js → chunk-SR52XP5F.js} +1 -1
- package/dist/cli/chunks/{chunk-ZUE524JL.js → chunk-SSUAAX3F.js} +2 -2
- package/dist/cli/chunks/{chunk-VG32EEUG.js → chunk-SSYAQZXA.js} +2 -2
- package/dist/cli/chunks/{chunk-HTVGHHX2.js → chunk-SUDMM5SO.js} +2 -2
- package/dist/cli/chunks/{chunk-K2SMP4OD.js → chunk-TIUKLYAI.js} +1 -1
- package/dist/cli/chunks/{chunk-VCVRZD4Y.js → chunk-TVGI32MB.js} +33 -33
- package/dist/cli/chunks/{chunk-CAZM63TP.js → chunk-U2A7NHZA.js} +2 -2
- package/dist/cli/chunks/{chunk-WBC6WB32.js → chunk-UE5ZOZR2.js} +2 -2
- package/dist/cli/chunks/{chunk-BQJ7CV53.js → chunk-UHEOGZLX.js} +12 -12
- package/dist/cli/chunks/chunk-UNGBRZDK.js +12 -0
- package/dist/cli/chunks/{chunk-XN3KCKAM.js → chunk-V5NHZV7S.js} +2 -2
- package/dist/cli/chunks/{chunk-UNYTHZDZ.js → chunk-VJCIEHEF.js} +1 -1
- package/dist/cli/chunks/{chunk-5Y7UFHJD.js → chunk-VMDFFTCK.js} +1 -1
- package/dist/cli/chunks/chunk-VSIKHWZ4.js +29 -0
- package/dist/cli/chunks/{chunk-UPWLMIDY.js → chunk-VWPM27GU.js} +2 -2
- package/dist/cli/chunks/{chunk-USAKCGHC.js → chunk-VXFLJNCA.js} +2 -2
- package/dist/cli/chunks/{chunk-WKI46WWN.js → chunk-W5HQUIML.js} +2 -2
- package/dist/cli/chunks/{chunk-Z54G2YOL.js → chunk-WP4RETKG.js} +2 -2
- package/dist/cli/chunks/{chunk-IRPNEXOU.js → chunk-XIIQ5QTT.js} +2 -2
- package/dist/cli/chunks/{chunk-O32BFQV4.js → chunk-XIQW7EFL.js} +2 -2
- package/dist/cli/chunks/{chunk-TW6Z6W4X.js → chunk-XWUWX7BV.js} +13 -13
- package/dist/cli/chunks/{chunk-57FX3GP6.js → chunk-Y4PFUMOU.js} +1 -1
- package/dist/cli/chunks/chunk-YAPLJR7K.js +2 -0
- package/dist/cli/chunks/{chunk-4T7XV5KQ.js → chunk-YLMNVLDK.js} +1 -1
- package/dist/cli/chunks/{chunk-TSP6SU5V.js → chunk-YNMJEDN5.js} +2 -2
- package/dist/cli/chunks/{chunk-PWQWKYBG.js → chunk-YPBSUGMI.js} +1 -1
- package/dist/cli/chunks/{chunk-QP2HLKTS.js → chunk-YRAX7SFJ.js} +2 -2
- package/dist/cli/chunks/{chunk-O3ERGUXH.js → chunk-YTHTQPWR.js} +1 -1
- package/dist/cli/chunks/{chunk-MR2OPUSA.js → chunk-YU2BDRSD.js} +1 -1
- package/dist/cli/chunks/chunk-ZB3LEFYG.js +2 -0
- package/dist/cli/chunks/{chunk-2W5MQDHM.js → chunk-ZFL436FN.js} +2 -2
- package/dist/cli/chunks/{chunk-7MISCSL5.js → chunk-ZJH5MU2I.js} +2 -2
- package/dist/cli/chunks/{chunk-52KOPIMI.js → chunk-ZQ2XW3IP.js} +2 -2
- package/dist/cli/chunks/chunk-ZR2TKVXQ.js +14 -0
- package/dist/cli/chunks/{ci-UMA2SMNW.js → ci-MFUR4CWV.js} +2 -2
- package/dist/cli/chunks/{ci-config-UQSILJFQ.js → ci-config-PNDLQ6XV.js} +2 -2
- package/dist/cli/chunks/{ci-output-U6YZLLKH.js → ci-output-PFZ4M7NC.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-ATYQP6X2.js → circuit-breaker-5HH6NLZN.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-6YHFD7AN.js → claude-flow-setup-QCKYLGLC.js} +2 -2
- package/dist/cli/chunks/client-MHQRTZM4.js +2 -0
- package/dist/cli/chunks/{cline-installer-EPE7IOZE.js → cline-installer-EASVPFXR.js} +2 -2
- package/dist/cli/chunks/{code-NUEJ4XYO.js → code-UJXDVYRK.js} +4 -3
- package/dist/cli/chunks/{code-index-extractor-D4DBT6OL.js → code-index-extractor-BZJ3UDP4.js} +2 -2
- package/dist/cli/chunks/{codex-installer-633SM4LR.js → codex-installer-XSQZUVOZ.js} +4 -4
- package/dist/cli/chunks/{completions-WUKVIW3L.js → completions-OWOOJFI2.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-F73ACR5H.js → complexity-analyzer-KP5TOHDT.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-QH42TKMS.js → continuedev-installer-IFKQXLHM.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-Y3XC7BTT.js → copilot-installer-IGJ6KGQY.js} +2 -2
- package/dist/cli/chunks/core-handlers-UAK3LLJE.js +2 -0
- package/dist/cli/chunks/{cost-tracker-57QPV7E3.js → cost-tracker-MMDDNKZB.js} +2 -2
- package/dist/cli/chunks/{coverage-IBCHMBCR.js → coverage-LUH2B7NT.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-WTRZQPNQ.js +2 -0
- package/dist/cli/chunks/{cursor-installer-F4UYQHIN.js → cursor-installer-4YLM5GWM.js} +2 -2
- package/dist/cli/chunks/daemon-CAVZ7OFV.js +18 -0
- package/dist/cli/chunks/{daemon-XR4Q6YZF.js → daemon-MZKVM4CJ.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-ZR5ZD3TW.js → dag-attention-scheduler-X4CYW665.js} +2 -2
- package/dist/cli/chunks/{detect-GEGYURLL.js → detect-7BM2XINO.js} +2 -2
- package/dist/cli/chunks/{dist-node-JU3KT2JO.js → dist-node-Y5APLEYB.js} +2 -2
- package/dist/cli/chunks/{domain-handler-7QI3FJGE.js → domain-handler-X3ZRJNAH.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-O2YRM2PD.js → domain-plugins-2UW5KQJB.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-7J3S2OS6.js → domain-transfer-35W4CIBV.js} +2 -2
- package/dist/cli/chunks/dream-EJY24JN6.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-COG4C7ZI.js +3 -0
- package/dist/cli/chunks/embedding-space-SBM2MZD2.js +2 -0
- package/dist/cli/chunks/{eval-RVMCIUOR.js → eval-4QA2SROK.js} +2 -2
- package/dist/cli/chunks/experience-capture-middleware-Z6BF6KYM.js +40 -0
- package/dist/cli/chunks/{fast-paths-QUKPKWKZ.js → fast-paths-FIORX6GN.js} +2 -2
- package/dist/cli/chunks/{feature-flags-K7JXNKJI.js → feature-flags-6LYI2T4G.js} +2 -2
- package/dist/cli/chunks/{feature-flags-5JCSKL2P.js → feature-flags-ZOO7LMIC.js} +2 -2
- package/dist/cli/chunks/file-discovery-UZSFSS4V.js +2 -0
- package/dist/cli/chunks/{fleet-II4Q6HXK.js → fleet-7WF53H4F.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-M7VO2EMS.js → gnn-wrapper-KJ6B7BRM.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-ND5CY26N.js → heartbeat-handler-DEKKMOVW.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-NVR356I7.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-LFMPLUJU.js +2 -0
- package/dist/cli/chunks/hnsw-index-POCPMVJH.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-N3AUUUU7.js → hnsw-legacy-bridge-L27WS27N.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-NZY3E5EN.js → hnswlib-node-4YOQC6L4.js} +2 -2
- package/dist/cli/chunks/{hooks-QVJDTII5.js → hooks-TAOKV4EJ.js} +23 -22
- package/dist/cli/chunks/hybrid-backend-4STAO7CV.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-ZRY6MTDV.js → hypergraph-engine-BODRJLHL.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-56DO4XZQ.js → hypergraph-handler-RKMYJNTU.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-3VIIISBQ.js +2 -0
- package/dist/cli/chunks/{init-guard-DTF4EVUY.js → init-guard-MXHSLSB2.js} +2 -2
- package/dist/cli/chunks/{init-handler-M6CNQHMX.js → init-handler-HUE57IFW.js} +6 -6
- package/dist/cli/chunks/init-wizard-PL6QN6RQ.js +2 -0
- package/dist/cli/chunks/kernel-CCDWT7KS.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-IJN7XKBH.js → kilocode-installer-S333IKYQ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-UKKPGPDC.js → kiro-installer-WM5DLQWC.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-KFOMEN3H.js +2 -0
- package/dist/cli/chunks/{learning-W2HETWQ4.js → learning-LNHMQLH5.js} +3 -3
- package/dist/cli/chunks/{llm-router-Y546K4VX.js → llm-router-EWFXYZZR.js} +4 -4
- package/dist/cli/chunks/llm-router-service-7NBE2EX6.js +2 -0
- package/dist/cli/chunks/{load-MKAB2AXE.js → load-FGYGWVDK.js} +2 -2
- package/dist/cli/chunks/load-test-UNZUWY3F.js +2 -0
- package/dist/cli/chunks/{mcp-AZKUS6K3.js → mcp-2FHNAAOM.js} +2 -2
- package/dist/cli/chunks/{memory-ZDOQN2KU.js → memory-DZMQ73AB.js} +5 -5
- package/dist/cli/chunks/memory-backend-DFGKWA2Q.js +2 -0
- package/dist/cli/chunks/memory-handlers-MP426XRJ.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-WWVXDHG4.js → multi-model-executor-6F2UAEUW.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-YUJNXXWS.js → opencode-installer-XY3BGOTZ.js} +2 -2
- package/dist/cli/chunks/{orchestrator-Z6PWPLRE.js → orchestrator-B4CNKUOS.js} +17 -17
- package/dist/cli/chunks/pattern-null-store-SSVF5TE5.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-TPWPX32U.js → pattern-usage-recorder-R4GUFNMD.js} +2 -2
- package/dist/cli/chunks/{pipeline-4BBGTE4M.js → pipeline-FG5RKVRO.js} +2 -2
- package/dist/cli/chunks/{platform-5GSHXCV5.js → platform-3BT4KEVJ.js} +2 -2
- package/dist/cli/chunks/{plugin-OFDVF5HS.js → plugin-WI4RIN7O.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-NC6MUYGJ.js → prime-radiant-advanced-wasm-7ECDNQFS.js} +2 -2
- package/dist/cli/chunks/project-root-BEANNYWU.js +2 -0
- package/dist/cli/chunks/protocol-executor-FQVIHXZ7.js +2 -0
- package/dist/cli/chunks/{protocol-handler-MPOAAEPA.js → protocol-handler-WNODKPGW.js} +2 -2
- package/dist/cli/chunks/{prove-CDKMAIVM.js → prove-5RHAEPYZ.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-5TFYSE24.js +2 -0
- package/dist/cli/chunks/{quality-ZH4F7R7R.js → quality-WPHR7BGQ.js} +2 -2
- package/dist/cli/chunks/{quality-gate-IDRMW6OE.js → quality-gate-4RKTEZMX.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-Y2OUL7IN.js +2 -0
- package/dist/cli/chunks/real-embeddings-OXLYU7JW.js +2 -0
- package/dist/cli/chunks/{ref-validation-Z5GCGVXK.js → ref-validation-TPAWHOHH.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-IZ2S7PH2.js → roocode-installer-7AVHFNDI.js} +2 -2
- package/dist/cli/chunks/router-EP34O3KB.js +2 -0
- package/dist/cli/chunks/routing-feedback-FJCRKXNG.js +2 -0
- package/dist/cli/chunks/{routing-handler-NAX35VUW.js → routing-handler-YKEDVJSH.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-5YW2SOFF.js → ruvector-commands-JUAMM354.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-ILITJSFG.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-XF6W4C2N.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-CMKG56AR.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-7YFW6S4Y.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-IPGCAT6C.js → rvf-store-integrity-VJDUIRTX.js} +2 -2
- package/dist/cli/chunks/safe-db-TCAU4FUT.js +2 -0
- package/dist/cli/chunks/schedule-NB5KV435.js +2 -0
- package/dist/cli/chunks/scheduler-JKXGKVK6.js +2 -0
- package/dist/cli/chunks/{security-3IH4BO5Z.js → security-ORDN3RD2.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-ABY7PAY2.js → shared-rvf-adapter-CF4BCIO7.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-6KENLN2W.js → shared-rvf-dual-writer-C32UBR6D.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-IXCNZRTW.js +2 -0
- package/dist/cli/chunks/{standalone-memory-RLFAUGOW.js → standalone-memory-OXRJYZXN.js} +2 -2
- package/dist/cli/chunks/{status-handler-FCOZBPE5.js → status-handler-BCX5D4HY.js} +2 -2
- package/dist/cli/chunks/{structural-health-4RDA5UUM.js → structural-health-LFG7RUU6.js} +2 -2
- package/dist/cli/chunks/sync-OSF7C2NL.js +2 -0
- package/dist/cli/chunks/{sync-KGEEXXCC.js → sync-YJEE2K2L.js} +2 -2
- package/dist/cli/chunks/task-handler-6LXKPTXJ.js +64 -0
- package/dist/cli/chunks/{task-handlers-6H7L2UT4.js → task-handlers-CILP36I7.js} +4 -4
- package/dist/cli/chunks/{test-S7IG6EIX.js → test-SD457QJ6.js} +4 -4
- package/dist/cli/chunks/test-runner-process-VKD65QQU.js +2 -0
- package/dist/cli/chunks/{test-scheduling-7XYXI4L2.js → test-scheduling-ISI2O4Q5.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-VUELSBOS.js +2 -0
- package/dist/cli/chunks/{token-usage-Y2YTPOFE.js → token-usage-XOC5KG7S.js} +2 -2
- package/dist/cli/chunks/{transformers-UCJ3HHHC.js → transformers-LSLQAARK.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-YAIPHRIL.js +2 -0
- package/dist/cli/chunks/{types-6CMFPETH.js → types-5BLCGLCR.js} +2 -2
- package/dist/cli/chunks/unified-memory-GI76TXFV.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-GXJ5BTZO.js +2 -0
- package/dist/cli/chunks/unified-persistence-OP7FDQPD.js +2 -0
- package/dist/cli/chunks/{upgrade-K25DN6WU.js → upgrade-RQJYLK3J.js} +2 -2
- package/dist/cli/chunks/{validate-T4V3TBY3.js → validate-QBHWXXCK.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-XSRC576T.js → validate-swarm-IKXBKFB5.js} +2 -2
- package/dist/cli/chunks/visual-security-GZ2MOKWB.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-YOZXHRTN.js → web-tree-sitter-ZF6FIE5R.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-ITPU2IYL.js → windsurf-installer-HQGDZT5D.js} +2 -2
- package/dist/cli/chunks/witness-chain-DCHCAMSQ.js +2 -0
- package/dist/cli/chunks/witness-chain-P3XXXA62.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-PUX2NFDL.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-DTDSVKOG.js → witness-chain-verifier-PX2OQ6XT.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-EWACWGAW.js → witness-key-manager-RXYQNFJB.js} +2 -2
- package/dist/cli/chunks/{workflow-ZIQ4FV42.js → workflow-FBKCA4H6.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-P2APAJAA.js +2 -0
- package/dist/cli/chunks/wrappers-TWSKBTWD.js +2 -0
- package/dist/cli/commands/code.js +4 -0
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +10 -2
- package/dist/cli/handlers/task-handler.d.ts +5 -0
- package/dist/cli/handlers/task-handler.js +21 -1
- package/dist/cli/utils/task-result.d.ts +11 -0
- package/dist/cli/utils/task-result.js +39 -0
- package/dist/coordination/handlers/test-execution-handlers.js +92 -58
- package/dist/coordination/mincut/mincut-persistence.js +29 -25
- package/dist/domains/code-intelligence/coordinator.d.ts +4 -0
- package/dist/domains/code-intelligence/coordinator.js +46 -13
- package/dist/domains/code-intelligence/interfaces.d.ts +10 -1
- package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +32 -7
- package/dist/domains/code-intelligence/services/semantic-analyzer.js +112 -53
- package/dist/domains/learning-optimization/services/learning-coordinator.js +1 -1
- package/dist/domains/quality-assessment/coordinator.js +2 -1
- package/dist/domains/test-execution/coordinator.js +10 -5
- package/dist/domains/test-execution/interfaces.d.ts +12 -0
- package/dist/domains/test-execution/plugin.js +6 -2
- package/dist/domains/test-execution/services/retry-handler.d.ts +2 -0
- package/dist/domains/test-execution/services/retry-handler.js +14 -9
- package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
- package/dist/domains/test-execution/services/test-executor.js +28 -9
- package/dist/domains/visual-accessibility/coordinator.d.ts +15 -7
- package/dist/domains/visual-accessibility/coordinator.js +15 -7
- package/dist/domains/visual-accessibility/interfaces.d.ts +27 -3
- package/dist/domains/visual-accessibility/services/accessibility-contrast.d.ts +39 -0
- package/dist/domains/visual-accessibility/services/accessibility-contrast.js +93 -0
- package/dist/domains/visual-accessibility/services/accessibility-tester-browser.d.ts +18 -3
- package/dist/domains/visual-accessibility/services/accessibility-tester-browser.js +50 -40
- package/dist/domains/visual-accessibility/services/accessibility-tester-checks.d.ts +27 -0
- package/dist/domains/visual-accessibility/services/accessibility-tester-checks.js +137 -0
- package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +5 -0
- package/dist/domains/visual-accessibility/services/accessibility-tester.js +43 -24
- package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.d.ts +2 -3
- package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.js +8 -14
- package/dist/feedback/coverage-learner.js +13 -9
- package/dist/feedback/test-outcome-tracker.js +13 -9
- package/dist/governance/witness-chain.d.ts +5 -0
- package/dist/governance/witness-chain.js +22 -6
- package/dist/init/init-wizard-hooks.d.ts +1 -1
- package/dist/init/init-wizard-hooks.js +7 -8
- package/dist/init/phases/08-mcp.js +9 -0
- package/dist/init/settings-merge.d.ts +13 -0
- package/dist/init/settings-merge.js +49 -2
- package/dist/integrations/agent-booster-wasm/agent_booster_wasm.js +849 -0
- package/dist/integrations/agent-booster-wasm/agent_booster_wasm_bg.wasm +0 -0
- package/dist/integrations/agent-booster-wasm/index.d.ts +8 -0
- package/dist/integrations/agent-booster-wasm/index.js +25 -2
- package/dist/integrations/agent-booster-wasm/package.json +16 -0
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +22 -0
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +115 -45
- package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.d.ts +6 -0
- package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.js +51 -33
- package/dist/integrations/agentic-flow/reasoning-bank/trajectory-tracker.js +17 -9
- package/dist/integrations/embeddings/cache/EmbeddingCache.d.ts +8 -0
- package/dist/integrations/embeddings/cache/EmbeddingCache.js +24 -10
- package/dist/integrations/ruvector/delta-tracker.d.ts +11 -0
- package/dist/integrations/ruvector/delta-tracker.js +16 -0
- package/dist/integrations/ruvector/sona-persistence.d.ts +10 -0
- package/dist/integrations/ruvector/sona-persistence.js +49 -24
- package/dist/kernel/unified-memory.d.ts +24 -0
- package/dist/kernel/unified-memory.js +63 -8
- package/dist/learning/aqe-learning-engine.js +1 -1
- package/dist/learning/dream/dream-engine.d.ts +3 -2
- package/dist/learning/dream/dream-engine.js +42 -24
- package/dist/learning/dream/dream-lock-retry.d.ts +38 -0
- package/dist/learning/dream/dream-lock-retry.js +66 -0
- package/dist/learning/dream/speculative-dreamer.js +1 -1
- package/dist/learning/embed-and-insert-pattern.js +4 -2
- package/dist/learning/embedder-endpoint-client.d.ts +31 -0
- package/dist/learning/embedder-endpoint-client.js +103 -10
- package/dist/learning/embedding-space.d.ts +12 -0
- package/dist/learning/embedding-space.js +17 -0
- package/dist/learning/experience-capture-middleware.js +25 -13
- package/dist/learning/experience-capture.js +1 -1
- package/dist/learning/experience-consolidation.d.ts +18 -0
- package/dist/learning/experience-consolidation.js +55 -8
- package/dist/learning/experience-space-verification.d.ts +71 -0
- package/dist/learning/experience-space-verification.js +147 -0
- package/dist/learning/pattern-lifecycle.d.ts +40 -4
- package/dist/learning/pattern-lifecycle.js +153 -76
- package/dist/learning/pattern-null-store.d.ts +5 -0
- package/dist/learning/pattern-null-store.js +8 -0
- package/dist/learning/pattern-promotion.js +6 -3
- package/dist/learning/pattern-store.d.ts +6 -0
- package/dist/learning/pattern-store.js +19 -6
- package/dist/learning/qe-reasoning-bank.js +2 -2
- package/dist/learning/real-embeddings.js +3 -1
- package/dist/learning/real-qe-reasoning-bank.d.ts +5 -0
- package/dist/learning/real-qe-reasoning-bank.js +77 -47
- package/dist/learning/rvf-pattern-store.js +6 -2
- package/dist/learning/sqlite-persistence.d.ts +6 -0
- package/dist/learning/sqlite-persistence.js +10 -0
- package/dist/mcp/bundle.js +642 -571
- package/dist/mcp/entry.js +4 -0
- package/dist/mcp/handlers/domain-handler-configs.js +2 -0
- package/dist/mcp/handlers/trajectory-judge.js +1 -1
- package/dist/mcp/protocol-server.js +1 -0
- package/dist/mcp/tools/visual-accessibility/index.js +8 -2
- package/dist/mcp/types.d.ts +6 -0
- package/dist/optimization/session-cache.d.ts +17 -1
- package/dist/optimization/session-cache.js +40 -36
- package/dist/planning/goap-planner.d.ts +6 -0
- package/dist/planning/goap-planner.js +35 -19
- package/dist/planning/plan-executor.js +24 -15
- package/dist/routing/co-execution-repository.js +12 -9
- package/dist/routing/routing-feedback.d.ts +8 -0
- package/dist/routing/routing-feedback.js +46 -24
- package/dist/routing/routing-outcomes-migration.js +7 -2
- package/dist/shared/llm/spend-ledger.d.ts +9 -0
- package/dist/shared/llm/spend-ledger.js +64 -39
- package/dist/shared/sqlite-lock-wait.d.ts +27 -0
- package/dist/shared/sqlite-lock-wait.js +37 -0
- package/dist/shared/sqlite-write-queue.d.ts +28 -0
- package/dist/shared/sqlite-write-queue.js +38 -0
- package/dist/shared/test-runner-project.d.ts +69 -0
- package/dist/shared/test-runner-project.js +186 -0
- package/dist/skills/security-visual-testing/index.d.ts +3 -1
- package/dist/skills/security-visual-testing/index.js +49 -35
- package/dist/skills/security-visual-testing/types.d.ts +19 -3
- package/dist/workers/workers/heartbeat-scheduler.js +5 -5
- package/dist/workers/workers/learning-consolidation.js +8 -7
- package/package.json +4 -2
- package/dist/cli/chunks/adapter-23KA2YW7.js +0 -2
- package/dist/cli/chunks/agent-booster-wasm-2DLAEZK6.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-MUICAXW5.js +0 -2
- package/dist/cli/chunks/base-XPWGYDKD.js +0 -2
- package/dist/cli/chunks/browser-workflow-UMQVBVGK.js +0 -2
- package/dist/cli/chunks/chunk-3FITMWWJ.js +0 -21
- package/dist/cli/chunks/chunk-ARRBXCII.js +0 -4
- package/dist/cli/chunks/chunk-BBYJBZHG.js +0 -14
- package/dist/cli/chunks/chunk-BM3EJLMV.js +0 -153
- package/dist/cli/chunks/chunk-D3ZZ2NLL.js +0 -62
- package/dist/cli/chunks/chunk-DLTB5KCR.js +0 -2
- package/dist/cli/chunks/chunk-DRLSJJIC.js +0 -6
- package/dist/cli/chunks/chunk-HAYKLXCT.js +0 -744
- package/dist/cli/chunks/chunk-HHBF2BZC.js +0 -65
- package/dist/cli/chunks/chunk-K7RT6ITZ.js +0 -2
- package/dist/cli/chunks/chunk-L752CNG3.js +0 -13
- package/dist/cli/chunks/chunk-MQXWG55U.js +0 -12
- package/dist/cli/chunks/chunk-WM2QRIRD.js +0 -14
- package/dist/cli/chunks/chunk-WRC3HLUY.js +0 -29
- package/dist/cli/chunks/chunk-XTZGAG6P.js +0 -27
- package/dist/cli/chunks/chunk-YKQWIXUY.js +0 -2
- package/dist/cli/chunks/client-E43GWLQH.js +0 -2
- package/dist/cli/chunks/core-handlers-R5A3SQDY.js +0 -2
- package/dist/cli/chunks/cross-domain-router-LLYVPZF6.js +0 -2
- package/dist/cli/chunks/daemon-BYYPIJ7G.js +0 -18
- package/dist/cli/chunks/dream-6C4NURSE.js +0 -2
- package/dist/cli/chunks/embed-and-insert-pattern-URES5Q6J.js +0 -3
- package/dist/cli/chunks/experience-capture-middleware-SYJQSBKE.js +0 -40
- package/dist/cli/chunks/file-discovery-J5IE5KP7.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-FC5PBTMN.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-47UIVOBG.js +0 -2
- package/dist/cli/chunks/hnsw-index-3AKVLOZQ.js +0 -2
- package/dist/cli/chunks/hybrid-backend-YAOSNX47.js +0 -2
- package/dist/cli/chunks/impact-analyzer-4FMJXM4M.js +0 -2
- package/dist/cli/chunks/init-wizard-RTLCRWDT.js +0 -2
- package/dist/cli/chunks/kernel-2OWIGGGT.js +0 -2
- package/dist/cli/chunks/knowledge-graph-25XXKDJN.js +0 -2
- package/dist/cli/chunks/llm-router-service-G3EIN4UB.js +0 -2
- package/dist/cli/chunks/load-test-D6QYNIVT.js +0 -2
- package/dist/cli/chunks/memory-backend-LDFFZMEQ.js +0 -2
- package/dist/cli/chunks/memory-handlers-3SQVY7FE.js +0 -2
- package/dist/cli/chunks/pattern-null-store-KDVRM7PW.js +0 -2
- package/dist/cli/chunks/project-root-DDGBWDP6.js +0 -2
- package/dist/cli/chunks/protocol-executor-KBOLLCWA.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-GRXBT7FC.js +0 -2
- package/dist/cli/chunks/queen-coordinator-L2QWMJ5Q.js +0 -2
- package/dist/cli/chunks/real-embeddings-I2UVNNB3.js +0 -2
- package/dist/cli/chunks/router-FT5WJPUH.js +0 -2
- package/dist/cli/chunks/routing-feedback-EO2MKOUX.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-WHBFQJVU.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-YT3APF2I.js +0 -2
- package/dist/cli/chunks/rvf-migration-coordinator-VUIZHTVG.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-37PUFKQD.js +0 -2
- package/dist/cli/chunks/safe-db-TDZKUOZJ.js +0 -2
- package/dist/cli/chunks/schedule-CRKTRY2A.js +0 -2
- package/dist/cli/chunks/scheduler-6ZBDVQWN.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-FFJQAIKW.js +0 -2
- package/dist/cli/chunks/sync-54LUAUTK.js +0 -2
- package/dist/cli/chunks/task-handler-K3OXHYKU.js +0 -62
- package/dist/cli/chunks/test-runner-process-OTQDAJLN.js +0 -2
- package/dist/cli/chunks/token-bootstrap-3QMABE45.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-D6JTTHTP.js +0 -2
- package/dist/cli/chunks/unified-memory-QARWQKJ2.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-LHY3DXCP.js +0 -2
- package/dist/cli/chunks/unified-persistence-WEYYGLHM.js +0 -2
- package/dist/cli/chunks/visual-security-O4ALMCXQ.js +0 -2
- package/dist/cli/chunks/witness-chain-B3YW5NMS.js +0 -2
- package/dist/cli/chunks/witness-chain-PIYR72HJ.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-YUG7E3UX.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-3ZN2BCGY.js +0 -2
- package/dist/cli/chunks/wrappers-PW2O27LL.js +0 -2
|
@@ -15,6 +15,7 @@ import { tierAllowsPromotion, DEFAULT_PROVENANCE_TIER } from './provenance-tier.
|
|
|
15
15
|
import { reExecutePathGate, pathGateFingerprint, pathSealedHash, verifyPathPromotion, } from '../validation/gate-reexecute.js';
|
|
16
16
|
import { LoggerFactory } from '../logging/index.js';
|
|
17
17
|
import { isTemporalCompressionEnabled } from '../integrations/ruvector/feature-flags.js';
|
|
18
|
+
import { writeWhenUnlockedOn } from '../shared/sqlite-write-queue.js';
|
|
18
19
|
const logger = LoggerFactory.create('pattern-lifecycle');
|
|
19
20
|
/**
|
|
20
21
|
* Default lifecycle configuration
|
|
@@ -100,69 +101,7 @@ export class PatternLifecycleManager {
|
|
|
100
101
|
this.db = db;
|
|
101
102
|
this.config = { ...DEFAULT_LIFECYCLE_CONFIG, ...config };
|
|
102
103
|
this.asymmetricEngine = new AsymmetricLearningEngine(this.config.asymmetricLearning);
|
|
103
|
-
this.
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Ensure required schema extensions exist
|
|
107
|
-
*/
|
|
108
|
-
ensureSchema() {
|
|
109
|
-
// Add deprecated_at column if not exists
|
|
110
|
-
try {
|
|
111
|
-
this.db.prepare(`
|
|
112
|
-
SELECT deprecated_at FROM qe_patterns LIMIT 1
|
|
113
|
-
`).get();
|
|
114
|
-
}
|
|
115
|
-
catch (e) {
|
|
116
|
-
// Column doesn't exist, add it
|
|
117
|
-
logger.debug('Adding missing deprecated_at column', { error: e instanceof Error ? e.message : String(e) });
|
|
118
|
-
this.db.exec(`
|
|
119
|
-
ALTER TABLE qe_patterns ADD COLUMN deprecated_at TEXT DEFAULT NULL
|
|
120
|
-
`);
|
|
121
|
-
console.log('[PatternLifecycle] Added deprecated_at column to qe_patterns');
|
|
122
|
-
}
|
|
123
|
-
// Add consecutive_failures column if not exists
|
|
124
|
-
try {
|
|
125
|
-
this.db.prepare(`
|
|
126
|
-
SELECT consecutive_failures FROM qe_patterns LIMIT 1
|
|
127
|
-
`).get();
|
|
128
|
-
}
|
|
129
|
-
catch (e) {
|
|
130
|
-
logger.debug('Adding missing consecutive_failures column', { error: e instanceof Error ? e.message : String(e) });
|
|
131
|
-
this.db.exec(`
|
|
132
|
-
ALTER TABLE qe_patterns ADD COLUMN consecutive_failures INTEGER DEFAULT 0
|
|
133
|
-
`);
|
|
134
|
-
console.log('[PatternLifecycle] Added consecutive_failures column to qe_patterns');
|
|
135
|
-
}
|
|
136
|
-
// Add promotion_date column if not exists
|
|
137
|
-
try {
|
|
138
|
-
this.db.prepare(`
|
|
139
|
-
SELECT promotion_date FROM qe_patterns LIMIT 1
|
|
140
|
-
`).get();
|
|
141
|
-
}
|
|
142
|
-
catch (e) {
|
|
143
|
-
logger.debug('Adding missing promotion_date column', { error: e instanceof Error ? e.message : String(e) });
|
|
144
|
-
this.db.exec(`
|
|
145
|
-
ALTER TABLE qe_patterns ADD COLUMN promotion_date TEXT DEFAULT NULL
|
|
146
|
-
`);
|
|
147
|
-
console.log('[PatternLifecycle] Added promotion_date column to qe_patterns');
|
|
148
|
-
}
|
|
149
|
-
// ADR-121: provenance_tier — additive, conservative-default migration.
|
|
150
|
-
// The DEFAULT backfills every existing row as 'proxy:structural', which can
|
|
151
|
-
// never over-credit legacy history. Rows re-derived from execution evidence
|
|
152
|
-
// are re-tiered upward through the normal write path (never up-tiered here).
|
|
153
|
-
// Distinct from the lifecycle `tier` (short-term/long-term) column.
|
|
154
|
-
try {
|
|
155
|
-
this.db.prepare(`
|
|
156
|
-
SELECT provenance_tier FROM qe_patterns LIMIT 1
|
|
157
|
-
`).get();
|
|
158
|
-
}
|
|
159
|
-
catch (e) {
|
|
160
|
-
logger.debug('Adding missing provenance_tier column', { error: e instanceof Error ? e.message : String(e) });
|
|
161
|
-
this.db.exec(`
|
|
162
|
-
ALTER TABLE qe_patterns ADD COLUMN provenance_tier TEXT DEFAULT '${DEFAULT_PROVENANCE_TIER}'
|
|
163
|
-
`);
|
|
164
|
-
console.log(`[PatternLifecycle] Added provenance_tier column to qe_patterns (backfilled '${DEFAULT_PROVENANCE_TIER}')`);
|
|
165
|
-
}
|
|
104
|
+
ensurePatternLifecycleSchema(this.db);
|
|
166
105
|
}
|
|
167
106
|
// ============================================================================
|
|
168
107
|
// Experience Extraction
|
|
@@ -431,6 +370,14 @@ Pattern extracted from ${exp.count} successful experiences.`;
|
|
|
431
370
|
* Promote pattern to long-term tier
|
|
432
371
|
*/
|
|
433
372
|
promotePattern(patternId) {
|
|
373
|
+
if (!this.promotionVerified(patternId))
|
|
374
|
+
return false;
|
|
375
|
+
this.writePromotion(patternId);
|
|
376
|
+
console.log(`[PatternLifecycle] Promoted pattern ${patternId} to long-term`);
|
|
377
|
+
return true;
|
|
378
|
+
}
|
|
379
|
+
/** Whether `patternId` passes the advisory check and the frozen promote rule. */
|
|
380
|
+
promotionVerified(patternId) {
|
|
434
381
|
const check = this.checkPromotion(patternId);
|
|
435
382
|
if (!check.shouldPromote) {
|
|
436
383
|
return false;
|
|
@@ -465,6 +412,9 @@ Pattern extracted from ${exp.count} successful experiences.`;
|
|
|
465
412
|
console.warn(`[PatternLifecycle] Refusing to promote ${patternId}: ${rerun.reason} (${verdict.reason})`);
|
|
466
413
|
return false;
|
|
467
414
|
}
|
|
415
|
+
return true;
|
|
416
|
+
}
|
|
417
|
+
writePromotion(patternId) {
|
|
468
418
|
this.db.prepare(`
|
|
469
419
|
UPDATE qe_patterns
|
|
470
420
|
SET tier = 'long-term',
|
|
@@ -473,17 +423,12 @@ Pattern extracted from ${exp.count} successful experiences.`;
|
|
|
473
423
|
updated_at = datetime('now')
|
|
474
424
|
WHERE id = ?
|
|
475
425
|
`).run(patternId);
|
|
476
|
-
console.log(`[PatternLifecycle] Promoted pattern ${patternId} to long-term`);
|
|
477
|
-
return true;
|
|
478
426
|
}
|
|
479
427
|
/**
|
|
480
428
|
* Promote all eligible patterns
|
|
481
429
|
*/
|
|
482
430
|
promoteEligiblePatterns() {
|
|
483
|
-
const shortTermPatterns = this.
|
|
484
|
-
SELECT id FROM qe_patterns
|
|
485
|
-
WHERE tier = 'short-term' AND deprecated_at IS NULL
|
|
486
|
-
`).all();
|
|
431
|
+
const shortTermPatterns = this.selectShortTermPatternIds();
|
|
487
432
|
let promoted = 0;
|
|
488
433
|
for (const { id } of shortTermPatterns) {
|
|
489
434
|
if (this.promotePattern(id)) {
|
|
@@ -492,6 +437,29 @@ Pattern extracted from ${exp.count} successful experiences.`;
|
|
|
492
437
|
}
|
|
493
438
|
return { promoted, checked: shortTermPatterns.length };
|
|
494
439
|
}
|
|
440
|
+
/**
|
|
441
|
+
* promoteEligiblePatterns for the MCP server's background workers (#1283):
|
|
442
|
+
* each promotion is queued on the shared connection, so a locked memory.db
|
|
443
|
+
* does not freeze the event loop. Same selection, rule and result.
|
|
444
|
+
*/
|
|
445
|
+
async promoteEligiblePatternsWhenUnlocked() {
|
|
446
|
+
const shortTermPatterns = this.selectShortTermPatternIds();
|
|
447
|
+
let promoted = 0;
|
|
448
|
+
for (const { id } of shortTermPatterns) {
|
|
449
|
+
if (!this.promotionVerified(id))
|
|
450
|
+
continue;
|
|
451
|
+
await writeWhenUnlockedOn(this.db, () => this.writePromotion(id));
|
|
452
|
+
console.log(`[PatternLifecycle] Promoted pattern ${id} to long-term`);
|
|
453
|
+
promoted++;
|
|
454
|
+
}
|
|
455
|
+
return { promoted, checked: shortTermPatterns.length };
|
|
456
|
+
}
|
|
457
|
+
selectShortTermPatternIds() {
|
|
458
|
+
return this.db.prepare(`
|
|
459
|
+
SELECT id FROM qe_patterns
|
|
460
|
+
WHERE tier = 'short-term' AND deprecated_at IS NULL
|
|
461
|
+
`).all();
|
|
462
|
+
}
|
|
495
463
|
/**
|
|
496
464
|
* Run a promotion sweep — convenience alias for pre-compaction hook.
|
|
497
465
|
* Iterates short-term patterns, checks promotion criteria, promotes eligible ones.
|
|
@@ -570,6 +538,12 @@ Pattern extracted from ${exp.count} successful experiences.`;
|
|
|
570
538
|
return false;
|
|
571
539
|
}
|
|
572
540
|
const actualReason = reason || check.reason || 'manual';
|
|
541
|
+
this.writeDeprecation(patternId, actualReason);
|
|
542
|
+
console.log(`[PatternLifecycle] Deprecated pattern ${patternId}: ${actualReason}`);
|
|
543
|
+
return true;
|
|
544
|
+
}
|
|
545
|
+
/** Soft-delete a pattern and record why, in one unit so a queued retry repeats both. */
|
|
546
|
+
writeDeprecation(patternId, actualReason) {
|
|
573
547
|
// Move to deprecated state (soft delete)
|
|
574
548
|
this.db.prepare(`
|
|
575
549
|
UPDATE qe_patterns
|
|
@@ -593,17 +567,12 @@ Pattern extracted from ${exp.count} successful experiences.`;
|
|
|
593
567
|
WHERE id = ?
|
|
594
568
|
`).run(JSON.stringify({ deprecation_metadata: metadata }), patternId);
|
|
595
569
|
}
|
|
596
|
-
console.log(`[PatternLifecycle] Deprecated pattern ${patternId}: ${actualReason}`);
|
|
597
|
-
return true;
|
|
598
570
|
}
|
|
599
571
|
/**
|
|
600
572
|
* Deprecate all patterns that meet deprecation criteria
|
|
601
573
|
*/
|
|
602
574
|
deprecateStalePatterns() {
|
|
603
|
-
const activePatterns = this.
|
|
604
|
-
SELECT id FROM qe_patterns
|
|
605
|
-
WHERE deprecated_at IS NULL
|
|
606
|
-
`).all();
|
|
575
|
+
const activePatterns = this.selectActivePatternIds();
|
|
607
576
|
let deprecated = 0;
|
|
608
577
|
for (const { id } of activePatterns) {
|
|
609
578
|
const check = this.checkDeprecation(id);
|
|
@@ -614,6 +583,30 @@ Pattern extracted from ${exp.count} successful experiences.`;
|
|
|
614
583
|
}
|
|
615
584
|
return { deprecated, checked: activePatterns.length };
|
|
616
585
|
}
|
|
586
|
+
/**
|
|
587
|
+
* deprecateStalePatterns for the MCP server's background workers (#1283):
|
|
588
|
+
* each deprecation is queued on the shared connection. Same criteria and result.
|
|
589
|
+
*/
|
|
590
|
+
async deprecateStalePatternsWhenUnlocked() {
|
|
591
|
+
const activePatterns = this.selectActivePatternIds();
|
|
592
|
+
let deprecated = 0;
|
|
593
|
+
for (const { id } of activePatterns) {
|
|
594
|
+
const check = this.checkDeprecation(id);
|
|
595
|
+
if (check.shouldDeprecate) {
|
|
596
|
+
const actualReason = check.reason || 'manual';
|
|
597
|
+
await writeWhenUnlockedOn(this.db, () => this.writeDeprecation(id, actualReason));
|
|
598
|
+
console.log(`[PatternLifecycle] Deprecated pattern ${id}: ${actualReason}`);
|
|
599
|
+
deprecated++;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
return { deprecated, checked: activePatterns.length };
|
|
603
|
+
}
|
|
604
|
+
selectActivePatternIds() {
|
|
605
|
+
return this.db.prepare(`
|
|
606
|
+
SELECT id FROM qe_patterns
|
|
607
|
+
WHERE deprecated_at IS NULL
|
|
608
|
+
`).all();
|
|
609
|
+
}
|
|
617
610
|
// ============================================================================
|
|
618
611
|
// Confidence Decay
|
|
619
612
|
// ============================================================================
|
|
@@ -621,6 +614,17 @@ Pattern extracted from ${exp.count} successful experiences.`;
|
|
|
621
614
|
* Apply confidence decay to patterns that haven't been used recently
|
|
622
615
|
*/
|
|
623
616
|
applyConfidenceDecay(daysSinceLastRun = 1) {
|
|
617
|
+
return this.writeConfidenceDecay(daysSinceLastRun, Date.now());
|
|
618
|
+
}
|
|
619
|
+
/**
|
|
620
|
+
* applyConfidenceDecay for the MCP server's background workers (#1283): the
|
|
621
|
+
* decay UPDATE is queued on the shared connection. Same cutoff and result.
|
|
622
|
+
*/
|
|
623
|
+
async applyConfidenceDecayWhenUnlocked(daysSinceLastRun = 1) {
|
|
624
|
+
const now = Date.now();
|
|
625
|
+
return writeWhenUnlockedOn(this.db, () => this.writeConfidenceDecay(daysSinceLastRun, now));
|
|
626
|
+
}
|
|
627
|
+
writeConfidenceDecay(daysSinceLastRun, now) {
|
|
624
628
|
// EWC++ (#510 item 6): per-row importance-weighted decay. The base decay
|
|
625
629
|
// amount is shielded by `EWC_DECAY_PROTECTION * importance`, where
|
|
626
630
|
// importance = success_rate (clamped) once usage_count >= the trust
|
|
@@ -629,7 +633,7 @@ Pattern extracted from ${exp.count} successful experiences.`;
|
|
|
629
633
|
// so it isn't forgotten as fast as new low-value patterns.
|
|
630
634
|
const baseDecayAmount = this.config.confidenceDecayRate * daysSinceLastRun;
|
|
631
635
|
// Get patterns that haven't been used in the decay period
|
|
632
|
-
const cutoffTime =
|
|
636
|
+
const cutoffTime = now - (daysSinceLastRun * 24 * 60 * 60 * 1000);
|
|
633
637
|
const result = this.db.prepare(`
|
|
634
638
|
UPDATE qe_patterns
|
|
635
639
|
SET confidence = MAX(?, confidence * (1 - ? * (1 - ? *
|
|
@@ -931,6 +935,79 @@ Pattern extracted from ${exp.count} successful experiences.`;
|
|
|
931
935
|
// ============================================================================
|
|
932
936
|
// Factory
|
|
933
937
|
// ============================================================================
|
|
938
|
+
/**
|
|
939
|
+
* Add the lifecycle columns to qe_patterns if they are missing. Only writes
|
|
940
|
+
* (ALTER TABLE) on a database that predates them.
|
|
941
|
+
*/
|
|
942
|
+
function ensurePatternLifecycleSchema(db) {
|
|
943
|
+
// Add deprecated_at column if not exists
|
|
944
|
+
try {
|
|
945
|
+
db.prepare(`
|
|
946
|
+
SELECT deprecated_at FROM qe_patterns LIMIT 1
|
|
947
|
+
`).get();
|
|
948
|
+
}
|
|
949
|
+
catch (e) {
|
|
950
|
+
// Column doesn't exist, add it
|
|
951
|
+
logger.debug('Adding missing deprecated_at column', { error: e instanceof Error ? e.message : String(e) });
|
|
952
|
+
db.exec(`
|
|
953
|
+
ALTER TABLE qe_patterns ADD COLUMN deprecated_at TEXT DEFAULT NULL
|
|
954
|
+
`);
|
|
955
|
+
console.log('[PatternLifecycle] Added deprecated_at column to qe_patterns');
|
|
956
|
+
}
|
|
957
|
+
// Add consecutive_failures column if not exists
|
|
958
|
+
try {
|
|
959
|
+
db.prepare(`
|
|
960
|
+
SELECT consecutive_failures FROM qe_patterns LIMIT 1
|
|
961
|
+
`).get();
|
|
962
|
+
}
|
|
963
|
+
catch (e) {
|
|
964
|
+
logger.debug('Adding missing consecutive_failures column', { error: e instanceof Error ? e.message : String(e) });
|
|
965
|
+
db.exec(`
|
|
966
|
+
ALTER TABLE qe_patterns ADD COLUMN consecutive_failures INTEGER DEFAULT 0
|
|
967
|
+
`);
|
|
968
|
+
console.log('[PatternLifecycle] Added consecutive_failures column to qe_patterns');
|
|
969
|
+
}
|
|
970
|
+
// Add promotion_date column if not exists
|
|
971
|
+
try {
|
|
972
|
+
db.prepare(`
|
|
973
|
+
SELECT promotion_date FROM qe_patterns LIMIT 1
|
|
974
|
+
`).get();
|
|
975
|
+
}
|
|
976
|
+
catch (e) {
|
|
977
|
+
logger.debug('Adding missing promotion_date column', { error: e instanceof Error ? e.message : String(e) });
|
|
978
|
+
db.exec(`
|
|
979
|
+
ALTER TABLE qe_patterns ADD COLUMN promotion_date TEXT DEFAULT NULL
|
|
980
|
+
`);
|
|
981
|
+
console.log('[PatternLifecycle] Added promotion_date column to qe_patterns');
|
|
982
|
+
}
|
|
983
|
+
// ADR-121: provenance_tier — additive, conservative-default migration.
|
|
984
|
+
// The DEFAULT backfills every existing row as 'proxy:structural', which can
|
|
985
|
+
// never over-credit legacy history. Rows re-derived from execution evidence
|
|
986
|
+
// are re-tiered upward through the normal write path (never up-tiered here).
|
|
987
|
+
// Distinct from the lifecycle `tier` (short-term/long-term) column.
|
|
988
|
+
try {
|
|
989
|
+
db.prepare(`
|
|
990
|
+
SELECT provenance_tier FROM qe_patterns LIMIT 1
|
|
991
|
+
`).get();
|
|
992
|
+
}
|
|
993
|
+
catch (e) {
|
|
994
|
+
logger.debug('Adding missing provenance_tier column', { error: e instanceof Error ? e.message : String(e) });
|
|
995
|
+
db.exec(`
|
|
996
|
+
ALTER TABLE qe_patterns ADD COLUMN provenance_tier TEXT DEFAULT '${DEFAULT_PROVENANCE_TIER}'
|
|
997
|
+
`);
|
|
998
|
+
console.log(`[PatternLifecycle] Added provenance_tier column to qe_patterns (backfilled '${DEFAULT_PROVENANCE_TIER}')`);
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
1001
|
+
/**
|
|
1002
|
+
* Create a pattern lifecycle manager for the MCP server's background workers
|
|
1003
|
+
* (#1283). A database that predates the lifecycle columns gets its ALTER
|
|
1004
|
+
* TABLEs through the shared connection's write queue first, so a locked
|
|
1005
|
+
* memory.db does not freeze the event loop on the worker's first tick.
|
|
1006
|
+
*/
|
|
1007
|
+
export async function createPatternLifecycleManagerWhenUnlocked(db, config) {
|
|
1008
|
+
await writeWhenUnlockedOn(db, () => ensurePatternLifecycleSchema(db));
|
|
1009
|
+
return new PatternLifecycleManager(db, config);
|
|
1010
|
+
}
|
|
934
1011
|
/**
|
|
935
1012
|
* Create a pattern lifecycle manager
|
|
936
1013
|
*/
|
|
@@ -20,6 +20,11 @@ export declare class PatternNullStore {
|
|
|
20
20
|
constructor(db: DatabaseType);
|
|
21
21
|
/** Record a failure; consolidates on repeat (pattern, context) pairs. */
|
|
22
22
|
recordNull(record: PatternNullRecord): void;
|
|
23
|
+
/**
|
|
24
|
+
* recordNull() through the shared connection's write queue (#1283), so a
|
|
25
|
+
* locked memory.db does not freeze the MCP server's event loop.
|
|
26
|
+
*/
|
|
27
|
+
recordNullWhenUnlocked(record: PatternNullRecord): Promise<void>;
|
|
23
28
|
/** Batch summaries for retrieval-time surfacing. Missing patterns simply have no entry. */
|
|
24
29
|
getNullSummaries(patternIds: string[]): Map<string, NullSummary>;
|
|
25
30
|
/**
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { v4 as uuidv4 } from 'uuid';
|
|
16
16
|
import { applyMigration } from '../migrations/20260611_add_pattern_nulls_table.js';
|
|
17
|
+
import { writeWhenUnlockedOn } from '../shared/sqlite-write-queue.js';
|
|
17
18
|
/** Weight of a context-matched null vs a null from elsewhere (ADR-110: local nulls outweigh remote successes). */
|
|
18
19
|
const CONTEXT_MATCHED_WEIGHT = 0.15;
|
|
19
20
|
const UNMATCHED_WEIGHT = 0.03;
|
|
@@ -38,6 +39,13 @@ export class PatternNullStore {
|
|
|
38
39
|
updated_at = datetime('now')
|
|
39
40
|
`).run(uuidv4(), record.patternId, record.contextFingerprint, record.failureMode, record.trajectoryRef ?? null, record.evidenceClass ?? 'EXECUTED');
|
|
40
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* recordNull() through the shared connection's write queue (#1283), so a
|
|
44
|
+
* locked memory.db does not freeze the MCP server's event loop.
|
|
45
|
+
*/
|
|
46
|
+
recordNullWhenUnlocked(record) {
|
|
47
|
+
return writeWhenUnlockedOn(this.db, () => this.recordNull(record));
|
|
48
|
+
}
|
|
41
49
|
/** Batch summaries for retrieval-time surfacing. Missing patterns simply have no entry. */
|
|
42
50
|
getNullSummaries(patternIds) {
|
|
43
51
|
const out = new Map();
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { LoggerFactory } from '../logging/index.js';
|
|
9
9
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
10
|
+
import { writeWhenUnlockedOn } from '../shared/sqlite-write-queue.js';
|
|
10
11
|
import { shouldPromotePattern, calculateQualityScore } from './qe-patterns.js';
|
|
11
12
|
import { getWitnessChain } from '../audit/witness-chain.js';
|
|
12
13
|
import { RELATED_DOMAINS } from './agent-routing.js';
|
|
@@ -76,7 +77,9 @@ export async function promotePattern(patternId, deps) {
|
|
|
76
77
|
const result = await deps.patternStore.promote(patternId);
|
|
77
78
|
if (result.success) {
|
|
78
79
|
try {
|
|
79
|
-
deps.getSqliteStore()
|
|
80
|
+
const store = deps.getSqliteStore();
|
|
81
|
+
// #1283: queued on the shared connection, so a locked memory.db does not freeze the MCP server.
|
|
82
|
+
await writeWhenUnlockedOn(store.getDatabase(), () => store.promotePattern(patternId));
|
|
80
83
|
}
|
|
81
84
|
catch (e) {
|
|
82
85
|
logger.warn('SQLite pattern promotion persist failed', {
|
|
@@ -98,7 +101,7 @@ export async function promotePattern(patternId, deps) {
|
|
|
98
101
|
if (peers.success) {
|
|
99
102
|
for (const { pattern: peer } of peers.value) {
|
|
100
103
|
if (peer.id !== patternId) {
|
|
101
|
-
citationGraph.recordCoOccurrence(patternId, peer.id);
|
|
104
|
+
await writeWhenUnlockedOn(db, () => citationGraph.recordCoOccurrence(patternId, peer.id));
|
|
102
105
|
}
|
|
103
106
|
}
|
|
104
107
|
}
|
|
@@ -126,7 +129,7 @@ export async function promotePattern(patternId, deps) {
|
|
|
126
129
|
}
|
|
127
130
|
}
|
|
128
131
|
getWitnessChain()
|
|
129
|
-
.then((wc) => wc.
|
|
132
|
+
.then((wc) => wc.appendWhenUnlocked('PATTERN_PROMOTE', { patternId }, 'reasoning-bank'))
|
|
130
133
|
.catch((e) => {
|
|
131
134
|
logger.warn('Witness chain PATTERN_PROMOTE failed', {
|
|
132
135
|
error: toErrorMessage(e),
|
|
@@ -326,6 +326,12 @@ export declare class PatternStore implements IPatternStore {
|
|
|
326
326
|
* Record pattern usage and update stats
|
|
327
327
|
*/
|
|
328
328
|
recordUsage(id: string, success: boolean, metrics?: Record<string, unknown>, feedback?: string): Promise<Result<void>>;
|
|
329
|
+
/**
|
|
330
|
+
* Run a SQLite write through the store's writeWhenUnlocked queue (#1274):
|
|
331
|
+
* the hourly cleanup timer and fire-and-forget usage recording write here,
|
|
332
|
+
* and must not freeze the MCP server's event loop on a locked memory.db.
|
|
333
|
+
*/
|
|
334
|
+
private persistToSqlite;
|
|
329
335
|
/**
|
|
330
336
|
* Promote pattern from short-term to long-term storage
|
|
331
337
|
*/
|
|
@@ -477,7 +477,8 @@ export class PatternStore {
|
|
|
477
477
|
// Persist to SQLite (pattern + embedding atomically)
|
|
478
478
|
if (this.sqliteStore) {
|
|
479
479
|
try {
|
|
480
|
-
|
|
480
|
+
// #1283: queued, so a locked memory.db does not freeze the MCP server.
|
|
481
|
+
const actualId = await this.persistToSqlite((store) => store.storePattern(pattern, pattern.embedding, activeSpaceId));
|
|
481
482
|
// #447: ON CONFLICT(name, qe_domain, pattern_type) may preserve an
|
|
482
483
|
// existing row's id instead of the one we generated — realign the
|
|
483
484
|
// in-memory indices (and pattern.id itself) or every later
|
|
@@ -591,7 +592,7 @@ export class PatternStore {
|
|
|
591
592
|
successRate: pattern.successRate,
|
|
592
593
|
tier: pattern.tier,
|
|
593
594
|
};
|
|
594
|
-
this.deltaTracker.
|
|
595
|
+
await this.deltaTracker.createGenesisWhenUnlocked(pattern.id, snapshot);
|
|
595
596
|
}
|
|
596
597
|
catch (error) {
|
|
597
598
|
// Genesis may already exist if pattern was re-stored; log at debug level
|
|
@@ -1088,7 +1089,7 @@ export class PatternStore {
|
|
|
1088
1089
|
// Persist usage to SQLite
|
|
1089
1090
|
if (this.sqliteStore) {
|
|
1090
1091
|
try {
|
|
1091
|
-
this.
|
|
1092
|
+
await this.persistToSqlite((store) => store.recordUsage(id, success, metrics, feedback));
|
|
1092
1093
|
}
|
|
1093
1094
|
catch (error) {
|
|
1094
1095
|
console.warn(`[PatternStore] SQLite recordUsage failed for ${id}:`, toErrorMessage(error));
|
|
@@ -1115,7 +1116,7 @@ export class PatternStore {
|
|
|
1115
1116
|
successRate: updated.successRate,
|
|
1116
1117
|
tier: updated.tier,
|
|
1117
1118
|
};
|
|
1118
|
-
this.deltaTracker.
|
|
1119
|
+
await this.deltaTracker.recordDeltaWhenUnlocked(id, before, after, { success });
|
|
1119
1120
|
}
|
|
1120
1121
|
catch (error) {
|
|
1121
1122
|
console.debug(`[PatternStore] Delta recordDelta for ${id}:`, toErrorMessage(error));
|
|
@@ -1135,6 +1136,18 @@ export class PatternStore {
|
|
|
1135
1136
|
}
|
|
1136
1137
|
return ok(undefined);
|
|
1137
1138
|
}
|
|
1139
|
+
/**
|
|
1140
|
+
* Run a SQLite write through the store's writeWhenUnlocked queue (#1274):
|
|
1141
|
+
* the hourly cleanup timer and fire-and-forget usage recording write here,
|
|
1142
|
+
* and must not freeze the MCP server's event loop on a locked memory.db.
|
|
1143
|
+
*/
|
|
1144
|
+
persistToSqlite(write) {
|
|
1145
|
+
const store = this.sqliteStore;
|
|
1146
|
+
const run = () => write(store);
|
|
1147
|
+
return typeof store.writeWhenUnlocked === 'function'
|
|
1148
|
+
? store.writeWhenUnlocked(run)
|
|
1149
|
+
: new Promise((resolve) => resolve(run()));
|
|
1150
|
+
}
|
|
1138
1151
|
/**
|
|
1139
1152
|
* Promote pattern from short-term to long-term storage
|
|
1140
1153
|
*/
|
|
@@ -1159,7 +1172,7 @@ export class PatternStore {
|
|
|
1159
1172
|
// Persist promotion to SQLite
|
|
1160
1173
|
if (this.sqliteStore) {
|
|
1161
1174
|
try {
|
|
1162
|
-
this.
|
|
1175
|
+
await this.persistToSqlite((store) => store.promotePattern(id));
|
|
1163
1176
|
}
|
|
1164
1177
|
catch (e) {
|
|
1165
1178
|
console.debug('[PatternStore] SQLite promotion error:', e instanceof Error ? e.message : e);
|
|
@@ -1181,7 +1194,7 @@ export class PatternStore {
|
|
|
1181
1194
|
// Persist deletion to SQLite
|
|
1182
1195
|
if (this.sqliteStore) {
|
|
1183
1196
|
try {
|
|
1184
|
-
this.
|
|
1197
|
+
await this.persistToSqlite((store) => store.deletePattern(id));
|
|
1185
1198
|
}
|
|
1186
1199
|
catch (e) {
|
|
1187
1200
|
console.debug('[PatternStore] SQLite deletion error:', e instanceof Error ? e.message : e);
|
|
@@ -365,7 +365,7 @@ export class QEReasoningBank {
|
|
|
365
365
|
// ADR-070: Record pattern creation in witness chain
|
|
366
366
|
if (committedPattern) {
|
|
367
367
|
const sideEffectPattern = committedPattern;
|
|
368
|
-
getWitnessChain().then(wc => wc.
|
|
368
|
+
getWitnessChain().then(wc => wc.appendWhenUnlocked('PATTERN_CREATE', { patternId: sideEffectPattern.id, domain: sideEffectPattern.qeDomain, confidence: sideEffectPattern.confidence, name: sideEffectPattern.name }, 'reasoning-bank')).catch((e) => { logger.warn('Witness chain PATTERN_CREATE failed', { error: toErrorMessage(e) }); });
|
|
369
369
|
// Phase 3: Best-effort RVF dual-write for vector replication
|
|
370
370
|
if (this.rvfDualWriter && sideEffectPattern.embedding && sideEffectPattern.embedding.length > 0) {
|
|
371
371
|
try {
|
|
@@ -452,7 +452,7 @@ export class QEReasoningBank {
|
|
|
452
452
|
this.stats.successfulOutcomes++;
|
|
453
453
|
}
|
|
454
454
|
// ADR-070: Record pattern update in witness chain
|
|
455
|
-
getWitnessChain().then(wc => wc.
|
|
455
|
+
getWitnessChain().then(wc => wc.appendWhenUnlocked('PATTERN_UPDATE', { patternId: outcome.patternId, success: outcome.success }, 'reasoning-bank')).catch((e) => { logger.warn('Witness chain PATTERN_UPDATE failed', { error: toErrorMessage(e) }); });
|
|
456
456
|
// Check if pattern should be promoted (with coherence gate)
|
|
457
457
|
const pattern = await this.getPattern(outcome.patternId);
|
|
458
458
|
const deps = this.getPromotionDeps();
|
|
@@ -442,7 +442,9 @@ export async function recheckEmbedder(config = {}) {
|
|
|
442
442
|
return initRetryPromise;
|
|
443
443
|
}
|
|
444
444
|
const client = endpointClient;
|
|
445
|
-
|
|
445
|
+
// #1216: also when the breaker window elapsed but no trial probe has
|
|
446
|
+
// succeeded yet; embed() would only start that trial and fail fast.
|
|
447
|
+
if (!client || !client.needsTrial())
|
|
446
448
|
return;
|
|
447
449
|
const identity = await client.probeThroughOpenBreaker();
|
|
448
450
|
if (endpointIdentity && identity.fingerprint !== endpointIdentity.fingerprint) {
|
|
@@ -349,6 +349,11 @@ export declare class RealQEReasoningBank {
|
|
|
349
349
|
* @param trajectoryId - Trajectory ID
|
|
350
350
|
*/
|
|
351
351
|
linkPatternToTrajectory(patternId: string, trajectoryId: string): Promise<void>;
|
|
352
|
+
/**
|
|
353
|
+
* Run a SQLite write through the shared connection's write queue (#1283),
|
|
354
|
+
* so a locked memory.db does not freeze the MCP server's event loop.
|
|
355
|
+
*/
|
|
356
|
+
private persist;
|
|
352
357
|
/**
|
|
353
358
|
* Get the enhanced ReasoningBank adapter for full agentic-flow integration
|
|
354
359
|
*
|