agentic-qe 3.15.5 → 3.15.7
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/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
- package/.claude/skills/qe-court/evals/qe-court.yaml +3 -2
- package/.claude/skills/qe-quality-assessment/schemas/output.json +12 -2
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +262 -0
- package/README.md +2 -0
- package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
- package/assets/skills/qe-court/evals/qe-court.yaml +3 -2
- package/assets/skills/qe-quality-assessment/schemas/output.json +12 -2
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +8 -6
- package/dist/cli/chunks/adapter-PEOUNYXJ.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-CCTTGCQS.js → agent-booster-wasm-OS5G7KMQ.js} +2 -2
- package/dist/cli/chunks/{agent-handler-DHYUF3NX.js → agent-handler-PI4I7PME.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-642W7CYX.js → agent-memory-branch-J7TXHX4U.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-DHKZI5RX.js +2 -0
- package/dist/cli/chunks/{arena-MUCC7UUN.js → arena-FXESDCFR.js} +4 -4
- package/dist/cli/chunks/{arena-NW2JVAFY.js → arena-OWUGXKNT.js} +2 -2
- package/dist/cli/chunks/{audit-VKQTZJAA.js → audit-EPAWLYIZ.js} +3 -3
- package/dist/cli/chunks/base-QZWK3D5P.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-7ZUFVWLQ.js → better-sqlite3-IYVR5EQY.js} +2 -2
- package/dist/cli/chunks/{brain-handler-7LKAWSBI.js → brain-handler-3W2E6TC6.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-HUNXJKM4.js → branch-enumerator-HU7VACJ4.js} +2 -2
- package/dist/cli/chunks/{browser-ZSZEYUDP.js → browser-72XOR6E2.js} +2 -2
- package/dist/cli/chunks/browser-workflow-ITPX72RX.js +2 -0
- package/dist/cli/chunks/{chunk-PVAE65B4.js → chunk-2423JAA5.js} +1 -1
- package/dist/cli/chunks/{chunk-VLOIEVER.js → chunk-24CENUT4.js} +3 -3
- package/dist/cli/chunks/chunk-2AYBYXOA.js +4 -0
- package/dist/cli/chunks/{chunk-FWYJ6UDX.js → chunk-2E3XWKEU.js} +2 -2
- package/dist/cli/chunks/{chunk-L375O3CZ.js → chunk-2RJYA6WK.js} +2 -2
- package/dist/cli/chunks/{chunk-SDWMLT7B.js → chunk-2YVJ5OUL.js} +5 -5
- package/dist/cli/chunks/{chunk-WN55MNZ2.js → chunk-34JLY3U6.js} +2 -2
- package/dist/cli/chunks/{chunk-6ZIDZ4TJ.js → chunk-3JD2USUH.js} +2 -2
- package/dist/cli/chunks/{chunk-5BOZCMXZ.js → chunk-3RM46XFP.js} +1 -1
- package/dist/cli/chunks/{chunk-UE22ODHN.js → chunk-44DPYNPE.js} +1 -1
- package/dist/cli/chunks/{chunk-AUZXRFOX.js → chunk-4DIZ5BT6.js} +2 -2
- package/dist/cli/chunks/{chunk-RUSLEOMC.js → chunk-4G2VNW4C.js} +2 -2
- package/dist/cli/chunks/{chunk-VML4SG3X.js → chunk-56ZKQYZY.js} +3 -3
- package/dist/cli/chunks/{chunk-FHUJCVT3.js → chunk-5KCBX225.js} +2 -2
- package/dist/cli/chunks/chunk-5KS7HA37.js +2 -0
- package/dist/cli/chunks/{chunk-IJ2EXSMO.js → chunk-5PBRBS7D.js} +2 -2
- package/dist/cli/chunks/chunk-5Q22XPTH.js +2 -0
- package/dist/cli/chunks/{chunk-PDPEMBFV.js → chunk-634D2ENF.js} +2 -2
- package/dist/cli/chunks/{chunk-BYXNHGQC.js → chunk-6AYRAOCA.js} +2 -2
- package/dist/cli/chunks/{chunk-ORTBRO7F.js → chunk-6BO3WCK7.js} +2 -2
- package/dist/cli/chunks/{chunk-6LG5UEQE.js → chunk-6FEQ73BF.js} +2 -2
- package/dist/cli/chunks/{chunk-JYY7AYGA.js → chunk-6JT73S5B.js} +1 -1
- package/dist/cli/chunks/{chunk-LNO5IWGH.js → chunk-6OS7HREG.js} +1 -1
- package/dist/cli/chunks/{chunk-XNEEYXR2.js → chunk-6PKCQXEW.js} +2 -2
- package/dist/cli/chunks/{chunk-KHCALIFP.js → chunk-7EX4DEQR.js} +2 -2
- package/dist/cli/chunks/chunk-7UCVYYWL.js +3 -0
- package/dist/cli/chunks/chunk-AAA4SHEG.js +2 -0
- package/dist/cli/chunks/{chunk-DTJODGCE.js → chunk-AXO7OOOA.js} +2 -2
- package/dist/cli/chunks/{chunk-ZT3GUYM5.js → chunk-B7M323VL.js} +2 -2
- package/dist/cli/chunks/{chunk-L6SVCNXK.js → chunk-BB7OLQKO.js} +1 -1
- package/dist/cli/chunks/{chunk-6UYN5PHA.js → chunk-BTIBXGVQ.js} +4 -4
- package/dist/cli/chunks/chunk-BTYKGVJ5.js +2 -0
- package/dist/cli/chunks/{chunk-6JFGB2JB.js → chunk-C2CUPJGR.js} +1 -1
- package/dist/cli/chunks/{chunk-EAYQCBXL.js → chunk-C2MDBBFF.js} +3 -3
- package/dist/cli/chunks/{chunk-3AYYGR6W.js → chunk-CG5DZCOZ.js} +1 -1
- package/dist/cli/chunks/chunk-CIFWOMNX.js +2 -0
- package/dist/cli/chunks/{chunk-Y2WMPEUP.js → chunk-CWPRU7ZI.js} +2 -2
- package/dist/cli/chunks/{chunk-XNHB6TLC.js → chunk-CXTJ47QS.js} +2 -2
- package/dist/cli/chunks/{chunk-4PT5KNXL.js → chunk-DCJW2DPL.js} +4 -4
- package/dist/cli/chunks/{chunk-VCKDVOPD.js → chunk-DGK6GQMO.js} +2 -2
- package/dist/cli/chunks/{chunk-47GEI2LT.js → chunk-DVPGBDBP.js} +3 -3
- package/dist/cli/chunks/chunk-EB2PP6X2.js +2 -0
- package/dist/cli/chunks/{chunk-CXOXUBYU.js → chunk-ECSLJJOQ.js} +1 -1
- package/dist/cli/chunks/{chunk-A2WOQO2N.js → chunk-ED32XJ5R.js} +2 -2
- package/dist/cli/chunks/{chunk-35MDATQE.js → chunk-EDU72RTW.js} +1 -1
- package/dist/cli/chunks/{chunk-PCCIZFD7.js → chunk-EL75G2A3.js} +1 -1
- package/dist/cli/chunks/{chunk-4UXPDV7E.js → chunk-EV2BYY6T.js} +1 -1
- package/dist/cli/chunks/{chunk-3YASZPLO.js → chunk-F62EKVVC.js} +2 -2
- package/dist/cli/chunks/{chunk-AQN5EDBM.js → chunk-FTTFJ7SJ.js} +1 -1
- package/dist/cli/chunks/chunk-FVBFASOD.js +2 -0
- package/dist/cli/chunks/{chunk-QXY3IRBW.js → chunk-G762PEFO.js} +26 -26
- package/dist/cli/chunks/{chunk-A5J4XJS6.js → chunk-G7YTZTGU.js} +1 -1
- package/dist/cli/chunks/{chunk-YINFES3E.js → chunk-GY2SAIXP.js} +2 -2
- package/dist/cli/chunks/chunk-H4WHDFB5.js +4 -0
- package/dist/cli/chunks/chunk-HLZATDD2.js +2 -0
- package/dist/cli/chunks/{chunk-7EZLOC4K.js → chunk-HPG7354V.js} +2 -2
- package/dist/cli/chunks/{chunk-HLFDC4SF.js → chunk-HSDOOFV7.js} +1 -1
- package/dist/cli/chunks/{chunk-MQGEZA2A.js → chunk-HTWIGQL4.js} +2 -2
- package/dist/cli/chunks/{chunk-HBYQYGXP.js → chunk-HXBAQKMH.js} +2 -2
- package/dist/cli/chunks/chunk-HZFT3P5B.js +2 -0
- package/dist/cli/chunks/{chunk-MS3Z2CP5.js → chunk-I7H4IP7T.js} +2 -2
- package/dist/cli/chunks/{chunk-IHFUEPZH.js → chunk-IARSGAG7.js} +2 -2
- package/dist/cli/chunks/{chunk-ZTC5FBL6.js → chunk-IC2WSSD5.js} +8 -8
- package/dist/cli/chunks/{chunk-GKPRECLL.js → chunk-ICPALF4Q.js} +2 -2
- package/dist/cli/chunks/{chunk-FQKEZVN6.js → chunk-IWQQIXHO.js} +2 -2
- package/dist/cli/chunks/{chunk-DWZI3IVB.js → chunk-IYQ7XNE5.js} +2 -2
- package/dist/cli/chunks/{chunk-ZLBBX24Q.js → chunk-J26GADQE.js} +418 -412
- package/dist/cli/chunks/{chunk-NMJVG22Z.js → chunk-J43DV3ME.js} +1 -1
- package/dist/cli/chunks/{chunk-EUEHBERE.js → chunk-JFPXCQNP.js} +1 -1
- package/dist/cli/chunks/{chunk-3YNP33GB.js → chunk-JK6B3ULP.js} +2 -2
- package/dist/cli/chunks/{chunk-FBEXG4HD.js → chunk-JPHDMHFG.js} +2 -2
- package/dist/cli/chunks/{chunk-U6OVPMQX.js → chunk-JVYPXW6Y.js} +2 -2
- package/dist/cli/chunks/{chunk-X52TMBHU.js → chunk-JY4AIEZ7.js} +1 -1
- package/dist/cli/chunks/{chunk-MNQ36MAF.js → chunk-JY4WLN3K.js} +2 -2
- package/dist/cli/chunks/{chunk-E4VIVMDL.js → chunk-JYXOFN3E.js} +2 -2
- package/dist/cli/chunks/{chunk-CR2JUANW.js → chunk-K7W55B7Q.js} +3 -3
- package/dist/cli/chunks/{chunk-WLIYWBQR.js → chunk-KPOPBUUJ.js} +2 -2
- package/dist/cli/chunks/{chunk-DXVZBJE4.js → chunk-LDXQRNTT.js} +1 -1
- package/dist/cli/chunks/{chunk-W3ZGNNDV.js → chunk-LDZWIV2O.js} +1 -1
- package/dist/cli/chunks/{chunk-VRJPH3LG.js → chunk-LGBN7TKC.js} +2 -2
- package/dist/cli/chunks/{chunk-RUJLVJDE.js → chunk-LMEU64TR.js} +2 -2
- package/dist/cli/chunks/{chunk-JI77KJP7.js → chunk-LP4AS2E4.js} +1 -1
- package/dist/cli/chunks/{chunk-QPV3OKX2.js → chunk-LQOVA4YX.js} +2 -2
- package/dist/cli/chunks/{chunk-NLDFNAOS.js → chunk-LVEX4GID.js} +2 -2
- package/dist/cli/chunks/{chunk-U4TV75AC.js → chunk-M63QB466.js} +2 -2
- package/dist/cli/chunks/{chunk-SAPIRK2G.js → chunk-MDC4G323.js} +1 -1
- package/dist/cli/chunks/chunk-MHZPC4HJ.js +2 -0
- package/dist/cli/chunks/{chunk-WR64BKUE.js → chunk-MJJC6HUK.js} +1 -1
- package/dist/cli/chunks/{chunk-Y7GPLOXB.js → chunk-MKFQNCXI.js} +2 -2
- package/dist/cli/chunks/{chunk-BZFT4QDQ.js → chunk-MMXG3LL6.js} +2 -2
- package/dist/cli/chunks/{chunk-HGBJ2QQ4.js → chunk-MNCF643K.js} +2 -2
- package/dist/cli/chunks/{chunk-XIE7OHML.js → chunk-MNZFEIE5.js} +1 -1
- package/dist/cli/chunks/{chunk-FE3AIZI6.js → chunk-MQ6OF6DU.js} +1 -1
- package/dist/cli/chunks/{chunk-3QD7U3FY.js → chunk-MRHM4COP.js} +2 -2
- package/dist/cli/chunks/{chunk-663ZFPUL.js → chunk-N4PMPSJJ.js} +2 -2
- package/dist/cli/chunks/{chunk-DL5JENWD.js → chunk-NZQPP533.js} +3 -3
- package/dist/cli/chunks/{chunk-4XSCZVON.js → chunk-OA4GR3EZ.js} +2 -2
- package/dist/cli/chunks/{chunk-IJOFZBXD.js → chunk-OJEZNLB6.js} +2 -2
- package/dist/cli/chunks/{chunk-OU4ZAWCC.js → chunk-ONVALAZN.js} +2 -2
- package/dist/cli/chunks/{chunk-A337MD3C.js → chunk-PEKDSJBC.js} +2 -2
- package/dist/cli/chunks/{chunk-D3G2NN7F.js → chunk-PG64YV6C.js} +66 -65
- package/dist/cli/chunks/{chunk-VYDNLQJN.js → chunk-PQV7E7XH.js} +2 -2
- package/dist/cli/chunks/chunk-PTK66HEY.js +2 -0
- package/dist/cli/chunks/{chunk-LRASYSGV.js → chunk-PUECC4WI.js} +2 -2
- package/dist/cli/chunks/{chunk-3OAQPN2N.js → chunk-PXZKPUW6.js} +2 -2
- package/dist/cli/chunks/chunk-PYHYOKYT.js +2 -0
- package/dist/cli/chunks/{chunk-WT3JC4A6.js → chunk-PZG3542B.js} +2 -2
- package/dist/cli/chunks/{chunk-RMJ7PJOS.js → chunk-Q2T5FXEA.js} +2 -2
- package/dist/cli/chunks/chunk-QJE6ZW2X.js +6 -0
- package/dist/cli/chunks/{chunk-2XYTS2WY.js → chunk-QNQSM2OG.js} +2 -2
- package/dist/cli/chunks/{chunk-EVCFUYYK.js → chunk-QQT6QENQ.js} +9 -9
- package/dist/cli/chunks/{chunk-VH3EB6ZG.js → chunk-QVG4ZDXX.js} +3 -3
- package/dist/cli/chunks/chunk-QWLTHFZW.js +16 -0
- package/dist/cli/chunks/{chunk-GGDKOJVF.js → chunk-RCYLCA7E.js} +10 -6
- package/dist/cli/chunks/{chunk-BMWAWZAN.js → chunk-REEIFA6A.js} +2 -2
- package/dist/cli/chunks/{chunk-Y2E3IJ53.js → chunk-RNYX4CPI.js} +2 -2
- package/dist/cli/chunks/{chunk-BY646JOM.js → chunk-RORZ5O5Z.js} +2 -2
- package/dist/cli/chunks/{chunk-JNMUVBAJ.js → chunk-RRPYWBFX.js} +2 -2
- package/dist/cli/chunks/{chunk-XQRE2HWM.js → chunk-RXAFLK34.js} +2 -2
- package/dist/cli/chunks/{chunk-UXZEVIFX.js → chunk-SQHLC6I5.js} +1 -1
- package/dist/cli/chunks/{chunk-DPV33C77.js → chunk-SSP2B2WR.js} +2 -2
- package/dist/cli/chunks/chunk-SX2YSHE7.js +115 -0
- package/dist/cli/chunks/chunk-T3ZDVU6F.js +5 -0
- package/dist/cli/chunks/{chunk-JCC7QEKZ.js → chunk-T6W5APYP.js} +1 -1
- package/dist/cli/chunks/{chunk-DEGWCUMY.js → chunk-TU4LIIOP.js} +2 -2
- package/dist/cli/chunks/{chunk-CQMHDAJS.js → chunk-UBYCR3O4.js} +2 -2
- package/dist/cli/chunks/{chunk-PHP4UJYP.js → chunk-UCLN6AME.js} +1 -1
- package/dist/cli/chunks/{chunk-HIUNCO2W.js → chunk-UIYKR2SA.js} +2 -2
- package/dist/cli/chunks/{chunk-ONCH5AXU.js → chunk-UUHIEM2M.js} +18 -18
- package/dist/cli/chunks/{chunk-CFPR24YK.js → chunk-UY3REQOK.js} +2 -2
- package/dist/cli/chunks/{chunk-FNAYDITO.js → chunk-V2SAEMZY.js} +1 -1
- package/dist/cli/chunks/{chunk-JANLATHN.js → chunk-V5NGBQAQ.js} +2 -2
- package/dist/cli/chunks/{chunk-644DFAGS.js → chunk-VCA6YYII.js} +1 -1
- package/dist/cli/chunks/chunk-VJRZFWR5.js +2 -0
- package/dist/cli/chunks/{chunk-7BIYJRQJ.js → chunk-VKPKYMCT.js} +2 -2
- package/dist/cli/chunks/{chunk-2KWI3MT3.js → chunk-VNW5Q2CX.js} +2 -2
- package/dist/cli/chunks/chunk-VUFRTGML.js +3 -0
- package/dist/cli/chunks/{chunk-PHAQWAEV.js → chunk-W4X2VTIY.js} +2 -2
- package/dist/cli/chunks/{chunk-PURHGLEC.js → chunk-WTLIEBDH.js} +1 -1
- package/dist/cli/chunks/{chunk-3SH23PS3.js → chunk-WUV5RZUI.js} +2 -2
- package/dist/cli/chunks/{chunk-OGYWWZU7.js → chunk-WXI2STKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-OW42F2TX.js → chunk-XEWXYGJI.js} +2 -2
- package/dist/cli/chunks/{chunk-DPYDUKVZ.js → chunk-XNSQZ3O7.js} +2 -2
- package/dist/cli/chunks/{chunk-B2UHTA4Q.js → chunk-XTJMY3KS.js} +1 -1
- package/dist/cli/chunks/{chunk-NF6AFIAX.js → chunk-XXAVQACL.js} +1 -1
- package/dist/cli/chunks/{chunk-V7GNUVYI.js → chunk-Y4SAWE45.js} +1 -1
- package/dist/cli/chunks/{chunk-WC47GICZ.js → chunk-Y6A46M3B.js} +2 -2
- package/dist/cli/chunks/{chunk-3DTEQHFB.js → chunk-YDZJWDR6.js} +3 -3
- package/dist/cli/chunks/{chunk-KJ3KBP24.js → chunk-YFOBQSOW.js} +2 -2
- package/dist/cli/chunks/{chunk-MB4VFAJC.js → chunk-YK3NOC2R.js} +2 -2
- package/dist/cli/chunks/{chunk-GRIPCYW5.js → chunk-YUC7RJGR.js} +1 -1
- package/dist/cli/chunks/{chunk-HPLMX62I.js → chunk-Z3VJLWRR.js} +2 -2
- package/dist/cli/chunks/{chunk-EOR3RECZ.js → chunk-ZLVQSEZK.js} +2 -2
- package/dist/cli/chunks/{chunk-4AZP7ZCW.js → chunk-ZRLNACPY.js} +2 -2
- package/dist/cli/chunks/{chunk-OQDC7GCM.js → chunk-ZTMZFF25.js} +2 -2
- package/dist/cli/chunks/chunk-ZUMDDMDE.js +3 -0
- package/dist/cli/chunks/ci-5HEXJZ2C.js +81 -0
- package/dist/cli/chunks/{ci-config-XDDZOOEI.js → ci-config-WU4NPDAM.js} +2 -2
- package/dist/cli/chunks/{ci-output-7ZUQI4U6.js → ci-output-BJQVXX5E.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-ALXKCFAL.js → circuit-breaker-3BMGTQCB.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-RL7K2NI2.js → claude-flow-setup-GVDGJWMU.js} +2 -2
- package/dist/cli/chunks/client-S7GNYTZ5.js +2 -0
- package/dist/cli/chunks/{cline-installer-2Z2QQKC3.js → cline-installer-V4MRGWVA.js} +2 -2
- package/dist/cli/chunks/{code-QSZTDINQ.js → code-A3TGQPEO.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-5CGR5D3Y.js → code-index-extractor-YJQSYWD3.js} +2 -2
- package/dist/cli/chunks/{codex-installer-7JLSEDE5.js → codex-installer-7N7UQPAH.js} +2 -2
- package/dist/cli/chunks/{completions-U4NBSXEB.js → completions-PPGVYLZS.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-WYZD2YSY.js → complexity-analyzer-XZTFLYV5.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-UPXINJFT.js → continuedev-installer-Z5I57RAH.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-WIVYQRIF.js → copilot-installer-F5YZ6BHB.js} +2 -2
- package/dist/cli/chunks/core-handlers-CUEPOQIO.js +2 -0
- package/dist/cli/chunks/{cost-tracker-RIN4JDDM.js → cost-tracker-GO33ZQAP.js} +2 -2
- package/dist/cli/chunks/coverage-GSHKLY74.js +49 -0
- package/dist/cli/chunks/cross-domain-router-CXN5QFEV.js +2 -0
- package/dist/cli/chunks/{cursor-installer-POM7NGCC.js → cursor-installer-JJ7IVJZB.js} +2 -2
- package/dist/cli/chunks/daemon-3DQCKRYO.js +10 -0
- package/dist/cli/chunks/{daemon-HFGKQ6LB.js → daemon-IRL7QRNE.js} +5 -5
- package/dist/cli/chunks/{dag-attention-scheduler-HJXM7Q5P.js → dag-attention-scheduler-ORXSUHPA.js} +2 -2
- package/dist/cli/chunks/{detect-XKQGLZYN.js → detect-RHU62KRI.js} +2 -2
- package/dist/cli/chunks/{dist-node-SSKB53QL.js → dist-node-3VKV4Z6C.js} +2 -2
- package/dist/cli/chunks/{domain-handler-6BNDHATU.js → domain-handler-SFIML4FK.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-DOX54YE3.js → domain-plugins-CJ4FA3OC.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-FW4ZX3Z7.js → domain-transfer-BCRKPCAA.js} +2 -2
- package/dist/cli/chunks/dream-5AUNJW24.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-VL3HFLPV.js +3 -0
- package/dist/cli/chunks/{eval-K7E4XXBS.js → eval-GGKRI4P5.js} +2 -2
- package/dist/cli/chunks/experience-capture-middleware-F72TIRQY.js +40 -0
- package/dist/cli/chunks/{fast-paths-5JXXTYAG.js → fast-paths-7KOOF3MA.js} +2 -2
- package/dist/cli/chunks/{feature-flags-2CR3CO23.js → feature-flags-FNHBTHBH.js} +2 -2
- package/dist/cli/chunks/{feature-flags-RB72LHOJ.js → feature-flags-IOZEWWFU.js} +2 -2
- package/dist/cli/chunks/file-discovery-AYWF357I.js +2 -0
- package/dist/cli/chunks/{fleet-SDU7QEOA.js → fleet-QX5KXTRC.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-AWCFODUV.js → gnn-wrapper-OH2DOQP7.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-A4PJ3NFP.js → heartbeat-handler-W67NXTNE.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-7ZIDVXIP.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-P77OC7FM.js +2 -0
- package/dist/cli/chunks/hnsw-index-3LBOTQAW.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-KRS7SSFM.js → hnsw-legacy-bridge-6MLLOGOE.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-OGGCPKPO.js → hnswlib-node-4UDISJ3G.js} +2 -2
- package/dist/cli/chunks/{hooks-XNRNMUBW.js → hooks-NOQJWQ4P.js} +43 -43
- package/dist/cli/chunks/hybrid-backend-LOM54PDD.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-X35LTXYT.js → hypergraph-engine-2OD3APVP.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-M6THKAG6.js → hypergraph-handler-5AZGMBUM.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-QSDJVBPS.js +2 -0
- package/dist/cli/chunks/init-guard-SMGJ45PW.js +2 -0
- package/dist/cli/chunks/init-handler-5T4MP2NM.js +88 -0
- package/dist/cli/chunks/init-wizard-MK2325JJ.js +2 -0
- package/dist/cli/chunks/kernel-2NJQQ2KT.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-TEPR2ZJD.js → kilocode-installer-RLZYLVQJ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-RUKHGDEE.js → kiro-installer-LFZOC7VD.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-SDISHO62.js +2 -0
- package/dist/cli/chunks/learning-XRPGLUWR.js +122 -0
- package/dist/cli/chunks/{llm-router-7GECMDCP.js → llm-router-OMK5HYPH.js} +4 -4
- package/dist/cli/chunks/llm-router-service-YTCMRBAN.js +2 -0
- package/dist/cli/chunks/{load-NTJ4Y4ZR.js → load-XADC7KCU.js} +2 -2
- package/dist/cli/chunks/load-test-RPKHLBCC.js +2 -0
- package/dist/cli/chunks/{mcp-4335GTTG.js → mcp-PIBKSSVU.js} +2 -2
- package/dist/cli/chunks/{memory-HYC4M4XS.js → memory-AP7EZERS.js} +5 -5
- package/dist/cli/chunks/memory-backend-BZXFO4JZ.js +2 -0
- package/dist/cli/chunks/memory-handlers-MOFDNB6E.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-T7FYKM6T.js → multi-model-executor-7JJ2FZ33.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-3USXVT5M.js → opencode-installer-ZZZ6EBYJ.js} +2 -2
- package/dist/cli/chunks/orchestrator-2H2YKSGJ.js +452 -0
- package/dist/cli/chunks/pattern-null-store-4PRPIOR6.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-CMZLPX2K.js → pattern-usage-recorder-7MJJWC2Z.js} +2 -2
- package/dist/cli/chunks/{pipeline-BTRZOVSL.js → pipeline-LIE5BWQY.js} +2 -2
- package/dist/cli/chunks/{platform-2MCRKC25.js → platform-SMYUNLGX.js} +2 -2
- package/dist/cli/chunks/plugin-LJDIXQNT.js +27 -0
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-TXFEMBP6.js → prime-radiant-advanced-wasm-RIDNE5D2.js} +2 -2
- package/dist/cli/chunks/project-root-NBIQF63D.js +2 -0
- package/dist/cli/chunks/protocol-executor-BRPGIYWQ.js +2 -0
- package/dist/cli/chunks/{protocol-handler-DZ26OYVZ.js → protocol-handler-YVM66DLI.js} +2 -2
- package/dist/cli/chunks/{prove-QWONEJWX.js → prove-ZBDT52GD.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-GDZACWKW.js +2 -0
- package/dist/cli/chunks/{quality-WFH54FY7.js → quality-DUKXGDDO.js} +2 -2
- package/dist/cli/chunks/{quality-gate-ONJB7XU7.js → quality-gate-SM3RXF4V.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-LDKLBPD5.js +2 -0
- package/dist/cli/chunks/real-embeddings-4QLQZDB5.js +2 -0
- package/dist/cli/chunks/{ref-validation-HW5Y55ZC.js → ref-validation-M3EO32YQ.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-5OABDNZT.js → roocode-installer-S6Q5OLV5.js} +2 -2
- package/dist/cli/chunks/router-H5YSIRH2.js +2 -0
- package/dist/cli/chunks/routing-feedback-5R36TJDH.js +2 -0
- package/dist/cli/chunks/{routing-handler-CVHVOQTC.js → routing-handler-55FMUACP.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-KKDKFGIQ.js → ruvector-commands-QATKAAPK.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-TT2DBQQQ.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-BCLFJKSK.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-RFXFU6JD.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-UXI66OQJ.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-UGUXKIFX.js → rvf-store-integrity-PKDVXQAW.js} +2 -2
- package/dist/cli/chunks/safe-db-MSTD2GDH.js +2 -0
- package/dist/cli/chunks/schedule-KST6KIFD.js +2 -0
- package/dist/cli/chunks/scheduler-FTQS6YK3.js +2 -0
- package/dist/cli/chunks/security-CMRB6WA3.js +18 -0
- package/dist/cli/chunks/shared-rvf-adapter-YHLLNFHF.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-ZSHYG5IA.js → shared-rvf-dual-writer-4BGDVPQ7.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-ZX5QFDMR.js +2 -0
- package/dist/cli/chunks/{standalone-memory-MHZEEYMK.js → standalone-memory-LUHKQAGM.js} +2 -2
- package/dist/cli/chunks/{status-handler-JKXPJ22K.js → status-handler-S6S5PNR7.js} +2 -2
- package/dist/cli/chunks/{structural-health-J4RKCYWF.js → structural-health-PQ7NZAJ4.js} +2 -2
- package/dist/cli/chunks/{sync-PDPORHVN.js → sync-Q6KRQXU6.js} +2 -2
- package/dist/cli/chunks/sync-S744AEJC.js +2 -0
- package/dist/cli/chunks/{task-handler-VERADM44.js → task-handler-GAMGEHUW.js} +2 -2
- package/dist/cli/chunks/{task-handlers-4RUCWUR2.js → task-handlers-6CRDEELN.js} +3 -3
- package/dist/cli/chunks/{test-DMBJFQNL.js → test-FNH67DBK.js} +12 -12
- package/dist/cli/chunks/{test-scheduling-LUPTVGCD.js → test-scheduling-NZA5SHK6.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-CXKG55JD.js +2 -0
- package/dist/cli/chunks/{token-usage-VOA34IKM.js → token-usage-M7WWEDJX.js} +2 -2
- package/dist/cli/chunks/{transformers-GU4TYAN5.js → transformers-2IFMCK6A.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-MZPXAH7C.js → tree-sitter-wasm-parser-NMNA6RJC.js} +2 -2
- package/dist/cli/chunks/{types-K4FLXR2K.js → types-N7FWTOLD.js} +2 -2
- package/dist/cli/chunks/unified-memory-2Z2F446J.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-A4EWYPJQ.js +2 -0
- package/dist/cli/chunks/unified-persistence-Z6N6JZFA.js +2 -0
- package/dist/cli/chunks/{upgrade-M3ATDRMK.js → upgrade-KDB5RGL7.js} +2 -2
- package/dist/cli/chunks/{validate-AAP773B3.js → validate-KMUV5FUA.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-7RGAZX5F.js → validate-swarm-ANZWRCJU.js} +2 -2
- package/dist/cli/chunks/visual-security-GXYZV7KR.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-GQMRHGGI.js → web-tree-sitter-SXXC4NMS.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-HG6HF2GF.js → windsurf-installer-2LWSKMBU.js} +2 -2
- package/dist/cli/chunks/witness-chain-52PEIEGK.js +2 -0
- package/dist/cli/chunks/{witness-chain-WKU3ZIBQ.js → witness-chain-JJMSJFZP.js} +2 -2
- package/dist/cli/chunks/witness-chain-repair-OX7VFW6T.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-Q2KW3QEQ.js → witness-chain-verifier-QLSMXHAZ.js} +2 -2
- package/dist/cli/chunks/witness-key-manager-3DS4L7LE.js +2 -0
- package/dist/cli/chunks/{workflow-CX6SHFBW.js → workflow-ARWAMHD3.js} +28 -28
- package/dist/cli/chunks/workflow-orchestrator-DORMQMG7.js +2 -0
- package/dist/cli/chunks/wrappers-J6KGTUSJ.js +2 -0
- package/dist/cli/commands/ci.js +47 -25
- package/dist/cli/commands/coverage.d.ts +1 -28
- package/dist/cli/commands/coverage.js +63 -134
- package/dist/cli/commands/daemon.js +7 -1
- package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +15 -0
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +54 -2
- package/dist/cli/commands/learning.js +50 -9
- package/dist/cli/commands/security.d.ts +16 -0
- package/dist/cli/commands/security.js +76 -9
- package/dist/cli/commands/test.js +6 -7
- package/dist/cli/commands/workflow.js +9 -5
- package/dist/cli/handlers/init-guard.d.ts +33 -0
- package/dist/cli/handlers/init-guard.js +66 -0
- package/dist/cli/handlers/init-handler.d.ts +3 -0
- package/dist/cli/handlers/init-handler.js +64 -54
- package/dist/cli/handlers/interfaces.js +5 -1
- package/dist/cli/index.js +11 -0
- package/dist/cli/scheduler/persistent-scheduler.d.ts +6 -2
- package/dist/cli/scheduler/persistent-scheduler.js +107 -41
- package/dist/cli/utils/ci-output.d.ts +13 -1
- package/dist/cli/utils/ci-output.js +21 -2
- package/dist/cli/utils/coverage-data.d.ts +3 -0
- package/dist/cli/utils/coverage-data.js +14 -39
- package/dist/cli/utils/coverage-verdict.d.ts +130 -0
- package/dist/cli/utils/coverage-verdict.js +193 -0
- package/dist/cli/utils/file-discovery.js +5 -0
- package/dist/coordination/deterministic-actions.js +24 -13
- package/dist/coordination/handlers/code-intelligence-handlers.d.ts +8 -0
- package/dist/coordination/handlers/code-intelligence-handlers.js +39 -0
- package/dist/coordination/handlers/coverage-handlers.js +34 -6
- package/dist/coordination/handlers/coverage-runner.d.ts +22 -0
- package/dist/coordination/handlers/coverage-runner.js +105 -10
- package/dist/coordination/handlers/coverage-target.d.ts +1 -0
- package/dist/coordination/handlers/coverage-target.js +4 -1
- package/dist/coordination/handlers/handler-types.d.ts +9 -0
- package/dist/coordination/handlers/handler-utils.d.ts +14 -1
- package/dist/coordination/handlers/handler-utils.js +46 -22
- package/dist/coordination/handlers/quality-handlers.js +108 -18
- package/dist/coordination/handlers/security-handlers.js +22 -6
- package/dist/coordination/handlers/test-execution-handlers.js +4 -1
- package/dist/coordination/protocols/defect-investigation.d.ts +2 -1
- package/dist/coordination/protocols/defect-investigation.js +12 -3
- package/dist/coordination/protocols/quality-gate.js +10 -6
- package/dist/coordination/protocols/security-audit.js +11 -0
- package/dist/coordination/result-saver.d.ts +31 -0
- package/dist/coordination/result-saver.js +146 -46
- package/dist/coordination/task-executor.d.ts +7 -0
- package/dist/coordination/task-executor.js +32 -3
- package/dist/domains/code-intelligence/plugin.js +4 -0
- package/dist/domains/code-intelligence/services/metric-collector/index.js +9 -2
- package/dist/domains/code-intelligence/services/metric-collector/interfaces.d.ts +21 -0
- package/dist/domains/code-intelligence/services/metric-collector/interfaces.js +25 -0
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +12 -0
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +69 -3
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +4 -1
- package/dist/domains/coverage-analysis/collected-metrics.d.ts +35 -0
- package/dist/domains/coverage-analysis/collected-metrics.js +42 -0
- package/dist/domains/coverage-analysis/coordinator.js +18 -6
- package/dist/domains/coverage-analysis/interfaces.d.ts +44 -0
- package/dist/domains/coverage-analysis/interfaces.js +6 -1
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +61 -34
- package/dist/domains/coverage-analysis/services/gap-detector.js +7 -2
- package/dist/domains/defect-intelligence/plugin.js +4 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +13 -8
- package/dist/domains/learning-optimization/coordinator.js +4 -0
- package/dist/domains/learning-optimization/plugin.js +4 -0
- package/dist/domains/quality-assessment/coordinator-rl-integration.d.ts +14 -0
- package/dist/domains/quality-assessment/coordinator-rl-integration.js +54 -16
- package/dist/domains/quality-assessment/coordinator.js +10 -6
- package/dist/domains/quality-assessment/coverage-report-event.d.ts +32 -8
- package/dist/domains/quality-assessment/coverage-report-event.js +28 -6
- package/dist/domains/quality-assessment/index.d.ts +1 -1
- package/dist/domains/quality-assessment/interfaces.d.ts +50 -0
- package/dist/domains/quality-assessment/quality-evidence.d.ts +49 -3
- package/dist/domains/quality-assessment/quality-evidence.js +62 -0
- package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +23 -2
- package/dist/domains/quality-assessment/services/quality-analyzer.js +197 -112
- package/dist/domains/quality-assessment/services/quality-gate.js +12 -3
- package/dist/domains/security-compliance/dependency-advisory-engine.d.ts +52 -0
- package/dist/domains/security-compliance/dependency-advisory-engine.js +113 -0
- package/dist/domains/security-compliance/interfaces.d.ts +30 -0
- package/dist/domains/security-compliance/plugin.d.ts +7 -1
- package/dist/domains/security-compliance/plugin.js +19 -0
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +22 -16
- package/dist/domains/security-compliance/services/scanners/dependency-resolver.d.ts +71 -0
- package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +232 -0
- package/dist/domains/security-compliance/services/scanners/dependency-scanner.d.ts +21 -6
- package/dist/domains/security-compliance/services/scanners/dependency-scanner.js +142 -64
- package/dist/domains/security-compliance/services/scanners/lockfile-versions.d.ts +43 -0
- package/dist/domains/security-compliance/services/scanners/lockfile-versions.js +248 -0
- package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +30 -2
- package/dist/domains/security-compliance/services/security-auditor.d.ts +19 -6
- package/dist/domains/security-compliance/services/security-auditor.js +133 -92
- package/dist/domains/test-execution/interfaces.d.ts +10 -6
- package/dist/domains/test-execution/plugin.js +4 -0
- package/dist/domains/test-execution/services/retry-handler.js +17 -6
- package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
- package/dist/domains/test-execution/services/test-executor.js +239 -109
- package/dist/domains/test-generation/coordinator.js +4 -0
- package/dist/domains/test-generation/plugin.js +4 -0
- package/dist/feedback/coverage-learner.js +4 -1
- package/dist/feedback/coverage-session-provenance.d.ts +29 -0
- package/dist/feedback/coverage-session-provenance.js +39 -0
- package/dist/init/orchestrator.js +2 -0
- package/dist/init/phases/09-assets.d.ts +4 -0
- package/dist/init/phases/09-assets.js +35 -0
- package/dist/init/retired-assets.d.ts +86 -0
- package/dist/init/retired-assets.js +230 -0
- package/dist/init/skills-installer.d.ts +2 -0
- package/dist/init/skills-installer.js +4 -0
- package/dist/init/types.d.ts +3 -0
- package/dist/integrations/ruvector/rvf-native-adapter.d.ts +2 -0
- package/dist/integrations/ruvector/rvf-native-adapter.js +5 -0
- package/dist/integrations/ruvector/server-client.js +4 -12
- package/dist/kernel/project-root.d.ts +17 -0
- package/dist/kernel/project-root.js +54 -2
- package/dist/kernel/shared-dirs.d.ts +66 -0
- package/dist/kernel/shared-dirs.js +180 -0
- package/dist/learning/daily-log.js +2 -1
- package/dist/learning/experience-capture-middleware.d.ts +22 -0
- package/dist/learning/experience-capture-middleware.js +35 -0
- package/dist/learning/learnable-result.d.ts +16 -0
- package/dist/learning/learnable-result.js +24 -0
- package/dist/learning/pattern-mutation-error.d.ts +8 -0
- package/dist/learning/pattern-mutation-error.js +12 -0
- package/dist/learning/qe-reasoning-bank.d.ts +10 -0
- package/dist/learning/qe-reasoning-bank.js +50 -1
- package/dist/learning/rvf-reconcile.d.ts +39 -0
- package/dist/learning/rvf-reconcile.js +40 -0
- package/dist/learning/sqlite-persistence.d.ts +14 -0
- package/dist/learning/sqlite-persistence.js +36 -0
- package/dist/mcp/bundle.js +908 -896
- package/dist/mcp/handlers/domain-handler-configs.d.ts +35 -1
- package/dist/mcp/handlers/domain-handler-configs.js +42 -4
- package/dist/mcp/handlers/handler-factory.js +40 -14
- package/dist/mcp/protocol-server.js +29 -3
- package/dist/mcp/tool-cache-scope.d.ts +31 -0
- package/dist/mcp/tool-cache-scope.js +71 -0
- package/dist/mcp/tools/code-intelligence/analyze.js +5 -3
- package/dist/mcp/types.d.ts +10 -0
- package/dist/optimization/session-cache.d.ts +19 -1
- package/dist/optimization/session-cache.js +36 -2
- package/dist/plugins/cache.js +2 -1
- package/dist/plugins/sources/github.js +2 -1
- package/dist/plugins/sources/npm.js +2 -1
- package/dist/shared/aqe-managed-dirs.d.ts +24 -0
- package/dist/shared/aqe-managed-dirs.js +56 -0
- package/dist/shared/events/domain-events.d.ts +18 -3
- package/dist/shared/events/domain-events.js +4 -0
- package/dist/shared/http/http-client.d.ts +6 -0
- package/dist/shared/http/http-client.js +13 -15
- package/dist/shared/io/file-reader.d.ts +26 -0
- package/dist/shared/io/file-reader.js +111 -17
- package/dist/shared/llm/providers/response-deadline.d.ts +7 -2
- package/dist/shared/llm/providers/response-deadline.js +17 -5
- package/dist/shared/metrics/code-metrics.d.ts +24 -0
- package/dist/shared/metrics/code-metrics.js +93 -6
- package/dist/shared/metrics/index.d.ts +1 -1
- package/dist/shared/security/index.d.ts +2 -2
- package/dist/shared/security/index.js +1 -1
- package/dist/shared/security/osv-client.d.ts +79 -132
- package/dist/shared/security/osv-client.js +344 -167
- package/dist/shared/security/osv-lookup.d.ts +124 -0
- package/dist/shared/security/osv-lookup.js +246 -0
- package/dist/shared/security/osv-types.d.ts +119 -0
- package/dist/shared/security/osv-types.js +6 -0
- package/dist/workers/interfaces.d.ts +15 -2
- package/dist/workers/namespaced-keys.d.ts +16 -0
- package/dist/workers/namespaced-keys.js +24 -0
- package/dist/workers/quality-daemon/coverage-delta.d.ts +4 -3
- package/dist/workers/quality-daemon/coverage-delta.js +13 -6
- package/dist/workers/quality-daemon/index.js +6 -5
- package/dist/workers/quality-daemon/notification-service.js +3 -3
- package/dist/workers/quality-daemon/persistent-memory.d.ts +3 -3
- package/dist/workers/quality-daemon/persistent-memory.js +4 -4
- package/dist/workers/worker-manager.js +10 -3
- package/dist/workers/workers/coverage-tracker.js +69 -33
- package/dist/workers/workers/defect-predictor.d.ts +25 -8
- package/dist/workers/workers/defect-predictor.js +223 -216
- package/dist/workers/workers/performance-baseline.d.ts +24 -9
- package/dist/workers/workers/performance-baseline.js +187 -230
- package/dist/workers/workers/quality-gate.d.ts +11 -9
- package/dist/workers/workers/quality-gate.js +125 -267
- package/dist/workers/workers/regression-monitor.d.ts +18 -1
- package/dist/workers/workers/regression-monitor.js +276 -117
- package/dist/workers/workers/security-scan-records.d.ts +111 -0
- package/dist/workers/workers/security-scan-records.js +128 -0
- package/dist/workers/workers/security-scan.d.ts +25 -7
- package/dist/workers/workers/security-scan.js +187 -164
- package/package.json +2 -2
- package/dist/cli/chunks/adapter-EGIPTX5H.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-WP4GCBDT.js +0 -2
- package/dist/cli/chunks/base-6ORFD62I.js +0 -2
- package/dist/cli/chunks/browser-workflow-PIXGERWP.js +0 -2
- package/dist/cli/chunks/chunk-2WFTZSRT.js +0 -2
- package/dist/cli/chunks/chunk-7YB2KELI.js +0 -5
- package/dist/cli/chunks/chunk-BBL6YXD3.js +0 -2
- package/dist/cli/chunks/chunk-BJ5P4IV2.js +0 -2
- package/dist/cli/chunks/chunk-BO4PKNYP.js +0 -102
- package/dist/cli/chunks/chunk-DFPL5N3Q.js +0 -16
- package/dist/cli/chunks/chunk-DLY4YEN3.js +0 -2
- package/dist/cli/chunks/chunk-ERGWWI4Y.js +0 -3
- package/dist/cli/chunks/chunk-GTSOFCMQ.js +0 -2
- package/dist/cli/chunks/chunk-KZVJW2SD.js +0 -2
- package/dist/cli/chunks/chunk-L336HFFE.js +0 -2
- package/dist/cli/chunks/chunk-N2TJNIHA.js +0 -2
- package/dist/cli/chunks/chunk-RCXMUEZN.js +0 -3
- package/dist/cli/chunks/chunk-SEZLYRCS.js +0 -2
- package/dist/cli/chunks/chunk-TDLKXLJC.js +0 -4
- package/dist/cli/chunks/chunk-WOZIXXY5.js +0 -7
- package/dist/cli/chunks/ci-KP4GZKJ7.js +0 -81
- package/dist/cli/chunks/client-C3KHVRM6.js +0 -2
- package/dist/cli/chunks/core-handlers-KSQM6Q6S.js +0 -2
- package/dist/cli/chunks/coverage-SPFVHRRU.js +0 -43
- package/dist/cli/chunks/coverage-target-GSRBNHXE.js +0 -2
- package/dist/cli/chunks/cross-domain-router-CTGNOVCF.js +0 -2
- package/dist/cli/chunks/daemon-M5TD5Y6T.js +0 -10
- package/dist/cli/chunks/dream-MIK2E4UL.js +0 -2
- package/dist/cli/chunks/embed-and-insert-pattern-QST77T2B.js +0 -3
- package/dist/cli/chunks/experience-capture-middleware-X66IYSRV.js +0 -40
- package/dist/cli/chunks/file-discovery-3NHRUQQB.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-OCKRACUW.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-X67XG73C.js +0 -2
- package/dist/cli/chunks/hnsw-index-I7KCQBQR.js +0 -2
- package/dist/cli/chunks/hybrid-backend-FOUHTKAK.js +0 -2
- package/dist/cli/chunks/impact-analyzer-GXYVX46O.js +0 -2
- package/dist/cli/chunks/init-handler-2AXMXHYF.js +0 -86
- package/dist/cli/chunks/init-wizard-C2MRX2QG.js +0 -2
- package/dist/cli/chunks/kernel-Q2IUDIDC.js +0 -2
- package/dist/cli/chunks/knowledge-graph-E2Z6K5EE.js +0 -2
- package/dist/cli/chunks/learning-BEA26RNA.js +0 -122
- package/dist/cli/chunks/llm-router-service-YATYFEDD.js +0 -2
- package/dist/cli/chunks/load-test-LV77JXWA.js +0 -2
- package/dist/cli/chunks/memory-backend-XME3X3QX.js +0 -2
- package/dist/cli/chunks/memory-handlers-VG47X5DX.js +0 -2
- package/dist/cli/chunks/orchestrator-VHUXUYIM.js +0 -452
- package/dist/cli/chunks/pattern-null-store-TAXMLENP.js +0 -2
- package/dist/cli/chunks/plugin-2VAYWAO3.js +0 -27
- package/dist/cli/chunks/project-root-CFFPBGPX.js +0 -2
- package/dist/cli/chunks/protocol-executor-ML76QAVQ.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-LUZH6RYV.js +0 -2
- package/dist/cli/chunks/queen-coordinator-EWXNIXB6.js +0 -2
- package/dist/cli/chunks/real-embeddings-GZV4VKK4.js +0 -2
- package/dist/cli/chunks/router-MXOBVEBF.js +0 -2
- package/dist/cli/chunks/routing-feedback-T6CCRUEK.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-WHXVT3V3.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-JFPWIRCG.js +0 -2
- package/dist/cli/chunks/rvf-migration-coordinator-D4KUBNRZ.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-KOXR7TJL.js +0 -2
- package/dist/cli/chunks/safe-db-CI6IPSIN.js +0 -2
- package/dist/cli/chunks/schedule-X4HW6TVJ.js +0 -2
- package/dist/cli/chunks/scheduler-KCNJ2ON3.js +0 -2
- package/dist/cli/chunks/security-7723AZZ4.js +0 -13
- package/dist/cli/chunks/shared-rvf-adapter-KEQ5CLNI.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-PGHU6VUR.js +0 -2
- package/dist/cli/chunks/sync-EFWXMA2H.js +0 -2
- package/dist/cli/chunks/token-bootstrap-S346YBVO.js +0 -2
- package/dist/cli/chunks/unified-memory-6CK3TUNQ.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-A7BWBGYN.js +0 -2
- package/dist/cli/chunks/unified-persistence-GEPMDBQZ.js +0 -2
- package/dist/cli/chunks/visual-security-L4J7LQWT.js +0 -2
- package/dist/cli/chunks/witness-chain-CDUMX623.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-WNYH6O4L.js +0 -2
- package/dist/cli/chunks/witness-key-manager-NQ5DAAC4.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-USJDWVDR.js +0 -2
- package/dist/cli/chunks/wrappers-CZDI6Z3X.js +0 -2
- /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
- /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
- /package/.claude/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
- /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
- /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
- /package/assets/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
|
@@ -20,6 +20,10 @@ export interface AssetsResult {
|
|
|
20
20
|
policy: 'full' | 'compact' | 'none';
|
|
21
21
|
ownedBytes: number;
|
|
22
22
|
};
|
|
23
|
+
/** #1017: retired shipped files removed from the project (exact path + shipped hash). */
|
|
24
|
+
retiredAssetsRemoved?: string[];
|
|
25
|
+
/** #1017: retired files left in place (edited, symlinked, or outside the project). */
|
|
26
|
+
retiredAssetsKept?: string[];
|
|
23
27
|
codexComponents?: {
|
|
24
28
|
hooks: {
|
|
25
29
|
status: string;
|
|
@@ -8,6 +8,7 @@ import { BasePhase, } from './phase-interface.js';
|
|
|
8
8
|
import { createSkillsInstaller } from '../skills-installer.js';
|
|
9
9
|
import { createAgentsInstaller } from '../agents-installer.js';
|
|
10
10
|
import { createN8nInstaller } from '../n8n-installer.js';
|
|
11
|
+
import { retireShippedAssets } from '../retired-assets.js';
|
|
11
12
|
import { installBrowserEngine, detectBrowserEngine, diagnosePlatform, DEFAULT_VIBIUM_SPEC, } from '../browser-engine-installer.js';
|
|
12
13
|
import { initializeOverlays } from '../../routing/qe-agent-registry.js';
|
|
13
14
|
/**
|
|
@@ -38,6 +39,8 @@ export class AssetsPhase extends BasePhase {
|
|
|
38
39
|
let kiroHooks = 0;
|
|
39
40
|
let codexGuidance;
|
|
40
41
|
let codexComponents;
|
|
42
|
+
let retiredAssetsRemoved = [];
|
|
43
|
+
let retiredAssetsKept = [];
|
|
41
44
|
if (options.upgrade) {
|
|
42
45
|
context.services.log(` Upgrade mode: overwriting existing files`);
|
|
43
46
|
}
|
|
@@ -58,6 +61,36 @@ export class AssetsPhase extends BasePhase {
|
|
|
58
61
|
context.services.warn(`Skills warnings: ${skillsResult.errors.join(', ')}`);
|
|
59
62
|
}
|
|
60
63
|
}
|
|
64
|
+
// #1017: remove files earlier releases shipped under names the user's test
|
|
65
|
+
// runner collects. Runs on EVERY init that manages the Claude skills, not
|
|
66
|
+
// only --upgrade: plain `init --auto` on an existing install skips skills
|
|
67
|
+
// that are already present, so without this the stale copies would never
|
|
68
|
+
// leave. It is safe on every run because only an exact path whose content
|
|
69
|
+
// still equals a shipped version is deleted (edited copies keep their whole
|
|
70
|
+
// group), and the renamed replacements are installed so the skill keeps
|
|
71
|
+
// working without --upgrade.
|
|
72
|
+
if (!options.noClaude) {
|
|
73
|
+
const retired = retireShippedAssets(projectRoot, {
|
|
74
|
+
sourceSkillsDir: createSkillsInstaller({ projectRoot }).getSourceSkillsDir(),
|
|
75
|
+
});
|
|
76
|
+
retiredAssetsRemoved = retired.removed;
|
|
77
|
+
retiredAssetsKept = retired.kept.flatMap((k) => k.files);
|
|
78
|
+
for (const relPath of retired.removed) {
|
|
79
|
+
context.services.log(` Removed retired asset: ${relPath}`);
|
|
80
|
+
}
|
|
81
|
+
for (const relPath of [...retired.installed, ...retired.refreshed]) {
|
|
82
|
+
context.services.log(` Updated skill file: ${relPath}`);
|
|
83
|
+
}
|
|
84
|
+
for (const kept of retired.kept) {
|
|
85
|
+
context.services.warn(`Kept ${kept.files.join(', ')}: ${kept.why}. ${kept.advice}.`);
|
|
86
|
+
}
|
|
87
|
+
for (const note of retired.replacementWarnings) {
|
|
88
|
+
context.services.warn(`Skill file kept: ${note}.`);
|
|
89
|
+
}
|
|
90
|
+
if (retired.missingReplacements.length > 0) {
|
|
91
|
+
context.services.warn(`Could not install ${retired.missingReplacements.join(', ')}; run "aqe init --upgrade" to refresh the skills.`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
61
94
|
// Install agents (Claude Code surface — skipped with --no-claude, #532)
|
|
62
95
|
if (!options.noClaude) {
|
|
63
96
|
try {
|
|
@@ -354,6 +387,8 @@ export class AssetsPhase extends BasePhase {
|
|
|
354
387
|
browserEngine,
|
|
355
388
|
codexGuidance,
|
|
356
389
|
codexComponents,
|
|
390
|
+
retiredAssetsRemoved,
|
|
391
|
+
retiredAssetsKept,
|
|
357
392
|
};
|
|
358
393
|
}
|
|
359
394
|
/**
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retired shipped assets (#1017).
|
|
3
|
+
*
|
|
4
|
+
* Earlier releases copied files into the user's project that 3.15.6 renames.
|
|
5
|
+
* Re-running `aqe init` skips skills that already exist, so an existing install
|
|
6
|
+
* would keep the stale copies, and their test-glob names make the user's own
|
|
7
|
+
* vitest / jest collect AQE's eval fixtures.
|
|
8
|
+
*
|
|
9
|
+
* Each group is retired as a unit:
|
|
10
|
+
* - A retired file is removable only when its path matches exactly, it is a
|
|
11
|
+
* regular file (not a symlink), its resolved parent directory is inside the
|
|
12
|
+
* project root (no symlinked ancestor), and its sha256 equals a version AQE
|
|
13
|
+
* actually shipped.
|
|
14
|
+
* - If ANY present file in a group is not removable (edited, symlink, outside
|
|
15
|
+
* the project, unreadable), the whole group is kept. Deleting a pristine
|
|
16
|
+
* `budget.ts` next to a kept `budget.test.ts` would break the user's test run
|
|
17
|
+
* with "Cannot find module './budget'".
|
|
18
|
+
* - After removal, the renamed replacements are installed from the package
|
|
19
|
+
* (never overwriting an existing file), and companion files that still name
|
|
20
|
+
* the old files (README, eval yaml) are refreshed only when they are AQE's
|
|
21
|
+
* unmodified shipped copies. Plain `init --auto` therefore leaves a working
|
|
22
|
+
* skill without overwriting user edits.
|
|
23
|
+
*/
|
|
24
|
+
export interface RetiredFile {
|
|
25
|
+
/** Path relative to the project root, '/'-separated. */
|
|
26
|
+
readonly relPath: string;
|
|
27
|
+
/** sha256 (hex) of every distinct content AQE shipped at this path. */
|
|
28
|
+
readonly shippedSha256: readonly string[];
|
|
29
|
+
}
|
|
30
|
+
export interface ReplacementFile {
|
|
31
|
+
/** Destination relative to the project root. */
|
|
32
|
+
readonly relPath: string;
|
|
33
|
+
/** Source relative to the package skills directory (assets/skills). */
|
|
34
|
+
readonly source: string;
|
|
35
|
+
}
|
|
36
|
+
export interface RefreshFile extends ReplacementFile {
|
|
37
|
+
/** sha256 of every earlier shipped version; only those are overwritten. */
|
|
38
|
+
readonly previousSha256: readonly string[];
|
|
39
|
+
}
|
|
40
|
+
export interface RetiredAssetGroup {
|
|
41
|
+
readonly id: string;
|
|
42
|
+
/** Retired together: if one is kept, all are kept. */
|
|
43
|
+
readonly retired: readonly RetiredFile[];
|
|
44
|
+
/** Installed (if absent) once the group is retired. */
|
|
45
|
+
readonly replacements: readonly ReplacementFile[];
|
|
46
|
+
/** Overwritten once the group is retired, only if still AQE's unmodified copy. */
|
|
47
|
+
readonly refresh: readonly RefreshFile[];
|
|
48
|
+
/** Why the group was retired / what to do if it is kept. */
|
|
49
|
+
readonly advice: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Hashes are of `git show <tag>:assets/skills/<path>` over every v3 release tag.
|
|
53
|
+
* Retired files: one distinct content each (v3.13.0–v3.15.5 for qe-court,
|
|
54
|
+
* v3.0.0–v3.15.5 for testability-scoring); the same bytes now ship under the
|
|
55
|
+
* new names, which a unit test pins. Refreshed files list every earlier shipped
|
|
56
|
+
* content (qe-court.yaml changed once, at v3.14.0).
|
|
57
|
+
*/
|
|
58
|
+
export declare const RETIRED_ASSET_GROUPS: readonly RetiredAssetGroup[];
|
|
59
|
+
export interface RetireOptions {
|
|
60
|
+
/** Package skills directory (assets/skills) used for replacements and refreshes. */
|
|
61
|
+
sourceSkillsDir?: string;
|
|
62
|
+
groups?: readonly RetiredAssetGroup[];
|
|
63
|
+
}
|
|
64
|
+
export interface RetireResult {
|
|
65
|
+
/** Retired files removed (exact path + shipped content). */
|
|
66
|
+
removed: string[];
|
|
67
|
+
/** Renamed replacements installed. */
|
|
68
|
+
installed: string[];
|
|
69
|
+
/** Companion files updated from AQE's unmodified copy. */
|
|
70
|
+
refreshed: string[];
|
|
71
|
+
/** Groups left in place, with the files, the cause, and what to do. */
|
|
72
|
+
kept: Array<{
|
|
73
|
+
group: string;
|
|
74
|
+
files: string[];
|
|
75
|
+
why: string;
|
|
76
|
+
advice: string;
|
|
77
|
+
}>;
|
|
78
|
+
/** Replacements that could not be installed (missing package source or unsafe target). */
|
|
79
|
+
missingReplacements: string[];
|
|
80
|
+
/** Why a replacement target was left alone (symlink or other non-file in the way). */
|
|
81
|
+
replacementWarnings: string[];
|
|
82
|
+
}
|
|
83
|
+
export declare function sha256Hex(content: Buffer): string;
|
|
84
|
+
/** Remove retired assets AQE shipped unmodified, install replacements; keep anything else. */
|
|
85
|
+
export declare function retireShippedAssets(projectRoot: string, options?: RetireOptions): RetireResult;
|
|
86
|
+
//# sourceMappingURL=retired-assets.d.ts.map
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retired shipped assets (#1017).
|
|
3
|
+
*
|
|
4
|
+
* Earlier releases copied files into the user's project that 3.15.6 renames.
|
|
5
|
+
* Re-running `aqe init` skips skills that already exist, so an existing install
|
|
6
|
+
* would keep the stale copies, and their test-glob names make the user's own
|
|
7
|
+
* vitest / jest collect AQE's eval fixtures.
|
|
8
|
+
*
|
|
9
|
+
* Each group is retired as a unit:
|
|
10
|
+
* - A retired file is removable only when its path matches exactly, it is a
|
|
11
|
+
* regular file (not a symlink), its resolved parent directory is inside the
|
|
12
|
+
* project root (no symlinked ancestor), and its sha256 equals a version AQE
|
|
13
|
+
* actually shipped.
|
|
14
|
+
* - If ANY present file in a group is not removable (edited, symlink, outside
|
|
15
|
+
* the project, unreadable), the whole group is kept. Deleting a pristine
|
|
16
|
+
* `budget.ts` next to a kept `budget.test.ts` would break the user's test run
|
|
17
|
+
* with "Cannot find module './budget'".
|
|
18
|
+
* - After removal, the renamed replacements are installed from the package
|
|
19
|
+
* (never overwriting an existing file), and companion files that still name
|
|
20
|
+
* the old files (README, eval yaml) are refreshed only when they are AQE's
|
|
21
|
+
* unmodified shipped copies. Plain `init --auto` therefore leaves a working
|
|
22
|
+
* skill without overwriting user edits.
|
|
23
|
+
*/
|
|
24
|
+
import { createHash } from 'crypto';
|
|
25
|
+
import { constants as fsConstants, copyFileSync, existsSync, lstatSync, readFileSync, realpathSync, unlinkSync, } from 'fs';
|
|
26
|
+
import { dirname, join, sep } from 'path';
|
|
27
|
+
const QC = '.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery';
|
|
28
|
+
const QC_SRC = 'qe-court/evals/fixtures/seeded-mutant-delivery';
|
|
29
|
+
const TS = '.claude/skills/testability-scoring/resources/templates';
|
|
30
|
+
const TS_SRC = 'testability-scoring/resources/templates';
|
|
31
|
+
/**
|
|
32
|
+
* Hashes are of `git show <tag>:assets/skills/<path>` over every v3 release tag.
|
|
33
|
+
* Retired files: one distinct content each (v3.13.0–v3.15.5 for qe-court,
|
|
34
|
+
* v3.0.0–v3.15.5 for testability-scoring); the same bytes now ship under the
|
|
35
|
+
* new names, which a unit test pins. Refreshed files list every earlier shipped
|
|
36
|
+
* content (qe-court.yaml changed once, at v3.14.0).
|
|
37
|
+
*/
|
|
38
|
+
export const RETIRED_ASSET_GROUPS = Object.freeze([
|
|
39
|
+
{
|
|
40
|
+
id: 'qe-court-seeded-mutant',
|
|
41
|
+
retired: [
|
|
42
|
+
{ relPath: `${QC}/budget.test.ts`, shippedSha256: ['add1ff4cb05978c136f8c2c5cc50059d920f06f409e5f6f304239b7dad3cf65d'] },
|
|
43
|
+
{ relPath: `${QC}/budget.ts`, shippedSha256: ['11fc97cad19bb4fc0d31151a6d216ab99d0df0521b60be8fb19581d412147ef6'] },
|
|
44
|
+
],
|
|
45
|
+
replacements: [
|
|
46
|
+
{ relPath: `${QC}/budget-tests.ts.fixture`, source: `${QC_SRC}/budget-tests.ts.fixture` },
|
|
47
|
+
{ relPath: `${QC}/budget.ts.fixture`, source: `${QC_SRC}/budget.ts.fixture` },
|
|
48
|
+
],
|
|
49
|
+
refresh: [
|
|
50
|
+
{
|
|
51
|
+
relPath: `${QC}/README.md`,
|
|
52
|
+
source: `${QC_SRC}/README.md`,
|
|
53
|
+
previousSha256: ['d3988b92856d0023a7ae210dce3e0bdf76204f41d635fd29f7e243c168ff6109'],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
relPath: '.claude/skills/qe-court/evals/qe-court.yaml',
|
|
57
|
+
source: 'qe-court/evals/qe-court.yaml',
|
|
58
|
+
previousSha256: [
|
|
59
|
+
'412899013a51a099224bad04491d49dca19f2c567c5599adedabd0e1d58556c7',
|
|
60
|
+
'27c8be547dc032e2dbe488156dd7a30f79b1cc921fe92efec5b9bb0a151f0e9b',
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
advice: '3.15.6 renamed the qe-court seeded-mutant fixture to budget.ts.fixture / budget-tests.ts.fixture ' +
|
|
65
|
+
'because budget.test.ts matches test-runner globs, so your vitest/jest collects it (#1017). ' +
|
|
66
|
+
'The pair was left as is; delete or rename both files if you do not want your test runner to collect it',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: 'testability-scoring-spec-template',
|
|
70
|
+
retired: [
|
|
71
|
+
{
|
|
72
|
+
relPath: `${TS}/testability-scoring.spec.template.js`,
|
|
73
|
+
shippedSha256: ['e85a3e25bb458f3d090834e121b02e8db83cdc589149b5cf7549853e1a067edf'],
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
replacements: [
|
|
77
|
+
{ relPath: `${TS}/testability-scoring-spec.template.js`, source: `${TS_SRC}/testability-scoring-spec.template.js` },
|
|
78
|
+
],
|
|
79
|
+
refresh: [],
|
|
80
|
+
advice: '3.15.6 renamed it to testability-scoring-spec.template.js because its name matches the `*.spec.*` ' +
|
|
81
|
+
'test glob (#1017); delete or rename it if your test runner should not collect it',
|
|
82
|
+
},
|
|
83
|
+
]);
|
|
84
|
+
export function sha256Hex(content) {
|
|
85
|
+
return createHash('sha256').update(content).digest('hex');
|
|
86
|
+
}
|
|
87
|
+
/** True when `full`'s resolved parent directory is inside the resolved project root. */
|
|
88
|
+
function parentInsideRoot(rootReal, full) {
|
|
89
|
+
let parentReal;
|
|
90
|
+
try {
|
|
91
|
+
parentReal = realpathSync(dirname(full));
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
return parentReal === rootReal || parentReal.startsWith(rootReal + sep);
|
|
97
|
+
}
|
|
98
|
+
function probe(rootReal, full, name, shippedSha256) {
|
|
99
|
+
let stat;
|
|
100
|
+
try {
|
|
101
|
+
stat = lstatSync(full);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return { state: 'absent' };
|
|
105
|
+
}
|
|
106
|
+
if (!parentInsideRoot(rootReal, full)) {
|
|
107
|
+
return { state: 'blocked', why: `${name} resolves outside the project (symlinked directory)` };
|
|
108
|
+
}
|
|
109
|
+
if (!stat.isFile())
|
|
110
|
+
return { state: 'blocked', why: `${name} is not a regular file` };
|
|
111
|
+
try {
|
|
112
|
+
if (!shippedSha256.includes(sha256Hex(readFileSync(full)))) {
|
|
113
|
+
return { state: 'blocked', why: `${name} was modified since AQE installed it` };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
return { state: 'blocked', why: `${name} is unreadable (${error instanceof Error ? error.message : String(error)})` };
|
|
118
|
+
}
|
|
119
|
+
return { state: 'removable' };
|
|
120
|
+
}
|
|
121
|
+
/** Remove retired assets AQE shipped unmodified, install replacements; keep anything else. */
|
|
122
|
+
export function retireShippedAssets(projectRoot, options = {}) {
|
|
123
|
+
const groups = options.groups ?? RETIRED_ASSET_GROUPS;
|
|
124
|
+
const result = {
|
|
125
|
+
removed: [], installed: [], refreshed: [], kept: [], missingReplacements: [], replacementWarnings: [],
|
|
126
|
+
};
|
|
127
|
+
let rootReal;
|
|
128
|
+
try {
|
|
129
|
+
rootReal = realpathSync(projectRoot);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
const abs = (rel) => join(projectRoot, ...rel.split('/'));
|
|
135
|
+
for (const group of groups) {
|
|
136
|
+
const probes = group.retired.map((file) => ({
|
|
137
|
+
file,
|
|
138
|
+
probe: probe(rootReal, abs(file.relPath), file.relPath.split('/').pop(), file.shippedSha256),
|
|
139
|
+
}));
|
|
140
|
+
const present = probes.filter((p) => p.probe.state !== 'absent');
|
|
141
|
+
if (present.length === 0)
|
|
142
|
+
continue;
|
|
143
|
+
const blocked = present.filter((p) => p.probe.state === 'blocked');
|
|
144
|
+
if (blocked.length > 0) {
|
|
145
|
+
result.kept.push({
|
|
146
|
+
group: group.id,
|
|
147
|
+
files: present.map((p) => p.file.relPath),
|
|
148
|
+
why: blocked.map((p) => p.probe.why).join('; '),
|
|
149
|
+
advice: group.advice,
|
|
150
|
+
});
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
for (const { file } of present) {
|
|
154
|
+
try {
|
|
155
|
+
unlinkSync(abs(file.relPath));
|
|
156
|
+
result.removed.push(file.relPath);
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
result.kept.push({
|
|
160
|
+
group: group.id,
|
|
161
|
+
files: [file.relPath],
|
|
162
|
+
why: `could not remove (${error instanceof Error ? error.message : String(error)})`,
|
|
163
|
+
advice: group.advice,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
for (const replacement of group.replacements) {
|
|
168
|
+
const target = abs(replacement.relPath);
|
|
169
|
+
const source = options.sourceSkillsDir ? join(options.sourceSkillsDir, ...replacement.source.split('/')) : undefined;
|
|
170
|
+
// Never overwrite. lstat (not existsSync) so a dangling symlink counts as
|
|
171
|
+
// present: it must not be written through.
|
|
172
|
+
let present;
|
|
173
|
+
try {
|
|
174
|
+
present = lstatSync(target);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
present = undefined;
|
|
178
|
+
}
|
|
179
|
+
if (present?.isFile())
|
|
180
|
+
continue;
|
|
181
|
+
if (present) {
|
|
182
|
+
result.missingReplacements.push(replacement.relPath);
|
|
183
|
+
result.replacementWarnings.push(`${replacement.relPath} exists and is not a regular file (e.g. a symlink); not replaced`);
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
if (!source || !existsSync(source)) {
|
|
187
|
+
result.missingReplacements.push(replacement.relPath);
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
try {
|
|
191
|
+
// The retired files lived in the same directories, so they exist; a
|
|
192
|
+
// missing one is not created (it could sit under a symlinked ancestor).
|
|
193
|
+
if (!existsSync(dirname(target)) || !parentInsideRoot(rootReal, target)) {
|
|
194
|
+
result.missingReplacements.push(replacement.relPath);
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
// COPYFILE_EXCL = O_CREAT|O_EXCL: refuses ANY existing path, including a
|
|
198
|
+
// dangling symlink created after the check above (no write-through).
|
|
199
|
+
copyFileSync(source, target, fsConstants.COPYFILE_EXCL);
|
|
200
|
+
result.installed.push(replacement.relPath);
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
result.missingReplacements.push(replacement.relPath);
|
|
204
|
+
if (error?.code === 'EEXIST') {
|
|
205
|
+
result.replacementWarnings.push(`${replacement.relPath} appeared during install; not replaced`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
for (const refresh of group.refresh) {
|
|
210
|
+
const target = abs(refresh.relPath);
|
|
211
|
+
const source = options.sourceSkillsDir ? join(options.sourceSkillsDir, ...refresh.source.split('/')) : undefined;
|
|
212
|
+
if (!source || !existsSync(source))
|
|
213
|
+
continue;
|
|
214
|
+
try {
|
|
215
|
+
const stat = lstatSync(target);
|
|
216
|
+
if (!stat.isFile() || !parentInsideRoot(rootReal, target))
|
|
217
|
+
continue;
|
|
218
|
+
if (!refresh.previousSha256.includes(sha256Hex(readFileSync(target))))
|
|
219
|
+
continue; // user-edited or current
|
|
220
|
+
copyFileSync(source, target);
|
|
221
|
+
result.refreshed.push(refresh.relPath);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
// absent or unreadable: nothing to refresh
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=retired-assets.js.map
|
|
@@ -47,6 +47,8 @@ export declare class SkillsInstaller {
|
|
|
47
47
|
* Prioritises assets/skills/ (canonical npm source) over .claude/skills/.
|
|
48
48
|
*/
|
|
49
49
|
private findSourceSkillsDir;
|
|
50
|
+
/** The package skills directory skills are copied from (assets/skills). */
|
|
51
|
+
getSourceSkillsDir(): string;
|
|
50
52
|
/**
|
|
51
53
|
* Install skills to the project
|
|
52
54
|
*/
|
|
@@ -162,6 +162,10 @@ export class SkillsInstaller {
|
|
|
162
162
|
// If no skills found, return the first path (will fail gracefully)
|
|
163
163
|
return possiblePaths[0];
|
|
164
164
|
}
|
|
165
|
+
/** The package skills directory skills are copied from (assets/skills). */
|
|
166
|
+
getSourceSkillsDir() {
|
|
167
|
+
return this.sourceSkillsDir;
|
|
168
|
+
}
|
|
165
169
|
/**
|
|
166
170
|
* Install skills to the project
|
|
167
171
|
*/
|
package/dist/init/types.d.ts
CHANGED
|
@@ -237,6 +237,9 @@ export interface InitResult {
|
|
|
237
237
|
error?: string;
|
|
238
238
|
};
|
|
239
239
|
};
|
|
240
|
+
/** #1017: pre-3.15.6 test-named skill files removed / kept by init. */
|
|
241
|
+
retiredAssetsRemoved?: string[];
|
|
242
|
+
retiredAssetsKept?: string[];
|
|
240
243
|
};
|
|
241
244
|
totalDurationMs: number;
|
|
242
245
|
timestamp: Date;
|
|
@@ -61,6 +61,8 @@ export interface RvfNativeAdapter {
|
|
|
61
61
|
accepted: number;
|
|
62
62
|
rejected: number;
|
|
63
63
|
};
|
|
64
|
+
/** True when the index holds a vector for `id` (#981 review B2: reconcile with SQLite). */
|
|
65
|
+
has?(id: string): boolean;
|
|
64
66
|
search(query: Float32Array | number[], k: number): RvfSearchResult[];
|
|
65
67
|
delete(ids: string[]): number;
|
|
66
68
|
fork(childPath: string): RvfNativeAdapter;
|
|
@@ -121,6 +121,11 @@ class RvfNativeAdapterImpl {
|
|
|
121
121
|
this.persistIdMap();
|
|
122
122
|
return { accepted: result.accepted, rejected: result.rejected };
|
|
123
123
|
}
|
|
124
|
+
// -- has ------------------------------------------------------------------
|
|
125
|
+
has(id) {
|
|
126
|
+
this.ensureOpen();
|
|
127
|
+
return this.strToNum.has(id);
|
|
128
|
+
}
|
|
124
129
|
// -- search ---------------------------------------------------------------
|
|
125
130
|
search(query, k) {
|
|
126
131
|
this.ensureOpen();
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
import { spawn } from 'child_process';
|
|
60
60
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
61
61
|
import { LoggerFactory } from '../../logging/index.js';
|
|
62
|
+
import { fetchWithResponseDeadline } from '../../shared/llm/providers/response-deadline.js';
|
|
62
63
|
const logger = LoggerFactory.create('ruvector-server-client');
|
|
63
64
|
/**
|
|
64
65
|
* Default server configuration
|
|
@@ -644,18 +645,9 @@ export class RuVectorServerClient {
|
|
|
644
645
|
* Fetch with timeout support
|
|
645
646
|
*/
|
|
646
647
|
async fetchWithTimeout(url, options, timeoutMs) {
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
const response = await fetch(url, {
|
|
651
|
-
...options,
|
|
652
|
-
signal: controller.signal,
|
|
653
|
-
});
|
|
654
|
-
return response;
|
|
655
|
-
}
|
|
656
|
-
finally {
|
|
657
|
-
clearTimeout(timeout);
|
|
658
|
-
}
|
|
648
|
+
// #980 bug class: keep the deadline armed until the body is read, so a
|
|
649
|
+
// server that sends headers and stalls cannot hang health/stats calls.
|
|
650
|
+
return fetchWithResponseDeadline(url, options, timeoutMs, () => new Error(`RuVector server request timeout after ${timeoutMs}ms: ${url}`));
|
|
659
651
|
}
|
|
660
652
|
}
|
|
661
653
|
// ============================================================================
|
|
@@ -16,6 +16,13 @@
|
|
|
16
16
|
* environment changes at runtime.
|
|
17
17
|
*/
|
|
18
18
|
export declare function clearProjectRootCache(): void;
|
|
19
|
+
export { isSharedSystemDir, scratchRootPath } from './shared-dirs.js';
|
|
20
|
+
/**
|
|
21
|
+
* Path of a file or directory inside the current project's `.agentic-qe`
|
|
22
|
+
* store. Writers use this instead of a cwd-relative `.agentic-qe`, so a run
|
|
23
|
+
* from a subdirectory or a shared temp dir writes to the resolved store.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getProjectStorePath(...segments: string[]): string;
|
|
19
26
|
/**
|
|
20
27
|
* Find the project root by walking up the directory tree.
|
|
21
28
|
*
|
|
@@ -26,6 +33,16 @@ export declare function clearProjectRootCache(): void;
|
|
|
26
33
|
* 4. Walk up looking for package.json WITHOUT node_modules sibling (monorepo root)
|
|
27
34
|
* 5. Fallback to current working directory
|
|
28
35
|
*
|
|
36
|
+
* Shared directories (#1006):
|
|
37
|
+
* - The walk stops at a hard-stop directory (the OS temp dir, a fixed system
|
|
38
|
+
* dir such as `/tmp`, `/`, `/home`, or a Windows drive root); markers in or
|
|
39
|
+
* above it are never adopted.
|
|
40
|
+
* - In a sticky world-writable dir (mode 1777) markers are still read, so a
|
|
41
|
+
* repo whose root is 1777 keeps its root, but a `.agentic-qe` store there
|
|
42
|
+
* is adopted only when the same dir has `.git`.
|
|
43
|
+
* - A shared dir is never returned as the root itself: a stable per-user
|
|
44
|
+
* scratch root is used instead (`ensureScratchRoot`).
|
|
45
|
+
*
|
|
29
46
|
* Optimized: single upward walk checks all markers in one pass,
|
|
30
47
|
* and the result is cached at module level for subsequent calls.
|
|
31
48
|
*/
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import * as fs from 'fs';
|
|
15
15
|
import * as os from 'os';
|
|
16
16
|
import * as path from 'path';
|
|
17
|
+
import { ensureScratchRoot, isHardStopDir, isSharedSystemDir, isStickyWorldWritable, } from './shared-dirs.js';
|
|
17
18
|
/** Module-level cache for findProjectRoot result. */
|
|
18
19
|
let _cachedProjectRoot = null;
|
|
19
20
|
let _cachedStartDir = null;
|
|
@@ -25,6 +26,34 @@ export function clearProjectRootCache() {
|
|
|
25
26
|
_cachedProjectRoot = null;
|
|
26
27
|
_cachedStartDir = null;
|
|
27
28
|
}
|
|
29
|
+
export { isSharedSystemDir, scratchRootPath } from './shared-dirs.js';
|
|
30
|
+
/** Scratch roots already announced in this process (one notice per directory). */
|
|
31
|
+
const announcedScratchRoots = new Set();
|
|
32
|
+
/**
|
|
33
|
+
* Stable private root used when AQE runs with no project marker from a shared
|
|
34
|
+
* temp/system directory itself. Using that directory would create
|
|
35
|
+
* `<tmp>/.agentic-qe`, which every marker-less run below it would adopt
|
|
36
|
+
* (#1006). The root lives in the per-user cache dir, keyed by the directory,
|
|
37
|
+
* so memory persists across runs and no directory is minted per process.
|
|
38
|
+
*/
|
|
39
|
+
function scratchRootFor(sharedDir) {
|
|
40
|
+
const scratch = ensureScratchRoot(sharedDir);
|
|
41
|
+
if (!announcedScratchRoots.has(scratch)) {
|
|
42
|
+
announcedScratchRoots.add(scratch);
|
|
43
|
+
console.error(`[AQE] No project marker found and "${sharedDir}" is a shared temp/system ` +
|
|
44
|
+
`directory; using the private scratch root "${scratch}" instead of creating ` +
|
|
45
|
+
`a shared .agentic-qe store there. Set AQE_PROJECT_ROOT to choose a root.`);
|
|
46
|
+
}
|
|
47
|
+
return scratch;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Path of a file or directory inside the current project's `.agentic-qe`
|
|
51
|
+
* store. Writers use this instead of a cwd-relative `.agentic-qe`, so a run
|
|
52
|
+
* from a subdirectory or a shared temp dir writes to the resolved store.
|
|
53
|
+
*/
|
|
54
|
+
export function getProjectStorePath(...segments) {
|
|
55
|
+
return path.join(findProjectRoot(), '.agentic-qe', ...segments);
|
|
56
|
+
}
|
|
28
57
|
/** True when `dir` is `parent` or inside it. */
|
|
29
58
|
function isWithin(dir, parent) {
|
|
30
59
|
const rel = path.relative(parent, dir);
|
|
@@ -40,6 +69,16 @@ function isWithin(dir, parent) {
|
|
|
40
69
|
* 4. Walk up looking for package.json WITHOUT node_modules sibling (monorepo root)
|
|
41
70
|
* 5. Fallback to current working directory
|
|
42
71
|
*
|
|
72
|
+
* Shared directories (#1006):
|
|
73
|
+
* - The walk stops at a hard-stop directory (the OS temp dir, a fixed system
|
|
74
|
+
* dir such as `/tmp`, `/`, `/home`, or a Windows drive root); markers in or
|
|
75
|
+
* above it are never adopted.
|
|
76
|
+
* - In a sticky world-writable dir (mode 1777) markers are still read, so a
|
|
77
|
+
* repo whose root is 1777 keeps its root, but a `.agentic-qe` store there
|
|
78
|
+
* is adopted only when the same dir has `.git`.
|
|
79
|
+
* - A shared dir is never returned as the root itself: a stable per-user
|
|
80
|
+
* scratch root is used instead (`ensureScratchRoot`).
|
|
81
|
+
*
|
|
43
82
|
* Optimized: single upward walk checks all markers in one pass,
|
|
44
83
|
* and the result is cached at module level for subsequent calls.
|
|
45
84
|
*/
|
|
@@ -69,6 +108,15 @@ export function findProjectRoot(startDir = process.cwd()) {
|
|
|
69
108
|
let lowestGitDir = null;
|
|
70
109
|
let topmostPackageJson = null;
|
|
71
110
|
while (checkDir !== root) {
|
|
111
|
+
// #1006: a marker in the OS temp dir or a fixed system dir belongs to no
|
|
112
|
+
// project, and nothing above one is this project's either. Stop before
|
|
113
|
+
// adopting `/tmp/.agentic-qe`, `/tmp/.git` or a store above the temp dir.
|
|
114
|
+
if (isHardStopDir(checkDir))
|
|
115
|
+
break;
|
|
116
|
+
const hasGit = fs.existsSync(path.join(checkDir, '.git'));
|
|
117
|
+
// A sticky world-writable dir is shared scratch space unless it is itself
|
|
118
|
+
// a repo root; only then may a store in it be adopted (#1006, N4).
|
|
119
|
+
const strayStoreDir = !hasGit && isStickyWorldWritable(checkDir);
|
|
72
120
|
// Issue #516: prefer the NEAREST (lowest) .agentic-qe, mirroring the
|
|
73
121
|
// .git logic below. Keeping the topmost match let an ancestor store
|
|
74
122
|
// (e.g. ~/.agentic-qe, created by any `aqe` run from $HOME) hijack
|
|
@@ -77,12 +125,13 @@ export function findProjectRoot(startDir = process.cwd()) {
|
|
|
77
125
|
// has not been initialized with AQE yet.
|
|
78
126
|
const isHomeStoreAboveStart = checkDir === home && checkDir !== dir
|
|
79
127
|
&& !isWithin(dir, path.join(checkDir, '.agentic-qe'));
|
|
80
|
-
if (lowestGitDir === null && !isHomeStoreAboveStart &&
|
|
128
|
+
if (lowestGitDir === null && !isHomeStoreAboveStart && !strayStoreDir
|
|
129
|
+
&& fs.existsSync(path.join(checkDir, '.agentic-qe'))) {
|
|
81
130
|
if (nearestAqeDir === null) {
|
|
82
131
|
nearestAqeDir = checkDir;
|
|
83
132
|
}
|
|
84
133
|
}
|
|
85
|
-
if (
|
|
134
|
+
if (hasGit) {
|
|
86
135
|
if (lowestGitDir === null) {
|
|
87
136
|
lowestGitDir = checkDir;
|
|
88
137
|
}
|
|
@@ -101,6 +150,9 @@ export function findProjectRoot(startDir = process.cwd()) {
|
|
|
101
150
|
else if (topmostPackageJson) {
|
|
102
151
|
_cachedProjectRoot = topmostPackageJson;
|
|
103
152
|
}
|
|
153
|
+
else if (isSharedSystemDir(dir)) {
|
|
154
|
+
_cachedProjectRoot = scratchRootFor(dir);
|
|
155
|
+
}
|
|
104
156
|
else {
|
|
105
157
|
_cachedProjectRoot = dir;
|
|
106
158
|
}
|