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
|
@@ -11,43 +11,38 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
11
11
|
*/
|
|
12
12
|
export async function testXSS(targetUrl, parsedUrl, paramName, payloads, vulnerabilities) {
|
|
13
13
|
for (const xss of payloads) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
14
|
+
const testParams = new URLSearchParams(parsedUrl.search);
|
|
15
|
+
testParams.set(paramName, xss.payload);
|
|
16
|
+
const testUrl = `${parsedUrl.origin}${parsedUrl.pathname}?${testParams.toString()}`;
|
|
17
|
+
const response = await fetch(testUrl, {
|
|
18
|
+
method: 'GET',
|
|
19
|
+
headers: { 'User-Agent': 'AgenticQE-DAST-Scanner/3.0' },
|
|
20
|
+
signal: AbortSignal.timeout(5000),
|
|
21
|
+
});
|
|
22
|
+
if (response.ok) {
|
|
23
|
+
const text = await response.text();
|
|
24
|
+
const escapedPayload = xss.payload
|
|
25
|
+
.replace(/&/g, '&')
|
|
26
|
+
.replace(/</g, '<')
|
|
27
|
+
.replace(/>/g, '>')
|
|
28
|
+
.replace(/"/g, '"')
|
|
29
|
+
.replace(/'/g, ''');
|
|
30
|
+
const hasUnescapedPayload = text.includes(xss.payload);
|
|
31
|
+
const hasEscapedPayload = text.includes(escapedPayload);
|
|
32
|
+
if (hasUnescapedPayload && !hasEscapedPayload) {
|
|
33
|
+
vulnerabilities.push({
|
|
34
|
+
id: uuidv4(),
|
|
35
|
+
title: `Reflected XSS: ${xss.name}`,
|
|
36
|
+
description: `Parameter '${paramName}' reflects unsanitized input`,
|
|
37
|
+
severity: 'critical',
|
|
38
|
+
category: 'xss',
|
|
39
|
+
location: { file: targetUrl, snippet: `Parameter: ${paramName}, Payload: ${xss.payload.substring(0, 30)}...` },
|
|
40
|
+
remediation: { description: 'HTML-encode all user input before rendering', estimatedEffort: 'moderate', automatable: false },
|
|
41
|
+
references: ['https://owasp.org/www-community/attacks/xss/'],
|
|
42
|
+
});
|
|
43
|
+
break;
|
|
46
44
|
}
|
|
47
45
|
}
|
|
48
|
-
catch {
|
|
49
|
-
// Request failed
|
|
50
|
-
}
|
|
51
46
|
}
|
|
52
47
|
}
|
|
53
48
|
/**
|
|
@@ -65,35 +60,30 @@ export async function testSQLi(targetUrl, parsedUrl, paramName, payloads, vulner
|
|
|
65
60
|
/quoted string not properly terminated/i,
|
|
66
61
|
];
|
|
67
62
|
for (const sqli of payloads) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
63
|
+
const testParams = new URLSearchParams(parsedUrl.search);
|
|
64
|
+
testParams.set(paramName, sqli.payload);
|
|
65
|
+
const testUrl = `${parsedUrl.origin}${parsedUrl.pathname}?${testParams.toString()}`;
|
|
66
|
+
const response = await fetch(testUrl, {
|
|
67
|
+
method: 'GET',
|
|
68
|
+
headers: { 'User-Agent': 'AgenticQE-DAST-Scanner/3.0' },
|
|
69
|
+
signal: AbortSignal.timeout(5000),
|
|
70
|
+
});
|
|
71
|
+
const text = await response.text();
|
|
72
|
+
for (const pattern of sqlErrorPatterns) {
|
|
73
|
+
if (pattern.test(text)) {
|
|
74
|
+
vulnerabilities.push({
|
|
75
|
+
id: uuidv4(),
|
|
76
|
+
title: `SQL Injection: ${sqli.name}`,
|
|
77
|
+
description: `Parameter '${paramName}' appears vulnerable to SQL injection`,
|
|
78
|
+
severity: 'critical',
|
|
79
|
+
category: 'injection',
|
|
80
|
+
location: { file: targetUrl, snippet: `Parameter: ${paramName}` },
|
|
81
|
+
remediation: { description: 'Use parameterized queries or prepared statements', estimatedEffort: 'moderate', automatable: false },
|
|
82
|
+
references: ['https://owasp.org/www-community/attacks/SQL_Injection'],
|
|
83
|
+
});
|
|
84
|
+
break;
|
|
92
85
|
}
|
|
93
86
|
}
|
|
94
|
-
catch {
|
|
95
|
-
// Request failed
|
|
96
|
-
}
|
|
97
87
|
}
|
|
98
88
|
}
|
|
99
89
|
//# sourceMappingURL=dast-injection-testing.js.map
|
|
@@ -4,6 +4,27 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Result } from '@shared/types/index.js';
|
|
6
6
|
import type { SecurityScannerConfig, DASTResult, DASTOptions, AuthCredentials, MemoryBackend, ScanStatus } from './scanner-types.js';
|
|
7
|
+
/**
|
|
8
|
+
* DAST Scanner - Dynamic Application Security Testing
|
|
9
|
+
* Scans running applications for security vulnerabilities
|
|
10
|
+
*
|
|
11
|
+
* **Capabilities:**
|
|
12
|
+
* - Security header analysis (HSTS, CSP, X-Frame-Options, etc.)
|
|
13
|
+
* - Cookie security (Secure, HttpOnly, SameSite flags)
|
|
14
|
+
* - CORS misconfiguration detection
|
|
15
|
+
* - Sensitive file exposure (/.git, /.env, etc.)
|
|
16
|
+
* - Link crawling with same-origin scope
|
|
17
|
+
* - XSS reflection testing (GET parameters)
|
|
18
|
+
* - SQL injection error-based detection (GET parameters)
|
|
19
|
+
* - Form security analysis (CSRF tokens, autocomplete, action URLs)
|
|
20
|
+
*
|
|
21
|
+
* **Limitations:**
|
|
22
|
+
* - Injection testing: GET parameters only (POST form submission not implemented)
|
|
23
|
+
* - Crawling: Same-origin only, max 10 links per page, single depth
|
|
24
|
+
* - Auth flows: Header-based only, no login form automation
|
|
25
|
+
* - No JavaScript execution (static response analysis only)
|
|
26
|
+
* - No session management testing beyond cookie attributes
|
|
27
|
+
*/
|
|
7
28
|
export declare class DASTScanner {
|
|
8
29
|
private readonly config;
|
|
9
30
|
private readonly memory;
|
|
@@ -31,7 +52,6 @@ export declare class DASTScanner {
|
|
|
31
52
|
private performAuthenticatedScan;
|
|
32
53
|
private createInvalidUrlVuln;
|
|
33
54
|
private createInsecureProtocolVuln;
|
|
34
|
-
private createAuthFailedVuln;
|
|
35
55
|
private createTokenInUrlVuln;
|
|
36
56
|
/**
|
|
37
57
|
* Test URL parameters for injection vulnerabilities
|
|
@@ -2,15 +2,25 @@
|
|
|
2
2
|
* Agentic QE v3 - DAST (Dynamic Application Security Testing) Scanner
|
|
3
3
|
* Performs dynamic analysis of running applications to detect security vulnerabilities
|
|
4
4
|
*/
|
|
5
|
-
import { LoggerFactory } from '../../../../logging/index.js';
|
|
6
5
|
import { v4 as uuidv4 } from 'uuid';
|
|
7
6
|
import { ok, err } from '../../../../shared/types/index.js';
|
|
8
7
|
import { toError } from '../../../../shared/error-utils.js';
|
|
9
8
|
import { fetchWithResponseDeadline } from '../../../../shared/llm/providers/response-deadline.js';
|
|
10
|
-
import { analyzeSecurityHeaders, analyzeCookieSecurity, analyzeServerHeaders, scanSensitiveFiles, analyzeCORS, extractAndCrawlLinks, testXSS, testSQLi, analyzeFormsForSecurityIssues, testAuthorizationBypass, testIDOR, validateCredentials, buildAuthHeaders,
|
|
9
|
+
import { analyzeSecurityHeaders, analyzeCookieSecurity, analyzeServerHeaders, scanSensitiveFiles, analyzeCORS, extractAndCrawlLinks, testXSS, testSQLi, analyzeFormsForSecurityIssues, testAuthorizationBypass, testIDOR, validateCredentials, buildAuthHeaders, calculateSummary, storeScanResults, } from './dast-helpers.js';
|
|
11
10
|
// ============================================================================
|
|
12
11
|
// DAST Scanner Service
|
|
13
12
|
// ============================================================================
|
|
13
|
+
/** Transport failures are execution errors, not absence of vulnerabilities. */
|
|
14
|
+
function dastRequestFailure(error) {
|
|
15
|
+
if (error instanceof Error && 'code' in error && ['DAST_AUTHENTICATION_FAILED', 'DAST_TARGET_UNAVAILABLE'].includes(String(error.code)))
|
|
16
|
+
return error;
|
|
17
|
+
const timeout = error instanceof Error && /timeout|abort/i.test(error.message);
|
|
18
|
+
return Object.assign(new Error(timeout
|
|
19
|
+
? 'DAST target request timeout; dynamic analysis is incomplete'
|
|
20
|
+
: 'DAST target request failed; dynamic analysis is incomplete'), {
|
|
21
|
+
code: timeout ? 'DAST_REQUEST_TIMEOUT' : 'DAST_REQUEST_FAILED',
|
|
22
|
+
});
|
|
23
|
+
}
|
|
14
24
|
/**
|
|
15
25
|
* DAST Scanner - Dynamic Application Security Testing
|
|
16
26
|
* Scans running applications for security vulnerabilities
|
|
@@ -32,7 +42,6 @@ import { analyzeSecurityHeaders, analyzeCookieSecurity, analyzeServerHeaders, sc
|
|
|
32
42
|
* - No JavaScript execution (static response analysis only)
|
|
33
43
|
* - No session management testing beyond cookie attributes
|
|
34
44
|
*/
|
|
35
|
-
const logger = LoggerFactory.create('security-compliance/dast-scanner');
|
|
36
45
|
export class DASTScanner {
|
|
37
46
|
config;
|
|
38
47
|
memory;
|
|
@@ -90,7 +99,7 @@ export class DASTScanner {
|
|
|
90
99
|
// Validate credentials
|
|
91
100
|
const credValidation = validateCredentials(credentials);
|
|
92
101
|
if (!credValidation.valid) {
|
|
93
|
-
|
|
102
|
+
throw new Error(credValidation.reason);
|
|
94
103
|
}
|
|
95
104
|
const mergedOptions = {
|
|
96
105
|
maxDepth: options?.maxDepth ?? this.config.dastMaxDepth,
|
|
@@ -158,6 +167,12 @@ export class DASTScanner {
|
|
|
158
167
|
},
|
|
159
168
|
redirect: 'follow',
|
|
160
169
|
}, deadlineMs, () => new Error(`DAST request timeout after ${deadlineMs}ms: ${targetUrl}`));
|
|
170
|
+
if (response.status === 401 || response.status === 403 || response.status >= 500) {
|
|
171
|
+
await response.body?.cancel().catch(() => undefined);
|
|
172
|
+
throw Object.assign(new Error(`DAST ${response.status < 500 ? 'authentication rejected' : 'target unavailable'} (HTTP ${response.status}); dynamic analysis is incomplete`), {
|
|
173
|
+
code: response.status < 500 ? 'DAST_AUTHENTICATION_FAILED' : 'DAST_TARGET_UNAVAILABLE',
|
|
174
|
+
});
|
|
175
|
+
}
|
|
161
176
|
crawledUrls++;
|
|
162
177
|
// Security header analysis
|
|
163
178
|
analyzeSecurityHeaders(response.headers, targetUrl, vulnerabilities);
|
|
@@ -190,11 +205,11 @@ export class DASTScanner {
|
|
|
190
205
|
}
|
|
191
206
|
}
|
|
192
207
|
catch (fetchError) {
|
|
193
|
-
|
|
208
|
+
throw dastRequestFailure(fetchError);
|
|
194
209
|
}
|
|
195
210
|
}
|
|
196
211
|
catch (error) {
|
|
197
|
-
|
|
212
|
+
throw toError(error);
|
|
198
213
|
}
|
|
199
214
|
return { vulnerabilities, crawledUrls };
|
|
200
215
|
}
|
|
@@ -231,11 +246,13 @@ export class DASTScanner {
|
|
|
231
246
|
redirect: 'follow',
|
|
232
247
|
}, deadlineMs, () => new Error(`DAST request timeout after ${deadlineMs}ms: ${targetUrl}`));
|
|
233
248
|
await response.body?.cancel().catch(() => undefined);
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
249
|
+
if (response.status === 401 || response.status === 403 || response.status >= 500) {
|
|
250
|
+
await response.body?.cancel().catch(() => undefined);
|
|
251
|
+
throw Object.assign(new Error(`DAST ${response.status < 500 ? 'authentication rejected' : 'target unavailable'} (HTTP ${response.status}); dynamic analysis is incomplete`), {
|
|
252
|
+
code: response.status < 500 ? 'DAST_AUTHENTICATION_FAILED' : 'DAST_TARGET_UNAVAILABLE',
|
|
253
|
+
});
|
|
238
254
|
}
|
|
255
|
+
crawledUrls++;
|
|
239
256
|
// Standard security header checks
|
|
240
257
|
analyzeSecurityHeaders(response.headers, targetUrl, vulnerabilities, true);
|
|
241
258
|
// Check for session token in URL
|
|
@@ -251,11 +268,11 @@ export class DASTScanner {
|
|
|
251
268
|
analyzeCookieSecurity(response.headers, targetUrl, vulnerabilities, true);
|
|
252
269
|
}
|
|
253
270
|
catch (fetchError) {
|
|
254
|
-
|
|
271
|
+
throw dastRequestFailure(fetchError);
|
|
255
272
|
}
|
|
256
273
|
}
|
|
257
274
|
catch (error) {
|
|
258
|
-
|
|
275
|
+
throw toError(error);
|
|
259
276
|
}
|
|
260
277
|
return { vulnerabilities, crawledUrls };
|
|
261
278
|
}
|
|
@@ -286,18 +303,6 @@ export class DASTScanner {
|
|
|
286
303
|
references: ['https://owasp.org/www-project-web-security-testing-guide/'],
|
|
287
304
|
};
|
|
288
305
|
}
|
|
289
|
-
createAuthFailedVuln(targetUrl, status) {
|
|
290
|
-
return {
|
|
291
|
-
id: uuidv4(),
|
|
292
|
-
title: 'Authentication Failed',
|
|
293
|
-
description: `Authentication returned ${status} status`,
|
|
294
|
-
severity: 'informational',
|
|
295
|
-
category: 'broken-auth',
|
|
296
|
-
location: { file: targetUrl },
|
|
297
|
-
remediation: { description: 'Verify credentials are correct', estimatedEffort: 'trivial', automatable: false },
|
|
298
|
-
references: [],
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
306
|
createTokenInUrlVuln(targetUrl, search) {
|
|
302
307
|
return {
|
|
303
308
|
id: uuidv4(),
|
|
@@ -22,28 +22,33 @@
|
|
|
22
22
|
* complete, with a reason; each member can be scanned directly.
|
|
23
23
|
*/
|
|
24
24
|
import * as fs from 'fs/promises';
|
|
25
|
+
// #1161: manifests and lockfiles are read from a validated descriptor; one
|
|
26
|
+
// linked out of the project, or to a device, is refused instead of read.
|
|
27
|
+
import { readConfinedText } from '../../../../shared/io/confined-read.js';
|
|
25
28
|
import * as path from 'path';
|
|
26
29
|
import semver from 'semver';
|
|
27
30
|
import { parse as parseYaml } from 'yaml';
|
|
28
31
|
import { safeJsonParse } from '../../../../shared/safe-json.js';
|
|
29
32
|
import { classifyNpmSpec, exactNpmVersion } from '../../../../shared/security/osv-lookup.js';
|
|
33
|
+
import { createSafeRecord, getOwn, setOwn } from '../../../../shared/utils/safe-record.js';
|
|
30
34
|
import { LOCKFILES, parseLockfile } from './lockfile-versions.js';
|
|
31
35
|
/** The reason a workspace root's scan is not complete (#1057). */
|
|
32
36
|
export const WORKSPACE_NOT_SCANNED = 'workspace member dependencies are not scanned yet (#1057); scan each member directory separately';
|
|
33
37
|
const OUT_OF_SYNC = 'lockfile out of sync with package.json';
|
|
34
38
|
/** All declared dependencies of a manifest (later fields win, as npm resolves them). */
|
|
35
39
|
export function declaredDependencies(manifest) {
|
|
36
|
-
|
|
40
|
+
// #1157: a dependency named `__proto__` is kept as an own entry, not dropped.
|
|
41
|
+
const out = createSafeRecord();
|
|
37
42
|
for (const field of ['peerDependencies', 'optionalDependencies', 'devDependencies', 'dependencies']) {
|
|
38
43
|
for (const [name, spec] of Object.entries(manifest[field] ?? {})) {
|
|
39
44
|
if (typeof spec === 'string')
|
|
40
|
-
out
|
|
45
|
+
setOwn(out, name, spec);
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
48
|
return out;
|
|
44
49
|
}
|
|
45
50
|
async function readManifest(file) {
|
|
46
|
-
return safeJsonParse(await
|
|
51
|
+
return safeJsonParse(await readConfinedText(file, { outsideRoot: 'allow' }));
|
|
47
52
|
}
|
|
48
53
|
async function exists(file) {
|
|
49
54
|
try {
|
|
@@ -123,7 +128,7 @@ async function pnpmDeclaresPackages(file) {
|
|
|
123
128
|
const st = await fs.stat(file); // follows a link; a dangling one throws
|
|
124
129
|
if (!st.isFile() || st.size > MAX_PNPM_WORKSPACE_BYTES)
|
|
125
130
|
return true;
|
|
126
|
-
const text = await
|
|
131
|
+
const text = await readConfinedText(file, { outsideRoot: 'allow', maxBytes: MAX_PNPM_WORKSPACE_BYTES });
|
|
127
132
|
doc = parseYaml(text, { uniqueKeys: false, merge: true, maxAliasCount: 100 });
|
|
128
133
|
}
|
|
129
134
|
catch {
|
|
@@ -182,7 +187,10 @@ export function resolveFromRecord(dependencies, lockedVersions = {}) {
|
|
|
182
187
|
members: () => [],
|
|
183
188
|
hasImporter: () => true,
|
|
184
189
|
recordedSpec: () => null,
|
|
185
|
-
resolve: (_importer, name) =>
|
|
190
|
+
resolve: (_importer, name) => {
|
|
191
|
+
const version = getOwn(lockedVersions, name);
|
|
192
|
+
return version !== undefined ? { version } : undefined;
|
|
193
|
+
},
|
|
186
194
|
};
|
|
187
195
|
return Object.entries(dependencies).map(([name, spec]) => resolveOne(name, spec, '', index, new Set()));
|
|
188
196
|
}
|
|
@@ -202,7 +210,7 @@ export async function resolveDependencies(manifestPath) {
|
|
|
202
210
|
if (found) {
|
|
203
211
|
const member = path.relative(found.dir, realManifestDir).split(path.sep).join('/');
|
|
204
212
|
try {
|
|
205
|
-
const parsed = parseLockfile(found.file, await
|
|
213
|
+
const parsed = parseLockfile(found.file, await readConfinedText(path.join(found.dir, found.file), { outsideRoot: 'allow' }));
|
|
206
214
|
const rootManifest = member ? await readManifest(path.join(found.dir, 'package.json')).catch(() => ({})) : manifest;
|
|
207
215
|
// A member scanned directly: the root lockfile covers it if it lists the
|
|
208
216
|
// importer (npm/pnpm) or, for yarn, if the root declares workspaces.
|
|
@@ -11,6 +11,7 @@ import { ok, err } from '../../../../shared/types/index.js';
|
|
|
11
11
|
import { ALL_SECURITY_PATTERNS, BUILT_IN_RULE_SETS } from './security-patterns.js';
|
|
12
12
|
import { toError } from '../../../../shared/error-utils.js';
|
|
13
13
|
import { safeJsonParse } from '../../../../shared/safe-json.js';
|
|
14
|
+
import { readConfinedFile } from '../../../../shared/io/confined-read.js';
|
|
14
15
|
import { CLAUDE_TIER_MODELS, DEFAULT_OPUS_MODEL } from '../../../../shared/llm/model-registry.js';
|
|
15
16
|
import { isSemgrepAvailable, runSemgrepWithRules, convertSemgrepFindings, } from '../semgrep-integration.js';
|
|
16
17
|
// ============================================================================
|
|
@@ -303,8 +304,9 @@ export class SASTScanner {
|
|
|
303
304
|
let content;
|
|
304
305
|
let sourceDigest;
|
|
305
306
|
try {
|
|
306
|
-
|
|
307
|
-
|
|
307
|
+
// #1161: open once and validate the opened descriptor, so a file swapped
|
|
308
|
+
// after the sast-scan path check cannot redirect the read.
|
|
309
|
+
const bytes = await readConfinedFile(filePath, { outsideRoot: 'allow' });
|
|
308
310
|
sourceDigest = createHash('sha256').update(bytes).digest('hex');
|
|
309
311
|
content = bytes.toString('utf8');
|
|
310
312
|
}
|
|
@@ -122,7 +122,10 @@ export class SecurityScannerService {
|
|
|
122
122
|
if (dastScan.success) {
|
|
123
123
|
dastResult = dastScan.value;
|
|
124
124
|
}
|
|
125
|
-
|
|
125
|
+
else {
|
|
126
|
+
// A requested phase that did not execute cannot become a full scan.
|
|
127
|
+
return err(dastScan.error);
|
|
128
|
+
}
|
|
126
129
|
}
|
|
127
130
|
// Combine summaries
|
|
128
131
|
const combinedSummary = this.combineSummaries(sastResult.value.summary, dastResult?.summary);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { LoggerFactory } from '../../../logging/index.js';
|
|
6
6
|
import { v4 as uuidv4 } from 'uuid';
|
|
7
|
-
import
|
|
7
|
+
import { readConfinedText } from '../../../shared/io/confined-read.js';
|
|
8
8
|
import * as path from 'path';
|
|
9
9
|
/**
|
|
10
10
|
* Get the default SAST vulnerability patterns for JS/TS analysis
|
|
@@ -173,7 +173,7 @@ export async function performSASTScan(findSourceFiles, shouldExclude) {
|
|
|
173
173
|
continue;
|
|
174
174
|
}
|
|
175
175
|
try {
|
|
176
|
-
const content = await
|
|
176
|
+
const content = await readConfinedText(filePath, { outsideRoot: 'allow' }); // #1161
|
|
177
177
|
const lines = content.split('\n');
|
|
178
178
|
filesScanned++;
|
|
179
179
|
linesScanned += lines.length;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Extracted from security-auditor.ts - Secret/credential detection
|
|
4
4
|
*/
|
|
5
5
|
import { LoggerFactory } from '../../../logging/index.js';
|
|
6
|
-
import
|
|
6
|
+
import { readConfinedText } from '../../../shared/io/confined-read.js';
|
|
7
7
|
/**
|
|
8
8
|
* Get the comprehensive set of secret detection patterns
|
|
9
9
|
*/
|
|
@@ -198,7 +198,7 @@ export function validateSecret(type, value) {
|
|
|
198
198
|
export async function scanFileForSecrets(file) {
|
|
199
199
|
const secrets = [];
|
|
200
200
|
try {
|
|
201
|
-
const content = await
|
|
201
|
+
const content = await readConfinedText(file.value, { outsideRoot: 'allow' }); // #1161
|
|
202
202
|
const lines = content.split('\n');
|
|
203
203
|
const secretPatterns = getSecretPatterns();
|
|
204
204
|
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { LoggerFactory } from '../../../logging/index.js';
|
|
13
13
|
import { v4 as uuidv4 } from 'uuid';
|
|
14
14
|
import * as fs from 'fs/promises';
|
|
15
|
+
import { readConfinedText } from '../../../shared/io/confined-read.js';
|
|
15
16
|
import * as path from 'path';
|
|
16
17
|
import { ok, err } from '../../../shared/types/index.js';
|
|
17
18
|
import { toError } from '../../../shared/error-utils.js';
|
|
@@ -249,7 +250,7 @@ export class SecurityAuditorService {
|
|
|
249
250
|
const dependencies = [];
|
|
250
251
|
try {
|
|
251
252
|
if (ecosystem === 'npm') {
|
|
252
|
-
const content = await
|
|
253
|
+
const content = await readConfinedText(manifest, { outsideRoot: 'allow' }); // #1161
|
|
253
254
|
const packageJson = safeJsonParse(content);
|
|
254
255
|
const allDeps = {
|
|
255
256
|
...packageJson.dependencies,
|
|
@@ -263,7 +264,7 @@ export class SecurityAuditorService {
|
|
|
263
264
|
}
|
|
264
265
|
}
|
|
265
266
|
else if (ecosystem === 'pip') {
|
|
266
|
-
const content = await
|
|
267
|
+
const content = await readConfinedText(manifest, { outsideRoot: 'allow' }); // #1161
|
|
267
268
|
const lines = content.split('\n');
|
|
268
269
|
for (const line of lines) {
|
|
269
270
|
const trimmed = line.trim();
|
|
@@ -123,6 +123,12 @@ export declare class TestExecutionCoordinator extends BaseDomainCoordinator<Test
|
|
|
123
123
|
* Auto-detects framework and uses sensible defaults
|
|
124
124
|
*/
|
|
125
125
|
runTests(request: SimpleTestRequest): Promise<Result<TestRunResult, Error>>;
|
|
126
|
+
/**
|
|
127
|
+
* Retry a run's failed tests when retries were requested, and attach what
|
|
128
|
+
* the retries did to the run (#1130). A test that passed on a retry counts
|
|
129
|
+
* as passed and flaky in the run's own counts (#1170).
|
|
130
|
+
*/
|
|
131
|
+
private retryFailures;
|
|
126
132
|
/**
|
|
127
133
|
* Detect test framework from file patterns and project configuration
|
|
128
134
|
*/
|
|
@@ -9,6 +9,7 @@ import { TestExecutionEvents, createEvent, } from '../../shared/events/index.js'
|
|
|
9
9
|
import { TestExecutorService } from './services/test-executor.js';
|
|
10
10
|
import { FlakyDetectorService } from './services/flaky-detector.js';
|
|
11
11
|
import { RetryHandlerService } from './services/retry-handler.js';
|
|
12
|
+
import { applyRetryOutcome } from './services/retry-outcome.js';
|
|
12
13
|
import { TestPrioritizerService } from './services/test-prioritizer.js';
|
|
13
14
|
import { createE2ETestRunnerService, } from './services/e2e-runner.js';
|
|
14
15
|
import { createDomainFinding, } from '../../coordination/consensus/domain-findings.js';
|
|
@@ -146,16 +147,8 @@ export class TestExecutionCoordinator extends BaseDomainCoordinator {
|
|
|
146
147
|
workers,
|
|
147
148
|
timeout,
|
|
148
149
|
});
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const failedTestIds = result.value.failedTests.map(t => t.testId);
|
|
152
|
-
await this.retry({
|
|
153
|
-
runId: result.value.runId,
|
|
154
|
-
failedTests: failedTestIds,
|
|
155
|
-
maxRetries: request.retryCount,
|
|
156
|
-
backoff: 'exponential',
|
|
157
|
-
});
|
|
158
|
-
}
|
|
150
|
+
if (result.success)
|
|
151
|
+
await this.retryFailures(result.value, request.retryCount);
|
|
159
152
|
return result;
|
|
160
153
|
}
|
|
161
154
|
// Sequential execution
|
|
@@ -164,18 +157,32 @@ export class TestExecutionCoordinator extends BaseDomainCoordinator {
|
|
|
164
157
|
framework,
|
|
165
158
|
timeout,
|
|
166
159
|
});
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const failedTestIds = result.value.failedTests.map(t => t.testId);
|
|
170
|
-
await this.retry({
|
|
171
|
-
runId: result.value.runId,
|
|
172
|
-
failedTests: failedTestIds,
|
|
173
|
-
maxRetries: request.retryCount,
|
|
174
|
-
backoff: 'exponential',
|
|
175
|
-
});
|
|
176
|
-
}
|
|
160
|
+
if (result.success)
|
|
161
|
+
await this.retryFailures(result.value, request.retryCount);
|
|
177
162
|
return result;
|
|
178
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Retry a run's failed tests when retries were requested, and attach what
|
|
166
|
+
* the retries did to the run (#1130). A test that passed on a retry counts
|
|
167
|
+
* as passed and flaky in the run's own counts (#1170).
|
|
168
|
+
*/
|
|
169
|
+
async retryFailures(run, retryCount) {
|
|
170
|
+
if (!retryCount || retryCount <= 0)
|
|
171
|
+
return;
|
|
172
|
+
if (run.failed === 0) {
|
|
173
|
+
run.retries = { totalRetries: 0, nowPassing: 0, stillFailing: 0, tests: [] };
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const retried = await this.retry({
|
|
177
|
+
runId: run.runId,
|
|
178
|
+
failedTests: run.failedTests.map(t => t.testId),
|
|
179
|
+
maxRetries: retryCount,
|
|
180
|
+
backoff: 'exponential',
|
|
181
|
+
});
|
|
182
|
+
if (!retried.success)
|
|
183
|
+
return;
|
|
184
|
+
applyRetryOutcome(run, retried.value);
|
|
185
|
+
}
|
|
179
186
|
/**
|
|
180
187
|
* Detect test framework from file patterns and project configuration
|
|
181
188
|
*/
|
|
@@ -671,11 +678,10 @@ export class TestExecutionCoordinator extends BaseDomainCoordinator {
|
|
|
671
678
|
/**
|
|
672
679
|
* Record execution results for DT learning
|
|
673
680
|
*/
|
|
674
|
-
async recordExecutionResults(runId, testFiles, result,
|
|
681
|
+
async recordExecutionResults(runId, testFiles, result, _prioritizationInfo) {
|
|
675
682
|
// Record each test execution for learning
|
|
676
683
|
for (let i = 0; i < testFiles.length; i++) {
|
|
677
684
|
const testId = this.generateTestId(testFiles[i]);
|
|
678
|
-
const info = prioritizationInfo;
|
|
679
685
|
// Find if this test failed (check if it's in failed tests)
|
|
680
686
|
const failedTest = result.failedTests.find(t => t.file === testFiles[i]);
|
|
681
687
|
const passed = !failedTest;
|
|
@@ -78,6 +78,27 @@ export interface ITestRunResult {
|
|
|
78
78
|
coverage?: ICoverageData;
|
|
79
79
|
/** Per-file coverage data for granular quality assessment */
|
|
80
80
|
fileCoverages?: IFileCoverageData[];
|
|
81
|
+
/** #1130: what the requested retries of failed tests did. Absent when none were requested. */
|
|
82
|
+
retries?: IRunRetrySummary;
|
|
83
|
+
/**
|
|
84
|
+
* #1170: tests that failed and then passed on a retry. They are counted in
|
|
85
|
+
* `passed`, not `failed`. Absent when no test passed on a retry.
|
|
86
|
+
*/
|
|
87
|
+
flaky?: number;
|
|
88
|
+
}
|
|
89
|
+
/** #1130: the measured outcome of a run's retries, per failed test. */
|
|
90
|
+
export interface IRunRetrySummary {
|
|
91
|
+
/** Reruns that executed a test (an unmatched retry runs nothing and is not counted). */
|
|
92
|
+
totalRetries: number;
|
|
93
|
+
nowPassing: number;
|
|
94
|
+
stillFailing: number;
|
|
95
|
+
tests: Array<{
|
|
96
|
+
name: string;
|
|
97
|
+
file: string;
|
|
98
|
+
attempts: number;
|
|
99
|
+
passed: boolean;
|
|
100
|
+
unmatched?: boolean;
|
|
101
|
+
}>;
|
|
81
102
|
}
|
|
82
103
|
/** One test case taken verbatim from a runner report (#1110). */
|
|
83
104
|
export interface ITestCaseResult {
|
|
@@ -86,8 +107,13 @@ export interface ITestCaseResult {
|
|
|
86
107
|
status: 'passed' | 'failed' | 'skipped';
|
|
87
108
|
/** Runner-reported duration in ms; omitted when the runner reported none. */
|
|
88
109
|
duration?: number;
|
|
89
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* The runner's failure message for a failed test, or for the failed first
|
|
112
|
+
* attempt of a flaky test, when it reported one.
|
|
113
|
+
*/
|
|
90
114
|
failureMessage?: string;
|
|
115
|
+
/** #1170: the test failed and then passed on a retry, so it is `passed`. */
|
|
116
|
+
flaky?: true;
|
|
91
117
|
}
|
|
92
118
|
export interface IFileCoverageData {
|
|
93
119
|
path: string;
|
|
@@ -144,6 +170,15 @@ export interface IRetryResult {
|
|
|
144
170
|
nowPassing: number;
|
|
145
171
|
stillFailing: number;
|
|
146
172
|
flakyDetected: string[];
|
|
173
|
+
/** Failed tests whose retry filter selected no test, so none was rerun (#1141). */
|
|
174
|
+
unmatched?: string[];
|
|
175
|
+
/** #1130: the outcome per retried test. */
|
|
176
|
+
tests?: Array<{
|
|
177
|
+
testId: string;
|
|
178
|
+
attempts: number;
|
|
179
|
+
passed: boolean;
|
|
180
|
+
unmatched?: boolean;
|
|
181
|
+
}>;
|
|
147
182
|
}
|
|
148
183
|
export interface IExecutionStats {
|
|
149
184
|
runId: string;
|