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
|
@@ -10,6 +10,7 @@ import { QE_AGENT_REGISTRY } from './qe-agent-registry.js';
|
|
|
10
10
|
import { getUnifiedMemory } from '../kernel/unified-memory.js';
|
|
11
11
|
import { safeJsonParse } from '../shared/safe-json.js';
|
|
12
12
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
13
|
+
import { isBusyError } from '../learning/dream/dream-lock-retry.js';
|
|
13
14
|
import { EMACalibrator } from './calibration/index.js';
|
|
14
15
|
import { AutoEscalationTracker } from './escalation/index.js';
|
|
15
16
|
import { ensureRoutingOutcomesAdr095Columns } from './routing-outcomes-migration.js';
|
|
@@ -141,10 +142,11 @@ export class RoutingFeedbackCollector {
|
|
|
141
142
|
* Persist a single outcome to the database
|
|
142
143
|
*/
|
|
143
144
|
persistOutcome(outcome) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
const modelTier = this.inferTier(outcome.usedAgent);
|
|
146
|
+
const advisorJson = outcome.advisorConsultation
|
|
147
|
+
? JSON.stringify(outcome.advisorConsultation)
|
|
148
|
+
: null;
|
|
149
|
+
this.persistInBackground('outcome', (database) => {
|
|
148
150
|
// Ensure schema columns exist for databases created before ADR-092
|
|
149
151
|
// and ADR-095. Runs once per process via the flag; new databases have
|
|
150
152
|
// columns from unified-memory-schemas.ts CREATE TABLE.
|
|
@@ -156,17 +158,17 @@ export class RoutingFeedbackCollector {
|
|
|
156
158
|
try {
|
|
157
159
|
database.prepare(col).run();
|
|
158
160
|
}
|
|
159
|
-
catch {
|
|
161
|
+
catch (error) {
|
|
162
|
+
// Column already exists. A locked database is retried instead (#1274).
|
|
163
|
+
if (isBusyError(error))
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
160
166
|
}
|
|
161
167
|
// ADR-095: routing exploration columns via shared helper so all
|
|
162
168
|
// writer paths agree on the column set.
|
|
163
169
|
ensureRoutingOutcomesAdr095Columns(database);
|
|
164
170
|
RoutingFeedbackCollector.schemaMigrated = true;
|
|
165
171
|
}
|
|
166
|
-
const modelTier = this.inferTier(outcome.usedAgent);
|
|
167
|
-
const advisorJson = outcome.advisorConsultation
|
|
168
|
-
? JSON.stringify(outcome.advisorConsultation)
|
|
169
|
-
: null;
|
|
170
172
|
database.prepare(`
|
|
171
173
|
INSERT OR REPLACE INTO routing_outcomes (
|
|
172
174
|
id, task_json, decision_json, used_agent,
|
|
@@ -174,13 +176,30 @@ export class RoutingFeedbackCollector {
|
|
|
174
176
|
duration_ms, error, model_tier, advisor_consultation_json
|
|
175
177
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
176
178
|
`).run(outcome.id, JSON.stringify(outcome.task), JSON.stringify(outcome.decision), outcome.usedAgent, outcome.followedRecommendation ? 1 : 0, outcome.outcome.success ? 1 : 0, outcome.outcome.qualityScore, outcome.outcome.durationMs, outcome.outcome.error || null, modelTier, advisorJson);
|
|
179
|
+
}, () => {
|
|
177
180
|
this.persistCount++;
|
|
178
181
|
if (this.persistCount % RoutingFeedbackCollector.RETENTION_CLEANUP_INTERVAL === 0) {
|
|
179
|
-
this.enforceRetention(
|
|
182
|
+
this.enforceRetention();
|
|
180
183
|
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Queue a write on the shared connection without blocking the caller
|
|
188
|
+
* (#1274). recordOutcome runs after every routed task, so a locked
|
|
189
|
+
* memory.db must not freeze the MCP server's event loop. Writes keep their
|
|
190
|
+
* call order and the connection's full busy_timeout budget; with the
|
|
191
|
+
* database unlocked and nothing queued the write runs at once, as before.
|
|
192
|
+
*/
|
|
193
|
+
persistInBackground(what, write, onPersisted) {
|
|
194
|
+
if (!this.db)
|
|
195
|
+
return;
|
|
196
|
+
const warn = (error) => console.warn(`[RoutingFeedbackCollector] Failed to persist ${what}:`, toErrorMessage(error));
|
|
197
|
+
try {
|
|
198
|
+
const database = this.db.getDatabase();
|
|
199
|
+
this.db.writeWhenUnlocked(() => write(database)).then(onPersisted, warn);
|
|
181
200
|
}
|
|
182
201
|
catch (error) {
|
|
183
|
-
|
|
202
|
+
warn(error);
|
|
184
203
|
}
|
|
185
204
|
}
|
|
186
205
|
/**
|
|
@@ -228,18 +247,15 @@ export class RoutingFeedbackCollector {
|
|
|
228
247
|
/**
|
|
229
248
|
* Delete oldest rows beyond retention limit
|
|
230
249
|
*/
|
|
231
|
-
enforceRetention(
|
|
232
|
-
|
|
233
|
-
|
|
250
|
+
enforceRetention() {
|
|
251
|
+
const maxRows = this.maxOutcomes * 2;
|
|
252
|
+
this.persistInBackground('retention cleanup', (database) => {
|
|
234
253
|
database.prepare(`
|
|
235
254
|
DELETE FROM routing_outcomes WHERE id NOT IN (
|
|
236
255
|
SELECT id FROM routing_outcomes ORDER BY created_at DESC LIMIT ?
|
|
237
256
|
)
|
|
238
257
|
`).run(maxRows);
|
|
239
|
-
}
|
|
240
|
-
catch (error) {
|
|
241
|
-
console.warn('[RoutingFeedbackCollector] Retention cleanup failed:', toErrorMessage(error));
|
|
242
|
-
}
|
|
258
|
+
});
|
|
243
259
|
}
|
|
244
260
|
/**
|
|
245
261
|
* Load persisted EMA calibrator state from the database
|
|
@@ -268,14 +284,17 @@ export class RoutingFeedbackCollector {
|
|
|
268
284
|
persistCalibratorState() {
|
|
269
285
|
if (!this.db || !this.calibrator)
|
|
270
286
|
return;
|
|
287
|
+
let serialized;
|
|
271
288
|
try {
|
|
272
|
-
|
|
273
|
-
const serialized = JSON.stringify(this.calibrator.serialize());
|
|
274
|
-
database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:ema_calibrator_state', serialized);
|
|
289
|
+
serialized = JSON.stringify(this.calibrator.serialize());
|
|
275
290
|
}
|
|
276
291
|
catch (error) {
|
|
277
292
|
console.warn('[RoutingFeedbackCollector] Failed to persist calibrator state:', toErrorMessage(error));
|
|
293
|
+
return;
|
|
278
294
|
}
|
|
295
|
+
this.persistInBackground('calibrator state', (database) => {
|
|
296
|
+
database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:ema_calibrator_state', serialized);
|
|
297
|
+
});
|
|
279
298
|
}
|
|
280
299
|
/**
|
|
281
300
|
* Load persisted economic routing state from the database
|
|
@@ -304,14 +323,17 @@ export class RoutingFeedbackCollector {
|
|
|
304
323
|
persistEconomicState() {
|
|
305
324
|
if (!this.db || !this.economicModel)
|
|
306
325
|
return;
|
|
326
|
+
let serialized;
|
|
307
327
|
try {
|
|
308
|
-
|
|
309
|
-
const serialized = JSON.stringify(this.economicModel.serializeEstimates());
|
|
310
|
-
database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:economic_quality_estimates', serialized);
|
|
328
|
+
serialized = JSON.stringify(this.economicModel.serializeEstimates());
|
|
311
329
|
}
|
|
312
330
|
catch (error) {
|
|
313
331
|
console.warn('[RoutingFeedbackCollector] Failed to persist economic state:', toErrorMessage(error));
|
|
332
|
+
return;
|
|
314
333
|
}
|
|
334
|
+
this.persistInBackground('economic state', (database) => {
|
|
335
|
+
database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:economic_quality_estimates', serialized);
|
|
336
|
+
});
|
|
315
337
|
}
|
|
316
338
|
/**
|
|
317
339
|
* Connect to router for automatic performance updates
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* Callers run this before INSERTing rows that reference the new columns.
|
|
14
14
|
* A process-local flag prevents repeated migration attempts.
|
|
15
15
|
*/
|
|
16
|
+
import { isBusyError } from '../learning/dream/dream-lock-retry.js';
|
|
16
17
|
let migrated = false;
|
|
17
18
|
/**
|
|
18
19
|
* Add the ADR-095 columns to routing_outcomes if they don't already exist.
|
|
@@ -34,11 +35,15 @@ export function ensureRoutingOutcomesAdr095Columns(db) {
|
|
|
34
35
|
try {
|
|
35
36
|
db.prepare(stmt).run();
|
|
36
37
|
}
|
|
37
|
-
catch {
|
|
38
|
+
catch (error) {
|
|
38
39
|
// Column already exists, or table doesn't exist yet. Both are
|
|
39
40
|
// acceptable — ALTER is additive, and a missing table means the
|
|
40
41
|
// unified schema hasn't been applied yet (caller's INSERT will fail
|
|
41
|
-
// separately with a clearer error).
|
|
42
|
+
// separately with a clearer error). A locked database is not (#1274):
|
|
43
|
+
// rethrow so a retrying caller migrates on its next attempt instead of
|
|
44
|
+
// marking the migration done without the columns.
|
|
45
|
+
if (isBusyError(error))
|
|
46
|
+
throw error;
|
|
42
47
|
}
|
|
43
48
|
}
|
|
44
49
|
// Index on exploration for the bucket-comparison queries used by
|
|
@@ -64,8 +64,17 @@ export declare class SqliteSpendLedger implements SpendLedger {
|
|
|
64
64
|
* drop ALL spend — bypassing the budget cap (the #557 class).
|
|
65
65
|
*/
|
|
66
66
|
private hasAgentColumn;
|
|
67
|
+
/**
|
|
68
|
+
* Charges queued but not yet in the table (#1283). record() queues its
|
|
69
|
+
* INSERT so a locked memory.db does not freeze the MCP server; until the row
|
|
70
|
+
* lands, the spend reads below count it from here, so the ADR-123 budget cap
|
|
71
|
+
* never under-counts. Each entry leaves this set in the same synchronous
|
|
72
|
+
* step that inserts its row, so a charge is never counted twice.
|
|
73
|
+
*/
|
|
74
|
+
private readonly pending;
|
|
67
75
|
constructor(db: DatabaseType);
|
|
68
76
|
record(entry: SpendEntry): void;
|
|
77
|
+
private insert;
|
|
69
78
|
spentSince(windowMs: number, nowMs?: number): number;
|
|
70
79
|
spentByAgentSince(windowMs: number, nowMs?: number): Record<string, number>;
|
|
71
80
|
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* cross-process pattern.
|
|
19
19
|
*/
|
|
20
20
|
import { createSafeRecord } from '../utils/safe-record.js';
|
|
21
|
+
import { writeWhenUnlockedOn } from '../sqlite-write-queue.js';
|
|
21
22
|
/** Bucket used for charges recorded without an agent context. */
|
|
22
23
|
export const UNATTRIBUTED_AGENT = '(unattributed)';
|
|
23
24
|
const CREATE_TABLE_SQL = `
|
|
@@ -49,6 +50,14 @@ export class SqliteSpendLedger {
|
|
|
49
50
|
* drop ALL spend — bypassing the budget cap (the #557 class).
|
|
50
51
|
*/
|
|
51
52
|
hasAgentColumn = false;
|
|
53
|
+
/**
|
|
54
|
+
* Charges queued but not yet in the table (#1283). record() queues its
|
|
55
|
+
* INSERT so a locked memory.db does not freeze the MCP server; until the row
|
|
56
|
+
* lands, the spend reads below count it from here, so the ADR-123 budget cap
|
|
57
|
+
* never under-counts. Each entry leaves this set in the same synchronous
|
|
58
|
+
* step that inserts its row, so a charge is never counted twice.
|
|
59
|
+
*/
|
|
60
|
+
pending = new Set();
|
|
52
61
|
constructor(db) {
|
|
53
62
|
this.db = db;
|
|
54
63
|
// Additive schema only — CREATE TABLE/INDEX IF NOT EXISTS never drops data.
|
|
@@ -70,45 +79,52 @@ export class SqliteSpendLedger {
|
|
|
70
79
|
}
|
|
71
80
|
}
|
|
72
81
|
record(entry) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
ts: Date.now(),
|
|
81
|
-
provider: entry.provider,
|
|
82
|
-
model: entry.model,
|
|
83
|
-
cost_usd: entry.costUsd,
|
|
84
|
-
cost_source: entry.costSource,
|
|
85
|
-
prompt_tokens: entry.promptTokens,
|
|
86
|
-
completion_tokens: entry.completionTokens,
|
|
87
|
-
request_id: entry.requestId,
|
|
88
|
-
agent_type: entry.agent ?? null,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
// Column absent (migration couldn't run) — still record spend so the
|
|
93
|
-
// budget cap holds; just without per-agent attribution.
|
|
94
|
-
this.db
|
|
95
|
-
.prepare(`INSERT INTO llm_spend
|
|
96
|
-
(ts, provider, model, cost_usd, cost_source, prompt_tokens, completion_tokens, request_id)
|
|
97
|
-
VALUES (@ts, @provider, @model, @cost_usd, @cost_source, @prompt_tokens, @completion_tokens, @request_id)`)
|
|
98
|
-
.run({
|
|
99
|
-
ts: Date.now(),
|
|
100
|
-
provider: entry.provider,
|
|
101
|
-
model: entry.model,
|
|
102
|
-
cost_usd: entry.costUsd,
|
|
103
|
-
cost_source: entry.costSource,
|
|
104
|
-
prompt_tokens: entry.promptTokens,
|
|
105
|
-
completion_tokens: entry.completionTokens,
|
|
106
|
-
request_id: entry.requestId,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
catch {
|
|
82
|
+
const ts = Date.now();
|
|
83
|
+
const charge = { ts, costUsd: entry.costUsd, agent: entry.agent ?? UNATTRIBUTED_AGENT };
|
|
84
|
+
this.pending.add(charge);
|
|
85
|
+
writeWhenUnlockedOn(this.db, () => {
|
|
86
|
+
this.insert(entry, ts);
|
|
87
|
+
this.pending.delete(charge);
|
|
88
|
+
}).catch(() => {
|
|
111
89
|
// A ledger write must never break a generation call.
|
|
90
|
+
this.pending.delete(charge);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
insert(entry, ts) {
|
|
94
|
+
if (this.hasAgentColumn) {
|
|
95
|
+
this.db
|
|
96
|
+
.prepare(`INSERT INTO llm_spend
|
|
97
|
+
(ts, provider, model, cost_usd, cost_source, prompt_tokens, completion_tokens, request_id, agent_type)
|
|
98
|
+
VALUES (@ts, @provider, @model, @cost_usd, @cost_source, @prompt_tokens, @completion_tokens, @request_id, @agent_type)`)
|
|
99
|
+
.run({
|
|
100
|
+
ts,
|
|
101
|
+
provider: entry.provider,
|
|
102
|
+
model: entry.model,
|
|
103
|
+
cost_usd: entry.costUsd,
|
|
104
|
+
cost_source: entry.costSource,
|
|
105
|
+
prompt_tokens: entry.promptTokens,
|
|
106
|
+
completion_tokens: entry.completionTokens,
|
|
107
|
+
request_id: entry.requestId,
|
|
108
|
+
agent_type: entry.agent ?? null,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Column absent (migration couldn't run) — still record spend so the
|
|
113
|
+
// budget cap holds; just without per-agent attribution.
|
|
114
|
+
this.db
|
|
115
|
+
.prepare(`INSERT INTO llm_spend
|
|
116
|
+
(ts, provider, model, cost_usd, cost_source, prompt_tokens, completion_tokens, request_id)
|
|
117
|
+
VALUES (@ts, @provider, @model, @cost_usd, @cost_source, @prompt_tokens, @completion_tokens, @request_id)`)
|
|
118
|
+
.run({
|
|
119
|
+
ts,
|
|
120
|
+
provider: entry.provider,
|
|
121
|
+
model: entry.model,
|
|
122
|
+
cost_usd: entry.costUsd,
|
|
123
|
+
cost_source: entry.costSource,
|
|
124
|
+
prompt_tokens: entry.promptTokens,
|
|
125
|
+
completion_tokens: entry.completionTokens,
|
|
126
|
+
request_id: entry.requestId,
|
|
127
|
+
});
|
|
112
128
|
}
|
|
113
129
|
}
|
|
114
130
|
spentSince(windowMs, nowMs = Date.now()) {
|
|
@@ -116,7 +132,12 @@ export class SqliteSpendLedger {
|
|
|
116
132
|
const row = this.db
|
|
117
133
|
.prepare(`SELECT COALESCE(SUM(cost_usd), 0) AS total FROM llm_spend WHERE ts >= ?`)
|
|
118
134
|
.get(nowMs - windowMs);
|
|
119
|
-
|
|
135
|
+
let total = row?.total ?? 0;
|
|
136
|
+
for (const charge of this.pending) {
|
|
137
|
+
if (charge.ts >= nowMs - windowMs)
|
|
138
|
+
total += charge.costUsd;
|
|
139
|
+
}
|
|
140
|
+
return total;
|
|
120
141
|
}
|
|
121
142
|
catch {
|
|
122
143
|
return 0;
|
|
@@ -131,6 +152,10 @@ export class SqliteSpendLedger {
|
|
|
131
152
|
const out = createSafeRecord();
|
|
132
153
|
for (const r of rows)
|
|
133
154
|
out[r.agent] = r.total;
|
|
155
|
+
for (const charge of this.pending) {
|
|
156
|
+
if (charge.ts >= nowMs - windowMs)
|
|
157
|
+
out[charge.agent] = (out[charge.agent] ?? 0) + charge.costUsd;
|
|
158
|
+
}
|
|
134
159
|
return out;
|
|
135
160
|
}
|
|
136
161
|
catch {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How long one attempt of an asynchronously retried write may wait for a
|
|
3
|
+
* SQLite lock (#1263).
|
|
4
|
+
*
|
|
5
|
+
* better-sqlite3 waits for a locked database synchronously, inside the call,
|
|
6
|
+
* for up to the connection's busy_timeout (5 s by default). In a one-shot CLI
|
|
7
|
+
* command that is the patience we want. In the MCP server it freezes the event
|
|
8
|
+
* loop: while another process held memory.db's write lock, background writes
|
|
9
|
+
* blocked for 5 s each, back to back, and stopped all tool calls for 10-15 s.
|
|
10
|
+
*
|
|
11
|
+
* The MCP server sets this cap. Writes routed through
|
|
12
|
+
* UnifiedMemoryManager.writeWhenUnlocked then wait at most the cap per
|
|
13
|
+
* attempt and retry asynchronously until the connection's busy_timeout has
|
|
14
|
+
* passed. Connections keep their busy_timeout, so writes not routed that way
|
|
15
|
+
* keep their full (blocking) patience.
|
|
16
|
+
*
|
|
17
|
+
* Dependency-free so any module can read it.
|
|
18
|
+
*/
|
|
19
|
+
/** Longest one retried write attempt blocks the MCP server's event loop on a locked database. */
|
|
20
|
+
export declare const INTERACTIVE_LOCK_WAIT_MS = 200;
|
|
21
|
+
/** Set the per-attempt wait for asynchronously retried writes (null: no cap). */
|
|
22
|
+
export declare function setLockWaitCap(ms: number | null): void;
|
|
23
|
+
/** The current cap, or null when retried writes wait the full busy_timeout per attempt. */
|
|
24
|
+
export declare function getLockWaitCap(): number | null;
|
|
25
|
+
/** The per-attempt wait for a requested busy_timeout, honouring the process cap. */
|
|
26
|
+
export declare function capBusyTimeout(requestedMs: number): number;
|
|
27
|
+
//# sourceMappingURL=sqlite-lock-wait.d.ts.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How long one attempt of an asynchronously retried write may wait for a
|
|
3
|
+
* SQLite lock (#1263).
|
|
4
|
+
*
|
|
5
|
+
* better-sqlite3 waits for a locked database synchronously, inside the call,
|
|
6
|
+
* for up to the connection's busy_timeout (5 s by default). In a one-shot CLI
|
|
7
|
+
* command that is the patience we want. In the MCP server it freezes the event
|
|
8
|
+
* loop: while another process held memory.db's write lock, background writes
|
|
9
|
+
* blocked for 5 s each, back to back, and stopped all tool calls for 10-15 s.
|
|
10
|
+
*
|
|
11
|
+
* The MCP server sets this cap. Writes routed through
|
|
12
|
+
* UnifiedMemoryManager.writeWhenUnlocked then wait at most the cap per
|
|
13
|
+
* attempt and retry asynchronously until the connection's busy_timeout has
|
|
14
|
+
* passed. Connections keep their busy_timeout, so writes not routed that way
|
|
15
|
+
* keep their full (blocking) patience.
|
|
16
|
+
*
|
|
17
|
+
* Dependency-free so any module can read it.
|
|
18
|
+
*/
|
|
19
|
+
/** Longest one retried write attempt blocks the MCP server's event loop on a locked database. */
|
|
20
|
+
export const INTERACTIVE_LOCK_WAIT_MS = 200;
|
|
21
|
+
let lockWaitCapMs = null;
|
|
22
|
+
/** Set the per-attempt wait for asynchronously retried writes (null: no cap). */
|
|
23
|
+
export function setLockWaitCap(ms) {
|
|
24
|
+
if (ms !== null && (!Number.isFinite(ms) || ms < 0)) {
|
|
25
|
+
throw new RangeError(`Lock wait cap must be a non-negative number of ms, got ${ms}`);
|
|
26
|
+
}
|
|
27
|
+
lockWaitCapMs = ms === null ? null : Math.floor(ms);
|
|
28
|
+
}
|
|
29
|
+
/** The current cap, or null when retried writes wait the full busy_timeout per attempt. */
|
|
30
|
+
export function getLockWaitCap() {
|
|
31
|
+
return lockWaitCapMs;
|
|
32
|
+
}
|
|
33
|
+
/** The per-attempt wait for a requested busy_timeout, honouring the process cap. */
|
|
34
|
+
export function capBusyTimeout(requestedMs) {
|
|
35
|
+
return lockWaitCapMs === null ? requestedMs : Math.min(requestedMs, lockWaitCapMs);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=sqlite-lock-wait.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which SQLite connections have a write queue (#1283).
|
|
3
|
+
*
|
|
4
|
+
* UnifiedMemoryManager registers its shared memory.db connection here while it
|
|
5
|
+
* is open, with its writeWhenUnlocked queue. Modules that hold only the raw
|
|
6
|
+
* connection route writes through `writeWhenUnlockedOn` without importing
|
|
7
|
+
* unified-memory's sqlite graph: on a registered connection the write is
|
|
8
|
+
* queued (FIFO, retried asynchronously under the MCP server's lock wait cap,
|
|
9
|
+
* full busy_timeout budget), so a locked memory.db does not freeze the event
|
|
10
|
+
* loop. A write on any other connection runs now, as it always did.
|
|
11
|
+
*
|
|
12
|
+
* Dependency-free so any module can import it.
|
|
13
|
+
*/
|
|
14
|
+
/** A connection's FIFO write queue: runs `fn` when the database is unlocked. */
|
|
15
|
+
export type WriteQueue = <T>(fn: () => T) => Promise<T>;
|
|
16
|
+
/** Route writes on `db` through `queue` until unregistered. */
|
|
17
|
+
export declare function registerWriteQueue(db: object, queue: WriteQueue): void;
|
|
18
|
+
/** Stop routing writes on `db` (the connection is closing). */
|
|
19
|
+
export declare function unregisterWriteQueue(db: object): void;
|
|
20
|
+
/** True when writes on `db` are queued. */
|
|
21
|
+
export declare function hasWriteQueue(db: object | null | undefined): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Run a write on `db`: queued when `db` has a write queue, otherwise at once.
|
|
24
|
+
* With the queue empty and the database unlocked a queued write also runs at
|
|
25
|
+
* once, so callers see the same result as a direct write.
|
|
26
|
+
*/
|
|
27
|
+
export declare function writeWhenUnlockedOn<T>(db: object | null | undefined, fn: () => T): Promise<T>;
|
|
28
|
+
//# sourceMappingURL=sqlite-write-queue.d.ts.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which SQLite connections have a write queue (#1283).
|
|
3
|
+
*
|
|
4
|
+
* UnifiedMemoryManager registers its shared memory.db connection here while it
|
|
5
|
+
* is open, with its writeWhenUnlocked queue. Modules that hold only the raw
|
|
6
|
+
* connection route writes through `writeWhenUnlockedOn` without importing
|
|
7
|
+
* unified-memory's sqlite graph: on a registered connection the write is
|
|
8
|
+
* queued (FIFO, retried asynchronously under the MCP server's lock wait cap,
|
|
9
|
+
* full busy_timeout budget), so a locked memory.db does not freeze the event
|
|
10
|
+
* loop. A write on any other connection runs now, as it always did.
|
|
11
|
+
*
|
|
12
|
+
* Dependency-free so any module can import it.
|
|
13
|
+
*/
|
|
14
|
+
const queues = new WeakMap();
|
|
15
|
+
/** Route writes on `db` through `queue` until unregistered. */
|
|
16
|
+
export function registerWriteQueue(db, queue) {
|
|
17
|
+
queues.set(db, queue);
|
|
18
|
+
}
|
|
19
|
+
/** Stop routing writes on `db` (the connection is closing). */
|
|
20
|
+
export function unregisterWriteQueue(db) {
|
|
21
|
+
queues.delete(db);
|
|
22
|
+
}
|
|
23
|
+
/** True when writes on `db` are queued. */
|
|
24
|
+
export function hasWriteQueue(db) {
|
|
25
|
+
return db != null && queues.has(db);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Run a write on `db`: queued when `db` has a write queue, otherwise at once.
|
|
29
|
+
* With the queue empty and the database unlocked a queued write also runs at
|
|
30
|
+
* once, so callers see the same result as a direct write.
|
|
31
|
+
*/
|
|
32
|
+
export function writeWhenUnlockedOn(db, fn) {
|
|
33
|
+
const queue = db != null ? queues.get(db) : undefined;
|
|
34
|
+
if (queue)
|
|
35
|
+
return queue(fn);
|
|
36
|
+
return new Promise((resolve) => resolve(fn()));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=sqlite-write-queue.js.map
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #1247: the runner project a test file belongs to.
|
|
3
|
+
*
|
|
4
|
+
* Vitest and Jest load their configuration (setup files, aliases, include
|
|
5
|
+
* patterns, environment) from the directory they are started in. In a
|
|
6
|
+
* monorepo whose packages have their own config (`apps/webapp/vitest.config.ts`)
|
|
7
|
+
* a run started at the repository root never loads that package's setup, so
|
|
8
|
+
* the package's tests fail or produce no report. Each test file is therefore
|
|
9
|
+
* run from the nearest directory, at or above it, with runner configuration,
|
|
10
|
+
* but never from above the project root. Only real configuration counts, so a
|
|
11
|
+
* workspace package without its own config runs from the root that defines
|
|
12
|
+
* its project.
|
|
13
|
+
*
|
|
14
|
+
* A run from the current working directory is kept whenever that directory is
|
|
15
|
+
* already inside the file's runner project (a single-project repository, or a
|
|
16
|
+
* server started inside the package), so those runs behave as before.
|
|
17
|
+
*/
|
|
18
|
+
import { Result } from './types';
|
|
19
|
+
/**
|
|
20
|
+
* Files whose presence makes a directory a Vitest or Jest project. A root
|
|
21
|
+
* workspace file (`vitest.workspace.*`) counts too: its packages run from it.
|
|
22
|
+
*/
|
|
23
|
+
export declare const RUNNER_CONFIG_FILES: readonly string[];
|
|
24
|
+
export interface RunnerProjectOptions {
|
|
25
|
+
/** Directory runs start in today; defaults to process.cwd(). */
|
|
26
|
+
cwd?: string;
|
|
27
|
+
/** Highest directory the search may reach; defaults to findProjectRoot(). */
|
|
28
|
+
boundary?: string;
|
|
29
|
+
/** Directories already checked, so files that share a directory check it once. */
|
|
30
|
+
checked?: Map<string, boolean>;
|
|
31
|
+
}
|
|
32
|
+
/** A set of test files that run together from one directory. */
|
|
33
|
+
export interface RunnerProjectGroup {
|
|
34
|
+
cwd: string;
|
|
35
|
+
files: string[];
|
|
36
|
+
}
|
|
37
|
+
/** True when `dir` holds a Vitest or Jest configuration. */
|
|
38
|
+
export declare function isRunnerProjectDir(dir: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* The nearest directory at or above `file` with runner configuration, searching no
|
|
41
|
+
* higher than `boundary`. Undefined when the file lies outside the boundary or
|
|
42
|
+
* no directory on the way has runner configuration.
|
|
43
|
+
*/
|
|
44
|
+
export declare function findRunnerProjectDir(file: string, boundary: string, cwd?: string, checked?: Map<string, boolean>): string | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Directory to start the runner in for `file`: its runner project, unless the
|
|
47
|
+
* current directory is already inside that project (or none is found), in
|
|
48
|
+
* which case the current directory is kept.
|
|
49
|
+
*/
|
|
50
|
+
export declare function runnerCwdFor(file: string, options?: RunnerProjectOptions): string;
|
|
51
|
+
/**
|
|
52
|
+
* Group `files` by the directory each must run from, in first-seen order.
|
|
53
|
+
* Files keep the spelling they were given.
|
|
54
|
+
*/
|
|
55
|
+
export declare function groupByRunnerProject(files: readonly string[], options?: RunnerProjectOptions): RunnerProjectGroup[];
|
|
56
|
+
/** Test files to run, and the directory to run them from when the caller named one. */
|
|
57
|
+
export interface TestRunTargets {
|
|
58
|
+
testFiles: string[];
|
|
59
|
+
projectRoot?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Handler-side check for an execute-tests payload. `testFiles` must name
|
|
63
|
+
* files or directories inside the project (#1126). An explicit `projectRoot`
|
|
64
|
+
* must be a directory inside the project, checked by realpath so `..`, an
|
|
65
|
+
* outside absolute path or a symlink pointing out is refused; relative test
|
|
66
|
+
* files are then read from it, and every path is returned absolute.
|
|
67
|
+
*/
|
|
68
|
+
export declare function requireTestRunTargets(taskType: string, testFiles: unknown, projectRoot: unknown): Promise<Result<TestRunTargets, Error>>;
|
|
69
|
+
//# sourceMappingURL=test-runner-project.d.ts.map
|