agentic-qe 3.11.1 → 3.11.2
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-code-intelligence/SKILL.md +3 -0
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +35 -0
- package/README.md +1 -0
- package/assets/skills/qe-code-intelligence/SKILL.md +3 -0
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-LDNYC4GH.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-3OJAT664.js → agent-booster-wasm-FNCVODUJ.js} +2 -2
- package/dist/cli/chunks/{agent-handler-6TCTI5AT.js → agent-handler-JK7VK37B.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-FAWCYEGJ.js → agent-memory-branch-EPVVJNNA.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-CA4CT5Q7.js +2 -0
- package/dist/cli/chunks/{arena-O2TCUQBF.js → arena-EH2IMSRW.js} +4 -4
- package/dist/cli/chunks/{arena-UVYIGYUF.js → arena-NTHVDZTJ.js} +2 -2
- package/dist/cli/chunks/{audit-AYESKHAJ.js → audit-ODZV2T2B.js} +2 -2
- package/dist/cli/chunks/base-TSDAEMT4.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-FUWQTM2D.js → better-sqlite3-5JTP47LA.js} +2 -2
- package/dist/cli/chunks/{brain-handler-KSJBVTHZ.js → brain-handler-NVB6OJ25.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-4O3S42EG.js → branch-enumerator-BIXSELMY.js} +2 -2
- package/dist/cli/chunks/{browser-5VXK323P.js → browser-S2Y2W33Z.js} +2 -2
- package/dist/cli/chunks/browser-workflow-3HCTJBLR.js +2 -0
- package/dist/cli/chunks/{chunk-XEVUW4QL.js → chunk-26ZMIYSK.js} +2 -2
- package/dist/cli/chunks/{chunk-7GP7ZG3K.js → chunk-27KNLVOY.js} +2 -2
- package/dist/cli/chunks/{chunk-5Y7GXQOM.js → chunk-2Q65LTJN.js} +2 -2
- package/dist/cli/chunks/{chunk-QOR4YAZY.js → chunk-3ATEYGVD.js} +2 -2
- package/dist/cli/chunks/{chunk-NVJIOCS5.js → chunk-3J3QXLWP.js} +2 -2
- package/dist/cli/chunks/{chunk-OUBYADPD.js → chunk-3KTOM7NN.js} +2 -2
- package/dist/cli/chunks/{chunk-EZBXCEBV.js → chunk-3NCVUFAL.js} +2 -2
- package/dist/cli/chunks/{chunk-2RE32VOF.js → chunk-42DCMEUM.js} +1 -1
- package/dist/cli/chunks/{chunk-ZRWAFMM7.js → chunk-4FTVTAMN.js} +2 -2
- package/dist/cli/chunks/{chunk-437XL5VZ.js → chunk-4PYJCIRO.js} +2 -2
- package/dist/cli/chunks/{chunk-4RUS5E3Q.js → chunk-527U4AHC.js} +2 -2
- package/dist/cli/chunks/{chunk-OX2PGDUM.js → chunk-5AFO7ZZG.js} +3 -3
- package/dist/cli/chunks/{chunk-S7IHSELP.js → chunk-5BDVFFYF.js} +2 -2
- package/dist/cli/chunks/{chunk-IAHJ62JS.js → chunk-5KMGG3QW.js} +4 -4
- package/dist/cli/chunks/{chunk-LNV76GGB.js → chunk-6LQIVIZB.js} +2 -2
- package/dist/cli/chunks/{chunk-FOD6JEEU.js → chunk-6SOGYNJG.js} +2 -2
- package/dist/cli/chunks/{chunk-5PSIKJL5.js → chunk-6VAFRS5N.js} +2 -2
- package/dist/cli/chunks/chunk-72VVTMEL.js +2 -0
- package/dist/cli/chunks/{chunk-SU4YXUVK.js → chunk-75C5GX7D.js} +2 -2
- package/dist/cli/chunks/{chunk-B6U56VWG.js → chunk-76RO2RHG.js} +1 -1
- package/dist/cli/chunks/{chunk-OUSD2RWO.js → chunk-7HYO76F2.js} +2 -2
- package/dist/cli/chunks/{chunk-PY4YQDBM.js → chunk-7KHZZVF2.js} +4 -4
- package/dist/cli/chunks/{chunk-NKCL6RAF.js → chunk-7MKF52GT.js} +2 -2
- package/dist/cli/chunks/{chunk-FK3XYV3A.js → chunk-7VM4ZUHT.js} +2 -2
- package/dist/cli/chunks/{chunk-VS2G6LX5.js → chunk-7XIQR6VU.js} +2 -2
- package/dist/cli/chunks/{chunk-OHBZON7T.js → chunk-A4ZDKF5F.js} +1 -1
- package/dist/cli/chunks/{chunk-K7XPKGOL.js → chunk-AAVUZVM6.js} +2 -2
- package/dist/cli/chunks/{chunk-44HXRFOP.js → chunk-AINAWVGD.js} +2 -2
- package/dist/cli/chunks/{chunk-P7CMWL7Y.js → chunk-AK5Q2WCJ.js} +2 -2
- package/dist/cli/chunks/{chunk-Z6ADE3KJ.js → chunk-AKZK46TQ.js} +2 -2
- package/dist/cli/chunks/{chunk-4UHWZ47M.js → chunk-ARUXFZDY.js} +1 -1
- package/dist/cli/chunks/{chunk-7DQLYWLR.js → chunk-AYXRT2ND.js} +1 -1
- package/dist/cli/chunks/{chunk-X2OVUBF6.js → chunk-AZQ6HDPM.js} +2 -2
- package/dist/cli/chunks/{chunk-CN2HMHIY.js → chunk-BGVEBYV4.js} +2 -2
- package/dist/cli/chunks/{chunk-LOPM3YIO.js → chunk-C6UTRG66.js} +2 -2
- package/dist/cli/chunks/{chunk-4OYC5TIZ.js → chunk-CAUTOCLZ.js} +2 -2
- package/dist/cli/chunks/{chunk-6WNYBIPS.js → chunk-CAVBEZV4.js} +2 -2
- package/dist/cli/chunks/{chunk-BOQNPFO5.js → chunk-CEMROADY.js} +1 -1
- package/dist/cli/chunks/{chunk-ATQTTGSE.js → chunk-CMVNYVKL.js} +2 -2
- package/dist/cli/chunks/{chunk-N52WQO3G.js → chunk-CUDGKSFX.js} +2 -2
- package/dist/cli/chunks/{chunk-X4GKYSOH.js → chunk-CZYSCUJ4.js} +2 -2
- package/dist/cli/chunks/{chunk-72UPBNVF.js → chunk-DMUQV2YU.js} +2 -2
- package/dist/cli/chunks/{chunk-BXLWERBR.js → chunk-DPFLJMEI.js} +3 -3
- package/dist/cli/chunks/{chunk-H5GCRC2D.js → chunk-DU4GQKTH.js} +2 -2
- package/dist/cli/chunks/{chunk-S7ZHD6VN.js → chunk-EDH4H55B.js} +2 -2
- package/dist/cli/chunks/{chunk-MILWEZSZ.js → chunk-EIWZDVMT.js} +3 -3
- package/dist/cli/chunks/{chunk-O5NF6BBD.js → chunk-FPZLOVEF.js} +1 -1
- package/dist/cli/chunks/{chunk-6CH7476R.js → chunk-FV53RMVB.js} +1 -1
- package/dist/cli/chunks/{chunk-QEDS3MOJ.js → chunk-FYY7OJ6Y.js} +2 -2
- package/dist/cli/chunks/{chunk-CXIFCN6G.js → chunk-G4CQBQBV.js} +1 -1
- package/dist/cli/chunks/{chunk-CZU5G6J4.js → chunk-G6LIQFT2.js} +1 -1
- package/dist/cli/chunks/{chunk-TUEDIQHY.js → chunk-H3LGBH4Y.js} +1 -1
- package/dist/cli/chunks/{chunk-BR4ERWVD.js → chunk-H4ZPPHOI.js} +2 -2
- package/dist/cli/chunks/{chunk-N6RSJGTW.js → chunk-H5TM4KIB.js} +2 -2
- package/dist/cli/chunks/{chunk-K3BBLIWW.js → chunk-H6MBRYA7.js} +2 -2
- package/dist/cli/chunks/{chunk-YFY35CSD.js → chunk-HDBJORV7.js} +2 -2
- package/dist/cli/chunks/{chunk-QXDZN2WX.js → chunk-I3AD523O.js} +1 -1
- package/dist/cli/chunks/{chunk-HOFEAA4R.js → chunk-I7UWFV6N.js} +1 -1
- package/dist/cli/chunks/{chunk-4BMPFEEG.js → chunk-IMPSB5WW.js} +2 -2
- package/dist/cli/chunks/{chunk-ILZHECWZ.js → chunk-IO7ZUP2G.js} +3 -3
- package/dist/cli/chunks/{chunk-QUTKELAS.js → chunk-IQOCTGA2.js} +2 -2
- package/dist/cli/chunks/{chunk-S456W64P.js → chunk-IXYF5BZY.js} +2 -2
- package/dist/cli/chunks/{chunk-B5EE63VE.js → chunk-JC4Z2ADP.js} +2 -2
- package/dist/cli/chunks/{chunk-IUVAWWQG.js → chunk-JCH2FHJ7.js} +2 -2
- package/dist/cli/chunks/{chunk-MX6M2VPB.js → chunk-JDFF2QMZ.js} +1 -1
- package/dist/cli/chunks/{chunk-EFRIMR74.js → chunk-JELN5XTK.js} +1 -1
- package/dist/cli/chunks/{chunk-3G25ZBQ6.js → chunk-JSZNI3AO.js} +1 -1
- package/dist/cli/chunks/{chunk-AEZMNFXM.js → chunk-K3YM2Z3E.js} +1 -1
- package/dist/cli/chunks/{chunk-QMN563LV.js → chunk-K426HTEQ.js} +44 -44
- package/dist/cli/chunks/{chunk-7OAKIXNM.js → chunk-K6IQBVD7.js} +2 -2
- package/dist/cli/chunks/{chunk-C7FYDE5F.js → chunk-KEJEZY2R.js} +125 -150
- package/dist/cli/chunks/{chunk-SZPTUV3B.js → chunk-KFE6LB4I.js} +2 -2
- package/dist/cli/chunks/{chunk-TOQJWLJV.js → chunk-KO3WB4SU.js} +2 -2
- package/dist/cli/chunks/{chunk-3IMEDZIS.js → chunk-LAY35POY.js} +3 -3
- package/dist/cli/chunks/{chunk-NYWK7ZSX.js → chunk-LFXXA325.js} +1 -1
- package/dist/cli/chunks/{chunk-IVZVVZZ3.js → chunk-LI3T5YNC.js} +3 -3
- package/dist/cli/chunks/{chunk-7SRSOZMP.js → chunk-LIEA5EON.js} +1 -1
- package/dist/cli/chunks/{chunk-76UVJLPM.js → chunk-LRJWKFGY.js} +2 -2
- package/dist/cli/chunks/{chunk-N6NSZG7Z.js → chunk-LY6PTRVL.js} +2 -2
- package/dist/cli/chunks/{chunk-L2QHZFC3.js → chunk-MAXOIEUG.js} +1 -1
- package/dist/cli/chunks/{chunk-7WQKKYYG.js → chunk-MN6W7ZNL.js} +1 -1
- package/dist/cli/chunks/{chunk-DZT4A7R3.js → chunk-NGE5YNKC.js} +2 -2
- package/dist/cli/chunks/{chunk-O75SVMMB.js → chunk-NIW4CLN2.js} +2 -2
- package/dist/cli/chunks/{chunk-BVFNF3RW.js → chunk-NPT7BYGF.js} +1 -1
- package/dist/cli/chunks/{chunk-CII57TME.js → chunk-NZNXEEZR.js} +1 -1
- package/dist/cli/chunks/{chunk-J2LAYCYZ.js → chunk-O3IIAIXB.js} +1 -1
- package/dist/cli/chunks/{chunk-3D4HNUZM.js → chunk-OC2W7KIW.js} +2 -2
- package/dist/cli/chunks/{chunk-ZKPOKMJZ.js → chunk-OFUF3APC.js} +2 -2
- package/dist/cli/chunks/{chunk-4G4GTF36.js → chunk-OU52V67H.js} +4 -4
- package/dist/cli/chunks/{chunk-5QFZEEJ2.js → chunk-P2RR4SW5.js} +3 -3
- package/dist/cli/chunks/{chunk-JGHEGMLD.js → chunk-P3VRXQ3H.js} +3 -3
- package/dist/cli/chunks/{chunk-KIBP3LGY.js → chunk-P5SGBQLY.js} +1 -1
- package/dist/cli/chunks/{chunk-5LDUW2FD.js → chunk-P7MIOTVP.js} +1 -1
- package/dist/cli/chunks/{chunk-VGR65B4Y.js → chunk-PFDILSVO.js} +1 -1
- package/dist/cli/chunks/{chunk-WIC5UZCQ.js → chunk-PPD5ZLNA.js} +2 -2
- package/dist/cli/chunks/{chunk-4565IIF6.js → chunk-QFJDR4HC.js} +2 -2
- package/dist/cli/chunks/{chunk-7QICU44H.js → chunk-QZ2GQGJX.js} +2 -2
- package/dist/cli/chunks/{chunk-EQYDPF52.js → chunk-QZLTIGLB.js} +1 -1
- package/dist/cli/chunks/{chunk-3V5DAM37.js → chunk-RHSUXQNF.js} +2 -2
- package/dist/cli/chunks/{chunk-HMVL55QX.js → chunk-S6BWEZKK.js} +2 -2
- package/dist/cli/chunks/{chunk-IIX5Y7BO.js → chunk-SE4S23C7.js} +1 -1
- package/dist/cli/chunks/{chunk-6ZAUNPAI.js → chunk-TOGZ37RL.js} +2 -2
- package/dist/cli/chunks/{chunk-D6MPGK7R.js → chunk-UCXW24HY.js} +2 -2
- package/dist/cli/chunks/{chunk-D4DAZ3P2.js → chunk-UQ6WB4N2.js} +2 -2
- package/dist/cli/chunks/{chunk-22FHOXEE.js → chunk-UQBGA4UA.js} +1 -1
- package/dist/cli/chunks/{chunk-UDLN2THT.js → chunk-VNFL2TPU.js} +1 -1
- package/dist/cli/chunks/{chunk-U5GCSSYX.js → chunk-WARFZ626.js} +1 -1
- package/dist/cli/chunks/{chunk-XMDZRULK.js → chunk-WEBHFIWS.js} +2 -2
- package/dist/cli/chunks/{chunk-N4OWZLH5.js → chunk-WKIYYF3G.js} +2 -2
- package/dist/cli/chunks/{chunk-3DS7ZHA7.js → chunk-WZC4HKGZ.js} +2 -2
- package/dist/cli/chunks/{chunk-T7PUM6OY.js → chunk-X36TZXDK.js} +1 -1
- package/dist/cli/chunks/{chunk-4S3UIY3G.js → chunk-XN4G3SRU.js} +2 -2
- package/dist/cli/chunks/{chunk-V6YDM37M.js → chunk-XNREA3FG.js} +1 -1
- package/dist/cli/chunks/{chunk-EJSDQQZH.js → chunk-XRDPGJNW.js} +2 -2
- package/dist/cli/chunks/{chunk-GUSW3OGX.js → chunk-XXCSJMSR.js} +1 -1
- package/dist/cli/chunks/{chunk-VRHLHGKR.js → chunk-XY2B2BEJ.js} +2 -2
- package/dist/cli/chunks/{chunk-CIDTFU3C.js → chunk-XY4JS3IZ.js} +2 -2
- package/dist/cli/chunks/{chunk-W6RS5S4Q.js → chunk-Y4M2HMPR.js} +2 -2
- package/dist/cli/chunks/{chunk-AG4BYKUV.js → chunk-YDPBCN7H.js} +2 -2
- package/dist/cli/chunks/{chunk-56PICCZN.js → chunk-YGR54EAA.js} +2 -2
- package/dist/cli/chunks/{chunk-6YNXH6H4.js → chunk-YGRY2TVI.js} +2 -2
- package/dist/cli/chunks/{chunk-H4V6WCF7.js → chunk-YJUJCLXV.js} +2 -2
- package/dist/cli/chunks/{chunk-KRUKMGPF.js → chunk-YWG4LHFU.js} +2 -2
- package/dist/cli/chunks/{chunk-FBOPSWF6.js → chunk-Z2QNTRUX.js} +2 -2
- package/dist/cli/chunks/{chunk-3XCEFSUK.js → chunk-ZBJMVWQR.js} +2 -2
- package/dist/cli/chunks/{chunk-C27UV6DO.js → chunk-ZH6HYT7C.js} +1 -1
- package/dist/cli/chunks/{chunk-WEPZOCN7.js → chunk-ZP2GE6DM.js} +1 -1
- package/dist/cli/chunks/{chunk-LSZLXLZA.js → chunk-ZQYEBLTL.js} +2 -2
- package/dist/cli/chunks/{chunk-AL54LED5.js → chunk-ZRU3OZEU.js} +2 -2
- package/dist/cli/chunks/{chunk-HYT5EMES.js → chunk-ZU3V4CJ4.js} +2 -2
- package/dist/cli/chunks/{chunk-TCKBICJ3.js → chunk-ZWMXF6AX.js} +2 -2
- package/dist/cli/chunks/{ci-KTWY7BZT.js → ci-SM3EVLZ4.js} +2 -2
- package/dist/cli/chunks/{ci-output-WOX6QBMS.js → ci-output-YYXICZBC.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-6XKOSFIF.js → circuit-breaker-CV5UGKXT.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-5JA4MNE4.js → claude-flow-setup-BSBUZ4B7.js} +2 -2
- package/dist/cli/chunks/client-WRDYZGM2.js +2 -0
- package/dist/cli/chunks/{cline-installer-Z2ANHEKW.js → cline-installer-P2O6STIC.js} +2 -2
- package/dist/cli/chunks/code-M7DDLBGS.js +58 -0
- package/dist/cli/chunks/{code-index-extractor-VV4OEPG7.js → code-index-extractor-3QZIUYOG.js} +2 -2
- package/dist/cli/chunks/{codex-installer-BP7Y2NYR.js → codex-installer-5JVZCCTC.js} +2 -2
- package/dist/cli/chunks/{completions-YULJQUF4.js → completions-EM7IL2BJ.js} +8 -5
- package/dist/cli/chunks/{complexity-analyzer-D7XYPQ76.js → complexity-analyzer-VJXVB2CV.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-E3L7UF72.js → continuedev-installer-RCKJIAEC.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-5TRUMJC5.js → copilot-installer-DZ7LTDOZ.js} +2 -2
- package/dist/cli/chunks/core-handlers-O6E5DNHT.js +2 -0
- package/dist/cli/chunks/{cost-tracker-QTYSJMSV.js → cost-tracker-QLOLXVAM.js} +2 -2
- package/dist/cli/chunks/{coverage-D5DKZ3XT.js → coverage-LYHTLWRV.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-EV7LQMDO.js +2 -0
- package/dist/cli/chunks/{cursor-installer-UDBHGUIG.js → cursor-installer-PSIZ3Y53.js} +2 -2
- package/dist/cli/chunks/{daemon-IVWUMQKL.js → daemon-IYDTMA5M.js} +4 -4
- package/dist/cli/chunks/{daemon-2GXYN7F7.js → daemon-YLOAXM4X.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-PWXR4QTU.js → dag-attention-scheduler-I2UIO3Z7.js} +2 -2
- package/dist/cli/chunks/{detect-C6P7ONFB.js → detect-ZXQ7X7GZ.js} +2 -2
- package/dist/cli/chunks/{dist-node-2BUFM2JK.js → dist-node-GK6OZX4H.js} +2 -2
- package/dist/cli/chunks/{domain-handler-Q2GWZLDM.js → domain-handler-NS3IBLRQ.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-GMUBAM3J.js → domain-transfer-5G4RZEWF.js} +2 -2
- package/dist/cli/chunks/dream-E4C236UL.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-EFUERRM2.js → embed-and-insert-pattern-V4JJUFR6.js} +2 -2
- package/dist/cli/chunks/{eval-24FIC43F.js → eval-7Q6PPYKR.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-R4UP2Q2M.js → experience-capture-middleware-DUBKSYFM.js} +3 -3
- package/dist/cli/chunks/{fast-paths-RQCGGTXB.js → fast-paths-IDPPMBUW.js} +2 -2
- package/dist/cli/chunks/{feature-flags-SOXVYIBN.js → feature-flags-EPTMAAKA.js} +2 -2
- package/dist/cli/chunks/{feature-flags-APTWWVNQ.js → feature-flags-KXI6FDY7.js} +2 -2
- package/dist/cli/chunks/{file-discovery-66KRMXVF.js → file-discovery-EDX2OJO7.js} +2 -2
- package/dist/cli/chunks/{fleet-EMBNKO5Q.js → fleet-67BO3LJ4.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-6TKDWFJF.js → gnn-wrapper-YARORYT7.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-4ODKJ75H.js → heartbeat-handler-K3JGPBYR.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-WMADLDKT.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-STRDGJ65.js +2 -0
- package/dist/cli/chunks/hnsw-index-DBHX3TSC.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-25KFCLUC.js → hnsw-legacy-bridge-CDDRSV5E.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-MJNUEPYB.js → hnswlib-node-2KL54YUA.js} +2 -2
- package/dist/cli/chunks/{hooks-JIDA2COE.js → hooks-6SCAE6LC.js} +10 -10
- package/dist/cli/chunks/hybrid-router-L2K55I4T.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-3YDFDPE3.js → hypergraph-engine-I3LUMO7I.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-VWZX2OJX.js → hypergraph-handler-YAKAIVCN.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-WMO7ZGS7.js +2 -0
- package/dist/cli/chunks/{init-handler-DH7VQAMF.js → init-handler-NBKCZD7Q.js} +6 -6
- package/dist/cli/chunks/init-wizard-ZAB7UZZS.js +2 -0
- package/dist/cli/chunks/kernel-4MUFDEQI.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-2W2KZCGH.js → kilocode-installer-YGPJCPU3.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-E5KP7OMD.js → kiro-installer-JV3ONVMN.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-GZRFGXLX.js +2 -0
- package/dist/cli/chunks/{learning-XJRUVPLF.js → learning-2FEZJ5CX.js} +3 -3
- package/dist/cli/chunks/{llm-router-AEEKEMF5.js → llm-router-SILI4KLU.js} +4 -4
- package/dist/cli/chunks/llm-router-service-5ODLU5U5.js +2 -0
- package/dist/cli/chunks/{load-PZ4YOTBJ.js → load-EGXLQVR3.js} +2 -2
- package/dist/cli/chunks/load-test-ZDQFS5XS.js +2 -0
- package/dist/cli/chunks/{mcp-IVA6LC2S.js → mcp-OJH775TL.js} +2 -2
- package/dist/cli/chunks/{memory-Y3DHXFQE.js → memory-FNEOK4FW.js} +5 -5
- package/dist/cli/chunks/memory-backend-UK7SQ6ZM.js +2 -0
- package/dist/cli/chunks/{memory-handlers-V5PXEJWL.js → memory-handlers-6LDUH3JZ.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-646G4S4Y.js → multi-model-executor-ORTFWLLE.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-P6KOOTUS.js → opencode-installer-UAQLW6XX.js} +2 -2
- package/dist/cli/chunks/{orchestrator-T2GVKYMX.js → orchestrator-VE5KJ2V4.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-LO2QTIBU.js +2 -0
- package/dist/cli/chunks/{pipeline-CK2ON45P.js → pipeline-FNMDRWTU.js} +2 -2
- package/dist/cli/chunks/{platform-OQNSD3A3.js → platform-MGAKRUQN.js} +2 -2
- package/dist/cli/chunks/{plugin-UOG6RNRM.js → plugin-YX7THX3I.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-37UE6TG5.js → prime-radiant-advanced-wasm-XJV4RLMK.js} +2 -2
- package/dist/cli/chunks/protocol-executor-JWMYQEOI.js +2 -0
- package/dist/cli/chunks/{protocol-handler-V722S6YH.js → protocol-handler-QFET442Y.js} +2 -2
- package/dist/cli/chunks/{prove-ANGY6W3W.js → prove-QBAESCOC.js} +2 -2
- package/dist/cli/chunks/provider-manager-PEXOHGNB.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-7B2G4UGQ.js +2 -0
- package/dist/cli/chunks/{quality-KG4ALI2L.js → quality-ZTNRL6EG.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-6OF4HT3S.js +2 -0
- package/dist/cli/chunks/{real-embeddings-GUZDO5UN.js → real-embeddings-ZFFDV6HC.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-WROAR6MJ.js → roocode-installer-J4LFL4AE.js} +2 -2
- package/dist/cli/chunks/router-GMWRF6DU.js +2 -0
- package/dist/cli/chunks/routing-feedback-XKJSQK3I.js +2 -0
- package/dist/cli/chunks/{routing-handler-UFPSSS5D.js → routing-handler-A5QG2TP2.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-XJQMKDRM.js → ruvector-commands-J5JL5WX5.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-QPRMDKYX.js → rvf-dual-writer-H7442GMO.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-SOHBK23K.js → rvf-migration-adapter-PTFQUYKC.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-MTWUSPEJ.js → rvf-migration-coordinator-RSNROYRX.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-YEA6TMXB.js +2 -0
- package/dist/cli/chunks/safe-db-5DOP2J3V.js +2 -0
- package/dist/cli/chunks/schedule-SUWTOBHP.js +2 -0
- package/dist/cli/chunks/scheduler-P4VTC5SQ.js +2 -0
- package/dist/cli/chunks/{security-5MAMQKP6.js → security-LHHLMCBA.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-YEUBSRNN.js → shared-rvf-adapter-NPSHVUTM.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-DBQJHG42.js → shared-rvf-dual-writer-INQDY5WE.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-5Z2RAXH7.js +2 -0
- package/dist/cli/chunks/{status-handler-ZUB2UKQZ.js → status-handler-R2KIAMAE.js} +2 -2
- package/dist/cli/chunks/{structural-health-B2GHENWX.js → structural-health-2VPPIOZX.js} +2 -2
- package/dist/cli/chunks/{sync-7VMXJTR2.js → sync-ASZ3T5GT.js} +2 -2
- package/dist/cli/chunks/{sync-YCUUW3IP.js → sync-NLASP7AK.js} +2 -2
- package/dist/cli/chunks/{task-handler-N7LJTXZM.js → task-handler-UV5R6LJG.js} +2 -2
- package/dist/cli/chunks/{task-handlers-GDHNJV2E.js → task-handlers-I6YJXPYP.js} +3 -3
- package/dist/cli/chunks/{test-6COGC5KI.js → test-TE43TNTI.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-CUERHJMF.js → test-scheduling-WWWWF2TZ.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-JTGSL6PP.js → token-bootstrap-HEWP7KKS.js} +2 -2
- package/dist/cli/chunks/{token-usage-LSG3JYGX.js → token-usage-3FVHUAW6.js} +2 -2
- package/dist/cli/chunks/{transformers-ODIITRCT.js → transformers-O5OFM4XM.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-KSP7ZZ5H.js → tree-sitter-wasm-parser-YOYWFW63.js} +2 -2
- package/dist/cli/chunks/{types-6N6SUU2O.js → types-42GR6PLO.js} +2 -2
- package/dist/cli/chunks/unified-memory-HCKOPFAY.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-6NQPYA5C.js +2 -0
- package/dist/cli/chunks/unified-persistence-NIMKNAFR.js +2 -0
- package/dist/cli/chunks/{upgrade-7SCVOCPS.js → upgrade-BU6DJ4LT.js} +2 -2
- package/dist/cli/chunks/{validate-762ISH2Y.js → validate-MPTBARGN.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-R6WYYXGO.js → validate-swarm-5LUQYHPP.js} +2 -2
- package/dist/cli/chunks/{vibium-5GZYSUDQ.js → vibium-MJJDANDL.js} +2 -2
- package/dist/cli/chunks/visual-security-HFGHA57Z.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-VYYVAJTY.js → web-tree-sitter-5TF4UGB3.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-RRIOR3B6.js → windsurf-installer-NQAOSVCN.js} +2 -2
- package/dist/cli/chunks/{witness-chain-SRVBEKDB.js → witness-chain-23UWK2JT.js} +2 -2
- package/dist/cli/chunks/witness-chain-VZGGJ7TJ.js +2 -0
- package/dist/cli/chunks/{workflow-XNUDHGEC.js → workflow-3QOLXRJC.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-45L7D4SN.js +2 -0
- package/dist/cli/chunks/{wrappers-3STST7QW.js → wrappers-S6EUZBCX.js} +2 -2
- package/dist/cli/commands/code.js +78 -2
- package/dist/cli/completions/index.js +4 -1
- package/dist/domains/code-intelligence/coordinator.js +8 -4
- package/dist/domains/code-intelligence/services/c4-model/from-detected.d.ts +41 -0
- package/dist/domains/code-intelligence/services/c4-model/from-detected.js +152 -0
- package/dist/domains/code-intelligence/services/c4-model/kg-relationships.d.ts +71 -0
- package/dist/domains/code-intelligence/services/c4-model/kg-relationships.js +87 -0
- package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +6 -0
- package/dist/domains/code-intelligence/services/knowledge-graph.js +3 -3
- package/dist/domains/code-intelligence/services/product-factors-bridge.d.ts +26 -5
- package/dist/domains/code-intelligence/services/product-factors-bridge.js +72 -65
- package/dist/mcp/bundle.js +429 -454
- package/dist/mcp/tools/code-intelligence/c4.d.ts +56 -0
- package/dist/mcp/tools/code-intelligence/c4.js +145 -0
- package/dist/mcp/tools/index.d.ts +1 -0
- package/dist/mcp/tools/index.js +1 -0
- package/dist/mcp/tools/registry.d.ts +1 -0
- package/dist/mcp/tools/registry.js +3 -0
- package/dist/shared/c4-model/confidence.d.ts +38 -0
- package/dist/shared/c4-model/confidence.js +69 -0
- package/dist/shared/c4-model/index.d.ts +4 -0
- package/dist/shared/c4-model/index.js +1 -0
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-A6GCBONS.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-FRCSXNMG.js +0 -2
- package/dist/cli/chunks/base-CZ3EHBU5.js +0 -2
- package/dist/cli/chunks/browser-workflow-EKTGQQBQ.js +0 -2
- package/dist/cli/chunks/chunk-57WGS6BI.js +0 -2
- package/dist/cli/chunks/client-X3KUJ6R5.js +0 -2
- package/dist/cli/chunks/code-NO4ZKNDU.js +0 -39
- package/dist/cli/chunks/core-handlers-A2EQB3UH.js +0 -2
- package/dist/cli/chunks/cross-domain-router-OKZ2PDHT.js +0 -2
- package/dist/cli/chunks/dream-ZBP4Z5C3.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-6JUWQXWG.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-JT4BU7XJ.js +0 -2
- package/dist/cli/chunks/hnsw-index-JC5YELJX.js +0 -2
- package/dist/cli/chunks/hybrid-router-SLTXHUFG.js +0 -2
- package/dist/cli/chunks/impact-analyzer-JXHCMZXY.js +0 -2
- package/dist/cli/chunks/init-wizard-EX37TYOG.js +0 -2
- package/dist/cli/chunks/kernel-JPHAG27D.js +0 -2
- package/dist/cli/chunks/knowledge-graph-5QJZIRYB.js +0 -2
- package/dist/cli/chunks/llm-router-service-SE2RO4P5.js +0 -2
- package/dist/cli/chunks/load-test-LOTBWIIS.js +0 -2
- package/dist/cli/chunks/memory-backend-BSDKTFAN.js +0 -2
- package/dist/cli/chunks/pattern-null-store-LRSXCZWM.js +0 -2
- package/dist/cli/chunks/protocol-executor-WPUVJEL7.js +0 -2
- package/dist/cli/chunks/provider-manager-EVPWSH3E.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-IH63FG33.js +0 -2
- package/dist/cli/chunks/queen-coordinator-TTCAGYQO.js +0 -2
- package/dist/cli/chunks/router-64Q4ILOQ.js +0 -2
- package/dist/cli/chunks/routing-feedback-KCZV4XXC.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-GNJKMURU.js +0 -2
- package/dist/cli/chunks/safe-db-6VBZQIJI.js +0 -2
- package/dist/cli/chunks/schedule-4V7O5IPX.js +0 -2
- package/dist/cli/chunks/scheduler-CQDMHEHN.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-7DHUFTHL.js +0 -2
- package/dist/cli/chunks/unified-memory-MQA72NLP.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-K7HA3CWV.js +0 -2
- package/dist/cli/chunks/unified-persistence-2DXB4OE4.js +0 -2
- package/dist/cli/chunks/visual-security-UD6CARIJ.js +0 -2
- package/dist/cli/chunks/witness-chain-LWALPPMC.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-QU652FLH.js +0 -2
|
@@ -18,8 +18,10 @@ import * as fs from 'fs/promises';
|
|
|
18
18
|
import { ok, err } from '../../../shared/types';
|
|
19
19
|
import { CodeIntelligenceEvents, createEvent, } from '../../../shared/events/domain-events';
|
|
20
20
|
import { toError } from '../../../shared/error-utils.js';
|
|
21
|
-
import { isCacheValid, sanitizeId, inferComponentType, } from '../../../shared/c4-model';
|
|
21
|
+
import { isCacheValid, sanitizeId, inferComponentType, assessC4Confidence, } from '../../../shared/c4-model';
|
|
22
22
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
23
|
+
import { C4ModelService } from './c4-model';
|
|
24
|
+
import { toContextRequest, toContainerRequest, toComponentRequest, } from './c4-model/from-detected';
|
|
23
25
|
const DEFAULT_CONFIG = {
|
|
24
26
|
cacheTtlMs: 3600000, // 1 hour
|
|
25
27
|
publishEvents: true,
|
|
@@ -96,11 +98,26 @@ export class ProductFactorsBridgeService {
|
|
|
96
98
|
config;
|
|
97
99
|
initialized = false;
|
|
98
100
|
eventSubscriptions = [];
|
|
101
|
+
/** ADR-112: the consolidated render+analyze+store engine (lazily built). */
|
|
102
|
+
c4Service;
|
|
99
103
|
constructor(eventBus, memory, config = {}) {
|
|
100
104
|
this.eventBus = eventBus;
|
|
101
105
|
this.memory = memory;
|
|
102
106
|
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
103
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* ADR-112: lazily construct the shared C4ModelService.
|
|
110
|
+
* Embeddings are OFF on this internal product-factors path (keeps it offline +
|
|
111
|
+
* fast); the CLI/MCP surfaces opt embeddings in when semantic search is wanted.
|
|
112
|
+
*/
|
|
113
|
+
getC4Service() {
|
|
114
|
+
if (!this.c4Service) {
|
|
115
|
+
this.c4Service = new C4ModelService(this.memory, {
|
|
116
|
+
enableEmbeddings: this.config.enableC4Embeddings ?? false,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return this.c4Service;
|
|
120
|
+
}
|
|
104
121
|
// ==========================================================================
|
|
105
122
|
// Lifecycle
|
|
106
123
|
// ==========================================================================
|
|
@@ -130,7 +147,7 @@ export class ProductFactorsBridgeService {
|
|
|
130
147
|
const sub2 = this.eventBus.subscribe(CodeIntelligenceEvents.ImpactAnalysisCompleted, this.handleImpactAnalysisCompleted.bind(this));
|
|
131
148
|
this.eventSubscriptions.push(sub2);
|
|
132
149
|
}
|
|
133
|
-
async handleKnowledgeGraphUpdated(
|
|
150
|
+
async handleKnowledgeGraphUpdated(_event) {
|
|
134
151
|
// Invalidate relevant caches when knowledge graph is updated
|
|
135
152
|
logger.info('[ProductFactorsBridge] Knowledge graph updated, considering cache invalidation');
|
|
136
153
|
// Note: We don't have project path in this event, so we rely on hash-based invalidation
|
|
@@ -198,30 +215,40 @@ export class ProductFactorsBridgeService {
|
|
|
198
215
|
if (request.analyzeCoupling && components.length > 1) {
|
|
199
216
|
couplingAnalysis = this.analyzeCoupling(components, relationships);
|
|
200
217
|
}
|
|
201
|
-
// Generate diagrams
|
|
218
|
+
// Generate diagrams. ADR-112: the three C4 levels render through the
|
|
219
|
+
// consolidated C4ModelService (richer + stored + searchable); the bridge
|
|
220
|
+
// keeps only detection. Inline generators remain as a safety fallback.
|
|
202
221
|
const diagrams = {};
|
|
203
222
|
if (request.includeContext !== false) {
|
|
204
|
-
diagrams.context = this.
|
|
223
|
+
diagrams.context = await this.renderContext(projectInfo, externalSystems);
|
|
205
224
|
}
|
|
206
225
|
if (request.includeContainer !== false) {
|
|
207
|
-
diagrams.container = this.
|
|
226
|
+
diagrams.container = await this.renderContainer(projectInfo, externalSystems);
|
|
208
227
|
}
|
|
209
228
|
if (request.includeComponent !== false && components.length > 0) {
|
|
210
|
-
diagrams.component = this.
|
|
229
|
+
diagrams.component = await this.renderComponent(projectInfo, components, relationships);
|
|
211
230
|
}
|
|
212
231
|
if (request.includeDependency && components.length > 0) {
|
|
213
232
|
diagrams.dependency = this.generateDependencyGraph(components, relationships);
|
|
214
233
|
}
|
|
234
|
+
const filesAnalyzed = components.reduce((sum, c) => sum + c.files.length, 0);
|
|
215
235
|
const metadata = {
|
|
216
236
|
projectName: projectInfo.name,
|
|
217
237
|
projectDescription: projectInfo.description,
|
|
218
238
|
generatedAt: new Date(),
|
|
219
239
|
source: 'codebase-analysis',
|
|
220
240
|
analysisMetadata: {
|
|
221
|
-
filesAnalyzed
|
|
241
|
+
filesAnalyzed,
|
|
222
242
|
componentsDetected: components.length,
|
|
223
243
|
externalSystemsDetected: externalSystems.length,
|
|
224
244
|
analysisTimeMs: Date.now() - startTime,
|
|
245
|
+
// ADR-112: deterministic confidence gate — never present a wrong diagram as truth.
|
|
246
|
+
confidence: assessC4Confidence({
|
|
247
|
+
componentsDetected: components.length,
|
|
248
|
+
relationshipsDetected: relationships.length,
|
|
249
|
+
externalSystemsDetected: externalSystems.length,
|
|
250
|
+
filesAnalyzed,
|
|
251
|
+
}),
|
|
225
252
|
},
|
|
226
253
|
};
|
|
227
254
|
return ok({
|
|
@@ -239,70 +266,37 @@ export class ProductFactorsBridgeService {
|
|
|
239
266
|
}
|
|
240
267
|
}
|
|
241
268
|
// ==========================================================================
|
|
242
|
-
//
|
|
269
|
+
// ADR-112: render via the consolidated C4ModelService (the single engine).
|
|
270
|
+
// On failure we FAIL LOUD — propagate the error so the caller surfaces it —
|
|
271
|
+
// rather than silently degrading to a weaker inline diagram. A masked render
|
|
272
|
+
// failure is worse than a surfaced one (ADR-050: no silent degradation).
|
|
243
273
|
// ==========================================================================
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
System(system, "${project.name}", "${project.description}")
|
|
250
|
-
`;
|
|
251
|
-
for (const sys of externalSystems) {
|
|
252
|
-
mermaid += ` System_Ext(${sys.id}, "${sys.name}", "${sys.type}")
|
|
253
|
-
`;
|
|
254
|
-
}
|
|
255
|
-
mermaid += `
|
|
256
|
-
Rel(user, system, "Uses")
|
|
257
|
-
`;
|
|
258
|
-
for (const sys of externalSystems) {
|
|
259
|
-
mermaid += ` Rel(system, ${sys.id}, "${sys.relationship}")
|
|
260
|
-
`;
|
|
274
|
+
async renderContext(projectInfo, externalSystems) {
|
|
275
|
+
const res = await this.getC4Service().buildContext(toContextRequest(projectInfo, externalSystems));
|
|
276
|
+
if (!res.success) {
|
|
277
|
+
logger.error('[ProductFactorsBridge] C4 context render failed', res.error);
|
|
278
|
+
throw res.error;
|
|
261
279
|
}
|
|
262
|
-
return mermaid;
|
|
280
|
+
return res.value.mermaid;
|
|
263
281
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
Container_Boundary(c1, "${project.name}") {
|
|
271
|
-
Container(app, "Application", "TypeScript", "Main application")
|
|
272
|
-
}
|
|
273
|
-
`;
|
|
274
|
-
for (const sys of externalSystems) {
|
|
275
|
-
mermaid += ` System_Ext(${sys.id}, "${sys.name}", "${sys.type}")
|
|
276
|
-
`;
|
|
277
|
-
}
|
|
278
|
-
mermaid += `
|
|
279
|
-
Rel(user, app, "Uses")
|
|
280
|
-
`;
|
|
281
|
-
for (const sys of externalSystems) {
|
|
282
|
-
mermaid += ` Rel(app, ${sys.id}, "${sys.relationship}")
|
|
283
|
-
`;
|
|
282
|
+
async renderContainer(projectInfo, externalSystems) {
|
|
283
|
+
const res = await this.getC4Service().buildContainer(toContainerRequest(projectInfo, externalSystems));
|
|
284
|
+
if (!res.success) {
|
|
285
|
+
logger.error('[ProductFactorsBridge] C4 container render failed', res.error);
|
|
286
|
+
throw res.error;
|
|
284
287
|
}
|
|
285
|
-
return mermaid;
|
|
288
|
+
return res.value.mermaid;
|
|
286
289
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
`;
|
|
293
|
-
for (const comp of components) {
|
|
294
|
-
const responsibility = comp.responsibilities?.[0] || '';
|
|
295
|
-
mermaid += ` Component(${comp.id}, "${comp.name}", "${comp.technology || 'TypeScript'}", "${responsibility}")
|
|
296
|
-
`;
|
|
297
|
-
}
|
|
298
|
-
mermaid += ` }
|
|
299
|
-
`;
|
|
300
|
-
for (const rel of relationships) {
|
|
301
|
-
mermaid += ` Rel(${rel.sourceId}, ${rel.targetId}, "${rel.type}")
|
|
302
|
-
`;
|
|
290
|
+
async renderComponent(projectInfo, components, relationships) {
|
|
291
|
+
const res = await this.getC4Service().buildComponent(toComponentRequest(components, relationships));
|
|
292
|
+
if (!res.success) {
|
|
293
|
+
logger.error('[ProductFactorsBridge] C4 component render failed', res.error);
|
|
294
|
+
throw res.error;
|
|
303
295
|
}
|
|
304
|
-
return mermaid;
|
|
296
|
+
return res.value.mermaid;
|
|
305
297
|
}
|
|
298
|
+
// The dependency graph is NOT a C4 level and C4ModelService does not render
|
|
299
|
+
// it, so this stays as the bridge's own renderer.
|
|
306
300
|
generateDependencyGraph(components, relationships) {
|
|
307
301
|
let mermaid = `graph TD
|
|
308
302
|
`;
|
|
@@ -439,6 +433,19 @@ export class ProductFactorsBridgeService {
|
|
|
439
433
|
catch (error) {
|
|
440
434
|
logger.error('Component analysis failed:', error instanceof Error ? error : undefined);
|
|
441
435
|
}
|
|
436
|
+
// ADR-112 C2: prefer REAL KG-derived edges (AST import/call graph) over the
|
|
437
|
+
// naming heuristic. The resolver returns null on any miss → heuristic stands.
|
|
438
|
+
if (this.config.relationshipResolver && components.length > 0) {
|
|
439
|
+
try {
|
|
440
|
+
const resolved = await this.config.relationshipResolver(components, projectPath);
|
|
441
|
+
if (resolved && resolved.length > 0) {
|
|
442
|
+
return { components, relationships: resolved };
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
catch (error) {
|
|
446
|
+
logger.debug(`KG relationship resolver failed; using heuristic: ${toError(error).message}`);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
442
449
|
return { components, relationships };
|
|
443
450
|
}
|
|
444
451
|
shouldExclude(name) {
|
|
@@ -473,7 +480,7 @@ export class ProductFactorsBridgeService {
|
|
|
473
480
|
}
|
|
474
481
|
}
|
|
475
482
|
}
|
|
476
|
-
catch
|
|
483
|
+
catch {
|
|
477
484
|
// Non-critical: permission errors when scanning directories
|
|
478
485
|
logger.debug('Directory scan error:');
|
|
479
486
|
}
|