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
|
@@ -0,0 +1,186 @@
|
|
|
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 { existsSync, readFileSync, realpathSync, statSync } from 'node:fs';
|
|
19
|
+
import * as path from 'node:path';
|
|
20
|
+
import { findProjectRoot } from '../kernel/project-root.js';
|
|
21
|
+
import { CallerInputError } from './error-utils.js';
|
|
22
|
+
import { requirePayloadFiles, requirePayloadPath } from './io/payload-path-guard.js';
|
|
23
|
+
import { safeJsonParse } from './safe-json.js';
|
|
24
|
+
import { runnerFilePath } from './test-runner-args.js';
|
|
25
|
+
import { ok, err } from './types/index.js';
|
|
26
|
+
const CONFIG_EXTENSIONS = ['ts', 'mts', 'cts', 'js', 'mjs', 'cjs'];
|
|
27
|
+
/**
|
|
28
|
+
* Files whose presence makes a directory a Vitest or Jest project. A root
|
|
29
|
+
* workspace file (`vitest.workspace.*`) counts too: its packages run from it.
|
|
30
|
+
*/
|
|
31
|
+
export const RUNNER_CONFIG_FILES = [
|
|
32
|
+
...CONFIG_EXTENSIONS.map(ext => `vitest.config.${ext}`),
|
|
33
|
+
...[...CONFIG_EXTENSIONS, 'json'].map(ext => `vitest.workspace.${ext}`),
|
|
34
|
+
...CONFIG_EXTENSIONS.map(ext => `jest.config.${ext}`),
|
|
35
|
+
'jest.config.json',
|
|
36
|
+
];
|
|
37
|
+
/** Vite configs: a runner project only when they configure `test`. */
|
|
38
|
+
const VITE_CONFIG_FILES = CONFIG_EXTENSIONS.map(ext => `vite.config.${ext}`);
|
|
39
|
+
/** Largest config or package.json read while looking for a runner setup. */
|
|
40
|
+
const MAX_MARKER_BYTES = 1024 * 1024;
|
|
41
|
+
function realDir(dir) {
|
|
42
|
+
try {
|
|
43
|
+
return realpathSync(dir);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return path.resolve(dir);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** True when `candidate` is `root` or lies beneath it (both absolute). */
|
|
50
|
+
function isWithin(root, candidate) {
|
|
51
|
+
const relative = path.relative(root, candidate);
|
|
52
|
+
return relative === '' || (relative !== '..' && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative));
|
|
53
|
+
}
|
|
54
|
+
function readSmallFile(file) {
|
|
55
|
+
try {
|
|
56
|
+
const stat = statSync(file);
|
|
57
|
+
if (!stat.isFile() || stat.size > MAX_MARKER_BYTES)
|
|
58
|
+
return undefined;
|
|
59
|
+
return readFileSync(file, 'utf-8');
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* True when a package.json in `dir` holds runner configuration (a top-level
|
|
67
|
+
* `jest` or `vitest` key). Listing a runner as a dependency or in
|
|
68
|
+
* `scripts.test` does not: in a workspace the packages do that while the root
|
|
69
|
+
* config defines their projects and setup.
|
|
70
|
+
*/
|
|
71
|
+
function packageConfiguresRunner(dir) {
|
|
72
|
+
const text = readSmallFile(path.join(dir, 'package.json'));
|
|
73
|
+
if (text === undefined)
|
|
74
|
+
return false;
|
|
75
|
+
let pkg;
|
|
76
|
+
try {
|
|
77
|
+
pkg = safeJsonParse(text);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
if (!pkg || typeof pkg !== 'object')
|
|
83
|
+
return false;
|
|
84
|
+
return pkg.jest !== undefined || pkg.vitest !== undefined;
|
|
85
|
+
}
|
|
86
|
+
/** True when `dir` holds a Vitest or Jest configuration. */
|
|
87
|
+
export function isRunnerProjectDir(dir) {
|
|
88
|
+
if (RUNNER_CONFIG_FILES.some(name => existsSync(path.join(dir, name))))
|
|
89
|
+
return true;
|
|
90
|
+
for (const name of VITE_CONFIG_FILES) {
|
|
91
|
+
const text = readSmallFile(path.join(dir, name));
|
|
92
|
+
if (text !== undefined && /\btest\s*:/.test(text))
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
return packageConfiguresRunner(dir);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The nearest directory at or above `file` with runner configuration, searching no
|
|
99
|
+
* higher than `boundary`. Undefined when the file lies outside the boundary or
|
|
100
|
+
* no directory on the way has runner configuration.
|
|
101
|
+
*/
|
|
102
|
+
export function findRunnerProjectDir(file, boundary, cwd = process.cwd(), checked = new Map()) {
|
|
103
|
+
const root = realDir(boundary);
|
|
104
|
+
let dir = path.dirname(runnerFilePath(file, cwd));
|
|
105
|
+
if (!isWithin(root, dir))
|
|
106
|
+
return undefined;
|
|
107
|
+
for (;;) {
|
|
108
|
+
let isProject = checked.get(dir);
|
|
109
|
+
if (isProject === undefined) {
|
|
110
|
+
isProject = isRunnerProjectDir(dir);
|
|
111
|
+
checked.set(dir, isProject);
|
|
112
|
+
}
|
|
113
|
+
if (isProject)
|
|
114
|
+
return dir;
|
|
115
|
+
if (dir === root)
|
|
116
|
+
return undefined;
|
|
117
|
+
const parent = path.dirname(dir);
|
|
118
|
+
if (parent === dir)
|
|
119
|
+
return undefined;
|
|
120
|
+
dir = parent;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Directory to start the runner in for `file`: its runner project, unless the
|
|
125
|
+
* current directory is already inside that project (or none is found), in
|
|
126
|
+
* which case the current directory is kept.
|
|
127
|
+
*/
|
|
128
|
+
export function runnerCwdFor(file, options = {}) {
|
|
129
|
+
const cwd = options.cwd ?? process.cwd();
|
|
130
|
+
const project = findRunnerProjectDir(file, options.boundary ?? findProjectRoot(), cwd, options.checked);
|
|
131
|
+
if (!project || isWithin(project, realDir(cwd)))
|
|
132
|
+
return cwd;
|
|
133
|
+
return project;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Group `files` by the directory each must run from, in first-seen order.
|
|
137
|
+
* Files keep the spelling they were given.
|
|
138
|
+
*/
|
|
139
|
+
export function groupByRunnerProject(files, options = {}) {
|
|
140
|
+
const resolved = {
|
|
141
|
+
cwd: options.cwd ?? process.cwd(),
|
|
142
|
+
boundary: options.boundary ?? findProjectRoot(),
|
|
143
|
+
checked: options.checked ?? new Map(),
|
|
144
|
+
};
|
|
145
|
+
const groups = new Map();
|
|
146
|
+
for (const file of files) {
|
|
147
|
+
const cwd = runnerCwdFor(file, resolved);
|
|
148
|
+
const group = groups.get(cwd);
|
|
149
|
+
if (group)
|
|
150
|
+
group.push(file);
|
|
151
|
+
else
|
|
152
|
+
groups.set(cwd, [file]);
|
|
153
|
+
}
|
|
154
|
+
return [...groups].map(([cwd, groupFiles]) => ({ cwd, files: groupFiles }));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Handler-side check for an execute-tests payload. `testFiles` must name
|
|
158
|
+
* files or directories inside the project (#1126). An explicit `projectRoot`
|
|
159
|
+
* must be a directory inside the project, checked by realpath so `..`, an
|
|
160
|
+
* outside absolute path or a symlink pointing out is refused; relative test
|
|
161
|
+
* files are then read from it, and every path is returned absolute.
|
|
162
|
+
*/
|
|
163
|
+
export async function requireTestRunTargets(taskType, testFiles, projectRoot) {
|
|
164
|
+
const fileOptions = { allowMissing: true, allowDirectory: true };
|
|
165
|
+
if (projectRoot === undefined) {
|
|
166
|
+
const confined = await requirePayloadFiles(taskType, 'testFiles', testFiles, fileOptions);
|
|
167
|
+
return confined.success ? ok({ testFiles: confined.value }) : confined;
|
|
168
|
+
}
|
|
169
|
+
const checked = await requirePayloadPath(taskType, 'projectRoot', projectRoot, { allowDirectory: true });
|
|
170
|
+
if (!checked.success)
|
|
171
|
+
return checked;
|
|
172
|
+
const root = path.resolve(realDir(process.cwd()), checked.value);
|
|
173
|
+
let isDirectory = false;
|
|
174
|
+
try {
|
|
175
|
+
isDirectory = statSync(root).isDirectory();
|
|
176
|
+
}
|
|
177
|
+
catch { /* reported below */ }
|
|
178
|
+
if (!isDirectory) {
|
|
179
|
+
return err(new CallerInputError(`Invalid ${taskType} payload: 'projectRoot' must be a directory inside the project.`));
|
|
180
|
+
}
|
|
181
|
+
const confined = await requirePayloadFiles(taskType, 'testFiles', testFiles, { ...fileOptions, basePath: root });
|
|
182
|
+
if (!confined.success)
|
|
183
|
+
return confined;
|
|
184
|
+
return ok({ testFiles: confined.value.map(file => path.resolve(root, file)), projectRoot: root });
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=test-runner-project.js.map
|
|
@@ -84,7 +84,9 @@ export declare class SecurityVisualTestingSkill implements ISecurityVisualTestin
|
|
|
84
84
|
*/
|
|
85
85
|
validateURLSecurity(url: string): Promise<Result<URLSecurityValidation, Error>>;
|
|
86
86
|
/**
|
|
87
|
-
* Detect PII in screenshot
|
|
87
|
+
* Detect PII in screenshot.
|
|
88
|
+
* No OCR scanner is available, so the result says the screenshot was not
|
|
89
|
+
* scanned (#1228): detected is null and confidence -1, never "no PII found".
|
|
88
90
|
*/
|
|
89
91
|
detectPII(screenshotPath: string): Promise<Result<PIIDetectionResult, Error>>;
|
|
90
92
|
private ensureInitialized;
|
|
@@ -142,20 +142,17 @@ export class SecurityVisualTestingSkill {
|
|
|
142
142
|
accessibilityReport = accessibilityResult.value;
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
// Step 4: Detect PII in screenshots if enabled
|
|
145
|
+
// Step 4: Detect PII in screenshots if enabled. #1228: no scanner exists,
|
|
146
|
+
// so each screenshot is reported as not scanned, never as free of PII.
|
|
146
147
|
if (this.config.pii.enabled && options.detectPII !== false) {
|
|
147
|
-
// In a real implementation, this would scan all captured screenshots
|
|
148
|
-
// For now, we'll generate a placeholder result
|
|
149
148
|
for (const url of secureUrls) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
screenshot: { original: `${url}-screenshot.png` },
|
|
155
|
-
confidence: 0.95,
|
|
156
|
-
});
|
|
149
|
+
const screenshot = visualReport.results.find((r) => r.url === url)?.screenshot.path.value ?? '';
|
|
150
|
+
const detection = await this.detectPII(screenshot);
|
|
151
|
+
if (detection.success)
|
|
152
|
+
piiDetections.push(detection.value);
|
|
157
153
|
}
|
|
158
154
|
}
|
|
155
|
+
const piiScanned = piiDetections.filter((p) => p.measured);
|
|
159
156
|
// Step 5: Generate recommendations
|
|
160
157
|
const recommendations = this.generateRecommendations(urlValidations, visualReport, accessibilityReport, piiDetections);
|
|
161
158
|
// Build report
|
|
@@ -166,7 +163,7 @@ export class SecurityVisualTestingSkill {
|
|
|
166
163
|
visualTestsPassed: visualReport.passed,
|
|
167
164
|
visualTestsFailed: visualReport.failed,
|
|
168
165
|
accessibilityIssues: accessibilityReport?.totalViolations ?? 0,
|
|
169
|
-
piiDetections:
|
|
166
|
+
piiDetections: piiScanned.length > 0 ? piiScanned.filter((p) => p.detected === true).length : -1,
|
|
170
167
|
duration: Date.now() - startTime,
|
|
171
168
|
},
|
|
172
169
|
urlValidations,
|
|
@@ -216,14 +213,22 @@ export class SecurityVisualTestingSkill {
|
|
|
216
213
|
return err(new Error(`Screenshot capture failed: ${screenshotResult.error.message}`));
|
|
217
214
|
}
|
|
218
215
|
const screenshot = screenshotResult.value;
|
|
219
|
-
// Step 5: Detect PII if enabled
|
|
220
|
-
let piiDetected =
|
|
216
|
+
// Step 5: Detect PII if enabled. #1228: unscanned is null, not false.
|
|
217
|
+
let piiDetected = null;
|
|
218
|
+
let piiNotMeasuredReason = 'PII NOT MEASURED: no PII scan was requested';
|
|
221
219
|
let piiTypes = [];
|
|
222
220
|
let maskedPath;
|
|
223
221
|
if (this.config.pii.enabled && (options.maskPII ?? this.config.pii.autoMask)) {
|
|
224
|
-
const piiResult = await this.detectPII(screenshot.path || '
|
|
225
|
-
if (piiResult.success
|
|
226
|
-
|
|
222
|
+
const piiResult = await this.detectPII(screenshot.path || '');
|
|
223
|
+
if (!piiResult.success) {
|
|
224
|
+
piiNotMeasuredReason = `PII NOT MEASURED: ${piiResult.error.message}`;
|
|
225
|
+
}
|
|
226
|
+
else if (!piiResult.value.measured) {
|
|
227
|
+
piiNotMeasuredReason = piiResult.value.notMeasuredReason;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
piiDetected = piiResult.value.detected;
|
|
231
|
+
piiNotMeasuredReason = undefined;
|
|
227
232
|
piiTypes = piiResult.value.types;
|
|
228
233
|
maskedPath = piiResult.value.screenshot.masked;
|
|
229
234
|
}
|
|
@@ -242,6 +247,7 @@ export class SecurityVisualTestingSkill {
|
|
|
242
247
|
masked: maskedPath,
|
|
243
248
|
},
|
|
244
249
|
piiDetected,
|
|
250
|
+
...(piiNotMeasuredReason ? { piiNotMeasuredReason } : {}),
|
|
245
251
|
piiTypes,
|
|
246
252
|
securityValidation: validation,
|
|
247
253
|
timestamp: new Date(),
|
|
@@ -270,24 +276,18 @@ export class SecurityVisualTestingSkill {
|
|
|
270
276
|
path: result.screenshot.path.value,
|
|
271
277
|
timestamp: result.screenshot.timestamp,
|
|
272
278
|
}));
|
|
279
|
+
// #1228: a missing diff is -1 and a new baseline is `new`, not a 0% pass or a failure
|
|
273
280
|
const visualRegressions = visualReport.results.map((result) => ({
|
|
274
281
|
viewport: result.viewport,
|
|
275
|
-
diffPercentage: result.diff?.diffPercentage ??
|
|
276
|
-
status: result.status
|
|
282
|
+
diffPercentage: result.diff?.diffPercentage ?? -1,
|
|
283
|
+
status: result.status,
|
|
277
284
|
}));
|
|
278
|
-
//
|
|
285
|
+
// #1228: element positions are not compared across viewports, so layout
|
|
286
|
+
// shifts are reported as not measured instead of "no shifts detected".
|
|
279
287
|
const layoutShifts = [];
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
layoutShifts.push({
|
|
284
|
-
viewport: options.viewports[0],
|
|
285
|
-
affectedElements: [],
|
|
286
|
-
score: 0,
|
|
287
|
-
severity: 'low',
|
|
288
|
-
description: 'No significant layout shifts detected',
|
|
289
|
-
});
|
|
290
|
-
}
|
|
288
|
+
const layoutShiftsNotMeasured = options.detectLayoutShifts
|
|
289
|
+
? { layoutShiftsMeasured: false, layoutShiftsNotMeasuredReason: 'layout shift detection is not implemented: element positions were not compared across viewports' }
|
|
290
|
+
: {};
|
|
291
291
|
// Generate recommendations
|
|
292
292
|
const recommendations = [];
|
|
293
293
|
if (visualReport.failed > 0) {
|
|
@@ -301,6 +301,7 @@ export class SecurityVisualTestingSkill {
|
|
|
301
301
|
viewports: options.viewports,
|
|
302
302
|
screenshots,
|
|
303
303
|
layoutShifts,
|
|
304
|
+
...layoutShiftsNotMeasured,
|
|
304
305
|
visualRegressions,
|
|
305
306
|
recommendations,
|
|
306
307
|
};
|
|
@@ -367,20 +368,22 @@ export class SecurityVisualTestingSkill {
|
|
|
367
368
|
}
|
|
368
369
|
}
|
|
369
370
|
/**
|
|
370
|
-
* Detect PII in screenshot
|
|
371
|
+
* Detect PII in screenshot.
|
|
372
|
+
* No OCR scanner is available, so the result says the screenshot was not
|
|
373
|
+
* scanned (#1228): detected is null and confidence -1, never "no PII found".
|
|
371
374
|
*/
|
|
372
375
|
async detectPII(screenshotPath) {
|
|
373
376
|
try {
|
|
374
|
-
// In a real implementation, this would use OCR and pattern matching
|
|
375
|
-
// For now, we'll return a placeholder result
|
|
376
377
|
const result = {
|
|
377
|
-
detected:
|
|
378
|
+
detected: null,
|
|
378
379
|
types: [],
|
|
379
380
|
locations: [],
|
|
380
381
|
screenshot: {
|
|
381
382
|
original: screenshotPath,
|
|
382
383
|
},
|
|
383
|
-
confidence:
|
|
384
|
+
confidence: -1,
|
|
385
|
+
measured: false,
|
|
386
|
+
notMeasuredReason: 'PII NOT MEASURED: no screenshot PII scanner (OCR) is available, so the screenshot was not scanned',
|
|
384
387
|
};
|
|
385
388
|
return ok(result);
|
|
386
389
|
}
|
|
@@ -454,6 +457,17 @@ export class SecurityVisualTestingSkill {
|
|
|
454
457
|
affectedUrls: [], // Would need to track which URLs had PII
|
|
455
458
|
});
|
|
456
459
|
}
|
|
460
|
+
// #1228: an unscanned screenshot needs a manual check, it is not clean
|
|
461
|
+
const piiUnscanned = piiDetections.filter((p) => !p.measured);
|
|
462
|
+
if (piiUnscanned.length > 0) {
|
|
463
|
+
recommendations.push({
|
|
464
|
+
type: 'pii',
|
|
465
|
+
severity: 'medium',
|
|
466
|
+
description: `PII NOT MEASURED for ${piiUnscanned.length} screenshot(s): ${piiUnscanned[0].notMeasuredReason ?? 'not scanned'}`,
|
|
467
|
+
action: 'Review the screenshots for PII manually before sharing them',
|
|
468
|
+
affectedUrls: [],
|
|
469
|
+
});
|
|
470
|
+
}
|
|
457
471
|
return recommendations;
|
|
458
472
|
}
|
|
459
473
|
}
|
|
@@ -27,14 +27,19 @@ export interface SecurityIssue {
|
|
|
27
27
|
* PII detection result in screenshot
|
|
28
28
|
*/
|
|
29
29
|
export interface PIIDetectionResult {
|
|
30
|
-
|
|
30
|
+
/** null when no scan ran: not scanned is not "no PII found" (#1228). */
|
|
31
|
+
detected: boolean | null;
|
|
31
32
|
types: PIIType[];
|
|
32
33
|
locations: PIILocation[];
|
|
33
34
|
screenshot: {
|
|
34
35
|
original: string;
|
|
35
36
|
masked?: string;
|
|
36
37
|
};
|
|
38
|
+
/** -1 when no scan ran (#1228). */
|
|
37
39
|
confidence: number;
|
|
40
|
+
/** false when the screenshot was not scanned; see notMeasuredReason (#1228). */
|
|
41
|
+
measured: boolean;
|
|
42
|
+
notMeasuredReason?: string;
|
|
38
43
|
}
|
|
39
44
|
/**
|
|
40
45
|
* Types of PII that can be detected
|
|
@@ -77,6 +82,7 @@ export interface SecurityVisualAuditReport {
|
|
|
77
82
|
visualTestsPassed: number;
|
|
78
83
|
visualTestsFailed: number;
|
|
79
84
|
accessibilityIssues: number;
|
|
85
|
+
/** Screenshots with PII found; -1 when no screenshot was scanned (#1228). */
|
|
80
86
|
piiDetections: number;
|
|
81
87
|
duration: number;
|
|
82
88
|
};
|
|
@@ -126,7 +132,9 @@ export interface PIISafeScreenshot {
|
|
|
126
132
|
original: string;
|
|
127
133
|
masked?: string;
|
|
128
134
|
};
|
|
129
|
-
|
|
135
|
+
/** null when the screenshot was not scanned for PII (#1228). */
|
|
136
|
+
piiDetected: boolean | null;
|
|
137
|
+
piiNotMeasuredReason?: string;
|
|
130
138
|
piiTypes: PIIType[];
|
|
131
139
|
securityValidation: URLSecurityValidation;
|
|
132
140
|
timestamp: Date;
|
|
@@ -163,10 +171,18 @@ export interface ResponsiveVisualAuditReport {
|
|
|
163
171
|
timestamp: Date;
|
|
164
172
|
}>;
|
|
165
173
|
layoutShifts: LayoutShift[];
|
|
174
|
+
/**
|
|
175
|
+
* false when layout shifts were requested but not measured: an empty
|
|
176
|
+
* `layoutShifts` list is then not a clean result (#1228).
|
|
177
|
+
*/
|
|
178
|
+
layoutShiftsMeasured?: boolean;
|
|
179
|
+
layoutShiftsNotMeasuredReason?: string;
|
|
166
180
|
visualRegressions: Array<{
|
|
167
181
|
viewport: Viewport;
|
|
182
|
+
/** -1 when no diff was computed, e.g. a new baseline (#1228). */
|
|
168
183
|
diffPercentage: number;
|
|
169
|
-
|
|
184
|
+
/** `new`: no baseline existed, so nothing was compared. */
|
|
185
|
+
status: 'passed' | 'failed' | 'new';
|
|
170
186
|
}>;
|
|
171
187
|
recommendations: string[];
|
|
172
188
|
}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - Daily Markdown log entries
|
|
12
12
|
*/
|
|
13
13
|
import { BaseWorker } from '../base-worker.js';
|
|
14
|
-
import {
|
|
14
|
+
import { createPatternLifecycleManagerWhenUnlocked, } from '../../learning/pattern-lifecycle.js';
|
|
15
15
|
import { getUnifiedMemory } from '../../kernel/unified-memory.js';
|
|
16
16
|
import { DailyLogger } from '../../learning/daily-log.js';
|
|
17
17
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
@@ -53,7 +53,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
|
|
|
53
53
|
const unifiedMemory = getUnifiedMemory();
|
|
54
54
|
await unifiedMemory.initialize();
|
|
55
55
|
const db = unifiedMemory.getDatabase();
|
|
56
|
-
this.lifecycleManager =
|
|
56
|
+
this.lifecycleManager = await createPatternLifecycleManagerWhenUnlocked(db, {
|
|
57
57
|
promotionRewardThreshold: 0.7,
|
|
58
58
|
promotionMinOccurrences: 2,
|
|
59
59
|
promotionMinSuccessRate: 0.7,
|
|
@@ -117,7 +117,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
|
|
|
117
117
|
let promoted = 0;
|
|
118
118
|
let promotionChecked = 0;
|
|
119
119
|
try {
|
|
120
|
-
const promotionResult = lifecycleManager.
|
|
120
|
+
const promotionResult = await lifecycleManager.promoteEligiblePatternsWhenUnlocked();
|
|
121
121
|
promoted = promotionResult.promoted;
|
|
122
122
|
promotionChecked = promotionResult.checked;
|
|
123
123
|
if (promoted > 0) {
|
|
@@ -139,7 +139,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
|
|
|
139
139
|
let deprecated = 0;
|
|
140
140
|
let deprecationChecked = 0;
|
|
141
141
|
try {
|
|
142
|
-
const deprecationResult = lifecycleManager.
|
|
142
|
+
const deprecationResult = await lifecycleManager.deprecateStalePatternsWhenUnlocked();
|
|
143
143
|
deprecated = deprecationResult.deprecated;
|
|
144
144
|
deprecationChecked = deprecationResult.checked;
|
|
145
145
|
if (deprecated > 0) {
|
|
@@ -163,7 +163,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
|
|
|
163
163
|
const daysSinceLastRun = this.lastRunTimestamp > 0
|
|
164
164
|
? (Date.now() - this.lastRunTimestamp) / (1000 * 60 * 60 * 24)
|
|
165
165
|
: 1;
|
|
166
|
-
const decayResult = lifecycleManager.
|
|
166
|
+
const decayResult = await lifecycleManager.applyConfidenceDecayWhenUnlocked(Math.min(daysSinceLastRun, 7));
|
|
167
167
|
decayed = decayResult.decayed;
|
|
168
168
|
}
|
|
169
169
|
catch (error) {
|
|
@@ -16,7 +16,7 @@ import { BaseWorker } from '../base-worker.js';
|
|
|
16
16
|
import { ALL_DOMAINS } from '../../shared/types/index.js';
|
|
17
17
|
import { TimeRange } from '../../shared/value-objects/index.js';
|
|
18
18
|
import { DreamEngine } from '../../learning/dream/index.js';
|
|
19
|
-
import {
|
|
19
|
+
import { createPatternLifecycleManagerWhenUnlocked, } from '../../learning/pattern-lifecycle.js';
|
|
20
20
|
import { getUnifiedMemory, findProjectRoot } from '../../kernel/unified-memory.js';
|
|
21
21
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
22
22
|
import { ExperienceConsolidator } from '../../learning/experience-consolidation.js';
|
|
@@ -77,7 +77,7 @@ export class LearningConsolidationWorker extends BaseWorker {
|
|
|
77
77
|
const unifiedMemory = getUnifiedMemory();
|
|
78
78
|
await unifiedMemory.initialize();
|
|
79
79
|
const db = unifiedMemory.getDatabase();
|
|
80
|
-
this.lifecycleManager =
|
|
80
|
+
this.lifecycleManager = await createPatternLifecycleManagerWhenUnlocked(db, {
|
|
81
81
|
promotionRewardThreshold: 0.7,
|
|
82
82
|
promotionMinOccurrences: 2,
|
|
83
83
|
promotionMinSuccessRate: 0.7,
|
|
@@ -332,7 +332,7 @@ export class LearningConsolidationWorker extends BaseWorker {
|
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
334
|
// Step 3: Promote eligible patterns
|
|
335
|
-
const promotionResult = lifecycleManager.
|
|
335
|
+
const promotionResult = await lifecycleManager.promoteEligiblePatternsWhenUnlocked();
|
|
336
336
|
patternsPromoted = promotionResult.promoted;
|
|
337
337
|
if (patternsPromoted > 0) {
|
|
338
338
|
findings.push({
|
|
@@ -348,7 +348,7 @@ export class LearningConsolidationWorker extends BaseWorker {
|
|
|
348
348
|
});
|
|
349
349
|
}
|
|
350
350
|
// Step 4: Deprecate underperforming patterns
|
|
351
|
-
const deprecationResult = lifecycleManager.
|
|
351
|
+
const deprecationResult = await lifecycleManager.deprecateStalePatternsWhenUnlocked();
|
|
352
352
|
patternsDeprecated = deprecationResult.deprecated;
|
|
353
353
|
if (patternsDeprecated > 0) {
|
|
354
354
|
findings.push({
|
|
@@ -405,7 +405,7 @@ export class LearningConsolidationWorker extends BaseWorker {
|
|
|
405
405
|
? (Date.now() - this.lastRunTimestamp) / (1000 * 60 * 60 * 24)
|
|
406
406
|
: 1;
|
|
407
407
|
if (daysSinceLastRun >= 0.5) { // Apply decay at least twice per day
|
|
408
|
-
const decayResult = lifecycleManager.
|
|
408
|
+
const decayResult = await lifecycleManager.applyConfidenceDecayWhenUnlocked(Math.min(daysSinceLastRun, 7));
|
|
409
409
|
confidenceDecayApplied = decayResult.decayed;
|
|
410
410
|
}
|
|
411
411
|
// Step 6: Generate lifecycle statistics finding
|
|
@@ -591,7 +591,8 @@ export class LearningConsolidationWorker extends BaseWorker {
|
|
|
591
591
|
const { v4: uuidv4 } = await import('uuid');
|
|
592
592
|
const patternId = uuidv4();
|
|
593
593
|
const description = `Auto-extracted pattern from ${candidate.sourceExperiences} experiences. Avg reward: ${candidate.avgReward.toFixed(3)}`;
|
|
594
|
-
db.
|
|
594
|
+
// #1283: queued so a locked memory.db does not freeze the MCP server.
|
|
595
|
+
await unifiedMemory.writeWhenUnlocked(() => db.prepare(`
|
|
595
596
|
INSERT INTO qe_patterns (
|
|
596
597
|
id, pattern_type, qe_domain, domain, name, description,
|
|
597
598
|
confidence, usage_count, success_rate, quality_score, tier,
|
|
@@ -606,7 +607,7 @@ export class LearningConsolidationWorker extends BaseWorker {
|
|
|
606
607
|
tags: candidate.actions,
|
|
607
608
|
sourceType: 'experience-extraction',
|
|
608
609
|
extractedAt: new Date().toISOString(),
|
|
609
|
-
}), Math.round(candidate.sourceExperiences * candidate.successRate));
|
|
610
|
+
}), Math.round(candidate.sourceExperiences * candidate.successRate)));
|
|
610
611
|
// Pair the qe_patterns row with an embedding so HNSW pattern recall
|
|
611
612
|
// doesn't see this as a "ghost" (ADR-058 embedding-locality). Fail-soft.
|
|
612
613
|
const { ensurePatternEmbedding } = await import('../../learning/embed-and-insert-pattern.js');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "3.15.
|
|
3
|
+
"version": "3.15.16",
|
|
4
4
|
"description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -68,8 +68,9 @@
|
|
|
68
68
|
"scripts": {
|
|
69
69
|
"preinstall": "node scripts/preinstall.cjs || true",
|
|
70
70
|
"postinstall": "node scripts/postinstall.cjs",
|
|
71
|
-
"build": "tsc && npm run build:esm && npm run build:cli && npm run build:mcp",
|
|
71
|
+
"build": "tsc && npm run build:esm && npm run build:wasm-assets && npm run build:cli && npm run build:mcp",
|
|
72
72
|
"build:esm": "node scripts/fix-esm-specifiers.mjs",
|
|
73
|
+
"build:wasm-assets": "node scripts/copy-wasm-assets.mjs",
|
|
73
74
|
"build:cli": "node scripts/build-cli.mjs",
|
|
74
75
|
"build:mcp": "node scripts/build-mcp.mjs",
|
|
75
76
|
"prepublishOnly": "node scripts/sync-agents.cjs && node scripts/prepare-assets.cjs",
|
|
@@ -301,6 +302,7 @@
|
|
|
301
302
|
"dist/**/*.d.ts",
|
|
302
303
|
"dist/**/*.json",
|
|
303
304
|
"dist/**/*.node",
|
|
305
|
+
"dist/**/*.wasm",
|
|
304
306
|
"assets/**",
|
|
305
307
|
"schemas/**",
|
|
306
308
|
"scripts/postinstall.cjs",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.14");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-HSDWPQQY.js";import"./chunk-UPWLMIDY.js";import"./chunk-MKYOE7NE.js";import"./chunk-XN3KCKAM.js";import"./chunk-L5VSLPMW.js";import"./chunk-V6SE2ZU2.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.14");process.exit(0)}
|
|
2
|
-
import{a as x}from"./chunk-YKQWIXUY.js";import{c as f}from"./chunk-C3OIBFAA.js";import"./chunk-IRPNEXOU.js";import"./chunk-7QUSNBAA.js";import"./chunk-V6SE2ZU2.js";x();import{createRequire as w}from"module";var S=f.create("agent-booster-wasm"),t={JavaScript:0,TypeScript:1,Python:2,Rust:3,Go:4,Java:5,C:6,Cpp:7},l={ExactReplace:0,FuzzyReplace:1,InsertAfter:2,InsertBefore:3,Append:4},v={0:"JavaScript",1:"TypeScript",2:"Python",3:"Rust",4:"Go",5:"Java",6:"C",7:"Cpp"},a=null,u=null,p=null;async function g(){if(a)return!0;if(p)return!1;try{if(a=w(import.meta.url)("./agent_booster_wasm.js"),!a)throw new Error("WASM module loaded but is null");return u=new a.AgentBoosterWasm,!0}catch(e){return p=e,console.warn("[AgentBoosterWASM] Failed to load WASM module:",e),!1}}function A(e){return{".js":t.JavaScript,".mjs":t.JavaScript,".cjs":t.JavaScript,".jsx":t.JavaScript,".ts":t.TypeScript,".tsx":t.TypeScript,".mts":t.TypeScript,".cts":t.TypeScript,".py":t.Python,".rs":t.Rust,".go":t.Go,".java":t.Java,".c":t.C,".h":t.C,".cpp":t.Cpp,".cc":t.Cpp,".cxx":t.Cpp,".hpp":t.Cpp}[e.toLowerCase()]??t.JavaScript}var M=[{name:"var-to-const",detect:(e,r)=>e.includes("var ")&&r.includes("const "),apply:(e,r)=>e.replace(/\bvar\s+/g,"const ")},{name:"var-to-let",detect:(e,r)=>e.includes("var ")&&r.includes("let "),apply:(e,r)=>e.replace(/\bvar\s+/g,"let ")},{name:"add-types-function",detect:(e,r)=>e.includes("function")&&!e.includes(":")&&r.includes(":"),apply:(e,r)=>r},{name:"async-wrapper",detect:(e,r)=>!e.includes("async")&&r.includes("async")&&r.includes("await"),apply:(e,r)=>r},{name:"try-catch-wrapper",detect:(e,r)=>!e.includes("try {")&&r.includes("try {"),apply:(e,r)=>r},{name:"null-check",detect:(e,r)=>!e.includes("if (!")&&!e.includes("if (!")&&(r.includes("if (!")||r.includes("?.")),apply:(e,r)=>r},{name:"test-assertion",detect:(e,r)=>e.includes("test(")&&!e.includes("expect(")&&r.includes("expect("),apply:(e,r)=>r}];function y(e,r){for(let n of M)if(n.detect(e,r))try{return{success:!0,code:n.apply(e,r),pattern:n.name}}catch(s){S.debug("Pattern transform failed, trying next",{pattern:n.name,error:s instanceof Error?s.message:String(s)});continue}return{success:!1,code:r}}async function b(e,r,n,s={}){let o=performance.now(),{confidenceThreshold:T=.5,allowFallback:d=!0}=s;if(!e.trim())return{success:!0,mergedCode:r,confidence:1,strategy:l.Append,syntaxValid:!0,source:"fallback",latencyMs:performance.now()-o};if(await g()&&u&&a)try{let c=a.WasmLanguage[v[n]],i=u.apply_edit(e,r,c);return{success:!0,mergedCode:i.merged_code,confidence:i.confidence,strategy:i.strategy,syntaxValid:i.syntax_valid,source:"wasm",latencyMs:performance.now()-o}}catch(c){let i=c;if(d){let m=y(e,r);if(m.success)return{success:!0,mergedCode:m.code,confidence:.7,strategy:l.FuzzyReplace,syntaxValid:!0,source:"pattern",latencyMs:performance.now()-o}}return{success:!1,mergedCode:r,confidence:0,strategy:l.Append,syntaxValid:!1,source:"fallback",latencyMs:performance.now()-o,error:i.message}}if(d){let c=y(e,r);return{success:c.success,mergedCode:c.code,confidence:c.success?.7:0,strategy:l.FuzzyReplace,syntaxValid:!0,source:"pattern",latencyMs:performance.now()-o}}return{success:!1,mergedCode:r,confidence:0,strategy:l.Append,syntaxValid:!1,source:"fallback",latencyMs:performance.now()-o,error:p?.message??"WASM not available"}}async function W(e,r={}){return Promise.all(e.map(({original:n,edit:s,language:o})=>b(n,s,o,r)))}async function C(){return g()}async function L(){return await g()&&a?a.AgentBoosterWasm.version():"unavailable"}async function R(){if(await g(),u&&a)try{u.apply_edit("function x() {}","function x() {}",a.WasmLanguage.JavaScript)}catch(e){console.debug("[AgentBoosterWASM] Warmup error:",e instanceof Error?e.message:e)}}var _={transform:b,batchTransform:W,isWasmAvailable:C,getVersion:L,warmup:R,Language:t,MergeStrategy:l,languageFromExtension:A};export{t as Language,l as MergeStrategy,W as batchTransform,_ as default,L as getVersion,C as isWasmAvailable,A as languageFromExtension,b as transform,R as warmup};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.14");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-MQXWG55U.js";import"./chunk-H3C5FJRH.js";import"./chunk-E2JLAW3U.js";import"./chunk-Z2S7DNFP.js";import"./chunk-HHBF2BZC.js";import"./chunk-WCPSR4MJ.js";import"./chunk-JJHLGGPP.js";import"./chunk-X6NJOT3V.js";import"./chunk-5Z4MO2F3.js";import"./chunk-YGOSSVY5.js";import"./chunk-MB4UKUBV.js";import"./chunk-NZQYJCO6.js";import"./chunk-O5CEL447.js";import"./chunk-HV43NX4A.js";import"./chunk-UNYTHZDZ.js";import"./chunk-UMHFTQTR.js";import"./chunk-JK6PMLQQ.js";import"./chunk-6NIGSY5L.js";import"./chunk-XN3KCKAM.js";import"./chunk-UDSB3XCG.js";import"./chunk-Z54G2YOL.js";import"./chunk-HEDGFKC5.js";import"./chunk-AJVLVF7V.js";import"./chunk-7SQTLUEN.js";import"./chunk-57DRT6UA.js";import"./chunk-K7GFYFBO.js";import"./chunk-L752CNG3.js";import"./chunk-BNG4J3CE.js";import"./chunk-QP6GL3O5.js";import"./chunk-RE6JTSDM.js";import"./chunk-LTGQJYYO.js";import"./chunk-YKQWIXUY.js";import"./chunk-C3OIBFAA.js";import"./chunk-IRPNEXOU.js";import"./chunk-7QUSNBAA.js";import"./chunk-E7OR6V3V.js";import"./chunk-O756AOUX.js";import"./chunk-2UZBLC5H.js";import"./chunk-CAZM63TP.js";import"./chunk-L7PC675Y.js";import"./chunk-2W5MQDHM.js";import"./chunk-INGXD5IX.js";import"./chunk-L5VSLPMW.js";import"./chunk-U6IOQKCT.js";import"./chunk-V6SE2ZU2.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.14");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-NPCXGX7N.js";import"./chunk-HTVGHHX2.js";import"./chunk-QUZ745UQ.js";import"./chunk-JK6PMLQQ.js";import"./chunk-6NIGSY5L.js";import"./chunk-XN3KCKAM.js";import"./chunk-UDSB3XCG.js";import"./chunk-Z54G2YOL.js";import"./chunk-HEDGFKC5.js";import"./chunk-AJVLVF7V.js";import"./chunk-7SQTLUEN.js";import"./chunk-57DRT6UA.js";import"./chunk-K7GFYFBO.js";import"./chunk-BNG4J3CE.js";import"./chunk-QP6GL3O5.js";import"./chunk-LTGQJYYO.js";import"./chunk-YKQWIXUY.js";import"./chunk-C3OIBFAA.js";import"./chunk-IRPNEXOU.js";import"./chunk-7QUSNBAA.js";import"./chunk-E7OR6V3V.js";import"./chunk-2UZBLC5H.js";import"./chunk-CAZM63TP.js";import"./chunk-INGXD5IX.js";import"./chunk-L5VSLPMW.js";import"./chunk-U6IOQKCT.js";import"./chunk-V6SE2ZU2.js";export{l as MCPToolBase,k as defaultToolLogger,j as getKernel,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.14");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-P2TPH3TC.js";import"./chunk-NPCXGX7N.js";import"./chunk-HTVGHHX2.js";import"./chunk-QUZ745UQ.js";import"./chunk-JK6PMLQQ.js";import"./chunk-6NIGSY5L.js";import"./chunk-XN3KCKAM.js";import"./chunk-UDSB3XCG.js";import"./chunk-Z54G2YOL.js";import"./chunk-HEDGFKC5.js";import"./chunk-AJVLVF7V.js";import"./chunk-7SQTLUEN.js";import"./chunk-57DRT6UA.js";import"./chunk-K7GFYFBO.js";import"./chunk-BNG4J3CE.js";import"./chunk-QP6GL3O5.js";import"./chunk-LTGQJYYO.js";import"./chunk-YKQWIXUY.js";import"./chunk-C3OIBFAA.js";import"./chunk-IRPNEXOU.js";import"./chunk-7QUSNBAA.js";import"./chunk-E7OR6V3V.js";import"./chunk-2UZBLC5H.js";import"./chunk-CAZM63TP.js";import"./chunk-INGXD5IX.js";import"./chunk-L5VSLPMW.js";import"./chunk-U6IOQKCT.js";import"./chunk-V6SE2ZU2.js";export{a as BrowserWorkflowTool};
|