agentic-qe 3.15.9 → 3.15.11
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/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +365 -0
- package/README.md +8 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/a2a/agent-cards/generator.js +6 -3
- package/dist/adapters/a2a/tasks/task-router.js +3 -1
- package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
- package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
- package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
- package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
- package/dist/adapters/ag-ui/json-patch.js +10 -6
- package/dist/adapters/trajectory-adapter.js +1 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
- package/dist/agents/overlay-loader.js +26 -21
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-TIDSQ3ZK.js +2 -0
- package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-G3EPBVA7.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-ARC5C7GW.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
- package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-36DTATJV.js} +4 -4
- package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-K4I4QDXB.js} +2 -2
- package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-WQSJSJZF.js} +3 -3
- package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-BB4K67MT.js} +2 -2
- package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-CU3GOIU3.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-NJQX7ZNB.js} +2 -2
- package/dist/cli/chunks/browser-6YJF4FQW.js +4 -0
- package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
- package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-25P77WA5.js} +1 -1
- package/dist/cli/chunks/chunk-2CW7VRPH.js +141 -0
- package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
- package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-2KFFEKSI.js} +2 -2
- package/dist/cli/chunks/chunk-2VLYUF7U.js +2 -0
- package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-325QCVDI.js} +2 -2
- package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-35M2X3C5.js} +2 -2
- package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-3RHOPP7A.js} +1 -1
- package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-4HJKQIX5.js} +2 -2
- package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
- package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-4RAQ7PJA.js} +8 -8
- package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-4RH5I24Q.js} +2 -2
- package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-4UBVAJFO.js} +3 -3
- package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-4UX35V7P.js} +2 -2
- package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-4X4MWMHB.js} +2 -2
- package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-55CH76ZO.js} +3 -3
- package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-57LNKSW7.js} +2 -2
- package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
- package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-5HQP4SLM.js} +2 -2
- package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-5MNASJOH.js} +2 -2
- package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-5MTWCCZJ.js} +2 -2
- package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-5N25I53C.js} +2 -2
- package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-5WYZHDIZ.js} +1 -1
- package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-5YLOLACR.js} +2 -2
- package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-672XOJDG.js} +2 -2
- package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-6NA3KZZT.js} +10 -10
- package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
- package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-76SNL7GU.js} +2 -2
- package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-7HEMJHPP.js} +2 -2
- package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-7R5HC56U.js} +1 -1
- package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-AFFN6E6Q.js} +2 -2
- package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-AMZKAJLJ.js} +2 -2
- package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-AP3ADWDK.js} +2 -2
- package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-APPZATXA.js} +2 -2
- package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-AUUJBXWX.js} +25 -20
- package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-BTVWA35P.js} +2 -2
- package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-BZPE3LDO.js} +2 -2
- package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-CFWGGRE7.js} +1 -1
- package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-CIAL4YRY.js} +2 -2
- package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-CO3DX2AX.js} +2 -2
- package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-DDEOZPWJ.js} +2 -2
- package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-DOBZPSKE.js} +1 -1
- package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-DOFREOPQ.js} +2 -2
- package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-E44NNCEU.js} +2 -2
- package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-E6PF35JZ.js} +2 -2
- package/dist/cli/chunks/chunk-EBPJY4DI.js +3 -0
- package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EH2S6AOR.js} +2 -2
- package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-EIDJNT5C.js} +1 -1
- package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-EJPK7OTR.js} +2 -2
- package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EK5GMOSO.js} +1 -1
- package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ERN43HOX.js} +430 -433
- package/dist/cli/chunks/chunk-ETVAYGCB.js +180 -0
- package/dist/cli/chunks/chunk-EWPUQCN4.js +2 -0
- package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-FL32MTKT.js} +2 -2
- package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
- package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-FUYOOKTH.js} +5 -5
- package/dist/cli/chunks/chunk-FWSGPE3V.js +12 -0
- package/dist/cli/chunks/chunk-FZHSG75I.js +3 -0
- package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-G2IJFNZS.js} +2 -2
- package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-G4CKPWF6.js} +1 -1
- package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-G4FAPO57.js} +5 -5
- package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-G77MLBDF.js} +2 -2
- package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-GBFUANTC.js} +1 -1
- package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-GVKVJJQX.js} +2 -2
- package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GWJWSLDA.js} +2 -2
- package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-H43AFUKL.js} +2 -2
- package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
- package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-HDJUYAZG.js} +1 -1
- package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-HDNWSKHA.js} +2 -2
- package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-HFFPYC4G.js} +2 -2
- package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-HJ3XNTTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-HYXUN7BW.js} +1 -1
- package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-I36CRDHF.js} +2 -2
- package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-I4K2HTQU.js} +1 -1
- package/dist/cli/chunks/chunk-IENZSO3K.js +4 -0
- package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
- package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-IOZRKXR5.js} +2 -2
- package/dist/cli/chunks/chunk-ITL3IN2E.js +3 -0
- package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-ITPGWGQS.js} +14 -14
- package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-IW6WDGHM.js} +1 -1
- package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-J4JMCZVA.js} +2 -2
- package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-JFLU7L3W.js} +2 -2
- package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-JGJXXAS6.js} +4 -4
- package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-JUMICXM6.js} +2 -2
- package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-K2HBNYAZ.js} +2 -2
- package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-K7V2WZNF.js} +1 -1
- package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-KDI5JOYZ.js} +2 -2
- package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-KJCIMNHS.js} +1 -1
- package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-KKYO2NKV.js} +2 -2
- package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-KSE5TDM5.js} +2 -2
- package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-KSLLHFVY.js} +1 -1
- package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-KXS3Y2AX.js} +2 -2
- package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LBX7M4LW.js} +2 -2
- package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-LCVEEII4.js} +2 -2
- package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-LD5CFK53.js} +54 -33
- package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-LPU6PAJE.js} +2 -2
- package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-LQ4NUC6Q.js} +2 -2
- package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
- package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-LXQ3B4RY.js} +2 -2
- package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-M5RQ6U3G.js} +2 -2
- package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-M5XYIQYZ.js} +2 -2
- package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
- package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-MIK4RBEH.js} +1 -1
- package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-NC6K7SCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-NKTWKYHB.js} +2 -2
- package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-NPZOBSAN.js} +2 -2
- package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-NQZNMCZU.js} +2 -2
- package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-NT7JRHMH.js} +1 -1
- package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-NTB342NJ.js} +1 -1
- package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-O4JAKWWM.js} +13 -13
- package/dist/cli/chunks/chunk-OD5D4LSZ.js +2 -0
- package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-OH5V5EJW.js} +2 -2
- package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-OHR7C777.js} +2 -2
- package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-OURITHFV.js} +2 -2
- package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-OV5RPLKV.js} +2 -2
- package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-OYJC3YON.js} +2 -2
- package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-QDESWOZP.js} +2 -2
- package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
- package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-R5LGV6GZ.js} +2 -2
- package/dist/cli/chunks/chunk-RBZCA7SD.js +12 -0
- package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
- package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
- package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-RTY7VSZB.js} +2 -2
- package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-S6IYEBAI.js} +2 -2
- package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-SMVVAVN2.js} +2 -2
- package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-T5KHJ3J7.js} +5 -5
- package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-TCYSBC7Y.js} +1 -1
- package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-TFW7CCKS.js} +1 -1
- package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
- package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-U3LJNNVJ.js} +5 -5
- package/dist/cli/chunks/chunk-UKKYMW3S.js +3 -0
- package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-UMVSWQNB.js} +2 -2
- package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-UTTSH4NH.js} +3 -3
- package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-V5AADCBC.js} +1 -1
- package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-V7DA4HAK.js} +1 -1
- package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-VBK2YAYY.js} +2 -2
- package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-VEEYL2CZ.js} +2 -2
- package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-VLD7Z2ED.js} +3 -3
- package/dist/cli/chunks/chunk-VO3DRK4P.js +3 -0
- package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-VWUZSNVC.js} +1 -1
- package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-VYTILW4R.js} +2 -2
- package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-WCAVIJ64.js} +1 -1
- package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-WCVCOT4E.js} +2 -2
- package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-WM3SRRA6.js} +2 -2
- package/dist/cli/chunks/chunk-X3PZCXWG.js +2 -0
- package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-X4J73KP3.js} +1 -1
- package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-XDI5X3FR.js} +1 -1
- package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-XGBU3KEM.js} +2 -2
- package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-XGPTZUKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-XJKZ7FTR.js} +2 -2
- package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-XNLIWQYE.js} +2 -2
- package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-XS2XF3YG.js} +6 -5
- package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
- package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-YBBT3YYG.js} +1 -1
- package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-YNOCQ2SL.js} +1 -1
- package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-YOCULVHR.js} +1 -1
- package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-YPX2TV3M.js} +1 -1
- package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-Z2EA7A4Z.js} +1 -1
- package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-ZMC543GI.js} +2 -2
- package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
- package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-ZP75ASUU.js} +1 -1
- package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-ZQHDA4O7.js} +1 -1
- package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-6GUFAZMJ.js} +2 -2
- package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-J665XNOX.js} +2 -2
- package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-PEQQQWVD.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-HHB2JSKH.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-JKUJRWPN.js} +2 -2
- package/dist/cli/chunks/client-HL2COSFM.js +2 -0
- package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-Y77BWTAN.js} +2 -2
- package/dist/cli/chunks/{code-ONKLMVQ2.js → code-LV2HAGJY.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4GKKSETB.js} +2 -2
- package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-WMKBYE5Y.js} +2 -2
- package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-SBGFAOIJ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-AQHFIJXC.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-26AYFS2E.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-4UD3DK55.js} +2 -2
- package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
- package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-TP4NZCG4.js} +2 -2
- package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B2KIXHAI.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
- package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-AVZEQZ4W.js} +2 -2
- package/dist/cli/chunks/daemon-P574WWBW.js +18 -0
- package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-XM2A7LQU.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
- package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-TYR7HT23.js} +2 -2
- package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-2DGVQGLS.js} +2 -2
- package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-RRA4ZOMF.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-IVZEZ5RB.js} +2 -2
- package/dist/cli/chunks/domain-transfer-DOBI67K6.js +2 -0
- package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
- package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-QV4LVPUF.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-DAPKT763.js} +3 -3
- package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-WVRFPHX7.js} +2 -2
- package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-DEFTUIYT.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-O7ZXDDCD.js} +2 -2
- package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
- package/dist/cli/chunks/fleet-FVAUMKUT.js +46 -0
- package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-LS4LZJDR.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-RFTERD4K.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
- package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-PHL3F2PR.js} +2 -2
- package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-GYJ6D4QM.js} +36 -36
- package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-ZIMM647V.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
- package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-VOMBXJXG.js} +2 -2
- package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-PSMUBWK5.js} +26 -25
- package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
- package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-2YNTFBWJ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-XHJDPVAZ.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
- package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-GNSIDRNG.js} +24 -24
- package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-LQDM7IU2.js} +4 -4
- package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
- package/dist/cli/chunks/{load-ZM43WGDO.js → load-YATHI72E.js} +2 -2
- package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
- package/dist/cli/chunks/mcp-4Y6GDLYK.js +2 -0
- package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-OUW3L7H2.js} +5 -5
- package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
- package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-UBZJXAD2.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-AMMNWVH5.js} +2 -2
- package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-Y44WDOER.js} +69 -25
- package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-ESR42RME.js} +2 -2
- package/dist/cli/chunks/pipeline-EDTS6OSC.js +19 -0
- package/dist/cli/chunks/{platform-KJDABL5C.js → platform-5WONJSUX.js} +2 -2
- package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-IJXPCLD4.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
- package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
- package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
- package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-DRD3GVNW.js} +2 -2
- package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-KTGW2HMJ.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
- package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-DV2WPRRS.js} +2 -2
- package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-HFUAFVZC.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
- package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RQRVOKVM.js} +2 -2
- package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-QWSKS5OY.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-RBAYRCHX.js} +2 -2
- package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
- package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
- package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-FMPP3XKO.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-KZZT4HWF.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
- package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
- package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
- package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
- package/dist/cli/chunks/{security-AUDTRX3I.js → security-CUEA3UIM.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
- package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-IAHA3M6B.js} +2 -2
- package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-AFUCASTX.js} +2 -2
- package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-AQRV6JJ6.js} +2 -2
- package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-GX7FMJHL.js} +2 -2
- package/dist/cli/chunks/sync-XW5TLZ7M.js +2 -0
- package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-TFKVUTNF.js} +2 -2
- package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
- package/dist/cli/chunks/{test-XFSGQELD.js → test-D2XDJNDX.js} +17 -17
- package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
- package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-TS6I2PR7.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-HBBLPCZ3.js +2 -0
- package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-3MBUX4PR.js} +2 -2
- package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-ZWMQO3L2.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
- package/dist/cli/chunks/{types-JTWLBAZJ.js → types-5YEMGPSQ.js} +2 -2
- package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
- package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
- package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-2TPBKIHI.js} +2 -2
- package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-XRAXXFW6.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-IYSCS3BZ.js} +2 -2
- package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-U6XWFRVT.js} +2 -2
- package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
- package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-K7YX2AO6.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-YBNKMOP6.js} +2 -2
- package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-UAJUILFQ.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
- package/dist/cli/chunks/wrappers-AVZ3GPAL.js +2 -0
- package/dist/cli/commands/fleet.js +23 -13
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
- package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
- package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
- package/dist/cli/commands/learning.js +5 -3
- package/dist/cli/commands/ruvector-commands.js +2 -1
- package/dist/cli/commands/test.js +11 -2
- package/dist/cli/handlers/init-handler.d.ts +12 -0
- package/dist/cli/handlers/init-handler.js +27 -12
- package/dist/cli/utils/ci-output.d.ts +11 -0
- package/dist/cli/utils/ci-output.js +2 -0
- package/dist/cli/utils/fleet-operation.d.ts +32 -0
- package/dist/cli/utils/fleet-operation.js +71 -0
- package/dist/cli/utils/fleet-result.d.ts +31 -0
- package/dist/cli/utils/fleet-result.js +124 -0
- package/dist/cli/utils/progress.d.ts +16 -2
- package/dist/cli/utils/progress.js +31 -14
- package/dist/context/sources/git-source.js +6 -2
- package/dist/coordination/consensus/consensus-engine.js +3 -1
- package/dist/coordination/handlers/code-intelligence-handlers.js +63 -7
- package/dist/coordination/handlers/coverage-collection.js +3 -1
- package/dist/coordination/handlers/coverage-handlers.js +10 -1
- package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
- package/dist/coordination/handlers/coverage-runner.js +6 -22
- package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
- package/dist/coordination/handlers/coverage-stderr.js +39 -0
- package/dist/coordination/handlers/coverage-target.js +6 -3
- package/dist/coordination/handlers/handler-utils.js +3 -1
- package/dist/coordination/handlers/requirements-handlers.js +18 -3
- package/dist/coordination/handlers/security-handlers.js +45 -21
- package/dist/coordination/handlers/test-execution-handlers.js +25 -7
- package/dist/coordination/mincut/queen-integration.d.ts +39 -1
- package/dist/coordination/mincut/queen-integration.js +83 -6
- package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
- package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
- package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
- package/dist/coordination/protocols/learning-consolidation.js +71 -22
- package/dist/coordination/queen-coordinator.d.ts +1 -1
- package/dist/coordination/queen-coordinator.js +27 -10
- package/dist/coordination/queen-event-handlers.js +13 -0
- package/dist/coordination/queen-task-management.d.ts +18 -24
- package/dist/coordination/queen-task-management.js +62 -168
- package/dist/coordination/queen-task-queue.d.ts +41 -0
- package/dist/coordination/queen-task-queue.js +194 -0
- package/dist/coordination/queen-types.d.ts +1 -1
- package/dist/coordination/queen-work-stealing.d.ts +6 -1
- package/dist/coordination/queen-work-stealing.js +7 -4
- package/dist/coordination/result-saver-adapters.d.ts +15 -0
- package/dist/coordination/result-saver-adapters.js +57 -0
- package/dist/coordination/result-saver.d.ts +1 -1
- package/dist/coordination/result-saver.js +8 -5
- package/dist/coordination/task-executability.d.ts +12 -0
- package/dist/coordination/task-executability.js +27 -0
- package/dist/coordination/workflow-orchestrator.d.ts +6 -0
- package/dist/coordination/workflow-orchestrator.js +22 -8
- package/dist/coordination/yaml-pipeline-loader.js +5 -2
- package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
- package/dist/domains/code-intelligence/index-path-guard.js +20 -50
- package/dist/domains/code-intelligence/plugin.js +5 -1
- package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
- package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
- package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
- package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
- package/dist/domains/contract-testing/services/contract-validator.js +6 -4
- package/dist/domains/contract-testing/services/schema-validator.js +8 -5
- package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
- package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
- package/dist/domains/defect-intelligence/plugin.js +11 -2
- package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
- package/dist/domains/defect-intelligence/prediction-history.js +68 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
- package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
- package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
- package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
- package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
- package/dist/domains/learning-optimization/active-patterns.js +2 -2
- package/dist/domains/learning-optimization/coordinator.js +9 -5
- package/dist/domains/learning-optimization/interfaces.d.ts +8 -2
- package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
- package/dist/domains/learning-optimization/pattern-archive.js +56 -0
- package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
- package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
- package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
- package/dist/domains/learning-optimization/reward-source.js +8 -1
- package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
- package/dist/domains/learning-optimization/services/learning-coordinator.js +47 -59
- package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
- package/dist/domains/learning-optimization/services/production-intel.js +3 -1
- package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
- package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
- package/dist/domains/security-compliance/plugin.js +17 -3
- package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
- package/dist/domains/security-compliance/sast-path-guard.js +17 -0
- package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
- package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
- package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
- package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
- package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
- package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
- package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
- package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
- package/dist/domains/security-compliance/services/security-auditor.js +3 -2
- package/dist/domains/test-execution/coordinator.d.ts +6 -0
- package/dist/domains/test-execution/coordinator.js +28 -22
- package/dist/domains/test-execution/interfaces.d.ts +36 -1
- package/dist/domains/test-execution/plugin.js +19 -4
- package/dist/domains/test-execution/services/flaky-detector.js +9 -7
- package/dist/domains/test-execution/services/retry-handler.js +46 -7
- package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
- package/dist/domains/test-execution/services/retry-outcome.js +53 -0
- package/dist/domains/test-execution/services/runner-test-cases.d.ts +11 -0
- package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
- package/dist/domains/test-execution/services/test-executor.js +8 -8
- package/dist/domains/test-generation/coordinator.js +2 -2
- package/dist/domains/test-generation/plugin.js +7 -2
- package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
- package/dist/domains/test-generation/services/test-data-generator.js +3 -1
- package/dist/domains/test-generation/services/test-generator.js +2 -2
- package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
- package/dist/governance/evolution-pipeline-integration.js +3 -1
- package/dist/hooks/cross-phase-hooks.js +5 -2
- package/dist/init/init-wizard-steps.js +5 -1
- package/dist/init/phases/04-database.js +7 -0
- package/dist/init/phases/10-workers.js +50 -6
- package/dist/init/phases/12-verification.js +14 -4
- package/dist/init/settings-merge.js +7 -4
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +7 -0
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
- package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
- package/dist/integrations/browser/agent-browser/client.js +37 -52
- package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
- package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
- package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
- package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
- package/dist/integrations/browser/web-content-fetcher.js +9 -3
- package/dist/integrations/ruvector/filter-adapter.js +2 -1
- package/dist/integrations/vibium/client.js +2 -2
- package/dist/integrations/vibium/runtime.d.ts +1 -1
- package/dist/integrations/vibium/runtime.js +14 -11
- package/dist/kernel/unified-memory-schemas.d.ts +3 -2
- package/dist/kernel/unified-memory-schemas.js +3 -2
- package/dist/kernel/unified-memory.js +25 -6
- package/dist/learning/dream/dream-commit.d.ts +65 -0
- package/dist/learning/dream/dream-commit.js +104 -0
- package/dist/learning/dream/dream-engine.d.ts +81 -31
- package/dist/learning/dream/dream-engine.js +225 -168
- package/dist/learning/dream/dream-insights-pruner.d.ts +9 -3
- package/dist/learning/dream/dream-insights-pruner.js +16 -30
- package/dist/learning/dream/index.d.ts +3 -2
- package/dist/learning/dream/index.js +3 -1
- package/dist/learning/dream/insight-generator.js +5 -4
- package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
- package/dist/learning/dream/rvcow-branch-manager.js +8 -1
- package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
- package/dist/learning/dream/speculative-dreamer.js +64 -111
- package/dist/learning/dream/spreading-activation.d.ts +2 -1
- package/dist/learning/dream/spreading-activation.js +15 -6
- package/dist/learning/experience-capture.d.ts +9 -0
- package/dist/learning/experience-capture.js +18 -4
- package/dist/learning/memory-auditor.js +3 -1
- package/dist/learning/qe-patterns.js +2 -1
- package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
- package/dist/learning/qe-reasoning-bank.js +22 -11
- package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
- package/dist/learning/real-qe-reasoning-bank.js +70 -38
- package/dist/learning/sqlite-persistence.d.ts +6 -0
- package/dist/learning/sqlite-persistence.js +16 -2
- package/dist/learning/usage-outcome.d.ts +68 -0
- package/dist/learning/usage-outcome.js +84 -0
- package/dist/mcp/background-workers.d.ts +13 -1
- package/dist/mcp/background-workers.js +17 -3
- package/dist/mcp/bundle.js +612 -580
- package/dist/mcp/handlers/core-handlers.js +11 -0
- package/dist/mcp/handlers/domain-handler-configs.d.ts +7 -0
- package/dist/mcp/handlers/domain-handler-configs.js +19 -5
- package/dist/mcp/handlers/handler-factory.d.ts +2 -1
- package/dist/mcp/handlers/handler-factory.js +36 -15
- package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
- package/dist/mcp/handlers/orchestrate-routes.js +88 -0
- package/dist/mcp/handlers/task-handlers.d.ts +16 -0
- package/dist/mcp/handlers/task-handlers.js +77 -24
- package/dist/mcp/handlers/validation-pipeline-handler.js +14 -10
- package/dist/mcp/protocol-server.js +10 -8
- package/dist/mcp/qe-tool-bridge.js +3 -0
- package/dist/mcp/security/schema-validator.js +3 -2
- package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
- package/dist/mcp/services/reasoning-bank-service.js +4 -0
- package/dist/mcp/tool-annotations.js +4 -1
- package/dist/mcp/tools/code-intelligence/c4.js +11 -1
- package/dist/mcp/tools/coherence/check.js +1 -0
- package/dist/mcp/tools/coherence/consensus.js +4 -2
- package/dist/mcp/tools/coverage-analysis/index.js +31 -2
- package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
- package/dist/mcp/tools/learning-optimization/dream.js +38 -34
- package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
- package/dist/mcp/tools/learning-optimization/optimize.js +59 -12
- package/dist/mcp/tools/mincut/index.js +3 -0
- package/dist/mcp/tools/quality-assessment/gate.js +19 -1
- package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +17 -3
- package/dist/mcp/tools/security-compliance/scan.js +4 -2
- package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
- package/dist/mcp/tools/test-execution/execute.js +3 -2
- package/dist/memory/crdt/crdt-store.js +5 -0
- package/dist/memory/crdt/lww-register.js +12 -2
- package/dist/migration/agent-compat.js +7 -5
- package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
- package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
- package/dist/optimization/early-exit-token-optimizer.js +3 -1
- package/dist/planning/goap-planner.js +5 -0
- package/dist/planning/plan-executor.js +5 -0
- package/dist/shared/git/git-analyzer.d.ts +49 -0
- package/dist/shared/git/git-analyzer.js +159 -319
- package/dist/shared/git/git-process.d.ts +22 -0
- package/dist/shared/git/git-process.js +37 -0
- package/dist/shared/git/index.d.ts +1 -0
- package/dist/shared/git/index.js +1 -0
- package/dist/shared/io/confined-read.d.ts +74 -0
- package/dist/shared/io/confined-read.js +256 -0
- package/dist/shared/io/file-reader.d.ts +6 -6
- package/dist/shared/io/file-reader.js +16 -42
- package/dist/shared/io/payload-path-guard.d.ts +75 -0
- package/dist/shared/io/payload-path-guard.js +190 -0
- package/dist/shared/llm/providers/claude-code.js +4 -1
- package/dist/shared/llm/router/agent-router-config.js +2 -1
- package/dist/shared/llm/translation/tool-translator.js +2 -1
- package/dist/shared/native-module-errors.d.ts +51 -0
- package/dist/shared/native-module-errors.js +129 -0
- package/dist/shared/safe-db.js +14 -4
- package/dist/shared/security/osv-client.js +4 -1
- package/dist/shared/test-runner-args.d.ts +5 -0
- package/dist/shared/test-runner-args.js +6 -1
- package/dist/shared/test-runner-process.d.ts +6 -0
- package/dist/shared/test-runner-process.js +14 -0
- package/dist/shared/test-runner-verdict.d.ts +9 -1
- package/dist/shared/test-runner-verdict.js +15 -4
- package/dist/shared/types/test-frameworks.js +2 -2
- package/dist/shared/utils/namespaced-search.d.ts +14 -0
- package/dist/shared/utils/namespaced-search.js +19 -1
- package/dist/shared/utils/safe-expression-evaluator.js +4 -3
- package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
- package/dist/sync/readers/json-reader.js +2 -1
- package/dist/validation/anchor-set.d.ts +6 -0
- package/dist/validation/anchor-set.js +9 -1
- package/dist/validation/gate-reexecute.js +7 -4
- package/dist/validation/quality-gate-runner.d.ts +7 -1
- package/dist/validation/quality-gate-runner.js +3 -3
- package/dist/workers/daemon.js +13 -1
- package/dist/workers/quality-daemon/git-watcher.js +9 -9
- package/dist/workers/workers/defect-predictor.d.ts +8 -3
- package/dist/workers/workers/defect-predictor.js +48 -49
- package/dist/workers/workers/learning-consolidation.d.ts +2 -0
- package/dist/workers/workers/learning-consolidation.js +12 -1
- package/dist/workflows/browser/workflow-loader.js +8 -5
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
- package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
- package/dist/cli/chunks/base-67DXSAYM.js +0 -2
- package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
- package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
- package/dist/cli/chunks/chunk-2XITOPYV.js +0 -6
- package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
- package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
- package/dist/cli/chunks/chunk-6PXA2BQJ.js +0 -742
- package/dist/cli/chunks/chunk-6YL6JOQB.js +0 -4
- package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
- package/dist/cli/chunks/chunk-AR2E4B7K.js +0 -6
- package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
- package/dist/cli/chunks/chunk-FJ4VTLLK.js +0 -2
- package/dist/cli/chunks/chunk-FV3NHVC7.js +0 -59
- package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
- package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
- package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
- package/dist/cli/chunks/chunk-JEP4ULR6.js +0 -21
- package/dist/cli/chunks/chunk-JK2ME6IT.js +0 -2
- package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
- package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
- package/dist/cli/chunks/chunk-N5PDFGCQ.js +0 -180
- package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
- package/dist/cli/chunks/chunk-P2CXVNKK.js +0 -4
- package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
- package/dist/cli/chunks/chunk-VU2EL424.js +0 -14
- package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
- package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
- package/dist/cli/chunks/chunk-XZJ2O3VC.js +0 -2
- package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
- package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
- package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
- package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
- package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
- package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
- package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
- package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
- package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
- package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
- package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
- package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
- package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
- package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
- package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
- package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
- package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
- package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
- package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
- package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
- package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
- package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
- package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
- package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
- package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
- package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
- package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
- package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
- package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
- package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
- package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
- package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
- package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
- package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
- package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
- package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
- package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
- package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
- package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #1126: decide which caller-named paths a task handler may read.
|
|
3
|
+
*
|
|
4
|
+
* A task payload can come from MCP task_submit, task_orchestrate, a domain
|
|
5
|
+
* MCP tool or `aqe task submit`, so every handler that reads a path from its
|
|
6
|
+
* payload applies the same rule as code indexing (#1096) and sast-scan
|
|
7
|
+
* (#1144): a path is read only when its realpath is a regular file (or, for a
|
|
8
|
+
* target to walk, a directory) inside the project root's realpath. A path
|
|
9
|
+
* spelled outside the root is refused before any filesystem call, so the
|
|
10
|
+
* reason does not reveal whether it exists, and an outside directory is never
|
|
11
|
+
* listed. A symlink pointing out, a device such as /dev/zero or a directory
|
|
12
|
+
* is refused by name, and so is a file over the size limit when the handler
|
|
13
|
+
* reads files whole.
|
|
14
|
+
*
|
|
15
|
+
* The check runs inside each handler rather than at one MCP entry point, so
|
|
16
|
+
* no route into the handler can skip it. A refusal is a CallerInputError: it
|
|
17
|
+
* is not retried and does not count toward the domain circuit breaker.
|
|
18
|
+
*/
|
|
19
|
+
import * as fs from 'node:fs/promises';
|
|
20
|
+
import * as path from 'node:path';
|
|
21
|
+
import { findProjectRoot } from '../../kernel/project-root.js';
|
|
22
|
+
import { ok, err } from '../types/index.js';
|
|
23
|
+
import { CallerInputError } from '../error-utils.js';
|
|
24
|
+
/** Largest file a handler reads whole into memory (the #1144 sast limit). */
|
|
25
|
+
export const MAX_PAYLOAD_FILE_BYTES = 2 * 1024 * 1024;
|
|
26
|
+
/** True when `candidate` is `root` or lies beneath it (both absolute). */
|
|
27
|
+
function isWithin(root, candidate) {
|
|
28
|
+
const relative = path.relative(root, candidate);
|
|
29
|
+
return relative === '' || (relative !== '..' && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The path the kernel will open for `requested`. path.resolve() collapses
|
|
33
|
+
* `..` as text, but the kernel follows a symlink before applying `..`, so
|
|
34
|
+
* `src/link/../x` opens a file beside the link's target (review of #1162).
|
|
35
|
+
* Keep the caller's spelling and let realpath resolve it the kernel's way.
|
|
36
|
+
*/
|
|
37
|
+
function kernelPath(basePath, requested) {
|
|
38
|
+
return path.isAbsolute(requested) ? requested : `${basePath}${path.sep}${requested}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* For a path that does not exist: resolve its deepest existing ancestor the
|
|
42
|
+
* kernel's way and append the missing names. Returns null when the ancestor
|
|
43
|
+
* resolves outside the root or a missing name is `..`.
|
|
44
|
+
*/
|
|
45
|
+
async function resolveMissing(raw, rootReal) {
|
|
46
|
+
const missing = [];
|
|
47
|
+
let dir = raw;
|
|
48
|
+
for (;;) {
|
|
49
|
+
missing.unshift(path.basename(dir));
|
|
50
|
+
const parent = path.dirname(dir);
|
|
51
|
+
if (parent === dir)
|
|
52
|
+
return null;
|
|
53
|
+
dir = parent;
|
|
54
|
+
const real = await fs.realpath(dir).catch(() => null);
|
|
55
|
+
if (!real)
|
|
56
|
+
continue;
|
|
57
|
+
if (!isWithin(rootReal, real) || missing.some(name => name === '..'))
|
|
58
|
+
return null;
|
|
59
|
+
return path.join(real, ...missing.filter(name => name !== '.' && name !== ''));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Split `paths` into those a handler may read and those it must refuse.
|
|
64
|
+
* `resolved[i]` is the symlink-free path checked for `accepted[i]` (relative
|
|
65
|
+
* to basePath when the request was relative); a handler opens that path,
|
|
66
|
+
* never the caller's string.
|
|
67
|
+
*/
|
|
68
|
+
export async function confinePayloadPaths(paths, options = {}) {
|
|
69
|
+
const projectRoot = options.projectRoot ?? findProjectRoot();
|
|
70
|
+
const basePath = options.basePath ?? process.cwd();
|
|
71
|
+
const accepted = [];
|
|
72
|
+
const resolved = [];
|
|
73
|
+
const skipped = [];
|
|
74
|
+
const rootLexical = path.resolve(projectRoot);
|
|
75
|
+
const rootReal = await fs.realpath(projectRoot).catch(() => rootLexical);
|
|
76
|
+
const baseReal = await fs.realpath(basePath).catch(() => null);
|
|
77
|
+
// A relative request stays relative, to the base's realpath: the kernel
|
|
78
|
+
// resolves it through the same real directories, and records keep the
|
|
79
|
+
// caller's spelling for ordinary paths ('tests/a.test.ts').
|
|
80
|
+
const accept = (requested, real) => {
|
|
81
|
+
accepted.push(requested);
|
|
82
|
+
resolved.push(!path.isAbsolute(requested) && baseReal ? (path.relative(baseReal, real) || '.') : real);
|
|
83
|
+
};
|
|
84
|
+
for (const requested of paths) {
|
|
85
|
+
const lexical = path.resolve(basePath, requested);
|
|
86
|
+
// Spelled outside the root: refused before any filesystem call, so the
|
|
87
|
+
// reason cannot reveal whether an outside path exists.
|
|
88
|
+
if (!isWithin(rootLexical, lexical) && !isWithin(rootReal, lexical)) {
|
|
89
|
+
skipped.push({ path: requested, reason: 'outside-project-root' });
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const raw = kernelPath(basePath, requested);
|
|
93
|
+
let real;
|
|
94
|
+
try {
|
|
95
|
+
real = await fs.realpath(raw);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const code = error.code;
|
|
99
|
+
const missing = code === 'ENOENT' || code === 'ENOTDIR';
|
|
100
|
+
// A dangling symlink exists by name: it is not a missing file to accept.
|
|
101
|
+
const dangling = await fs.lstat(raw).then(() => true, () => false);
|
|
102
|
+
const target = missing && !dangling && options.allowMissing ? await resolveMissing(raw, rootReal) : null;
|
|
103
|
+
if (target)
|
|
104
|
+
accept(requested, target);
|
|
105
|
+
else
|
|
106
|
+
skipped.push({ path: requested, reason: missing ? 'not-found' : 'unreadable' });
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (!isWithin(rootReal, real)) {
|
|
110
|
+
skipped.push({ path: requested, reason: 'outside-project-root' });
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
// stat, never open: a FIFO, device or directory is refused unread.
|
|
114
|
+
const stat = await fs.stat(real).catch(() => null);
|
|
115
|
+
if (!stat) {
|
|
116
|
+
skipped.push({ path: requested, reason: 'unreadable' });
|
|
117
|
+
}
|
|
118
|
+
else if (!(stat.isFile() || (options.allowDirectory && stat.isDirectory()))) {
|
|
119
|
+
skipped.push({ path: requested, reason: 'not-a-file' });
|
|
120
|
+
}
|
|
121
|
+
else if (options.maxBytes !== undefined && stat.size > options.maxBytes) {
|
|
122
|
+
skipped.push({ path: requested, reason: 'too-large' });
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
accept(requested, real);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return { accepted, resolved, skipped };
|
|
129
|
+
}
|
|
130
|
+
function describe(value) {
|
|
131
|
+
if (value === null)
|
|
132
|
+
return 'null';
|
|
133
|
+
if (Array.isArray(value))
|
|
134
|
+
return 'array';
|
|
135
|
+
return typeof value;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Handler-side check for a payload path list: `value` must be an array of
|
|
139
|
+
* non-empty path strings, and every entry must pass confinePayloadPaths.
|
|
140
|
+
* Otherwise the whole request is refused and nothing is read. Returns the real
|
|
141
|
+
* paths that were checked; the handler reads those, not the payload strings.
|
|
142
|
+
* `taskType` and `field` name the payload in the error.
|
|
143
|
+
*/
|
|
144
|
+
export async function requirePayloadFiles(taskType, field, value, options = {}) {
|
|
145
|
+
const context = `Invalid ${taskType} payload`;
|
|
146
|
+
if (!Array.isArray(value)) {
|
|
147
|
+
return err(new CallerInputError(`${context}: '${field}' must be an array of file paths, got ${describe(value)}`));
|
|
148
|
+
}
|
|
149
|
+
for (let i = 0; i < value.length; i++) {
|
|
150
|
+
const entry = value[i];
|
|
151
|
+
if (typeof entry !== 'string' || entry.trim() === '') {
|
|
152
|
+
return err(new CallerInputError(`${context}: '${field}[${i}]' must be a non-empty string, got ${describe(entry)}`));
|
|
153
|
+
}
|
|
154
|
+
if (entry.includes('\0')) {
|
|
155
|
+
return err(new CallerInputError(`${context}: '${field}[${i}]' contains a null byte`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const { resolved, skipped } = await confinePayloadPaths(value, options);
|
|
159
|
+
if (skipped.length > 0)
|
|
160
|
+
return err(refusal(context, field, skipped, options));
|
|
161
|
+
return ok(resolved);
|
|
162
|
+
}
|
|
163
|
+
function refusal(context, field, skipped, options) {
|
|
164
|
+
const limit = options.maxBytes !== undefined
|
|
165
|
+
? `, at most ${Math.round(options.maxBytes / (1024 * 1024))} MB each`
|
|
166
|
+
: '';
|
|
167
|
+
const kinds = options.allowDirectory ? 'regular files or directories' : 'regular files';
|
|
168
|
+
return new CallerInputError(`${context}: ${field} cannot be read: ${skipped.map(s => `${s.path} (${s.reason})`).join(', ')}. ` +
|
|
169
|
+
`Pass ${kinds} inside the project${limit}.`);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Handler-side check for one caller-named path (a file, or with
|
|
173
|
+
* allowDirectory a directory to walk). Returns the real path that was
|
|
174
|
+
* checked, which the handler reads instead of the payload string, or an error
|
|
175
|
+
* naming the reason without reading anything.
|
|
176
|
+
*/
|
|
177
|
+
export async function requirePayloadPath(taskType, field, value, options = {}) {
|
|
178
|
+
const context = `Invalid ${taskType} payload`;
|
|
179
|
+
if (typeof value !== 'string' || value.trim() === '') {
|
|
180
|
+
return err(new CallerInputError(`${context}: '${field}' must be a non-empty path string, got ${describe(value)}`));
|
|
181
|
+
}
|
|
182
|
+
if (value.includes('\0')) {
|
|
183
|
+
return err(new CallerInputError(`${context}: '${field}' contains a null byte`));
|
|
184
|
+
}
|
|
185
|
+
const { resolved, skipped } = await confinePayloadPaths([value], options);
|
|
186
|
+
if (skipped.length > 0)
|
|
187
|
+
return err(refusal(context, field, skipped, options));
|
|
188
|
+
return ok(resolved[0]);
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=payload-path-guard.js.map
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { spawn } from 'node:child_process';
|
|
17
17
|
import { createLLMError, } from '../interfaces.js';
|
|
18
18
|
import { TokenMetricsCollector } from '../../../learning/token-tracker.js';
|
|
19
|
+
import { redactLogText } from '../../../logging/redaction.js';
|
|
19
20
|
/** Env vars whose presence flips the CLI from subscription to API billing. */
|
|
20
21
|
export const API_BILLING_ENV_VARS = [
|
|
21
22
|
'ANTHROPIC_API_KEY',
|
|
@@ -108,7 +109,9 @@ export class ClaudeCodeProvider {
|
|
|
108
109
|
data = JSON.parse(stdout);
|
|
109
110
|
}
|
|
110
111
|
catch {
|
|
111
|
-
throw createLLMError(
|
|
112
|
+
throw createLLMError(
|
|
113
|
+
// #1150: redact, then cut, so a cut secret leaves no fragment behind.
|
|
114
|
+
`Could not parse claude -p JSON output: ${redactLogText(stdout, Number.POSITIVE_INFINITY).slice(0, 200)}`, 'PROVIDER_UNAVAILABLE', { provider: 'claude-code', model, retryable: true });
|
|
112
115
|
}
|
|
113
116
|
if (data.is_error) {
|
|
114
117
|
throw this.classifyError(data.result ?? data.api_error_status ?? 'claude error', model);
|
|
@@ -278,7 +278,8 @@ export const DEFAULT_CATEGORY_CAPABILITIES = {
|
|
|
278
278
|
*/
|
|
279
279
|
export function getAgentRoutingCategory(agentType) {
|
|
280
280
|
// Direct lookup first
|
|
281
|
-
|
|
281
|
+
// #1136: own entries only; `constructor` is not an agent type.
|
|
282
|
+
if (Object.hasOwn(AGENT_CATEGORY_MAP, agentType)) {
|
|
282
283
|
return AGENT_CATEGORY_MAP[agentType];
|
|
283
284
|
}
|
|
284
285
|
// Pattern-based detection
|
|
@@ -246,7 +246,8 @@ export function validateToolDefinition(tool) {
|
|
|
246
246
|
const params = tool.parameters;
|
|
247
247
|
const props = params.properties || {};
|
|
248
248
|
for (const req of tool.required) {
|
|
249
|
-
|
|
249
|
+
// #1136: own properties only.
|
|
250
|
+
if (!Object.hasOwn(props, req)) {
|
|
250
251
|
errors.push(`Required parameter '${req}' not found in properties`);
|
|
251
252
|
}
|
|
252
253
|
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native module load-failure diagnostics (issue #1173).
|
|
3
|
+
*
|
|
4
|
+
* better-sqlite3 ships a native addon whose binary is fetched/compiled by its
|
|
5
|
+
* `install` script. npm 12 blocks dependency install scripts unless they are
|
|
6
|
+
* allowed (`allowScripts`), so a plain `npm install -g agentic-qe` leaves the
|
|
7
|
+
* addon missing and the first `new Database()` throws "Could not locate the
|
|
8
|
+
* bindings file". Other installs hit the same wall via a Node upgrade
|
|
9
|
+
* (NODE_MODULE_VERSION mismatch) or an arch mismatch.
|
|
10
|
+
*
|
|
11
|
+
* These helpers recognise those failures and turn them into a message that
|
|
12
|
+
* names the cause and the exact command that fixes it, instead of a 20-line
|
|
13
|
+
* list of probed paths (or, in `aqe init`, nothing at all).
|
|
14
|
+
*/
|
|
15
|
+
export type NativeModuleFailureReason = 'missing-binding' | 'abi-mismatch' | 'load-failed';
|
|
16
|
+
export interface NativeModuleFailure {
|
|
17
|
+
/** npm package whose native addon failed to load */
|
|
18
|
+
readonly moduleName: string;
|
|
19
|
+
readonly reason: NativeModuleFailureReason;
|
|
20
|
+
/** First line of the original error, without the probed-path list */
|
|
21
|
+
readonly detail: string;
|
|
22
|
+
}
|
|
23
|
+
/** Marker present in every remedy we emit; used to avoid double-wrapping. */
|
|
24
|
+
export declare const NATIVE_MODULE_REMEDY_MARKER = "native module could not be loaded";
|
|
25
|
+
/** Packages with install scripts that a global agentic-qe install needs allowed. */
|
|
26
|
+
export declare const AQE_INSTALL_SCRIPT_PACKAGES = "agentic-qe,better-sqlite3,hnswlib-node";
|
|
27
|
+
/**
|
|
28
|
+
* Classify `error` as a native-addon load failure, or return null when it is
|
|
29
|
+
* something else (I/O error, corrupt DB, lock contention, ...).
|
|
30
|
+
*/
|
|
31
|
+
export declare function diagnoseNativeModuleError(error: unknown, moduleName?: string): NativeModuleFailure | null;
|
|
32
|
+
/** Multi-line, actionable explanation for a diagnosed native-module failure. */
|
|
33
|
+
export declare function formatNativeModuleRemedy(failure: NativeModuleFailure): string;
|
|
34
|
+
/**
|
|
35
|
+
* Error raised when a native addon cannot be loaded. The message carries the
|
|
36
|
+
* remedy; the original error is preserved as `cause`.
|
|
37
|
+
*/
|
|
38
|
+
export declare class NativeModuleLoadError extends Error {
|
|
39
|
+
readonly moduleName: string;
|
|
40
|
+
readonly reason: NativeModuleFailureReason;
|
|
41
|
+
constructor(failure: NativeModuleFailure, cause: unknown);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Return a NativeModuleLoadError for native-load failures, or the original
|
|
45
|
+
* error unchanged otherwise. Idempotent: an error that already carries the
|
|
46
|
+
* remedy is returned as-is.
|
|
47
|
+
*/
|
|
48
|
+
export declare function withNativeModuleRemedy(error: unknown, moduleName?: string): unknown;
|
|
49
|
+
/** True when `error` (or its message, after re-wrapping) is a native-load failure. */
|
|
50
|
+
export declare function isNativeModuleLoadFailure(error: unknown): boolean;
|
|
51
|
+
//# sourceMappingURL=native-module-errors.d.ts.map
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native module load-failure diagnostics (issue #1173).
|
|
3
|
+
*
|
|
4
|
+
* better-sqlite3 ships a native addon whose binary is fetched/compiled by its
|
|
5
|
+
* `install` script. npm 12 blocks dependency install scripts unless they are
|
|
6
|
+
* allowed (`allowScripts`), so a plain `npm install -g agentic-qe` leaves the
|
|
7
|
+
* addon missing and the first `new Database()` throws "Could not locate the
|
|
8
|
+
* bindings file". Other installs hit the same wall via a Node upgrade
|
|
9
|
+
* (NODE_MODULE_VERSION mismatch) or an arch mismatch.
|
|
10
|
+
*
|
|
11
|
+
* These helpers recognise those failures and turn them into a message that
|
|
12
|
+
* names the cause and the exact command that fixes it, instead of a 20-line
|
|
13
|
+
* list of probed paths (or, in `aqe init`, nothing at all).
|
|
14
|
+
*/
|
|
15
|
+
import { toErrorMessage } from './error-utils.js';
|
|
16
|
+
/** Marker present in every remedy we emit; used to avoid double-wrapping. */
|
|
17
|
+
export const NATIVE_MODULE_REMEDY_MARKER = 'native module could not be loaded';
|
|
18
|
+
/** Packages with install scripts that a global agentic-qe install needs allowed. */
|
|
19
|
+
export const AQE_INSTALL_SCRIPT_PACKAGES = 'agentic-qe,better-sqlite3,hnswlib-node';
|
|
20
|
+
const MISSING_BINDING_PATTERNS = [
|
|
21
|
+
/Could not locate the bindings file/i,
|
|
22
|
+
];
|
|
23
|
+
const ABI_MISMATCH_PATTERNS = [
|
|
24
|
+
/NODE_MODULE_VERSION/,
|
|
25
|
+
/compiled against a different Node\.js version/i,
|
|
26
|
+
/Module did not self-register/i,
|
|
27
|
+
];
|
|
28
|
+
const LOAD_FAILED_PATTERNS = [
|
|
29
|
+
/ERR_DLOPEN_FAILED/,
|
|
30
|
+
/invalid ELF header/i,
|
|
31
|
+
/wrong ELF class/i,
|
|
32
|
+
/incompatible architecture/i,
|
|
33
|
+
/mach-o file, but is an incompatible architecture/i,
|
|
34
|
+
/\.node: cannot open shared object file/i,
|
|
35
|
+
/is not a valid Win32 application/i,
|
|
36
|
+
];
|
|
37
|
+
function collectMessages(error) {
|
|
38
|
+
const parts = [];
|
|
39
|
+
let current = error;
|
|
40
|
+
// Walk the cause chain: callers commonly re-wrap the original error.
|
|
41
|
+
for (let depth = 0; current !== undefined && current !== null && depth < 5; depth++) {
|
|
42
|
+
parts.push(toErrorMessage(current));
|
|
43
|
+
const code = current.code;
|
|
44
|
+
if (typeof code === 'string')
|
|
45
|
+
parts.push(code);
|
|
46
|
+
current = current.cause;
|
|
47
|
+
}
|
|
48
|
+
return parts.join('\n');
|
|
49
|
+
}
|
|
50
|
+
function firstLine(message) {
|
|
51
|
+
// Drop the dangling "Tried:" that introduces the bindings package's path list.
|
|
52
|
+
const line = message.split('\n')[0].trim();
|
|
53
|
+
return line.endsWith('Tried:') ? line.slice(0, -'Tried:'.length).trimEnd() : line;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Classify `error` as a native-addon load failure, or return null when it is
|
|
57
|
+
* something else (I/O error, corrupt DB, lock contention, ...).
|
|
58
|
+
*/
|
|
59
|
+
export function diagnoseNativeModuleError(error, moduleName = 'better-sqlite3') {
|
|
60
|
+
if (error === undefined || error === null)
|
|
61
|
+
return null;
|
|
62
|
+
const text = collectMessages(error);
|
|
63
|
+
const detail = firstLine(toErrorMessage(error));
|
|
64
|
+
if (MISSING_BINDING_PATTERNS.some((p) => p.test(text))) {
|
|
65
|
+
return { moduleName, reason: 'missing-binding', detail };
|
|
66
|
+
}
|
|
67
|
+
if (ABI_MISMATCH_PATTERNS.some((p) => p.test(text))) {
|
|
68
|
+
return { moduleName, reason: 'abi-mismatch', detail };
|
|
69
|
+
}
|
|
70
|
+
if (LOAD_FAILED_PATTERNS.some((p) => p.test(text))) {
|
|
71
|
+
return { moduleName, reason: 'load-failed', detail };
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const CAUSE_TEXT = {
|
|
76
|
+
'missing-binding': 'its compiled binary is missing. Its install script never ran — npm 12+ blocks ' +
|
|
77
|
+
'dependency install scripts unless they are allowed (allowScripts).',
|
|
78
|
+
'abi-mismatch': `it was built for a different Node.js version than the one running now (${process.version}). ` +
|
|
79
|
+
'Rebuild it after switching Node versions.',
|
|
80
|
+
'load-failed': 'the binary exists but the OS refused to load it (wrong platform/architecture or a corrupt build).',
|
|
81
|
+
};
|
|
82
|
+
/** Multi-line, actionable explanation for a diagnosed native-module failure. */
|
|
83
|
+
export function formatNativeModuleRemedy(failure) {
|
|
84
|
+
const { moduleName } = failure;
|
|
85
|
+
return [
|
|
86
|
+
`${moduleName} ${NATIVE_MODULE_REMEDY_MARKER}: ${CAUSE_TEXT[failure.reason]}`,
|
|
87
|
+
' Fix a global install (reinstall, naming the package):',
|
|
88
|
+
` npm install -g agentic-qe --allow-scripts=${AQE_INSTALL_SCRIPT_PACKAGES}`,
|
|
89
|
+
' Or rebuild just the native module in an existing global install:',
|
|
90
|
+
` npm rebuild -g ${moduleName} --allow-scripts=${moduleName}`,
|
|
91
|
+
' For a project-local install (devDependency), run in the project:',
|
|
92
|
+
` npm install-scripts approve ${moduleName} && npm rebuild ${moduleName}`,
|
|
93
|
+
` Original error: ${failure.detail}`,
|
|
94
|
+
].join('\n');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Error raised when a native addon cannot be loaded. The message carries the
|
|
98
|
+
* remedy; the original error is preserved as `cause`.
|
|
99
|
+
*/
|
|
100
|
+
export class NativeModuleLoadError extends Error {
|
|
101
|
+
moduleName;
|
|
102
|
+
reason;
|
|
103
|
+
constructor(failure, cause) {
|
|
104
|
+
super(formatNativeModuleRemedy(failure), { cause });
|
|
105
|
+
this.name = 'NativeModuleLoadError';
|
|
106
|
+
this.moduleName = failure.moduleName;
|
|
107
|
+
this.reason = failure.reason;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Return a NativeModuleLoadError for native-load failures, or the original
|
|
112
|
+
* error unchanged otherwise. Idempotent: an error that already carries the
|
|
113
|
+
* remedy is returned as-is.
|
|
114
|
+
*/
|
|
115
|
+
export function withNativeModuleRemedy(error, moduleName = 'better-sqlite3') {
|
|
116
|
+
if (error instanceof NativeModuleLoadError)
|
|
117
|
+
return error;
|
|
118
|
+
if (toErrorMessage(error).includes(NATIVE_MODULE_REMEDY_MARKER))
|
|
119
|
+
return error;
|
|
120
|
+
const failure = diagnoseNativeModuleError(error, moduleName);
|
|
121
|
+
return failure ? new NativeModuleLoadError(failure, error) : error;
|
|
122
|
+
}
|
|
123
|
+
/** True when `error` (or its message, after re-wrapping) is a native-load failure. */
|
|
124
|
+
export function isNativeModuleLoadFailure(error) {
|
|
125
|
+
return error instanceof NativeModuleLoadError
|
|
126
|
+
|| toErrorMessage(error).includes(NATIVE_MODULE_REMEDY_MARKER)
|
|
127
|
+
|| diagnoseNativeModuleError(error) !== null;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=native-module-errors.js.map
|
package/dist/shared/safe-db.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import Database from 'better-sqlite3';
|
|
12
12
|
import { basename } from 'node:path';
|
|
13
13
|
import { attemptAutoRestore } from './db-recovery.js';
|
|
14
|
+
import { withNativeModuleRemedy } from './native-module-errors.js';
|
|
14
15
|
/**
|
|
15
16
|
* Open a SQLite database with safe defaults that prevent corruption.
|
|
16
17
|
*
|
|
@@ -53,10 +54,19 @@ export function openDatabase(dbPath, opts) {
|
|
|
53
54
|
const disableWal = process.env.AQE_DISABLE_WAL === '1' ||
|
|
54
55
|
journalOverride === 'DELETE' ||
|
|
55
56
|
journalOverride === 'TRUNCATE';
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
// better-sqlite3 loads its native addon lazily, on the first construction.
|
|
58
|
+
// A missing/mismatched binary (e.g. npm 12 blocked its install script, #1173)
|
|
59
|
+
// surfaces here; rethrow it with the cause and the fix command.
|
|
60
|
+
let db;
|
|
61
|
+
try {
|
|
62
|
+
db = new Database(dbPath, {
|
|
63
|
+
readonly,
|
|
64
|
+
fileMustExist,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
throw withNativeModuleRemedy(err);
|
|
69
|
+
}
|
|
60
70
|
// Always set busy_timeout — even for readonly connections.
|
|
61
71
|
// Without this, concurrent access gets SQLITE_BUSY immediately.
|
|
62
72
|
db.pragma(`busy_timeout = ${busyTimeout}`);
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { isIP } from 'node:net';
|
|
9
9
|
import { HttpClient } from '../http/index.js';
|
|
10
|
+
import { getOwn } from '../utils/safe-record.js';
|
|
10
11
|
import { OSVLookupError, advisoryAffectsVersion, boundedList, classifyNpmSpec, exactNpmVersion, isAdvisoryRecord, isConcreteVersion, lookupKey, lookupStatus, parseBatchBody, } from './osv-lookup.js';
|
|
11
12
|
export { OSVLookupError } from './osv-lookup.js';
|
|
12
13
|
const DEFAULT_BASE_URL = 'https://api.osv.dev';
|
|
@@ -198,7 +199,9 @@ export class OSVClient {
|
|
|
198
199
|
}
|
|
199
200
|
// An `npm:<real>@<range>` alias is the registry package <real>.
|
|
200
201
|
const packageName = kind.kind === 'alias' ? kind.name : name;
|
|
201
|
-
|
|
202
|
+
// #1157: own entries only; a dependency named `constructor` has no lock entry.
|
|
203
|
+
const lockedSpec = getOwn(lockedVersions, name);
|
|
204
|
+
const locked = lockedSpec !== undefined ? exactNpmVersion(lockedSpec) : null;
|
|
202
205
|
const version = locked ?? exactNpmVersion(kind.spec);
|
|
203
206
|
if (version)
|
|
204
207
|
queries.push({ name: packageName, ecosystem: 'npm', version });
|
|
@@ -35,6 +35,11 @@ export declare function jestExactPathPattern(file: string, cwd?: string): string
|
|
|
35
35
|
/**
|
|
36
36
|
* Literal test-name filter in `--flag=value` form. Mocha uses `--grep`; Jest
|
|
37
37
|
* and Vitest use `--testNamePattern` (the long form of `-t`).
|
|
38
|
+
*
|
|
39
|
+
* `testName` is the full name the runner reported (describe titles, then the
|
|
40
|
+
* test title). Runners match the filter against that name joined with ' '
|
|
41
|
+
* (Jest, Mocha, Vitest 3) or ' > ' (Vitest 4+), so each space matches either
|
|
42
|
+
* separator, and the name is anchored so a retry targets that one test (#1141).
|
|
38
43
|
*/
|
|
39
44
|
export declare function nameFilterArg(runner: NameFilterRunner, testName: string): string;
|
|
40
45
|
/** True when a command vector (runner command plus its arguments) runs Jest. */
|
|
@@ -62,9 +62,14 @@ export function jestExactPathPattern(file, cwd = process.cwd()) {
|
|
|
62
62
|
/**
|
|
63
63
|
* Literal test-name filter in `--flag=value` form. Mocha uses `--grep`; Jest
|
|
64
64
|
* and Vitest use `--testNamePattern` (the long form of `-t`).
|
|
65
|
+
*
|
|
66
|
+
* `testName` is the full name the runner reported (describe titles, then the
|
|
67
|
+
* test title). Runners match the filter against that name joined with ' '
|
|
68
|
+
* (Jest, Mocha, Vitest 3) or ' > ' (Vitest 4+), so each space matches either
|
|
69
|
+
* separator, and the name is anchored so a retry targets that one test (#1141).
|
|
65
70
|
*/
|
|
66
71
|
export function nameFilterArg(runner, testName) {
|
|
67
|
-
const pattern = escapeRegExpLiteral(
|
|
72
|
+
const pattern = `^${testName.split(' ').map(escapeRegExpLiteral).join('(?: > | )')}$`;
|
|
68
73
|
return runner === 'mocha' ? `--grep=${pattern}` : `--testNamePattern=${pattern}`;
|
|
69
74
|
}
|
|
70
75
|
/** True when a command vector (runner command plus its arguments) runs Jest. */
|
|
@@ -33,4 +33,10 @@ export interface TestRunnerProcessOptions {
|
|
|
33
33
|
* the promise settles and before any report file is removed.
|
|
34
34
|
*/
|
|
35
35
|
export declare function runTestRunnerProcess(command: string, args: readonly string[], options: TestRunnerProcessOptions): Promise<TestRunnerProcessResult>;
|
|
36
|
+
/**
|
|
37
|
+
* Stdout of a command that must exit 0, run like runTestRunnerProcess (no
|
|
38
|
+
* blocking, process-group stop on timeout). Rejects with the ETIMEDOUT,
|
|
39
|
+
* ENOBUFS or spawn error, or with an error carrying `status` and `stderr`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function runProcessText(command: string, args: readonly string[], options: TestRunnerProcessOptions): Promise<string>;
|
|
36
42
|
//# sourceMappingURL=test-runner-process.d.ts.map
|
|
@@ -298,4 +298,18 @@ export function runTestRunnerProcess(command, args, options) {
|
|
|
298
298
|
proc.once('close', (status, signal) => settle(status, signal));
|
|
299
299
|
});
|
|
300
300
|
}
|
|
301
|
+
/**
|
|
302
|
+
* Stdout of a command that must exit 0, run like runTestRunnerProcess (no
|
|
303
|
+
* blocking, process-group stop on timeout). Rejects with the ETIMEDOUT,
|
|
304
|
+
* ENOBUFS or spawn error, or with an error carrying `status` and `stderr`.
|
|
305
|
+
*/
|
|
306
|
+
export async function runProcessText(command, args, options) {
|
|
307
|
+
const result = await runTestRunnerProcess(command, args, options);
|
|
308
|
+
if (result.error)
|
|
309
|
+
throw result.error;
|
|
310
|
+
if (result.status !== 0) {
|
|
311
|
+
throw Object.assign(new Error(`${command} exited with ${result.status ?? result.signal}: ${result.stderr.trim()}`), { status: result.status, stderr: result.stderr });
|
|
312
|
+
}
|
|
313
|
+
return result.stdout;
|
|
314
|
+
}
|
|
301
315
|
//# sourceMappingURL=test-runner-process.js.map
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* A runner or suite error is not an assertion result. Its message carries
|
|
3
|
+
* runner output and is returned over MCP, so it is redacted (#1122).
|
|
4
|
+
*/
|
|
2
5
|
export declare class TestRunnerExecutionError extends Error {
|
|
3
6
|
constructor(message: string);
|
|
4
7
|
}
|
|
@@ -19,6 +22,11 @@ interface RunnerReport {
|
|
|
19
22
|
}>;
|
|
20
23
|
}>;
|
|
21
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Runner output quoted in an error, redacted before it is cut so a secret
|
|
27
|
+
* that straddles the cut cannot survive half-matched (#1122).
|
|
28
|
+
*/
|
|
29
|
+
export declare function capDiagnostics(text: string, maxLength?: number): string;
|
|
22
30
|
/**
|
|
23
31
|
* Preserve ordinary assertion failures, but reject incomplete/failed execution
|
|
24
32
|
* that assertion counts cannot represent. Process status is authoritative even
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
import { redactLogText } from '../logging/redaction.js';
|
|
2
|
+
/**
|
|
3
|
+
* A runner or suite error is not an assertion result. Its message carries
|
|
4
|
+
* runner output and is returned over MCP, so it is redacted (#1122).
|
|
5
|
+
*/
|
|
2
6
|
export class TestRunnerExecutionError extends Error {
|
|
3
7
|
constructor(message) {
|
|
4
|
-
super(message);
|
|
8
|
+
super(redactLogText(message, Number.POSITIVE_INFINITY));
|
|
5
9
|
this.name = 'TestRunnerExecutionError';
|
|
6
10
|
}
|
|
7
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Runner output quoted in an error, redacted before it is cut so a secret
|
|
14
|
+
* that straddles the cut cannot survive half-matched (#1122).
|
|
15
|
+
*/
|
|
16
|
+
export function capDiagnostics(text, maxLength = 4000) {
|
|
17
|
+
return redactLogText(text, Number.POSITIVE_INFINITY).slice(0, maxLength);
|
|
18
|
+
}
|
|
8
19
|
/**
|
|
9
20
|
* Preserve ordinary assertion failures, but reject incomplete/failed execution
|
|
10
21
|
* that assertion counts cannot represent. Process status is authoritative even
|
|
@@ -36,8 +47,8 @@ export function getTestRunnerExecutionError(runner, files, exitCode, counts, out
|
|
|
36
47
|
const diagnostics = [
|
|
37
48
|
...suiteErrors.map(suite => suite.message).filter(Boolean),
|
|
38
49
|
output.trim(),
|
|
39
|
-
].filter(Boolean).join('\n')
|
|
50
|
+
].filter(Boolean).join('\n');
|
|
40
51
|
return new TestRunnerExecutionError(`${runner} ${reason} for ${files} (exit code ${exitCode ?? 'unknown'}).` +
|
|
41
|
-
(diagnostics ? `\n${diagnostics}` : ''));
|
|
52
|
+
(diagnostics ? `\n${capDiagnostics(diagnostics)}` : ''));
|
|
42
53
|
}
|
|
43
54
|
//# sourceMappingURL=test-runner-verdict.js.map
|
|
@@ -98,8 +98,8 @@ export function resolveFrameworkAlias(input) {
|
|
|
98
98
|
if (ALL_TEST_FRAMEWORKS.includes(lower)) {
|
|
99
99
|
return lower;
|
|
100
100
|
}
|
|
101
|
-
// Alias match
|
|
102
|
-
return FRAMEWORK_ALIASES[lower];
|
|
101
|
+
// Alias match. #1157: own entries only, so `constructor` is not an alias.
|
|
102
|
+
return Object.hasOwn(FRAMEWORK_ALIASES, lower) ? FRAMEWORK_ALIASES[lower] : undefined;
|
|
103
103
|
}
|
|
104
104
|
/**
|
|
105
105
|
* Get the language for a given file extension.
|
|
@@ -30,6 +30,13 @@ export interface SearchAllKeysOptions {
|
|
|
30
30
|
/** First request size (tests). Defaults to `DEFAULT_KEY_SCAN_PAGE_SIZE`. */
|
|
31
31
|
pageSize?: number;
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Most `search()` requests one scan may make (#1106). The limit doubles each
|
|
35
|
+
* time, so this covers more keys than any store holds (2^31 x the first page)
|
|
36
|
+
* while still guaranteeing the loop ends for a backend that never returns a
|
|
37
|
+
* short page.
|
|
38
|
+
*/
|
|
39
|
+
export declare const MAX_KEY_SCAN_REQUESTS = 32;
|
|
33
40
|
/**
|
|
34
41
|
* Every key matching `pattern`, bare (usable with `get(key, retrieve)`),
|
|
35
42
|
* de-duplicated and sorted.
|
|
@@ -37,6 +44,13 @@ export interface SearchAllKeysOptions {
|
|
|
37
44
|
* `search()` has no offset, so this widens the request until the backend
|
|
38
45
|
* returns fewer keys than were asked for. That is the only point at which the
|
|
39
46
|
* result is known to be complete; no cap ever truncates it.
|
|
47
|
+
*
|
|
48
|
+
* #1106: a backend that always returns at least `limit` keys (for example
|
|
49
|
+
* one that pads or repeats results) never gives a short page. After
|
|
50
|
+
* MAX_KEY_SCAN_REQUESTS this throws instead of looping forever or returning a
|
|
51
|
+
* list that may be incomplete, because callers select patterns to archive
|
|
52
|
+
* from it. A backend that ignores `limit` and returns every key still ends:
|
|
53
|
+
* the limit doubles past the key count.
|
|
40
54
|
*/
|
|
41
55
|
export declare function searchAllKeys(memory: MemoryBackend, pattern: string, options?: SearchAllKeysOptions): Promise<string[]>;
|
|
42
56
|
//# sourceMappingURL=namespaced-search.d.ts.map
|