agentic-qe 3.15.4 → 3.15.5
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 +70 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/bridge/captured-experience-bridge.js +7 -9
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-EGIPTX5H.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-MHJBRXMK.js → agent-booster-wasm-CCTTGCQS.js} +2 -2
- package/dist/cli/chunks/{agent-handler-G64SD7J2.js → agent-handler-DHYUF3NX.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-G4UXFPKH.js → agent-memory-branch-642W7CYX.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-WP4GCBDT.js +2 -0
- package/dist/cli/chunks/{arena-QJMKYPHS.js → arena-MUCC7UUN.js} +4 -4
- package/dist/cli/chunks/{arena-63M3M6EW.js → arena-NW2JVAFY.js} +2 -2
- package/dist/cli/chunks/{audit-UDFVTWSX.js → audit-VKQTZJAA.js} +3 -3
- package/dist/cli/chunks/base-6ORFD62I.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-JLX2G56I.js → better-sqlite3-7ZUFVWLQ.js} +2 -2
- package/dist/cli/chunks/{brain-handler-PWF32LLW.js → brain-handler-7LKAWSBI.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-PB7QWXDP.js → branch-enumerator-HUNXJKM4.js} +2 -2
- package/dist/cli/chunks/{browser-CYNV2F3U.js → browser-ZSZEYUDP.js} +2 -2
- package/dist/cli/chunks/browser-workflow-PIXGERWP.js +2 -0
- package/dist/cli/chunks/{chunk-RWZ4F44Y.js → chunk-2KWI3MT3.js} +2 -2
- package/dist/cli/chunks/{chunk-UORI2CZ4.js → chunk-2WFTZSRT.js} +1 -1
- package/dist/cli/chunks/{chunk-HCDTLV5J.js → chunk-2XYTS2WY.js} +2 -2
- package/dist/cli/chunks/{chunk-DBIK4OFX.js → chunk-35MDATQE.js} +1 -1
- package/dist/cli/chunks/{chunk-54XTJBHV.js → chunk-3AYYGR6W.js} +1 -1
- package/dist/cli/chunks/{chunk-SJB4KMZS.js → chunk-3DTEQHFB.js} +3 -3
- package/dist/cli/chunks/{chunk-RG67RZIX.js → chunk-3OAQPN2N.js} +2 -2
- package/dist/cli/chunks/{chunk-2DRMTRBM.js → chunk-3QD7U3FY.js} +2 -2
- package/dist/cli/chunks/{chunk-VMSO6DMF.js → chunk-3SH23PS3.js} +2 -2
- package/dist/cli/chunks/{chunk-RJ5CZ7B6.js → chunk-3YASZPLO.js} +2 -2
- package/dist/cli/chunks/{chunk-JFQDWAU3.js → chunk-3YNP33GB.js} +2 -2
- package/dist/cli/chunks/{chunk-I53365HG.js → chunk-47GEI2LT.js} +3 -3
- package/dist/cli/chunks/{chunk-PCWZCXBD.js → chunk-4AZP7ZCW.js} +2 -2
- package/dist/cli/chunks/{chunk-54ITMOFM.js → chunk-4PT5KNXL.js} +4 -4
- package/dist/cli/chunks/{chunk-SIUUAKCE.js → chunk-4UXPDV7E.js} +1 -1
- package/dist/cli/chunks/{chunk-LZSLJJII.js → chunk-4XSCZVON.js} +2 -2
- package/dist/cli/chunks/{chunk-DFJGXXCL.js → chunk-5BOZCMXZ.js} +1 -1
- package/dist/cli/chunks/{chunk-B7J3O2WM.js → chunk-644DFAGS.js} +1 -1
- package/dist/cli/chunks/{chunk-2ICC4H6K.js → chunk-663ZFPUL.js} +2 -2
- package/dist/cli/chunks/{chunk-YUWUFYHK.js → chunk-6JFGB2JB.js} +1 -1
- package/dist/cli/chunks/{chunk-MBV57LKC.js → chunk-6LG5UEQE.js} +2 -2
- package/dist/cli/chunks/{chunk-LRTF5RMG.js → chunk-6UYN5PHA.js} +4 -4
- package/dist/cli/chunks/{chunk-5SS2Z7JC.js → chunk-6ZIDZ4TJ.js} +2 -2
- package/dist/cli/chunks/{chunk-2534PXIV.js → chunk-7BIYJRQJ.js} +2 -2
- package/dist/cli/chunks/{chunk-HX5KQK7I.js → chunk-7EZLOC4K.js} +2 -2
- package/dist/cli/chunks/{chunk-ZAOQIVHG.js → chunk-7YB2KELI.js} +2 -2
- package/dist/cli/chunks/{chunk-SOSJFEFB.js → chunk-A2WOQO2N.js} +2 -2
- package/dist/cli/chunks/{chunk-M6SJALLA.js → chunk-A337MD3C.js} +2 -2
- package/dist/cli/chunks/{chunk-YZ2AGC7O.js → chunk-A5J4XJS6.js} +1 -1
- package/dist/cli/chunks/{chunk-PEA4DVXW.js → chunk-AQN5EDBM.js} +1 -1
- package/dist/cli/chunks/{chunk-EGHK6NMH.js → chunk-AUZXRFOX.js} +2 -2
- package/dist/cli/chunks/{chunk-BBKLVHDQ.js → chunk-B2UHTA4Q.js} +1 -1
- package/dist/cli/chunks/{chunk-LY53L6NH.js → chunk-BBL6YXD3.js} +2 -2
- package/dist/cli/chunks/chunk-BJ5P4IV2.js +2 -0
- package/dist/cli/chunks/{chunk-I43QRLLB.js → chunk-BMWAWZAN.js} +2 -2
- package/dist/cli/chunks/chunk-BO4PKNYP.js +102 -0
- package/dist/cli/chunks/{chunk-PMXWDTDK.js → chunk-BY646JOM.js} +2 -2
- package/dist/cli/chunks/{chunk-OFQDM73J.js → chunk-BYXNHGQC.js} +2 -2
- package/dist/cli/chunks/{chunk-73MTUM6F.js → chunk-BZFT4QDQ.js} +2 -2
- package/dist/cli/chunks/{chunk-RA3MI5WK.js → chunk-CFPR24YK.js} +2 -2
- package/dist/cli/chunks/{chunk-WEDVLKRB.js → chunk-CQMHDAJS.js} +2 -2
- package/dist/cli/chunks/{chunk-HFSBONCS.js → chunk-CR2JUANW.js} +2 -2
- package/dist/cli/chunks/{chunk-BY3IL56R.js → chunk-CXOXUBYU.js} +1 -1
- package/dist/cli/chunks/{chunk-AOKSLWON.js → chunk-D3G2NN7F.js} +77 -78
- package/dist/cli/chunks/{chunk-I5A3HGO6.js → chunk-DEGWCUMY.js} +2 -2
- package/dist/cli/chunks/{chunk-CQ3WSTJ2.js → chunk-DFPL5N3Q.js} +2 -2
- package/dist/cli/chunks/{chunk-TVQPYP2Z.js → chunk-DL5JENWD.js} +3 -3
- package/dist/cli/chunks/{chunk-V3NZ23X6.js → chunk-DLY4YEN3.js} +2 -2
- package/dist/cli/chunks/{chunk-HEKCN5XQ.js → chunk-DPV33C77.js} +2 -2
- package/dist/cli/chunks/{chunk-KOLHZSEC.js → chunk-DPYDUKVZ.js} +2 -2
- package/dist/cli/chunks/{chunk-3MSBVOYW.js → chunk-DTJODGCE.js} +2 -2
- package/dist/cli/chunks/{chunk-MGH4XIHH.js → chunk-DWZI3IVB.js} +2 -2
- package/dist/cli/chunks/{chunk-DPL4ZXTE.js → chunk-DXVZBJE4.js} +1 -1
- package/dist/cli/chunks/{chunk-LXYTC62V.js → chunk-E4VIVMDL.js} +2 -2
- package/dist/cli/chunks/{chunk-DVE5SM5G.js → chunk-EAYQCBXL.js} +3 -3
- package/dist/cli/chunks/{chunk-BY5PLEPZ.js → chunk-EOR3RECZ.js} +2 -2
- package/dist/cli/chunks/chunk-ERGWWI4Y.js +3 -0
- package/dist/cli/chunks/{chunk-LPSE6DOQ.js → chunk-EUEHBERE.js} +1 -1
- package/dist/cli/chunks/{chunk-3BDDOFYW.js → chunk-EVCFUYYK.js} +2 -2
- package/dist/cli/chunks/{chunk-SZWXUG36.js → chunk-FBEXG4HD.js} +2 -2
- package/dist/cli/chunks/{chunk-5GWTJJEO.js → chunk-FE3AIZI6.js} +1 -1
- package/dist/cli/chunks/{chunk-4GLR2S2M.js → chunk-FHUJCVT3.js} +2 -2
- package/dist/cli/chunks/{chunk-6TMUZGM2.js → chunk-FNAYDITO.js} +1 -1
- package/dist/cli/chunks/{chunk-U2E5F3VZ.js → chunk-FQKEZVN6.js} +2 -2
- package/dist/cli/chunks/{chunk-2LL35V3A.js → chunk-FWYJ6UDX.js} +2 -2
- package/dist/cli/chunks/{chunk-ISASRHZP.js → chunk-GGDKOJVF.js} +2 -2
- package/dist/cli/chunks/{chunk-ZKXZTIVF.js → chunk-GKPRECLL.js} +2 -2
- package/dist/cli/chunks/{chunk-OHH6BUZK.js → chunk-GRIPCYW5.js} +1 -1
- package/dist/cli/chunks/{chunk-XZ5Z56OP.js → chunk-GTSOFCMQ.js} +1 -1
- package/dist/cli/chunks/{chunk-2MU4WCMQ.js → chunk-HBYQYGXP.js} +2 -2
- package/dist/cli/chunks/{chunk-YQ6BK7QC.js → chunk-HGBJ2QQ4.js} +2 -2
- package/dist/cli/chunks/{chunk-N6CRIUTO.js → chunk-HIUNCO2W.js} +2 -2
- package/dist/cli/chunks/{chunk-5H7MR6HP.js → chunk-HLFDC4SF.js} +1 -1
- package/dist/cli/chunks/{chunk-GAXTPQCZ.js → chunk-HPLMX62I.js} +2 -2
- package/dist/cli/chunks/{chunk-WO4NSPLX.js → chunk-IHFUEPZH.js} +2 -2
- package/dist/cli/chunks/{chunk-ADF6LGHZ.js → chunk-IJ2EXSMO.js} +2 -2
- package/dist/cli/chunks/{chunk-GLKLEHK3.js → chunk-IJOFZBXD.js} +2 -2
- package/dist/cli/chunks/{chunk-IKWAPHJA.js → chunk-JANLATHN.js} +2 -2
- package/dist/cli/chunks/{chunk-J3RNVHDH.js → chunk-JCC7QEKZ.js} +1 -1
- package/dist/cli/chunks/{chunk-C5EN5WB6.js → chunk-JI77KJP7.js} +1 -1
- package/dist/cli/chunks/{chunk-B7GJXQD2.js → chunk-JNMUVBAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZP6ANUP7.js → chunk-JYY7AYGA.js} +1 -1
- package/dist/cli/chunks/{chunk-6HTO4BLV.js → chunk-KHCALIFP.js} +2 -2
- package/dist/cli/chunks/{chunk-BND6M2JX.js → chunk-KJ3KBP24.js} +2 -2
- package/dist/cli/chunks/{chunk-O7TMY4GS.js → chunk-KZVJW2SD.js} +2 -2
- package/dist/cli/chunks/chunk-L336HFFE.js +2 -0
- package/dist/cli/chunks/{chunk-W3PPYNHF.js → chunk-L375O3CZ.js} +2 -2
- package/dist/cli/chunks/{chunk-PJAXWCFC.js → chunk-L6SVCNXK.js} +1 -1
- package/dist/cli/chunks/{chunk-VAXQUD5G.js → chunk-LNO5IWGH.js} +1 -1
- package/dist/cli/chunks/{chunk-CFXFGQEN.js → chunk-LRASYSGV.js} +2 -2
- package/dist/cli/chunks/{chunk-MVTUFPM2.js → chunk-MB4VFAJC.js} +2 -2
- package/dist/cli/chunks/{chunk-SCL2OYN7.js → chunk-MNQ36MAF.js} +2 -2
- package/dist/cli/chunks/{chunk-W6TJXK5Y.js → chunk-MQGEZA2A.js} +2 -2
- package/dist/cli/chunks/{chunk-73PCVMGA.js → chunk-MS3Z2CP5.js} +2 -2
- package/dist/cli/chunks/{chunk-WI5AEB7Q.js → chunk-N2TJNIHA.js} +2 -2
- package/dist/cli/chunks/{chunk-DEJM2P5K.js → chunk-NF6AFIAX.js} +1 -1
- package/dist/cli/chunks/{chunk-JL3TI43V.js → chunk-NLDFNAOS.js} +2 -2
- package/dist/cli/chunks/{chunk-UK5HY6LC.js → chunk-NMJVG22Z.js} +1 -1
- package/dist/cli/chunks/{chunk-WW6WUMS7.js → chunk-OGYWWZU7.js} +2 -2
- package/dist/cli/chunks/{chunk-3C2BFLYC.js → chunk-ONCH5AXU.js} +3 -3
- package/dist/cli/chunks/{chunk-OG4KHX7S.js → chunk-OQDC7GCM.js} +2 -2
- package/dist/cli/chunks/{chunk-3ZIVBTX6.js → chunk-ORTBRO7F.js} +2 -2
- package/dist/cli/chunks/{chunk-NIJMLEAX.js → chunk-OU4ZAWCC.js} +2 -2
- package/dist/cli/chunks/{chunk-FDK2GF4G.js → chunk-OW42F2TX.js} +2 -2
- package/dist/cli/chunks/{chunk-TB22Y3WW.js → chunk-PCCIZFD7.js} +1 -1
- package/dist/cli/chunks/{chunk-BZWZTGMF.js → chunk-PDPEMBFV.js} +2 -2
- package/dist/cli/chunks/{chunk-D7RVZ5C2.js → chunk-PHAQWAEV.js} +2 -2
- package/dist/cli/chunks/{chunk-P7GM3EE7.js → chunk-PHP4UJYP.js} +1 -1
- package/dist/cli/chunks/{chunk-6QPW4OVH.js → chunk-PURHGLEC.js} +1 -1
- package/dist/cli/chunks/{chunk-BPGFCUDO.js → chunk-PVAE65B4.js} +1 -1
- package/dist/cli/chunks/{chunk-7X2IVMXN.js → chunk-QPV3OKX2.js} +2 -2
- package/dist/cli/chunks/{chunk-DAYMT7TH.js → chunk-QXY3IRBW.js} +3 -3
- package/dist/cli/chunks/{chunk-QIAX3JJB.js → chunk-RCXMUEZN.js} +2 -2
- package/dist/cli/chunks/{chunk-RB2SL5GD.js → chunk-RMJ7PJOS.js} +2 -2
- package/dist/cli/chunks/{chunk-FRBCX46J.js → chunk-RUJLVJDE.js} +2 -2
- package/dist/cli/chunks/{chunk-S5D3HCGN.js → chunk-RUSLEOMC.js} +2 -2
- package/dist/cli/chunks/chunk-SAPIRK2G.js +3 -0
- package/dist/cli/chunks/{chunk-A4OPQJ4A.js → chunk-SDWMLT7B.js} +5 -5
- package/dist/cli/chunks/{chunk-RJMBHZYL.js → chunk-SEZLYRCS.js} +1 -1
- package/dist/cli/chunks/{chunk-AHVN3UQZ.js → chunk-TDLKXLJC.js} +2 -2
- package/dist/cli/chunks/{chunk-EWUFVWRT.js → chunk-U4TV75AC.js} +2 -2
- package/dist/cli/chunks/{chunk-X5S5UEM6.js → chunk-U6OVPMQX.js} +2 -2
- package/dist/cli/chunks/{chunk-5B5D5KCV.js → chunk-UE22ODHN.js} +1 -1
- package/dist/cli/chunks/{chunk-I6E4X3L3.js → chunk-UXZEVIFX.js} +1 -1
- package/dist/cli/chunks/{chunk-DF4Y3HPO.js → chunk-V7GNUVYI.js} +1 -1
- package/dist/cli/chunks/{chunk-OOK6GPJR.js → chunk-VCKDVOPD.js} +2 -2
- package/dist/cli/chunks/{chunk-G3ZUB3HD.js → chunk-VH3EB6ZG.js} +2 -2
- package/dist/cli/chunks/{chunk-PB2WSCBW.js → chunk-VLOIEVER.js} +3 -3
- package/dist/cli/chunks/{chunk-7INP6HZH.js → chunk-VML4SG3X.js} +3 -3
- package/dist/cli/chunks/{chunk-K2VUYRMG.js → chunk-VRJPH3LG.js} +2 -2
- package/dist/cli/chunks/{chunk-RI4JPBZD.js → chunk-VYDNLQJN.js} +2 -2
- package/dist/cli/chunks/{chunk-35A22AUL.js → chunk-W3ZGNNDV.js} +1 -1
- package/dist/cli/chunks/{chunk-R47LNH5W.js → chunk-WC47GICZ.js} +2 -2
- package/dist/cli/chunks/{chunk-Z56QTRRB.js → chunk-WLIYWBQR.js} +2 -2
- package/dist/cli/chunks/{chunk-ZURYZEHX.js → chunk-WN55MNZ2.js} +2 -2
- package/dist/cli/chunks/chunk-WOZIXXY5.js +7 -0
- package/dist/cli/chunks/{chunk-NBMQOP2R.js → chunk-WR64BKUE.js} +1 -1
- package/dist/cli/chunks/{chunk-T3BMCEQR.js → chunk-WT3JC4A6.js} +2 -2
- package/dist/cli/chunks/{chunk-WYO5VN2L.js → chunk-X52TMBHU.js} +1 -1
- package/dist/cli/chunks/{chunk-6EHVPFHW.js → chunk-XIE7OHML.js} +1 -1
- package/dist/cli/chunks/{chunk-LOLAEDZD.js → chunk-XNEEYXR2.js} +2 -2
- package/dist/cli/chunks/{chunk-EY5IUF7U.js → chunk-XNHB6TLC.js} +2 -2
- package/dist/cli/chunks/{chunk-GJVRQBLI.js → chunk-XQRE2HWM.js} +2 -2
- package/dist/cli/chunks/{chunk-33IUCP34.js → chunk-Y2E3IJ53.js} +2 -2
- package/dist/cli/chunks/{chunk-6HO3XRXE.js → chunk-Y2WMPEUP.js} +2 -2
- package/dist/cli/chunks/{chunk-LGA6J4I4.js → chunk-Y7GPLOXB.js} +2 -2
- package/dist/cli/chunks/{chunk-76PRW2KY.js → chunk-YINFES3E.js} +2 -2
- package/dist/cli/chunks/{chunk-LJRZAALA.js → chunk-ZLBBX24Q.js} +133 -133
- package/dist/cli/chunks/{chunk-ASKPTGUU.js → chunk-ZT3GUYM5.js} +2 -2
- package/dist/cli/chunks/{chunk-XHCCH7UC.js → chunk-ZTC5FBL6.js} +3 -3
- package/dist/cli/chunks/ci-KP4GZKJ7.js +81 -0
- package/dist/cli/chunks/ci-config-XDDZOOEI.js +2 -0
- package/dist/cli/chunks/{ci-output-BMJABAEX.js → ci-output-7ZUQI4U6.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-GYD5CMJQ.js → circuit-breaker-ALXKCFAL.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-MMOYVBVD.js → claude-flow-setup-RL7K2NI2.js} +2 -2
- package/dist/cli/chunks/client-C3KHVRM6.js +2 -0
- package/dist/cli/chunks/{cline-installer-B2SOZ44R.js → cline-installer-2Z2QQKC3.js} +2 -2
- package/dist/cli/chunks/{code-V3FIRAXD.js → code-QSZTDINQ.js} +4 -4
- package/dist/cli/chunks/{code-index-extractor-CV6A756Z.js → code-index-extractor-5CGR5D3Y.js} +2 -2
- package/dist/cli/chunks/{codex-installer-EUC6J47Y.js → codex-installer-7JLSEDE5.js} +2 -2
- package/dist/cli/chunks/{completions-DQQIBAHR.js → completions-U4NBSXEB.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-HPXMXP5I.js → complexity-analyzer-WYZD2YSY.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-RCIYXH6V.js → continuedev-installer-UPXINJFT.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-VUH32SHF.js → copilot-installer-WIVYQRIF.js} +2 -2
- package/dist/cli/chunks/core-handlers-KSQM6Q6S.js +2 -0
- package/dist/cli/chunks/{cost-tracker-YLCKLOAL.js → cost-tracker-RIN4JDDM.js} +2 -2
- package/dist/cli/chunks/coverage-SPFVHRRU.js +43 -0
- package/dist/cli/chunks/coverage-target-GSRBNHXE.js +2 -0
- package/dist/cli/chunks/cross-domain-router-CTGNOVCF.js +2 -0
- package/dist/cli/chunks/{cursor-installer-B42FN62K.js → cursor-installer-POM7NGCC.js} +2 -2
- package/dist/cli/chunks/{daemon-DECQRQII.js → daemon-HFGKQ6LB.js} +3 -3
- package/dist/cli/chunks/{daemon-IPTOSCHM.js → daemon-M5TD5Y6T.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-RY7CDYSC.js → dag-attention-scheduler-HJXM7Q5P.js} +2 -2
- package/dist/cli/chunks/{detect-NW53BMJN.js → detect-XKQGLZYN.js} +2 -2
- package/dist/cli/chunks/{dist-node-LE6KHXAB.js → dist-node-SSKB53QL.js} +2 -2
- package/dist/cli/chunks/{domain-handler-JGXFT4LW.js → domain-handler-6BNDHATU.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-GY3RYKKK.js → domain-plugins-DOX54YE3.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-CGBRXNTC.js → domain-transfer-FW4ZX3Z7.js} +2 -2
- package/dist/cli/chunks/dream-MIK2E4UL.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-65H4XHWR.js → embed-and-insert-pattern-QST77T2B.js} +2 -2
- package/dist/cli/chunks/{eval-YPYIZQUR.js → eval-K7E4XXBS.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-4JXVF5PL.js → experience-capture-middleware-X66IYSRV.js} +3 -3
- package/dist/cli/chunks/{fast-paths-HYQTAF2S.js → fast-paths-5JXXTYAG.js} +2 -2
- package/dist/cli/chunks/{feature-flags-HNSAFFX2.js → feature-flags-2CR3CO23.js} +2 -2
- package/dist/cli/chunks/{feature-flags-YACUH6OW.js → feature-flags-RB72LHOJ.js} +2 -2
- package/dist/cli/chunks/{file-discovery-R73BYEXB.js → file-discovery-3NHRUQQB.js} +2 -2
- package/dist/cli/chunks/{fleet-6M3BP4OO.js → fleet-SDU7QEOA.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-QLD7KHXV.js → gnn-wrapper-AWCFODUV.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-EZP333X4.js → heartbeat-handler-A4PJ3NFP.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-OCKRACUW.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-X67XG73C.js +2 -0
- package/dist/cli/chunks/hnsw-index-I7KCQBQR.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-47CUCSAU.js → hnsw-legacy-bridge-KRS7SSFM.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-SVNYDJZH.js → hnswlib-node-OGGCPKPO.js} +2 -2
- package/dist/cli/chunks/{hooks-6V5LMWP6.js → hooks-XNRNMUBW.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-FOUHTKAK.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-L2FOBIFF.js → hypergraph-engine-X35LTXYT.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DU6Z57EE.js → hypergraph-handler-M6THKAG6.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-GXYVX46O.js +2 -0
- package/dist/cli/chunks/{init-handler-HETPWU67.js → init-handler-2AXMXHYF.js} +6 -6
- package/dist/cli/chunks/init-wizard-C2MRX2QG.js +2 -0
- package/dist/cli/chunks/kernel-Q2IUDIDC.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-NHKYGJ7Q.js → kilocode-installer-TEPR2ZJD.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-24UK6GGR.js → kiro-installer-RUKHGDEE.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-E2Z6K5EE.js +2 -0
- package/dist/cli/chunks/{learning-QLVRZNHT.js → learning-BEA26RNA.js} +3 -3
- package/dist/cli/chunks/{llm-router-XRMI2VMG.js → llm-router-7GECMDCP.js} +4 -4
- package/dist/cli/chunks/llm-router-service-YATYFEDD.js +2 -0
- package/dist/cli/chunks/{load-W5UWL5C7.js → load-NTJ4Y4ZR.js} +2 -2
- package/dist/cli/chunks/load-test-LV77JXWA.js +2 -0
- package/dist/cli/chunks/{mcp-N7ALQ4BL.js → mcp-4335GTTG.js} +2 -2
- package/dist/cli/chunks/{memory-WV52DLSA.js → memory-HYC4M4XS.js} +5 -5
- package/dist/cli/chunks/memory-backend-XME3X3QX.js +2 -0
- package/dist/cli/chunks/memory-handlers-VG47X5DX.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-3FVTZCSO.js → multi-model-executor-T7FYKM6T.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-NTPWGHUW.js → opencode-installer-3USXVT5M.js} +2 -2
- package/dist/cli/chunks/{orchestrator-ORGJ6VAA.js → orchestrator-VHUXUYIM.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-TAXMLENP.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-WWXHUH5U.js → pattern-usage-recorder-CMZLPX2K.js} +2 -2
- package/dist/cli/chunks/{pipeline-ZOKZFXTH.js → pipeline-BTRZOVSL.js} +2 -2
- package/dist/cli/chunks/{platform-CDNL322F.js → platform-2MCRKC25.js} +2 -2
- package/dist/cli/chunks/{plugin-ZVLFNZZ4.js → plugin-2VAYWAO3.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-FVJDU2JY.js → prime-radiant-advanced-wasm-TXFEMBP6.js} +2 -2
- package/dist/cli/chunks/{project-root-UCHQH3QL.js → project-root-CFFPBGPX.js} +2 -2
- package/dist/cli/chunks/protocol-executor-ML76QAVQ.js +2 -0
- package/dist/cli/chunks/{protocol-handler-4YBN5R23.js → protocol-handler-DZ26OYVZ.js} +2 -2
- package/dist/cli/chunks/{prove-BHDHY664.js → prove-QWONEJWX.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-LUZH6RYV.js +2 -0
- package/dist/cli/chunks/quality-WFH54FY7.js +8 -0
- package/dist/cli/chunks/{quality-gate-WANE7TCN.js → quality-gate-ONJB7XU7.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-EWXNIXB6.js +2 -0
- package/dist/cli/chunks/{real-embeddings-56MNGJGJ.js → real-embeddings-GZV4VKK4.js} +2 -2
- package/dist/cli/chunks/{ref-validation-S7UWXQIP.js → ref-validation-HW5Y55ZC.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-TEYOQYL6.js → roocode-installer-5OABDNZT.js} +2 -2
- package/dist/cli/chunks/router-MXOBVEBF.js +2 -0
- package/dist/cli/chunks/routing-feedback-T6CCRUEK.js +2 -0
- package/dist/cli/chunks/{routing-handler-KDTLMRWD.js → routing-handler-CVHVOQTC.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-AOUDXCYE.js → ruvector-commands-KKDKFGIQ.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-WHXVT3V3.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-JFPWIRCG.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-V74MVBHS.js → rvf-migration-coordinator-D4KUBNRZ.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-KOXR7TJL.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-QI47Y354.js → rvf-store-integrity-UGUXKIFX.js} +2 -2
- package/dist/cli/chunks/safe-db-CI6IPSIN.js +2 -0
- package/dist/cli/chunks/schedule-X4HW6TVJ.js +2 -0
- package/dist/cli/chunks/scheduler-KCNJ2ON3.js +2 -0
- package/dist/cli/chunks/{security-SN6MWOJT.js → security-7723AZZ4.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-2LB56LP4.js → shared-rvf-adapter-KEQ5CLNI.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-WU7PFKQM.js → shared-rvf-dual-writer-ZSHYG5IA.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-PGHU6VUR.js +2 -0
- package/dist/cli/chunks/{standalone-memory-F6FSRFWC.js → standalone-memory-MHZEEYMK.js} +2 -2
- package/dist/cli/chunks/{status-handler-DHD5MS4G.js → status-handler-JKXPJ22K.js} +2 -2
- package/dist/cli/chunks/{structural-health-P6HPSQMR.js → structural-health-J4RKCYWF.js} +2 -2
- package/dist/cli/chunks/{sync-SNAXAVCN.js → sync-EFWXMA2H.js} +2 -2
- package/dist/cli/chunks/{sync-LISJGDSE.js → sync-PDPORHVN.js} +2 -2
- package/dist/cli/chunks/{task-handler-ZT44NT5Z.js → task-handler-VERADM44.js} +2 -2
- package/dist/cli/chunks/{task-handlers-R6DQ5324.js → task-handlers-4RUCWUR2.js} +3 -3
- package/dist/cli/chunks/{test-MUFHR4JQ.js → test-DMBJFQNL.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-TAUSLZJP.js → test-scheduling-LUPTVGCD.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-UGRH7OPU.js → token-bootstrap-S346YBVO.js} +2 -2
- package/dist/cli/chunks/{token-usage-IX65ECBR.js → token-usage-VOA34IKM.js} +2 -2
- package/dist/cli/chunks/{transformers-QKPSVW2W.js → transformers-GU4TYAN5.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-Z7PPA2JO.js → tree-sitter-wasm-parser-MZPXAH7C.js} +2 -2
- package/dist/cli/chunks/{types-ULNNGGGH.js → types-K4FLXR2K.js} +2 -2
- package/dist/cli/chunks/unified-memory-6CK3TUNQ.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-A7BWBGYN.js +2 -0
- package/dist/cli/chunks/unified-persistence-GEPMDBQZ.js +2 -0
- package/dist/cli/chunks/{upgrade-ECI3YUYA.js → upgrade-M3ATDRMK.js} +2 -2
- package/dist/cli/chunks/{validate-3JKRUW2S.js → validate-AAP773B3.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-LZWANCIE.js → validate-swarm-7RGAZX5F.js} +2 -2
- package/dist/cli/chunks/visual-security-L4J7LQWT.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-N5V4A6XG.js → web-tree-sitter-GQMRHGGI.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-5TBM5B3C.js → windsurf-installer-HG6HF2GF.js} +2 -2
- package/dist/cli/chunks/witness-chain-CDUMX623.js +2 -0
- package/dist/cli/chunks/{witness-chain-MFP3HBWQ.js → witness-chain-WKU3ZIBQ.js} +2 -2
- package/dist/cli/chunks/{witness-chain-repair-5QWRFVUK.js → witness-chain-repair-WNYH6O4L.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-SRAT7LVY.js → witness-chain-verifier-Q2KW3QEQ.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-FYZXQTLJ.js → witness-key-manager-NQ5DAAC4.js} +2 -2
- package/dist/cli/chunks/{workflow-M7TUYYXY.js → workflow-CX6SHFBW.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-USJDWVDR.js +2 -0
- package/dist/cli/chunks/{wrappers-COU73OQ6.js → wrappers-CZDI6Z3X.js} +2 -2
- package/dist/cli/commands/ci.js +14 -6
- package/dist/cli/commands/code.js +1 -0
- package/dist/cli/commands/coverage.d.ts +28 -0
- package/dist/cli/commands/coverage.js +258 -143
- package/dist/cli/commands/quality.d.ts +12 -1
- package/dist/cli/commands/quality.js +51 -3
- package/dist/cli/utils/ci-output.d.ts +14 -4
- package/dist/cli/utils/ci-output.js +21 -4
- package/dist/cli/utils/coverage-data.d.ts +7 -0
- package/dist/cli/utils/coverage-data.js +21 -27
- package/dist/contracts/verdicts.d.ts +14 -0
- package/dist/contracts/verdicts.js +44 -3
- package/dist/coordination/handlers/coverage-handlers.js +121 -120
- package/dist/coordination/handlers/coverage-runner.d.ts +121 -0
- package/dist/coordination/handlers/coverage-runner.js +367 -0
- package/dist/coordination/handlers/coverage-target.d.ts +144 -0
- package/dist/coordination/handlers/coverage-target.js +311 -0
- package/dist/coordination/handlers/handler-utils.d.ts +9 -0
- package/dist/coordination/handlers/handler-utils.js +44 -1
- package/dist/coordination/handlers/quality-handlers.js +101 -15
- package/dist/coordination/result-saver.js +17 -3
- package/dist/coordination/task-executor.d.ts +5 -0
- package/dist/coordination/task-executor.js +7 -0
- package/dist/domains/code-intelligence/coordinator.d.ts +2 -1
- package/dist/domains/code-intelligence/coordinator.js +10 -32
- package/dist/domains/code-intelligence/interfaces.d.ts +5 -0
- package/dist/domains/code-intelligence/plugin.js +1 -0
- package/dist/domains/code-intelligence/project-root-resolver.d.ts +50 -0
- package/dist/domains/code-intelligence/project-root-resolver.js +121 -0
- package/dist/domains/coverage-analysis/coordinator.js +4 -1
- package/dist/domains/coverage-analysis/interfaces.d.ts +15 -0
- package/dist/domains/coverage-analysis/plugin.js +7 -1
- package/dist/domains/coverage-analysis/services/coverage-analyzer.d.ts +7 -0
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +29 -9
- package/dist/domains/quality-assessment/coordinator-claim-verifier.js +2 -1
- package/dist/domains/quality-assessment/coordinator.js +8 -8
- package/dist/domains/quality-assessment/coverage-report-event.d.ts +25 -0
- package/dist/domains/quality-assessment/coverage-report-event.js +36 -0
- package/dist/domains/quality-assessment/evidence-sufficiency.d.ts +57 -0
- package/dist/domains/quality-assessment/evidence-sufficiency.js +97 -0
- package/dist/domains/quality-assessment/index.d.ts +1 -1
- package/dist/domains/quality-assessment/index.js +1 -1
- package/dist/domains/quality-assessment/plugin.js +8 -8
- package/dist/domains/quality-assessment/quality-evidence.d.ts +50 -2
- package/dist/domains/quality-assessment/quality-evidence.js +90 -8
- package/dist/domains/quality-assessment/services/quality-analyzer.js +13 -9
- package/dist/mcp/bundle.js +456 -451
- package/dist/mcp/handlers/domain-handler-configs.d.ts +18 -1
- package/dist/mcp/handlers/domain-handler-configs.js +42 -4
- package/dist/mcp/handlers/handler-factory.js +3 -0
- package/dist/mcp/handlers/wrapped-domain-handlers.js +7 -1
- package/dist/mcp/protocol-server.js +3 -2
- package/dist/mcp/tools/coverage-analysis/index.js +1 -0
- package/dist/mcp/types.d.ts +6 -0
- package/dist/shared/events/domain-events.d.ts +2 -0
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-T54G3TBK.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-HLCJJ3JM.js +0 -2
- package/dist/cli/chunks/base-VLD755UU.js +0 -2
- package/dist/cli/chunks/browser-workflow-6M6VLWRF.js +0 -2
- package/dist/cli/chunks/chunk-5XXLWJU7.js +0 -2
- package/dist/cli/chunks/chunk-HEDLZWPM.js +0 -96
- package/dist/cli/chunks/chunk-XKIFNKHV.js +0 -2
- package/dist/cli/chunks/chunk-ZF5JTQEE.js +0 -4
- package/dist/cli/chunks/ci-NGMGB43T.js +0 -82
- package/dist/cli/chunks/client-FUHNNK5O.js +0 -2
- package/dist/cli/chunks/core-handlers-F7TLX4LM.js +0 -2
- package/dist/cli/chunks/coverage-IVKDV236.js +0 -27
- package/dist/cli/chunks/cross-domain-router-EGWPY67O.js +0 -2
- package/dist/cli/chunks/dream-V4QN6OF5.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-3N3L6CRM.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-2BXJYDXI.js +0 -2
- package/dist/cli/chunks/hnsw-index-2DLI5OVO.js +0 -2
- package/dist/cli/chunks/hybrid-backend-OW4J65YH.js +0 -2
- package/dist/cli/chunks/impact-analyzer-ZH5I2RG6.js +0 -2
- package/dist/cli/chunks/init-wizard-NIKM3ZOK.js +0 -2
- package/dist/cli/chunks/kernel-2EOSVM6X.js +0 -2
- package/dist/cli/chunks/knowledge-graph-D3BPWNNO.js +0 -2
- package/dist/cli/chunks/llm-router-service-TJPPZFUN.js +0 -2
- package/dist/cli/chunks/load-test-RFT7IDOL.js +0 -2
- package/dist/cli/chunks/memory-backend-O2O4CFKZ.js +0 -2
- package/dist/cli/chunks/memory-handlers-DAEGUDBD.js +0 -2
- package/dist/cli/chunks/pattern-null-store-TUBNXS34.js +0 -2
- package/dist/cli/chunks/protocol-executor-6FQTTO3Y.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-TKPND56C.js +0 -2
- package/dist/cli/chunks/quality-46AK277P.js +0 -7
- package/dist/cli/chunks/queen-coordinator-DWMXLPJG.js +0 -2
- package/dist/cli/chunks/router-QIMUYRCC.js +0 -2
- package/dist/cli/chunks/routing-feedback-4OH5ZNF4.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-S6JBZL54.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-TSGMLMYR.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-Z7QOW47S.js +0 -2
- package/dist/cli/chunks/safe-db-JLOVBJNC.js +0 -2
- package/dist/cli/chunks/schedule-IM6XOBGR.js +0 -2
- package/dist/cli/chunks/scheduler-XL2SVVK5.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-LWMIIC4U.js +0 -2
- package/dist/cli/chunks/unified-memory-F5IJY7W7.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-C3WAMAQL.js +0 -2
- package/dist/cli/chunks/unified-persistence-EWXXOTCB.js +0 -2
- package/dist/cli/chunks/visual-security-CKLTAIAB.js +0 -2
- package/dist/cli/chunks/witness-chain-Z6LWFEZS.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-OFTAR2NA.js +0 -2
|
@@ -11,7 +11,8 @@ import { TestGenerateParams, TestGenerateResult, TestExecuteParams, CoverageAnal
|
|
|
11
11
|
import type { SecurityScanEvidence } from '../../domains/security-compliance/scan-evidence.js';
|
|
12
12
|
import type { SecurityCoverage } from '../../domains/security-compliance/interfaces.js';
|
|
13
13
|
import { type RiskDecision } from '../../contracts/verdicts.js';
|
|
14
|
-
import type
|
|
14
|
+
import { type EvaluatedQualityCheck } from '../../domains/quality-assessment/quality-evidence.js';
|
|
15
|
+
import { type MeasuredFailure } from '../../domains/quality-assessment/evidence-sufficiency.js';
|
|
15
16
|
export interface TestExecuteResult {
|
|
16
17
|
taskId: string;
|
|
17
18
|
status: string;
|
|
@@ -49,6 +50,22 @@ export interface QualityAssessResult {
|
|
|
49
50
|
resultsNote?: string;
|
|
50
51
|
/** ADR-103: versioned, schema-validated gate verdict (additive) */
|
|
51
52
|
riskDecision?: RiskDecision;
|
|
53
|
+
/**
|
|
54
|
+
* #996 (additive): 'measured' when every requested metric had data;
|
|
55
|
+
* 'insufficient-evidence' when any did not — `passed` is then false and
|
|
56
|
+
* `status` is 'insufficient-evidence'.
|
|
57
|
+
*/
|
|
58
|
+
evidenceStatus?: 'measured' | 'insufficient-evidence';
|
|
59
|
+
/** #996: requested metrics with no measured data (reported as -1 in `metrics`). */
|
|
60
|
+
unmeasured?: string[];
|
|
61
|
+
/** #996: measured metrics that fail their own limit; any entry blocks. */
|
|
62
|
+
measuredFailures?: MeasuredFailure[];
|
|
63
|
+
/** #996: false for static analysis (runGate omitted/false) — no quality gate ran. */
|
|
64
|
+
gateEvaluated?: boolean;
|
|
65
|
+
/** #996: share of requested metrics that were measured, in [0, 1]. */
|
|
66
|
+
confidence?: number;
|
|
67
|
+
/** #996: plain statement of what was (and was not) evaluated. */
|
|
68
|
+
note?: string;
|
|
52
69
|
}
|
|
53
70
|
export interface SecurityScanResult {
|
|
54
71
|
taskId: string;
|
|
@@ -11,6 +11,8 @@ import { describeSavedResults } from './save-results-option.js';
|
|
|
11
11
|
import { MetricsCollector } from '../metrics/index.js';
|
|
12
12
|
import { DEFAULT_FRAMEWORKS, FRAMEWORK_TO_LANGUAGE, } from '../../shared/types/test-frameworks.js';
|
|
13
13
|
import { buildRiskDecisionFromQualityGate, validateRiskDecision, } from '../../contracts/verdicts.js';
|
|
14
|
+
import { INSUFFICIENT_EVIDENCE, } from '../../domains/quality-assessment/quality-evidence.js';
|
|
15
|
+
import { validateRequestedMetrics, } from '../../domains/quality-assessment/evidence-sufficiency.js';
|
|
14
16
|
import { validateBehaviorExamples } from '../../domains/test-generation/services/behavior-example-validation.js';
|
|
15
17
|
const SUPPORTED_LANGUAGES = Object.keys(DEFAULT_FRAMEWORKS);
|
|
16
18
|
/**
|
|
@@ -403,6 +405,8 @@ export const coverageAnalyzeConfig = {
|
|
|
403
405
|
coverageMethod: data.coverageMethod ?? 'unknown',
|
|
404
406
|
branchDataCollected,
|
|
405
407
|
functionDataCollected,
|
|
408
|
+
// #995: the target has no measurement at all — distinct from a measured 0%.
|
|
409
|
+
...(data.unmeasured === true ? { unmeasured: true } : {}),
|
|
406
410
|
...(data.warning ? { warning: data.warning } : {}),
|
|
407
411
|
};
|
|
408
412
|
},
|
|
@@ -420,32 +424,66 @@ export const qualityAssessConfig = {
|
|
|
420
424
|
if (params.runGate !== undefined && typeof params.runGate !== 'boolean') {
|
|
421
425
|
throw new Error('runGate must be a boolean.');
|
|
422
426
|
}
|
|
427
|
+
// #996 (N3): a string or unknown name is a caller error, not a metric list.
|
|
428
|
+
const metrics = params.metrics === undefined
|
|
429
|
+
? ['coverage', 'complexity', 'maintainability']
|
|
430
|
+
: validateRequestedMetrics(params.metrics);
|
|
423
431
|
return {
|
|
424
432
|
runGate: params.runGate ?? false,
|
|
425
433
|
threshold: params.threshold || 80,
|
|
426
|
-
|
|
434
|
+
// #996: only a caller-supplied threshold overrides the configured/default
|
|
435
|
+
// per-metric limits; the 80 fallback above must not.
|
|
436
|
+
thresholdSource: params.threshold === undefined ? 'default' : 'request',
|
|
437
|
+
metrics,
|
|
427
438
|
routingTier: routingResult?.decision.tier,
|
|
428
439
|
useAgentBooster: routingResult?.useAgentBooster,
|
|
429
440
|
compiledContext: routingResult?.compiledContext,
|
|
430
441
|
};
|
|
431
442
|
},
|
|
432
443
|
mapToResult: (taskId, data, duration, savedFiles) => {
|
|
444
|
+
// #996: never approve on missing data. Any unmeasured requested metric
|
|
445
|
+
// forces passed=false and an explicit insufficient-evidence status.
|
|
446
|
+
const unmeasured = Array.isArray(data.unmeasured)
|
|
447
|
+
? data.unmeasured.filter((m) => typeof m === 'string')
|
|
448
|
+
: undefined;
|
|
449
|
+
const insufficient = (unmeasured?.length ?? 0) > 0 || data.evidenceStatus === INSUFFICIENT_EVIDENCE;
|
|
450
|
+
const gateEvaluated = typeof data.gateEvaluated === 'boolean' ? data.gateEvaluated : undefined;
|
|
451
|
+
const confidence = typeof data.confidence === 'number' ? data.confidence : undefined;
|
|
452
|
+
const measuredFailures = Array.isArray(data.measuredFailures)
|
|
453
|
+
? data.measuredFailures
|
|
454
|
+
: undefined;
|
|
455
|
+
const failedMetrics = (measuredFailures ?? []).map((f) => f.metric);
|
|
456
|
+
const passed = !insufficient && failedMetrics.length === 0 && data.passed === true;
|
|
433
457
|
// ADR-103: attach a schema-validated RiskDecision envelope at the MCP
|
|
434
458
|
// boundary (additive — existing fields unchanged). Omit rather than
|
|
435
459
|
// emit an invalid envelope.
|
|
436
460
|
const riskDecision = buildRiskDecisionFromQualityGate({
|
|
437
|
-
passed:
|
|
461
|
+
passed: insufficient || failedMetrics.length > 0
|
|
462
|
+
? false
|
|
463
|
+
: typeof data.passed === 'boolean' ? data.passed : undefined,
|
|
438
464
|
qualityScore: data.qualityScore,
|
|
439
465
|
recommendations: data.recommendations || [],
|
|
466
|
+
unmeasured: insufficient ? (unmeasured?.length ? unmeasured : ['unknown']) : [],
|
|
467
|
+
failedMetrics,
|
|
468
|
+
evidenceConfidence: confidence,
|
|
469
|
+
gateEvaluated,
|
|
440
470
|
});
|
|
441
471
|
return {
|
|
442
472
|
taskId,
|
|
443
|
-
status: 'completed',
|
|
473
|
+
status: insufficient ? INSUFFICIENT_EVIDENCE : 'completed',
|
|
444
474
|
...(typeof data.qualityScore === 'number' ? { qualityScore: data.qualityScore } : {}),
|
|
445
475
|
...(Array.isArray(data.checks) ? { checks: data.checks } : {}),
|
|
446
|
-
passed
|
|
476
|
+
passed,
|
|
447
477
|
metrics: data.metrics || {},
|
|
448
478
|
recommendations: data.recommendations || [],
|
|
479
|
+
...(data.evidenceStatus === 'measured' || insufficient
|
|
480
|
+
? { evidenceStatus: insufficient ? INSUFFICIENT_EVIDENCE : 'measured' }
|
|
481
|
+
: {}),
|
|
482
|
+
...(unmeasured ? { unmeasured } : {}),
|
|
483
|
+
...(measuredFailures ? { measuredFailures } : {}),
|
|
484
|
+
...(gateEvaluated !== undefined ? { gateEvaluated } : {}),
|
|
485
|
+
...(confidence !== undefined ? { confidence } : {}),
|
|
486
|
+
...(typeof data.note === 'string' ? { note: data.note } : {}),
|
|
449
487
|
duration,
|
|
450
488
|
savedFiles,
|
|
451
489
|
...(validateRiskDecision(riskDecision).valid ? { riskDecision } : {}),
|
|
@@ -636,6 +636,9 @@ export function createDomainHandler(config) {
|
|
|
636
636
|
return {
|
|
637
637
|
success: false,
|
|
638
638
|
error: result.error || 'Task execution failed',
|
|
639
|
+
// #996: structured failure context (e.g. status + unmeasured metrics),
|
|
640
|
+
// only when the failing handler provided it. success stays false.
|
|
641
|
+
...(result.errorDetails ? { data: result.errorDetails } : {}),
|
|
639
642
|
};
|
|
640
643
|
}
|
|
641
644
|
// Step 5: Map result
|
|
@@ -53,7 +53,13 @@ function createWrappedHandler(handler, domain, agent) {
|
|
|
53
53
|
if (result.success) {
|
|
54
54
|
return { success: true, data: result.data };
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
// #996: keep structured failure context (e.g. insufficient-evidence details)
|
|
57
|
+
// when the domain handler provided it; success stays false.
|
|
58
|
+
return {
|
|
59
|
+
success: false,
|
|
60
|
+
error: result.error || 'Unknown error',
|
|
61
|
+
...(result.data !== undefined ? { data: result.data } : {}),
|
|
62
|
+
};
|
|
57
63
|
};
|
|
58
64
|
}
|
|
59
65
|
// ============================================================================
|
|
@@ -899,11 +899,12 @@ export class MCPProtocolServer {
|
|
|
899
899
|
this.registerTool({
|
|
900
900
|
definition: {
|
|
901
901
|
name: 'quality_assess',
|
|
902
|
-
description: `Assess code quality metrics and optionally run a pass/fail quality gate. ${SAVE_RESULTS_HINT} Example: quality_assess({ runGate: true })`,
|
|
902
|
+
description: `Assess code quality metrics and optionally run a pass/fail quality gate. Unmeasured metrics never pass. ${SAVE_RESULTS_HINT} Example: quality_assess({ runGate: true })`,
|
|
903
903
|
category: 'domain',
|
|
904
904
|
isConcurrencySafe: true,
|
|
905
905
|
parameters: [
|
|
906
|
-
{ name: 'runGate', type: 'boolean', description: 'Evaluate all seven canonical measured quality checks; requires complete, valid evidence from the last 24 hours. Returns individual checks, not a static aggregate score.', default: false },
|
|
906
|
+
{ name: 'runGate', type: 'boolean', description: 'Evaluate all seven canonical measured quality checks; requires complete, valid evidence from the last 24 hours. Returns individual checks, not a static aggregate score. Missing, stale or malformed evidence fails with status "insufficient-evidence" and lists the metrics in unmeasured. When false, only static analysis runs (gateEvaluated: false).', default: false },
|
|
907
|
+
{ name: 'metrics', type: 'array', description: 'Static-analysis metrics to assess (default coverage, complexity, maintainability). Known: coverage, complexity, maintainability, duplication, testability, security. Any requested metric without measured data gives status "insufficient-evidence", passed: false, and lists it in unmeasured; a measured metric failing its threshold blocks.', items: { type: 'string' } },
|
|
907
908
|
saveResultsParameter('quality_assess'),
|
|
908
909
|
],
|
|
909
910
|
},
|
|
@@ -143,6 +143,7 @@ export class CoverageAnalyzeTool extends MCPToolBase {
|
|
|
143
143
|
coverageData: { files: domainFiles, summary: calculateSummary(domainFiles) },
|
|
144
144
|
threshold: thresholds.lines || 80,
|
|
145
145
|
includeFileDetails: true,
|
|
146
|
+
measured: true, // parsed from a real report (no estimation fallback here)
|
|
146
147
|
});
|
|
147
148
|
if (!analyzeResult.success) {
|
|
148
149
|
return {
|
package/dist/mcp/types.d.ts
CHANGED
|
@@ -568,6 +568,12 @@ export interface CoverageAnalyzeResult {
|
|
|
568
568
|
branchDataCollected?: boolean;
|
|
569
569
|
/** Whether function-level data was actually collected. */
|
|
570
570
|
functionDataCollected?: boolean;
|
|
571
|
+
/**
|
|
572
|
+
* #995: true when coverage data exists for the project but none of it covers
|
|
573
|
+
* the requested target (or the run executed no code). The figures are null —
|
|
574
|
+
* this is "no measurement", never 0%.
|
|
575
|
+
*/
|
|
576
|
+
unmeasured?: boolean;
|
|
571
577
|
/** Caveats the caller should surface (e.g. "no instrumentation ran"). */
|
|
572
578
|
warning?: string;
|
|
573
579
|
}
|
|
@@ -58,6 +58,8 @@ export interface CoverageReportPayload {
|
|
|
58
58
|
function: number;
|
|
59
59
|
statement: number;
|
|
60
60
|
files: number;
|
|
61
|
+
/** False for a static estimate; consumers must not store it as coverage (#1008). */
|
|
62
|
+
measured?: boolean;
|
|
61
63
|
}
|
|
62
64
|
export interface CoverageGapPayload {
|
|
63
65
|
gapId: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "3.15.
|
|
3
|
+
"version": "3.15.5",
|
|
4
4
|
"description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-7INP6HZH.js";import"./chunk-BND6M2JX.js";import"./chunk-OHH6BUZK.js";import"./chunk-S5D3HCGN.js";import"./chunk-JL3TI43V.js";import"./chunk-5H7MR6HP.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-TVQPYP2Z.js";import"./chunk-6HO3XRXE.js";import"./chunk-XHCCH7UC.js";import"./chunk-SIUUAKCE.js";import"./chunk-54ITMOFM.js";import"./chunk-PCWZCXBD.js";import"./chunk-YZ2AGC7O.js";import"./chunk-6TMUZGM2.js";import"./chunk-DF4Y3HPO.js";import"./chunk-FDK2GF4G.js";import"./chunk-BZWZTGMF.js";import"./chunk-UK5HY6LC.js";import"./chunk-4GLR2S2M.js";import"./chunk-ISASRHZP.js";import"./chunk-PJAXWCFC.js";import"./chunk-2ICC4H6K.js";import"./chunk-BY5PLEPZ.js";import"./chunk-FRBCX46J.js";import"./chunk-S5D3HCGN.js";import"./chunk-6HTO4BLV.js";import"./chunk-HCDTLV5J.js";import"./chunk-RJ5CZ7B6.js";import"./chunk-W6TJXK5Y.js";import"./chunk-NIJMLEAX.js";import"./chunk-OG4KHX7S.js";import"./chunk-RB2SL5GD.js";import"./chunk-DVE5SM5G.js";import"./chunk-33IUCP34.js";import"./chunk-PEA4DVXW.js";import"./chunk-54XTJBHV.js";import"./chunk-WW6WUMS7.js";import"./chunk-5XXLWJU7.js";import"./chunk-LXYTC62V.js";import"./chunk-Z56QTRRB.js";import"./chunk-JL3TI43V.js";import"./chunk-K2VUYRMG.js";import"./chunk-2DRMTRBM.js";import"./chunk-O7TMY4GS.js";import"./chunk-5B5D5KCV.js";import"./chunk-WI5AEB7Q.js";import"./chunk-WO4NSPLX.js";import"./chunk-X5S5UEM6.js";import"./chunk-5H7MR6HP.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-MBV57LKC.js";import"./chunk-RG67RZIX.js";import"./chunk-W3PPYNHF.js";import"./chunk-BY5PLEPZ.js";import"./chunk-FRBCX46J.js";import"./chunk-S5D3HCGN.js";import"./chunk-6HTO4BLV.js";import"./chunk-HCDTLV5J.js";import"./chunk-RJ5CZ7B6.js";import"./chunk-W6TJXK5Y.js";import"./chunk-NIJMLEAX.js";import"./chunk-OG4KHX7S.js";import"./chunk-RB2SL5GD.js";import"./chunk-33IUCP34.js";import"./chunk-PEA4DVXW.js";import"./chunk-WW6WUMS7.js";import"./chunk-5XXLWJU7.js";import"./chunk-LXYTC62V.js";import"./chunk-Z56QTRRB.js";import"./chunk-JL3TI43V.js";import"./chunk-K2VUYRMG.js";import"./chunk-O7TMY4GS.js";import"./chunk-WO4NSPLX.js";import"./chunk-X5S5UEM6.js";import"./chunk-5H7MR6HP.js";export{l as MCPToolBase,k as defaultToolLogger,j as getKernel,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-GAXTPQCZ.js";import"./chunk-MBV57LKC.js";import"./chunk-RG67RZIX.js";import"./chunk-W3PPYNHF.js";import"./chunk-BY5PLEPZ.js";import"./chunk-FRBCX46J.js";import"./chunk-S5D3HCGN.js";import"./chunk-6HTO4BLV.js";import"./chunk-HCDTLV5J.js";import"./chunk-RJ5CZ7B6.js";import"./chunk-W6TJXK5Y.js";import"./chunk-NIJMLEAX.js";import"./chunk-OG4KHX7S.js";import"./chunk-RB2SL5GD.js";import"./chunk-33IUCP34.js";import"./chunk-PEA4DVXW.js";import"./chunk-WW6WUMS7.js";import"./chunk-5XXLWJU7.js";import"./chunk-LXYTC62V.js";import"./chunk-Z56QTRRB.js";import"./chunk-JL3TI43V.js";import"./chunk-K2VUYRMG.js";import"./chunk-O7TMY4GS.js";import"./chunk-WO4NSPLX.js";import"./chunk-X5S5UEM6.js";import"./chunk-5H7MR6HP.js";export{a as BrowserWorkflowTool};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a as e,c as r,d as g,g as t}from"./chunk-LXYTC62V.js";import{b as o}from"./chunk-5H7MR6HP.js";var L=o(()=>{"use strict";e();g();t();r()});export{L as a};
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{writeFileSync as d,readFileSync as m}from"node:fs";import{resolve as f,dirname as u,join as g}from"node:path";import{mkdirSync as h}from"node:fs";import{fileURLToPath as v}from"node:url";function y(){try{let e=typeof __dirname<"u"?__dirname:u(v(import.meta.url));for(let n=0;n<5;n++){let t=g(e,"package.json");try{let o=JSON.parse(m(t,"utf-8"));if(o.version)return o.version}catch{}e=u(e)}}catch{}return"unknown"}function l(e){return e.status??e.evidence?.completeness??"unverified"}var R=["-F, --format <format>","Output format (text|json|sarif|junit|markdown)","text"],T=["-o, --output <path>","Write output to file instead of stdout"];function w(e,n,t){if(n){let o=f(n);h(u(o),{recursive:!0}),d(o,e,"utf-8"),t&&console.log(t),console.log(`Output written to: ${o}`)}else console.log(e)}function $(e){return JSON.stringify(e,null,2)}var S="https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json";function F(e){let n=l(e),t=s=>{switch(s.toLowerCase()){case"critical":case"high":return"error";case"medium":return"warning";case"low":case"info":return"note";default:return"warning"}},o=new Map,r=[];for(let s of e.vulnerabilities){let a=s.ruleId||`AQE/${s.type.replace(/\s+/g,"-").toLowerCase()}`;o.has(a)||o.set(a,{id:a,name:s.type,shortDescription:s.type,...s.cweId?{helpUri:`https://cwe.mitre.org/data/definitions/${s.cweId.replace("CWE-","")}.html`}:{}}),r.push({ruleId:a,level:t(s.severity),message:{text:s.message},locations:[{physicalLocation:{artifactLocation:{uri:s.file,uriBaseId:"%SRCROOT%"},region:{startLine:s.line,startColumn:1}}}],...s.cweId?{taxa:[{id:s.cweId,toolComponent:{name:"CWE"}}]}:{}})}let i={$schema:S,version:"2.1.0",runs:[{tool:{driver:{name:"agentic-qe",version:y(),informationUri:"https://github.com/proffesor-for-testing/agentic-qe",rules:Array.from(o.values()).map(s=>({id:s.id,name:s.name,shortDescription:{text:s.shortDescription},...s.helpUri?{helpUri:s.helpUri}:{},defaultConfiguration:{level:"warning"}}))}},results:r,properties:{securityScan:{status:n,target:e.target,scanType:e.scanType,coverage:e.evidence?e.coverage:void 0,evidence:e.evidence,discovery:e.discovery,checks:e.checks}},invocations:[{executionSuccessful:n==="complete",...n==="complete"?{}:{toolExecutionNotifications:[{level:"warning",message:{text:`Security analysis ${n}; findings do not establish complete coverage.`}}]}}]}]};return JSON.stringify(i,null,2)}function c(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function A(e){let n=e.tests||[],t=e.passed+e.failed+e.skipped,o=(e.duration/1e3).toFixed(3),r=`<?xml version="1.0" encoding="UTF-8"?>
|
|
3
|
-
`;if(r+=`<testsuites tests="${t}" failures="${e.failed}" errors="0" time="${o}">
|
|
4
|
-
`,r+=` <testsuite name="aqe-test-run" tests="${t}" failures="${e.failed}" errors="0" skipped="${e.skipped}" time="${o}" id="${c(e.runId)}">
|
|
5
|
-
`,n.length>0)for(let i of n){let s=(i.duration/1e3).toFixed(3),a=c(i.suite||i.file||"aqe"),p=c(i.name);r+=` <testcase classname="${a}" name="${p}" time="${s}"`,!i.passed&&i.error?(r+=`>
|
|
6
|
-
`,r+=` <failure message="${c(i.error)}">${c(i.error)}</failure>
|
|
7
|
-
`,r+=` </testcase>
|
|
8
|
-
`):r+=` />
|
|
9
|
-
`}else{for(let i=0;i<e.passed;i++)r+=` <testcase classname="aqe" name="test-${i+1}" time="0" />
|
|
10
|
-
`;for(let i=0;i<e.failed;i++)r+=` <testcase classname="aqe" name="failed-test-${i+1}" time="0">
|
|
11
|
-
`,r+=` <failure message="Test failed">Test failed</failure>
|
|
12
|
-
`,r+=` </testcase>
|
|
13
|
-
`;for(let i=0;i<e.skipped;i++)r+=` <testcase classname="aqe" name="skipped-test-${i+1}" time="0">
|
|
14
|
-
`,r+=` <skipped />
|
|
15
|
-
`,r+=` </testcase>
|
|
16
|
-
`}return r+=` </testsuite>
|
|
17
|
-
`,r+=`</testsuites>
|
|
18
|
-
`,r}function I(e){let n=`# Coverage Report
|
|
19
|
-
|
|
20
|
-
`;if(n+=`| Metric | Value | Status |
|
|
21
|
-
`,n+=`|--------|-------|--------|
|
|
22
|
-
`,n+=`| Lines | ${e.summary.line}% | ${e.summary.line>=e.threshold?"\u2705":"\u274C"} |
|
|
23
|
-
`,n+=`| Branches | ${e.summary.branch}% | ${e.summary.branch>=e.threshold?"\u2705":"\u274C"} |
|
|
24
|
-
`,n+=`| Functions | ${e.summary.function}% | ${e.summary.function>=e.threshold?"\u2705":"\u274C"} |
|
|
25
|
-
`,n+=`| Statements | ${e.summary.statement}% | ${e.summary.statement>=e.threshold?"\u2705":"\u274C"} |
|
|
26
|
-
`,n+=`
|
|
27
|
-
**Threshold:** ${e.threshold}% \u2014 ${e.meetsThreshold?"\u2705 Met":"\u274C Not met"}
|
|
28
|
-
`,e.gaps&&e.gaps.length>0){n+=`
|
|
29
|
-
## Coverage Gaps
|
|
30
|
-
|
|
31
|
-
`,n+=`| File | Uncovered Lines | Risk | Severity |
|
|
32
|
-
`,n+=`|------|----------------|------|----------|
|
|
33
|
-
`;for(let t of e.gaps.slice(0,20))n+=`| ${t.file} | ${t.lines.length} | ${(t.riskScore*100).toFixed(0)}% | ${t.severity} |
|
|
34
|
-
`}if(e.recommendations&&e.recommendations.length>0){n+=`
|
|
35
|
-
## Recommendations
|
|
36
|
-
|
|
37
|
-
`;for(let t of e.recommendations)n+=`- ${t}
|
|
38
|
-
`}return n}function O(e){let n=`# Quality Gate Report
|
|
39
|
-
|
|
40
|
-
`;n+=`**Result:** ${e.passed?"\u2705 PASSED":"\u274C FAILED"}
|
|
41
|
-
`,n+=`**Score:** ${e.score}
|
|
42
|
-
|
|
43
|
-
`,n+=`## Checks
|
|
44
|
-
|
|
45
|
-
`,n+=`| Check | Value | Threshold | Status |
|
|
46
|
-
`,n+=`|-------|-------|-----------|--------|
|
|
47
|
-
`;for(let t of e.checks)n+=`| ${t.name} | ${t.value} | ${t.threshold} | ${t.passed?"\u2705":"\u274C"} |
|
|
48
|
-
`;if(e.recommendations&&e.recommendations.length>0){n+=`
|
|
49
|
-
## Recommendations
|
|
50
|
-
|
|
51
|
-
`;for(let t of e.recommendations)n+=`- ${t}
|
|
52
|
-
`}return n}function E(e){let n=`# Security Scan Report
|
|
53
|
-
|
|
54
|
-
`;if(n+=`**Target:** ${e.target}
|
|
55
|
-
`,n+=`**Scan Type:** ${e.scanType}
|
|
56
|
-
`,n+=`**Execution:** ${l(e)}
|
|
57
|
-
`,n+=`**Vulnerabilities Found:** ${e.vulnerabilities.length}
|
|
58
|
-
|
|
59
|
-
`,e.checks?.length){n+=`## Check execution
|
|
60
|
-
|
|
61
|
-
`;for(let t of e.checks)n+=`- **${t.name}:** ${t.status}${t.reason?` \u2014 ${t.reason}`:""}
|
|
62
|
-
`;n+=`
|
|
63
|
-
`}if(e.coverage&&e.evidence&&(n+=`**Analyzed files:** ${e.coverage.filesScanned}
|
|
64
|
-
`,n+=`**Analyzed lines:** ${e.coverage.linesScanned}
|
|
65
|
-
`,n+=`**Rules applied:** ${e.coverage.rulesApplied}${e.coverage.rulesAppliedScope?` (${e.coverage.rulesAppliedScope})`:""}
|
|
66
|
-
|
|
67
|
-
`),(e.evidence||e.discovery)&&(n+=`## Execution receipts
|
|
68
|
-
|
|
69
|
-
\`\`\`json
|
|
70
|
-
${$({evidence:e.evidence,discovery:e.discovery})}
|
|
71
|
-
\`\`\`
|
|
72
|
-
|
|
73
|
-
`),e.vulnerabilities.length>0){n+=`## Vulnerabilities
|
|
74
|
-
|
|
75
|
-
`,n+=`| Severity | Type | File | Line | Message |
|
|
76
|
-
`,n+=`|----------|------|------|------|---------|
|
|
77
|
-
`;for(let t of e.vulnerabilities)n+=`| ${t.severity} | ${t.type} | ${t.file} | ${t.line} | ${t.message} |
|
|
78
|
-
`}if(e.compliance&&(n+=`
|
|
79
|
-
## Compliance
|
|
80
|
-
|
|
81
|
-
`,n+=`**Status:** ${e.compliance.compliant?"\u2705 Compliant":"\u274C Non-compliant"}
|
|
82
|
-
`,e.compliance.issues))for(let t of e.compliance.issues)n+=`- **${t.framework}:** ${t.issue}
|
|
83
|
-
`;return n}function L(e){let n=e.passed+e.failed+e.skipped,t=`# Test Run Report
|
|
84
|
-
|
|
85
|
-
`;return t+=`**Run ID:** ${e.runId}
|
|
86
|
-
`,t+=`**Duration:** ${e.duration}ms
|
|
87
|
-
|
|
88
|
-
`,t+=`| Metric | Count |
|
|
89
|
-
`,t+=`|--------|-------|
|
|
90
|
-
`,t+=`| Total | ${n} |
|
|
91
|
-
`,t+=`| Passed | ${e.passed} |
|
|
92
|
-
`,t+=`| Failed | ${e.failed} |
|
|
93
|
-
`,t+=`| Skipped | ${e.skipped} |
|
|
94
|
-
`,t+=`
|
|
95
|
-
**Result:** ${e.failed===0?"\u2705 All tests passed":"\u274C Some tests failed"}
|
|
96
|
-
`,t}export{l as a,R as b,T as c,w as d,$ as e,F as f,A as g,I as h,O as i,E as j,L as k};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
var c="quality-assessment";var o=["coverage","testsPassing","criticalBugs","codeSmells","securityVulnerabilities","technicalDebt","duplications"],u={coverage:{direction:"min",value:80,severity:"high"},testsPassing:{direction:"min",value:95,severity:"critical"},criticalBugs:{direction:"max",value:0,severity:"critical"},codeSmells:{direction:"max",value:20,severity:"medium"},securityVulnerabilities:{direction:"max",value:0,severity:"critical"},technicalDebt:{direction:"max",value:5,severity:"medium"},duplications:{direction:"max",value:5,severity:"low"}};function l(t){return`quality-evidence:${t}:latest`}function d(t,r,a){if(typeof t!="string")throw new Error("Measured quality evidence is malformed: measuredAt is required.");let e=Date.parse(t);if(!Number.isFinite(e))throw new Error("Measured quality evidence is malformed: measuredAt is invalid.");if(e>r+6e4)throw new Error("Measured quality evidence is malformed: measuredAt is in the future.");if(r-e>a)throw new Error("Measured quality evidence is stale. Run the relevant quality analyzers again.");return e}function m(t,r,a,e){if(!t||typeof t!="object")throw new Error(`No measured quality evidence found for ${r}.`);let i=t;if(i.schemaVersion!==1||i.metric!==r||!Number.isFinite(i.value)||i.value<0||typeof i.source!="string"||i.source.trim().length===0)throw new Error(`Measured quality evidence for ${r} is malformed or incomplete.`);d(i.measuredAt,a,e)}async function v(t,r,a){let e=Date.now();if(d(a.measuredAt,e,Number.POSITIVE_INFINITY),a.source.trim().length===0)throw new Error("Quality evidence source is required.");for(let i of o){let n=r[i];if(n===void 0)continue;if(!Number.isFinite(n)||n<0)throw new Error(`Quality evidence value for ${i} must be a non-negative finite number.`);let s={schemaVersion:1,metric:i,value:n,measuredAt:a.measuredAt,source:a.source};await t.set(l(i),s,{namespace:c,persist:!0})}}async function y(t,r={}){let a=r.now??Date.now(),e=r.maxAgeMs??864e5,i={};for(let n of o){let s=await t.get(l(n),{namespace:c});m(s,n,a,e),i[n]=s.value}return i}function f(t,r={}){if(r.coverage!==void 0&&(!Number.isFinite(r.coverage)||r.coverage<0||r.coverage>100))throw new Error("Coverage quality threshold must be a finite number between 0 and 100.");let a=o.map(e=>{let i=e==="coverage"&&r.coverage!==void 0?{...u[e],value:r.coverage}:u[e],n=t[e];return{name:e,value:n,threshold:i.value,direction:i.direction,severity:i.severity,passed:i.direction==="min"?n>=i.value:n<=i.value}});return{passed:a.every(e=>e.passed),checks:a,recommendations:a.filter(e=>!e.passed).map(e=>`${e.name} failed its measured ${e.direction} threshold.`)}}export{u as a,v as b,y as c,f as d};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import*as h from"fs";import*as M from"path";var S=["coverage/coverage-final.json","coverage/coverage-summary.json",".coverage/coverage-final.json"];function x(s){for(let v of S){let i=M.join(s,v);if(h.existsSync(i))try{let n=JSON.parse(h.readFileSync(i,"utf-8"));if(n.total&&n.total.lines)return L(n,s);let o=new Map;for(let[r,C]of Object.entries(n)){let c=C,g=Object.keys(c.s),u=g.filter(a=>c.s[a]>0).length,b=Object.keys(c.b),p=0,m=0;for(let a of b)for(let y of c.b[a])p++,y>0&&m++;let e=Object.keys(c.f),t=e.filter(a=>c.f[a]>0).length,f=new Set,d=new Set;for(let a of g){let y=c.statementMap[a];for(let F=y.start.line;F<=y.end.line;F++)d.add(F),c.s[a]>0&&f.add(F)}let l=[...d].filter(a=>!f.has(a)).sort((a,y)=>a-y);o.set(r,{path:r,lines:{covered:f.size,total:d.size},branches:{covered:m,total:p},functions:{covered:t,total:e.length},statements:{covered:u,total:g.length},uncoveredLines:l,uncoveredBranches:l.slice(0,Math.floor(l.length/2))})}return o.size>0?o:null}catch{continue}}return null}function L(s,v){let i=new Map;for(let[n,o]of Object.entries(s)){if(n==="total")continue;let r=o;i.set(n,{path:n,lines:{covered:r.lines.covered,total:r.lines.total},branches:{covered:r.branches.covered,total:r.branches.total},functions:{covered:r.functions.covered,total:r.functions.total},statements:{covered:r.statements.covered,total:r.statements.total},uncoveredLines:[],uncoveredBranches:[]})}return i.size>0?i:null}function B(s,v){let n=v.split(`
|
|
3
|
-
`).length,r=[s.replace(".ts",".test.ts").replace("/src/","/tests/"),s.replace(".ts",".spec.ts").replace("/src/","/tests/"),s.replace(".ts",".test.ts"),s.replace("/src/","/test/").replace(".ts",".test.ts")].some(d=>h.existsSync(d)),C=(v.match(/\bexport\b/g)||[]).length,c=(v.match(/\b(function|=>)\b/g)||[]).length,g=(v.match(/\b(if|switch|case|\?\?|\|\|)\b/g)||[]).length,u;if(r){let d=Math.min(g*.005,.15),l=Math.min(n*1e-4,.1);u=.85-d-l}else u=.2+(C>5?.1:0);u=Math.max(.05,Math.min(.95,u));let b=Math.floor(n*u),p=Math.max(c,1),m=Math.max(g,1),e=Math.floor(b*.7),t=Math.floor(p*u*.9),f=Array.from({length:n-b},(d,l)=>l+b+1);return{path:s,lines:{covered:b,total:n},branches:{covered:Math.min(e,m),total:m},functions:{covered:Math.min(t,p),total:p},statements:{covered:b,total:n},uncoveredLines:f,uncoveredBranches:f.slice(0,Math.floor(f.length/2))}}function j(s,v){let i=v||process.cwd(),n=x(i),o=[],r=!1;if(n&&n.size>0){r=!0;for(let e of s){let t=M.resolve(e),f=n.get(t)||n.get(e)||n.get(M.relative(i,t));if(f)o.push({...f,path:e});else{let l=(h.existsSync(e)?h.readFileSync(e,"utf-8"):"").split(`
|
|
4
|
-
`).length;o.push({path:e,lines:{covered:0,total:l},branches:{covered:0,total:1},functions:{covered:0,total:1},statements:{covered:0,total:l},uncoveredLines:Array.from({length:l},(a,y)=>y+1),uncoveredBranches:[]})}}}else for(let e of s){let t=h.existsSync(e)?h.readFileSync(e,"utf-8"):"";o.push(B(e,t))}let C=o.reduce((e,t)=>e+t.lines.total,0),c=o.reduce((e,t)=>e+t.lines.covered,0),g=o.reduce((e,t)=>e+t.branches.total,0),u=o.reduce((e,t)=>e+t.branches.covered,0),b=o.reduce((e,t)=>e+t.functions.total,0),p=o.reduce((e,t)=>e+t.functions.covered,0),m=(e,t)=>t>0?Math.round(e/t*100):0;return{files:o,summary:{line:m(c,C),branch:m(u,g),function:m(p,b),statement:m(c,C),files:o.length},instrumented:r}}export{j as a};
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a as Y}from"./chunk-ZF5JTQEE.js";import{d as O,e as k}from"./chunk-HEDLZWPM.js";import{c as N,d as Q}from"./chunk-XKIFNKHV.js";import"./chunk-5H7MR6HP.js";import{Command as se}from"commander";import d from"chalk";import*as S from"fs";import*as w from"path";import*as R from"fs";import*as h from"path";import{isCollection as H,isScalar as J,parseDocument as K,visit as V}from"yaml";var E={version:"1",name:"aqe-ci",phases:[{name:"Test Generation",type:"test",enabled:!0,config:{target:".",framework:"vitest",type:"unit"},continueOnFailure:!1,timeout:300},{name:"Coverage Analysis",type:"coverage",enabled:!0,config:{target:".",threshold:80},continueOnFailure:!0,timeout:300},{name:"Security Scan",type:"security",enabled:!0,config:{sast:!0},continueOnFailure:!0,timeout:300},{name:"Quality Gate",type:"quality-gate",enabled:!0,config:{},continueOnFailure:!1,timeout:60}],output:{format:"json",directory:".aqe-ci-output",combinedReport:!0},qualityGate:{enforced:!0,thresholds:{coverage:80,security:"medium",quality:70}}},Z=[".aqe-ci.yml",".aqe-ci.yaml","aqe-ci.yml","aqe-ci.yaml"];function T(n=process.cwd()){let r=h.resolve(n);for(let s=0;s<10;s++){for(let a of Z){let e=h.join(r,a);if(R.existsSync(e))return e}let u=h.dirname(r);if(u===r)break;r=u}return null}function L(n){if(!R.existsSync(n))return{success:!1,errors:[`Config file not found: ${n}`]};let r;try{r=R.readFileSync(n,"utf-8")}catch(s){return{success:!1,errors:[`Failed to read config: ${s}`]}}return ne(r,n)}var U=1e4,W=1e4,j=20,ee=new Set(["__proto__","constructor","prototype"]);function F(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)&&(Object.getPrototypeOf(n)===Object.prototype||Object.getPrototypeOf(n)===null)}function te(n){let r=n.split(`
|
|
3
|
-
`);if(r.length>U)throw new Error(`YAML exceeds maximum allowed lines (${U})`);if(r.some(e=>e.length>W))throw new Error(`YAML exceeds maximum line length (${W})`);let s=K(n,{prettyErrors:!1,merge:!0});if(s.errors.length)throw new Error(s.errors.map(e=>e.message).join("; "));V(s,{Collection:(e,i,c)=>{if(c.filter(H).length>=j)throw new Error(`YAML exceeds maximum depth (${j})`)},Pair:(e,i)=>{if(J(i.key)&&ee.has(String(i.key.value)))throw new Error(`Unsafe YAML key: ${i.key.value}`)}});let u=s.contents===null?{}:s.toJS({maxAliasCount:100});function a(e,i,c){if(!(e===null||typeof e!="object")){if(i>j)throw new Error(`YAML exceeds maximum depth (${j})`);if(c.has(e))throw new Error("Cyclic YAML aliases are not supported");c.add(e);for(let m of Object.values(e))a(m,i+1,c);c.delete(e)}}if(a(u,0,new Set),!F(u))throw new Error("CI config must be a YAML mapping");return u}function ne(n,r){let s;try{s=te(n)}catch(l){return{success:!1,errors:[`Invalid YAML: ${l}`]}}let u=[],a=M();function e(l,t,o,g){let p=l[t];return p===void 0?o:typeof p!="string"||!p.trim()?(u.push(`${g} must be a non-empty string`),o):p}function i(l,t,o,g){let p=l[t];return p===void 0?o:typeof p!="boolean"?(u.push(`${g} must be a boolean`),o):p}if(s.version!==void 0&&(typeof s.version=="number"&&Number.isFinite(s.version)?a.version=String(s.version):a.version=e(s,"version",a.version,"version")),a.name=e(s,"name",a.name,"name"),s.output!==void 0&&(F(s.output)?(a.output.format=e(s.output,"format",a.output.format,"output.format"),a.output.directory=e(s.output,"directory",a.output.directory,"output.directory"),a.output.combinedReport=i(s.output,"combined_report",a.output.combinedReport,"output.combined_report")):u.push("output must be a mapping")),s.quality_gate!==void 0)if(!F(s.quality_gate))u.push("quality_gate must be a mapping");else{let l=s.quality_gate;if(a.qualityGate.enforced=i(l,"enforced",a.qualityGate.enforced,"quality_gate.enforced"),l.thresholds!==void 0)if(!F(l.thresholds))u.push("quality_gate.thresholds must be a mapping");else{for(let t of["coverage","quality"]){let o=l.thresholds[t];o!==void 0&&(typeof o!="number"||!Number.isFinite(o)||o<0||o>100?u.push(`quality_gate.thresholds.${t} must be a finite number between 0 and 100`):a.qualityGate.thresholds[t]=o)}if(l.thresholds.security!==void 0){let t=l.thresholds.security;typeof t!="string"||!["none","low","medium","high"].includes(t)?u.push("quality_gate.thresholds.security must be none, low, medium or high"):a.qualityGate.thresholds.security=t}}}if(s.phases!==void 0)if(a.phases=[],!Array.isArray(s.phases))u.push("phases must be a sequence");else for(let[l,t]of s.phases.entries()){if(!F(t)){u.push(`Phase ${l+1} must be a mapping`);continue}t.name===void 0&&u.push(`Phase ${l+1} must have a name`);let o=e(t,"name","",`Phase ${l+1} name`),g=["test","coverage","security","quality-gate","code-intelligence","custom"];if(!g.includes(t.type)){u.push(`Phase "${o}" has invalid type "${t.type}". Valid: ${g.join(", ")}`);continue}let p=300;t.timeout!==void 0&&(typeof t.timeout!="number"||!Number.isFinite(t.timeout)||t.timeout<=0?u.push(`Phase "${o}" timeout must be a positive finite number`):p=t.timeout),t.config!==void 0&&!F(t.config)&&u.push(`Phase "${o}" config must be a mapping`),a.phases.push({name:o,type:t.type,timeout:p,enabled:i(t,"enabled",!0,`Phase "${o}" enabled`),continueOnFailure:i(t,"continue_on_failure",!1,`Phase "${o}" continue_on_failure`),config:F(t.config)?{...t.config}:{}})}a.phases.length===0&&u.push("Config must have at least one phase");let c=h.resolve(r?h.dirname(r):process.cwd());function m(l){let t=l,o=[];for(;!R.existsSync(t);){let g=h.dirname(t);if(g===t)break;o.unshift(h.basename(t)),t=g}return h.resolve(R.realpathSync(t),...o)}function b(l,t){if(typeof l!="string"||!l.trim()||l.includes("\0")){u.push(`${t} must be a non-empty relative path`);return}let o=h.resolve(c,l),g=h.relative(c,o);if(h.isAbsolute(l)||h.win32.isAbsolute(l)||g===".."||g.startsWith(`..${h.sep}`)||h.isAbsolute(g)){u.push(`${t} must stay inside the project and use a relative path`);return}try{let p=h.relative(m(c),m(o));if(p===".."||p.startsWith(`..${h.sep}`)||h.isAbsolute(p)){u.push(`${t} must stay inside the project (symlink escapes are not allowed)`);return}}catch(p){u.push(`${t} cannot be resolved safely: ${p}`);return}return r?o:l}a.output.directory=b(a.output.directory,"output.directory")??a.output.directory;for(let l of a.phases)if(l.config.target!==void 0){let t=b(l.config.target,`Phase "${l.name}" config.target`);t!==void 0&&(l.config.target=t)}return u.length>0?{success:!1,config:a,errors:u}:{success:!0,config:a,errors:[],configPath:r}}function M(){return{...E,phases:E.phases.map(n=>({...n,config:{...n.config}})),output:{...E.output},qualityGate:{...E.qualityGate,thresholds:{...E.qualityGate.thresholds}}}}async function oe(n,r,s,u,a){let e=Date.now(),i=[];if(!n.enabled)return{phase:n.name,type:n.type,status:"skipped",duration:0,exitCode:0,summary:"Phase disabled",artifacts:[]};try{let c={},m="passed",b="";switch(n.type){case"test":{let t=await r.kernel.getDomainAPIAsync("test-generation");if(!t)return D(n,e,"failed",1,"Test generation domain not available",i);let o=n.config.target||".",{walkSourceFiles:g}=await import("./file-discovery-R73BYEXB.js"),p=w.resolve(o),q=g(p,{includeTests:!1}),$=await t.generateTests({sourceFiles:q,testType:n.config.type||"unit",framework:n.config.framework||"vitest",coverageTarget:80});if($.success&&$.value){let C=$.value;c={testsGenerated:C.tests.length,coverageEstimate:C.coverageEstimate},b=`Generated ${C.tests.length} tests (${C.coverageEstimate==null?"coverage unmeasured":`est. ${C.coverageEstimate}% coverage`})`;let y=w.join(s,"test-generation.json");S.writeFileSync(y,k(C),"utf-8"),i.push(y)}else m="failed",b=$.error?.message||"Test generation failed";break}case"coverage":{let t=await r.kernel.getDomainAPIAsync("coverage-analysis");if(!t)return D(n,e,"failed",1,"Coverage analysis domain not available",i);let o=n.config.target||".",g=n.config.threshold||80,{walkSourceFiles:p}=await import("./file-discovery-R73BYEXB.js"),q=w.resolve(o),$=p(q,{includeTests:!1}),C=Y($),y=await t.analyze({coverageData:C,threshold:g,includeFileDetails:!0});if(y.success&&y.value){let I=y.value;c={...I.summary,meetsThreshold:I.meetsThreshold,threshold:g},m=I.meetsThreshold?"passed":"warning",b=`Line: ${I.summary.line}%, Branch: ${I.summary.branch}% \u2014 ${I.meetsThreshold?"meets":"below"} ${g}% threshold`;let x=w.join(s,"coverage.json");S.writeFileSync(x,k(y.value),"utf-8"),i.push(x)}else m="failed",b=y.error?.message||"Coverage analysis failed";break}case"security":{let t=await r.kernel.getDomainAPIAsync("security-compliance");if(!t)return D(n,e,"failed",1,"Security domain not available",i);let o=n.config.target||".",{walkSourceFiles:g}=await import("./file-discovery-R73BYEXB.js"),p=w.resolve(o),q=g(p,{includeTests:!0}),$=await t.runSASTScan(q);if($.success&&$.value){let C=$.value,y=C.vulnerabilities||[],I=y.filter(f=>f.severity==="high"||f.severity==="critical").length;c={vulnerabilities:y.length,high:I},m=I>0?"failed":y.length>0?"warning":"passed",b=y.length===0?"No vulnerabilities found":`${y.length} vulnerabilities (${I} high/critical)`;let{toSARIF:x}=await import("./ci-output-BMJABAEX.js"),G=w.join(s,"security.sarif");S.writeFileSync(G,x({vulnerabilities:y,target:o,scanType:"SAST"}),"utf-8"),i.push(G);let A=w.join(s,"security.json");S.writeFileSync(A,k(C),"utf-8"),i.push(A)}else m="failed",b=$.error?.message||"Security scan failed";break}case"quality-gate":{try{let o=await N(r.kernel.memory),g=Q(o,{coverage:a});c={...g,metrics:o,evidenceStatus:"measured"},m=g.passed?"passed":"failed",b=`Quality gate: ${g.passed?"PASSED":"FAILED"} (${g.checks.filter(p=>p.passed).length}/${g.checks.length} measured checks passed)`}catch(o){m="failed",b=`Quality gate: ${o instanceof Error?o.message:String(o)}`,c={passed:!1,evidenceStatus:"unavailable",error:b,checks:[]}}let t=w.join(s,`quality-gate-${u+1}.json`);S.writeFileSync(t,k(c),"utf-8"),i.push(t);break}case"code-intelligence":{let t=await r.kernel.getDomainAPIAsync("code-intelligence");if(!t)return D(n,e,"failed",1,"Code intelligence domain not available",i);let o=n.config.target||".",{walkSourceFiles:g}=await import("./file-discovery-R73BYEXB.js"),p=w.resolve(o),q=g(p,{includeTests:!1}),$=await t.index({paths:q,incremental:!0});if($.success&&$.value){let C=$.value;c=C,b=`Indexed ${C.filesIndexed} files, ${C.nodesCreated} nodes`;let y=w.join(s,"code-intelligence.json");S.writeFileSync(y,k(C),"utf-8"),i.push(y)}else m="warning",b=$.error?.message||"Code intelligence indexing incomplete";break}default:b=`Custom phase "${n.name}" \u2014 no built-in handler`,m="warning"}let l=Date.now()-e;return{phase:n.name,type:n.type,status:m,duration:l,exitCode:m==="failed"?1:0,summary:b,artifacts:i,details:c}}catch(c){let m=Date.now()-e;return{phase:n.name,type:n.type,status:"failed",duration:m,exitCode:1,summary:`Error: ${c instanceof Error?c.message:String(c)}`,artifacts:i}}}function D(n,r,s,u,a,e){return{phase:n.name,type:n.type,status:s,duration:Date.now()-r,exitCode:u,summary:a,artifacts:e}}function z(n){let r=`# AQE CI/CD Report
|
|
4
|
-
|
|
5
|
-
`;r+=`**Status:** ${n.overallStatus==="passed"?"PASSED":n.overallStatus==="warning"?"WARNING":"FAILED"}
|
|
6
|
-
`,r+=`**Duration:** ${(n.duration/1e3).toFixed(1)}s
|
|
7
|
-
`,r+=`**Quality Gate:** ${X(n)}
|
|
8
|
-
|
|
9
|
-
`,r+=`## Phases
|
|
10
|
-
|
|
11
|
-
`,r+=`| Phase | Type | Status | Duration | Summary |
|
|
12
|
-
`,r+=`|-------|------|--------|----------|---------|
|
|
13
|
-
`;for(let s of n.phases){let u=s.status==="passed"?"PASS":s.status==="failed"?"FAIL":s.status==="warning"?"WARN":"SKIP";r+=`| ${s.phase} | ${s.type} | ${u} | ${(s.duration/1e3).toFixed(1)}s | ${s.summary} |
|
|
14
|
-
`}r+=`
|
|
15
|
-
## Artifacts
|
|
16
|
-
|
|
17
|
-
`;for(let s of n.phases)if(s.artifacts.length>0){r+=`### ${s.phase}
|
|
18
|
-
`;for(let u of s.artifacts)r+=`- \`${w.basename(u)}\`
|
|
19
|
-
`;r+=`
|
|
20
|
-
`}return r}function X(n){return`${n.qualityGateStatus==="not-run"?"Not run":n.qualityGatePassed?"Passed":"Failed"} (${n.qualityGateEnforced?"enforced":"advisory"})`}function ge(n,r,s){let u=new se("ci").description("CI/CD pipeline orchestration");return u.command("run").description("Execute CI pipeline from .aqe-ci.yml").option("-c, --config <path>","Path to .aqe-ci.yml config file").option("--phase <phases>","Run only specific phases (comma-separated)").option("--no-quality-gate","Skip quality gate enforcement").option("-F, --format <format>","Output format (text|json|markdown)","text").option("-o, --output <path>","Write combined report to file").action(async a=>{if(await s())try{let e,i=null;if(a.config){let f=L(w.resolve(a.config));if(!f.success){console.error(d.red(`
|
|
21
|
-
Config errors:`));for(let v of f.errors)console.error(d.red(` - ${v}`));await r(1);return}e=f.config,i=a.config}else if(i=T(),i){let f=L(i);if(!f.success){console.error(d.red(`
|
|
22
|
-
Config errors:`));for(let v of f.errors)console.error(d.red(` - ${v}`));await r(1);return}e=f.config}else e=M(),i="(defaults)";let c;if(a.phase!==void 0){let f=a.phase.split(",").map(P=>P.trim().toLowerCase()),v=f.filter(P=>!P||!e.phases.some(_=>P===_.name.toLowerCase()||P===_.type));v.length>0&&(c=`Unknown or empty CI phase selector: ${v.map(P=>P||"(empty)").join(", ")}. Available phases: ${e.phases.map(P=>`${P.name} (${P.type})`).join(", ")}`),e.phases=e.phases.filter(P=>f.includes(P.name.toLowerCase())||f.includes(P.type))}a.qualityGate===!1&&(e.qualityGate.enforced=!1);let m=a.format,b=new Date;m==="text"&&(console.log(d.blue(`
|
|
23
|
-
AQE CI Pipeline
|
|
24
|
-
`)),console.log(d.gray(` Config: ${i}`)),console.log(d.gray(` Phases: ${e.phases.length}`)),console.log(d.gray(` Quality Gate: ${e.qualityGate.enforced?"enforced":"advisory"}
|
|
25
|
-
`)));let l=w.resolve(e.output.directory);S.mkdirSync(l,{recursive:!0});let t=w.join(l,"quality-gate.json");S.writeFileSync(t,k({passed:!1,status:"not-run",evidenceStatus:"not-run",enforced:e.qualityGate.enforced,phases:[]}),"utf-8"),c&&console.error(d.red(c));let o=[];for(let f of c?[]:e.phases){if(m==="text"){let P=` [${o.length+1}/${e.phases.length}] ${f.name}...`;process.stdout.write(d.cyan(P))}let v=await oe(f,n,l,o.length,e.qualityGate.thresholds.coverage);if(o.push(v),m==="text"){let P=v.status==="passed"?d.green:v.status==="failed"?d.red:v.status==="warning"?d.yellow:d.gray,_=v.status.toUpperCase(),B=`${(v.duration/1e3).toFixed(1)}s`;process.stdout.write(`\r [${o.length}/${e.phases.length}] ${f.name} ${P(_)} (${B})
|
|
26
|
-
`),v.summary&&console.log(d.gray(` ${v.summary}`))}if(v.status==="failed"&&(v.type!=="quality-gate"||e.qualityGate.enforced)&&!f.continueOnFailure){m==="text"&&console.log(d.red(`
|
|
27
|
-
Pipeline stopped: "${f.name}" failed (continue_on_failure: false)
|
|
28
|
-
`));break}}let g=c!==void 0||o.some(f=>f.status==="failed"&&f.type!=="quality-gate"),p=o.some(f=>f.status==="warning"||f.type==="quality-gate"&&f.status==="failed"&&!e.qualityGate.enforced),q=o.filter(f=>f.type==="quality-gate"),$=e.phases.filter(f=>f.type==="quality-gate").length,C=q.length>0&&q.length===$&&q.every(f=>f.status==="passed"),y=C?"passed":q.some(f=>f.status==="failed")?"failed":"not-run",I=g||e.qualityGate.enforced&&!C?"failed":p?"warning":"passed",x=new Date,G=x.getTime()-b.getTime(),A={config:i||"(defaults)",startedAt:b,completedAt:x,duration:G,phases:o,qualityGatePassed:C,qualityGateStatus:y,qualityGateEnforced:e.qualityGate.enforced,overallStatus:I,exitCode:I==="failed"?1:0,...c?{configurationError:c}:{}};if(S.writeFileSync(t,k({...q.length===1?q[0].details:{},passed:C,status:y,enforced:e.qualityGate.enforced,...y==="not-run"?{evidenceStatus:"not-run"}:{},phases:q}),"utf-8"),e.output.combinedReport){let f=w.join(l,"ci-report.md");S.writeFileSync(f,z(A),"utf-8");let v=w.join(l,"ci-report.json");S.writeFileSync(v,k(A),"utf-8")}if(m==="json")O(k(A),a.output);else if(m==="markdown")O(z(A),a.output);else{console.log("");let f=I==="passed"?d.green:I==="failed"?d.red:d.yellow;console.log(` ${f(`Pipeline: ${I.toUpperCase()}`)} (${(G/1e3).toFixed(1)}s)`),console.log(` Quality Gate: ${X(A)}`),console.log(d.gray(` Artifacts: ${l}/`)),console.log("")}await r(A.exitCode)}catch(e){console.error(d.red(`
|
|
29
|
-
CI pipeline failed:`),e),await r(1)}}),u.command("init").description("Create a .aqe-ci.yml config file").option("--force","Overwrite existing config").action(async a=>{let e=T();if(e&&!a.force){console.log(d.yellow(`
|
|
30
|
-
Config already exists: ${e}`)),console.log(d.gray(` Use --force to overwrite
|
|
31
|
-
`)),await r(0);return}let i=`# AQE CI/CD Pipeline Configuration
|
|
32
|
-
# Documentation: https://github.com/proffesor-for-testing/agentic-qe
|
|
33
|
-
|
|
34
|
-
version: '1'
|
|
35
|
-
name: ${w.basename(process.cwd())}
|
|
36
|
-
|
|
37
|
-
phases:
|
|
38
|
-
- name: Test Generation
|
|
39
|
-
type: test
|
|
40
|
-
config:
|
|
41
|
-
target: .
|
|
42
|
-
framework: vitest
|
|
43
|
-
type: unit
|
|
44
|
-
timeout: 300
|
|
45
|
-
|
|
46
|
-
- name: Coverage Analysis
|
|
47
|
-
type: coverage
|
|
48
|
-
continue_on_failure: true
|
|
49
|
-
config:
|
|
50
|
-
target: .
|
|
51
|
-
threshold: 80
|
|
52
|
-
timeout: 300
|
|
53
|
-
|
|
54
|
-
- name: Security Scan
|
|
55
|
-
type: security
|
|
56
|
-
continue_on_failure: true
|
|
57
|
-
config:
|
|
58
|
-
sast: true
|
|
59
|
-
timeout: 300
|
|
60
|
-
|
|
61
|
-
- name: Quality Gate
|
|
62
|
-
type: quality-gate
|
|
63
|
-
timeout: 60
|
|
64
|
-
|
|
65
|
-
output:
|
|
66
|
-
format: json
|
|
67
|
-
directory: .aqe-ci-output
|
|
68
|
-
combined_report: true
|
|
69
|
-
|
|
70
|
-
quality_gate:
|
|
71
|
-
enforced: true
|
|
72
|
-
thresholds:
|
|
73
|
-
coverage: 80
|
|
74
|
-
security: medium
|
|
75
|
-
quality: 70
|
|
76
|
-
`,c=w.join(process.cwd(),".aqe-ci.yml");S.writeFileSync(c,i,"utf-8"),console.log(d.green(`
|
|
77
|
-
Created: ${c}`)),console.log(d.gray(" Edit the file to customize your CI pipeline")),console.log(d.gray(` Run: aqe ci run
|
|
78
|
-
`)),await r(0)}),u.command("validate").description("Validate .aqe-ci.yml config").option("-c, --config <path>","Path to config file").action(async a=>{let e=a.config?w.resolve(a.config):T();if(!e){console.log(d.red(`
|
|
79
|
-
No .aqe-ci.yml found`)),console.log(d.gray(` Run: aqe ci init
|
|
80
|
-
`)),await r(1);return}let i=L(e);if(i.success){console.log(d.green(`
|
|
81
|
-
Config valid: ${e}`)),console.log(d.gray(` Phases: ${i.config.phases.length}`));for(let c of i.config.phases){let m=c.enabled?d.green("*"):d.gray("o");console.log(` ${m} ${c.name} (${c.type})`)}console.log(d.gray(` Quality Gate: ${i.config.qualityGate.enforced?"enforced":"advisory"}`)),console.log(""),await r(0)}else{console.log(d.red(`
|
|
82
|
-
Config invalid: ${e}`));for(let c of i.errors)console.log(d.red(` - ${c}`));console.log(""),await r(1)}}),u}export{ge as createCICommand};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{c as a,d as b,e as c}from"./chunk-3MSBVOYW.js";import"./chunk-R47LNH5W.js";import"./chunk-ZKXZTIVF.js";import"./chunk-JL3TI43V.js";import"./chunk-5H7MR6HP.js";c();export{a as VibiumClientImpl,b as VibiumClientProvider};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{c as a,d as b,e as c,f as d,g as e,h as f,i as g,j as h,k as i,l as j,m as k,n as l}from"./chunk-AOKSLWON.js";import"./chunk-73MTUM6F.js";import"./chunk-HFSBONCS.js";import"./chunk-HEKCN5XQ.js";import"./chunk-N6CRIUTO.js";import"./chunk-76PRW2KY.js";import"./chunk-XZ5Z56OP.js";import"./chunk-RWZ4F44Y.js";import"./chunk-MVTUFPM2.js";import"./chunk-2MU4WCMQ.js";import"./chunk-OOK6GPJR.js";import"./chunk-GAXTPQCZ.js";import"./chunk-JFQDWAU3.js";import"./chunk-3BDDOFYW.js";import"./chunk-DFJGXXCL.js";import"./chunk-VAXQUD5G.js";import"./chunk-GLKLEHK3.js";import"./chunk-3ZIVBTX6.js";import"./chunk-PMXWDTDK.js";import"./chunk-ZURYZEHX.js";import"./chunk-MBV57LKC.js";import"./chunk-LJRZAALA.js";import"./chunk-AHVN3UQZ.js";import"./chunk-PB2WSCBW.js";import"./chunk-I43QRLLB.js";import"./chunk-XKIFNKHV.js";import"./chunk-RI4JPBZD.js";import"./chunk-DEJM2P5K.js";import"./chunk-WYO5VN2L.js";import"./chunk-LPSE6DOQ.js";import"./chunk-P7GM3EE7.js";import"./chunk-TB22Y3WW.js";import"./chunk-CQ3WSTJ2.js";import"./chunk-V3NZ23X6.js";import"./chunk-SJB4KMZS.js";import"./chunk-ZP6ANUP7.js";import"./chunk-C5EN5WB6.js";import"./chunk-B7GJXQD2.js";import"./chunk-2LL35V3A.js";import"./chunk-CFXFGQEN.js";import"./chunk-BPGFCUDO.js";import"./chunk-EWUFVWRT.js";import"./chunk-YUWUFYHK.js";import"./chunk-7INP6HZH.js";import"./chunk-BND6M2JX.js";import"./chunk-OHH6BUZK.js";import"./chunk-BY3IL56R.js";import"./chunk-LY53L6NH.js";import"./chunk-DAYMT7TH.js";import"./chunk-EY5IUF7U.js";import"./chunk-3MSBVOYW.js";import"./chunk-R47LNH5W.js";import"./chunk-ZKXZTIVF.js";import"./chunk-A4OPQJ4A.js";import"./chunk-5SS2Z7JC.js";import"./chunk-LOLAEDZD.js";import"./chunk-M6SJALLA.js";import"./chunk-TVQPYP2Z.js";import"./chunk-6HO3XRXE.js";import"./chunk-GJVRQBLI.js";import"./chunk-SZWXUG36.js";import"./chunk-LGA6J4I4.js";import"./chunk-MGH4XIHH.js";import"./chunk-NBMQOP2R.js";import"./chunk-VMSO6DMF.js";import"./chunk-J3RNVHDH.js";import"./chunk-2534PXIV.js";import"./chunk-XHCCH7UC.js";import"./chunk-SIUUAKCE.js";import"./chunk-54ITMOFM.js";import"./chunk-PCWZCXBD.js";import"./chunk-YZ2AGC7O.js";import"./chunk-6TMUZGM2.js";import"./chunk-DF4Y3HPO.js";import"./chunk-FDK2GF4G.js";import"./chunk-BZWZTGMF.js";import"./chunk-UK5HY6LC.js";import"./chunk-4GLR2S2M.js";import"./chunk-RG67RZIX.js";import"./chunk-W3PPYNHF.js";import"./chunk-SCL2OYN7.js";import"./chunk-DBIK4OFX.js";import"./chunk-3C2BFLYC.js";import"./chunk-T3BMCEQR.js";import"./chunk-YQ6BK7QC.js";import"./chunk-EGHK6NMH.js";import"./chunk-SOSJFEFB.js";import"./chunk-IKWAPHJA.js";import"./chunk-ASKPTGUU.js";import"./chunk-WEDVLKRB.js";import"./chunk-ISASRHZP.js";import"./chunk-PJAXWCFC.js";import"./chunk-2ICC4H6K.js";import"./chunk-BY5PLEPZ.js";import"./chunk-FRBCX46J.js";import"./chunk-S5D3HCGN.js";import"./chunk-6HTO4BLV.js";import"./chunk-HCDTLV5J.js";import"./chunk-RJ5CZ7B6.js";import"./chunk-W6TJXK5Y.js";import"./chunk-NIJMLEAX.js";import"./chunk-OG4KHX7S.js";import"./chunk-RB2SL5GD.js";import"./chunk-U2E5F3VZ.js";import"./chunk-DVE5SM5G.js";import"./chunk-33IUCP34.js";import"./chunk-PEA4DVXW.js";import"./chunk-D7RVZ5C2.js";import"./chunk-54XTJBHV.js";import"./chunk-WW6WUMS7.js";import"./chunk-5XXLWJU7.js";import"./chunk-LXYTC62V.js";import"./chunk-Z56QTRRB.js";import"./chunk-JL3TI43V.js";import"./chunk-K2VUYRMG.js";import"./chunk-2DRMTRBM.js";import"./chunk-O7TMY4GS.js";import"./chunk-5B5D5KCV.js";import"./chunk-WI5AEB7Q.js";import"./chunk-WO4NSPLX.js";import"./chunk-X5S5UEM6.js";import"./chunk-5H7MR6HP.js";export{c as adoptExternalFleet,e as assignAgentLevel,k as disposeFleet,f as getAgentLevel,g as getAllAgentLevels,a as getFleetState,d as getFleetTopology,l as handleAQEHealth,j as handleFleetHealth,h as handleFleetInit,i as handleFleetStatus,b as isFleetInitialized};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a as V}from"./chunk-ZF5JTQEE.js";import{a as u,b as j,c as F,d as x,e as N,f as O,g as L,h as D,i as B,j as M}from"./chunk-35A22AUL.js";import{b as I}from"./chunk-UORI2CZ4.js";import{d as P,e as W,h as G}from"./chunk-HEDLZWPM.js";import"./chunk-5H7MR6HP.js";import{Command as q}from"commander";import e from"chalk";var R={low:{minRisk:.7,maxGaps:10,description:"Only critical gaps with high risk scores"},medium:{minRisk:.5,maxGaps:20,description:"Moderate gaps including medium risk items"},high:{minRisk:.3,maxGaps:50,description:"All gaps including low risk items"}},$=class extends M{constructor(t={}){super(t)}getTitle(){return"Coverage Analysis Wizard"}getSubtitle(){return"Analyze code coverage with O(log n) gap detection"}getConfirmationPrompt(){return"Proceed with coverage analysis?"}isNonInteractive(){return this.options.nonInteractive??!1}getCommands(){return[new D({id:"target",stepNumber:"1/7",title:"Target Directory",description:"Enter the directory or file to analyze for coverage",examples:"src/, ./lib, coverage/lcov.info",defaultValue:this.options.defaultTarget||".",suggestionsProvider:j.getCoverageTargets,validatePath:!0}),new x({id:"sensitivity",stepNumber:"2/7",title:"Gap Detection Sensitivity",description:"Select how sensitive the gap detection should be",options:[{key:"1",value:"low",label:"low",description:R.low.description},{key:"2",value:"medium",label:"medium",description:R.medium.description},{key:"3",value:"high",label:"high",description:R.high.description}],defaultValue:this.options.defaultSensitivity||"medium",validValues:["low","medium","high"]}),new x({id:"format",stepNumber:"3/7",title:"Report Format",description:"Select the output format for the coverage report",options:[{key:"1",value:"json",label:"json",description:"JSON - Machine-readable, good for CI/CD pipelines"},{key:"2",value:"html",label:"html",description:"HTML - Interactive, visual report with charts"},{key:"3",value:"markdown",label:"markdown",description:"Markdown - Documentation-friendly format"},{key:"4",value:"text",label:"text",description:"Text - Simple console output"}],defaultValue:this.options.defaultFormat||"json",validValues:["json","html","markdown","text"]}),new N({id:"priorityFocus",stepNumber:"4/7",title:"Priority Focus Areas",description:"Select coverage metrics to prioritize (comma-separated or numbers)",instructions:"Example: 1,2 or functions,branches",options:[{key:"1",value:"functions",label:"functions",description:"Functions - Focus on function coverage"},{key:"2",value:"branches",label:"branches",description:"Branches - Focus on branch/decision coverage"},{key:"3",value:"lines",label:"lines",description:"Lines - Focus on line coverage"},{key:"4",value:"statements",label:"statements",description:"Statements - Focus on statement coverage"}],defaultValue:this.options.defaultPriorityFocus||["functions","branches"],validValues:["functions","branches","lines","statements"]}),new O({id:"riskScoring",stepNumber:"5/7",title:"Enable risk scoring",description:"Enable risk scoring to prioritize coverage gaps by potential impact",additionalInfo:"Risk scores consider code complexity, change frequency, and criticality",defaultValue:this.options.defaultRiskScoring??!0}),new L({id:"threshold",stepNumber:"6/7",title:"Coverage threshold %",description:"Set the minimum coverage percentage required. Files below this threshold will be flagged.",presets:[{key:"1",value:60,label:"60% - Legacy/maintenance projects"},{key:"2",value:70,label:"70% - Standard projects"},{key:"3",value:80,label:"80% - Quality-focused projects"},{key:"4",value:90,label:"90% - Critical/high-reliability projects"}],defaultValue:this.options.defaultThreshold||80,min:0,max:100}),new B({id:"patterns",stepNumber:"7/7",title:"File Patterns (Optional)",description:"Specify patterns to include or exclude from analysis. Leave blank to analyze all files."})]}buildResult(t){let h=t.patterns;return{target:t.target,sensitivity:t.sensitivity,format:t.format,priorityFocus:t.priorityFocus,riskScoring:t.riskScoring,threshold:t.threshold,includePatterns:h?.include,excludePatterns:h?.exclude,cancelled:!1}}printSummary(t){u.printSummaryHeader();let h=F.relativePath(t.target,this.cwd);u.printSummaryField("Target",h),u.printSummaryField("Sensitivity",t.sensitivity),u.printSummaryField("Report Format",t.format),u.printSummaryField("Priority Focus",t.priorityFocus.join(", ")),u.printSummaryField("Risk Scoring",F.enabledDisabled(t.riskScoring)),u.printSummaryField("Threshold",F.percentage(t.threshold)),t.includePatterns&&t.includePatterns.length>0&&u.printSummaryField("Include",t.includePatterns.join(", ")),t.excludePatterns&&t.excludePatterns.length>0&&u.printSummaryField("Exclude",t.excludePatterns.join(", "));let b=R[t.sensitivity];u.printDerivedSettings({"Min risk score":String(b.minRisk),"Max gaps shown":String(b.maxGaps)})}getDefaults(){return{target:this.options.defaultTarget||this.cwd,sensitivity:this.options.defaultSensitivity||"medium",format:this.options.defaultFormat||"json",priorityFocus:this.options.defaultPriorityFocus||["functions","branches"],riskScoring:this.options.defaultRiskScoring??!0,threshold:this.options.defaultThreshold||80,cancelled:!1}}getCancelled(){return{target:".",sensitivity:"medium",format:"json",priorityFocus:["functions","branches"],riskScoring:!0,threshold:80,cancelled:!0}}};async function E(p={}){return new $(p).run()}function z(p){return p>=80?e.green:p>=50?e.yellow:e.red}function te(p,t,h){let b=new q("coverage").description("Coverage analysis shortcut").argument("[target]","Target file or directory",".").option("--risk","Include risk scoring").option("--gaps","Detect coverage gaps").option("--threshold <percent>","Coverage threshold percentage","80").option("--sensitivity <level>","Gap detection sensitivity (low|medium|high)","medium").option("--wizard","Run interactive coverage analysis wizard").option("--ghost","Include ghost intent coverage analysis (detect untested behavioral intents)").option("-F, --format <format>","Output format (text|json|markdown)","text").option("-o, --output <path>","Write output to file").action(async(y,i)=>{let g=y,w=i.risk,k=i.gaps,d=parseInt(i.threshold,10);if(i.wizard)try{let s=await E({defaultTarget:y!=="."?y:void 0,defaultThreshold:i.threshold!=="80"?parseInt(i.threshold,10):void 0,defaultRiskScoring:i.risk,defaultSensitivity:i.sensitivity!=="medium"?i.sensitivity:void 0});s.cancelled&&(console.log(e.yellow(`
|
|
3
|
-
Coverage analysis cancelled.
|
|
4
|
-
`)),await t(0)),g=s.target,w=s.riskScoring,k=!0,d=s.threshold,console.log(e.green(`
|
|
5
|
-
Starting coverage analysis...
|
|
6
|
-
`))}catch(s){console.error(e.red(`
|
|
7
|
-
Wizard error:`),s),await t(1)}if(await h())try{console.log(e.blue(`
|
|
8
|
-
Analyzing coverage for ${g}...
|
|
9
|
-
`));let s=await p.kernel.getDomainAPIAsync("coverage-analysis");if(!s){console.log(e.red("Coverage analysis domain not available"));return}let v=(await import("path")).resolve(g),S=I(v,{includeTests:!1});if(S.length===0){console.log(e.yellow("No source files found"));return}console.log(e.gray(` Analyzing ${S.length} files...
|
|
10
|
-
`));let c=V(S);c.instrumented?console.log(e.green(` Using instrumented coverage data (V8/istanbul)
|
|
11
|
-
`)):(console.log(e.yellow(" No instrumented coverage found \u2014 using heuristic estimation")),console.log(e.gray(` Run tests with coverage first: npm test -- --coverage
|
|
12
|
-
`)));let m=await s.analyze({coverageData:c,threshold:d,includeFileDetails:!0}),f=i.format,a;if(m.success&&m.value){let o=m.value;if(a={summary:o.summary,meetsThreshold:o.meetsThreshold,threshold:d,recommendations:o.recommendations},f==="text"){let n=r=>typeof r=="number"?r.toFixed(1):r;if(console.log(e.cyan(" Coverage Summary:")),console.log(` Lines: ${z(o.summary.line)(n(o.summary.line)+"%")}`),console.log(` Branches: ${z(o.summary.branch)(n(o.summary.branch)+"%")}`),console.log(` Functions: ${z(o.summary.function)(n(o.summary.function)+"%")}`),console.log(` Statements: ${z(o.summary.statement)(n(o.summary.statement)+"%")}`),console.log(`
|
|
13
|
-
Threshold: ${o.meetsThreshold?e.green(`Met (${d}%)`):e.red(`Not met (${d}%)`)}`),o.recommendations.length>0){console.log(e.cyan(`
|
|
14
|
-
Recommendations:`));for(let r of o.recommendations)console.log(e.gray(` - ${r}`))}}}if(k){console.log(e.cyan(`
|
|
15
|
-
Coverage Gaps:`));let o=await s.detectGaps({coverageData:c,minCoverage:d,prioritize:w?"risk":"size"});if(o.success&&o.value){let n=o.value;a&&(a.gaps=n.gaps.map(r=>({file:r.file.replace(process.cwd()+"/",""),lines:r.lines,riskScore:r.riskScore,severity:r.severity}))),console.log(e.gray(` Total uncovered lines: ${n.totalUncoveredLines}`)),console.log(e.gray(` Estimated effort: ${n.estimatedEffort} hours
|
|
16
|
-
`));for(let r of n.gaps.slice(0,8)){let l=r.severity==="high"?e.red:r.severity==="medium"?e.yellow:e.gray,C=r.file.replace(process.cwd()+"/","");console.log(` ${l(`[${r.severity}]`)} ${e.white(C)}`),console.log(e.gray(` ${r.lines.length} uncovered lines, Risk: ${(r.riskScore*100).toFixed(0)}%`))}n.gaps.length>8&&console.log(e.gray(` ... and ${n.gaps.length-8} more gaps`))}}if(i.ghost||k){console.log(e.cyan(`
|
|
17
|
-
Ghost Intent Coverage (ADR-059):`));try{let o=c.files.map(r=>r.path),n=await s.analyzeGhostCoverage(o,g);if(n.success&&n.value){let r=n.value;console.log(e.gray(` Phantom gaps detected: ${r.gaps.length}`)),console.log(e.gray(` Ghost score: ${(r.totalGhostScore*100).toFixed(1)}%`)),console.log(e.gray(` Coverage completeness: ${(r.coverageCompleteness*100).toFixed(1)}%
|
|
18
|
-
`));for(let l of r.gaps.slice(0,8)){let C=l.severity==="critical"?e.red:l.severity==="high"?e.red:l.severity==="medium"?e.yellow:e.gray;console.log(` ${C(`[${l.severity}]`)} ${e.white(l.category)}`),console.log(e.gray(` ${l.description}`))}r.gaps.length>8&&console.log(e.gray(` ... and ${r.gaps.length-8} more phantom gaps`))}else console.log(e.dim(" Ghost analysis not available (requires HNSW index)"))}catch{console.log(e.dim(" Ghost analysis skipped (analyzer not initialized)"))}}if(w){console.log(e.cyan(`
|
|
19
|
-
Risk Analysis:`));let o=[...c.files].sort((n,r)=>n.lines.covered/n.lines.total-r.lines.covered/r.lines.total).slice(0,5);for(let n of o){let r=await s.calculateRisk({file:n.path,uncoveredLines:n.uncoveredLines});if(r.success&&r.value){let l=r.value,C=l.riskLevel==="high"?e.red:l.riskLevel==="medium"?e.yellow:e.green,A=n.path.replace(process.cwd()+"/","");console.log(` ${C(`[${l.riskLevel}]`)} ${e.white(A)}`),console.log(e.gray(` Risk: ${(l.overallRisk*100).toFixed(0)}%, Coverage: ${Math.round(n.lines.covered/n.lines.total*100)}%`))}}}if(a&&f==="json"?P(W(a),i.output):a&&f==="markdown"?P(G(a),i.output):f==="text"&&console.log(e.green(`
|
|
20
|
-
Coverage analysis complete
|
|
21
|
-
`)),a&&!a.meetsThreshold&&await t(1),a){let o=(a.summary.line+a.summary.branch+a.summary.function+a.summary.statement)/4;o<d+5&&o>=d&&await t(2)}await t(0)}catch(s){console.error(e.red(`
|
|
22
|
-
Failed:`),s),await t(1)}});return b.command("gaps").description("Enumerate unhandled branches in source files").argument("<file>","Source file to analyze").option("--mechanical","Exhaustive mode: report all branches without filtering").option("--json","Output as JSON").option("--markdown","Output as markdown report").action(async(y,i)=>{try{let{readFileSync:g,existsSync:w}=await import("fs"),k=await import("path"),{enumerateBranches:d,formatBranchReport:s,formatBranchJSON:T}=await import("./branch-enumerator-PB7QWXDP.js"),v=k.resolve(y);w(v)||(console.error(e.red(`
|
|
23
|
-
File not found: ${v}
|
|
24
|
-
`)),await t(1));let S=g(v,"utf-8"),c=d(S,v);if(i.json)console.log(T(c));else if(i.markdown)console.log(s(c));else{if(console.log(`
|
|
25
|
-
${e.cyan("Branch Enumeration:")} ${e.white(y)}`),console.log(e.gray(`Found ${c.unhandledCount} unhandled branches (${c.duration}ms)
|
|
26
|
-
`)),c.branches.length>0){console.log(e.dim("Line | Severity | Construct | Trigger")),console.log(e.dim("-----|----------|---------------------------|--------"));for(let m of c.branches){let f=m.severity==="high"?e.red:m.severity==="medium"?e.yellow:e.gray;console.log(`${String(m.line).padStart(4)} | ${f(m.severity.padEnd(8))} | ${m.construct.padEnd(25)} | ${m.triggerCondition}`)}}else console.log(e.green("No unhandled branches detected."));console.log("")}await t(0)}catch(g){console.error(e.red(`
|
|
27
|
-
Branch enumeration failed:`),g),await t(1)}}),b}export{te as createCoverageCommand};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a,b}from"./chunk-EWUFVWRT.js";import"./chunk-YUWUFYHK.js";import"./chunk-PEA4DVXW.js";import"./chunk-54XTJBHV.js";import"./chunk-5H7MR6HP.js";export{a as CrossDomainEventRouter,b as createCrossDomainRouter};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u}from"./chunk-A4OPQJ4A.js";import"./chunk-5SS2Z7JC.js";import"./chunk-TVQPYP2Z.js";import"./chunk-6HO3XRXE.js";import"./chunk-XHCCH7UC.js";import"./chunk-SIUUAKCE.js";import"./chunk-54ITMOFM.js";import"./chunk-PCWZCXBD.js";import"./chunk-YZ2AGC7O.js";import"./chunk-6TMUZGM2.js";import"./chunk-DF4Y3HPO.js";import"./chunk-FDK2GF4G.js";import"./chunk-BZWZTGMF.js";import"./chunk-UK5HY6LC.js";import"./chunk-4GLR2S2M.js";import"./chunk-WEDVLKRB.js";import"./chunk-ISASRHZP.js";import"./chunk-PJAXWCFC.js";import"./chunk-2ICC4H6K.js";import"./chunk-BY5PLEPZ.js";import"./chunk-FRBCX46J.js";import"./chunk-S5D3HCGN.js";import"./chunk-6HTO4BLV.js";import"./chunk-HCDTLV5J.js";import"./chunk-RJ5CZ7B6.js";import"./chunk-W6TJXK5Y.js";import"./chunk-NIJMLEAX.js";import"./chunk-OG4KHX7S.js";import"./chunk-RB2SL5GD.js";import"./chunk-DVE5SM5G.js";import"./chunk-33IUCP34.js";import"./chunk-PEA4DVXW.js";import"./chunk-54XTJBHV.js";import"./chunk-WW6WUMS7.js";import"./chunk-5XXLWJU7.js";import"./chunk-LXYTC62V.js";import"./chunk-Z56QTRRB.js";import"./chunk-JL3TI43V.js";import"./chunk-K2VUYRMG.js";import"./chunk-2DRMTRBM.js";import"./chunk-O7TMY4GS.js";import"./chunk-5B5D5KCV.js";import"./chunk-WI5AEB7Q.js";import"./chunk-WO4NSPLX.js";import"./chunk-X5S5UEM6.js";import"./chunk-5H7MR6HP.js";export{t as BUILT_IN_STRATEGIES,e as ConceptGraph,j as DEFAULT_ACTIVATION_CONFIG,d as DEFAULT_CONCEPT_GRAPH_CONFIG,p as DEFAULT_DREAM_CONFIG,a as DEFAULT_DREAM_SCHEDULER_CONFIG,l as DEFAULT_INSIGHT_CONFIG,n as DEFAULT_VALIDATION_THRESHOLDS,q as DreamEngine,b as DreamScheduler,i as HISTORY_TRIM_TARGET_RATIO,m as InsightGenerator,g as MAX_ACTIVATION_HISTORY_ENTRIES,h as MAX_COACTIVATION_ENTRIES,o as RVCOWBranchManager,u as SpeculativeDreamer,k as SpreadingActivation,f as createConceptGraph,r as createDreamEngine,c as createDreamScheduler,s as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{b as a}from"./chunk-73PCVMGA.js";import"./chunk-3BDDOFYW.js";import"./chunk-DFJGXXCL.js";import"./chunk-VAXQUD5G.js";import"./chunk-6TMUZGM2.js";import"./chunk-BY5PLEPZ.js";import"./chunk-FRBCX46J.js";import"./chunk-S5D3HCGN.js";import"./chunk-6HTO4BLV.js";import"./chunk-HCDTLV5J.js";import"./chunk-RJ5CZ7B6.js";import"./chunk-W6TJXK5Y.js";import"./chunk-NIJMLEAX.js";import"./chunk-OG4KHX7S.js";import"./chunk-RB2SL5GD.js";import"./chunk-33IUCP34.js";import"./chunk-WW6WUMS7.js";import"./chunk-5XXLWJU7.js";import"./chunk-LXYTC62V.js";import"./chunk-Z56QTRRB.js";import"./chunk-JL3TI43V.js";import"./chunk-K2VUYRMG.js";import"./chunk-O7TMY4GS.js";import"./chunk-WO4NSPLX.js";import"./chunk-X5S5UEM6.js";import"./chunk-5H7MR6HP.js";export{a as HeartbeatSchedulerWorker};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a,b}from"./chunk-OG4KHX7S.js";import"./chunk-RB2SL5GD.js";import"./chunk-K2VUYRMG.js";import"./chunk-5H7MR6HP.js";b();export{a as HnswAdapter};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a,b,c,d}from"./chunk-2534PXIV.js";import"./chunk-W6TJXK5Y.js";import"./chunk-OG4KHX7S.js";import"./chunk-RB2SL5GD.js";import"./chunk-5XXLWJU7.js";import"./chunk-LXYTC62V.js";import"./chunk-Z56QTRRB.js";import"./chunk-K2VUYRMG.js";import"./chunk-5H7MR6HP.js";export{a as DEFAULT_HNSW_CONFIG,b as HNSWIndex,d as benchmarkHNSW,c as createHNSWIndex};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a,b}from"./chunk-RG67RZIX.js";import"./chunk-BY5PLEPZ.js";import"./chunk-FRBCX46J.js";import"./chunk-S5D3HCGN.js";import"./chunk-6HTO4BLV.js";import"./chunk-HCDTLV5J.js";import"./chunk-RJ5CZ7B6.js";import"./chunk-W6TJXK5Y.js";import"./chunk-NIJMLEAX.js";import"./chunk-OG4KHX7S.js";import"./chunk-RB2SL5GD.js";import"./chunk-33IUCP34.js";import"./chunk-WW6WUMS7.js";import"./chunk-5XXLWJU7.js";import"./chunk-LXYTC62V.js";import"./chunk-Z56QTRRB.js";import"./chunk-JL3TI43V.js";import"./chunk-K2VUYRMG.js";import"./chunk-O7TMY4GS.js";import"./chunk-WO4NSPLX.js";import"./chunk-X5S5UEM6.js";import"./chunk-5H7MR6HP.js";export{a as HybridMemoryBackend,b as createKernelMemoryBackend};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.4");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-LY53L6NH.js";import"./chunk-DAYMT7TH.js";import"./chunk-GJVRQBLI.js";import"./chunk-SOSJFEFB.js";import"./chunk-ASKPTGUU.js";import"./chunk-S5D3HCGN.js";import"./chunk-PEA4DVXW.js";import"./chunk-54XTJBHV.js";import"./chunk-5XXLWJU7.js";import"./chunk-LXYTC62V.js";import"./chunk-Z56QTRRB.js";import"./chunk-JL3TI43V.js";import"./chunk-5H7MR6HP.js";export{a as ImpactAnalyzerService};
|