agentic-qe 3.10.1 → 3.10.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/hooks/README.txt +17 -0
- package/.claude/hooks/aqe-hook.cjs +98 -0
- package/.claude/hooks/cross-phase-memory.yaml +296 -0
- package/.claude/hooks/post-task-sync.sh +113 -0
- package/.claude/hooks/v3-domain-workers.json +121 -0
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +76 -0
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-CR6J5C76.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-FZLWOPSX.js → agent-booster-wasm-DHSIPFTH.js} +2 -2
- package/dist/cli/chunks/{agent-handler-KAGRVCKS.js → agent-handler-FPQVHGGT.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-JJKFEXQW.js → agent-memory-branch-OLOF5ZHV.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-2MNTHMB6.js +2 -0
- package/dist/cli/chunks/{audit-DN5SY4JJ.js → audit-ALRYPHGP.js} +2 -2
- package/dist/cli/chunks/base-AOQNGMTL.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-YX6OOBN6.js → better-sqlite3-5BT5FO64.js} +2 -2
- package/dist/cli/chunks/{brain-handler-O7MP5BGY.js → brain-handler-ROZUHCOT.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-ZPTN5J6V.js → branch-enumerator-VK7G4NKJ.js} +2 -2
- package/dist/cli/chunks/{browser-PAZE2JSD.js → browser-Q2S75M2F.js} +2 -2
- package/dist/cli/chunks/browser-workflow-UJ4A2ZXO.js +2 -0
- package/dist/cli/chunks/{chunk-WDTCCPK4.js → chunk-2244IFZA.js} +1 -1
- package/dist/cli/chunks/{chunk-WPNZSL4S.js → chunk-22D6VBPD.js} +1 -1
- package/dist/cli/chunks/{chunk-2KTRRSKD.js → chunk-24LUQICS.js} +2 -2
- package/dist/cli/chunks/{chunk-IHDUWPFY.js → chunk-2EDWGHDA.js} +2 -2
- package/dist/cli/chunks/{chunk-TP77PNN6.js → chunk-2JDLQWSV.js} +2 -2
- package/dist/cli/chunks/{chunk-GTGONWGX.js → chunk-2OH3ALYB.js} +1 -1
- package/dist/cli/chunks/{chunk-WMG5F6R6.js → chunk-3RHHKYUR.js} +2 -2
- package/dist/cli/chunks/{chunk-6E7GI2UB.js → chunk-3Z4FHA2E.js} +1 -1
- package/dist/cli/chunks/{chunk-JLKHPIQF.js → chunk-4BXGVM2C.js} +1 -1
- package/dist/cli/chunks/{chunk-6D57DWQ6.js → chunk-4F3ZTXHP.js} +2 -2
- package/dist/cli/chunks/{chunk-3YOPJ7DY.js → chunk-4GTDW2XL.js} +2 -2
- package/dist/cli/chunks/{chunk-W2DT3CDE.js → chunk-5HB54RUS.js} +2 -2
- package/dist/cli/chunks/{chunk-LF7URN2X.js → chunk-5PL7WTCU.js} +2 -2
- package/dist/cli/chunks/{chunk-Y357YFLF.js → chunk-5PRFFHFV.js} +2 -2
- package/dist/cli/chunks/{chunk-GXJ4BCGC.js → chunk-5QHSLWLP.js} +2 -2
- package/dist/cli/chunks/{chunk-TL5F2S3Z.js → chunk-5WJ3FWL4.js} +2 -2
- package/dist/cli/chunks/{chunk-ZTMWJQTZ.js → chunk-6KSCXPPL.js} +2 -2
- package/dist/cli/chunks/{chunk-SQBB2DC6.js → chunk-6NZHEM4V.js} +1 -1
- package/dist/cli/chunks/{chunk-EUJHHXE6.js → chunk-6ZFHIKQG.js} +2 -2
- package/dist/cli/chunks/{chunk-YPOTBXPU.js → chunk-7DKYCVJI.js} +2 -2
- package/dist/cli/chunks/{chunk-DQIS6J77.js → chunk-7IVQ6OVR.js} +2 -2
- package/dist/cli/chunks/{chunk-DMIYWPQQ.js → chunk-7IZ2OPC2.js} +2 -2
- package/dist/cli/chunks/{chunk-VOIWDPIU.js → chunk-7QRMARM7.js} +2 -2
- package/dist/cli/chunks/{chunk-KEC5FBAW.js → chunk-7SJX4CFK.js} +1 -1
- package/dist/cli/chunks/{chunk-2S4XHK26.js → chunk-7SWD3D6Y.js} +2 -2
- package/dist/cli/chunks/{chunk-RRLQFFCO.js → chunk-7V5UHLNY.js} +2 -2
- package/dist/cli/chunks/{chunk-G3BQU3Q6.js → chunk-7Z46RDDV.js} +2 -2
- package/dist/cli/chunks/{chunk-TNVYKYTO.js → chunk-A5RMQG4N.js} +3 -3
- package/dist/cli/chunks/{chunk-PXFQSVA2.js → chunk-AH7FXNFE.js} +3 -3
- package/dist/cli/chunks/{chunk-K22TPWOJ.js → chunk-AIUSZC6K.js} +2 -2
- package/dist/cli/chunks/{chunk-IK6AJX3C.js → chunk-AOI67HA3.js} +1 -1
- package/dist/cli/chunks/{chunk-6VQ5MFJ6.js → chunk-AV7KYE5P.js} +7 -7
- package/dist/cli/chunks/{chunk-GTRXZJNX.js → chunk-AWFIEGR3.js} +2 -2
- package/dist/cli/chunks/{chunk-6A2NIR2E.js → chunk-BQCSCAUC.js} +2 -2
- package/dist/cli/chunks/{chunk-NQZYUH6S.js → chunk-C2M74HCN.js} +1 -1
- package/dist/cli/chunks/{chunk-5EU2VQK3.js → chunk-CIRPP7RQ.js} +2 -2
- package/dist/cli/chunks/{chunk-Q5VHBI4U.js → chunk-CMACGG4Z.js} +1 -1
- package/dist/cli/chunks/{chunk-YGRTMAWB.js → chunk-CTDLI2ON.js} +1 -1
- package/dist/cli/chunks/{chunk-P7T5Y735.js → chunk-CV2SBMBW.js} +2 -2
- package/dist/cli/chunks/{chunk-UDFLR7GR.js → chunk-DMQPO43S.js} +1 -1
- package/dist/cli/chunks/{chunk-XKOKMS5A.js → chunk-DRWGK3YO.js} +2 -2
- package/dist/cli/chunks/{chunk-EBQ6YKP2.js → chunk-DZZEHPSJ.js} +2 -2
- package/dist/cli/chunks/{chunk-7SQD2TTQ.js → chunk-EA7ZSN3V.js} +1 -1
- package/dist/cli/chunks/{chunk-KKNBYXYA.js → chunk-EQBEGDTG.js} +1 -1
- package/dist/cli/chunks/{chunk-2UN4DOBJ.js → chunk-ETN5563K.js} +2 -2
- package/dist/cli/chunks/{chunk-BECU52UY.js → chunk-EVCOCGVJ.js} +3 -3
- package/dist/cli/chunks/{chunk-OC3OJWLB.js → chunk-FO43SQXP.js} +2 -2
- package/dist/cli/chunks/{chunk-CKECJH2A.js → chunk-FO73PZVU.js} +2 -2
- package/dist/cli/chunks/{chunk-Y2DPXMOR.js → chunk-FPAW77XV.js} +1 -1
- package/dist/cli/chunks/{chunk-UDVX34ZG.js → chunk-FY3CUPNN.js} +20 -17
- package/dist/cli/chunks/{chunk-EIROAH6N.js → chunk-G5U6Q42D.js} +2 -2
- package/dist/cli/chunks/{chunk-VKRMVTWU.js → chunk-HA63NBFK.js} +9 -9
- package/dist/cli/chunks/{chunk-2ETDES5W.js → chunk-HHCYSAH3.js} +2 -2
- package/dist/cli/chunks/{chunk-57NJQV57.js → chunk-HJME6G5M.js} +1 -1
- package/dist/cli/chunks/{chunk-BN7ERYXI.js → chunk-HJORBNXW.js} +1 -1
- package/dist/cli/chunks/{chunk-5KFCH7RH.js → chunk-HO37VP4O.js} +1 -1
- package/dist/cli/chunks/{chunk-622MIAOR.js → chunk-I677W5BT.js} +3 -3
- package/dist/cli/chunks/chunk-IAZEDWRX.js +2 -0
- package/dist/cli/chunks/{chunk-KRXKU54J.js → chunk-IICTTDAA.js} +2 -2
- package/dist/cli/chunks/{chunk-BGBSYF3K.js → chunk-JF53LRBL.js} +2 -2
- package/dist/cli/chunks/{chunk-RPL6K623.js → chunk-KB5L5TTF.js} +3 -3
- package/dist/cli/chunks/{chunk-Q24OJX44.js → chunk-L7VIX22Y.js} +2 -2
- package/dist/cli/chunks/{chunk-TFNLXAK5.js → chunk-LQTWPSYL.js} +1 -1
- package/dist/cli/chunks/{chunk-ECPB7IAH.js → chunk-LZCBSFAU.js} +4 -4
- package/dist/cli/chunks/{chunk-G5DTENO3.js → chunk-MCOFJHSJ.js} +2 -2
- package/dist/cli/chunks/{chunk-XRK7FBTY.js → chunk-MCZHKXB4.js} +2 -2
- package/dist/cli/chunks/{chunk-H44WD7QX.js → chunk-MEY43PIQ.js} +2 -2
- package/dist/cli/chunks/{chunk-WL2J6ECN.js → chunk-MMIQ5DMA.js} +2 -2
- package/dist/cli/chunks/{chunk-PUXDXIUE.js → chunk-MNUTRAUV.js} +1 -1
- package/dist/cli/chunks/{chunk-KCTH5MHE.js → chunk-MNV3E5KY.js} +2 -2
- package/dist/cli/chunks/{chunk-EO4B5GS4.js → chunk-MYWQTCS4.js} +1 -1
- package/dist/cli/chunks/{chunk-32R7EA7B.js → chunk-NZO4WUSO.js} +3 -3
- package/dist/cli/chunks/{chunk-NOCYYXK4.js → chunk-OIEQF7PG.js} +2 -2
- package/dist/cli/chunks/{chunk-IPRDHKSI.js → chunk-OIRZJCZY.js} +2 -2
- package/dist/cli/chunks/{chunk-ELZ67OHQ.js → chunk-ON4D4TJ4.js} +2 -2
- package/dist/cli/chunks/chunk-OPFN5LFT.js +95 -0
- package/dist/cli/chunks/{chunk-4AWJ5PE4.js → chunk-ORF2UKQH.js} +1 -1
- package/dist/cli/chunks/{chunk-6LRCMFLV.js → chunk-OWQ6HEYI.js} +2 -2
- package/dist/cli/chunks/{chunk-GRG3OP34.js → chunk-OXCEUR5F.js} +2 -2
- package/dist/cli/chunks/{chunk-SLNGJW4G.js → chunk-PEK6NGVJ.js} +1 -1
- package/dist/cli/chunks/{chunk-5ZCVMR5E.js → chunk-PIZYRPMT.js} +2 -2
- package/dist/cli/chunks/{chunk-K4T3RDCB.js → chunk-PXTDEO65.js} +2 -2
- package/dist/cli/chunks/{chunk-GRYXNWPF.js → chunk-PYIHZXCI.js} +12 -12
- package/dist/cli/chunks/{chunk-HRDGN3OK.js → chunk-QBRHKTFT.js} +1 -1
- package/dist/cli/chunks/{chunk-COZDJLIL.js → chunk-QEPFXY6G.js} +1 -1
- package/dist/cli/chunks/{chunk-HPNEZ7YN.js → chunk-QJ2EHLJ2.js} +1 -1
- package/dist/cli/chunks/{chunk-GMKGLZJU.js → chunk-QQNCSEZG.js} +2 -2
- package/dist/cli/chunks/{chunk-CR4ERDS2.js → chunk-QSE67XJO.js} +2 -2
- package/dist/cli/chunks/{chunk-7CKVAYP3.js → chunk-R2O6OKT2.js} +1 -1
- package/dist/cli/chunks/{chunk-OVENSL64.js → chunk-RLXTBL3H.js} +8 -8
- package/dist/cli/chunks/{chunk-PW6MOFXG.js → chunk-RNREAOY4.js} +2 -2
- package/dist/cli/chunks/{chunk-YYWIA5FX.js → chunk-S3OZ7XSY.js} +1 -1
- package/dist/cli/chunks/{chunk-KZJXVIAW.js → chunk-S3ZO7JXS.js} +2 -2
- package/dist/cli/chunks/{chunk-ZEMXMDD3.js → chunk-SJH3HYNC.js} +2 -2
- package/dist/cli/chunks/{chunk-5OTYBWRL.js → chunk-STEGWLH5.js} +2 -2
- package/dist/cli/chunks/{chunk-F3OVFA6W.js → chunk-SVYTN2GT.js} +2 -2
- package/dist/cli/chunks/{chunk-QNW335PD.js → chunk-SW4OKUTC.js} +2 -2
- package/dist/cli/chunks/{chunk-WS4XVJHI.js → chunk-THRTUW4Z.js} +1 -1
- package/dist/cli/chunks/{chunk-NPSBMDVU.js → chunk-TJKDATEU.js} +2 -2
- package/dist/cli/chunks/{chunk-H22MMMYY.js → chunk-U3EUH6LX.js} +2 -2
- package/dist/cli/chunks/{chunk-FJSR2U65.js → chunk-UUFOHMUG.js} +2 -2
- package/dist/cli/chunks/{chunk-RWYW573C.js → chunk-UVU7XLJY.js} +3 -3
- package/dist/cli/chunks/{chunk-BF7MUYWC.js → chunk-UWXH2UQK.js} +2 -2
- package/dist/cli/chunks/{chunk-UU2Q6XWF.js → chunk-UYYBPWU3.js} +1 -1
- package/dist/cli/chunks/{chunk-AUVC3DDB.js → chunk-VSUTI4G6.js} +2 -2
- package/dist/cli/chunks/{chunk-25QGPRWN.js → chunk-WDMPJ2M2.js} +2 -2
- package/dist/cli/chunks/{chunk-MVGVD6LS.js → chunk-WNR2KAUH.js} +2 -2
- package/dist/cli/chunks/{chunk-NDCPEXDN.js → chunk-WSVUSIAZ.js} +2 -2
- package/dist/cli/chunks/{chunk-T3UXMPXX.js → chunk-WZJUMJ2S.js} +1 -1
- package/dist/cli/chunks/{chunk-TX7SNQKL.js → chunk-X2VAOIUY.js} +1 -1
- package/dist/cli/chunks/{chunk-DVOH75S4.js → chunk-XDSA7YUQ.js} +1 -1
- package/dist/cli/chunks/{chunk-TNGGVMPQ.js → chunk-XDU624HU.js} +1 -1
- package/dist/cli/chunks/{chunk-6ZRMQXVL.js → chunk-XGBAHAGC.js} +2 -2
- package/dist/cli/chunks/{chunk-IITKJCPK.js → chunk-XMJTTF5N.js} +2 -2
- package/dist/cli/chunks/{chunk-2TDWCXZ6.js → chunk-XPCNUX2U.js} +2 -2
- package/dist/cli/chunks/{chunk-W6ZF2CPN.js → chunk-XRJECWZE.js} +1 -1
- package/dist/cli/chunks/{chunk-MQYTW2IN.js → chunk-XTCUN36Z.js} +2 -2
- package/dist/cli/chunks/{chunk-7MSYTHZM.js → chunk-Y63MBMOV.js} +2 -2
- package/dist/cli/chunks/{chunk-6QFONVEE.js → chunk-YACT5WFC.js} +2 -2
- package/dist/cli/chunks/{chunk-PLRSKAFZ.js → chunk-YI6GNRQM.js} +2 -2
- package/dist/cli/chunks/chunk-YNNOY3XN.js +62 -0
- package/dist/cli/chunks/{chunk-XGUQYVJR.js → chunk-YWZHMXTO.js} +2 -2
- package/dist/cli/chunks/{chunk-OQP5OFRR.js → chunk-ZDHMZPSL.js} +1 -1
- package/dist/cli/chunks/{chunk-NRLT44YB.js → chunk-ZGNZJJFF.js} +1 -1
- package/dist/cli/chunks/{chunk-ELUERFGA.js → chunk-ZK2BH23O.js} +2 -2
- package/dist/cli/chunks/{chunk-AABKTWXC.js → chunk-ZQUXNG5X.js} +2 -2
- package/dist/cli/chunks/{chunk-WQEZKAUR.js → chunk-ZXTO4C7R.js} +2 -2
- package/dist/cli/chunks/{ci-EHRUN7O6.js → ci-PYCRCL7G.js} +2 -2
- package/dist/cli/chunks/{ci-output-EXDXVXKB.js → ci-output-EKQQFE2D.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-LM4QRAAL.js → circuit-breaker-RH3Q2MJO.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-ZHUCZVW7.js → claude-flow-setup-DUDXB4VV.js} +2 -2
- package/dist/cli/chunks/client-RDPWGOSA.js +2 -0
- package/dist/cli/chunks/{cline-installer-WMFLQOW2.js → cline-installer-3Q4WIWUG.js} +2 -2
- package/dist/cli/chunks/{code-L7KRLU5E.js → code-E4Q6DGOO.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-FTMUYQC6.js → code-index-extractor-2PCISUOW.js} +2 -2
- package/dist/cli/chunks/{codex-installer-B3F6WI3Z.js → codex-installer-YNNNOLJ6.js} +2 -2
- package/dist/cli/chunks/{completions-3JZQRNB6.js → completions-2F7TUFBD.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-LB2FFEKX.js → complexity-analyzer-2B6MHO7W.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-WH6IMV7R.js → continuedev-installer-ENOKRU5M.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-NOIEOFJM.js → copilot-installer-6YD2KM5F.js} +2 -2
- package/dist/cli/chunks/{cost-tracker-IKX2VYSA.js → cost-tracker-FCH4QOEA.js} +2 -2
- package/dist/cli/chunks/{coverage-TD37CYSY.js → coverage-JTOXZE3T.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-4K5ZVZEZ.js +2 -0
- package/dist/cli/chunks/{cursor-installer-4NSVGRM5.js → cursor-installer-QZFBUGLQ.js} +2 -2
- package/dist/cli/chunks/{daemon-LYDV7NRW.js → daemon-K4QFB5FQ.js} +3 -3
- package/dist/cli/chunks/{daemon-UWEBUIDT.js → daemon-M422U3ZA.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-NECJGCHC.js → dag-attention-scheduler-BXAAW33V.js} +2 -2
- package/dist/cli/chunks/{detect-4XGC7ILO.js → detect-UGSWIOAD.js} +2 -2
- package/dist/cli/chunks/{dist-node-GGJDXRKJ.js → dist-node-FN3HX3OK.js} +2 -2
- package/dist/cli/chunks/{domain-handler-UOFONAUT.js → domain-handler-7PP7VYA7.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-6JLNOYPA.js → domain-transfer-XZM44W7I.js} +2 -2
- package/dist/cli/chunks/dream-RPNWM7VS.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-ZM75DQ4J.js → embed-and-insert-pattern-JZVERJ5L.js} +2 -2
- package/dist/cli/chunks/{eval-CYZJTHEB.js → eval-466NFF2D.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-RBOJLDUB.js → experience-capture-middleware-I7IQCC7V.js} +3 -3
- package/dist/cli/chunks/{fast-paths-S5BWZR3L.js → fast-paths-34OICNZA.js} +2 -2
- package/dist/cli/chunks/{feature-flags-6E7H3NYP.js → feature-flags-6UBIVTAD.js} +2 -2
- package/dist/cli/chunks/{feature-flags-DUNQPDU3.js → feature-flags-X5WBBWSO.js} +2 -2
- package/dist/cli/chunks/{file-discovery-PFFKDGYG.js → file-discovery-NLMDBWXX.js} +2 -2
- package/dist/cli/chunks/{fleet-RCDZZFXN.js → fleet-W7CYCHDI.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-5AG3WDWF.js → gnn-wrapper-K4VTAG5X.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-O2KAEX4Y.js → heartbeat-handler-ZGKF2Z6T.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-JBCXMMZO.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-3SC2HZIG.js +2 -0
- package/dist/cli/chunks/hnsw-index-FQORAR6K.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-C7FG6YGW.js → hnsw-legacy-bridge-ELDRLKK5.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-XGPW4HK5.js → hnswlib-node-ZGSUMHDC.js} +2 -2
- package/dist/cli/chunks/{hooks-FUHNE2P7.js → hooks-T4CBINAV.js} +13 -13
- package/dist/cli/chunks/hybrid-router-6CBFDXPR.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-LQRYBNPV.js → hypergraph-engine-UWFW3XP5.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-AFFNLZVD.js → hypergraph-handler-PK2BI46K.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-SOEFVZWG.js +2 -0
- package/dist/cli/chunks/{init-handler-BQ6IDBX4.js → init-handler-HNG6KJOU.js} +6 -6
- package/dist/cli/chunks/init-wizard-3E4IU5M4.js +2 -0
- package/dist/cli/chunks/kernel-GFZP4G5J.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-KS72HUSG.js → kilocode-installer-25V7FEJ4.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-2ZEFLGRX.js → kiro-installer-7RMTTCQB.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-BKRKBU26.js +2 -0
- package/dist/cli/chunks/{learning-GGHGJ6B6.js → learning-XQC2MG2R.js} +3 -3
- package/dist/cli/chunks/{llm-router-LP6K5BJF.js → llm-router-6KTTONH4.js} +4 -4
- package/dist/cli/chunks/llm-router-service-KE4IGZPP.js +2 -0
- package/dist/cli/chunks/{load-2MLKXOT2.js → load-BV64P3AL.js} +2 -2
- package/dist/cli/chunks/load-test-VSYJV2AO.js +2 -0
- package/dist/cli/chunks/{mcp-CDJBJG5H.js → mcp-U5ZN77TA.js} +2 -2
- package/dist/cli/chunks/{memory-4LAX7JZS.js → memory-WB5BNBK7.js} +5 -5
- package/dist/cli/chunks/memory-backend-B72RGHRF.js +2 -0
- package/dist/cli/chunks/{memory-handlers-OBAFR4WV.js → memory-handlers-NWCH7AUO.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-SLJV73HE.js → multi-model-executor-3X3W3UTY.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-M76SONWV.js → opencode-installer-TTTMG7ZZ.js} +2 -2
- package/dist/cli/chunks/{orchestrator-TJPUDJMP.js → orchestrator-BLCGSHMZ.js} +18 -18
- package/dist/cli/chunks/{pipeline-2PVNFT6J.js → pipeline-DZPGMRG7.js} +2 -2
- package/dist/cli/chunks/{platform-KCSEDKEE.js → platform-EVMZAUNV.js} +2 -2
- package/dist/cli/chunks/{plugin-QX47QF5U.js → plugin-OR55K4HT.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-L6VWL7VR.js → prime-radiant-advanced-wasm-4ODV27HD.js} +2 -2
- package/dist/cli/chunks/protocol-executor-V3F37FPO.js +2 -0
- package/dist/cli/chunks/{protocol-handler-WDNJDEUE.js → protocol-handler-ZOTI5PID.js} +2 -2
- package/dist/cli/chunks/{prove-3B75DA3S.js → prove-DIMBYJ7V.js} +2 -2
- package/dist/cli/chunks/provider-manager-2PN72TT6.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-P665QNIR.js +2 -0
- package/dist/cli/chunks/{quality-UGASS5WM.js → quality-7MX4VL6M.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-XD4F7BGB.js +2 -0
- package/dist/cli/chunks/{real-embeddings-COBP2LHS.js → real-embeddings-YPUHWRN2.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-TOZ4VLFT.js → roocode-installer-WG5AU4QM.js} +2 -2
- package/dist/cli/chunks/router-4SSNWDJC.js +2 -0
- package/dist/cli/chunks/routing-feedback-O2JSIBW6.js +2 -0
- package/dist/cli/chunks/{routing-handler-5TDVSILX.js → routing-handler-LZB4MN2K.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-AM63KWQN.js → ruvector-commands-YE4ADBMC.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-UANIFE2M.js → rvf-dual-writer-QS5ATW4C.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-LNPYWAPI.js → rvf-migration-adapter-YIGKSBD3.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-U47L63DQ.js → rvf-migration-coordinator-2NDCWP7F.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-WIUHYXRB.js +2 -0
- package/dist/cli/chunks/safe-db-WL5Y7ZNS.js +2 -0
- package/dist/cli/chunks/schedule-U7QDGU5A.js +2 -0
- package/dist/cli/chunks/scheduler-LXKGQYXA.js +2 -0
- package/dist/cli/chunks/{security-KDQ2AH7G.js → security-HT4SUT24.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-5MAGLLYJ.js → shared-rvf-adapter-4IZOJL33.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-GF2OPPM5.js → shared-rvf-dual-writer-ZKFO7CBY.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-4KFO3SEB.js +2 -0
- package/dist/cli/chunks/{status-handler-XZKEL7LO.js → status-handler-AMEMKBI4.js} +2 -2
- package/dist/cli/chunks/{structural-health-27QKWW25.js → structural-health-RBADRLC3.js} +2 -2
- package/dist/cli/chunks/{sync-V3HGPEJT.js → sync-ARDDLQBS.js} +2 -2
- package/dist/cli/chunks/{sync-INNKS6UK.js → sync-PCB23M4K.js} +2 -2
- package/dist/cli/chunks/{task-handler-LDUVOM6G.js → task-handler-J26FSCH5.js} +2 -2
- package/dist/cli/chunks/{task-handlers-HTCPV7OO.js → task-handlers-AQRLR6BL.js} +3 -3
- package/dist/cli/chunks/{test-PCUVGVJL.js → test-YXWSIOSB.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-GYVXWCAA.js → test-scheduling-XY532GI4.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-MJ2ANC4P.js → token-bootstrap-KL2QIQ36.js} +2 -2
- package/dist/cli/chunks/{token-usage-ZREHROTF.js → token-usage-2MJVE4DT.js} +2 -2
- package/dist/cli/chunks/{transformers-6B3FWFYL.js → transformers-QSNTOD2Z.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-JVV234MN.js → tree-sitter-wasm-parser-QJOKHOIW.js} +2 -2
- package/dist/cli/chunks/{types-MVZTJI2F.js → types-RNKRSYMO.js} +2 -2
- package/dist/cli/chunks/unified-memory-7AS4LIEF.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-GREESNJX.js +2 -0
- package/dist/cli/chunks/unified-persistence-BPJOMZOA.js +2 -0
- package/dist/cli/chunks/{upgrade-MKTFEILD.js → upgrade-EKJHIFWP.js} +2 -2
- package/dist/cli/chunks/{validate-IABGALSW.js → validate-KS4T7LWC.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-RHF53RF6.js → validate-swarm-SKKWRP2H.js} +2 -2
- package/dist/cli/chunks/{vibium-RAKW6FMF.js → vibium-FLUQO4IF.js} +2 -2
- package/dist/cli/chunks/visual-security-BW662FHQ.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-PYK7F4JZ.js → web-tree-sitter-UMC63DWD.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-S3U2HWZ4.js → windsurf-installer-V3FQGJIQ.js} +2 -2
- package/dist/cli/chunks/{witness-chain-435NKQLB.js → witness-chain-GE74TLSO.js} +2 -2
- package/dist/cli/chunks/witness-chain-OXVDLNVT.js +2 -0
- package/dist/cli/chunks/{workflow-5UHJCZ6J.js → workflow-4YZ2RPWA.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-KKNR46XV.js +2 -0
- package/dist/cli/chunks/{wrappers-RD3NCMLK.js → wrappers-37NLMKPE.js} +2 -2
- package/dist/cli/commands/hooks-handlers/command-hooks.js +1 -1
- package/dist/cli/commands/hooks-handlers/routing-hooks.js +1 -1
- package/dist/cli/commands/hooks-handlers/task-hooks.js +1 -1
- package/dist/init/init-wizard-hooks.js +271 -271
- package/dist/init/phases/07-hooks.d.ts +7 -0
- package/dist/init/phases/07-hooks.js +132 -96
- package/dist/learning/agent-routing.d.ts +19 -0
- package/dist/learning/agent-routing.js +27 -1
- package/dist/learning/dream/dream-scheduler.d.ts +11 -36
- package/dist/learning/dream/dream-scheduler.js +44 -0
- package/dist/learning/experience-consolidation.d.ts +16 -0
- package/dist/learning/experience-consolidation.js +55 -11
- package/dist/learning/pattern-lifecycle.d.ts +21 -0
- package/dist/learning/pattern-lifecycle.js +70 -6
- package/dist/mcp/bundle.js +352 -349
- package/dist/mcp/protocol-server.js +13 -14
- package/dist/mcp/transport/stdio.d.ts +20 -0
- package/dist/mcp/transport/stdio.js +35 -2
- package/dist/shared/utils/rabitq.d.ts +133 -0
- package/dist/shared/utils/rabitq.js +201 -0
- package/package.json +8 -2
- package/dist/cli/chunks/adapter-3JS2CN7C.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-Q4GFNGU6.js +0 -2
- package/dist/cli/chunks/base-Q3MAL22Y.js +0 -2
- package/dist/cli/chunks/browser-workflow-JX3M2UWG.js +0 -2
- package/dist/cli/chunks/chunk-IJ4BUSJN.js +0 -95
- package/dist/cli/chunks/chunk-VPCE5CIT.js +0 -2
- package/dist/cli/chunks/chunk-WO7KYT3X.js +0 -62
- package/dist/cli/chunks/client-PA3UJIHH.js +0 -2
- package/dist/cli/chunks/cross-domain-router-BVJRP2ZX.js +0 -2
- package/dist/cli/chunks/dream-BXZUEIW2.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-LEKAWFJF.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-2TCEG5M2.js +0 -2
- package/dist/cli/chunks/hnsw-index-VDPUTEES.js +0 -2
- package/dist/cli/chunks/hybrid-router-2EMDIYIG.js +0 -2
- package/dist/cli/chunks/impact-analyzer-HFD6CPWC.js +0 -2
- package/dist/cli/chunks/init-wizard-552QIVRC.js +0 -2
- package/dist/cli/chunks/kernel-5DN6O6EE.js +0 -2
- package/dist/cli/chunks/knowledge-graph-76Y77MB6.js +0 -2
- package/dist/cli/chunks/llm-router-service-4O6GCEFH.js +0 -2
- package/dist/cli/chunks/load-test-FCI2IWRJ.js +0 -2
- package/dist/cli/chunks/memory-backend-MKNCBNDE.js +0 -2
- package/dist/cli/chunks/protocol-executor-IA7WNT23.js +0 -2
- package/dist/cli/chunks/provider-manager-3K5KB5A6.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-V5Z3BBYY.js +0 -2
- package/dist/cli/chunks/queen-coordinator-QOMPA27Z.js +0 -2
- package/dist/cli/chunks/router-P5RZUPC4.js +0 -2
- package/dist/cli/chunks/routing-feedback-3PS3OZQC.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-TT7OJPKM.js +0 -2
- package/dist/cli/chunks/safe-db-PEW7VBAE.js +0 -2
- package/dist/cli/chunks/schedule-QHOTHBQE.js +0 -2
- package/dist/cli/chunks/scheduler-KXJBYTRT.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-TPXJK34J.js +0 -2
- package/dist/cli/chunks/unified-memory-ROS2NKR5.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-FLEUF3XO.js +0 -2
- package/dist/cli/chunks/unified-persistence-QC5L7UNQ.js +0 -2
- package/dist/cli/chunks/visual-security-NLIOUQCR.js +0 -2
- package/dist/cli/chunks/witness-chain-U7X6JX5J.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-APE6BAXH.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
2
|
-
import{a as c}from"./chunk-HPNEZ7YN.js";function e(i){return{...i,performanceScore:.7,tasksCompleted:0,successRate:0,avgDurationMs:0}}var u=[e({id:"v3-qe-tdd-specialist",name:"V3 QE TDD Specialist",description:"V3 QE TDD specialist covering RED, GREEN, REFACTOR phases with comprehensive test-driven development support",domains:["test-generation"],capabilities:["test-generation","tdd","unit-test","test-quality"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","pytest"],complexity:{min:"simple",max:"complex"},tags:["v3","tdd","red-green-refactor"]}),e({id:"v3-qe-test-architect",name:"V3 QE Test Architect",description:"V3 QE Test Architect for AI-powered test generation strategy, test pyramid design, and cross-framework test orchestration",domains:["test-generation"],capabilities:["test-generation","test-orchestration","unit-test","integration-test","e2e-test"],languages:["typescript","javascript","python","java","go"],frameworks:["jest","vitest","pytest","junit5","playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","architect","strategy"]}),e({id:"v3-qe-parallel-executor",name:"V3 QE Parallel Executor",description:"V3 QE Parallel test executor with intelligent sharding, worker pool management, retry logic, and real-time reporting",domains:["test-execution"],capabilities:["test-orchestration","retry","flaky-detection"],languages:["typescript","javascript","python","java","go"],frameworks:["jest","vitest","pytest","junit5","go-test","playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","parallel","retry","sharding"]}),e({id:"v3-qe-flaky-hunter",name:"V3 QE Flaky Hunter",description:"V3 QE Flaky test detection and stabilization through pattern recognition, auto-remediation, and retry orchestration",domains:["test-execution"],capabilities:["flaky-detection","test-stability","retry"],frameworks:["jest","vitest","pytest","playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","flaky","stability","remediation"]}),e({id:"v3-qe-retry-handler",name:"V3 QE Retry Handler",description:"V3 QE Intelligent retry handler with adaptive backoff, circuit breakers, and failure classification",domains:["test-execution"],capabilities:["retry","test-stability"],frameworks:["jest","vitest","pytest","playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","retry","adaptive-backoff"]}),e({id:"v3-qe-coverage-specialist",name:"V3 QE Coverage Specialist",description:"V3 QE Coverage Specialist for O(log n) sublinear coverage analysis, risk-weighted gap detection, and intelligent test prioritization",domains:["coverage-analysis"],capabilities:["coverage-analysis","gap-detection","sublinear-analysis","risk-scoring","branch-coverage"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","sublinear","prioritization"]}),e({id:"v3-qe-gap-detector",name:"V3 QE Gap Detector",description:"V3 QE Coverage gap detection with sublinear algorithms (O(log n) analysis), risk scoring, and intelligent test recommendations",domains:["coverage-analysis"],capabilities:["coverage-analysis","gap-detection","sublinear-analysis","risk-scoring"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","sublinear","gap-detection"]}),e({id:"v3-qe-quality-gate",name:"V3 QE Quality Gate",description:"V3 QE Quality gate enforcement with risk assessment, policy validation, and deployment readiness evaluation",domains:["quality-assessment"],capabilities:["quality-gate","deployment-readiness","risk-scoring"],complexity:{min:"medium",max:"complex"},tags:["v3","gate","deployment","policy"]}),e({id:"v3-qe-deployment-advisor",name:"V3 QE Deployment Advisor",description:"V3 QE Aggregates quality signals for deployment risk assessment and go/no-go decisions with predictive analytics",domains:["quality-assessment"],capabilities:["deployment-readiness","quality-gate","risk-scoring"],complexity:{min:"medium",max:"complex"},tags:["v3","deployment","go-no-go","analytics"]}),e({id:"v3-qe-code-complexity",name:"V3 QE Code Complexity",description:"V3 QE AI-powered code complexity analysis with refactoring recommendations and technical debt tracking",domains:["quality-assessment"],capabilities:["quality-gate","risk-scoring"],languages:["typescript","javascript","python","java","go"],complexity:{min:"simple",max:"complex"},tags:["v3","complexity","refactoring","debt"]}),e({id:"v3-qe-qx-partner",name:"V3 QE QX Partner",description:"V3 QE Quality Experience (QX) analysis combining QA advocacy and UX perspectives to co-create quality for all stakeholders",domains:["quality-assessment"],capabilities:["quality-gate"],complexity:{min:"medium",max:"complex"},tags:["v3","qx","ux","advocacy"]}),e({id:"v3-qe-security-scanner",name:"V3 QE Security Scanner",description:"V3 QE Security scanning with SAST/DAST, vulnerability detection, OWASP compliance, and threat modeling",domains:["security-compliance"],capabilities:["sast","dast","vulnerability","owasp","security-scanning"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","sast","dast","owasp"]}),e({id:"v3-qe-security-auditor",name:"V3 QE Security Auditor",description:"V3 QE Security audits for vulnerabilities, compliance validation, and security best practices enforcement",domains:["security-compliance"],capabilities:["sast","vulnerability","owasp","security-scanning"],languages:["typescript","javascript","python","java"],complexity:{min:"medium",max:"complex"},tags:["v3","audit","compliance"]}),e({id:"v3-qe-contract-validator",name:"V3 QE Contract Validator",description:"V3 QE API contract validation, breaking change detection, and backward compatibility with consumer-driven contract testing",domains:["contract-testing"],capabilities:["api-testing","contract-testing","pact","openapi"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","contract","api","pact"]}),e({id:"v3-qe-integration-tester",name:"V3 QE Integration Tester",description:"V3 QE Validates component interactions and system integration with comprehensive test scenarios",domains:["contract-testing"],capabilities:["integration-test","api-testing","contract-testing"],languages:["typescript","javascript","python","java"],frameworks:["jest","vitest","pytest","junit5"],complexity:{min:"medium",max:"complex"},tags:["v3","integration","component"]}),e({id:"v3-qe-graphql-tester",name:"V3 QE GraphQL Tester",description:"V3 QE GraphQL API testing with schema validation, query/mutation testing, and security analysis",domains:["contract-testing"],capabilities:["api-testing","contract-testing","graphql"],languages:["typescript","javascript","python"],complexity:{min:"medium",max:"complex"},tags:["v3","graphql","api"]}),e({id:"v3-qe-visual-tester",name:"V3 QE Visual Tester",description:"V3 QE Visual regression testing with AI-powered screenshot comparison and accessibility validation",domains:["visual-accessibility"],capabilities:["visual-regression","screenshot","percy","chromatic","wcag","aria"],frameworks:["playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","visual","regression","screenshots"]}),e({id:"v3-qe-accessibility-auditor",name:"V3 QE Accessibility Auditor",description:"V3 QE Accessibility testing with WCAG 2.2 compliance, screen reader validation, and copy-paste ready fixes",domains:["visual-accessibility"],capabilities:["wcag","aria","screen-reader","contrast"],frameworks:["playwright","cypress"],complexity:{min:"simple",max:"complex"},tags:["v3","wcag","a11y","accessibility"]}),e({id:"v3-qe-responsive-tester",name:"V3 QE Responsive Tester",description:"V3 QE Responsive design testing across viewports, devices, and breakpoints with layout regression detection",domains:["visual-accessibility"],capabilities:["visual-regression"],frameworks:["playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","responsive","viewport","breakpoints"]}),e({id:"v3-qe-performance-tester",name:"V3 QE Performance Tester",description:"V3 QE Performance testing with load orchestration, bottleneck detection, and SLA validation",domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","k6","artillery","benchmark"],complexity:{min:"medium",max:"complex"},tags:["v3","load","stress","performance"]}),e({id:"v3-qe-load-tester",name:"V3 QE Load Tester",description:"V3 QE Load and stress testing with execution time analysis, rate limit testing, and bottleneck detection",domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","k6","artillery"],complexity:{min:"medium",max:"complex"},tags:["v3","load","stress","k6"]}),e({id:"v3-qe-chaos-engineer",name:"V3 QE Chaos Engineer",description:"V3 QE Resilience testing with controlled fault injection, blast radius management, and recovery validation",domains:["chaos-resilience"],capabilities:["chaos-testing","resilience","fault-injection"],complexity:{min:"complex",max:"complex"},tags:["v3","chaos","fault-injection","resilience"]}),e({id:"v3-qe-code-intelligence",name:"V3 QE Code Intelligence",description:"V3 QE Knowledge graph-based code understanding with semantic search and AST analysis",domains:["code-intelligence"],capabilities:["coverage-analysis","gap-detection"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","knowledge-graph","ast","semantic"]}),e({id:"v3-qe-dependency-mapper",name:"V3 QE Dependency Mapper",description:"V3 QE Dependency graph analysis with coupling metrics and security advisories",domains:["code-intelligence"],capabilities:["coverage-analysis","gap-detection"],languages:["typescript","javascript","python","java"],complexity:{min:"medium",max:"complex"},tags:["v3","dependency","graph"]}),e({id:"v3-qe-kg-builder",name:"V3 QE Knowledge Graph Builder",description:"V3 QE Knowledge graph construction with entity extraction and relationship inference",domains:["code-intelligence"],capabilities:["coverage-analysis","gap-detection"],languages:["typescript","javascript","python"],complexity:{min:"complex",max:"complex"},tags:["v3","knowledge-graph","entity-extraction"]}),e({id:"v3-qe-integration-architect",name:"V3 QE Integration Architect",description:"V3 QE deep agentic-flow integration specialist implementing ADR-001 for duplicate elimination and extension architecture",domains:["code-intelligence"],capabilities:["coverage-analysis","gap-detection","quality-gate"],languages:["typescript","javascript"],complexity:{min:"complex",max:"complex"},tags:["v3","integration","adr-001","architecture"]}),e({id:"v3-qe-requirements-validator",name:"V3 QE Requirements Validator",description:"V3 QE Validates requirements testability and generates BDD scenarios with testability scoring",domains:["requirements-validation"],capabilities:["bdd","test-generation"],complexity:{min:"medium",max:"complex"},tags:["v3","requirements","bdd","testability"]}),e({id:"v3-qe-bdd-generator",name:"V3 QE BDD Generator",description:"V3 QE BDD scenario generation with Gherkin syntax, example discovery, and step definition mapping",domains:["requirements-validation"],capabilities:["bdd","test-generation"],complexity:{min:"medium",max:"complex"},tags:["v3","bdd","gherkin","cucumber"]}),e({id:"v3-qe-product-factors-assessor",name:"V3 QE Product Factors Assessor",description:"V3 QE SFDIPOT product factors analysis using James Bach's HTSM framework for comprehensive test strategy generation with prioritized test ideas (P0-P3) and automation fitness recommendations",domains:["requirements-validation"],capabilities:["bdd","test-generation","risk-scoring"],complexity:{min:"medium",max:"complex"},tags:["v3","sfdipot","htsm","product-factors","james-bach"]}),e({id:"v3-qe-test-idea-rewriter",name:"V3 QE Test Idea Rewriter",description:'V3 QE Transform passive "Verify X" test descriptions into active, observable test actions using action verbs for clearer, more testable descriptions',domains:["test-generation"],capabilities:["test-generation","test-quality"],complexity:{min:"simple",max:"medium"},tags:["v3","test-ideas","rewriting","action-verbs","quality"]}),e({id:"v3-qe-quality-criteria-recommender",name:"V3 QE Quality Criteria Recommender",description:"V3 QE HTSM v6.3 Quality Criteria analysis for shift-left quality engineering during PI/Sprint Planning with evidence-based recommendations",domains:["requirements-validation"],capabilities:["bdd","test-generation","quality-gate"],complexity:{min:"medium",max:"complex"},tags:["v3","htsm","quality-criteria","shift-left","qcsd"]}),e({id:"v3-qe-defect-predictor",name:"V3 QE Defect Predictor",description:"V3 QE AI-powered defect prediction using historical data and code metrics",domains:["defect-intelligence"],capabilities:["risk-scoring","coverage-analysis"],languages:["typescript","javascript","python","java"],complexity:{min:"complex",max:"complex"},tags:["v3","defect","prediction","ml"]}),e({id:"v3-qe-root-cause-analyzer",name:"V3 QE Root Cause Analyzer",description:"V3 QE Systematic root cause analysis for test failures with prevention recommendations",domains:["defect-intelligence"],capabilities:["risk-scoring"],complexity:{min:"complex",max:"complex"},tags:["v3","root-cause","failure-analysis"]}),e({id:"v3-qe-regression-analyzer",name:"V3 QE Regression Analyzer",description:"V3 QE Analyzes code changes to predict regression risk and intelligently select minimal test suites",domains:["defect-intelligence"],capabilities:["risk-scoring","coverage-analysis"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","regression","risk","selection"]}),e({id:"v3-qe-impact-analyzer",name:"V3 QE Impact Analyzer",description:"V3 QE Change impact analysis with blast radius calculation and test selection",domains:["defect-intelligence"],capabilities:["risk-scoring","coverage-analysis"],languages:["typescript","javascript","python","java"],complexity:{min:"medium",max:"complex"},tags:["v3","impact","blast-radius"]}),e({id:"v3-qe-risk-assessor",name:"V3 QE Risk Assessor",description:"V3 QE Quality risk assessment with multi-factor scoring and mitigation recommendations",domains:["defect-intelligence"],capabilities:["risk-scoring"],complexity:{min:"medium",max:"complex"},tags:["v3","risk","assessment"]}),e({id:"v3-qe-learning-coordinator",name:"V3 QE Learning Coordinator",description:"V3 QE Fleet-wide learning coordination with pattern recognition and knowledge synthesis",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","learning","coordination","patterns"]}),e({id:"v3-qe-pattern-learner",name:"V3 QE Pattern Learner",description:"V3 QE Pattern discovery and learning from QE activities for test generation and defect prediction",domains:["learning-optimization"],capabilities:["test-generation","risk-scoring"],complexity:{min:"complex",max:"complex"},tags:["v3","pattern","learning","ml"]}),e({id:"v3-qe-transfer-specialist",name:"V3 QE Transfer Specialist",description:"V3 QE Knowledge transfer learning with domain adaptation and knowledge distillation",domains:["learning-optimization"],capabilities:["test-generation"],complexity:{min:"complex",max:"complex"},tags:["v3","transfer","learning","adaptation"]}),e({id:"v3-qe-metrics-optimizer",name:"V3 QE Metrics Optimizer",description:"V3 QE Learning metrics optimization with hyperparameter tuning and A/B testing",domains:["learning-optimization"],capabilities:["quality-gate"],complexity:{min:"complex",max:"complex"},tags:["v3","metrics","optimization","tuning"]}),e({id:"v3-qe-fleet-commander",name:"V3 QE Fleet Commander",description:"V3 QE Hierarchical fleet coordinator for 50+ agent orchestration with dynamic topology management and resource optimization",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","fleet","orchestration","coordination"]}),e({id:"v3-qe-queen-coordinator",name:"V3 QE Queen Coordinator",description:"V3 QE Queen Coordinator for multi-agent concurrent swarm orchestration, quality engineering workflows, and cross-agent coordination",domains:["learning-optimization"],capabilities:["test-orchestration","quality-gate"],complexity:{min:"complex",max:"complex"},tags:["v3","queen","swarm"]}),e({id:"v3-qe-property-tester",name:"V3 QE Property Tester",description:"V3 QE Property-based testing with fast-check for edge case discovery through randomized input generation",domains:["test-generation"],capabilities:["test-generation","unit-test"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","mocha"],complexity:{min:"medium",max:"complex"},tags:["v3","property","pbt","edge-cases"]}),e({id:"v3-qe-mutation-tester",name:"V3 QE Mutation Tester",description:"V3 QE Mutation testing for test suite effectiveness evaluation with mutation score analysis",domains:["test-generation"],capabilities:["test-quality","coverage-analysis"],languages:["typescript","javascript","python"],frameworks:["jest","vitest"],complexity:{min:"medium",max:"complex"},tags:["v3","mutation","test-quality"]})],y=[e({id:"v3-qe-tdd-red",name:"V3 QE TDD RED Phase",description:"V3 QE TDD RED phase specialist - writes failing tests that define expected behavior before implementation",domains:["test-generation"],capabilities:["test-generation","tdd","unit-test"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","pytest"],complexity:{min:"simple",max:"medium"},tags:["v3","tdd","red-phase","subagent"]}),e({id:"v3-qe-tdd-green",name:"V3 QE TDD GREEN Phase",description:"V3 QE TDD GREEN phase specialist - implements minimal code to make failing tests pass",domains:["test-generation"],capabilities:["test-generation","tdd","unit-test"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","pytest"],complexity:{min:"simple",max:"medium"},tags:["v3","tdd","green-phase","subagent"]}),e({id:"v3-qe-tdd-refactor",name:"V3 QE TDD REFACTOR Phase",description:"V3 QE TDD REFACTOR phase specialist - improves code quality while keeping all tests passing",domains:["test-generation"],capabilities:["test-generation","tdd","test-quality"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","pytest"],complexity:{min:"medium",max:"complex"},tags:["v3","tdd","refactor-phase","subagent"]}),e({id:"v3-qe-code-reviewer",name:"V3 QE Code Reviewer",description:"V3 QE Code review specialist enforcing quality standards, linting, complexity, and security",domains:["quality-assessment"],capabilities:["quality-gate","security-scanning"],languages:["typescript","javascript","python","java","go"],complexity:{min:"simple",max:"complex"},tags:["v3","code-review","standards","subagent"]}),e({id:"v3-qe-integration-reviewer",name:"V3 QE Integration Reviewer",description:"V3 QE Integration review specialist for API compatibility and cross-service interactions",domains:["contract-testing"],capabilities:["integration-test","api-testing"],languages:["typescript","javascript","python","java"],complexity:{min:"medium",max:"complex"},tags:["v3","integration","review","subagent"]}),e({id:"v3-qe-performance-reviewer",name:"V3 QE Performance Reviewer",description:"V3 QE Performance review specialist for algorithmic complexity and resource usage",domains:["chaos-resilience"],capabilities:["load-testing","benchmark"],languages:["typescript","javascript","python","go"],complexity:{min:"medium",max:"complex"},tags:["v3","performance","review","subagent"]}),e({id:"v3-qe-security-reviewer",name:"V3 QE Security Reviewer",description:"V3 QE Security review specialist for vulnerability detection and secure coding practices",domains:["security-compliance"],capabilities:["sast","vulnerability","security-scanning"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","security","review","subagent"]})],v=[e({id:"n8n-base-agent",name:"n8n Base Agent",description:"Abstract base agent for n8n workflow automation testing - provides common utilities for all n8n testing agents",domains:["test-generation"],capabilities:["test-generation","test-orchestration"],complexity:{min:"simple",max:"simple"},tags:["n8n","base","workflow"]}),e({id:"n8n-workflow-executor",name:"n8n Workflow Executor",description:"Execute and validate n8n workflows programmatically with test data injection, output assertions, and data flow validation",domains:["test-execution"],capabilities:["test-orchestration","integration-test"],complexity:{min:"medium",max:"complex"},tags:["n8n","execution","validation"]}),e({id:"n8n-unit-tester",name:"n8n Unit Tester",description:"Unit test custom n8n node functions with Jest/Vitest integration, function isolation, mock data injection, and coverage reporting",domains:["test-generation"],capabilities:["unit-test","test-generation"],frameworks:["jest","vitest"],complexity:{min:"simple",max:"medium"},tags:["n8n","unit","isolation"]}),e({id:"n8n-integration-test",name:"n8n Integration Tester",description:"Test n8n node integrations with external services including API contract validation, authentication flows, rate limiting, and error handling",domains:["contract-testing"],capabilities:["integration-test","api-testing","contract-testing"],complexity:{min:"medium",max:"complex"},tags:["n8n","integration","api"]}),e({id:"n8n-trigger-test",name:"n8n Trigger Tester",description:"Test n8n workflow triggers including webhooks, schedules, polling triggers, and event-driven activation",domains:["test-execution"],capabilities:["integration-test","test-generation"],complexity:{min:"medium",max:"complex"},tags:["n8n","triggers","webhooks"]}),e({id:"n8n-node-validator",name:"n8n Node Validator",description:"Validate n8n node configurations, connections, data mappings, and conditional routing logic",domains:["contract-testing"],capabilities:["contract-testing","test-generation"],complexity:{min:"simple",max:"medium"},tags:["n8n","validation","nodes"]}),e({id:"n8n-performance-tester",name:"n8n Performance Tester",description:"Load and stress testing for n8n workflows using k6/Artillery with execution time analysis, rate limit testing, and bottleneck detection",domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","k6","artillery","benchmark"],complexity:{min:"medium",max:"complex"},tags:["n8n","performance","load"]}),e({id:"n8n-security-auditor",name:"n8n Security Auditor",description:"Security vulnerability scanning for n8n workflows including credential exposure, injection risks, OWASP compliance, and secret detection",domains:["security-compliance"],capabilities:["sast","vulnerability","owasp","security-scanning"],complexity:{min:"medium",max:"complex"},tags:["n8n","security","owasp"]}),e({id:"n8n-compliance-validator",name:"n8n Compliance Validator",description:"Regulatory compliance testing for n8n workflows including GDPR, CCPA, HIPAA, SOC2, and PCI-DSS validation",domains:["security-compliance"],capabilities:["security-scanning"],complexity:{min:"medium",max:"complex"},tags:["n8n","compliance","gdpr"]}),e({id:"n8n-bdd-scenario-tester",name:"n8n BDD Scenario Tester",description:"BDD/Gherkin scenario testing for n8n workflows with Cucumber integration, business requirement mapping, and stakeholder-friendly reports",domains:["requirements-validation"],capabilities:["bdd","test-generation"],complexity:{min:"medium",max:"complex"},tags:["n8n","bdd","gherkin"]}),e({id:"n8n-expression-validator",name:"n8n Expression Validator",description:"Validate n8n expressions and data transformations with syntax checking, context-aware testing, and security analysis",domains:["code-intelligence"],capabilities:["test-generation","security-scanning"],complexity:{min:"simple",max:"medium"},tags:["n8n","expressions","validation"]}),e({id:"n8n-version-comparator",name:"n8n Version Comparator",description:"Workflow version diff and regression detection with JSON comparison, change impact analysis, migration validation, and rollback testing",domains:["defect-intelligence"],capabilities:["risk-scoring","test-generation"],complexity:{min:"medium",max:"complex"},tags:["n8n","version","diff"]}),e({id:"n8n-chaos-tester",name:"n8n Chaos Tester",description:"Chaos engineering for n8n workflows with controlled fault injection, service failure simulation, recovery validation, and resilience testing",domains:["chaos-resilience"],capabilities:["chaos-testing","resilience","fault-injection"],complexity:{min:"complex",max:"complex"},tags:["n8n","chaos","resilience"]}),e({id:"n8n-ci-orchestrator",name:"n8n CI Orchestrator",description:"CI/CD pipeline integration for n8n workflows with REST API triggers, automated regression testing, GitHub Actions/Jenkins integration, and test scheduling",domains:["test-execution"],capabilities:["test-orchestration","integration-test"],complexity:{min:"medium",max:"complex"},tags:["n8n","ci","cd"]}),e({id:"n8n-monitoring-validator",name:"n8n Monitoring Validator",description:"Validate monitoring and alerting configurations for n8n workflows including error tracking, alert rules, SLA compliance, and observability checks",domains:["quality-assessment"],capabilities:["quality-gate","deployment-readiness"],complexity:{min:"medium",max:"complex"},tags:["n8n","monitoring","alerting"]})],x=[e({id:"tester",name:"Tester",description:"Comprehensive testing and quality assurance specialist with AI-powered test generation",domains:["test-generation","test-execution"],capabilities:["test-generation","unit-test","integration-test","e2e-test"],languages:["typescript","javascript","python","java","go","rust"],frameworks:["jest","vitest","mocha","pytest","junit5","go-test","rust-test","playwright","cypress"],complexity:{min:"simple",max:"complex"},tags:["general","versatile"]}),e({id:"reviewer",name:"Reviewer",description:"Code review and quality assurance specialist with AI-powered pattern detection",domains:["quality-assessment"],capabilities:["quality-gate","security-scanning"],languages:["typescript","javascript","python","java","go","rust"],complexity:{min:"simple",max:"complex"},tags:["general","code-review"]}),e({id:"security-auditor",name:"Security Auditor",description:"Advanced security auditor with self-learning vulnerability detection, CVE database search, and compliance auditing",domains:["security-compliance"],capabilities:["sast","dast","vulnerability","owasp","security-scanning"],languages:["typescript","javascript","python","java","go","rust"],complexity:{min:"medium",max:"complex"},tags:["security","cve","compliance"]}),e({id:"security-architect",name:"Security Architect",description:"V3 Security Architecture specialist with ReasoningBank learning, HNSW threat pattern search, and zero-trust design capabilities",domains:["security-compliance"],capabilities:["sast","vulnerability","owasp","security-scanning"],languages:["typescript","javascript","python","java","go"],complexity:{min:"complex",max:"complex"},tags:["architecture","zero-trust"]}),e({id:"performance-engineer",name:"Performance Engineer",description:"V3 Performance Engineering Agent specialized in Flash Attention optimization, WASM SIMD acceleration, and comprehensive performance profiling",domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","benchmark"],languages:["typescript","javascript","python","go","rust"],complexity:{min:"medium",max:"complex"},tags:["performance","optimization"]}),e({id:"code-analyzer",name:"Code Analyzer",description:"Advanced code quality analysis agent for comprehensive code reviews and improvements",domains:["code-intelligence","quality-assessment"],capabilities:["coverage-analysis","gap-detection","quality-gate"],languages:["typescript","javascript","python","java","go","rust"],complexity:{min:"simple",max:"complex"},tags:["analysis","quality"]}),e({id:"cicd-engineer",name:"CI/CD Engineer",description:"Specialized agent for GitHub Actions CI/CD pipeline creation and optimization",domains:["test-execution"],capabilities:["test-orchestration","deployment-readiness"],complexity:{min:"medium",max:"complex"},tags:["cicd","github-actions"]})],h=[e({id:"reasoningbank-learner",name:"ReasoningBank Learner",description:"V3 ReasoningBank integration specialist for trajectory tracking, verdict judgment, pattern distillation, and experience replay using HNSW-indexed memory",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","reasoningbank","learning"]}),e({id:"adr-architect",name:"ADR Architect",description:"V3 Architecture Decision Record specialist that documents, tracks, and enforces architectural decisions with ReasoningBank integration for pattern learning",domains:["learning-optimization"],capabilities:["quality-gate"],complexity:{min:"medium",max:"complex"},tags:["v3","adr","architecture"]}),e({id:"ddd-domain-expert",name:"DDD Domain Expert",description:"V3 Domain-Driven Design specialist for bounded context identification, aggregate design, domain modeling, and ubiquitous language enforcement",domains:["code-intelligence"],capabilities:["quality-gate"],complexity:{min:"complex",max:"complex"},tags:["v3","ddd","domain"]}),e({id:"v3-integration-architect",name:"V3 Integration Architect",description:"V3 deep agentic-flow integration specialist implementing ADR-001 for eliminating duplicate code and building claude-flow as a specialized extension",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","integration","agentic-flow"]}),e({id:"memory-specialist",name:"Memory Specialist",description:"V3 memory optimization specialist with HNSW indexing, hybrid backend management, vector quantization, and EWC++ for preventing catastrophic forgetting",domains:["learning-optimization"],capabilities:["sublinear-analysis"],complexity:{min:"complex",max:"complex"},tags:["v3","memory","hnsw"]}),e({id:"claims-authorizer",name:"Claims Authorizer",description:"V3 Claims-based authorization specialist implementing ADR-010 for fine-grained access control across swarm agents and MCP tools",domains:["security-compliance"],capabilities:["security-scanning"],complexity:{min:"medium",max:"complex"},tags:["v3","claims","authorization"]}),e({id:"sparc-orchestrator",name:"SPARC Orchestrator",description:"V3 SPARC methodology orchestrator that coordinates Specification, Pseudocode, Architecture, Refinement, and Completion phases with ReasoningBank learning",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","sparc","methodology"]}),e({id:"sona-learning-optimizer",name:"SONA Learning Optimizer",description:"V3 SONA-powered self-optimizing agent using claude-flow neural tools for adaptive learning, pattern discovery, and continuous quality improvement with sub-millisecond overhead",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","sona","self-learning"]}),e({id:"safla-neural",name:"SAFLA Neural",description:"Self-Aware Feedback Loop Algorithm (SAFLA) neural specialist that creates intelligent, memory-persistent AI systems with self-learning capabilities",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","safla","neural"]}),e({id:"production-validator",name:"Production Validator",description:"Production validation specialist ensuring applications are fully implemented and deployment-ready",domains:["quality-assessment"],capabilities:["deployment-readiness","quality-gate"],complexity:{min:"medium",max:"complex"},tags:["production","validation"]}),e({id:"tdd-london-swarm",name:"TDD London Swarm",description:"TDD London School specialist for mock-driven development within swarm coordination",domains:["test-generation"],capabilities:["tdd","unit-test","test-generation"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","pytest"],complexity:{min:"medium",max:"complex"},tags:["tdd","london","mocks"]})],f=[e({id:"queen-coordinator",name:"Queen Coordinator",description:"The sovereign orchestrator of hierarchical hive operations, managing strategic decisions, resource allocation, and maintaining hive coherence",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["queen","hive","orchestration"]}),e({id:"swarm-memory-manager",name:"Swarm Memory Manager",description:"V3 distributed memory manager for cross-agent state synchronization, CRDT replication, and namespace coordination across the swarm",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["swarm","memory","crdt"]}),e({id:"worker-specialist",name:"Worker Specialist",description:"Dedicated task execution specialist that carries out assigned work with precision, continuously reporting progress through memory coordination",domains:["test-execution"],capabilities:["test-orchestration"],complexity:{min:"simple",max:"complex"},tags:["worker","execution"]}),e({id:"collective-intelligence-coordinator",name:"Collective Intelligence Coordinator",description:"Hive-mind collective decision making with Byzantine fault-tolerant consensus, attention-based coordination, and emergent intelligence patterns",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["collective","consensus"]}),e({id:"scout-explorer",name:"Scout Explorer",description:"Information reconnaissance specialist that explores unknown territories, gathers intelligence, and reports findings to the hive mind",domains:["code-intelligence"],capabilities:["coverage-analysis","gap-detection"],complexity:{min:"simple",max:"medium"},tags:["scout","exploration"]}),e({id:"adaptive-coordinator",name:"Adaptive Coordinator",description:"Dynamic topology switching coordinator with self-organizing swarm patterns and real-time optimization",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["adaptive","topology"]}),e({id:"mesh-coordinator",name:"Mesh Coordinator",description:"Peer-to-peer mesh network swarm with distributed decision making and fault tolerance",domains:["learning-optimization"],capabilities:["test-orchestration","resilience"],complexity:{min:"complex",max:"complex"},tags:["mesh","p2p"]}),e({id:"hierarchical-coordinator",name:"Hierarchical Coordinator",description:"Queen-led hierarchical swarm coordination with specialized worker delegation",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["hierarchical","delegation"]})],b=[e({id:"consensus-coordinator",name:"Consensus Coordinator",description:"Distributed consensus agent that uses sublinear solvers for fast agreement protocols in multi-agent systems",domains:["learning-optimization"],capabilities:["test-orchestration","resilience"],complexity:{min:"complex",max:"complex"},tags:["consensus","distributed"]}),e({id:"byzantine-coordinator",name:"Byzantine Coordinator",description:"Coordinates Byzantine fault-tolerant consensus protocols with malicious actor detection",domains:["security-compliance"],capabilities:["resilience","security-scanning"],complexity:{min:"complex",max:"complex"},tags:["byzantine","fault-tolerance"]}),e({id:"raft-manager",name:"Raft Manager",description:"Manages Raft consensus algorithm with leader election and log replication",domains:["learning-optimization"],capabilities:["test-orchestration","resilience"],complexity:{min:"complex",max:"complex"},tags:["raft","leader-election"]}),e({id:"crdt-synchronizer",name:"CRDT Synchronizer",description:"Implements Conflict-free Replicated Data Types for eventually consistent state synchronization",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["crdt","eventual-consistency"]})],m=Object.freeze([...u,...y,...v,...x,...h,...f,...b]);function E(i,t){let a=m.find(n=>n.id===i);if(!a){let n=m.find(o=>o.id.includes(i)||i.includes(o.id));if(!n){console.error(`[AgentRegistry] Agent not found: ${i}`);return}l(n,t);return}l(a,t)}function l(i,t){let a=i.tasksCompleted,n=Math.round(i.successRate*a);i.tasksCompleted++;let o=n+(t.success?1:0);i.successRate=i.tasksCompleted>0?o/i.tasksCompleted:0,a===0?i.avgDurationMs=t.executionTimeMs:i.avgDurationMs=.3*t.executionTimeMs+(1-.3)*i.avgDurationMs;let p=t.qualityScore??(t.success?.7:.3),d=i.successRate,r=.4*p+.6*d;a===0?i.performanceScore=r:i.performanceScore=.2*r+(1-.2)*i.performanceScore,i.performanceScore=Math.max(0,Math.min(1,i.performanceScore)),console.error(`[AgentRegistry] Updated ${i.id}: tasks=${i.tasksCompleted} successRate=${(i.successRate*100).toFixed(1)}% performanceScore=${i.performanceScore.toFixed(3)} avgDurationMs=${i.avgDurationMs.toFixed(0)}`)}var s=new Map;function k(i){s=new Map;let t=c(i);for(let a of t.overlays)a.config&&s.set(a.agent,a.config);if(s.size>0&&console.error(`[AgentRegistry] Loaded overlay configs for ${s.size} agent(s): ${[...s.keys()].join(", ")}`),t.warnings.length>0)for(let a of t.warnings)console.error(`[AgentRegistry] Overlay warning: ${a}`)}function Q(i){return s.get(i)}export{m as a,E as b,k as c,Q as d};
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
|
+
import{a as c}from"./chunk-QJ2EHLJ2.js";function e(i){return{...i,performanceScore:.7,tasksCompleted:0,successRate:0,avgDurationMs:0}}var u=[e({id:"v3-qe-tdd-specialist",name:"V3 QE TDD Specialist",description:"V3 QE TDD specialist covering RED, GREEN, REFACTOR phases with comprehensive test-driven development support",domains:["test-generation"],capabilities:["test-generation","tdd","unit-test","test-quality"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","pytest"],complexity:{min:"simple",max:"complex"},tags:["v3","tdd","red-green-refactor"]}),e({id:"v3-qe-test-architect",name:"V3 QE Test Architect",description:"V3 QE Test Architect for AI-powered test generation strategy, test pyramid design, and cross-framework test orchestration",domains:["test-generation"],capabilities:["test-generation","test-orchestration","unit-test","integration-test","e2e-test"],languages:["typescript","javascript","python","java","go"],frameworks:["jest","vitest","pytest","junit5","playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","architect","strategy"]}),e({id:"v3-qe-parallel-executor",name:"V3 QE Parallel Executor",description:"V3 QE Parallel test executor with intelligent sharding, worker pool management, retry logic, and real-time reporting",domains:["test-execution"],capabilities:["test-orchestration","retry","flaky-detection"],languages:["typescript","javascript","python","java","go"],frameworks:["jest","vitest","pytest","junit5","go-test","playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","parallel","retry","sharding"]}),e({id:"v3-qe-flaky-hunter",name:"V3 QE Flaky Hunter",description:"V3 QE Flaky test detection and stabilization through pattern recognition, auto-remediation, and retry orchestration",domains:["test-execution"],capabilities:["flaky-detection","test-stability","retry"],frameworks:["jest","vitest","pytest","playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","flaky","stability","remediation"]}),e({id:"v3-qe-retry-handler",name:"V3 QE Retry Handler",description:"V3 QE Intelligent retry handler with adaptive backoff, circuit breakers, and failure classification",domains:["test-execution"],capabilities:["retry","test-stability"],frameworks:["jest","vitest","pytest","playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","retry","adaptive-backoff"]}),e({id:"v3-qe-coverage-specialist",name:"V3 QE Coverage Specialist",description:"V3 QE Coverage Specialist for O(log n) sublinear coverage analysis, risk-weighted gap detection, and intelligent test prioritization",domains:["coverage-analysis"],capabilities:["coverage-analysis","gap-detection","sublinear-analysis","risk-scoring","branch-coverage"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","sublinear","prioritization"]}),e({id:"v3-qe-gap-detector",name:"V3 QE Gap Detector",description:"V3 QE Coverage gap detection with sublinear algorithms (O(log n) analysis), risk scoring, and intelligent test recommendations",domains:["coverage-analysis"],capabilities:["coverage-analysis","gap-detection","sublinear-analysis","risk-scoring"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","sublinear","gap-detection"]}),e({id:"v3-qe-quality-gate",name:"V3 QE Quality Gate",description:"V3 QE Quality gate enforcement with risk assessment, policy validation, and deployment readiness evaluation",domains:["quality-assessment"],capabilities:["quality-gate","deployment-readiness","risk-scoring"],complexity:{min:"medium",max:"complex"},tags:["v3","gate","deployment","policy"]}),e({id:"v3-qe-deployment-advisor",name:"V3 QE Deployment Advisor",description:"V3 QE Aggregates quality signals for deployment risk assessment and go/no-go decisions with predictive analytics",domains:["quality-assessment"],capabilities:["deployment-readiness","quality-gate","risk-scoring"],complexity:{min:"medium",max:"complex"},tags:["v3","deployment","go-no-go","analytics"]}),e({id:"v3-qe-code-complexity",name:"V3 QE Code Complexity",description:"V3 QE AI-powered code complexity analysis with refactoring recommendations and technical debt tracking",domains:["quality-assessment"],capabilities:["quality-gate","risk-scoring"],languages:["typescript","javascript","python","java","go"],complexity:{min:"simple",max:"complex"},tags:["v3","complexity","refactoring","debt"]}),e({id:"v3-qe-qx-partner",name:"V3 QE QX Partner",description:"V3 QE Quality Experience (QX) analysis combining QA advocacy and UX perspectives to co-create quality for all stakeholders",domains:["quality-assessment"],capabilities:["quality-gate"],complexity:{min:"medium",max:"complex"},tags:["v3","qx","ux","advocacy"]}),e({id:"v3-qe-security-scanner",name:"V3 QE Security Scanner",description:"V3 QE Security scanning with SAST/DAST, vulnerability detection, OWASP compliance, and threat modeling",domains:["security-compliance"],capabilities:["sast","dast","vulnerability","owasp","security-scanning"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","sast","dast","owasp"]}),e({id:"v3-qe-security-auditor",name:"V3 QE Security Auditor",description:"V3 QE Security audits for vulnerabilities, compliance validation, and security best practices enforcement",domains:["security-compliance"],capabilities:["sast","vulnerability","owasp","security-scanning"],languages:["typescript","javascript","python","java"],complexity:{min:"medium",max:"complex"},tags:["v3","audit","compliance"]}),e({id:"v3-qe-contract-validator",name:"V3 QE Contract Validator",description:"V3 QE API contract validation, breaking change detection, and backward compatibility with consumer-driven contract testing",domains:["contract-testing"],capabilities:["api-testing","contract-testing","pact","openapi"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","contract","api","pact"]}),e({id:"v3-qe-integration-tester",name:"V3 QE Integration Tester",description:"V3 QE Validates component interactions and system integration with comprehensive test scenarios",domains:["contract-testing"],capabilities:["integration-test","api-testing","contract-testing"],languages:["typescript","javascript","python","java"],frameworks:["jest","vitest","pytest","junit5"],complexity:{min:"medium",max:"complex"},tags:["v3","integration","component"]}),e({id:"v3-qe-graphql-tester",name:"V3 QE GraphQL Tester",description:"V3 QE GraphQL API testing with schema validation, query/mutation testing, and security analysis",domains:["contract-testing"],capabilities:["api-testing","contract-testing","graphql"],languages:["typescript","javascript","python"],complexity:{min:"medium",max:"complex"},tags:["v3","graphql","api"]}),e({id:"v3-qe-visual-tester",name:"V3 QE Visual Tester",description:"V3 QE Visual regression testing with AI-powered screenshot comparison and accessibility validation",domains:["visual-accessibility"],capabilities:["visual-regression","screenshot","percy","chromatic","wcag","aria"],frameworks:["playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","visual","regression","screenshots"]}),e({id:"v3-qe-accessibility-auditor",name:"V3 QE Accessibility Auditor",description:"V3 QE Accessibility testing with WCAG 2.2 compliance, screen reader validation, and copy-paste ready fixes",domains:["visual-accessibility"],capabilities:["wcag","aria","screen-reader","contrast"],frameworks:["playwright","cypress"],complexity:{min:"simple",max:"complex"},tags:["v3","wcag","a11y","accessibility"]}),e({id:"v3-qe-responsive-tester",name:"V3 QE Responsive Tester",description:"V3 QE Responsive design testing across viewports, devices, and breakpoints with layout regression detection",domains:["visual-accessibility"],capabilities:["visual-regression"],frameworks:["playwright","cypress"],complexity:{min:"medium",max:"complex"},tags:["v3","responsive","viewport","breakpoints"]}),e({id:"v3-qe-performance-tester",name:"V3 QE Performance Tester",description:"V3 QE Performance testing with load orchestration, bottleneck detection, and SLA validation",domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","k6","artillery","benchmark"],complexity:{min:"medium",max:"complex"},tags:["v3","load","stress","performance"]}),e({id:"v3-qe-load-tester",name:"V3 QE Load Tester",description:"V3 QE Load and stress testing with execution time analysis, rate limit testing, and bottleneck detection",domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","k6","artillery"],complexity:{min:"medium",max:"complex"},tags:["v3","load","stress","k6"]}),e({id:"v3-qe-chaos-engineer",name:"V3 QE Chaos Engineer",description:"V3 QE Resilience testing with controlled fault injection, blast radius management, and recovery validation",domains:["chaos-resilience"],capabilities:["chaos-testing","resilience","fault-injection"],complexity:{min:"complex",max:"complex"},tags:["v3","chaos","fault-injection","resilience"]}),e({id:"v3-qe-code-intelligence",name:"V3 QE Code Intelligence",description:"V3 QE Knowledge graph-based code understanding with semantic search and AST analysis",domains:["code-intelligence"],capabilities:["coverage-analysis","gap-detection"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","knowledge-graph","ast","semantic"]}),e({id:"v3-qe-dependency-mapper",name:"V3 QE Dependency Mapper",description:"V3 QE Dependency graph analysis with coupling metrics and security advisories",domains:["code-intelligence"],capabilities:["coverage-analysis","gap-detection"],languages:["typescript","javascript","python","java"],complexity:{min:"medium",max:"complex"},tags:["v3","dependency","graph"]}),e({id:"v3-qe-kg-builder",name:"V3 QE Knowledge Graph Builder",description:"V3 QE Knowledge graph construction with entity extraction and relationship inference",domains:["code-intelligence"],capabilities:["coverage-analysis","gap-detection"],languages:["typescript","javascript","python"],complexity:{min:"complex",max:"complex"},tags:["v3","knowledge-graph","entity-extraction"]}),e({id:"v3-qe-integration-architect",name:"V3 QE Integration Architect",description:"V3 QE deep agentic-flow integration specialist implementing ADR-001 for duplicate elimination and extension architecture",domains:["code-intelligence"],capabilities:["coverage-analysis","gap-detection","quality-gate"],languages:["typescript","javascript"],complexity:{min:"complex",max:"complex"},tags:["v3","integration","adr-001","architecture"]}),e({id:"v3-qe-requirements-validator",name:"V3 QE Requirements Validator",description:"V3 QE Validates requirements testability and generates BDD scenarios with testability scoring",domains:["requirements-validation"],capabilities:["bdd","test-generation"],complexity:{min:"medium",max:"complex"},tags:["v3","requirements","bdd","testability"]}),e({id:"v3-qe-bdd-generator",name:"V3 QE BDD Generator",description:"V3 QE BDD scenario generation with Gherkin syntax, example discovery, and step definition mapping",domains:["requirements-validation"],capabilities:["bdd","test-generation"],complexity:{min:"medium",max:"complex"},tags:["v3","bdd","gherkin","cucumber"]}),e({id:"v3-qe-product-factors-assessor",name:"V3 QE Product Factors Assessor",description:"V3 QE SFDIPOT product factors analysis using James Bach's HTSM framework for comprehensive test strategy generation with prioritized test ideas (P0-P3) and automation fitness recommendations",domains:["requirements-validation"],capabilities:["bdd","test-generation","risk-scoring"],complexity:{min:"medium",max:"complex"},tags:["v3","sfdipot","htsm","product-factors","james-bach"]}),e({id:"v3-qe-test-idea-rewriter",name:"V3 QE Test Idea Rewriter",description:'V3 QE Transform passive "Verify X" test descriptions into active, observable test actions using action verbs for clearer, more testable descriptions',domains:["test-generation"],capabilities:["test-generation","test-quality"],complexity:{min:"simple",max:"medium"},tags:["v3","test-ideas","rewriting","action-verbs","quality"]}),e({id:"v3-qe-quality-criteria-recommender",name:"V3 QE Quality Criteria Recommender",description:"V3 QE HTSM v6.3 Quality Criteria analysis for shift-left quality engineering during PI/Sprint Planning with evidence-based recommendations",domains:["requirements-validation"],capabilities:["bdd","test-generation","quality-gate"],complexity:{min:"medium",max:"complex"},tags:["v3","htsm","quality-criteria","shift-left","qcsd"]}),e({id:"v3-qe-defect-predictor",name:"V3 QE Defect Predictor",description:"V3 QE AI-powered defect prediction using historical data and code metrics",domains:["defect-intelligence"],capabilities:["risk-scoring","coverage-analysis"],languages:["typescript","javascript","python","java"],complexity:{min:"complex",max:"complex"},tags:["v3","defect","prediction","ml"]}),e({id:"v3-qe-root-cause-analyzer",name:"V3 QE Root Cause Analyzer",description:"V3 QE Systematic root cause analysis for test failures with prevention recommendations",domains:["defect-intelligence"],capabilities:["risk-scoring"],complexity:{min:"complex",max:"complex"},tags:["v3","root-cause","failure-analysis"]}),e({id:"v3-qe-regression-analyzer",name:"V3 QE Regression Analyzer",description:"V3 QE Analyzes code changes to predict regression risk and intelligently select minimal test suites",domains:["defect-intelligence"],capabilities:["risk-scoring","coverage-analysis"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","regression","risk","selection"]}),e({id:"v3-qe-impact-analyzer",name:"V3 QE Impact Analyzer",description:"V3 QE Change impact analysis with blast radius calculation and test selection",domains:["defect-intelligence"],capabilities:["risk-scoring","coverage-analysis"],languages:["typescript","javascript","python","java"],complexity:{min:"medium",max:"complex"},tags:["v3","impact","blast-radius"]}),e({id:"v3-qe-risk-assessor",name:"V3 QE Risk Assessor",description:"V3 QE Quality risk assessment with multi-factor scoring and mitigation recommendations",domains:["defect-intelligence"],capabilities:["risk-scoring"],complexity:{min:"medium",max:"complex"},tags:["v3","risk","assessment"]}),e({id:"v3-qe-learning-coordinator",name:"V3 QE Learning Coordinator",description:"V3 QE Fleet-wide learning coordination with pattern recognition and knowledge synthesis",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","learning","coordination","patterns"]}),e({id:"v3-qe-pattern-learner",name:"V3 QE Pattern Learner",description:"V3 QE Pattern discovery and learning from QE activities for test generation and defect prediction",domains:["learning-optimization"],capabilities:["test-generation","risk-scoring"],complexity:{min:"complex",max:"complex"},tags:["v3","pattern","learning","ml"]}),e({id:"v3-qe-transfer-specialist",name:"V3 QE Transfer Specialist",description:"V3 QE Knowledge transfer learning with domain adaptation and knowledge distillation",domains:["learning-optimization"],capabilities:["test-generation"],complexity:{min:"complex",max:"complex"},tags:["v3","transfer","learning","adaptation"]}),e({id:"v3-qe-metrics-optimizer",name:"V3 QE Metrics Optimizer",description:"V3 QE Learning metrics optimization with hyperparameter tuning and A/B testing",domains:["learning-optimization"],capabilities:["quality-gate"],complexity:{min:"complex",max:"complex"},tags:["v3","metrics","optimization","tuning"]}),e({id:"v3-qe-fleet-commander",name:"V3 QE Fleet Commander",description:"V3 QE Hierarchical fleet coordinator for 50+ agent orchestration with dynamic topology management and resource optimization",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","fleet","orchestration","coordination"]}),e({id:"v3-qe-queen-coordinator",name:"V3 QE Queen Coordinator",description:"V3 QE Queen Coordinator for multi-agent concurrent swarm orchestration, quality engineering workflows, and cross-agent coordination",domains:["learning-optimization"],capabilities:["test-orchestration","quality-gate"],complexity:{min:"complex",max:"complex"},tags:["v3","queen","swarm"]}),e({id:"v3-qe-property-tester",name:"V3 QE Property Tester",description:"V3 QE Property-based testing with fast-check for edge case discovery through randomized input generation",domains:["test-generation"],capabilities:["test-generation","unit-test"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","mocha"],complexity:{min:"medium",max:"complex"},tags:["v3","property","pbt","edge-cases"]}),e({id:"v3-qe-mutation-tester",name:"V3 QE Mutation Tester",description:"V3 QE Mutation testing for test suite effectiveness evaluation with mutation score analysis",domains:["test-generation"],capabilities:["test-quality","coverage-analysis"],languages:["typescript","javascript","python"],frameworks:["jest","vitest"],complexity:{min:"medium",max:"complex"},tags:["v3","mutation","test-quality"]})],y=[e({id:"v3-qe-tdd-red",name:"V3 QE TDD RED Phase",description:"V3 QE TDD RED phase specialist - writes failing tests that define expected behavior before implementation",domains:["test-generation"],capabilities:["test-generation","tdd","unit-test"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","pytest"],complexity:{min:"simple",max:"medium"},tags:["v3","tdd","red-phase","subagent"]}),e({id:"v3-qe-tdd-green",name:"V3 QE TDD GREEN Phase",description:"V3 QE TDD GREEN phase specialist - implements minimal code to make failing tests pass",domains:["test-generation"],capabilities:["test-generation","tdd","unit-test"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","pytest"],complexity:{min:"simple",max:"medium"},tags:["v3","tdd","green-phase","subagent"]}),e({id:"v3-qe-tdd-refactor",name:"V3 QE TDD REFACTOR Phase",description:"V3 QE TDD REFACTOR phase specialist - improves code quality while keeping all tests passing",domains:["test-generation"],capabilities:["test-generation","tdd","test-quality"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","pytest"],complexity:{min:"medium",max:"complex"},tags:["v3","tdd","refactor-phase","subagent"]}),e({id:"v3-qe-code-reviewer",name:"V3 QE Code Reviewer",description:"V3 QE Code review specialist enforcing quality standards, linting, complexity, and security",domains:["quality-assessment"],capabilities:["quality-gate","security-scanning"],languages:["typescript","javascript","python","java","go"],complexity:{min:"simple",max:"complex"},tags:["v3","code-review","standards","subagent"]}),e({id:"v3-qe-integration-reviewer",name:"V3 QE Integration Reviewer",description:"V3 QE Integration review specialist for API compatibility and cross-service interactions",domains:["contract-testing"],capabilities:["integration-test","api-testing"],languages:["typescript","javascript","python","java"],complexity:{min:"medium",max:"complex"},tags:["v3","integration","review","subagent"]}),e({id:"v3-qe-performance-reviewer",name:"V3 QE Performance Reviewer",description:"V3 QE Performance review specialist for algorithmic complexity and resource usage",domains:["chaos-resilience"],capabilities:["load-testing","benchmark"],languages:["typescript","javascript","python","go"],complexity:{min:"medium",max:"complex"},tags:["v3","performance","review","subagent"]}),e({id:"v3-qe-security-reviewer",name:"V3 QE Security Reviewer",description:"V3 QE Security review specialist for vulnerability detection and secure coding practices",domains:["security-compliance"],capabilities:["sast","vulnerability","security-scanning"],languages:["typescript","javascript","python","java","go"],complexity:{min:"medium",max:"complex"},tags:["v3","security","review","subagent"]})],v=[e({id:"n8n-base-agent",name:"n8n Base Agent",description:"Abstract base agent for n8n workflow automation testing - provides common utilities for all n8n testing agents",domains:["test-generation"],capabilities:["test-generation","test-orchestration"],complexity:{min:"simple",max:"simple"},tags:["n8n","base","workflow"]}),e({id:"n8n-workflow-executor",name:"n8n Workflow Executor",description:"Execute and validate n8n workflows programmatically with test data injection, output assertions, and data flow validation",domains:["test-execution"],capabilities:["test-orchestration","integration-test"],complexity:{min:"medium",max:"complex"},tags:["n8n","execution","validation"]}),e({id:"n8n-unit-tester",name:"n8n Unit Tester",description:"Unit test custom n8n node functions with Jest/Vitest integration, function isolation, mock data injection, and coverage reporting",domains:["test-generation"],capabilities:["unit-test","test-generation"],frameworks:["jest","vitest"],complexity:{min:"simple",max:"medium"},tags:["n8n","unit","isolation"]}),e({id:"n8n-integration-test",name:"n8n Integration Tester",description:"Test n8n node integrations with external services including API contract validation, authentication flows, rate limiting, and error handling",domains:["contract-testing"],capabilities:["integration-test","api-testing","contract-testing"],complexity:{min:"medium",max:"complex"},tags:["n8n","integration","api"]}),e({id:"n8n-trigger-test",name:"n8n Trigger Tester",description:"Test n8n workflow triggers including webhooks, schedules, polling triggers, and event-driven activation",domains:["test-execution"],capabilities:["integration-test","test-generation"],complexity:{min:"medium",max:"complex"},tags:["n8n","triggers","webhooks"]}),e({id:"n8n-node-validator",name:"n8n Node Validator",description:"Validate n8n node configurations, connections, data mappings, and conditional routing logic",domains:["contract-testing"],capabilities:["contract-testing","test-generation"],complexity:{min:"simple",max:"medium"},tags:["n8n","validation","nodes"]}),e({id:"n8n-performance-tester",name:"n8n Performance Tester",description:"Load and stress testing for n8n workflows using k6/Artillery with execution time analysis, rate limit testing, and bottleneck detection",domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","k6","artillery","benchmark"],complexity:{min:"medium",max:"complex"},tags:["n8n","performance","load"]}),e({id:"n8n-security-auditor",name:"n8n Security Auditor",description:"Security vulnerability scanning for n8n workflows including credential exposure, injection risks, OWASP compliance, and secret detection",domains:["security-compliance"],capabilities:["sast","vulnerability","owasp","security-scanning"],complexity:{min:"medium",max:"complex"},tags:["n8n","security","owasp"]}),e({id:"n8n-compliance-validator",name:"n8n Compliance Validator",description:"Regulatory compliance testing for n8n workflows including GDPR, CCPA, HIPAA, SOC2, and PCI-DSS validation",domains:["security-compliance"],capabilities:["security-scanning"],complexity:{min:"medium",max:"complex"},tags:["n8n","compliance","gdpr"]}),e({id:"n8n-bdd-scenario-tester",name:"n8n BDD Scenario Tester",description:"BDD/Gherkin scenario testing for n8n workflows with Cucumber integration, business requirement mapping, and stakeholder-friendly reports",domains:["requirements-validation"],capabilities:["bdd","test-generation"],complexity:{min:"medium",max:"complex"},tags:["n8n","bdd","gherkin"]}),e({id:"n8n-expression-validator",name:"n8n Expression Validator",description:"Validate n8n expressions and data transformations with syntax checking, context-aware testing, and security analysis",domains:["code-intelligence"],capabilities:["test-generation","security-scanning"],complexity:{min:"simple",max:"medium"},tags:["n8n","expressions","validation"]}),e({id:"n8n-version-comparator",name:"n8n Version Comparator",description:"Workflow version diff and regression detection with JSON comparison, change impact analysis, migration validation, and rollback testing",domains:["defect-intelligence"],capabilities:["risk-scoring","test-generation"],complexity:{min:"medium",max:"complex"},tags:["n8n","version","diff"]}),e({id:"n8n-chaos-tester",name:"n8n Chaos Tester",description:"Chaos engineering for n8n workflows with controlled fault injection, service failure simulation, recovery validation, and resilience testing",domains:["chaos-resilience"],capabilities:["chaos-testing","resilience","fault-injection"],complexity:{min:"complex",max:"complex"},tags:["n8n","chaos","resilience"]}),e({id:"n8n-ci-orchestrator",name:"n8n CI Orchestrator",description:"CI/CD pipeline integration for n8n workflows with REST API triggers, automated regression testing, GitHub Actions/Jenkins integration, and test scheduling",domains:["test-execution"],capabilities:["test-orchestration","integration-test"],complexity:{min:"medium",max:"complex"},tags:["n8n","ci","cd"]}),e({id:"n8n-monitoring-validator",name:"n8n Monitoring Validator",description:"Validate monitoring and alerting configurations for n8n workflows including error tracking, alert rules, SLA compliance, and observability checks",domains:["quality-assessment"],capabilities:["quality-gate","deployment-readiness"],complexity:{min:"medium",max:"complex"},tags:["n8n","monitoring","alerting"]})],x=[e({id:"tester",name:"Tester",description:"Comprehensive testing and quality assurance specialist with AI-powered test generation",domains:["test-generation","test-execution"],capabilities:["test-generation","unit-test","integration-test","e2e-test"],languages:["typescript","javascript","python","java","go","rust"],frameworks:["jest","vitest","mocha","pytest","junit5","go-test","rust-test","playwright","cypress"],complexity:{min:"simple",max:"complex"},tags:["general","versatile"]}),e({id:"reviewer",name:"Reviewer",description:"Code review and quality assurance specialist with AI-powered pattern detection",domains:["quality-assessment"],capabilities:["quality-gate","security-scanning"],languages:["typescript","javascript","python","java","go","rust"],complexity:{min:"simple",max:"complex"},tags:["general","code-review"]}),e({id:"security-auditor",name:"Security Auditor",description:"Advanced security auditor with self-learning vulnerability detection, CVE database search, and compliance auditing",domains:["security-compliance"],capabilities:["sast","dast","vulnerability","owasp","security-scanning"],languages:["typescript","javascript","python","java","go","rust"],complexity:{min:"medium",max:"complex"},tags:["security","cve","compliance"]}),e({id:"security-architect",name:"Security Architect",description:"V3 Security Architecture specialist with ReasoningBank learning, HNSW threat pattern search, and zero-trust design capabilities",domains:["security-compliance"],capabilities:["sast","vulnerability","owasp","security-scanning"],languages:["typescript","javascript","python","java","go"],complexity:{min:"complex",max:"complex"},tags:["architecture","zero-trust"]}),e({id:"performance-engineer",name:"Performance Engineer",description:"V3 Performance Engineering Agent specialized in Flash Attention optimization, WASM SIMD acceleration, and comprehensive performance profiling",domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","benchmark"],languages:["typescript","javascript","python","go","rust"],complexity:{min:"medium",max:"complex"},tags:["performance","optimization"]}),e({id:"code-analyzer",name:"Code Analyzer",description:"Advanced code quality analysis agent for comprehensive code reviews and improvements",domains:["code-intelligence","quality-assessment"],capabilities:["coverage-analysis","gap-detection","quality-gate"],languages:["typescript","javascript","python","java","go","rust"],complexity:{min:"simple",max:"complex"},tags:["analysis","quality"]}),e({id:"cicd-engineer",name:"CI/CD Engineer",description:"Specialized agent for GitHub Actions CI/CD pipeline creation and optimization",domains:["test-execution"],capabilities:["test-orchestration","deployment-readiness"],complexity:{min:"medium",max:"complex"},tags:["cicd","github-actions"]})],h=[e({id:"reasoningbank-learner",name:"ReasoningBank Learner",description:"V3 ReasoningBank integration specialist for trajectory tracking, verdict judgment, pattern distillation, and experience replay using HNSW-indexed memory",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","reasoningbank","learning"]}),e({id:"adr-architect",name:"ADR Architect",description:"V3 Architecture Decision Record specialist that documents, tracks, and enforces architectural decisions with ReasoningBank integration for pattern learning",domains:["learning-optimization"],capabilities:["quality-gate"],complexity:{min:"medium",max:"complex"},tags:["v3","adr","architecture"]}),e({id:"ddd-domain-expert",name:"DDD Domain Expert",description:"V3 Domain-Driven Design specialist for bounded context identification, aggregate design, domain modeling, and ubiquitous language enforcement",domains:["code-intelligence"],capabilities:["quality-gate"],complexity:{min:"complex",max:"complex"},tags:["v3","ddd","domain"]}),e({id:"v3-integration-architect",name:"V3 Integration Architect",description:"V3 deep agentic-flow integration specialist implementing ADR-001 for eliminating duplicate code and building claude-flow as a specialized extension",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","integration","agentic-flow"]}),e({id:"memory-specialist",name:"Memory Specialist",description:"V3 memory optimization specialist with HNSW indexing, hybrid backend management, vector quantization, and EWC++ for preventing catastrophic forgetting",domains:["learning-optimization"],capabilities:["sublinear-analysis"],complexity:{min:"complex",max:"complex"},tags:["v3","memory","hnsw"]}),e({id:"claims-authorizer",name:"Claims Authorizer",description:"V3 Claims-based authorization specialist implementing ADR-010 for fine-grained access control across swarm agents and MCP tools",domains:["security-compliance"],capabilities:["security-scanning"],complexity:{min:"medium",max:"complex"},tags:["v3","claims","authorization"]}),e({id:"sparc-orchestrator",name:"SPARC Orchestrator",description:"V3 SPARC methodology orchestrator that coordinates Specification, Pseudocode, Architecture, Refinement, and Completion phases with ReasoningBank learning",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","sparc","methodology"]}),e({id:"sona-learning-optimizer",name:"SONA Learning Optimizer",description:"V3 SONA-powered self-optimizing agent using claude-flow neural tools for adaptive learning, pattern discovery, and continuous quality improvement with sub-millisecond overhead",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","sona","self-learning"]}),e({id:"safla-neural",name:"SAFLA Neural",description:"Self-Aware Feedback Loop Algorithm (SAFLA) neural specialist that creates intelligent, memory-persistent AI systems with self-learning capabilities",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["v3","safla","neural"]}),e({id:"production-validator",name:"Production Validator",description:"Production validation specialist ensuring applications are fully implemented and deployment-ready",domains:["quality-assessment"],capabilities:["deployment-readiness","quality-gate"],complexity:{min:"medium",max:"complex"},tags:["production","validation"]}),e({id:"tdd-london-swarm",name:"TDD London Swarm",description:"TDD London School specialist for mock-driven development within swarm coordination",domains:["test-generation"],capabilities:["tdd","unit-test","test-generation"],languages:["typescript","javascript","python"],frameworks:["jest","vitest","pytest"],complexity:{min:"medium",max:"complex"},tags:["tdd","london","mocks"]})],f=[e({id:"queen-coordinator",name:"Queen Coordinator",description:"The sovereign orchestrator of hierarchical hive operations, managing strategic decisions, resource allocation, and maintaining hive coherence",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["queen","hive","orchestration"]}),e({id:"swarm-memory-manager",name:"Swarm Memory Manager",description:"V3 distributed memory manager for cross-agent state synchronization, CRDT replication, and namespace coordination across the swarm",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["swarm","memory","crdt"]}),e({id:"worker-specialist",name:"Worker Specialist",description:"Dedicated task execution specialist that carries out assigned work with precision, continuously reporting progress through memory coordination",domains:["test-execution"],capabilities:["test-orchestration"],complexity:{min:"simple",max:"complex"},tags:["worker","execution"]}),e({id:"collective-intelligence-coordinator",name:"Collective Intelligence Coordinator",description:"Hive-mind collective decision making with Byzantine fault-tolerant consensus, attention-based coordination, and emergent intelligence patterns",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["collective","consensus"]}),e({id:"scout-explorer",name:"Scout Explorer",description:"Information reconnaissance specialist that explores unknown territories, gathers intelligence, and reports findings to the hive mind",domains:["code-intelligence"],capabilities:["coverage-analysis","gap-detection"],complexity:{min:"simple",max:"medium"},tags:["scout","exploration"]}),e({id:"adaptive-coordinator",name:"Adaptive Coordinator",description:"Dynamic topology switching coordinator with self-organizing swarm patterns and real-time optimization",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["adaptive","topology"]}),e({id:"mesh-coordinator",name:"Mesh Coordinator",description:"Peer-to-peer mesh network swarm with distributed decision making and fault tolerance",domains:["learning-optimization"],capabilities:["test-orchestration","resilience"],complexity:{min:"complex",max:"complex"},tags:["mesh","p2p"]}),e({id:"hierarchical-coordinator",name:"Hierarchical Coordinator",description:"Queen-led hierarchical swarm coordination with specialized worker delegation",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["hierarchical","delegation"]})],b=[e({id:"consensus-coordinator",name:"Consensus Coordinator",description:"Distributed consensus agent that uses sublinear solvers for fast agreement protocols in multi-agent systems",domains:["learning-optimization"],capabilities:["test-orchestration","resilience"],complexity:{min:"complex",max:"complex"},tags:["consensus","distributed"]}),e({id:"byzantine-coordinator",name:"Byzantine Coordinator",description:"Coordinates Byzantine fault-tolerant consensus protocols with malicious actor detection",domains:["security-compliance"],capabilities:["resilience","security-scanning"],complexity:{min:"complex",max:"complex"},tags:["byzantine","fault-tolerance"]}),e({id:"raft-manager",name:"Raft Manager",description:"Manages Raft consensus algorithm with leader election and log replication",domains:["learning-optimization"],capabilities:["test-orchestration","resilience"],complexity:{min:"complex",max:"complex"},tags:["raft","leader-election"]}),e({id:"crdt-synchronizer",name:"CRDT Synchronizer",description:"Implements Conflict-free Replicated Data Types for eventually consistent state synchronization",domains:["learning-optimization"],capabilities:["test-orchestration"],complexity:{min:"complex",max:"complex"},tags:["crdt","eventual-consistency"]})],m=Object.freeze([...u,...y,...v,...x,...h,...f,...b]);function E(i,t){let a=m.find(n=>n.id===i);if(!a){let n=m.find(o=>o.id.includes(i)||i.includes(o.id));if(!n){console.error(`[AgentRegistry] Agent not found: ${i}`);return}l(n,t);return}l(a,t)}function l(i,t){let a=i.tasksCompleted,n=Math.round(i.successRate*a);i.tasksCompleted++;let o=n+(t.success?1:0);i.successRate=i.tasksCompleted>0?o/i.tasksCompleted:0,a===0?i.avgDurationMs=t.executionTimeMs:i.avgDurationMs=.3*t.executionTimeMs+(1-.3)*i.avgDurationMs;let p=t.qualityScore??(t.success?.7:.3),d=i.successRate,r=.4*p+.6*d;a===0?i.performanceScore=r:i.performanceScore=.2*r+(1-.2)*i.performanceScore,i.performanceScore=Math.max(0,Math.min(1,i.performanceScore)),console.error(`[AgentRegistry] Updated ${i.id}: tasks=${i.tasksCompleted} successRate=${(i.successRate*100).toFixed(1)}% performanceScore=${i.performanceScore.toFixed(3)} avgDurationMs=${i.avgDurationMs.toFixed(0)}`)}var s=new Map;function k(i){s=new Map;let t=c(i);for(let a of t.overlays)a.config&&s.set(a.agent,a.config);if(s.size>0&&console.error(`[AgentRegistry] Loaded overlay configs for ${s.size} agent(s): ${[...s.keys()].join(", ")}`),t.warnings.length>0)for(let a of t.warnings)console.error(`[AgentRegistry] Overlay warning: ${a}`)}function Q(i){return s.get(i)}export{m as a,E as b,k as c,Q as d};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
2
|
-
import{a as h}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
|
+
import{a as h}from"./chunk-IAZEDWRX.js";import{c as m}from"./chunk-JF53LRBL.js";h();var g=m.create("regret-tracker"),l=50,R=.9,d=1.1;function f(o,t){let e=o.length;if(e<2)return 0;let n=0,r=0,i=0,a=0;for(let s=0;s<e;s++)n+=o[s],r+=t[s],i+=o[s]*t[s],a+=o[s]*o[s];let u=e*a-n*n;return Math.abs(u)<1e-10?0:(e*i-n*r)/u}var c=class{domains=new Map;alertCallbacks=[];alerts=[];maxAlerts;recentWindow;constructor(t){this.maxAlerts=t?.maxAlerts??100,this.recentWindow=t?.recentWindow??20}recordDecision(t,e,n){let r=this.getOrCreateDomainState(t),i=Math.max(0,n-e);if(r.cumulativeRegret+=i,r.decisionCount++,r.points.push({decisionCount:r.decisionCount,cumulativeRegret:r.cumulativeRegret,timestamp:Date.now()}),r.decisionCount>=l){let a=this.classifyGrowthRate(r.points);r.lastGrowthRate!=="insufficient_data"&&a!==r.lastGrowthRate&&this.emitAlert(t,r.lastGrowthRate,a),r.lastGrowthRate=a}}getCumulativeRegret(t){return this.domains.get(t)?.cumulativeRegret??0}getRegretCurve(t){let e=this.domains.get(t);return e?[...e.points]:[]}getRegretGrowthRate(t){let e=this.domains.get(t);return e?this.classifyGrowthRate(e.points):"insufficient_data"}detectStagnation(t){let e=this.getRegretGrowthRate(t);return e==="linear"||e==="superlinear"}getHealthSummary(){let t=[];for(let[e,n]of this.domains){let r=this.classifyGrowthRate(n.points),i=this.computeLogLogSlope(n.points),a=this.computeRecentAvgRegret(n);t.push({domain:e,totalDecisions:n.decisionCount,cumulativeRegret:n.cumulativeRegret,growthRate:r,stagnating:r==="linear"||r==="superlinear",slope:i,recentAvgRegret:a})}return t.sort((e,n)=>e.domain.localeCompare(n.domain)),t}onAlert(t){this.alertCallbacks.push(t)}getAlerts(){return[...this.alerts]}getTrackedDomains(){return[...this.domains.keys()].sort()}getTotalDecisions(){let t=0;for(let e of this.domains.values())t+=e.decisionCount;return t}reset(t){t?this.domains.delete(t):(this.domains.clear(),this.alerts=[])}getOrCreateDomainState(t){let e=this.domains.get(t);return e||(e={points:[],cumulativeRegret:0,decisionCount:0,lastGrowthRate:"insufficient_data"},this.domains.set(t,e)),e}classifyGrowthRate(t){if(t.length<l)return"insufficient_data";let e=this.computeLogLogSlope(t);return e===void 0?"insufficient_data":e<R?"sublinear":e<=d?"linear":"superlinear"}computeLogLogSlope(t){if(t.length<l)return;let e=t.filter(i=>i.cumulativeRegret>0&&i.decisionCount>0);if(e.length<2)return;let n=e.map(i=>Math.log(i.decisionCount)),r=e.map(i=>Math.log(i.cumulativeRegret));return f(n,r)}computeRecentAvgRegret(t){if(t.points.length<2)return 0;let e=Math.min(this.recentWindow,t.points.length),n=t.points.slice(-e),r=n[0],i=n[n.length-1],a=i.cumulativeRegret-r.cumulativeRegret,u=i.decisionCount-r.decisionCount;return u<=0?0:a/u}emitAlert(t,e,n){let r={domain:t,previousRate:e,newRate:n,timestamp:Date.now(),message:`Domain "${t}" regret growth changed from ${e} to ${n}`};this.alerts.push(r),this.alerts.length>this.maxAlerts&&this.alerts.shift(),g.info("Regret growth rate transition",{domain:t,previousRate:e,newRate:n});for(let i of this.alertCallbacks)try{i(r)}catch(a){g.error("Alert callback error",a instanceof Error?a:void 0)}}};function b(o){return new c(o)}export{b as a};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
2
|
-
import{a as w,b as A,c as O,e as D,f as z}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
|
+
import{a as w,b as A,c as O,e as D,f as z}from"./chunk-5QHSLWLP.js";import{b as S,d as $}from"./chunk-SW4OKUTC.js";import{a as N,c as F}from"./chunk-XPCNUX2U.js";import{i as v}from"./chunk-AOI67HA3.js";import*as I from"node:path";z();$();var P=["function","module","test","file","class"],L=["calls","imports","tests","depends_on","covers"],b=class{ensureSchema(e){e.transaction(()=>{e.exec(w),e.exec(A),e.exec(O)})()}schemaExists(e){return D(e)}getNodeTypes(){return P}getEdgeTypes(){return L}isValidNodeType(e){return P.includes(e)}isValidEdgeType(e){return L.includes(e)}getStats(e){if(!this.schemaExists(e))return{nodeCount:0,edgeCount:0};let t=e.prepare("SELECT COUNT(*) as count FROM hypergraph_nodes").get().count,r=e.prepare("SELECT COUNT(*) as count FROM hypergraph_edges").get().count;return{nodeCount:t,edgeCount:r}}dropSchema(e){let t=e.prepare("SELECT COUNT(*) as cnt FROM hypergraph_nodes").get()?.cnt??0,r=e.prepare("SELECT COUNT(*) as cnt FROM hypergraph_edges").get()?.cnt??0;if(t>0||r>0)throw new Error(`REFUSING to drop hypergraph schema: tables contain data (${t} nodes, ${r} edges). Backup and manually drop if needed.`);e.transaction(()=>{e.exec("DROP TABLE IF EXISTS hypergraph_edges"),e.exec("DROP TABLE IF EXISTS hypergraph_nodes")})()}};function C(n){return{id:n.id,type:n.type,name:n.name,file_path:n.filePath??null,line_start:n.lineStart??null,line_end:n.lineEnd??null,complexity:n.complexity??null,coverage:n.coverage??null,metadata:n.metadata?JSON.stringify(n.metadata):null,embedding:n.embedding?U(n.embedding):null}}function T(n){return{id:n.id,type:n.type,name:n.name,filePath:n.file_path??void 0,lineStart:n.line_start??void 0,lineEnd:n.line_end??void 0,complexity:n.complexity??void 0,coverage:n.coverage??void 0,metadata:n.metadata?S(n.metadata):void 0,embedding:n.embedding?W(n.embedding):void 0,createdAt:n.created_at,updatedAt:n.updated_at}}function M(n){return{id:n.id,source_id:n.sourceId,target_id:n.targetId,type:n.type,weight:n.weight??1,properties:n.properties?JSON.stringify(n.properties):null}}function H(n){return{id:n.id,sourceId:n.source_id,targetId:n.target_id,type:n.type,weight:n.weight,properties:n.properties?S(n.properties):void 0,createdAt:n.created_at}}function x(n,e,t){return`${n}--${t}-->${e}`}function U(n){let e=Buffer.alloc(n.length*4);for(let t=0;t<n.length;t++)e.writeFloatLE(n[t],t*4);return e}function W(n){let e=[],t=n.length/4;for(let r=0;r<t;r++)e.push(n.readFloatLE(r*4));return e}F();var B={maxTraversalDepth:10,maxQueryResults:1e3,enableVectorSearch:!1},R=class{config;schemaManager;initialized=!1;constructor(e){this.config={...B,...e},this.schemaManager=new b}async initialize(){this.initialized||(this.schemaManager.ensureSchema(this.config.db),this.initialized=!0)}isInitialized(){return this.initialized}async addNode(e){this.ensureInitialized();let t=v(),r={id:t,...e},s=C(r);return this.config.db.prepare(`
|
|
3
3
|
INSERT INTO hypergraph_nodes (id, type, name, file_path, line_start, line_end, complexity, coverage, metadata, embedding)
|
|
4
4
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
5
5
|
`).run(s.id,s.type,s.name,s.file_path,s.line_start,s.line_end,s.complexity,s.coverage,s.metadata,s.embedding),t}async addEdge(e){this.ensureInitialized();let t=x(e.sourceId,e.targetId,e.type),r={id:t,...e},s=M(r);return this.config.db.prepare(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
2
|
function r(e,f){if(e==null)return e;let n={...e};for(let t of f){let o=n[t];typeof o=="string"&&(n[t]=new Date(o))}return n}export{r as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
2
|
-
import{b as x,c as w,d as U,e as A}from"./chunk-COZDJLIL.js";import{a as v,b as _}from"./chunk-JLKHPIQF.js";import{a as b,b as B,c as k,d as O,e as F}from"./chunk-NQZYUH6S.js";import{a as P}from"./chunk-KEC5FBAW.js";import{b as I,c as H}from"./chunk-2TDWCXZ6.js";import{i as z}from"./chunk-IK6AJX3C.js";var y={heavyweight:{requiresReasoning:!0,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!0,requiresJsonMode:!0,minContextSize:1e5,costSensitivity:"low",latencySensitivity:"low"},standard:{requiresReasoning:!0,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!0,minContextSize:5e4,costSensitivity:"medium",latencySensitivity:"medium"},lightweight:{requiresReasoning:!1,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!0,minContextSize:16e3,costSensitivity:"medium",latencySensitivity:"high"},minimal:{requiresReasoning:!1,requiresTools:!1,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!1,minContextSize:4e3,costSensitivity:"high",latencySensitivity:"medium"}},V={security:y.heavyweight,"test-generation":y.standard,"code-analysis":y.standard,learning:y.standard,performance:{...y.lightweight,costSensitivity:"high"},coordination:y.lightweight,general:{...y.lightweight,requiresJsonMode:!1,latencySensitivity:"medium"},documentation:{...y.minimal,minContextSize:16e3},simple:y.minimal};var f=class{rules=[];constructor(e=[]){this.setRules(e)}setRules(e){this.rules=[...e].filter(t=>t.enabled).sort((t,r)=>r.priority-t.priority)}getRules(){return[...this.rules]}addRule(e){this.rules.push(e),this.rules=this.rules.filter(t=>t.enabled).sort((t,r)=>r.priority-t.priority)}removeRule(e){let t=this.rules.findIndex(r=>r.id===e);return t>=0?(this.rules.splice(t,1),!0):!1}setRuleEnabled(e,t){let r=this.rules.find(i=>i.id===e);return r?(r.enabled=t,this.rules=this.rules.filter(i=>i.enabled).sort((i,o)=>o.priority-i.priority),!0):!1}evaluate(e){let t=0;for(let r of this.rules)if(t++,this.matchesCondition(e,r.condition))return{rule:r,rulesEvaluated:t};return null}evaluateAll(e){return this.rules.filter(t=>this.matchesCondition(e,t.condition))}matchesCondition(e,t){if(t.agentType!==void 0&&(!e.agentType||!t.agentType.includes(e.agentType))||t.requiresTools!==void 0&&!!e.requiresTools!==t.requiresTools)return!1;if(t.complexity!==void 0){let r=Array.isArray(t.complexity)?t.complexity:[t.complexity];if(!e.complexity||!r.includes(e.complexity))return!1}if(t.localOnly!==void 0&&t.localOnly){let r=["ollama","onnx"];if(e.preferredProvider&&!r.includes(e.preferredProvider))return!1}if(t.requiresReasoning!==void 0&&t.requiresReasoning&&e.complexity==="low")return!1;if(t.tokenRange!==void 0){let r=this.estimateTokens(e);if(t.tokenRange.min!==void 0&&r<t.tokenRange.min||t.tokenRange.max!==void 0&&r>t.tokenRange.max)return!1}return!(t.requiredCapabilities!==void 0&&t.requiredCapabilities.length>0&&(!e.requiredCapabilities||e.requiredCapabilities.length===0||!t.requiredCapabilities.every(i=>e.requiredCapabilities.includes(i)))||t.custom!==void 0&&!t.custom(e))}estimateTokens(e){let t=0;e.systemPrompt&&(t+=Math.ceil(e.systemPrompt.length/4));for(let r of e.messages)t+=Math.ceil(r.content.length/4);return t}},D=[{id:"security-agents-opus",name:"Security Agents to Claude Opus",description:"Route security-critical agents to Claude Opus for best security analysis",condition:{agentType:["security-auditor","security-architect","v3-qe-security-scanner"]},action:{provider:"claude",model:"claude-opus-4-7",temperature:.1},enabled:!0,priority:100},{id:"test-gen-with-tools",name:"Test Generation with Tools",description:"Route test generation requests that need tools to Claude Sonnet",condition:{agentType:["v3-qe-test-generator","tester"],requiresTools:!0},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:95},{id:"high-complexity-reasoning",name:"High Complexity Reasoning",description:"Route high complexity tasks requiring reasoning to advanced models",condition:{complexity:"high",requiresReasoning:!0},action:{provider:"claude",model:"claude-opus-4-7",temperature:.2},enabled:!0,priority:90},{id:"code-analysis-agents",name:"Code Analysis Agents",description:"Route code analysis to Claude Sonnet for balanced performance",condition:{agentType:["code-analyzer","v3-qe-code-intelligence","reviewer"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.2},enabled:!0,priority:85},{id:"coverage-analysis",name:"Coverage Analysis Agents",description:"Route coverage analysis to efficient models",condition:{agentType:["v3-qe-coverage-analyzer"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.1},enabled:!0,priority:80},{id:"defect-prediction",name:"Defect Prediction Agents",description:"Route defect prediction to capable models",condition:{agentType:["v3-qe-defect-predictor"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:75},{id:"medium-complexity",name:"Medium Complexity Tasks",description:"Route medium complexity to balanced Claude Sonnet",condition:{complexity:"medium"},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:60},{id:"low-complexity-haiku",name:"Low Complexity to Haiku",description:"Route low complexity tasks to Haiku for cost efficiency",condition:{complexity:"low"},action:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.3},enabled:!0,priority:50},{id:"local-only-ollama",name:"Local Only Requests",description:"Route local-only requests to Ollama",condition:{localOnly:!0},action:{provider:"ollama",model:"llama3.1",temperature:.3},enabled:!0,priority:40},{id:"small-requests-haiku",name:"Small Token Requests",description:"Route small requests to Haiku for efficiency",condition:{tokenRange:{max:500}},action:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.3},enabled:!0,priority:30}];import{randomUUID as $}from"crypto";var C=class{decisions=[];providerCalls=[];fallbacks=[];cacheHits=0;cacheMisses=0;startTime=new Date;maxRecords;maxCallRecords;constructor(e={}){this.maxRecords=e.maxRecords??1e4,this.maxCallRecords=e.maxCallRecords??5e3}recordRoutingDecision(e,t,r={}){let i={id:`rd-${Date.now()}-${$().slice(0,8)}`,timestamp:new Date,provider:e.providerType,model:e.model,mode:this.inferMode(e.reason),reason:e.reason,latencyMs:t,decisionTimeMs:e.metadata.decisionTimeMs,agentType:r.agentType,success:r.success??!0,tokenUsage:r.tokenUsage,cost:r.cost,wasFallback:e.reason==="fallback",ruleId:e.matchedRule?.id};this.decisions.push(i),this.trimRecords()}recordProviderCall(e,t,r,i,o={}){let n=o.inputTokens??Math.floor(i*.7),s=o.outputTokens??i-n,a={timestamp:new Date,provider:e,model:t,latencyMs:r,inputTokens:n,outputTokens:s,totalTokens:i,success:o.success??!0,cost:o.cost,agentType:o.agentType};this.providerCalls.push(a),this.trimCallRecords()}recordFallback(e,t,r,i){let o={timestamp:new Date,fromProvider:e,toProvider:t,reason:r,agentType:i};this.fallbacks.push(o),this.fallbacks.length>1e3&&(this.fallbacks=this.fallbacks.slice(-1e3))}recordCacheHit(){this.cacheHits++}recordCacheMiss(){this.cacheMisses++}getMetrics(e="all"){let t=this.getWindowStart(e),r=this.filterByTime(this.decisions,t),i=this.filterByTime(this.providerCalls,t),o=this.filterByTime(this.fallbacks,t),n=this.calculateProviderMetrics(r,i),s=this.calculateAgentMetrics(r,i),a=r.map(m=>m.decisionTimeMs),c=r.length,l=this.countByMode(r),d=r.filter(m=>m.wasFallback).length,g=r.filter(m=>m.ruleId).length;return{byProvider:Object.fromEntries(n),byAgentType:s,totalDecisions:c,decisionsByMode:l,avgDecisionTimeMs:this.average(a),p95DecisionTimeMs:this.percentile(a,95),p99DecisionTimeMs:this.percentile(a,99),fallbackRate:c>0?d/c:0,ruleMatchRate:c>0?g/c:0,estimatedCostSavings:this.calculateCostSavings(r),ruleStats:{totalEvaluated:r.reduce((m,u)=>m+1,0),matched:g,avgRulesPerDecision:1},cacheStats:{hits:this.cacheHits,misses:this.cacheMisses,hitRate:this.cacheHits+this.cacheMisses>0?this.cacheHits/(this.cacheHits+this.cacheMisses):0},period:{start:t,end:new Date},recentDecisions:r.slice(-50),fallbackStats:this.calculateFallbackStats(o)}}getMetricsByProvider(e){let t=this.decisions.filter(a=>a.provider===e),r=this.providerCalls.filter(a=>a.provider===e),i=r.map(a=>a.latencyMs),o=t.map(a=>a.decisionTimeMs),n=r.filter(a=>a.success),s=r.filter(a=>!a.success);return{provider:e,selectionCount:t.length,ruleMatchCount:t.filter(a=>a.ruleId).length,fallbackCount:t.filter(a=>a.wasFallback).length,avgDecisionTimeMs:this.average(o),successRate:r.length>0?n.length/r.length:1,avgLatencyMs:this.average(i),p95LatencyMs:this.percentile(i,95),p99LatencyMs:this.percentile(i,99),totalCost:r.reduce((a,c)=>a+(c.cost??0),0),totalTokens:r.reduce((a,c)=>a+c.totalTokens,0),totalInputTokens:r.reduce((a,c)=>a+c.inputTokens,0),totalOutputTokens:r.reduce((a,c)=>a+c.outputTokens,0),circuitState:"closed",latencyHistogram:i.slice(-100),decisionTimeHistogram:o.slice(-100),errorCount:s.length,lastError:s.length>0?s[s.length-1].timestamp:void 0,recentCalls:r.slice(-20)}}getMetricsByAgentType(e){let t=this.decisions.filter(c=>c.agentType===e),r=this.providerCalls.filter(c=>c.agentType===e),i=new Map,o=new Map;for(let c of t)i.set(c.provider,(i.get(c.provider)??0)+1),o.set(c.model,(o.get(c.model)??0)+1);let n=r.map(c=>c.latencyMs),s=t.filter(c=>c.wasFallback).length,a=t.filter(c=>c.success).length;return{agentType:e,totalDecisions:t.length,providerDistribution:i,modelDistribution:o,avgLatencyMs:this.average(n),totalCost:r.reduce((c,l)=>c+(l.cost??0),0),totalTokens:r.reduce((c,l)=>c+l.totalTokens,0),fallbackRate:t.length>0?s/t.length:0,successRate:t.length>0?a/t.length:1}}getAuditLog(e={}){let t=this.decisions;e.since&&(t=t.filter(i=>i.timestamp>=e.since)),e.provider&&(t=t.filter(i=>i.provider===e.provider)),e.agentType&&(t=t.filter(i=>i.agentType===e.agentType));let r=e.limit??100;return t.slice(-r).map(i=>({id:i.id,timestamp:i.timestamp,context:{agentType:i.agentType},decision:{providerType:i.provider,model:i.model,providerModelId:i.model,reason:i.reason,confidence:1,metadata:{decisionTimeMs:i.decisionTimeMs,timestamp:i.timestamp}},outcome:{success:i.success,latencyMs:i.latencyMs,tokenUsage:i.tokenUsage,cost:i.cost}}))}resetMetrics(){this.decisions=[],this.providerCalls=[],this.fallbacks=[],this.cacheHits=0,this.cacheMisses=0,this.startTime=new Date}inferMode(e){switch(e){case"manual":return"manual";case"rule-match":return"rule-based";case"cost-optimization":return"cost-optimized";case"performance-optimization":return"performance-optimized";default:return"rule-based"}}trimRecords(){this.decisions.length>this.maxRecords&&(this.decisions=this.decisions.slice(-this.maxRecords))}trimCallRecords(){this.providerCalls.length>this.maxCallRecords&&(this.providerCalls=this.providerCalls.slice(-this.maxCallRecords))}getWindowStart(e){let t=new Date;switch(e){case"1m":return new Date(t.getTime()-60*1e3);case"5m":return new Date(t.getTime()-300*1e3);case"15m":return new Date(t.getTime()-900*1e3);case"1h":return new Date(t.getTime()-3600*1e3);case"24h":return new Date(t.getTime()-1440*60*1e3);case"7d":return new Date(t.getTime()-10080*60*1e3);default:return this.startTime}}filterByTime(e,t){return e.filter(r=>r.timestamp>=t)}calculateProviderMetrics(e,t){let r=new Map;for(let i of v){let o=e.filter(l=>l.provider===i),n=t.filter(l=>l.provider===i);if(o.length===0&&n.length===0)continue;let s=n.map(l=>l.latencyMs),a=o.map(l=>l.decisionTimeMs),c=n.filter(l=>l.success);r.set(i,{provider:i,selectionCount:o.length,ruleMatchCount:o.filter(l=>l.ruleId).length,fallbackCount:o.filter(l=>l.wasFallback).length,avgDecisionTimeMs:this.average(a),successRate:n.length>0?c.length/n.length:1,avgLatencyMs:this.average(s),p95LatencyMs:this.percentile(s,95),p99LatencyMs:this.percentile(s,99),totalCost:n.reduce((l,d)=>l+(d.cost??0),0),totalTokens:n.reduce((l,d)=>l+d.totalTokens,0),circuitState:"closed"})}return r}calculateAgentMetrics(e,t){let r=new Set;e.forEach(o=>o.agentType&&r.add(o.agentType)),t.forEach(o=>o.agentType&&r.add(o.agentType));let i=new Map;for(let o of r)i.set(o,this.getMetricsByAgentType(o));return i}countByMode(e){let t={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0};for(let r of e)t[r.mode]++;return t}calculateFallbackStats(e){let t=new Map,r=new Map;for(let i of e)t.set(i.fromProvider,(t.get(i.fromProvider)??0)+1),r.set(i.reason,(r.get(i.reason)??0)+1);return{total:e.length,byProvider:t,byReason:r}}calculateCostSavings(e){return e.reduce((t,r)=>r.cost&&r.mode==="cost-optimized"?t+r.cost.totalCost*.2:t,0)}average(e){return e.length===0?0:e.reduce((t,r)=>t+r,0)/e.length}percentile(e,t){if(e.length===0)return 0;let r=[...e].sort((o,n)=>o-n),i=Math.ceil(t/100*r.length)-1;return r[Math.max(0,i)]}};function E(p){return new C(p)}var R=class{records=[];alerts=[];maxRecords;alertCheckInterval;constructor(e={}){this.maxRecords=e.maxRecords??1e4}recordCost(e,t,r,i,o={}){let n=this.calculateCost(t,r,i),s={timestamp:new Date,provider:e,model:t,inputTokens:r,outputTokens:i,inputCost:n.inputCost,outputCost:n.outputCost,totalCost:n.totalCost,agentType:o.agentType,requestId:o.requestId};return this.records.push(s),this.trimRecords(),this.checkAlerts(),s}recordCostFromInfo(e,t,r,i,o={}){let n={timestamp:new Date,provider:e,model:t,inputTokens:r.promptTokens,outputTokens:r.completionTokens,inputCost:i.inputCost,outputCost:i.outputCost,totalCost:i.totalCost,agentType:o.agentType,requestId:o.requestId};return this.records.push(n),this.trimRecords(),this.checkAlerts(),n}getCostByProvider(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Map;for(let o of v){let n=r.filter(c=>c.provider===o);if(n.length===0)continue;let s=n.reduce((c,l)=>c+l.totalCost,0),a=n.reduce((c,l)=>c+l.inputTokens+l.outputTokens,0);i.set(o,{totalCost:s,totalTokens:a,totalRequests:n.length,avgCostPerRequest:s/n.length,avgCostPerToken:a>0?s/a:0})}return i}getCostByAgentType(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Set;r.forEach(s=>s.agentType&&i.add(s.agentType));let o=new Map;for(let s of i){let a=r.filter(d=>d.agentType===s),c=a.reduce((d,g)=>d+g.totalCost,0),l=a.reduce((d,g)=>d+g.inputTokens+g.outputTokens,0);o.set(s,{totalCost:c,totalTokens:l,totalRequests:a.length,avgCostPerRequest:a.length>0?c/a.length:0,avgCostPerToken:l>0?c/l:0})}let n=r.filter(s=>!s.agentType);if(n.length>0){let s=n.reduce((c,l)=>c+l.totalCost,0),a=n.reduce((c,l)=>c+l.inputTokens+l.outputTokens,0);o.set("unknown",{totalCost:s,totalTokens:a,totalRequests:n.length,avgCostPerRequest:s/n.length,avgCostPerToken:a>0?s/a:0})}return o}getCostByModel(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Set;r.forEach(n=>i.add(n.model));let o=new Map;for(let n of i){let s=r.filter(l=>l.model===n),a=s.reduce((l,d)=>l+d.totalCost,0),c=s.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0);o.set(n,{totalCost:a,totalTokens:c,totalRequests:s.length,avgCostPerRequest:s.length>0?a/s.length:0,avgCostPerToken:c>0?a/c:0})}return o}getTotalCost(e="all"){let t=this.getPeriodStart(e);return this.filterByTime(t).reduce((i,o)=>i+o.totalCost,0)}getCostTrend(e){let t=new Date,r=[],i,o;switch(e){case"1h":i=300*1e3,o=12;break;case"24h":i=3600*1e3,o=24;break;case"7d":i=1440*60*1e3,o=7;break}for(let n=o-1;n>=0;n--){let s=new Date(t.getTime()-n*i),a=new Date(s.getTime()-i),c=this.records.filter(l=>l.timestamp>=a&&l.timestamp<s);r.push({timestamp:s,cost:c.reduce((l,d)=>l+d.totalCost,0),tokens:c.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0),requests:c.length})}return r}addBudgetAlert(e,t,r){let i={threshold:e,period:t,callback:r,active:!0};return this.alerts.push(i),this.alertCheckInterval||(this.alertCheckInterval=setInterval(()=>this.checkAlerts(),6e4)),`alert-${this.alerts.length-1}`}removeBudgetAlert(e){return e>=0&&e<this.alerts.length?(this.alerts.splice(e,1),this.alerts.length===0&&this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0),!0):!1}getOptimizationSuggestions(){let e=[],t=this.getCostByModel("24h");for(let[n,s]of t)P[n]&&s.totalCost>1&&(n.includes("opus")&&e.push({type:"model-switch",description:"Consider using Sonnet instead of Opus for non-critical tasks",estimatedSavings:s.totalCost*.5,currentCost:s.totalCost,suggestedModel:"claude-sonnet-4-6"}),n==="gpt-4o"&&e.push({type:"model-switch",description:"Consider using GPT-4o-mini for simpler tasks",estimatedSavings:s.totalCost*.7,currentCost:s.totalCost,suggestedModel:"gpt-4o-mini"}));let r=this.getCostByProvider("24h"),i=[...r.values()].reduce((n,s)=>n+s.totalCost,0);return i>10&&!r.has("ollama")&&e.push({type:"provider-switch",description:"Consider using Ollama for development/testing workloads",estimatedSavings:i*.3,currentCost:i,suggestedProvider:"ollama"}),[...t.values()].reduce((n,s)=>n+s.totalRequests,0)>100&&e.push({type:"caching",description:"Enable response caching to reduce redundant API calls",estimatedSavings:i*.15,currentCost:i}),e}getRecords(){return[...this.records]}clear(){this.records=[]}reset(){this.records=[],this.alerts=[],this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0)}dispose(){this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0)}calculateCost(e,t,r){let i=P[e];if(!i)return{inputCost:0,outputCost:0,totalCost:0,currency:"USD"};let o=t/1e6*i.input,n=r/1e6*i.output;return{inputCost:o,outputCost:n,totalCost:o+n,currency:"USD"}}trimRecords(){this.records.length>this.maxRecords&&(this.records=this.records.slice(-this.maxRecords))}getPeriodStart(e){let t=new Date;switch(e){case"1h":return new Date(t.getTime()-3600*1e3);case"24h":return new Date(t.getTime()-1440*60*1e3);case"7d":return new Date(t.getTime()-10080*60*1e3);case"30d":return new Date(t.getTime()-720*60*60*1e3);default:return new Date(0)}}filterByTime(e){return this.records.filter(t=>t.timestamp>=e)}checkAlerts(){for(let e of this.alerts){if(!e.active)continue;let t=this.getTotalCost(e.period);if(t>=e.threshold){e.active=!1;let r=this.getPeriodStart(e.period),i=this.filterByTime(r),o=i.reduce((n,s)=>n+s.inputTokens+s.outputTokens,0);try{e.callback({totalCost:t,totalTokens:o,totalRequests:i.length,avgCostPerRequest:i.length>0?t/i.length:0,avgCostPerToken:o>0?t/o:0})}catch(n){console.error("Budget alert callback error:",n)}}}}};function q(p){return new R(p)}H();var T=class{cache=new Map;maxSize;ttlMs;constructor(e=100,t=6e4){this.maxSize=e,this.ttlMs=t}get(e){let t=this.cache.get(e);return t?Date.now()>t.expiresAt?(this.cache.delete(e),null):t.decision:null}set(e,t){if(this.cache.size>=this.maxSize){let r=this.cache.keys().next().value;r&&this.cache.delete(r)}this.cache.set(e,{decision:t,expiresAt:Date.now()+this.ttlMs})}clear(){this.cache.clear()}getStats(){return{hits:0,misses:0,size:this.cache.size}}},M=class{config;providerManager;ruleEngine;decisionCache;metrics;routerMetrics;costMetrics;initialized=!1;constructor(e,t){this.providerManager=e,this.config={..._,...t};let r=this.config.rules.length>0?this.config.rules:D;this.ruleEngine=new f(r),this.decisionCache=new T(100,this.config.decisionCacheTtlMs),this.metrics=new S,this.routerMetrics=E(),this.costMetrics=q()}async initialize(){this.initialized||(await this.providerManager.initialize(),this.initialized=!0)}getMode(){return this.config.mode}setMode(e){this.config.mode=e,this.decisionCache.clear()}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e},e.rules&&this.ruleEngine.setRules(e.rules),e.decisionCacheTtlMs&&(this.decisionCache=new T(100,e.decisionCacheTtlMs))}async selectProvider(e){await this.ensureInitialized();let t=Date.now();if(this.config.cacheDecisions){let i=this.generateCacheKey(e),o=this.decisionCache.get(i);if(o)return this.metrics.recordCacheHit(),this.routerMetrics.recordCacheHit(),o;this.metrics.recordCacheMiss(),this.routerMetrics.recordCacheMiss()}let r;switch(this.config.mode){case"manual":r=await this.selectManual(e);break;case"rule-based":r=await this.selectRuleBased(e);break;case"cost-optimized":r=await this.selectCostOptimized(e);break;case"performance-optimized":r=await this.selectPerformanceOptimized(e);break;default:r=await this.selectRuleBased(e)}if(r.metadata.decisionTimeMs=Date.now()-t,this.config.cacheDecisions){let i=this.generateCacheKey(e);this.decisionCache.set(i,r)}return this.metrics.recordDecision(r,this.config.mode),r}async chat(e){await this.ensureInitialized();let t=z(),r=await this.selectProvider(e),i=e.agentType??"";if(U(i)&&(w(r.model)||w(r.providerModelId))){let n=r.model,s=r.providerModelId;r.model=A(i,r.model,x),r.providerModelId=A(i,r.providerModelId,x),console.warn(`[aqe] ADR-093: ${i} pinned to ${r.model} (was ${n}/${s}); set AQE_CYBER_VERIFIED=true after Cyber Verification Program approval`)}return await this.executeWithFallback(e,r,t)}async*stream(e){await this.ensureInitialized();let t=await this.selectProvider(e),r=await this.chat(e),i=100;for(let o=0;o<r.content.length;o+=i){let n=o+i>=r.content.length;yield{type:n?"done":"content",delta:r.content.slice(o,o+i),accumulated:r.content.slice(0,o+i),done:n,tokenCount:Math.ceil((o+i)/4),model:r.model,provider:t.providerType,usage:n?r.usage:void 0}}}getMetrics(){return this.metrics.getMetrics()}getEnhancedMetrics(e){return this.routerMetrics.getMetrics(e)}getProviderMetrics(e){return this.routerMetrics.getMetricsByProvider(e)}getAgentMetrics(e){return this.routerMetrics.getMetricsByAgentType(e)}getCostByProvider(e){return this.costMetrics.getCostByProvider(e)}getCostByAgentType(e){return this.costMetrics.getCostByAgentType(e)}getCostByModel(e){return this.costMetrics.getCostByModel(e)}getTotalCost(e){return this.costMetrics.getTotalCost(e)}getCostTrend(e){return this.costMetrics.getCostTrend(e)}getAuditLog(e){return this.routerMetrics.getAuditLog(e)}getOptimizationSuggestions(){return this.costMetrics.getOptimizationSuggestions()}resetMetrics(){this.metrics.reset(),this.routerMetrics.resetMetrics(),this.costMetrics.reset()}clearCache(){this.decisionCache.clear()}async selectManual(e){let t=e.preferredProvider??this.config.defaultProvider,r=e.model??this.config.defaultModel,i=this.providerManager.getProvider(t);return i?this.createDecision(i,t,r,"manual"):this.createFallbackDecision(e,"manual")}async selectRuleBased(e){let t=this.ruleEngine.evaluate(e);if(t){let{rule:o,rulesEvaluated:n}=t,s=o.action.provider,a=this.providerManager.getProvider(s);if(a){let c=this.createDecision(a,s,o.action.model,"rule-match",o);return c.metadata.rulesEvaluated=n,c}}let r=this.config.defaultProvider,i=this.providerManager.getProvider(r);return i?this.createDecision(i,r,this.config.defaultModel,"default"):this.createFallbackDecision(e,"rule-based")}async selectCostOptimized(e){let t=this.providerManager.getAvailableProviders();if(t.length===0)return this.createFallbackDecision(e,"cost-optimized");let r=1/0,i=t[0],o,n=[];for(let s of t){let a=this.providerManager.getProvider(s);if(!a)continue;let{input:c,output:l}=a.getCostPerToken(),d=this.estimateCostValue(e,c,l);n.push({provider:s,model:a.getConfig().model,reason:`Estimated cost: $${d.toFixed(6)}`,estimatedCost:d,excluded:!1}),d<r&&(r=d,i=s,o=a)}if(o){let s=o.getConfig(),a=this.createDecision(o,i,s.model,"cost-optimization");return a.metadata.estimatedCost=this.createCostEstimate(e,o),a.metadata.alternativesConsidered=n,a}return this.createFallbackDecision(e,"cost-optimized")}async selectPerformanceOptimized(e){let t=this.providerManager.getAvailableProviders(),r=this.providerManager.getMetrics();if(t.length===0)return this.createFallbackDecision(e,"performance-optimized");let i=1/0,o=t[0],n,s=[];for(let a of t){let c=this.providerManager.getProvider(a);if(!c)continue;let d=r[a]?.avgLatencyMs??1/0;s.push({provider:a,model:c.getConfig().model,reason:`Avg latency: ${d}ms`,estimatedLatencyMs:d,excluded:!1}),d<i&&(i=d,o=a,n=c)}if(n){let a=n.getConfig(),c=this.createDecision(n,o,a.model,"performance-optimization");return c.metadata.estimatedLatencyMs=i,c.metadata.alternativesConsidered=s,c}return this.createFallbackDecision(e,"performance-optimized")}async executeWithFallback(e,t,r){let{fallbackChain:i,fallbackBehavior:o}=this.config,n,s=0,a=[{provider:t.providerType,model:t.providerModelId}],c=this.config.defaultProvider;c&&c!==t.providerType&&a.push({provider:c,model:this.config.defaultModel});for(let l of i.entries)if(l.enabled&&l.provider!==t.providerType)for(let d of l.models)a.push({provider:l.provider,model:d});for(let{provider:l,model:d}of a){if(s>=o.maxAttempts)break;let g=this.providerManager.getProvider(l);if(!g)continue;s++;let m=Date.now();try{let u=await g.generate(e.messages,{model:d,temperature:e.temperature,maxTokens:e.maxTokens,systemPrompt:e.systemPrompt,timeoutMs:e.timeoutMs,skipCache:e.skipCache,metadata:e.metadata}),h=Date.now()-m;return this.metrics.recordSuccess(l),this.routerMetrics.recordRoutingDecision(t,h,{agentType:e.agentType,success:!0,tokenUsage:u.usage,cost:u.cost}),this.routerMetrics.recordProviderCall(l,d,h,u.usage.totalTokens,{inputTokens:u.usage.promptTokens,outputTokens:u.usage.completionTokens,success:!0,cost:u.cost.totalCost,agentType:e.agentType}),this.costMetrics.recordCostFromInfo(l,d,u.usage,u.cost,{agentType:e.agentType,requestId:u.requestId}),{content:u.content,model:u.model,providerModelId:u.model,provider:u.provider,usage:u.usage,cost:u.cost,latencyMs:u.latencyMs,finishReason:u.finishReason,cached:u.cached,requestId:u.requestId,routingDecision:t}}catch(u){n=I(u);let h=Date.now()-m;if(this.metrics.recordFailure(l),this.routerMetrics.recordProviderCall(l,d,h,0,{success:!1,agentType:e.agentType}),s<a.length){let L=a[s];L&&this.routerMetrics.recordFallback(l,L.provider,n.message,e.agentType)}!(B(u)&&!u.retryable)&&s<o.maxAttempts&&await this.delay(o.delayMs)}}throw b(`All providers failed after ${s} attempts: ${n?.message??"Unknown error"}`,"PROVIDER_UNAVAILABLE",{retryable:!1,cause:n})}createDecision(e,t,r,i,o){let{canonicalModel:n,providerModelId:s}=this.resolveModelIds(r,t);return{provider:e,providerType:t,model:n,providerModelId:s,reason:i,matchedRule:o,confidence:i==="rule-match"?.95:.8,metadata:{decisionTimeMs:0,timestamp:new Date}}}resolveModelIds(e,t){let i={claude:"anthropic",openai:"openai",ollama:"ollama",openrouter:"openrouter",gemini:"gemini","azure-openai":"azure",bedrock:"bedrock"}[t];if(!i)return{canonicalModel:e,providerModelId:e};try{let o=O(e),n=k(o,i);return{canonicalModel:o,providerModelId:n}}catch{try{if(F(e)){let n=k(e,i);return{canonicalModel:e,providerModelId:n}}}catch{}return{canonicalModel:e,providerModelId:e}}}createFallbackDecision(e,t){for(let i of this.config.fallbackChain.entries){if(!i.enabled||!["claude","openai","ollama"].includes(i.provider))continue;let n=this.providerManager.getProvider(i.provider);if(n)return this.createDecision(n,i.provider,i.models[0],"fallback")}let r=this.providerManager.getAvailableProviders();if(r.length>0){let i=r[0],o=this.providerManager.getProvider(i);return this.createDecision(o,i,o.getConfig().model,"fallback")}throw b(`No providers available for ${t} selection`,"PROVIDER_UNAVAILABLE",{retryable:!1})}generateCacheKey(e){return[this.config.mode,e.agentType??"default",e.complexity??"medium",e.requiresTools?"tools":"no-tools",e.preferredProvider??"any"].join(":")}estimateCostValue(e,t,r){let i=0;e.systemPrompt&&(i+=Math.ceil(e.systemPrompt.length/4));for(let n of e.messages)i+=Math.ceil(n.content.length/4);let o=e.maxTokens??1e3;return i*t+o*r}createCostEstimate(e,t){let{input:r,output:i}=t.getCostPerToken(),o=0;e.systemPrompt&&(o+=Math.ceil(e.systemPrompt.length/4));for(let a of e.messages)o+=Math.ceil(a.content.length/4);let n=e.maxTokens??1e3,s=o*r+n*i;return{inputTokens:o,outputTokens:n,totalCostUsd:s,inputCostPer1M:r*1e6,outputCostPer1M:i*1e6}}delay(e){return new Promise(t=>setTimeout(t,e))}async ensureInitialized(){this.initialized||await this.initialize()}},S=class{decisions=new Map;decisionsByMode={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0};totalDecisions=0;cacheHits=0;cacheMisses=0;totalRulesEvaluated=0;rulesMatched=0;fallbackCount=0;startTime=new Date;recordDecision(e,t){this.totalDecisions++,this.decisionsByMode[t]++,e.metadata.rulesEvaluated&&(this.totalRulesEvaluated+=e.metadata.rulesEvaluated),e.matchedRule&&this.rulesMatched++,e.reason==="fallback"&&this.fallbackCount++;let r=this.decisions.get(e.providerType);r||(r=this.createEmptyMetrics(e.providerType),this.decisions.set(e.providerType,r)),r.selectionCount++,e.reason==="rule-match"&&r.ruleMatchCount++,e.reason==="fallback"&&r.fallbackCount++}recordSuccess(e){let t=this.decisions.get(e);if(t){let r=t.successRate*t.selectionCount;t.successRate=(r+1)/t.selectionCount}}recordFailure(e){}recordCacheHit(){this.cacheHits++}recordCacheMiss(){this.cacheMisses++}getMetrics(){let e={};for(let[r,i]of this.decisions)e[r]={...i};let t=this.totalDecisions>0?this.rulesMatched/this.totalDecisions:0;return{byProvider:e,totalDecisions:this.totalDecisions,decisionsByMode:{...this.decisionsByMode},avgDecisionTimeMs:0,p95DecisionTimeMs:0,p99DecisionTimeMs:0,fallbackRate:this.totalDecisions>0?this.fallbackCount/this.totalDecisions:0,ruleMatchRate:t,estimatedCostSavings:0,ruleStats:{totalEvaluated:this.totalRulesEvaluated,matched:this.rulesMatched,avgRulesPerDecision:this.totalDecisions>0?this.totalRulesEvaluated/this.totalDecisions:0},cacheStats:{hits:this.cacheHits,misses:this.cacheMisses,hitRate:this.cacheHits+this.cacheMisses>0?this.cacheHits/(this.cacheHits+this.cacheMisses):0},period:{start:this.startTime,end:new Date}}}reset(){this.decisions.clear(),this.decisionsByMode={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0},this.totalDecisions=0,this.cacheHits=0,this.cacheMisses=0,this.totalRulesEvaluated=0,this.rulesMatched=0,this.fallbackCount=0,this.startTime=new Date}createEmptyMetrics(e){return{provider:e,selectionCount:0,ruleMatchCount:0,fallbackCount:0,avgDecisionTimeMs:0,successRate:1,avgLatencyMs:0,p95LatencyMs:0,p99LatencyMs:0,totalCost:0,totalTokens:0,circuitState:"closed"}}};function Xe(p,e){return new M(p,e)}function Ze(p){return new M(p,{mode:"rule-based",rules:D,defaultProvider:"claude",defaultModel:"claude-sonnet-4-6",enableMetrics:!0,cacheDecisions:!0})}export{M as a,Xe as b,Ze as c};
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
|
+
import{b as x,c as w,d as U,e as A}from"./chunk-QEPFXY6G.js";import{a as v,b as _}from"./chunk-4BXGVM2C.js";import{a as b,b as B,c as k,d as O,e as F}from"./chunk-C2M74HCN.js";import{a as P}from"./chunk-7SJX4CFK.js";import{b as I,c as H}from"./chunk-XPCNUX2U.js";import{i as z}from"./chunk-AOI67HA3.js";var y={heavyweight:{requiresReasoning:!0,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!0,requiresJsonMode:!0,minContextSize:1e5,costSensitivity:"low",latencySensitivity:"low"},standard:{requiresReasoning:!0,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!0,minContextSize:5e4,costSensitivity:"medium",latencySensitivity:"medium"},lightweight:{requiresReasoning:!1,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!0,minContextSize:16e3,costSensitivity:"medium",latencySensitivity:"high"},minimal:{requiresReasoning:!1,requiresTools:!1,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!1,minContextSize:4e3,costSensitivity:"high",latencySensitivity:"medium"}},V={security:y.heavyweight,"test-generation":y.standard,"code-analysis":y.standard,learning:y.standard,performance:{...y.lightweight,costSensitivity:"high"},coordination:y.lightweight,general:{...y.lightweight,requiresJsonMode:!1,latencySensitivity:"medium"},documentation:{...y.minimal,minContextSize:16e3},simple:y.minimal};var f=class{rules=[];constructor(e=[]){this.setRules(e)}setRules(e){this.rules=[...e].filter(t=>t.enabled).sort((t,r)=>r.priority-t.priority)}getRules(){return[...this.rules]}addRule(e){this.rules.push(e),this.rules=this.rules.filter(t=>t.enabled).sort((t,r)=>r.priority-t.priority)}removeRule(e){let t=this.rules.findIndex(r=>r.id===e);return t>=0?(this.rules.splice(t,1),!0):!1}setRuleEnabled(e,t){let r=this.rules.find(i=>i.id===e);return r?(r.enabled=t,this.rules=this.rules.filter(i=>i.enabled).sort((i,o)=>o.priority-i.priority),!0):!1}evaluate(e){let t=0;for(let r of this.rules)if(t++,this.matchesCondition(e,r.condition))return{rule:r,rulesEvaluated:t};return null}evaluateAll(e){return this.rules.filter(t=>this.matchesCondition(e,t.condition))}matchesCondition(e,t){if(t.agentType!==void 0&&(!e.agentType||!t.agentType.includes(e.agentType))||t.requiresTools!==void 0&&!!e.requiresTools!==t.requiresTools)return!1;if(t.complexity!==void 0){let r=Array.isArray(t.complexity)?t.complexity:[t.complexity];if(!e.complexity||!r.includes(e.complexity))return!1}if(t.localOnly!==void 0&&t.localOnly){let r=["ollama","onnx"];if(e.preferredProvider&&!r.includes(e.preferredProvider))return!1}if(t.requiresReasoning!==void 0&&t.requiresReasoning&&e.complexity==="low")return!1;if(t.tokenRange!==void 0){let r=this.estimateTokens(e);if(t.tokenRange.min!==void 0&&r<t.tokenRange.min||t.tokenRange.max!==void 0&&r>t.tokenRange.max)return!1}return!(t.requiredCapabilities!==void 0&&t.requiredCapabilities.length>0&&(!e.requiredCapabilities||e.requiredCapabilities.length===0||!t.requiredCapabilities.every(i=>e.requiredCapabilities.includes(i)))||t.custom!==void 0&&!t.custom(e))}estimateTokens(e){let t=0;e.systemPrompt&&(t+=Math.ceil(e.systemPrompt.length/4));for(let r of e.messages)t+=Math.ceil(r.content.length/4);return t}},D=[{id:"security-agents-opus",name:"Security Agents to Claude Opus",description:"Route security-critical agents to Claude Opus for best security analysis",condition:{agentType:["security-auditor","security-architect","v3-qe-security-scanner"]},action:{provider:"claude",model:"claude-opus-4-7",temperature:.1},enabled:!0,priority:100},{id:"test-gen-with-tools",name:"Test Generation with Tools",description:"Route test generation requests that need tools to Claude Sonnet",condition:{agentType:["v3-qe-test-generator","tester"],requiresTools:!0},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:95},{id:"high-complexity-reasoning",name:"High Complexity Reasoning",description:"Route high complexity tasks requiring reasoning to advanced models",condition:{complexity:"high",requiresReasoning:!0},action:{provider:"claude",model:"claude-opus-4-7",temperature:.2},enabled:!0,priority:90},{id:"code-analysis-agents",name:"Code Analysis Agents",description:"Route code analysis to Claude Sonnet for balanced performance",condition:{agentType:["code-analyzer","v3-qe-code-intelligence","reviewer"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.2},enabled:!0,priority:85},{id:"coverage-analysis",name:"Coverage Analysis Agents",description:"Route coverage analysis to efficient models",condition:{agentType:["v3-qe-coverage-analyzer"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.1},enabled:!0,priority:80},{id:"defect-prediction",name:"Defect Prediction Agents",description:"Route defect prediction to capable models",condition:{agentType:["v3-qe-defect-predictor"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:75},{id:"medium-complexity",name:"Medium Complexity Tasks",description:"Route medium complexity to balanced Claude Sonnet",condition:{complexity:"medium"},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:60},{id:"low-complexity-haiku",name:"Low Complexity to Haiku",description:"Route low complexity tasks to Haiku for cost efficiency",condition:{complexity:"low"},action:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.3},enabled:!0,priority:50},{id:"local-only-ollama",name:"Local Only Requests",description:"Route local-only requests to Ollama",condition:{localOnly:!0},action:{provider:"ollama",model:"llama3.1",temperature:.3},enabled:!0,priority:40},{id:"small-requests-haiku",name:"Small Token Requests",description:"Route small requests to Haiku for efficiency",condition:{tokenRange:{max:500}},action:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.3},enabled:!0,priority:30}];import{randomUUID as $}from"crypto";var C=class{decisions=[];providerCalls=[];fallbacks=[];cacheHits=0;cacheMisses=0;startTime=new Date;maxRecords;maxCallRecords;constructor(e={}){this.maxRecords=e.maxRecords??1e4,this.maxCallRecords=e.maxCallRecords??5e3}recordRoutingDecision(e,t,r={}){let i={id:`rd-${Date.now()}-${$().slice(0,8)}`,timestamp:new Date,provider:e.providerType,model:e.model,mode:this.inferMode(e.reason),reason:e.reason,latencyMs:t,decisionTimeMs:e.metadata.decisionTimeMs,agentType:r.agentType,success:r.success??!0,tokenUsage:r.tokenUsage,cost:r.cost,wasFallback:e.reason==="fallback",ruleId:e.matchedRule?.id};this.decisions.push(i),this.trimRecords()}recordProviderCall(e,t,r,i,o={}){let n=o.inputTokens??Math.floor(i*.7),s=o.outputTokens??i-n,a={timestamp:new Date,provider:e,model:t,latencyMs:r,inputTokens:n,outputTokens:s,totalTokens:i,success:o.success??!0,cost:o.cost,agentType:o.agentType};this.providerCalls.push(a),this.trimCallRecords()}recordFallback(e,t,r,i){let o={timestamp:new Date,fromProvider:e,toProvider:t,reason:r,agentType:i};this.fallbacks.push(o),this.fallbacks.length>1e3&&(this.fallbacks=this.fallbacks.slice(-1e3))}recordCacheHit(){this.cacheHits++}recordCacheMiss(){this.cacheMisses++}getMetrics(e="all"){let t=this.getWindowStart(e),r=this.filterByTime(this.decisions,t),i=this.filterByTime(this.providerCalls,t),o=this.filterByTime(this.fallbacks,t),n=this.calculateProviderMetrics(r,i),s=this.calculateAgentMetrics(r,i),a=r.map(m=>m.decisionTimeMs),c=r.length,l=this.countByMode(r),d=r.filter(m=>m.wasFallback).length,g=r.filter(m=>m.ruleId).length;return{byProvider:Object.fromEntries(n),byAgentType:s,totalDecisions:c,decisionsByMode:l,avgDecisionTimeMs:this.average(a),p95DecisionTimeMs:this.percentile(a,95),p99DecisionTimeMs:this.percentile(a,99),fallbackRate:c>0?d/c:0,ruleMatchRate:c>0?g/c:0,estimatedCostSavings:this.calculateCostSavings(r),ruleStats:{totalEvaluated:r.reduce((m,u)=>m+1,0),matched:g,avgRulesPerDecision:1},cacheStats:{hits:this.cacheHits,misses:this.cacheMisses,hitRate:this.cacheHits+this.cacheMisses>0?this.cacheHits/(this.cacheHits+this.cacheMisses):0},period:{start:t,end:new Date},recentDecisions:r.slice(-50),fallbackStats:this.calculateFallbackStats(o)}}getMetricsByProvider(e){let t=this.decisions.filter(a=>a.provider===e),r=this.providerCalls.filter(a=>a.provider===e),i=r.map(a=>a.latencyMs),o=t.map(a=>a.decisionTimeMs),n=r.filter(a=>a.success),s=r.filter(a=>!a.success);return{provider:e,selectionCount:t.length,ruleMatchCount:t.filter(a=>a.ruleId).length,fallbackCount:t.filter(a=>a.wasFallback).length,avgDecisionTimeMs:this.average(o),successRate:r.length>0?n.length/r.length:1,avgLatencyMs:this.average(i),p95LatencyMs:this.percentile(i,95),p99LatencyMs:this.percentile(i,99),totalCost:r.reduce((a,c)=>a+(c.cost??0),0),totalTokens:r.reduce((a,c)=>a+c.totalTokens,0),totalInputTokens:r.reduce((a,c)=>a+c.inputTokens,0),totalOutputTokens:r.reduce((a,c)=>a+c.outputTokens,0),circuitState:"closed",latencyHistogram:i.slice(-100),decisionTimeHistogram:o.slice(-100),errorCount:s.length,lastError:s.length>0?s[s.length-1].timestamp:void 0,recentCalls:r.slice(-20)}}getMetricsByAgentType(e){let t=this.decisions.filter(c=>c.agentType===e),r=this.providerCalls.filter(c=>c.agentType===e),i=new Map,o=new Map;for(let c of t)i.set(c.provider,(i.get(c.provider)??0)+1),o.set(c.model,(o.get(c.model)??0)+1);let n=r.map(c=>c.latencyMs),s=t.filter(c=>c.wasFallback).length,a=t.filter(c=>c.success).length;return{agentType:e,totalDecisions:t.length,providerDistribution:i,modelDistribution:o,avgLatencyMs:this.average(n),totalCost:r.reduce((c,l)=>c+(l.cost??0),0),totalTokens:r.reduce((c,l)=>c+l.totalTokens,0),fallbackRate:t.length>0?s/t.length:0,successRate:t.length>0?a/t.length:1}}getAuditLog(e={}){let t=this.decisions;e.since&&(t=t.filter(i=>i.timestamp>=e.since)),e.provider&&(t=t.filter(i=>i.provider===e.provider)),e.agentType&&(t=t.filter(i=>i.agentType===e.agentType));let r=e.limit??100;return t.slice(-r).map(i=>({id:i.id,timestamp:i.timestamp,context:{agentType:i.agentType},decision:{providerType:i.provider,model:i.model,providerModelId:i.model,reason:i.reason,confidence:1,metadata:{decisionTimeMs:i.decisionTimeMs,timestamp:i.timestamp}},outcome:{success:i.success,latencyMs:i.latencyMs,tokenUsage:i.tokenUsage,cost:i.cost}}))}resetMetrics(){this.decisions=[],this.providerCalls=[],this.fallbacks=[],this.cacheHits=0,this.cacheMisses=0,this.startTime=new Date}inferMode(e){switch(e){case"manual":return"manual";case"rule-match":return"rule-based";case"cost-optimization":return"cost-optimized";case"performance-optimization":return"performance-optimized";default:return"rule-based"}}trimRecords(){this.decisions.length>this.maxRecords&&(this.decisions=this.decisions.slice(-this.maxRecords))}trimCallRecords(){this.providerCalls.length>this.maxCallRecords&&(this.providerCalls=this.providerCalls.slice(-this.maxCallRecords))}getWindowStart(e){let t=new Date;switch(e){case"1m":return new Date(t.getTime()-60*1e3);case"5m":return new Date(t.getTime()-300*1e3);case"15m":return new Date(t.getTime()-900*1e3);case"1h":return new Date(t.getTime()-3600*1e3);case"24h":return new Date(t.getTime()-1440*60*1e3);case"7d":return new Date(t.getTime()-10080*60*1e3);default:return this.startTime}}filterByTime(e,t){return e.filter(r=>r.timestamp>=t)}calculateProviderMetrics(e,t){let r=new Map;for(let i of v){let o=e.filter(l=>l.provider===i),n=t.filter(l=>l.provider===i);if(o.length===0&&n.length===0)continue;let s=n.map(l=>l.latencyMs),a=o.map(l=>l.decisionTimeMs),c=n.filter(l=>l.success);r.set(i,{provider:i,selectionCount:o.length,ruleMatchCount:o.filter(l=>l.ruleId).length,fallbackCount:o.filter(l=>l.wasFallback).length,avgDecisionTimeMs:this.average(a),successRate:n.length>0?c.length/n.length:1,avgLatencyMs:this.average(s),p95LatencyMs:this.percentile(s,95),p99LatencyMs:this.percentile(s,99),totalCost:n.reduce((l,d)=>l+(d.cost??0),0),totalTokens:n.reduce((l,d)=>l+d.totalTokens,0),circuitState:"closed"})}return r}calculateAgentMetrics(e,t){let r=new Set;e.forEach(o=>o.agentType&&r.add(o.agentType)),t.forEach(o=>o.agentType&&r.add(o.agentType));let i=new Map;for(let o of r)i.set(o,this.getMetricsByAgentType(o));return i}countByMode(e){let t={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0};for(let r of e)t[r.mode]++;return t}calculateFallbackStats(e){let t=new Map,r=new Map;for(let i of e)t.set(i.fromProvider,(t.get(i.fromProvider)??0)+1),r.set(i.reason,(r.get(i.reason)??0)+1);return{total:e.length,byProvider:t,byReason:r}}calculateCostSavings(e){return e.reduce((t,r)=>r.cost&&r.mode==="cost-optimized"?t+r.cost.totalCost*.2:t,0)}average(e){return e.length===0?0:e.reduce((t,r)=>t+r,0)/e.length}percentile(e,t){if(e.length===0)return 0;let r=[...e].sort((o,n)=>o-n),i=Math.ceil(t/100*r.length)-1;return r[Math.max(0,i)]}};function E(p){return new C(p)}var R=class{records=[];alerts=[];maxRecords;alertCheckInterval;constructor(e={}){this.maxRecords=e.maxRecords??1e4}recordCost(e,t,r,i,o={}){let n=this.calculateCost(t,r,i),s={timestamp:new Date,provider:e,model:t,inputTokens:r,outputTokens:i,inputCost:n.inputCost,outputCost:n.outputCost,totalCost:n.totalCost,agentType:o.agentType,requestId:o.requestId};return this.records.push(s),this.trimRecords(),this.checkAlerts(),s}recordCostFromInfo(e,t,r,i,o={}){let n={timestamp:new Date,provider:e,model:t,inputTokens:r.promptTokens,outputTokens:r.completionTokens,inputCost:i.inputCost,outputCost:i.outputCost,totalCost:i.totalCost,agentType:o.agentType,requestId:o.requestId};return this.records.push(n),this.trimRecords(),this.checkAlerts(),n}getCostByProvider(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Map;for(let o of v){let n=r.filter(c=>c.provider===o);if(n.length===0)continue;let s=n.reduce((c,l)=>c+l.totalCost,0),a=n.reduce((c,l)=>c+l.inputTokens+l.outputTokens,0);i.set(o,{totalCost:s,totalTokens:a,totalRequests:n.length,avgCostPerRequest:s/n.length,avgCostPerToken:a>0?s/a:0})}return i}getCostByAgentType(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Set;r.forEach(s=>s.agentType&&i.add(s.agentType));let o=new Map;for(let s of i){let a=r.filter(d=>d.agentType===s),c=a.reduce((d,g)=>d+g.totalCost,0),l=a.reduce((d,g)=>d+g.inputTokens+g.outputTokens,0);o.set(s,{totalCost:c,totalTokens:l,totalRequests:a.length,avgCostPerRequest:a.length>0?c/a.length:0,avgCostPerToken:l>0?c/l:0})}let n=r.filter(s=>!s.agentType);if(n.length>0){let s=n.reduce((c,l)=>c+l.totalCost,0),a=n.reduce((c,l)=>c+l.inputTokens+l.outputTokens,0);o.set("unknown",{totalCost:s,totalTokens:a,totalRequests:n.length,avgCostPerRequest:s/n.length,avgCostPerToken:a>0?s/a:0})}return o}getCostByModel(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Set;r.forEach(n=>i.add(n.model));let o=new Map;for(let n of i){let s=r.filter(l=>l.model===n),a=s.reduce((l,d)=>l+d.totalCost,0),c=s.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0);o.set(n,{totalCost:a,totalTokens:c,totalRequests:s.length,avgCostPerRequest:s.length>0?a/s.length:0,avgCostPerToken:c>0?a/c:0})}return o}getTotalCost(e="all"){let t=this.getPeriodStart(e);return this.filterByTime(t).reduce((i,o)=>i+o.totalCost,0)}getCostTrend(e){let t=new Date,r=[],i,o;switch(e){case"1h":i=300*1e3,o=12;break;case"24h":i=3600*1e3,o=24;break;case"7d":i=1440*60*1e3,o=7;break}for(let n=o-1;n>=0;n--){let s=new Date(t.getTime()-n*i),a=new Date(s.getTime()-i),c=this.records.filter(l=>l.timestamp>=a&&l.timestamp<s);r.push({timestamp:s,cost:c.reduce((l,d)=>l+d.totalCost,0),tokens:c.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0),requests:c.length})}return r}addBudgetAlert(e,t,r){let i={threshold:e,period:t,callback:r,active:!0};return this.alerts.push(i),this.alertCheckInterval||(this.alertCheckInterval=setInterval(()=>this.checkAlerts(),6e4)),`alert-${this.alerts.length-1}`}removeBudgetAlert(e){return e>=0&&e<this.alerts.length?(this.alerts.splice(e,1),this.alerts.length===0&&this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0),!0):!1}getOptimizationSuggestions(){let e=[],t=this.getCostByModel("24h");for(let[n,s]of t)P[n]&&s.totalCost>1&&(n.includes("opus")&&e.push({type:"model-switch",description:"Consider using Sonnet instead of Opus for non-critical tasks",estimatedSavings:s.totalCost*.5,currentCost:s.totalCost,suggestedModel:"claude-sonnet-4-6"}),n==="gpt-4o"&&e.push({type:"model-switch",description:"Consider using GPT-4o-mini for simpler tasks",estimatedSavings:s.totalCost*.7,currentCost:s.totalCost,suggestedModel:"gpt-4o-mini"}));let r=this.getCostByProvider("24h"),i=[...r.values()].reduce((n,s)=>n+s.totalCost,0);return i>10&&!r.has("ollama")&&e.push({type:"provider-switch",description:"Consider using Ollama for development/testing workloads",estimatedSavings:i*.3,currentCost:i,suggestedProvider:"ollama"}),[...t.values()].reduce((n,s)=>n+s.totalRequests,0)>100&&e.push({type:"caching",description:"Enable response caching to reduce redundant API calls",estimatedSavings:i*.15,currentCost:i}),e}getRecords(){return[...this.records]}clear(){this.records=[]}reset(){this.records=[],this.alerts=[],this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0)}dispose(){this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0)}calculateCost(e,t,r){let i=P[e];if(!i)return{inputCost:0,outputCost:0,totalCost:0,currency:"USD"};let o=t/1e6*i.input,n=r/1e6*i.output;return{inputCost:o,outputCost:n,totalCost:o+n,currency:"USD"}}trimRecords(){this.records.length>this.maxRecords&&(this.records=this.records.slice(-this.maxRecords))}getPeriodStart(e){let t=new Date;switch(e){case"1h":return new Date(t.getTime()-3600*1e3);case"24h":return new Date(t.getTime()-1440*60*1e3);case"7d":return new Date(t.getTime()-10080*60*1e3);case"30d":return new Date(t.getTime()-720*60*60*1e3);default:return new Date(0)}}filterByTime(e){return this.records.filter(t=>t.timestamp>=e)}checkAlerts(){for(let e of this.alerts){if(!e.active)continue;let t=this.getTotalCost(e.period);if(t>=e.threshold){e.active=!1;let r=this.getPeriodStart(e.period),i=this.filterByTime(r),o=i.reduce((n,s)=>n+s.inputTokens+s.outputTokens,0);try{e.callback({totalCost:t,totalTokens:o,totalRequests:i.length,avgCostPerRequest:i.length>0?t/i.length:0,avgCostPerToken:o>0?t/o:0})}catch(n){console.error("Budget alert callback error:",n)}}}}};function q(p){return new R(p)}H();var T=class{cache=new Map;maxSize;ttlMs;constructor(e=100,t=6e4){this.maxSize=e,this.ttlMs=t}get(e){let t=this.cache.get(e);return t?Date.now()>t.expiresAt?(this.cache.delete(e),null):t.decision:null}set(e,t){if(this.cache.size>=this.maxSize){let r=this.cache.keys().next().value;r&&this.cache.delete(r)}this.cache.set(e,{decision:t,expiresAt:Date.now()+this.ttlMs})}clear(){this.cache.clear()}getStats(){return{hits:0,misses:0,size:this.cache.size}}},M=class{config;providerManager;ruleEngine;decisionCache;metrics;routerMetrics;costMetrics;initialized=!1;constructor(e,t){this.providerManager=e,this.config={..._,...t};let r=this.config.rules.length>0?this.config.rules:D;this.ruleEngine=new f(r),this.decisionCache=new T(100,this.config.decisionCacheTtlMs),this.metrics=new S,this.routerMetrics=E(),this.costMetrics=q()}async initialize(){this.initialized||(await this.providerManager.initialize(),this.initialized=!0)}getMode(){return this.config.mode}setMode(e){this.config.mode=e,this.decisionCache.clear()}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e},e.rules&&this.ruleEngine.setRules(e.rules),e.decisionCacheTtlMs&&(this.decisionCache=new T(100,e.decisionCacheTtlMs))}async selectProvider(e){await this.ensureInitialized();let t=Date.now();if(this.config.cacheDecisions){let i=this.generateCacheKey(e),o=this.decisionCache.get(i);if(o)return this.metrics.recordCacheHit(),this.routerMetrics.recordCacheHit(),o;this.metrics.recordCacheMiss(),this.routerMetrics.recordCacheMiss()}let r;switch(this.config.mode){case"manual":r=await this.selectManual(e);break;case"rule-based":r=await this.selectRuleBased(e);break;case"cost-optimized":r=await this.selectCostOptimized(e);break;case"performance-optimized":r=await this.selectPerformanceOptimized(e);break;default:r=await this.selectRuleBased(e)}if(r.metadata.decisionTimeMs=Date.now()-t,this.config.cacheDecisions){let i=this.generateCacheKey(e);this.decisionCache.set(i,r)}return this.metrics.recordDecision(r,this.config.mode),r}async chat(e){await this.ensureInitialized();let t=z(),r=await this.selectProvider(e),i=e.agentType??"";if(U(i)&&(w(r.model)||w(r.providerModelId))){let n=r.model,s=r.providerModelId;r.model=A(i,r.model,x),r.providerModelId=A(i,r.providerModelId,x),console.warn(`[aqe] ADR-093: ${i} pinned to ${r.model} (was ${n}/${s}); set AQE_CYBER_VERIFIED=true after Cyber Verification Program approval`)}return await this.executeWithFallback(e,r,t)}async*stream(e){await this.ensureInitialized();let t=await this.selectProvider(e),r=await this.chat(e),i=100;for(let o=0;o<r.content.length;o+=i){let n=o+i>=r.content.length;yield{type:n?"done":"content",delta:r.content.slice(o,o+i),accumulated:r.content.slice(0,o+i),done:n,tokenCount:Math.ceil((o+i)/4),model:r.model,provider:t.providerType,usage:n?r.usage:void 0}}}getMetrics(){return this.metrics.getMetrics()}getEnhancedMetrics(e){return this.routerMetrics.getMetrics(e)}getProviderMetrics(e){return this.routerMetrics.getMetricsByProvider(e)}getAgentMetrics(e){return this.routerMetrics.getMetricsByAgentType(e)}getCostByProvider(e){return this.costMetrics.getCostByProvider(e)}getCostByAgentType(e){return this.costMetrics.getCostByAgentType(e)}getCostByModel(e){return this.costMetrics.getCostByModel(e)}getTotalCost(e){return this.costMetrics.getTotalCost(e)}getCostTrend(e){return this.costMetrics.getCostTrend(e)}getAuditLog(e){return this.routerMetrics.getAuditLog(e)}getOptimizationSuggestions(){return this.costMetrics.getOptimizationSuggestions()}resetMetrics(){this.metrics.reset(),this.routerMetrics.resetMetrics(),this.costMetrics.reset()}clearCache(){this.decisionCache.clear()}async selectManual(e){let t=e.preferredProvider??this.config.defaultProvider,r=e.model??this.config.defaultModel,i=this.providerManager.getProvider(t);return i?this.createDecision(i,t,r,"manual"):this.createFallbackDecision(e,"manual")}async selectRuleBased(e){let t=this.ruleEngine.evaluate(e);if(t){let{rule:o,rulesEvaluated:n}=t,s=o.action.provider,a=this.providerManager.getProvider(s);if(a){let c=this.createDecision(a,s,o.action.model,"rule-match",o);return c.metadata.rulesEvaluated=n,c}}let r=this.config.defaultProvider,i=this.providerManager.getProvider(r);return i?this.createDecision(i,r,this.config.defaultModel,"default"):this.createFallbackDecision(e,"rule-based")}async selectCostOptimized(e){let t=this.providerManager.getAvailableProviders();if(t.length===0)return this.createFallbackDecision(e,"cost-optimized");let r=1/0,i=t[0],o,n=[];for(let s of t){let a=this.providerManager.getProvider(s);if(!a)continue;let{input:c,output:l}=a.getCostPerToken(),d=this.estimateCostValue(e,c,l);n.push({provider:s,model:a.getConfig().model,reason:`Estimated cost: $${d.toFixed(6)}`,estimatedCost:d,excluded:!1}),d<r&&(r=d,i=s,o=a)}if(o){let s=o.getConfig(),a=this.createDecision(o,i,s.model,"cost-optimization");return a.metadata.estimatedCost=this.createCostEstimate(e,o),a.metadata.alternativesConsidered=n,a}return this.createFallbackDecision(e,"cost-optimized")}async selectPerformanceOptimized(e){let t=this.providerManager.getAvailableProviders(),r=this.providerManager.getMetrics();if(t.length===0)return this.createFallbackDecision(e,"performance-optimized");let i=1/0,o=t[0],n,s=[];for(let a of t){let c=this.providerManager.getProvider(a);if(!c)continue;let d=r[a]?.avgLatencyMs??1/0;s.push({provider:a,model:c.getConfig().model,reason:`Avg latency: ${d}ms`,estimatedLatencyMs:d,excluded:!1}),d<i&&(i=d,o=a,n=c)}if(n){let a=n.getConfig(),c=this.createDecision(n,o,a.model,"performance-optimization");return c.metadata.estimatedLatencyMs=i,c.metadata.alternativesConsidered=s,c}return this.createFallbackDecision(e,"performance-optimized")}async executeWithFallback(e,t,r){let{fallbackChain:i,fallbackBehavior:o}=this.config,n,s=0,a=[{provider:t.providerType,model:t.providerModelId}],c=this.config.defaultProvider;c&&c!==t.providerType&&a.push({provider:c,model:this.config.defaultModel});for(let l of i.entries)if(l.enabled&&l.provider!==t.providerType)for(let d of l.models)a.push({provider:l.provider,model:d});for(let{provider:l,model:d}of a){if(s>=o.maxAttempts)break;let g=this.providerManager.getProvider(l);if(!g)continue;s++;let m=Date.now();try{let u=await g.generate(e.messages,{model:d,temperature:e.temperature,maxTokens:e.maxTokens,systemPrompt:e.systemPrompt,timeoutMs:e.timeoutMs,skipCache:e.skipCache,metadata:e.metadata}),h=Date.now()-m;return this.metrics.recordSuccess(l),this.routerMetrics.recordRoutingDecision(t,h,{agentType:e.agentType,success:!0,tokenUsage:u.usage,cost:u.cost}),this.routerMetrics.recordProviderCall(l,d,h,u.usage.totalTokens,{inputTokens:u.usage.promptTokens,outputTokens:u.usage.completionTokens,success:!0,cost:u.cost.totalCost,agentType:e.agentType}),this.costMetrics.recordCostFromInfo(l,d,u.usage,u.cost,{agentType:e.agentType,requestId:u.requestId}),{content:u.content,model:u.model,providerModelId:u.model,provider:u.provider,usage:u.usage,cost:u.cost,latencyMs:u.latencyMs,finishReason:u.finishReason,cached:u.cached,requestId:u.requestId,routingDecision:t}}catch(u){n=I(u);let h=Date.now()-m;if(this.metrics.recordFailure(l),this.routerMetrics.recordProviderCall(l,d,h,0,{success:!1,agentType:e.agentType}),s<a.length){let L=a[s];L&&this.routerMetrics.recordFallback(l,L.provider,n.message,e.agentType)}!(B(u)&&!u.retryable)&&s<o.maxAttempts&&await this.delay(o.delayMs)}}throw b(`All providers failed after ${s} attempts: ${n?.message??"Unknown error"}`,"PROVIDER_UNAVAILABLE",{retryable:!1,cause:n})}createDecision(e,t,r,i,o){let{canonicalModel:n,providerModelId:s}=this.resolveModelIds(r,t);return{provider:e,providerType:t,model:n,providerModelId:s,reason:i,matchedRule:o,confidence:i==="rule-match"?.95:.8,metadata:{decisionTimeMs:0,timestamp:new Date}}}resolveModelIds(e,t){let i={claude:"anthropic",openai:"openai",ollama:"ollama",openrouter:"openrouter",gemini:"gemini","azure-openai":"azure",bedrock:"bedrock"}[t];if(!i)return{canonicalModel:e,providerModelId:e};try{let o=O(e),n=k(o,i);return{canonicalModel:o,providerModelId:n}}catch{try{if(F(e)){let n=k(e,i);return{canonicalModel:e,providerModelId:n}}}catch{}return{canonicalModel:e,providerModelId:e}}}createFallbackDecision(e,t){for(let i of this.config.fallbackChain.entries){if(!i.enabled||!["claude","openai","ollama"].includes(i.provider))continue;let n=this.providerManager.getProvider(i.provider);if(n)return this.createDecision(n,i.provider,i.models[0],"fallback")}let r=this.providerManager.getAvailableProviders();if(r.length>0){let i=r[0],o=this.providerManager.getProvider(i);return this.createDecision(o,i,o.getConfig().model,"fallback")}throw b(`No providers available for ${t} selection`,"PROVIDER_UNAVAILABLE",{retryable:!1})}generateCacheKey(e){return[this.config.mode,e.agentType??"default",e.complexity??"medium",e.requiresTools?"tools":"no-tools",e.preferredProvider??"any"].join(":")}estimateCostValue(e,t,r){let i=0;e.systemPrompt&&(i+=Math.ceil(e.systemPrompt.length/4));for(let n of e.messages)i+=Math.ceil(n.content.length/4);let o=e.maxTokens??1e3;return i*t+o*r}createCostEstimate(e,t){let{input:r,output:i}=t.getCostPerToken(),o=0;e.systemPrompt&&(o+=Math.ceil(e.systemPrompt.length/4));for(let a of e.messages)o+=Math.ceil(a.content.length/4);let n=e.maxTokens??1e3,s=o*r+n*i;return{inputTokens:o,outputTokens:n,totalCostUsd:s,inputCostPer1M:r*1e6,outputCostPer1M:i*1e6}}delay(e){return new Promise(t=>setTimeout(t,e))}async ensureInitialized(){this.initialized||await this.initialize()}},S=class{decisions=new Map;decisionsByMode={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0};totalDecisions=0;cacheHits=0;cacheMisses=0;totalRulesEvaluated=0;rulesMatched=0;fallbackCount=0;startTime=new Date;recordDecision(e,t){this.totalDecisions++,this.decisionsByMode[t]++,e.metadata.rulesEvaluated&&(this.totalRulesEvaluated+=e.metadata.rulesEvaluated),e.matchedRule&&this.rulesMatched++,e.reason==="fallback"&&this.fallbackCount++;let r=this.decisions.get(e.providerType);r||(r=this.createEmptyMetrics(e.providerType),this.decisions.set(e.providerType,r)),r.selectionCount++,e.reason==="rule-match"&&r.ruleMatchCount++,e.reason==="fallback"&&r.fallbackCount++}recordSuccess(e){let t=this.decisions.get(e);if(t){let r=t.successRate*t.selectionCount;t.successRate=(r+1)/t.selectionCount}}recordFailure(e){}recordCacheHit(){this.cacheHits++}recordCacheMiss(){this.cacheMisses++}getMetrics(){let e={};for(let[r,i]of this.decisions)e[r]={...i};let t=this.totalDecisions>0?this.rulesMatched/this.totalDecisions:0;return{byProvider:e,totalDecisions:this.totalDecisions,decisionsByMode:{...this.decisionsByMode},avgDecisionTimeMs:0,p95DecisionTimeMs:0,p99DecisionTimeMs:0,fallbackRate:this.totalDecisions>0?this.fallbackCount/this.totalDecisions:0,ruleMatchRate:t,estimatedCostSavings:0,ruleStats:{totalEvaluated:this.totalRulesEvaluated,matched:this.rulesMatched,avgRulesPerDecision:this.totalDecisions>0?this.totalRulesEvaluated/this.totalDecisions:0},cacheStats:{hits:this.cacheHits,misses:this.cacheMisses,hitRate:this.cacheHits+this.cacheMisses>0?this.cacheHits/(this.cacheHits+this.cacheMisses):0},period:{start:this.startTime,end:new Date}}}reset(){this.decisions.clear(),this.decisionsByMode={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0},this.totalDecisions=0,this.cacheHits=0,this.cacheMisses=0,this.totalRulesEvaluated=0,this.rulesMatched=0,this.fallbackCount=0,this.startTime=new Date}createEmptyMetrics(e){return{provider:e,selectionCount:0,ruleMatchCount:0,fallbackCount:0,avgDecisionTimeMs:0,successRate:1,avgLatencyMs:0,p95LatencyMs:0,p99LatencyMs:0,totalCost:0,totalTokens:0,circuitState:"closed"}}};function Xe(p,e){return new M(p,e)}function Ze(p){return new M(p,{mode:"rule-based",rules:D,defaultProvider:"claude",defaultModel:"claude-sonnet-4-6",enableMetrics:!0,cacheDecisions:!0})}export{M as a,Xe as b,Ze as c};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
2
|
var P="quality-daemon",x=class{constructor(e){this.backend=e}backend;async get(e){return this.backend.kvGet(e,P)}async set(e,t){await this.backend.kvSet(e,t,P)}async search(e){return this.backend.kvSearch(e,P)}};import{cpus as Z,freemem as ee,totalmem as te,loadavg as ie}from"os";var p=class{queues={now:[],next:[],later:[]};_maxSize;constructor(e=1e3){this._maxSize=e}enqueue(e){return this.size>=this._maxSize?!1:(this.queues[e.priority].push(e),!0)}dequeue(){let e=Date.now();for(let t of["now","next","later"]){let i=this.queues[t];for(;i.length>0;){let o=i.shift();if(!(o.ttlMs&&e-o.createdAt>o.ttlMs))return o}}}peek(){let e=Date.now();for(let t of["now","next","later"]){let i=this.queues[t];for(let o of i)if(!o.ttlMs||e-o.createdAt<=o.ttlMs)return o}}drainPriority(e){let t=this.queues[e].splice(0),i=Date.now();return t.filter(o=>!o.ttlMs||i-o.createdAt<=o.ttlMs)}pruneExpired(){let e=0,t=Date.now();for(let i of["now","next","later"]){let o=this.queues[i].length;this.queues[i]=this.queues[i].filter(r=>!r.ttlMs||t-r.createdAt<=r.ttlMs),e+=o-this.queues[i].length}return e}get size(){return this.queues.now.length+this.queues.next.length+this.queues.later.length}get depths(){return{now:this.queues.now.length,next:this.queues.next.length,later:this.queues.later.length}}get isEmpty(){return this.size===0}clear(){this.queues.now=[],this.queues.next=[],this.queues.later=[]}};import{watch as G}from"fs";import{execFile as Q}from"child_process";import{promisify as $}from"util";import{resolve as R,join as H}from"path";import{existsSync as L,readFileSync as U}from"fs";var _=$(Q),z={repoRoot:process.cwd(),debounceMs:500,maxChangedFiles:200,pollIntervalMs:5e3},g=class{constructor(e,t){this.queue=e;this.options={...z,...t}}queue;watcher;pollTimer;options;lastKnownHeads=new Map;debounceTimer;_running=!1;_polling=!1;get running(){return this._running}async start(){if(this._running)return;let e=R(this.options.repoRoot,".git","refs","heads");if(!L(e))throw new Error(`Git refs directory not found: ${e}`);await this.snapshotHeads(),process.platform==="darwin"||process.platform==="win32"?this.watcher=G(e,{recursive:!0},(i,o)=>{o&&this.handleRefChange(o)}):this.pollTimer=setInterval(()=>{this.poll().catch(i=>{console.debug("[GitWatcher] Poll error:",i)})},this.options.pollIntervalMs),this._running=!0}stop(){this.debounceTimer&&(clearTimeout(this.debounceTimer),this.debounceTimer=void 0),this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=void 0),this.watcher&&(this.watcher.close(),this.watcher=void 0),this._running=!1}async poll(){if(this._polling)return[];this._polling=!0;let e=[];try{let{stdout:t}=await _("git",["for-each-ref","--format=%(refname:short) %(objectname:short)","refs/heads/"],{cwd:this.options.repoRoot});for(let i of t.trim().split(`
|
|
3
3
|
`)){if(!i)continue;let[o,r]=i.split(" "),n=this.lastKnownHeads.get(o);n&&n!==r&&(e.push(o),await this.enqueueCommitAnalysis(o,r)),this.lastKnownHeads.set(o,r)}}catch{}finally{this._polling=!1}return e}handleRefChange(e){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.processRefChange(e).catch(t=>{console.debug("[GitWatcher] Error processing ref change:",t)})},this.options.debounceMs)}async processRefChange(e){let t=e.replace(/\\/g,"/"),i=R(this.options.repoRoot,".git","refs","heads"),o=H(i,e),r;try{r=U(o,"utf-8").trim()}catch{return}this.lastKnownHeads.get(t)!==r&&(this.lastKnownHeads.set(t,r),await this.enqueueCommitAnalysis(t,r))}async enqueueCommitAnalysis(e,t){let i=[];try{let{stdout:n}=await _("git",["diff-tree","--no-commit-id","--name-only","-r",t],{cwd:this.options.repoRoot});i=n.trim().split(`
|
|
4
4
|
`).filter(Boolean).slice(0,this.options.maxChangedFiles)}catch{}let o={type:"git_commit",branch:e,commitHash:t,changedFiles:i},r={id:`git-${t}-${Date.now()}`,priority:"next",payload:o,createdAt:Date.now(),source:"git-watcher",ttlMs:300*1e3};this.queue.enqueue(r)}async snapshotHeads(){try{let{stdout:e}=await _("git",["for-each-ref","--format=%(refname:short) %(objectname:short)","refs/heads/"],{cwd:this.options.repoRoot});for(let t of e.trim().split(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
2
|
var t=["claude","openai","ollama","openrouter","gemini","azure-openai","bedrock","onnx"];var e={maxAttempts:3,delayMs:100,trySameProviderAlternateModel:!0,skipOpenCircuits:!0,retryableErrors:["RATE_LIMITED","TIMEOUT","NETWORK_ERROR","PROVIDER_UNAVAILABLE"]},r=[{provider:"claude",models:["claude-sonnet-4-6","claude-haiku-4-5-20251001"],enabled:!0,priority:100,maxAttempts:2,timeoutMs:3e4},{provider:"openai",models:["gpt-4o","gpt-4o-mini"],enabled:!0,priority:90,maxAttempts:2,timeoutMs:3e4},{provider:"openrouter",models:["anthropic/claude-sonnet-4","openai/gpt-4o"],enabled:!0,priority:85,maxAttempts:2,timeoutMs:3e4},{provider:"ollama",models:["llama3.1","mistral"],enabled:!0,priority:80,maxAttempts:2,timeoutMs:6e4},{provider:"onnx",models:["phi-4","all-MiniLM-L6-v2"],enabled:!0,priority:70,maxAttempts:1,timeoutMs:12e4}],o={id:"default-fallback-chain",entries:r,maxRetries:3,retryDelayMs:100,backoffMultiplier:2,maxDelayMs:5e3},n={mode:"rule-based",rules:[],defaultProvider:"claude",defaultModel:"claude-sonnet-4-6",fallbackChain:o,fallbackBehavior:e,providers:{claude:{enabled:!0,defaultModel:"claude-sonnet-4-6"},openai:{enabled:!0,defaultModel:"gpt-4o"},ollama:{enabled:!0,defaultModel:"llama3.1"},openrouter:{enabled:!0,defaultModel:"anthropic/claude-sonnet-4"},gemini:{enabled:!1,defaultModel:"gemini-pro"},"azure-openai":{enabled:!1},bedrock:{enabled:!1},onnx:{enabled:!0,defaultModel:"phi-4"}},enableMetrics:!0,metricsConfig:{enabled:!0,collectionIntervalMs:6e4,retentionMs:864e5,trackPerRequest:!0},maxDecisionTimeMs:10,cacheDecisions:!0,decisionCacheTtlMs:6e4,cacheConfig:{enabled:!0,ttlMs:6e4,maxEntries:1e3,keyStrategy:"agent-domain"},auditConfig:{enabled:!0,maxEntries:1e4,logContent:!1,logResponse:!1}},a=[{canonicalId:"claude-opus-4-7",canonicalName:"Claude Opus 4.7",providerIds:{claude:"claude-opus-4-7",openrouter:"anthropic/claude-opus-4.7",bedrock:"anthropic.claude-opus-4-7-v1:0"},capabilities:{supportsStreaming:!0,supportsTools:!0,supportsMCP:!0,supportsVision:!0,supportsExtendedThinking:!0,supportsJsonMode:!0,maxContextTokens:1e6,maxOutputTokens:128e3},tier:"flagship",family:"claude",inputCostPer1M:5,outputCostPer1M:25},{canonicalId:"claude-sonnet-4-6",canonicalName:"Claude Sonnet 4.6",providerIds:{claude:"claude-sonnet-4-6",openrouter:"anthropic/claude-sonnet-4.6",bedrock:"anthropic.claude-sonnet-4-6-v1:0"},capabilities:{supportsStreaming:!0,supportsTools:!0,supportsMCP:!0,supportsVision:!0,supportsExtendedThinking:!0,supportsJsonMode:!0,maxContextTokens:2e5,maxOutputTokens:64e3},tier:"advanced",family:"claude",inputCostPer1M:3,outputCostPer1M:15},{canonicalId:"claude-haiku-4-5",canonicalName:"Claude Haiku 4.5",providerIds:{claude:"claude-haiku-4-5-20251001",openrouter:"anthropic/claude-haiku-4.5",bedrock:"anthropic.claude-haiku-4-5-v1:0"},capabilities:{supportsStreaming:!0,supportsTools:!0,supportsMCP:!1,supportsVision:!0,supportsExtendedThinking:!0,supportsJsonMode:!0,maxContextTokens:2e5,maxOutputTokens:16384},tier:"standard",family:"claude",inputCostPer1M:1,outputCostPer1M:5},{canonicalId:"gpt-4o",canonicalName:"GPT-4o",providerIds:{openai:"gpt-4o","azure-openai":"gpt-4o",openrouter:"openai/gpt-4o"},capabilities:{supportsStreaming:!0,supportsTools:!0,supportsMCP:!1,supportsVision:!0,supportsExtendedThinking:!1,supportsJsonMode:!0,maxContextTokens:128e3,maxOutputTokens:16384},tier:"advanced",family:"gpt",inputCostPer1M:2.5,outputCostPer1M:10},{canonicalId:"gpt-4o-mini",canonicalName:"GPT-4o Mini",providerIds:{openai:"gpt-4o-mini","azure-openai":"gpt-4o-mini",openrouter:"openai/gpt-4o-mini"},capabilities:{supportsStreaming:!0,supportsTools:!0,supportsMCP:!1,supportsVision:!0,supportsExtendedThinking:!1,supportsJsonMode:!0,maxContextTokens:128e3,maxOutputTokens:16384},tier:"standard",family:"gpt",inputCostPer1M:.15,outputCostPer1M:.6},{canonicalId:"gemini-pro",canonicalName:"Gemini 2.0 Pro",providerIds:{gemini:"gemini-2.0-pro",openrouter:"google/gemini-2.0-pro"},capabilities:{supportsStreaming:!0,supportsTools:!0,supportsMCP:!1,supportsVision:!0,supportsExtendedThinking:!1,supportsJsonMode:!0,maxContextTokens:2e6,maxOutputTokens:8192},tier:"advanced",family:"gemini",inputCostPer1M:1.25,outputCostPer1M:5},{canonicalId:"llama-3.1-70b",canonicalName:"LLaMA 3.1 70B",providerIds:{ollama:"llama3.1:70b",openrouter:"meta-llama/llama-3.1-70b",bedrock:"meta.llama3-1-70b-instruct-v1:0"},capabilities:{supportsStreaming:!0,supportsTools:!0,supportsMCP:!1,supportsVision:!1,supportsExtendedThinking:!1,supportsJsonMode:!0,maxContextTokens:128e3,maxOutputTokens:4096},tier:"advanced",family:"llama",inputCostPer1M:.9,outputCostPer1M:.9},{canonicalId:"phi-4",canonicalName:"Microsoft Phi-4",providerIds:{ollama:"phi4",onnx:"phi-4",openrouter:"microsoft/phi-4"},capabilities:{supportsStreaming:!0,supportsTools:!1,supportsMCP:!1,supportsVision:!1,supportsExtendedThinking:!1,supportsJsonMode:!1,maxContextTokens:16e3,maxOutputTokens:4096,requiresNetwork:!1},tier:"efficient",family:"phi",inputCostPer1M:0,outputCostPer1M:0}];export{t as a,n as b,a as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
2
|
-
import{j as p}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
|
+
import{j as p}from"./chunk-UWXH2UQK.js";import{a as f,c as R}from"./chunk-XPCNUX2U.js";R();var u=class extends p{config={name:"qe/workflows/browser-load",description:"Load, validate, and prepare browser automation workflows from inline YAML or built-in templates. Returns the resolved workflow with steps and variable bindings, ready for browser execution. Templates: login-flow, form-validation, visual-regression, oauth-flow, etc.",domain:"test-execution",schema:this.buildSchema()};buildSchema(){return{type:"object",properties:{workflowYaml:{type:"string",description:"Inline YAML workflow definition. Mutually exclusive with templateName."},templateName:{type:"string",description:"Built-in template name to load.",enum:["login-flow","oauth-flow","scraping-workflow","visual-regression","form-validation","navigation-flow","api-integration","performance-audit","accessibility-audit"]},variables:{type:"object",description:'Runtime variable overrides (e.g., { "baseUrl": "https://example.com" })'}}}}async execute(r,C){try{let{WorkflowLoader:n,WORKFLOW_TEMPLATES:g,WORKFLOW_DESCRIPTIONS:v,interpolateVariables:b}=await import("./browser-Q2S75M2F.js"),{parse:k}=await import("yaml"),d=new n,l=[...g],y=v;if(!r.workflowYaml&&!r.templateName)return{success:!0,data:{workflowName:"none",description:"No workflow specified. Use templateName or workflowYaml.",source:"none",templateUsed:null,steps:[],variables:{defined:[],provided:{}},validation:{valid:!0,errors:[],warnings:[]},availableTemplates:l,summary:`Available templates: ${l.join(", ")}`}};let e,i,t=null;r.workflowYaml?(i="inline-yaml",e=k(r.workflowYaml)):(i="template",t=r.templateName,e=await d.load(r.templateName));let a=await d.validate(e),w=(e.steps??[]).map(o=>{let s=o.config;if(r.variables){let c={};for(let[h,m]of Object.entries(s))c[h]=typeof m=="string"?b(m,r.variables):m;s=c}return{name:o.name,action:o.action,config:s,optional:o.optional??!1,assertionCount:o.assertions?.length??0}});return{success:!0,data:{workflowName:e.name||t||"custom",description:e.description||t&&y[t]||"",source:i,templateUsed:t,steps:w,variables:{defined:(e.variables??[]).map(o=>({name:o.name,type:o.type,required:o.required,hasDefault:o.default!==void 0})),provided:r.variables||{}},validation:{valid:a.valid,errors:a.errors,warnings:a.warnings},availableTemplates:l,summary:a.valid?`Workflow "${e.name}" loaded (${i}): ${w.length} steps, ${(e.variables??[]).length} variables`:`Workflow "${e.name}" has validation errors: ${a.errors.join("; ")}`}}}catch(n){return{success:!1,error:f(n)}}}};export{u as a};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
2
|
-
import{a as v}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
|
+
import{a as v}from"./chunk-IAZEDWRX.js";import{c as l}from"./chunk-JF53LRBL.js";import{S as R,b as g}from"./chunk-ON4D4TJ4.js";v();R();import{createHash as m,randomUUID as f}from"crypto";var a=l.create("witness-chain"),p=class{logLikelihoodRatio=0;upperBound;lowerBound;observations=0;constructor(t=.05,e=.05){this.upperBound=Math.log(1/t),this.lowerBound=Math.log(e)}addWeightedEvidence(t,e){return this.logLikelihoodRatio+=t?e:-e,this.observations++,this.logLikelihoodRatio>=this.upperBound?"PASS":this.logLikelihoodRatio<=this.lowerBound?"FAIL":"INCONCLUSIVE"}addEvidence(t){return this.addWeightedEvidence(t,.5)}getRatio(){return this.logLikelihoodRatio}getObservations(){return this.observations}getBounds(){return{upper:this.upperBound,lower:this.lowerBound}}reset(){this.logLikelihoodRatio=0,this.observations=0}},c="0".repeat(64),h=class{receipts=[];lastHash=c;sprtAccumulators=new Map;appendWitness(t){let e=f(),i=Date.now(),s=this.receipts.length,n=this.lastHash+JSON.stringify(t)+i,o=m("sha256").update(n).digest("hex"),u={id:e,timestamp:i,previousHash:this.lastHash,hash:o,decision:t,chainIndex:s};return this.receipts.push(u),this.lastHash=o,this.updateSPRT(t),a.debug("Witness appended",{chainIndex:s,type:t.type,decision:t.decision,hash:o.slice(0,16)+"..."}),u}verifyChain(){if(this.receipts.length===0)return{valid:!0,length:0,brokenAt:-1,message:"Chain is empty (valid)",lastHash:c};let t=c;for(let e=0;e<this.receipts.length;e++){let i=this.receipts[e];if(i.previousHash!==t)return{valid:!1,length:this.receipts.length,brokenAt:e,message:`Chain broken at index ${e}: previousHash mismatch`,lastHash:this.lastHash};let s=i.previousHash+JSON.stringify(i.decision)+i.timestamp,n=m("sha256").update(s).digest("hex");if(i.hash!==n)return{valid:!1,length:this.receipts.length,brokenAt:e,message:`Chain broken at index ${e}: hash mismatch (tamper detected)`,lastHash:this.lastHash};t=i.hash}return{valid:!0,length:this.receipts.length,brokenAt:-1,message:`Chain valid (${this.receipts.length} receipts)`,lastHash:this.lastHash}}getChain(t){return t!==void 0&&t>0?[...this.receipts.slice(-t)]:[...this.receipts]}getChainLength(){return this.receipts.length}getLastHash(){return this.lastHash}exportChain(){let t={version:"1.0.0",exportedAt:Date.now(),length:this.receipts.length,receipts:this.receipts};return JSON.stringify(t,null,2)}importChain(t){try{let e=JSON.parse(t);if(!e||e.version!=="1.0.0"||!Array.isArray(e.receipts))return a.warn("Import failed: invalid format"),!1;let i=this.receipts,s=this.lastHash;this.receipts=e.receipts,this.lastHash=e.receipts.length>0?e.receipts[e.receipts.length-1].hash:c;let n=this.verifyChain();return n.valid?(a.info("Chain imported successfully",{length:e.receipts.length}),!0):(this.receipts=i,this.lastHash=s,a.warn("Import failed: chain integrity check failed",{message:n.message}),!1)}catch(e){return a.warn("Import failed: parse error",{error:e instanceof Error?e.message:String(e)}),!1}}getSPRT(t,e,i){return this.sprtAccumulators.has(t)||this.sprtAccumulators.set(t,new p(e,i)),this.sprtAccumulators.get(t)}getReceipt(t){return this.receipts[t]}updateSPRT(t){let e=t.decision==="PASS"||t.decision==="PERMIT";this.getSPRT(t.type).addEvidence(e)}},d=class extends h{persistence;constructor(t){super(),this.persistence=t;let e=t.loadAllReceipts();if(e.length>0){let i={version:"1.0.0",exportedAt:Date.now(),length:e.length,receipts:e};this.importChain(JSON.stringify(i))?a.info("Witness chain restored from SQLite",{receipts:e.length}):a.warn("Failed to restore witness chain from SQLite \u2014 starting fresh")}}appendWitness(t){let e=super.appendWitness(t);try{this.persistence.insertReceipt(e)}catch(i){a.warn("Failed to persist witness receipt to SQLite",{chainIndex:e.chainIndex,error:i instanceof Error?i.message:String(i)})}return e}};function C(r){r.exec(`
|
|
3
3
|
CREATE TABLE IF NOT EXISTS witness_chain_receipts (
|
|
4
4
|
id TEXT PRIMARY KEY,
|
|
5
5
|
chain_index INTEGER NOT NULL,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
2
|
-
import{a as o,e as p}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
|
+
import{a as o,e as p}from"./chunk-HHCYSAH3.js";import{a as l,d}from"./chunk-WNR2KAUH.js";d();p();var u=class{store=new Map;vectors=new Map;cleanupInterval;async initialize(){this.cleanupInterval=setInterval(()=>this.cleanup(),o.CLEANUP_INTERVAL_MS),this.cleanupInterval.unref&&this.cleanupInterval.unref()}async dispose(){this.cleanupInterval&&clearInterval(this.cleanupInterval),this.store.clear(),this.vectors.clear()}async set(t,r,e){let s={value:r,namespace:e?.namespace??"default",createdAt:Date.now()};e?.ttl&&(s.expiresAt=Date.now()+e.ttl*o.TTL_MULTIPLIER_MS);let n=this.buildKey(t,e?.namespace);this.store.set(n,s)}async get(t,r){let e=this.buildKey(t,r?.namespace),s=this.store.get(e);if(s){if(s.expiresAt&&Date.now()>s.expiresAt){this.store.delete(e);return}return s.value}}async delete(t,r){let e=this.buildKey(t,r?.namespace);return this.store.delete(e)}async has(t,r){return await this.get(t,r)!==void 0}async search(t,r=o.DEFAULT_SEARCH_LIMIT,e){let s=t.replace(/[.+?^${}()|[\]\\]/g,"\\$&"),n=new RegExp(s.replace(/\*/g,".*")),i=[],c=e?.namespace?`${e.namespace}:`:void 0;for(let a of this.store.keys())if(!(c&&!a.startsWith(c))&&n.test(a)&&(i.push(a),i.length>=r))break;return i}async vectorSearch(t,r){let e=[];for(let[s,n]of this.vectors.entries()){let i=l(t,n.embedding);e.push({key:s,score:i,metadata:n.metadata})}return e.sort((s,n)=>n.score-s.score).slice(0,r)}async storeVector(t,r,e){this.vectors.set(t,{embedding:r,metadata:e})}buildKey(t,r){return r?`${r}:${t}`:t}cleanup(){let t=Date.now();for(let[r,e]of this.store.entries())e.expiresAt&&t>e.expiresAt&&this.store.delete(r)}getStats(){return{entries:this.store.size,vectors:this.vectors.size}}async clear(t){if(t){let r=`${t}:`;for(let e of this.store.keys())e.startsWith(r)&&this.store.delete(e)}else this.store.clear()}async count(t){let r=0,e=`${t}:`;for(let s of this.store.keys())if(s.startsWith(e)){let n=this.store.get(s);n&&(!n.expiresAt||Date.now()<=n.expiresAt)&&r++}return r}async hasCodeIntelligenceIndex(){return await this.count("code-intelligence:kg")>0}};export{u as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.
|
|
2
|
-
import{b as y,d as p}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.2");process.exit(0)}
|
|
2
|
+
import{b as y,d as p}from"./chunk-DMQPO43S.js";import{i as h}from"./chunk-AOI67HA3.js";var f={healthyThreshold:3,warningThreshold:2,checkIntervalMs:5e3,maxHistoryEntries:100,alertsEnabled:!0,alertCooldownMs:6e4,selfHealingEnabled:!1,maxHealingActionsPerMinute:5};var g=class{calculator;config;eventBus;persistence;graph;history=[];alerts=new Map;lastAlertTime=new Map;monitoringInterval=null;isMonitoring=!1;constructor(e,t={},r,i){this.graph=e,this.config={...f,...t},this.calculator=p(),this.eventBus=r,this.persistence=i}start(){this.isMonitoring||(this.isMonitoring=!0,this.monitoringInterval=setInterval(()=>this.checkHealth(),this.config.checkIntervalMs),this.checkHealth())}stop(){this.monitoringInterval&&(clearInterval(this.monitoringInterval),this.monitoringInterval=null),this.isMonitoring=!1}updateGraph(e){this.graph=e,this.isMonitoring&&this.checkHealth()}isEmptyTopology(){return this.graph.getVerticesByType("agent").length===0}checkHealth(){let e=this.calculator.getMinCutValue(this.graph),t=this.calculator.findWeakVertices(this.graph),r=this.isEmptyTopology()?"idle":this.determineStatus(e),i=this.calculateTrend();return this.recordHistory(e),this.isEmptyTopology()||this.checkAlertConditions(e,t,r),this.persistence&&t.length>0&&this.persistence.saveWeakVertices(t).catch(n=>console.warn("[MinCutHealthMonitor] Failed to persist weak vertices:",n)),this.emitEvent("mincut.updated",e,{status:r,weakVertexCount:t.length}),{status:r,minCutValue:e,healthyThreshold:this.config.healthyThreshold,warningThreshold:this.config.warningThreshold,weakVertexCount:t.length,topWeakVertices:t.slice(0,5),trend:i,history:this.history.slice(-20),lastUpdated:new Date}}getHealth(){let e=this.calculator.getMinCutValue(this.graph),t=this.calculator.findWeakVertices(this.graph);return{status:this.isEmptyTopology()?"idle":this.determineStatus(e),minCutValue:e,healthyThreshold:this.config.healthyThreshold,warningThreshold:this.config.warningThreshold,weakVertexCount:t.length,topWeakVertices:t.slice(0,5),trend:this.calculateTrend(),history:this.history.slice(-20),lastUpdated:new Date}}getMinCutValue(){return this.calculator.getMinCutValue(this.graph)}getWeakVertices(){return this.calculator.findWeakVertices(this.graph)}isCritical(){return this.calculator.getMinCutValue(this.graph)<this.config.warningThreshold}isHealthy(){return this.calculator.getMinCutValue(this.graph)>=this.config.healthyThreshold}getActiveAlerts(){return Array.from(this.alerts.values()).filter(e=>!e.acknowledged).sort((e,t)=>{let r={critical:0,high:1,medium:2,low:3,info:4};return r[e.severity]-r[t.severity]})}getAllAlerts(){return Array.from(this.alerts.values())}acknowledgeAlert(e){let t=this.alerts.get(e);return t?(t.acknowledged=!0,!0):!1}clearAcknowledgedAlerts(){let e=[];for(let[t,r]of this.alerts)r.acknowledged&&e.push(t);for(let t of e)this.alerts.delete(t);return e.length}getHistory(){return[...this.history]}getTrend(){return this.calculateTrend()}getStats(e=6e4){let t=Date.now()-e,r=this.history.filter(n=>n.timestamp.getTime()>t);if(r.length===0){let n=this.calculator.getMinCutValue(this.graph);return{min:n,max:n,average:n,count:0}}let i=r.map(n=>n.value);return{min:Math.min(...i),max:Math.max(...i),average:i.reduce((n,a)=>n+a,0)/i.length,count:r.length}}updateConfig(e){Object.assign(this.config,e),e.checkIntervalMs&&this.isMonitoring&&(this.stop(),this.start())}getConfig(){return{...this.config}}determineStatus(e){return e>=this.config.healthyThreshold?"healthy":e>=this.config.warningThreshold?"warning":"critical"}calculateTrend(){if(this.history.length<3)return"stable";let e=this.history.slice(-5),t=e[0].value,i=e[e.length-1].value-t,a=e.reduce((o,c)=>o+c.value,0)/e.length*.1;return i>a?"improving":i<-a?"degrading":"stable"}recordHistory(e){let t={timestamp:new Date,value:e,vertexCount:this.graph.vertexCount,edgeCount:this.graph.edgeCount};for(this.history.push(t);this.history.length>this.config.maxHistoryEntries;)this.history.shift()}checkAlertConditions(e,t,r){if(!this.config.alertsEnabled)return;let i=Date.now();r==="critical"?this.maybeGenerateAlert("critical-threshold","critical",`MinCut value (${e.toFixed(2)}) is below critical threshold (${this.config.warningThreshold})`,e,this.config.warningThreshold,t):r==="warning"&&this.maybeGenerateAlert("warning-threshold","high",`MinCut value (${e.toFixed(2)}) is below healthy threshold (${this.config.healthyThreshold})`,e,this.config.healthyThreshold,t);let n=t.filter(o=>o.weightedDegree===0);n.length>0&&this.maybeGenerateAlert("isolated-vertices","high",`${n.length} isolated vertex(es) detected`,e,0,n);let a=t.filter(o=>o.riskScore>.8);a.length>0&&this.maybeGenerateAlert("critical-vertices","medium",`${a.length} critical vertex(es) with high risk score`,e,0,a)}maybeGenerateAlert(e,t,r,i,n,a){let o=Date.now(),c=this.lastAlertTime.get(e)||0;if(o-c<this.config.alertCooldownMs)return;let s={id:h(),severity:t,message:r,minCutValue:i,threshold:n,affectedVertices:a.map(l=>l.vertexId),timestamp:new Date,acknowledged:!1,remediations:a.flatMap(l=>l.suggestions).slice(0,5)};this.alerts.set(s.id,s),this.persistence&&this.persistence.saveAlert(s).catch(l=>console.warn("[MinCutHealthMonitor] Failed to persist alert:",l)),this.lastAlertTime.set(e,o),this.emitEvent("mincut.alert.generated",i,{alert:s})}emitEvent(e,t,r){if(!this.eventBus)return;let i={id:h(),type:e,source:"coordination",timestamp:new Date,correlationId:h(),payload:{minCutValue:t,...r}};this.eventBus.publish(i).catch(n=>{console.error("Failed to publish MinCut event:",n)})}};function v(m,e,t,r){return new g(m,e,t,r)}var d=null,u=null;function C(){return d||(d=y()),d}function B(){return u||(u=v(C())),u}function F(){return d!==null}function N(){return u!==null}export{f as a,v as b,C as c,B as d,F as e,N as f};
|