agentic-qe 3.9.8 → 3.9.10
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/agents/_shared/executor-preamble.md +86 -0
- package/.claude/agents/v3/qe-coverage-specialist.md +20 -1
- package/.claude/agents/v3/qe-fleet-commander.md +20 -1
- package/.claude/agents/v3/qe-pentest-validator.md +20 -1
- package/.claude/agents/v3/qe-queen-coordinator.md +20 -1
- package/.claude/agents/v3/qe-risk-assessor.md +20 -1
- package/.claude/agents/v3/qe-root-cause-analyzer.md +19 -0
- package/.claude/agents/v3/qe-security-auditor.md +20 -1
- package/.claude/agents/v3/qe-test-architect.md +33 -1
- package/.claude/helpers/advisor-call.cjs +283 -0
- package/.claude/skills/README.md +4 -3
- package/.claude/skills/a11y-ally/SKILL.md +40 -18
- package/.claude/skills/accessibility-testing/SKILL.md +4 -0
- package/.claude/skills/compatibility-testing/SKILL.md +23 -0
- package/.claude/skills/e2e-flow-verifier/SKILL.md +87 -52
- package/.claude/skills/enterprise-integration-testing/SKILL.md +4 -0
- package/.claude/skills/localization-testing/SKILL.md +14 -0
- package/.claude/skills/observability-testing-patterns/SKILL.md +16 -0
- package/.claude/skills/qe-browser/SKILL.md +409 -0
- package/.claude/skills/qe-browser/evals/qe-browser.yaml +291 -0
- package/.claude/skills/qe-browser/fixtures/package.json +7 -0
- package/.claude/skills/qe-browser/fixtures/serve-skills.js +130 -0
- package/.claude/skills/qe-browser/references/assertion-kinds.md +132 -0
- package/.claude/skills/qe-browser/references/migration-from-playwright.md +195 -0
- package/.claude/skills/qe-browser/schemas/output.json +188 -0
- package/.claude/skills/qe-browser/scripts/assert.js +378 -0
- package/.claude/skills/qe-browser/scripts/batch.js +292 -0
- package/.claude/skills/qe-browser/scripts/check-injection.js +267 -0
- package/.claude/skills/qe-browser/scripts/intent-score.js +325 -0
- package/.claude/skills/qe-browser/scripts/lib/vibium.js +330 -0
- package/.claude/skills/qe-browser/scripts/package.json +7 -0
- package/.claude/skills/qe-browser/scripts/smoke-test.sh +212 -0
- package/.claude/skills/qe-browser/scripts/validate-config.json +46 -0
- package/.claude/skills/qe-browser/scripts/visual-diff.js +276 -0
- package/.claude/skills/qe-visual-accessibility/SKILL.md +31 -1
- package/.claude/skills/security-visual-testing/SKILL.md +18 -0
- package/.claude/skills/skills-manifest.json +20 -13
- package/.claude/skills/testability-scoring/SKILL.md +23 -0
- package/.claude/skills/trust-tier-manifest.json +14 -3
- package/.claude/skills/visual-testing-advanced/SKILL.md +41 -1
- package/CHANGELOG.md +75 -0
- package/README.md +5 -3
- package/assets/agents/v3/helpers/advisor-call.cjs +283 -0
- package/assets/agents/v3/qe-coverage-specialist.md +20 -1
- package/assets/agents/v3/qe-fleet-commander.md +20 -1
- package/assets/agents/v3/qe-pentest-validator.md +20 -1
- package/assets/agents/v3/qe-queen-coordinator.md +20 -1
- package/assets/agents/v3/qe-risk-assessor.md +20 -1
- package/assets/agents/v3/qe-root-cause-analyzer.md +19 -0
- package/assets/agents/v3/qe-security-auditor.md +20 -1
- package/assets/agents/v3/qe-test-architect.md +33 -1
- package/assets/skills/README.md +4 -3
- package/assets/skills/a11y-ally/SKILL.md +40 -18
- package/assets/skills/accessibility-testing/SKILL.md +4 -0
- package/assets/skills/compatibility-testing/SKILL.md +23 -0
- package/assets/skills/e2e-flow-verifier/SKILL.md +87 -52
- package/assets/skills/enterprise-integration-testing/SKILL.md +4 -0
- package/assets/skills/localization-testing/SKILL.md +14 -0
- package/assets/skills/observability-testing-patterns/SKILL.md +16 -0
- package/assets/skills/qe-browser/SKILL.md +409 -0
- package/assets/skills/qe-browser/evals/qe-browser.yaml +291 -0
- package/assets/skills/qe-browser/fixtures/package.json +7 -0
- package/assets/skills/qe-browser/fixtures/serve-skills.js +130 -0
- package/assets/skills/qe-browser/references/assertion-kinds.md +132 -0
- package/assets/skills/qe-browser/references/migration-from-playwright.md +195 -0
- package/assets/skills/qe-browser/schemas/output.json +188 -0
- package/assets/skills/qe-browser/scripts/assert.js +378 -0
- package/assets/skills/qe-browser/scripts/batch.js +292 -0
- package/assets/skills/qe-browser/scripts/check-injection.js +267 -0
- package/assets/skills/qe-browser/scripts/intent-score.js +325 -0
- package/assets/skills/qe-browser/scripts/lib/vibium.js +330 -0
- package/assets/skills/qe-browser/scripts/package.json +7 -0
- package/assets/skills/qe-browser/scripts/smoke-test.sh +212 -0
- package/assets/skills/qe-browser/scripts/validate-config.json +46 -0
- package/assets/skills/qe-browser/scripts/visual-diff.js +276 -0
- package/assets/skills/qe-visual-accessibility/SKILL.md +31 -1
- package/assets/skills/security-visual-testing/SKILL.md +18 -0
- package/assets/skills/skills-manifest.json +211 -15
- package/assets/skills/testability-scoring/SKILL.md +23 -0
- package/assets/skills/trust-tier-manifest.json +14 -3
- package/assets/skills/visual-testing-advanced/SKILL.md +41 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-IKCDCMSI.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-LAE4NTVX.js → agent-booster-wasm-HM4XSABF.js} +2 -2
- package/dist/cli/chunks/{agent-handler-FVXHR6XN.js → agent-handler-UDBDLLO4.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-Q7LLBA7C.js → agent-memory-branch-VIXQ3DAR.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-W4WW7SQW.js +2 -0
- package/dist/cli/chunks/{audit-YRLKHJLX.js → audit-FWTGLQHH.js} +2 -2
- package/dist/cli/chunks/base-UQKFTHOY.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-XFGOGICB.js → better-sqlite3-TYI3CCWU.js} +2 -2
- package/dist/cli/chunks/{brain-handler-KIUSNVSS.js → brain-handler-45ZGBLSB.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-VKZ4L3FH.js → branch-enumerator-ZBXELCQA.js} +2 -2
- package/dist/cli/chunks/{browser-GZVIYFIB.js → browser-2KM5IKEX.js} +2 -2
- package/dist/cli/chunks/browser-workflow-NMOEM3HW.js +2 -0
- package/dist/cli/chunks/{chunk-7PHNHFZI.js → chunk-226DSROQ.js} +3 -3
- package/dist/cli/chunks/{chunk-MGX2BZWE.js → chunk-27B575K6.js} +2 -2
- package/dist/cli/chunks/{chunk-P7APAQD6.js → chunk-2IJFZW3N.js} +12 -12
- package/dist/cli/chunks/{chunk-TWDWDKOI.js → chunk-32OB4ZYQ.js} +1 -1
- package/dist/cli/chunks/{chunk-E4D36LGH.js → chunk-335CCAOL.js} +1 -1
- package/dist/cli/chunks/{chunk-Q5PARJC6.js → chunk-34WI4QNF.js} +2 -2
- package/dist/cli/chunks/chunk-3A4BL62O.js +2 -0
- package/dist/cli/chunks/{chunk-6ZMM7MXA.js → chunk-3AG647MY.js} +2 -2
- package/dist/cli/chunks/{chunk-LPRHYSXN.js → chunk-3HIDCXW3.js} +1 -1
- package/dist/cli/chunks/{chunk-HN7HYUW6.js → chunk-4EKWEDHA.js} +9 -9
- package/dist/cli/chunks/{chunk-JCROLOP6.js → chunk-4FU6YNDP.js} +2 -2
- package/dist/cli/chunks/{chunk-A4DJMFDM.js → chunk-4LOJJ4VX.js} +1 -1
- package/dist/cli/chunks/{chunk-I25KIHQE.js → chunk-4VOGUZW5.js} +1 -1
- package/dist/cli/chunks/{chunk-KJZU3E5G.js → chunk-4ZR5G4MZ.js} +2 -2
- package/dist/cli/chunks/{chunk-W45FANJG.js → chunk-52ZHPZVX.js} +2 -2
- package/dist/cli/chunks/{chunk-LOANEFGZ.js → chunk-53G3OCGS.js} +2 -2
- package/dist/cli/chunks/{chunk-TZMKO6PC.js → chunk-54TZA65H.js} +2 -2
- package/dist/cli/chunks/{chunk-GHJRX7PV.js → chunk-5QKTLOGO.js} +1 -1
- package/dist/cli/chunks/{chunk-76UL224Z.js → chunk-5TATJQ3Z.js} +2 -2
- package/dist/cli/chunks/{chunk-OGFGNAKQ.js → chunk-5V6DRRLO.js} +2 -2
- package/dist/cli/chunks/{chunk-BXMIQRF3.js → chunk-6X7WKNDF.js} +2 -2
- package/dist/cli/chunks/chunk-7FWZHYYE.js +2 -0
- package/dist/cli/chunks/{chunk-R2LWLZ3Y.js → chunk-A2ULGMMG.js} +1 -1
- package/dist/cli/chunks/{chunk-AVKDT3UL.js → chunk-A53XKLEA.js} +8 -8
- package/dist/cli/chunks/{chunk-GOPE5OB5.js → chunk-A5OIXFFL.js} +1 -1
- package/dist/cli/chunks/{chunk-I7OH6RAC.js → chunk-ACNL4NFI.js} +2 -2
- package/dist/cli/chunks/{chunk-PBPOSPTY.js → chunk-AE6Y5CNJ.js} +2 -2
- package/dist/cli/chunks/{chunk-TN72MXLI.js → chunk-AO4HDN62.js} +2 -2
- package/dist/cli/chunks/{chunk-IHJXFWUL.js → chunk-AOA454FC.js} +2 -2
- package/dist/cli/chunks/{chunk-N2L7RWNX.js → chunk-B2QVWL5R.js} +2 -2
- package/dist/cli/chunks/{chunk-7CFEGUEH.js → chunk-B3L3CT4X.js} +2 -2
- package/dist/cli/chunks/{chunk-XVXSQOQG.js → chunk-B4AFVIOA.js} +2 -2
- package/dist/cli/chunks/{chunk-S72TSJS4.js → chunk-BCSCJBYQ.js} +2 -2
- package/dist/cli/chunks/{chunk-UAI5NPPQ.js → chunk-BIV6HWMT.js} +2 -2
- package/dist/cli/chunks/{chunk-XPL3BXLM.js → chunk-BNNH3KZP.js} +1 -1
- package/dist/cli/chunks/{chunk-JK6JBNGL.js → chunk-C234RGWZ.js} +2 -2
- package/dist/cli/chunks/{chunk-4EAAHMVM.js → chunk-C55GEYDA.js} +2 -2
- package/dist/cli/chunks/{chunk-Y67OXEUM.js → chunk-CEBZHZ4O.js} +1 -1
- package/dist/cli/chunks/{chunk-A2QLTNN5.js → chunk-CFQHIWWH.js} +1 -1
- package/dist/cli/chunks/{chunk-KMGAJRQ6.js → chunk-CJO2V2FB.js} +1 -1
- package/dist/cli/chunks/{chunk-5TGK7VTS.js → chunk-CQNXIYQW.js} +2 -2
- package/dist/cli/chunks/{chunk-IP2Z4Z6X.js → chunk-D2A4TGZY.js} +1 -1
- package/dist/cli/chunks/{chunk-VVNR4R22.js → chunk-DG2OYKUQ.js} +2 -2
- package/dist/cli/chunks/{chunk-ELZ5SKEN.js → chunk-DPYCHODC.js} +2 -2
- package/dist/cli/chunks/{chunk-WUCWFDBE.js → chunk-E4YKNKQL.js} +2 -2
- package/dist/cli/chunks/{chunk-ZCKNGICX.js → chunk-EEWTTYRC.js} +1 -1
- package/dist/cli/chunks/{chunk-IFIYNCT2.js → chunk-EGIYLRW5.js} +2 -2
- package/dist/cli/chunks/{chunk-DLKRK2GU.js → chunk-EHGTNSJ2.js} +1 -1
- package/dist/cli/chunks/{chunk-IIYXSWJN.js → chunk-EJNASXOY.js} +2 -2
- package/dist/cli/chunks/{chunk-ZJ4PMOIZ.js → chunk-F7HRGQRS.js} +2 -2
- package/dist/cli/chunks/{chunk-2QI5RYVR.js → chunk-FF7TSDO4.js} +2 -2
- package/dist/cli/chunks/{chunk-DDDEGBBJ.js → chunk-FIQNVPYY.js} +2 -2
- package/dist/cli/chunks/{chunk-F5VLJFVU.js → chunk-FJOBKT7N.js} +1 -1
- package/dist/cli/chunks/{chunk-JNJYWWBG.js → chunk-FYI52MFF.js} +6 -6
- package/dist/cli/chunks/{chunk-UOSKMAAY.js → chunk-GCNTU3QJ.js} +1 -1
- package/dist/cli/chunks/{chunk-4GMV6Z7Y.js → chunk-H56YBNXW.js} +2 -2
- package/dist/cli/chunks/{chunk-HTL2WT64.js → chunk-HJMLJNCB.js} +1 -1
- package/dist/cli/chunks/chunk-I3IRIJOT.js +2 -0
- package/dist/cli/chunks/chunk-IEQ2VYMO.js +3 -0
- package/dist/cli/chunks/{chunk-PG7CZ6Q4.js → chunk-IGRKFVFD.js} +2 -2
- package/dist/cli/chunks/{chunk-SQ6XZGR4.js → chunk-IJPE6OGD.js} +10 -10
- package/dist/cli/chunks/{chunk-AYKMWP7F.js → chunk-IJUL2UMO.js} +1 -1
- package/dist/cli/chunks/{chunk-JVH7753D.js → chunk-ISZJAZ2D.js} +1 -1
- package/dist/cli/chunks/{chunk-NCXVOOA7.js → chunk-ITDYTODU.js} +2 -2
- package/dist/cli/chunks/{chunk-RGCCSAHI.js → chunk-JHUEBBSX.js} +2 -2
- package/dist/cli/chunks/{chunk-TDPHLQ2M.js → chunk-JN3CC2TX.js} +2 -2
- package/dist/cli/chunks/{chunk-TSDTRJOG.js → chunk-JOEEGNNX.js} +2 -2
- package/dist/cli/chunks/{chunk-QVGSD25D.js → chunk-JQX2DHQT.js} +1 -1
- package/dist/cli/chunks/{chunk-VHZ653XS.js → chunk-JRG4AFUR.js} +3 -3
- package/dist/cli/chunks/{chunk-SP3ZBJ63.js → chunk-JRMNQWRL.js} +3 -3
- package/dist/cli/chunks/{chunk-EKDFIYV5.js → chunk-JXDJMVIG.js} +2 -2
- package/dist/cli/chunks/{chunk-3WOQMFTD.js → chunk-JYPW22JV.js} +2 -2
- package/dist/cli/chunks/{chunk-WJDOOT2M.js → chunk-KK3KVYE7.js} +2 -2
- package/dist/cli/chunks/{chunk-4KX6TMKB.js → chunk-KSRAA6ZD.js} +3 -3
- package/dist/cli/chunks/chunk-KUCU5ML6.js +6 -0
- package/dist/cli/chunks/{chunk-MVW7AACO.js → chunk-KXXLMLMJ.js} +2 -2
- package/dist/cli/chunks/{chunk-HE2NWYHK.js → chunk-LKCFJC4Q.js} +1 -1
- package/dist/cli/chunks/{chunk-237NNDKL.js → chunk-LODXDV4G.js} +2 -2
- package/dist/cli/chunks/{chunk-W4IRWGGR.js → chunk-M4CYXAVP.js} +4 -4
- package/dist/cli/chunks/{chunk-R4VOIXJQ.js → chunk-MOLMS6MA.js} +2 -2
- package/dist/cli/chunks/{chunk-SDMGF3KD.js → chunk-NBTM2J4B.js} +2 -2
- package/dist/cli/chunks/{chunk-X66IXWSO.js → chunk-NIFVFUCU.js} +2 -2
- package/dist/cli/chunks/{chunk-266SKKFM.js → chunk-OOHKW3UE.js} +2 -2
- package/dist/cli/chunks/{chunk-WXEDVKJS.js → chunk-ORA6NIXN.js} +2 -2
- package/dist/cli/chunks/{chunk-ECYDMBDA.js → chunk-OSD55UO7.js} +2 -2
- package/dist/cli/chunks/{chunk-SSURIMCL.js → chunk-OWQRMH3G.js} +2 -2
- package/dist/cli/chunks/chunk-QFUINEBN.js +2 -0
- package/dist/cli/chunks/{chunk-HYACMUUR.js → chunk-RE2IBX7Z.js} +2 -2
- package/dist/cli/chunks/{chunk-2V5VKOJ2.js → chunk-RMQQ5UHM.js} +2 -2
- package/dist/cli/chunks/{chunk-U62WL3WZ.js → chunk-ROEMVTXC.js} +3 -3
- package/dist/cli/chunks/{chunk-YOKRSFGA.js → chunk-SMTAZQJ3.js} +2 -2
- package/dist/cli/chunks/{chunk-OZTSMI7P.js → chunk-TO4NGP3E.js} +1 -1
- package/dist/cli/chunks/{chunk-LFEBTWFS.js → chunk-TTXYZUTQ.js} +2 -2
- package/dist/cli/chunks/{chunk-IZTUAI5T.js → chunk-U4NODKRR.js} +2 -2
- package/dist/cli/chunks/{chunk-JD3GH47Z.js → chunk-U635PSAW.js} +2 -2
- package/dist/cli/chunks/{chunk-6DBYVKGA.js → chunk-UBT7VCKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-YSUMQBMY.js → chunk-UETM5XDO.js} +1 -1
- package/dist/cli/chunks/{chunk-BZB5D4BO.js → chunk-URXG7FMO.js} +4 -3
- package/dist/cli/chunks/{chunk-M2JBQVBP.js → chunk-VIWDVS24.js} +2 -2
- package/dist/cli/chunks/{chunk-6A4FEIE2.js → chunk-VNKCUKUJ.js} +3 -3
- package/dist/cli/chunks/{chunk-6KWX7A3R.js → chunk-VXIXHZCN.js} +2 -2
- package/dist/cli/chunks/{chunk-YIJDCZVX.js → chunk-WFEXEDMC.js} +2 -2
- package/dist/cli/chunks/{chunk-CG3HIYF4.js → chunk-WLX57ULC.js} +2 -2
- package/dist/cli/chunks/{chunk-FKODRXOU.js → chunk-WVQZGLCT.js} +2 -2
- package/dist/cli/chunks/{chunk-677V67MR.js → chunk-WW5DZ6BU.js} +1 -1
- package/dist/cli/chunks/{chunk-7L64UC5U.js → chunk-X364AIY6.js} +1 -1
- package/dist/cli/chunks/{chunk-UGJNR52C.js → chunk-XH7D6EGE.js} +1 -1
- package/dist/cli/chunks/{chunk-66DCG6RO.js → chunk-XICRAXUR.js} +4 -4
- package/dist/cli/chunks/{chunk-ETXK25IY.js → chunk-XMAV7AIC.js} +1 -1
- package/dist/cli/chunks/{chunk-NHXFAXEV.js → chunk-XSUPK7FI.js} +1 -1
- package/dist/cli/chunks/{chunk-3ZAGYTEC.js → chunk-XSWOB74I.js} +2 -2
- package/dist/cli/chunks/chunk-YPIZMTTA.js +14 -0
- package/dist/cli/chunks/{chunk-YDW522M7.js → chunk-YT6KBEXE.js} +2 -2
- package/dist/cli/chunks/{chunk-P2H5ARHM.js → chunk-ZENLP5LF.js} +1 -1
- package/dist/cli/chunks/{ci-A5ZXOEC4.js → ci-WS32HBBS.js} +2 -2
- package/dist/cli/chunks/{ci-output-S47BMRYC.js → ci-output-67R5MSLL.js} +2 -2
- package/dist/cli/chunks/circuit-breaker-MA562FT7.js +2 -0
- package/dist/cli/chunks/{claude-flow-setup-F5WBEBVK.js → claude-flow-setup-4QKGSRS7.js} +2 -2
- package/dist/cli/chunks/client-XQGZKXOB.js +2 -0
- package/dist/cli/chunks/{cline-installer-HLKR4QDR.js → cline-installer-6VSROHRY.js} +2 -2
- package/dist/cli/chunks/{code-MTZWS6JT.js → code-FBPBHVV3.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-BALTZ2WQ.js → code-index-extractor-62F622V2.js} +2 -2
- package/dist/cli/chunks/{codex-installer-LI2VIGET.js → codex-installer-LSR6DVCU.js} +2 -2
- package/dist/cli/chunks/{completions-TOF4GTNF.js → completions-56QOICBN.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-IPFXIT6T.js → complexity-analyzer-SDH4NWIS.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-KWI66RBI.js → continuedev-installer-S7ZPL3VC.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-REFOE6UF.js → copilot-installer-25GNNKNL.js} +2 -2
- package/dist/cli/chunks/{cost-tracker-M2MZQXCN.js → cost-tracker-73J4Y2RS.js} +2 -2
- package/dist/cli/chunks/{coverage-UR2XSJCR.js → coverage-WEE2AZ5F.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-C2ZFCSXJ.js +2 -0
- package/dist/cli/chunks/{cursor-installer-X4PXCVYH.js → cursor-installer-DHQ644T3.js} +2 -2
- package/dist/cli/chunks/{daemon-5R6ZEEBB.js → daemon-3WUJ5E3X.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-RUY2RJZA.js → dag-attention-scheduler-IRLAM43H.js} +2 -2
- package/dist/cli/chunks/{detect-PX2AYBHM.js → detect-DTSB4T4R.js} +2 -2
- package/dist/cli/chunks/{domain-handler-5JXWEO3E.js → domain-handler-DDN2Z5XC.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-6M2YLBJY.js → domain-transfer-3RRG4S6R.js} +2 -2
- package/dist/cli/chunks/dream-JSZZ67OO.js +2 -0
- package/dist/cli/chunks/esm-node-X4TES6NX.js +2 -0
- package/dist/cli/chunks/{eval-L6ZBG462.js → eval-UXEP425X.js} +2 -2
- package/dist/cli/chunks/{fast-paths-WIFDALFK.js → fast-paths-4XLHS2VN.js} +2 -2
- package/dist/cli/chunks/{feature-flags-YLBXFUCN.js → feature-flags-6C2HD76K.js} +2 -2
- package/dist/cli/chunks/{feature-flags-GRHF5MTK.js → feature-flags-KXXHAEYF.js} +2 -2
- package/dist/cli/chunks/{file-discovery-4HXUB4HN.js → file-discovery-YSDUIZO4.js} +2 -2
- package/dist/cli/chunks/{fleet-RPLJXOEP.js → fleet-TYDG5DWK.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-2D5IOGAT.js → gnn-wrapper-GJVYRPHB.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-D5SWZZGA.js → heartbeat-handler-X63CM35O.js} +4 -4
- package/dist/cli/chunks/{heartbeat-scheduler-WSG4Y3M2.js → heartbeat-scheduler-NYH4CMVM.js} +2 -2
- package/dist/cli/chunks/hnsw-adapter-SQCVEHB5.js +2 -0
- package/dist/cli/chunks/hnsw-index-UGVC5IDK.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-UH6RWE74.js → hnsw-legacy-bridge-YDVUZTJI.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-BJ4ZJPMP.js → hnswlib-node-TLBDFWA6.js} +2 -2
- package/dist/cli/chunks/{hooks-KGDQNB5T.js → hooks-B6PVGP7D.js} +6 -6
- package/dist/cli/chunks/hybrid-router-YZEBKUZJ.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-LARQCK7V.js → hypergraph-engine-OQ2ZEG53.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-RACF4AOX.js → hypergraph-handler-VPD424MI.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-ZIXSRWED.js +2 -0
- package/dist/cli/chunks/{init-handler-64AOFMJD.js → init-handler-5WYP6NJW.js} +6 -6
- package/dist/cli/chunks/init-wizard-MO6PCXPX.js +2 -0
- package/dist/cli/chunks/kernel-P54KQB2F.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-4ICIP6QN.js → kilocode-installer-YVY4EVMY.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-J2GOV2OB.js → kiro-installer-GNT4BN3A.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-GU57FQAQ.js +2 -0
- package/dist/cli/chunks/{learning-QD4JVH3K.js → learning-LD2RSBRS.js} +3 -3
- package/dist/cli/chunks/llm-router-ALKXFKLQ.js +36 -0
- package/dist/cli/chunks/{load-EXKUJMBK.js → load-XAOTGZYB.js} +2 -2
- package/dist/cli/chunks/load-test-5RFBTSS7.js +2 -0
- package/dist/cli/chunks/{mcp-NSNDZSMH.js → mcp-WDAJHGH4.js} +2 -2
- package/dist/cli/chunks/{memory-63JTNVZN.js → memory-M7QD57JD.js} +5 -5
- package/dist/cli/chunks/memory-backend-GPOP3IR4.js +2 -0
- package/dist/cli/chunks/memory-handlers-2NHGZLQM.js +2 -0
- package/dist/cli/chunks/multi-model-executor-2XZQK2IN.js +14 -0
- package/dist/cli/chunks/{opencode-installer-244LFSPN.js → opencode-installer-ASCVY3GG.js} +2 -2
- package/dist/cli/chunks/{orchestrator-TZB457J6.js → orchestrator-GOZICWN3.js} +22 -19
- package/dist/cli/chunks/{pipeline-YLBD2Z5Q.js → pipeline-YHQRJWV3.js} +2 -2
- package/dist/cli/chunks/{platform-53PWFZSE.js → platform-4NESYFHN.js} +2 -2
- package/dist/cli/chunks/{plugin-6GUQEFJU.js → plugin-E24I2RVB.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-VCOK7FV5.js → prime-radiant-advanced-wasm-CDVSLR7R.js} +2 -2
- package/dist/cli/chunks/protocol-executor-M5IONISJ.js +2 -0
- package/dist/cli/chunks/{protocol-handler-25UEGTE2.js → protocol-handler-TGTDKSZB.js} +2 -2
- package/dist/cli/chunks/{prove-CTOU5F6G.js → prove-WUKDAMSE.js} +2 -2
- package/dist/cli/chunks/provider-manager-BTKK6W7M.js +24 -0
- package/dist/cli/chunks/qe-reasoning-bank-WIEXCBVE.js +2 -0
- package/dist/cli/chunks/{quality-PB7H5UEF.js → quality-RTIOIS2K.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-ZFK6DANW.js +2 -0
- package/dist/cli/chunks/{real-embeddings-RWWYCIE5.js → real-embeddings-4JJKAEMO.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-U4AGYVKL.js → roocode-installer-XU2IXRBM.js} +2 -2
- package/dist/cli/chunks/router-TOFBEI2Q.js +2 -0
- package/dist/cli/chunks/routing-feedback-RC2VDP6W.js +2 -0
- package/dist/cli/chunks/{routing-handler-NTDKDEBE.js → routing-handler-3KBOCIEN.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-RQKOLQSW.js → ruvector-commands-HHE2ZPX7.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-6EZ7S7OG.js → rvf-dual-writer-GAWM2BUZ.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-EBTV6FV2.js → rvf-migration-adapter-HQPEC4BN.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-MERU7VLY.js → rvf-migration-coordinator-A4K45EFU.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-ZOQDH3JY.js +2 -0
- package/dist/cli/chunks/safe-db-RIP3X32S.js +2 -0
- package/dist/cli/chunks/schedule-Q6KZRLWS.js +2 -0
- package/dist/cli/chunks/scheduler-SJO5QPAU.js +2 -0
- package/dist/cli/chunks/{security-JPDLGHMC.js → security-UIKUNOXB.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-JJCR3AWU.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-7OGLQE5Y.js → shared-rvf-dual-writer-ZUWSLFPH.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-HK2S6XAI.js +2 -0
- package/dist/cli/chunks/{status-handler-3TI3DHEL.js → status-handler-E3VSWGA6.js} +2 -2
- package/dist/cli/chunks/{structural-health-WCZKXVWS.js → structural-health-Y22H4BOU.js} +2 -2
- package/dist/cli/chunks/{sync-AM5T4GYO.js → sync-CA4KWZFS.js} +2 -2
- package/dist/cli/chunks/{task-handler-VHDTXPVP.js → task-handler-3EZPIAMD.js} +2 -2
- package/dist/cli/chunks/task-handlers-6UVAQAGP.js +2 -0
- package/dist/cli/chunks/{test-G6P5XGHM.js → test-Q5DOFSJI.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-37RBUN4E.js → test-scheduling-BSXWCIMQ.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-XGEZU2CS.js +2 -0
- package/dist/cli/chunks/{token-usage-5XGVBLFR.js → token-usage-BZX5TCG6.js} +2 -2
- package/dist/cli/chunks/{transformers-JTKWAZJU.js → transformers-7ITQPXAU.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-KW2GWIIQ.js → tree-sitter-wasm-parser-ZYBBNYR3.js} +2 -2
- package/dist/cli/chunks/{types-7R72BACI.js → types-ACZ5VVRC.js} +2 -2
- package/dist/cli/chunks/unified-memory-EXO6WK33.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-7HPSTFVV.js +2 -0
- package/dist/cli/chunks/unified-persistence-WC3O4WOJ.js +2 -0
- package/dist/cli/chunks/{validate-TYB4ZTUL.js → validate-IQL6OVXD.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-3TFI6PLT.js → validate-swarm-J52J2K5X.js} +2 -2
- package/dist/cli/chunks/{vibium-3YELURJT.js → vibium-XSE76PXE.js} +2 -2
- package/dist/cli/chunks/visual-security-COW3OCEE.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-7Q77A27Y.js → web-tree-sitter-YM6QXUIY.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-ASARRM2X.js → windsurf-installer-M27DVL4H.js} +2 -2
- package/dist/cli/chunks/{witness-chain-WZ6PNXEY.js → witness-chain-NB5LP73S.js} +2 -2
- package/dist/cli/chunks/witness-chain-XQXF3RSP.js +2 -0
- package/dist/cli/chunks/{workflow-JDTEE6TY.js → workflow-5DODQ6XS.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-HSIZEKZM.js +2 -0
- package/dist/cli/chunks/{wrappers-X7WZLBZD.js → wrappers-K7HHCIYD.js} +2 -2
- package/dist/cli/commands/llm-router.js +252 -0
- package/dist/coordination/queen-task-management.js +8 -1
- package/dist/init/browser-engine-installer.d.ts +60 -0
- package/dist/init/browser-engine-installer.js +92 -0
- package/dist/init/init-wizard-steps.js +9 -0
- package/dist/init/phases/09-assets.d.ts +2 -0
- package/dist/init/phases/09-assets.js +65 -0
- package/dist/init/phases/12-verification.js +8 -0
- package/dist/init/skills-installer.js +1 -0
- package/dist/kernel/unified-memory-schemas.d.ts +1 -1
- package/dist/kernel/unified-memory-schemas.js +2 -1
- package/dist/mcp/bundle.js +47 -44
- package/dist/mcp/protocol-server.js +87 -0
- package/dist/routing/advisor/circuit-breaker.d.ts +56 -0
- package/dist/routing/advisor/circuit-breaker.js +128 -0
- package/dist/routing/advisor/domain-prompts.d.ts +14 -0
- package/dist/routing/advisor/domain-prompts.js +53 -0
- package/dist/routing/advisor/index.d.ts +10 -0
- package/dist/routing/advisor/index.js +9 -0
- package/dist/routing/advisor/multi-model-executor.d.ts +60 -0
- package/dist/routing/advisor/multi-model-executor.js +176 -0
- package/dist/routing/advisor/redaction.d.ts +40 -0
- package/dist/routing/advisor/redaction.js +187 -0
- package/dist/routing/advisor/types.d.ts +101 -0
- package/dist/routing/advisor/types.js +9 -0
- package/dist/routing/queen-integration.d.ts +3 -0
- package/dist/routing/queen-integration.js +7 -1
- package/dist/routing/routing-feedback.d.ts +7 -1
- package/dist/routing/routing-feedback.js +57 -11
- package/dist/routing/tiny-dancer-router.d.ts +35 -1
- package/dist/routing/tiny-dancer-router.js +33 -0
- package/dist/routing/types.d.ts +12 -0
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-D4XQUIJD.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-CGIWYLIP.js +0 -2
- package/dist/cli/chunks/base-BYVP2STR.js +0 -2
- package/dist/cli/chunks/browser-workflow-PC4N5TKL.js +0 -2
- package/dist/cli/chunks/chunk-2K3DJ3EK.js +0 -7
- package/dist/cli/chunks/chunk-JBQ4WGB4.js +0 -14
- package/dist/cli/chunks/chunk-OT4JADWW.js +0 -2
- package/dist/cli/chunks/client-56BU3GAX.js +0 -2
- package/dist/cli/chunks/cross-domain-router-XQT52BTB.js +0 -2
- package/dist/cli/chunks/dream-LFZCN5WK.js +0 -2
- package/dist/cli/chunks/esm-node-EBDIEPKS.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-BMXTVGZB.js +0 -2
- package/dist/cli/chunks/hnsw-index-YX6XLICT.js +0 -2
- package/dist/cli/chunks/impact-analyzer-MGSI2WBK.js +0 -2
- package/dist/cli/chunks/init-wizard-TBDWRRMC.js +0 -2
- package/dist/cli/chunks/kernel-NV7TO2FK.js +0 -2
- package/dist/cli/chunks/knowledge-graph-7REGYH6A.js +0 -2
- package/dist/cli/chunks/llm-router-4K4IT2PQ.js +0 -30
- package/dist/cli/chunks/load-test-RYQK44TT.js +0 -2
- package/dist/cli/chunks/memory-backend-3EBE2DEX.js +0 -2
- package/dist/cli/chunks/memory-handlers-2335MVQJ.js +0 -2
- package/dist/cli/chunks/protocol-executor-MR37S7GX.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-DANGLPTH.js +0 -2
- package/dist/cli/chunks/queen-coordinator-4YJPYF5F.js +0 -2
- package/dist/cli/chunks/router-F4IPY4RQ.js +0 -2
- package/dist/cli/chunks/routing-feedback-VGHFIJ5S.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-2P75WF5A.js +0 -2
- package/dist/cli/chunks/safe-db-47NEO2RS.js +0 -2
- package/dist/cli/chunks/schedule-L5GJW25Z.js +0 -2
- package/dist/cli/chunks/scheduler-NGGGSZMO.js +0 -2
- package/dist/cli/chunks/shared-rvf-adapter-NKNTYGHO.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-TE2ZRHKA.js +0 -2
- package/dist/cli/chunks/task-handlers-GEJ36WNB.js +0 -2
- package/dist/cli/chunks/token-bootstrap-JPE3LWXQ.js +0 -2
- package/dist/cli/chunks/unified-memory-KSBLUZT4.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-V3EOMQIZ.js +0 -2
- package/dist/cli/chunks/unified-persistence-URIRJ4BM.js +0 -2
- package/dist/cli/chunks/visual-security-DJOOVCBZ.js +0 -2
- package/dist/cli/chunks/witness-chain-ZWJUCXCJ.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-5CKA6Q74.js +0 -2
|
@@ -0,0 +1,24 @@
|
|
|
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.9.10");process.exit(0)}
|
|
2
|
+
import{b as T}from"./chunk-IEQ2VYMO.js";import{a}from"./chunk-I3IRIJOT.js";import{b as E,c as te}from"./chunk-XSUPK7FI.js";import"./chunk-URXG7FMO.js";import"./chunk-TTXYZUTQ.js";import"./chunk-7FWZHYYE.js";import"./chunk-WLX57ULC.js";import{b as N,d as Q}from"./chunk-DG2OYKUQ.js";import{b as v,c as L}from"./chunk-IGRKFVFD.js";import"./chunk-RMQQ5UHM.js";import"./chunk-RE2IBX7Z.js";import"./chunk-SMTAZQJ3.js";import{b as ee,d as oe}from"./chunk-AOA454FC.js";import"./chunk-UBT7VCKQ.js";import"./chunk-B4AFVIOA.js";import"./chunk-4ZR5G4MZ.js";import"./chunk-KXXLMLMJ.js";import"./chunk-54TZA65H.js";import"./chunk-335CCAOL.js";oe();L();var re={failureThreshold:5,resetTimeoutMs:3e4,halfOpenSuccessThreshold:2,failureWindowMs:6e4,includeTimeouts:!0},J=class{state="closed";failures=[];successCount=0;totalRequests=0;totalSuccesses=0;totalFailures=0;rejectedCount=0;lastFailureTime;lastSuccessTime;openedAt;halfOpenSuccesses=0;config;providerType;constructor(t,e={}){this.providerType=t,this.config={...re,...e}}getState(){return this.state==="open"&&this.openedAt&&Date.now()-this.openedAt.getTime()>=this.config.resetTimeoutMs&&this.transitionTo("half-open"),this.state}canExecute(){let t=this.getState();return t==="closed"?!0:t!=="open"}async execute(t){if(this.totalRequests++,this.getState()==="open")throw this.rejectedCount++,a(`Circuit breaker is open for provider ${this.providerType}`,"CIRCUIT_OPEN",{provider:this.providerType,retryable:!0,retryAfterMs:this.getTimeUntilTransition()});try{let r=await t();return this.recordSuccess(),r}catch(r){throw this.recordFailure(v(r)),r}}recordSuccess(){this.successCount++,this.totalSuccesses++,this.lastSuccessTime=new Date,this.getState()==="half-open"&&(this.halfOpenSuccesses++,this.halfOpenSuccesses>=this.config.halfOpenSuccessThreshold&&this.transitionTo("closed"))}recordFailure(t){if(this.totalFailures++,this.lastFailureTime=new Date,(t.message.toLowerCase().includes("timeout")||t.name==="TimeoutError"||t.name==="AbortError")&&!this.config.includeTimeouts)return;this.failures.push({timestamp:new Date,error:t}),this.cleanOldFailures();let r=this.getState();if(r==="half-open"){this.transitionTo("open");return}r==="closed"&&this.failures.length>=this.config.failureThreshold&&this.transitionTo("open")}getStats(){return{state:this.getState(),totalRequests:this.totalRequests,successCount:this.totalSuccesses,failureCount:this.totalFailures,rejectedCount:this.rejectedCount,lastFailureTime:this.lastFailureTime,lastSuccessTime:this.lastSuccessTime,timeUntilTransitionMs:this.getTimeUntilTransition()}}reset(){this.state="closed",this.failures=[],this.successCount=0,this.halfOpenSuccesses=0,this.openedAt=void 0}forceOpen(){this.transitionTo("open")}forceHalfOpen(){this.transitionTo("half-open")}getRecentFailures(t=5){return this.failures.slice(-t).map(e=>`[${e.timestamp.toISOString()}] ${e.error.message}`)}transitionTo(t){if(this.state!==t)switch(this.state=t,t){case"open":this.openedAt=new Date,this.halfOpenSuccesses=0;break;case"half-open":this.halfOpenSuccesses=0;break;case"closed":this.failures=[],this.openedAt=void 0,this.halfOpenSuccesses=0;break}}cleanOldFailures(){let t=Date.now()-this.config.failureWindowMs;this.failures=this.failures.filter(e=>e.timestamp.getTime()>t)}getTimeUntilTransition(){if(this.state==="open"&&this.openedAt){let t=Date.now()-this.openedAt.getTime(),e=this.config.resetTimeoutMs-t;return Math.max(0,e)}}},U=class{breakers=new Map;defaultConfig;constructor(t={}){this.defaultConfig={...re,...t}}getBreaker(t,e){let r=this.breakers.get(t);return r||(r=new J(t,{...this.defaultConfig,...e}),this.breakers.set(t,r)),r}getAllStats(){let t={};for(let[e,r]of this.breakers)t[e]=r.getStats();return t}getAvailableProviders(){let t=[];for(let[e,r]of this.breakers)r.canExecute()&&t.push(e);return t}resetAll(){for(let t of this.breakers.values())t.reset()}reset(t){let e=this.breakers.get(t);e&&e.reset()}};var se={maxSize:1e3,defaultTtlMs:36e5,enableLRU:!0,cacheGenerations:!0,cacheEmbeddings:!0,cacheCompletions:!0},A=class{cache=new Map;accessOrder=[];config;hits=0;misses=0;evictions=0;constructor(t={}){this.config={...se,...t}}static generateKey(t,e,r){let n=[t,r?.model??"default",String(r?.temperature??.7),String(r?.maxTokens??0),r?.systemPrompt??"",e].join("|"),o=0;for(let i=0;i<n.length;i++){let l=n.charCodeAt(i);o=(o<<5)-o+l,o=o&o}return`${t}:${Math.abs(o).toString(36)}`}get(t){let e=this.cache.get(t);if(!e){this.misses++;return}if(e.ttlMs>0&&Date.now()-e.createdAt.getTime()>e.ttlMs){this.delete(t),this.misses++;return}return this.hits++,e.lastAccessedAt=new Date,e.accessCount++,this.config.enableLRU&&this.updateAccessOrder(t),e.value}set(t,e,r){this.cache.size>=this.config.maxSize&&!this.cache.has(t)&&this.evictLRU();let s={value:e,createdAt:new Date,lastAccessedAt:new Date,accessCount:1,ttlMs:r??this.config.defaultTtlMs,keyHash:t};this.cache.set(t,s),this.config.enableLRU&&this.updateAccessOrder(t)}has(t){let e=this.cache.get(t);return e?e.ttlMs>0&&Date.now()-e.createdAt.getTime()>e.ttlMs?(this.delete(t),!1):!0:!1}delete(t){let e=this.cache.delete(t);if(e){let r=this.accessOrder.indexOf(t);r!==-1&&this.accessOrder.splice(r,1)}return e}clear(){this.cache.clear(),this.accessOrder=[],this.hits=0,this.misses=0,this.evictions=0}getStats(){let t=this.hits+this.misses,e=t>0?this.hits/t:0,r=0;for(let s of this.cache.values())r+=this.estimateSize(s.value);return{size:this.cache.size,maxSize:this.config.maxSize,hits:this.hits,misses:this.misses,hitRate:e,evictions:this.evictions,memoryUsageBytes:r}}keys(){return Array.from(this.cache.keys())}entries(){return Array.from(this.cache.entries())}import(t){for(let[e,r]of t)r.createdAt=new Date(r.createdAt),r.lastAccessedAt=new Date(r.lastAccessedAt),this.cache.set(e,r),this.accessOrder.push(e);for(;this.cache.size>this.config.maxSize;)this.evictLRU()}pruneExpired(){let t=Date.now(),e=0;for(let[r,s]of this.cache.entries())s.ttlMs>0&&t-s.createdAt.getTime()>s.ttlMs&&(this.delete(r),e++);return e}updateAccessOrder(t){let e=this.accessOrder.indexOf(t);e!==-1&&this.accessOrder.splice(e,1),this.accessOrder.push(t)}evictLRU(){if(this.accessOrder.length===0){let e=this.cache.keys().next().value;e&&(this.cache.delete(e),this.evictions++);return}let t=this.accessOrder.shift();t&&(this.cache.delete(t),this.evictions++)}estimateSize(t){return t==null?0:JSON.stringify(t).length*2}},D=class{generationCache;embeddingCache;completionCache;config;constructor(t={}){this.config={...se,...t},this.generationCache=new A(t),this.embeddingCache=new A(t),this.completionCache=new A(t)}getGeneration(t,e){if(!this.config.cacheGenerations)return;let r=A.generateKey("generation",t,e);return this.generationCache.get(r)}setGeneration(t,e,r,s){if(!this.config.cacheGenerations)return;let n=A.generateKey("generation",t,r);this.generationCache.set(n,e,s)}getEmbedding(t,e){if(!this.config.cacheEmbeddings)return;let r=A.generateKey("embedding",t,e);return this.embeddingCache.get(r)}setEmbedding(t,e,r,s){if(!this.config.cacheEmbeddings)return;let n=A.generateKey("embedding",t,r);this.embeddingCache.set(n,e,s)}getCompletion(t,e){if(!this.config.cacheCompletions)return;let r=A.generateKey("completion",t,e);return this.completionCache.get(r)}setCompletion(t,e,r,s){if(!this.config.cacheCompletions)return;let n=A.generateKey("completion",t,r);this.completionCache.set(n,e,s)}getStats(){let t=this.generationCache.getStats(),e=this.embeddingCache.getStats(),r=this.completionCache.getStats(),s=t.hits+e.hits+r.hits,n=t.misses+e.misses+r.misses,o=s+n;return{generation:t,embedding:e,completion:r,total:{size:t.size+e.size+r.size,maxSize:this.config.maxSize*3,hits:s,misses:n,hitRate:o>0?s/o:0,evictions:t.evictions+e.evictions+r.evictions,memoryUsageBytes:t.memoryUsageBytes+e.memoryUsageBytes+r.memoryUsageBytes}}}clear(){this.generationCache.clear(),this.embeddingCache.clear(),this.completionCache.clear()}pruneExpired(){return this.generationCache.pruneExpired()+this.embeddingCache.pruneExpired()+this.completionCache.pruneExpired()}};L();function X(b,t,e,r){let s=Math.min(t*Math.pow(2,b),e),n=Math.random()*r*s;return s+n}var ne=1e3,ie=3e4;function k(b,t=ne,e=ie){return X(b,t,e,0)}var ae={model:"claude-sonnet-4-20250514",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,anthropicVersion:"2023-06-01",enableCache:!0,enableCircuitBreaker:!0},K=class{type="claude";name="Anthropic Claude";config;requestId=0;constructor(t={}){this.config={...ae,...t}}async isAvailable(){if(!this.getApiKey())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){if(!this.getApiKey())return{healthy:!1,error:"API key not configured. Set ANTHROPIC_API_KEY environment variable."};let e=Date.now();try{let r=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/messages`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:this.config.model,max_tokens:1,messages:[{role:"user",content:"Hi"}]})},5e3),s=Date.now()-e;if(!r.ok){let n=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${n}`}}return{healthy:!0,latencyMs:s,models:this.getSupportedModels(),details:{apiVersion:this.config.anthropicVersion,defaultModel:this.config.model}}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){if(!this.getApiKey())throw a("Anthropic API key not configured","API_KEY_MISSING",{provider:"claude",retryable:!1});let s=this.formatMessages(t),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`claude-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s};e?.systemPrompt&&(h.system=e.systemPrompt),e?.stopSequences&&e.stopSequences.length>0&&(h.stop_sequences=e.stopSequences);try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/v1/messages`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-m;if(!c.ok){let g=await c.json().catch(()=>({error:{message:"Unknown error"}}));throw this.handleApiError(c.status,g,n)}let p=await c.json(),d={promptTokens:p.usage.input_tokens,completionTokens:p.usage.output_tokens,totalTokens:p.usage.input_tokens+p.usage.output_tokens},f=E.calculateCost(n,d);return T.recordTokenUsage(l,"claude-provider","llm","generate",{inputTokens:p.usage.input_tokens,outputTokens:p.usage.output_tokens,totalTokens:p.usage.input_tokens+p.usage.output_tokens,estimatedCostUsd:f.totalCost}),{content:p.content.filter(g=>g.type==="text").map(g=>g.text).join(""),model:p.model,provider:"claude",usage:d,cost:f,latencyMs:u,finishReason:this.mapFinishReason(p.stop_reason),cached:!1,requestId:l}}catch(c){throw c instanceof Error&&"code"in c?c:a(c instanceof Error?c.message:"Request failed","NETWORK_ERROR",{provider:"claude",model:n,retryable:!0,cause:c})}}async embed(t,e){throw a("Claude does not support native embeddings. Use OpenAI or Ollama for embeddings.","MODEL_NOT_FOUND",{provider:"claude",retryable:!1})}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
|
|
3
|
+
|
|
4
|
+
`,"```"]});return{completion:r.content,model:r.model,provider:"claude",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return["claude-opus-4-5-20251101","claude-sonnet-4-20250514","claude-3-5-haiku-20241022","claude-3-opus-20240229","claude-3-sonnet-20240229","claude-3-haiku-20240307"]}getCostPerToken(){return E.getCostPerToken(this.config.model)}async dispose(){}getApiKey(){return this.config.apiKey??process.env.ANTHROPIC_API_KEY}getBaseUrl(){return(this.config.baseUrl??"https://api.anthropic.com").replace(/\/$/,"")}getHeaders(){return{"Content-Type":"application/json","x-api-key":this.getApiKey(),"anthropic-version":this.config.anthropicVersion??"2023-06-01"}}formatMessages(t){return typeof t=="string"?[{role:"user",content:t}]:t.filter(e=>e.role!=="system").map(e=>({role:e.role,content:e.content}))}mapFinishReason(t){switch(t){case"end_turn":return"stop";case"max_tokens":return"length";case"stop_sequence":return"stop";default:return"stop"}}handleApiError(t,e,r){let s="error"in e?e.error?.message??"Unknown API error":"Unknown API error",n="error"in e&&"type"in e.error?e.error.type:"";switch(t){case 401:throw a(s,"API_KEY_INVALID",{provider:"claude",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"claude",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n==="invalid_request_error"&&s.includes("context")?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"claude",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"claude",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"claude",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"claude",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"claude",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=v(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};L();var ce={model:"gpt-4o",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0},q=class{type="openai";name="OpenAI";config;requestId=0;constructor(t={}){this.config={...ce,...t}}async isAvailable(){if(!this.getApiKey())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){if(!this.getApiKey())return{healthy:!1,error:"API key not configured. Set OPENAI_API_KEY environment variable."};let e=Date.now();try{let r=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:this.config.model,max_tokens:1,messages:[{role:"user",content:"Hi"}]})},5e3),s=Date.now()-e;if(!r.ok){let n=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${n}`}}return{healthy:!0,latencyMs:s,models:this.getSupportedModels(),details:{defaultModel:this.config.model,organization:this.config.organization}}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){if(!this.getApiKey())throw a("OpenAI API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let s=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`openai-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s};e?.stopSequences&&e.stopSequences.length>0&&(h.stop=e.stopSequences),this.config.presencePenalty!==void 0&&(h.presence_penalty=this.config.presencePenalty),this.config.frequencyPenalty!==void 0&&(h.frequency_penalty=this.config.frequencyPenalty);try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/v1/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-m;if(!c.ok){let g=await c.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(c.status,g,n)}let p=await c.json(),d={promptTokens:p.usage.prompt_tokens,completionTokens:p.usage.completion_tokens,totalTokens:p.usage.total_tokens},f=E.calculateCost(n,d);return T.recordTokenUsage(l,"openai-provider","llm","generate",{inputTokens:p.usage.prompt_tokens,outputTokens:p.usage.completion_tokens,totalTokens:p.usage.total_tokens,estimatedCostUsd:f.totalCost}),{content:p.choices[0]?.message?.content??"",model:p.model,provider:"openai",usage:d,cost:f,latencyMs:u,finishReason:this.mapFinishReason(p.choices[0]?.finish_reason),cached:!1,requestId:l}}catch(c){throw c instanceof Error&&"code"in c?c:a(c instanceof Error?c.message:"Request failed","NETWORK_ERROR",{provider:"openai",model:n,retryable:!0,cause:c})}}async embed(t,e){if(!this.getApiKey())throw a("OpenAI API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let s=e?.model??"text-embedding-3-small",n=Date.now();try{let o=await this.fetchWithTimeout(`${this.getBaseUrl()}/v1/embeddings`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:s,input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!o.ok){let m=await o.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(o.status,m,s)}let l=await o.json();return{embedding:l.data[0].embedding,model:l.model,provider:"openai",tokenCount:l.usage.total_tokens,latencyMs:i,cached:!1}}catch(o){throw o instanceof Error&&"code"in o?o:a(o instanceof Error?o.message:"Embedding request failed","NETWORK_ERROR",{provider:"openai",model:s,retryable:!0,cause:o})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
|
|
5
|
+
|
|
6
|
+
`]});return{completion:r.content,model:r.model,provider:"openai",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-4","gpt-3.5-turbo"]}getCostPerToken(){return E.getCostPerToken(this.config.model)}async dispose(){}getApiKey(){return this.config.apiKey??process.env.OPENAI_API_KEY}getBaseUrl(){return(this.config.baseUrl??"https://api.openai.com").replace(/\/$/,"")}getHeaders(){let t={"Content-Type":"application/json",Authorization:`Bearer ${this.getApiKey()}`};return this.config.organization&&(t["OpenAI-Organization"]=this.config.organization),t}formatMessages(t,e){let r=[];if(typeof t=="string")e&&r.push({role:"system",content:e}),r.push({role:"user",content:t});else{let s=t.some(n=>n.role==="system");e&&!s&&r.push({role:"system",content:e});for(let n of t)r.push({role:n.role,content:n.content})}return r}mapFinishReason(t){switch(t){case"stop":return"stop";case"length":return"length";case"content_filter":return"content_filter";default:return"stop"}}handleApiError(t,e,r){let s=e.error?.message??"Unknown API error",n=e.error?.type??"",o=e.error?.code??"";switch(t){case 401:throw a(s,"API_KEY_INVALID",{provider:"openai",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw o==="context_length_exceeded"||n==="invalid_request_error"?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"openai",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"openai",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=v(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};var le={model:"llama3.1",baseUrl:"http://localhost:11434",maxTokens:4096,temperature:.7,timeoutMs:12e4,maxRetries:2,contextLength:4096,keepAlive:"5m",enableCache:!0,enableCircuitBreaker:!0},B=class{type="ollama";name="Ollama (Local)";config;requestId=0;availableModels=[];constructor(t={}){this.config={...le,...t}}async isAvailable(){try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){let t=Date.now();try{let e=await this.fetchWithTimeout(`${this.getBaseUrl()}/api/tags`,{method:"GET",headers:{"Content-Type":"application/json"}},5e3),r=Date.now()-t;if(!e.ok)return{healthy:!1,latencyMs:r,error:`Ollama server returned ${e.status}`};let s=await e.json();return this.availableModels=s.models?.map(o=>o.name.split(":")[0])??[],!this.availableModels.some(o=>o===this.config.model||o.startsWith(this.config.model)||this.config.model.startsWith(o))&&this.availableModels.length>0?{healthy:!0,latencyMs:r,models:this.availableModels,details:{warning:`Configured model '${this.config.model}' not found. Available: ${this.availableModels.join(", ")}`,defaultModel:this.config.model}}:{healthy:!0,latencyMs:r,models:this.availableModels,details:{defaultModel:this.config.model,modelCount:this.availableModels.length}}}catch(e){return{healthy:!1,error:`Ollama not running. Start with: ollama serve. Error: ${e instanceof Error?e.message:"Unknown"}`}}}async generate(t,e){let r=e?.model??this.config.model,s=e?.maxTokens??this.config.maxTokens??4096,n=e?.temperature??this.config.temperature??.7,o=`ollama-${++this.requestId}-${Date.now()}`,i=Date.now(),l=Array.isArray(t);try{let m,h,c,u;if(l){let y=this.formatMessages(t,e?.systemPrompt);if(m=await this.fetchWithTimeout(`${this.getBaseUrl()}/api/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r,messages:y,stream:!1,options:{temperature:n,num_predict:s,stop:e?.stopSequences}})},e?.timeoutMs??this.config.timeoutMs??12e4),!m.ok)throw await this.handleApiError(m,r);let g=await m.json();h=g.message.content,c=g.prompt_eval_count??this.estimateTokens(JSON.stringify(y)),u=g.eval_count??this.estimateTokens(h)}else{let y=e?.systemPrompt?`${e.systemPrompt}
|
|
7
|
+
|
|
8
|
+
${t}`:t;if(m=await this.fetchWithTimeout(`${this.getBaseUrl()}/api/generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r,prompt:y,stream:!1,options:{temperature:n,num_predict:s,stop:e?.stopSequences}})},e?.timeoutMs??this.config.timeoutMs??12e4),!m.ok)throw await this.handleApiError(m,r);let g=await m.json();h=g.response,c=g.prompt_eval_count??this.estimateTokens(y),u=g.eval_count??this.estimateTokens(h)}let p=Date.now()-i,d={promptTokens:c,completionTokens:u,totalTokens:c+u},f=E.calculateCost(r,d);return T.recordTokenUsage(o,"ollama-provider","llm","generate",{inputTokens:c,outputTokens:u,totalTokens:c+u,estimatedCostUsd:f.totalCost}),{content:h,model:r,provider:"ollama",usage:d,cost:f,latencyMs:p,finishReason:"stop",cached:!1,requestId:o}}catch(m){throw m instanceof Error&&"code"in m?m:a(m instanceof Error?m.message:"Request failed","NETWORK_ERROR",{provider:"ollama",model:r,retryable:!0,cause:m})}}async embed(t,e){let r=e?.model??"all-MiniLM-L6-v2",s=Date.now();try{let n=await this.fetchWithTimeout(`${this.getBaseUrl()}/api/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r,prompt:t})},e?.timeoutMs??3e4),o=Date.now()-s;if(!n.ok)throw await this.handleApiError(n,r);return{embedding:(await n.json()).embedding,model:r,provider:"ollama",tokenCount:this.estimateTokens(t),latencyMs:o,cached:!1}}catch(n){throw n instanceof Error&&"code"in n?n:a(n instanceof Error?n.message:"Embedding request failed","NETWORK_ERROR",{provider:"ollama",model:r,retryable:!0,cause:n})}}async complete(t,e){let r=e?.model??this.selectCodeModel(),s=await this.generate(t,{model:r,temperature:e?.temperature??.1,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
|
|
9
|
+
|
|
10
|
+
`,"```","// ","# "]});return{completion:s.content,model:s.model,provider:"ollama",usage:s.usage,latencyMs:s.latencyMs,cached:s.cached}}getConfig(){return{...this.config}}getSupportedModels(){let t=["llama3","llama3.1","llama3.2","codellama","mistral","mixtral","phi3","qwen2","gemma","nomic-embed-text"],e=new Set([...t,...this.availableModels]);return Array.from(e)}getCostPerToken(){return{input:0,output:0}}async dispose(){}async pullModel(t){try{let e=await this.fetchWithTimeout(`${this.getBaseUrl()}/api/pull`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,stream:!1})},6e5);if(!e.ok){let r=await e.text();throw new Error(`Failed to pull model: ${r}`)}}catch(e){throw a(`Failed to pull model ${t}: ${e instanceof Error?e.message:"Unknown"}`,"MODEL_NOT_FOUND",{provider:"ollama",model:t,retryable:!0})}}getBaseUrl(){return(this.config.baseUrl??"http://localhost:11434").replace(/\/$/,"")}formatMessages(t,e){let r=[];e&&r.push({role:"system",content:e});for(let s of t)r.push({role:s.role,content:s.content});return r}selectCodeModel(){let t=["codellama","llama3.1","llama3","mistral"];for(let e of t)if(this.availableModels.some(r=>r===e||r.startsWith(e)))return e;return this.config.model}estimateTokens(t){return Math.ceil(t.length/4)}async handleApiError(t,e){let r=await t.text().catch(()=>"Unknown error");throw t.status===404?a(`Model '${e}' not found. Pull it with: ollama pull ${e}`,"MODEL_NOT_FOUND",{provider:"ollama",model:e,retryable:!1}):t.status===500?a(`Ollama server error: ${r}`,"PROVIDER_UNAVAILABLE",{provider:"ollama",model:e,retryable:!0,retryAfterMs:1e3}):a(`Ollama API error (${t.status}): ${r}`,"UNKNOWN",{provider:"ollama",model:e,retryable:!1})}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"ollama",retryable:!0}):o}finally{clearTimeout(n)}}};L();Q();var ue={model:"anthropic/claude-3.5-sonnet",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0,baseUrl:"https://openrouter.ai/api/v1",allowFallback:!1},z={"anthropic/claude-3.5-sonnet":{input:3,output:15},"anthropic/claude-3.5-sonnet:beta":{input:3,output:15},"anthropic/claude-3-opus":{input:15,output:75},"anthropic/claude-3-sonnet":{input:3,output:15},"anthropic/claude-3-haiku":{input:.25,output:1.25},"openai/gpt-4o":{input:5,output:15},"openai/gpt-4o-mini":{input:.15,output:.6},"openai/gpt-4-turbo":{input:10,output:30},"openai/gpt-3.5-turbo":{input:.5,output:1.5},"google/gemini-pro":{input:.125,output:.375},"google/gemini-pro-1.5":{input:3.5,output:10.5},"meta-llama/llama-3.1-70b-instruct":{input:.59,output:.79},"meta-llama/llama-3.1-8b-instruct":{input:.06,output:.06},"mistralai/mistral-large":{input:2,output:6},"mistralai/mixtral-8x7b-instruct":{input:.24,output:.24},"mistralai/mistral-7b-instruct":{input:.06,output:.06},default:{input:1,output:3}},G=class{type="openai";name="OpenRouter";config;requestId=0;cachedModels=null;constructor(t={}){this.config={...ue,...t}}async isAvailable(){if(!this.getApiKey())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){if(!this.getApiKey())return{healthy:!1,error:"API key not configured. Set OPENROUTER_API_KEY environment variable."};let e=Date.now();try{let r=await this.fetchWithTimeout(`${this.getBaseUrl()}/models`,{method:"GET",headers:this.getHeaders()},5e3),s=Date.now()-e;if(!r.ok){let i=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${i}`}}let o=(await r.json()).data?.map(i=>i.id)||[];return this.cachedModels=o,{healthy:!0,latencyMs:s,models:o.slice(0,20),details:{totalModels:o.length,defaultModel:this.config.model}}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){if(!this.getApiKey())throw a("OpenRouter API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let s=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`openrouter-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s};e?.stopSequences&&e.stopSequences.length>0&&(h.stop=e.stopSequences),this.config.allowFallback!==void 0&&(h.route=this.config.allowFallback?"fallback":void 0),this.config.forceProvider&&(h.provider={order:[this.config.forceProvider]});try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-m;if(!c.ok){let g=await c.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(c.status,g,n)}let p=await c.json(),d={promptTokens:p.usage?.prompt_tokens??0,completionTokens:p.usage?.completion_tokens??0,totalTokens:p.usage?.total_tokens??0},f=this.calculateCost(n,d);return T.recordTokenUsage(l,"openrouter-provider","llm","generate",{inputTokens:d.promptTokens,outputTokens:d.completionTokens,totalTokens:d.totalTokens,estimatedCostUsd:f.totalCost}),{content:p.choices[0]?.message?.content??"",model:p.model,provider:"openai",usage:d,cost:f,latencyMs:u,finishReason:this.mapFinishReason(p.choices[0]?.finish_reason),cached:!1,requestId:l}}catch(c){throw c instanceof Error&&"code"in c?c:a(c instanceof Error?c.message:"Request failed","NETWORK_ERROR",{provider:"openai",model:n,retryable:!0,cause:c})}}async*generateStream(t,e){if(!this.getApiKey())throw a("OpenRouter API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let s=this.formatMessages(t,e?.systemPrompt),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??4096,i=e?.temperature??this.config.temperature??.7,l=`openrouter-stream-${++this.requestId}-${Date.now()}`,m=Date.now(),h={model:n,max_tokens:o,temperature:i,messages:s,stream:!0};e?.stopSequences&&e.stopSequences.length>0&&(h.stop=e.stopSequences);let c=await this.fetchWithTimeout(`${this.getBaseUrl()}/chat/completions`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4);if(!c.ok){let M=await c.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(c.status,M,n)}if(!c.body)throw a("No response body for streaming","NETWORK_ERROR",{provider:"openai",model:n,retryable:!0});let u="",p="stop",d=n,f=c.body.getReader(),y=new TextDecoder,g="";try{for(;;){let{done:M,value:V}=await f.read();if(M)break;g+=y.decode(V,{stream:!0});let x=g.split(`
|
|
11
|
+
`);g=x.pop()||"";for(let _ of x){let P=_.trim();if(!(!P||P==="data: [DONE]")&&P.startsWith("data: "))try{let I=N(P.slice(6)),Y=I.choices[0]?.delta;Y?.content&&(u+=Y.content,yield Y.content),I.choices[0]?.finish_reason&&(p=this.mapFinishReason(I.choices[0].finish_reason)),I.model&&(d=I.model)}catch{}}}}finally{f.releaseLock()}let C=Date.now()-m,R=Math.ceil(JSON.stringify(s).length/4),O=Math.ceil(u.length/4),w={promptTokens:R,completionTokens:O,totalTokens:R+O},S=this.calculateCost(n,w);return T.recordTokenUsage(l,"openrouter-provider","llm","generate-stream",{inputTokens:w.promptTokens,outputTokens:w.completionTokens,totalTokens:w.totalTokens,estimatedCostUsd:S.totalCost}),{content:u,model:d,provider:"openai",usage:w,cost:S,latencyMs:C,finishReason:p,cached:!1,requestId:l}}async embed(t,e){if(!this.getApiKey())throw a("OpenRouter API key not configured","API_KEY_MISSING",{provider:"openai",retryable:!1});let s=e?.model??"openai/text-embedding-3-small",n=Date.now();try{let o=await this.fetchWithTimeout(`${this.getBaseUrl()}/embeddings`,{method:"POST",headers:this.getHeaders(),body:JSON.stringify({model:s,input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!o.ok){let m=await o.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(o.status,m,s)}let l=await o.json();return{embedding:l.data[0].embedding,model:l.model,provider:"openai",tokenCount:l.usage.total_tokens,latencyMs:i,cached:!1}}catch(o){throw o instanceof Error&&"code"in o?o:a(o instanceof Error?o.message:"Embedding request failed","NETWORK_ERROR",{provider:"openai",model:s,retryable:!0,cause:o})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
|
|
12
|
+
|
|
13
|
+
`]});return{completion:r.content,model:r.model,provider:"openai",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return this.cachedModels?this.cachedModels:["anthropic/claude-3.5-sonnet","anthropic/claude-3-opus","anthropic/claude-3-sonnet","anthropic/claude-3-haiku","openai/gpt-4o","openai/gpt-4o-mini","openai/gpt-4-turbo","openai/gpt-3.5-turbo","google/gemini-pro","google/gemini-pro-1.5","meta-llama/llama-3.1-70b-instruct","meta-llama/llama-3.1-8b-instruct","mistralai/mistral-large","mistralai/mixtral-8x7b-instruct"]}getCostPerToken(){let t=z[this.config.model]||z.default;return{input:t.input/1e6,output:t.output/1e6}}async dispose(){this.cachedModels=null}calculateCost(t,e){let r=z[t]||z.default,s=e.promptTokens/1e6*r.input,n=e.completionTokens/1e6*r.output;return{inputCost:s,outputCost:n,totalCost:s+n,currency:"USD"}}getApiKey(){return this.config.apiKey??process.env.OPENROUTER_API_KEY}getBaseUrl(){return(this.config.baseUrl??"https://openrouter.ai/api/v1").replace(/\/$/,"")}getHeaders(){let t={"Content-Type":"application/json",Authorization:`Bearer ${this.getApiKey()}`};return this.config.siteUrl&&(t["HTTP-Referer"]=this.config.siteUrl),this.config.siteName&&(t["X-Title"]=this.config.siteName),t}formatMessages(t,e){let r=[];if(typeof t=="string")e&&r.push({role:"system",content:e}),r.push({role:"user",content:t});else{let s=t.some(n=>n.role==="system");e&&!s&&r.push({role:"system",content:e});for(let n of t)r.push({role:n.role,content:n.content})}return r}mapFinishReason(t){switch(t){case"stop":return"stop";case"length":return"length";case"content_filter":return"content_filter";case"tool_calls":return"stop";default:return"stop"}}handleApiError(t,e,r){let s=e.error?.message??"Unknown API error",n=e.error?.type??"",o=e.error?.code;switch(t){case 401:throw a(s,"API_KEY_INVALID",{provider:"openai",model:r,retryable:!1});case 402:throw a(s,"COST_LIMIT_EXCEEDED",{provider:"openai",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw o==="context_length_exceeded"||n==="invalid_request_error"?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"openai",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1});case 404:throw a(s,"MODEL_NOT_FOUND",{provider:"openai",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"openai",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=v(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};L();Q();var pe={model:"gemini-1.5-pro",maxTokens:8192,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0,baseUrl:"https://generativelanguage.googleapis.com/v1beta",safetyThreshold:"BLOCK_MEDIUM_AND_ABOVE"},$={"gemini-pro":{input:.5,output:1.5},"gemini-1.0-pro":{input:.5,output:1.5},"gemini-1.5-pro":{input:3.5,output:10.5},"gemini-1.5-pro-latest":{input:3.5,output:10.5},"gemini-1.5-flash":{input:.075,output:.3},"gemini-1.5-flash-latest":{input:.075,output:.3},"gemini-2.0-flash-exp":{input:.075,output:.3},"gemini-ultra":{input:7,output:21},"gemini-1.0-ultra":{input:7,output:21},default:{input:1,output:3}},W=class{type="gemini";name="Google Gemini";config;requestId=0;cachedModels=null;constructor(t={}){this.config={...pe,...t}}async isAvailable(){if(!this.getApiKey())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){let t=this.getApiKey();if(!t)return{healthy:!1,error:"API key not configured. Set GOOGLE_AI_API_KEY or GEMINI_API_KEY environment variable."};let e=Date.now();try{let r=await this.fetchWithTimeout(`${this.getBaseUrl()}/models?key=${t}`,{method:"GET",headers:{"Content-Type":"application/json"}},5e3),s=Date.now()-e;if(!r.ok){let i=await r.text();return{healthy:!1,latencyMs:s,error:`API error: ${r.status} - ${i}`}}let o=(await r.json()).models?.filter(i=>i.supportedGenerationMethods?.includes("generateContent")).map(i=>i.name.replace("models/",""))||[];return this.cachedModels=o,{healthy:!0,latencyMs:s,models:o.slice(0,20),details:{totalModels:o.length,defaultModel:this.config.model}}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){let r=this.getApiKey();if(!r)throw a("Gemini API key not configured","API_KEY_MISSING",{provider:"gemini",retryable:!1});let s=this.formatContents(t),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??8192,i=e?.temperature??this.config.temperature??.7,l=`gemini-${++this.requestId}-${Date.now()}`,m=Date.now(),h={contents:s,generationConfig:{maxOutputTokens:o,temperature:i,topP:this.config.topP}};e?.systemPrompt&&(h.systemInstruction={parts:[{text:e.systemPrompt}]}),e?.stopSequences&&e.stopSequences.length>0&&(h.generationConfig.stopSequences=e.stopSequences);try{let c=await this.fetchWithRetry(`${this.getBaseUrl()}/models/${n}:generateContent?key=${r}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),u=Date.now()-m;if(!c.ok){let g=await c.json().catch(()=>({error:{message:"Unknown error",code:0,status:"UNKNOWN"}}));throw this.handleApiError(c.status,g,n)}let p=await c.json(),d={promptTokens:p.usageMetadata?.promptTokenCount??0,completionTokens:p.usageMetadata?.candidatesTokenCount??0,totalTokens:p.usageMetadata?.totalTokenCount??0},f=this.calculateCost(n,d);return T.recordTokenUsage(l,"gemini-provider","llm","generate",{inputTokens:d.promptTokens,outputTokens:d.completionTokens,totalTokens:d.totalTokens,estimatedCostUsd:f.totalCost}),{content:p.candidates[0]?.content?.parts?.map(g=>g.text??"").join("")??"",model:p.modelVersion??n,provider:"gemini",usage:d,cost:f,latencyMs:u,finishReason:this.mapFinishReason(p.candidates[0]?.finishReason),cached:!1,requestId:l}}catch(c){throw c instanceof Error&&"code"in c?c:a(c instanceof Error?c.message:"Request failed","NETWORK_ERROR",{provider:"gemini",model:n,retryable:!0,cause:c})}}async*generateStream(t,e){let r=this.getApiKey();if(!r)throw a("Gemini API key not configured","API_KEY_MISSING",{provider:"gemini",retryable:!1});let s=this.formatContents(t),n=e?.model??this.config.model,o=e?.maxTokens??this.config.maxTokens??8192,i=e?.temperature??this.config.temperature??.7,l=`gemini-stream-${++this.requestId}-${Date.now()}`,m=Date.now(),h={contents:s,generationConfig:{maxOutputTokens:o,temperature:i}};e?.systemPrompt&&(h.systemInstruction={parts:[{text:e.systemPrompt}]});let c=await this.fetchWithTimeout(`${this.getBaseUrl()}/models/${n}:streamGenerateContent?key=${r}&alt=sse`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h)},e?.timeoutMs??this.config.timeoutMs??6e4);if(!c.ok){let w=await c.json().catch(()=>({error:{message:"Unknown error",code:0,status:"UNKNOWN"}}));throw this.handleApiError(c.status,w,n)}if(!c.body)throw a("No response body for streaming","NETWORK_ERROR",{provider:"gemini",model:n,retryable:!0});let u="",p="stop",d={promptTokens:0,completionTokens:0,totalTokens:0},f=c.body.getReader(),y=new TextDecoder,g="";try{for(;;){let{done:w,value:S}=await f.read();if(w)break;g+=y.decode(S,{stream:!0});let M=g.split(`
|
|
14
|
+
`);g=M.pop()||"";for(let V of M){let x=V.trim();if(!(!x||!x.startsWith("data: ")))try{let _=N(x.slice(6)),P=_.candidates?.[0]?.content?.parts?.map(I=>I.text??"").join("")??"";P&&(u+=P,yield P),_.candidates?.[0]?.finishReason&&(p=this.mapFinishReason(_.candidates[0].finishReason)),_.usageMetadata&&(d={promptTokens:_.usageMetadata.promptTokenCount,completionTokens:_.usageMetadata.candidatesTokenCount,totalTokens:_.usageMetadata.totalTokenCount})}catch{}}}}finally{f.releaseLock()}let C=Date.now()-m,R=d.totalTokens>0?d:{promptTokens:Math.ceil(JSON.stringify(s).length/4),completionTokens:Math.ceil(u.length/4),totalTokens:0};R.totalTokens=R.promptTokens+R.completionTokens;let O=this.calculateCost(n,R);return T.recordTokenUsage(l,"gemini-provider","llm","generate-stream",{inputTokens:R.promptTokens,outputTokens:R.completionTokens,totalTokens:R.totalTokens,estimatedCostUsd:O.totalCost}),{content:u,model:n,provider:"gemini",usage:R,cost:O,latencyMs:C,finishReason:p,cached:!1,requestId:l}}async embed(t,e){let r=this.getApiKey();if(!r)throw a("Gemini API key not configured","API_KEY_MISSING",{provider:"gemini",retryable:!1});let s=e?.model??"text-embedding-004",n=Date.now();try{let o=await this.fetchWithTimeout(`${this.getBaseUrl()}/models/${s}:embedContent?key=${r}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:{parts:[{text:t}]}})},e?.timeoutMs??this.config.timeoutMs??3e4),i=Date.now()-n;if(!o.ok){let m=await o.json().catch(()=>({error:{message:"Unknown error",code:0,status:"UNKNOWN"}}));throw this.handleApiError(o.status,m,s)}return{embedding:(await o.json()).embedding.values,model:s,provider:"gemini",tokenCount:Math.ceil(t.length/4),latencyMs:i,cached:!1}}catch(o){throw o instanceof Error&&"code"in o?o:a(o instanceof Error?o.message:"Embedding request failed","NETWORK_ERROR",{provider:"gemini",model:s,retryable:!0,cause:o})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
|
|
15
|
+
|
|
16
|
+
`]});return{completion:r.content,model:r.model,provider:"gemini",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return this.cachedModels?this.cachedModels:["gemini-pro","gemini-1.0-pro","gemini-1.5-pro","gemini-1.5-pro-latest","gemini-1.5-flash","gemini-1.5-flash-latest","gemini-2.0-flash-exp","gemini-ultra"]}getCostPerToken(){let t=$[this.config.model]||$.default;return{input:t.input/1e6,output:t.output/1e6}}async dispose(){this.cachedModels=null}calculateCost(t,e){let r=$[t]||$.default,s=e.promptTokens/1e6*r.input,n=e.completionTokens/1e6*r.output;return{inputCost:s,outputCost:n,totalCost:s+n,currency:"USD"}}getApiKey(){return this.config.apiKey??process.env.GOOGLE_AI_API_KEY??process.env.GEMINI_API_KEY}getBaseUrl(){return(this.config.baseUrl??"https://generativelanguage.googleapis.com/v1beta").replace(/\/$/,"")}formatContents(t){return typeof t=="string"?[{role:"user",parts:[{text:t}]}]:t.filter(e=>e.role!=="system").map(e=>({role:e.role==="assistant"?"model":"user",parts:[{text:e.content}]}))}mapFinishReason(t){switch(t){case"STOP":return"stop";case"MAX_TOKENS":return"length";case"SAFETY":return"content_filter";case"RECITATION":return"content_filter";default:return"stop"}}handleApiError(t,e,r){let s=e.error?.message??"Unknown API error",n=e.error?.status??"";switch(t){case 400:throw s.includes("token")||s.includes("length")||s.includes("exceeds")?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"gemini",model:r,retryable:!1}):s.includes("API key")?a(s,"API_KEY_INVALID",{provider:"gemini",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"gemini",model:r,retryable:!1});case 401:case 403:throw a(s,"API_KEY_INVALID",{provider:"gemini",model:r,retryable:!1});case 404:throw a(s,"MODEL_NOT_FOUND",{provider:"gemini",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"gemini",model:r,retryable:!0,retryAfterMs:6e4});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"gemini",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"gemini",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"gemini",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=v(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};L();var de={model:"gpt-4o",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0,apiVersion:"2024-02-15-preview"},j=class{type="azure-openai";name="Azure OpenAI";config;requestId=0;constructor(t){this.config={...de,...t}}async isAvailable(){let t=this.getEndpoint(),e=this.getApiKey()||this.getAzureAdToken();if(!t||!e||!this.config.deploymentId)return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){let t=this.getEndpoint(),e=this.getApiKey()||this.getAzureAdToken();if(!t)return{healthy:!1,error:"Azure endpoint not configured. Set AZURE_OPENAI_ENDPOINT environment variable."};if(!e)return{healthy:!1,error:"Azure authentication not configured. Set AZURE_OPENAI_API_KEY or provide azureAdToken."};if(!this.config.deploymentId)return{healthy:!1,error:"Deployment ID not configured. Set AZURE_OPENAI_DEPLOYMENT or provide deploymentId."};let r=Date.now();try{let s=await this.fetchWithTimeout(this.buildUrl("chat/completions"),{method:"POST",headers:this.getHeaders(),body:JSON.stringify({max_tokens:1,messages:[{role:"user",content:"Hi"}]})},5e3),n=Date.now()-r;if(!s.ok){let o=await s.text();return{healthy:!1,latencyMs:n,error:`API error: ${s.status} - ${o}`}}return{healthy:!0,latencyMs:n,models:this.getSupportedModels(),details:{endpoint:this.getEndpoint(),deploymentId:this.config.deploymentId,apiVersion:this.config.apiVersion,authType:this.getAzureAdToken()?"Azure AD":"API Key"}}}catch(s){return{healthy:!1,error:s instanceof Error?s.message:"Unknown error"}}}async generate(t,e){let r=this.getEndpoint(),s=this.getApiKey()||this.getAzureAdToken();if(!r||!s)throw a("Azure OpenAI not configured","API_KEY_MISSING",{provider:"azure-openai",retryable:!1});let n=this.formatMessages(t,e?.systemPrompt),o=e?.model??this.config.model??"gpt-4o",i=e?.maxTokens??this.config.maxTokens??4096,l=e?.temperature??this.config.temperature??.7,m=`azure-openai-${++this.requestId}-${Date.now()}`,h=Date.now(),c={max_tokens:i,temperature:l,messages:n};e?.stopSequences&&e.stopSequences.length>0&&(c.stop=e.stopSequences),this.config.presencePenalty!==void 0&&(c.presence_penalty=this.config.presencePenalty),this.config.frequencyPenalty!==void 0&&(c.frequency_penalty=this.config.frequencyPenalty);try{let u=await this.fetchWithRetry(this.buildUrl("chat/completions"),{method:"POST",headers:this.getHeaders(),body:JSON.stringify(c)},e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),p=Date.now()-h;if(!u.ok){let C=await u.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(u.status,C,o)}let d=await u.json(),f={promptTokens:d.usage.prompt_tokens,completionTokens:d.usage.completion_tokens,totalTokens:d.usage.total_tokens},y=E.calculateCost(o,f);return T.recordTokenUsage(m,"azure-openai-provider","llm","generate",{inputTokens:d.usage.prompt_tokens,outputTokens:d.usage.completion_tokens,totalTokens:d.usage.total_tokens,estimatedCostUsd:y.totalCost}),{content:d.choices[0]?.message?.content??"",model:d.model,provider:"azure-openai",usage:f,cost:y,latencyMs:p,finishReason:this.mapFinishReason(d.choices[0]?.finish_reason),cached:!1,requestId:m}}catch(u){throw u instanceof Error&&"code"in u?u:a(u instanceof Error?u.message:"Request failed","NETWORK_ERROR",{provider:"azure-openai",model:o,retryable:!0,cause:u})}}async embed(t,e){let r=this.getEndpoint(),s=this.getApiKey()||this.getAzureAdToken();if(!r||!s)throw a("Azure OpenAI not configured","API_KEY_MISSING",{provider:"azure-openai",retryable:!1});let n=e?.model??this.config.deploymentId,o=Date.now();try{let i=await this.fetchWithTimeout(this.buildUrl("embeddings",n),{method:"POST",headers:this.getHeaders(),body:JSON.stringify({input:t})},e?.timeoutMs??this.config.timeoutMs??3e4),l=Date.now()-o;if(!i.ok){let h=await i.json().catch(()=>({error:{message:"Unknown error",type:"unknown",code:null}}));throw this.handleApiError(i.status,h,n)}let m=await i.json();return{embedding:m.data[0].embedding,model:m.model,provider:"azure-openai",tokenCount:m.usage.total_tokens,latencyMs:l,cached:!1}}catch(i){throw i instanceof Error&&"code"in i?i:a(i instanceof Error?i.message:"Embedding request failed","NETWORK_ERROR",{provider:"azure-openai",model:n,retryable:!0,cause:i})}}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
|
|
17
|
+
|
|
18
|
+
`]});return{completion:r.content,model:r.model,provider:"azure-openai",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-4","gpt-35-turbo","text-embedding-ada-002","text-embedding-3-small","text-embedding-3-large"]}getCostPerToken(){return E.getCostPerToken(this.config.model??"gpt-4o")}async dispose(){}getApiKey(){return this.config.apiKey??process.env.AZURE_OPENAI_API_KEY}getAzureAdToken(){return this.config.azureAdToken}getEndpoint(){return(this.config.endpoint??process.env.AZURE_OPENAI_ENDPOINT)?.replace(/\/$/,"")}getApiVersion(){return this.config.apiVersion??process.env.AZURE_OPENAI_API_VERSION??"2024-02-15-preview"}buildUrl(t,e){let r=this.getEndpoint(),s=e??this.config.deploymentId,n=this.getApiVersion();return`${r}/openai/deployments/${s}/${t}?api-version=${n}`}getHeaders(){let t={"Content-Type":"application/json"},e=this.getAzureAdToken();if(e)t.Authorization=`Bearer ${e}`;else{let r=this.getApiKey();r&&(t["api-key"]=r)}return t}formatMessages(t,e){let r=[];if(typeof t=="string")e&&r.push({role:"system",content:e}),r.push({role:"user",content:t});else{let s=t.some(n=>n.role==="system");e&&!s&&r.push({role:"system",content:e});for(let n of t)r.push({role:n.role,content:n.content})}return r}mapFinishReason(t){switch(t){case"stop":return"stop";case"length":return"length";case"content_filter":return"content_filter";default:return"stop"}}handleApiError(t,e,r){let s=e.error?.message??"Unknown API error",n=e.error?.code??"",o=e.error?.innererror?.code??"";switch(t){case 401:throw a(s,"API_KEY_INVALID",{provider:"azure-openai",model:r,retryable:!1});case 403:throw a(s,"API_KEY_INVALID",{provider:"azure-openai",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"azure-openai",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n==="context_length_exceeded"||o==="context_length_exceeded"?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"azure-openai",model:r,retryable:!1}):o==="content_filter"?a(s,"CONTENT_FILTERED",{provider:"azure-openai",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"azure-openai",model:r,retryable:!1});case 404:throw a(`Deployment not found: ${r}`,"MODEL_NOT_FOUND",{provider:"azure-openai",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"azure-openai",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"azure-openai",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"azure-openai",retryable:!0}):o}finally{clearTimeout(n)}}async fetchWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)try{let i=await this.fetchWithTimeout(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=v(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}sleep(t){return new Promise(e=>setTimeout(e,t))}};L();var me={model:"anthropic.claude-3-5-sonnet-20241022-v2:0",region:"us-east-1",maxTokens:4096,temperature:.7,timeoutMs:6e4,maxRetries:3,enableCache:!0,enableCircuitBreaker:!0},Z={"claude-opus-4-5-20251101":"anthropic.claude-opus-4-5-v1:0","claude-opus-4-5":"anthropic.claude-opus-4-5-v1:0","claude-opus-4-20250514":"anthropic.claude-opus-4-v1:0","claude-opus-4":"anthropic.claude-opus-4-v1:0","claude-sonnet-4-5-20250929":"anthropic.claude-sonnet-4-5-v2:0","claude-sonnet-4-5":"anthropic.claude-sonnet-4-5-v2:0","claude-sonnet-4-20250514":"anthropic.claude-sonnet-4-v1:0","claude-sonnet-4":"anthropic.claude-sonnet-4-v1:0","claude-3-5-haiku-20241022":"anthropic.claude-3-5-haiku-v1:0","claude-haiku-3-5":"anthropic.claude-3-5-haiku-v1:0","claude-3-opus-20240229":"anthropic.claude-3-opus-20240229-v1:0","claude-3-sonnet-20240229":"anthropic.claude-3-sonnet-20240229-v1:0","claude-3-haiku-20240307":"anthropic.claude-3-haiku-20240307-v1:0","claude-3-5-sonnet-20241022":"anthropic.claude-3-5-sonnet-20241022-v2:0"},Hr=Object.fromEntries(Object.entries(Z).map(([b,t])=>[t,b])),F=class{type="bedrock";name="AWS Bedrock";config;requestId=0;constructor(t={}){this.config={...me,...t}}async isAvailable(){if(!this.getCredentials())return!1;try{return(await this.healthCheck()).healthy}catch{return!1}}async healthCheck(){if(!this.getCredentials())return{healthy:!1,error:"AWS credentials not configured. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables, or use IAM role."};let e=Date.now();try{let r=this.mapToBedrockModel(this.config.model),s=await this.invokeModel(r,{anthropic_version:"bedrock-2023-05-31",max_tokens:1,messages:[{role:"user",content:"Hi"}]},5e3),n=Date.now()-e;if(!s.ok){let o=await s.text();return{healthy:!1,latencyMs:n,error:`API error: ${s.status} - ${o}`}}return{healthy:!0,latencyMs:n,models:this.getSupportedModels(),details:{region:this.getRegion(),defaultModel:this.config.model}}}catch(r){return{healthy:!1,error:r instanceof Error?r.message:"Unknown error"}}}async generate(t,e){if(!this.getCredentials())throw a("AWS credentials not configured","API_KEY_MISSING",{provider:"bedrock",retryable:!1});let s=this.formatMessages(t),n=e?.model??this.config.model,o=this.mapToBedrockModel(n),i=e?.maxTokens??this.config.maxTokens??4096,l=e?.temperature??this.config.temperature??.7,m=`bedrock-${++this.requestId}-${Date.now()}`,h=Date.now(),c={anthropic_version:"bedrock-2023-05-31",max_tokens:i,messages:s};l!==void 0&&(c.temperature=Math.min(Math.max(l,0),1)),e?.systemPrompt&&(c.system=e.systemPrompt),e?.stopSequences&&e.stopSequences.length>0&&(c.stop_sequences=e.stopSequences);try{let u=await this.invokeModelWithRetry(o,c,e?.timeoutMs??this.config.timeoutMs??6e4,this.config.maxRetries??3),p=Date.now()-h;if(!u.ok){let C=await u.json().catch(()=>({message:"Unknown error"}));throw this.handleApiError(u.status,C,n)}let d=await u.json(),f={promptTokens:d.usage.input_tokens,completionTokens:d.usage.output_tokens,totalTokens:d.usage.input_tokens+d.usage.output_tokens},y=E.calculateCost(o,f);return T.recordTokenUsage(m,"bedrock-provider","llm","generate",{inputTokens:d.usage.input_tokens,outputTokens:d.usage.output_tokens,totalTokens:d.usage.input_tokens+d.usage.output_tokens,estimatedCostUsd:y.totalCost}),{content:d.content.filter(C=>C.type==="text").map(C=>C.text).join(""),model:o,provider:"bedrock",usage:f,cost:y,latencyMs:p,finishReason:this.mapFinishReason(d.stop_reason),cached:!1,requestId:m}}catch(u){throw u instanceof Error&&"code"in u?u:a(u instanceof Error?u.message:"Request failed","NETWORK_ERROR",{provider:"bedrock",model:n,retryable:!0,cause:u})}}async embed(t,e){throw a("Bedrock Claude models do not support native embeddings. Use Bedrock Titan or Cohere for embeddings.","MODEL_NOT_FOUND",{provider:"bedrock",retryable:!1})}async complete(t,e){let r=await this.generate(t,{model:e?.model,temperature:e?.temperature??.2,maxTokens:e?.maxTokens??256,stopSequences:e?.stopSequences??[`
|
|
19
|
+
|
|
20
|
+
`,"```"]});return{completion:r.content,model:r.model,provider:"bedrock",usage:r.usage,latencyMs:r.latencyMs,cached:r.cached}}getConfig(){return{...this.config}}getSupportedModels(){return Object.keys(Z)}getCostPerToken(){let t=this.mapToBedrockModel(this.config.model);return E.getCostPerToken(t)}async dispose(){}getCredentials(){let t=this.config.accessKeyId??process.env.AWS_ACCESS_KEY_ID,e=this.config.secretAccessKey??process.env.AWS_SECRET_ACCESS_KEY,r=this.config.sessionToken??process.env.AWS_SESSION_TOKEN;return!t||!e?null:{region:this.getRegion(),service:"bedrock",accessKeyId:t,secretAccessKey:e,sessionToken:r}}getRegion(){return this.config.region??process.env.AWS_REGION??process.env.AWS_DEFAULT_REGION??"us-east-1"}mapToBedrockModel(t){if(t.startsWith("anthropic."))return t;let e=Z[t];return e||t}getEndpointUrl(t){let e=this.getRegion();return`${this.config.baseUrl??`https://bedrock-runtime.${e}.amazonaws.com`}/model/${t}/invoke`}async invokeModel(t,e,r){let s=this.getCredentials();if(!s)throw a("AWS credentials not configured","API_KEY_MISSING",{provider:"bedrock",retryable:!1});let n=this.getEndpointUrl(t),o=JSON.stringify(e),i=await this.signRequest(n,o,s);return this.fetchWithTimeout(n,{method:"POST",headers:i,body:o},r)}async invokeModelWithRetry(t,e,r,s){let n;for(let o=0;o<s;o++)try{let i=await this.invokeModel(t,e,r);if(i.status>=400&&i.status<500&&i.status!==429)return i;if((i.status>=500||i.status===429)&&o<s-1){let l=k(o);await this.sleep(l);continue}return i}catch(i){if(n=v(i),o<s-1){let l=k(o);await this.sleep(l)}}throw n??new Error("Request failed after retries")}async signRequest(t,e,r){let s=new URL(t),o=new Date().toISOString().replace(/[:-]|\.\d{3}/g,""),i=o.substring(0,8),l={"Content-Type":"application/json",Host:s.host,"X-Amz-Date":o};r.sessionToken&&(l["X-Amz-Security-Token"]=r.sessionToken);let m="POST",h=s.pathname,c="",u=Object.keys(l).map(M=>M.toLowerCase()).sort().join(";"),p=Object.keys(l).map(M=>`${M.toLowerCase()}:${l[M].trim()}`).sort().join(`
|
|
21
|
+
`)+`
|
|
22
|
+
`,d=await this.sha256(e),f=[m,h,c,p,u,d].join(`
|
|
23
|
+
`),y="AWS4-HMAC-SHA256",g=`${i}/${r.region}/${r.service}/aws4_request`,C=await this.sha256(f),R=[y,o,g,C].join(`
|
|
24
|
+
`),O=await this.getSignatureKey(r.secretAccessKey,i,r.region,r.service),w=await this.hmacHex(O,R),S=`${y} Credential=${r.accessKeyId}/${g}, SignedHeaders=${u}, Signature=${w}`;return{...l,Authorization:S}}async sha256(t){let r=new TextEncoder().encode(t),s=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(s)).map(n=>n.toString(16).padStart(2,"0")).join("")}async hmac(t,e){let r=new TextEncoder,s=t instanceof Uint8Array?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength):t,n=await crypto.subtle.importKey("raw",s,{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return crypto.subtle.sign("HMAC",n,r.encode(e))}async hmacHex(t,e){let r=await this.hmac(t,e);return Array.from(new Uint8Array(r)).map(s=>s.toString(16).padStart(2,"0")).join("")}async getSignatureKey(t,e,r,s){let n=new TextEncoder,o=await this.hmac(n.encode(`AWS4${t}`),e),i=await this.hmac(o,r),l=await this.hmac(i,s);return this.hmac(l,"aws4_request")}formatMessages(t){return typeof t=="string"?[{role:"user",content:t}]:t.filter(e=>e.role!=="system").map(e=>({role:e.role,content:e.content}))}mapFinishReason(t){switch(t){case"end_turn":return"stop";case"max_tokens":return"length";case"stop_sequence":return"stop";default:return"stop"}}handleApiError(t,e,r){let s=e.message??"Unknown API error",n=e.__type??"";switch(t){case 401:case 403:throw a(s,"API_KEY_INVALID",{provider:"bedrock",model:r,retryable:!1});case 429:throw a(s,"RATE_LIMITED",{provider:"bedrock",model:r,retryable:!0,retryAfterMs:6e4});case 400:throw n.includes("ValidationException")&&s.includes("token")?a(s,"CONTEXT_LENGTH_EXCEEDED",{provider:"bedrock",model:r,retryable:!1}):a(s,"UNKNOWN",{provider:"bedrock",model:r,retryable:!1});case 500:case 502:case 503:throw a(s,"PROVIDER_UNAVAILABLE",{provider:"bedrock",model:r,retryable:!0,retryAfterMs:5e3});default:throw a(s,"UNKNOWN",{provider:"bedrock",model:r,retryable:!1})}}async fetchWithTimeout(t,e,r){let s=new AbortController,n=setTimeout(()=>s.abort(),r);try{return await fetch(t,{...e,signal:s.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?a("Request timed out","TIMEOUT",{provider:"bedrock",retryable:!0}):o}finally{clearTimeout(n)}}sleep(t){return new Promise(e=>setTimeout(e,t))}};L();var he={primary:"claude",fallbacks:["openai","ollama"],loadBalancing:"round-robin",providers:{},global:{enableCostTracking:!0,enableMetrics:!0}},H=class{providers=new Map;circuitBreakers;cache;costTracker;config;metrics=new Map;roundRobinIndex=0;initialized=!1;constructor(t={},e){this.config={...he,...t},this.circuitBreakers=new U(e?.circuitBreakerConfig),this.cache=new D(e?.cacheConfig),this.costTracker=e?.costTracker??te()}async initialize(){if(!this.initialized){await this.createProviders();for(let t of this.providers.keys())this.initializeMetrics(t);this.initialized=!0}}async generate(t,e){if(await this.ensureInitialized(),!e?.skipCache){let s=typeof t=="string"?t:JSON.stringify(t),n=this.cache.getGeneration(s,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens,systemPrompt:e?.systemPrompt});if(n)return{...n,cached:!0}}let r=await this.executeWithFailover("generate",async s=>s.generate(t,e),e?.preferredProvider);if(!e?.skipCache){let s=typeof t=="string"?t:JSON.stringify(t);this.cache.setGeneration(s,r,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens,systemPrompt:e?.systemPrompt})}return this.costTracker.recordUsage(r.provider,r.model,r.usage,r.requestId),r}async embed(t,e){if(await this.ensureInitialized(),!e?.skipCache){let n=this.cache.getEmbedding(t,{model:e?.model});if(n)return{...n,cached:!0}}let r=["openai","ollama"],s=await this.executeWithFailover("embed",async n=>n.embed(t,e),r.find(n=>this.providers.has(n)));return e?.skipCache||this.cache.setEmbedding(t,s,{model:e?.model}),s}async complete(t,e){if(await this.ensureInitialized(),!e?.skipCache){let s=this.cache.getCompletion(t,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens});if(s)return{...s,cached:!0}}let r=await this.executeWithFailover("complete",async s=>s.complete(t,e));return e?.skipCache||this.cache.setCompletion(t,r,{model:e?.model,temperature:e?.temperature,maxTokens:e?.maxTokens}),r}async healthCheck(){await this.ensureInitialized();let t={};for(let[e,r]of this.providers)t[e]=await r.healthCheck();return t}getProvider(t){return this.providers.get(t)}getAvailableProviders(){let t=[];for(let[e,r]of this.providers)this.circuitBreakers.getBreaker(e).canExecute()&&t.push(e);return t}getMetrics(){let t={};for(let[e,r]of this.metrics){let s=this.circuitBreakers.getBreaker(e),n=r.latencies.slice(-100);t[e]={provider:e,totalRequests:r.totalRequests,successCount:r.successCount,failureCount:r.failureCount,avgLatencyMs:this.calculateAverage(n),p95LatencyMs:this.calculatePercentile(n,95),p99LatencyMs:this.calculatePercentile(n,99),totalCost:r.totalCost,totalTokens:r.totalTokens,circuitState:s.getState()}}return t}getCacheStats(){return this.cache.getStats()}getCostSummary(t="day"){return this.costTracker.getSummary(t)}clearCache(){this.cache.clear()}resetCircuitBreakers(){this.circuitBreakers.resetAll()}async dispose(){for(let t of this.providers.values())await t.dispose();this.providers.clear(),this.metrics.clear(),this.cache.clear(),this.initialized=!1}async createProviders(){let t=new Set([this.config.primary,...this.config.fallbacks]);for(let e of t)try{let r=this.createProvider(e);this.providers.set(e,r)}catch(r){console.warn(`Failed to create ${e} provider: ${r instanceof Error?r.message:"Unknown"}`)}if(this.providers.size===0)throw a("No LLM providers could be initialized","PROVIDER_UNAVAILABLE",{retryable:!1})}createProvider(t){switch(t){case"claude":return new K(this.config.providers.claude);case"openai":return new q(this.config.providers.openai);case"ollama":return new B(this.config.providers.ollama);case"openrouter":return new G(this.config.providers.openrouter);case"gemini":return new W(this.config.providers.gemini);case"azure-openai":{let e=this.config.providers["azure-openai"];if(!e)throw new Error("Azure OpenAI provider requires configuration with deploymentId");return new j(e)}case"bedrock":return new F(this.config.providers.bedrock);default:throw new Error(`Unknown provider type: ${t}`)}}initializeMetrics(t){this.metrics.set(t,{totalRequests:0,successCount:0,failureCount:0,latencies:[],totalCost:0,totalTokens:0})}async executeWithFailover(t,e,r){let s=this.selectProvider(r),n=new Set,o,i=[s.provider.type,...this.config.fallbacks.filter(l=>l!==s.provider.type)];for(let l of i){if(n.has(l))continue;n.add(l);let m=this.providers.get(l);if(!m)continue;let h=this.circuitBreakers.getBreaker(l);if(h.canExecute())try{let c=Date.now(),u=await h.execute(()=>e(m)),p=Date.now()-c;return this.recordSuccess(l,p,u),u}catch(c){if(o=v(c),this.recordFailure(l,o),"retryable"in o&&!o.retryable)throw o}}throw a(`All providers failed for ${t}: ${o?.message??"Unknown error"}`,"PROVIDER_UNAVAILABLE",{retryable:!1,cause:o})}selectProvider(t){if(t){let r=this.providers.get(t),s=this.circuitBreakers.getBreaker(t);if(r&&s.canExecute())return{provider:r,reason:"primary"}}let e=this.getAvailableProviders();if(e.length===0){let r=this.providers.get(this.config.primary);if(r)return{provider:r,reason:"fallback"};throw a("No providers available","PROVIDER_UNAVAILABLE",{retryable:!1})}switch(this.config.loadBalancing){case"round-robin":return this.selectRoundRobin(e);case"least-cost":return this.selectLeastCost(e);case"least-latency":return this.selectLeastLatency(e);case"random":return this.selectRandom(e);default:return this.selectRoundRobin(e)}}selectRoundRobin(t){this.roundRobinIndex=(this.roundRobinIndex+1)%t.length;let e=t[this.roundRobinIndex];return{provider:this.providers.get(e),reason:"load-balance"}}selectLeastCost(t){let e=1/0,r=t[0];for(let s of t){let n=this.providers.get(s),{input:o,output:i}=n.getCostPerToken(),l=o+i;l<e&&(e=l,r=s)}return{provider:this.providers.get(r),reason:"cost-optimization",metadata:{estimatedCost:e}}}selectLeastLatency(t){let e=1/0,r=t[0];for(let s of t){let n=this.metrics.get(s);if(n&&n.latencies.length>0){let o=this.calculateAverage(n.latencies);o<e&&(e=o,r=s)}}return{provider:this.providers.get(r),reason:"latency-optimization",metadata:{avgLatency:e}}}selectRandom(t){let e=ee(0,t.length),r=t[e];return{provider:this.providers.get(r),reason:"load-balance"}}recordSuccess(t,e,r){let s=this.metrics.get(t);if(s&&(s.totalRequests++,s.successCount++,s.latencies.push(e),s.latencies.length>1e3&&(s.latencies=s.latencies.slice(-1e3)),r&&typeof r=="object")){let n=r;n.cost?.totalCost&&(s.totalCost+=n.cost.totalCost),n.usage?.totalTokens&&(s.totalTokens+=n.usage.totalTokens)}}recordFailure(t,e){let r=this.metrics.get(t);r&&(r.totalRequests++,r.failureCount++)}async ensureInitialized(){this.initialized||await this.initialize()}calculateAverage(t){return t.length===0?0:t.reduce((e,r)=>e+r,0)/t.length}calculatePercentile(t,e){if(t.length===0)return 0;let r=[...t].sort((n,o)=>n-o),s=Math.ceil(e/100*r.length)-1;return r[Math.max(0,s)]}};function ws(b){return new H(b)}function Ms(){return new H({primary:"claude",fallbacks:["openai","ollama"],loadBalancing:"least-cost",providers:{claude:{model:"claude-sonnet-4-20250514",maxTokens:8192,temperature:.3},openai:{model:"gpt-4o",maxTokens:8192,temperature:.3},ollama:{model:"llama3.1",maxTokens:4096,temperature:.3}},global:{enableCostTracking:!0,enableMetrics:!0,maxCostPerDay:100}})}export{he as DEFAULT_PROVIDER_MANAGER_CONFIG,H as ProviderManager,ws as createProviderManager,Ms as createQEProviderManager};
|
|
@@ -0,0 +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.9.10");process.exit(0)}
|
|
2
|
+
import{a as h,b as i,c as j,d as k,e as l,f as m,g as n}from"./chunk-VNKCUKUJ.js";import"./chunk-XICRAXUR.js";import{a as e,b as f,d as g}from"./chunk-EEWTTYRC.js";import"./chunk-ZENLP5LF.js";import{a,b,c,h as d}from"./chunk-XH7D6EGE.js";import"./chunk-53G3OCGS.js";import"./chunk-KK3KVYE7.js";import"./chunk-AO4HDN62.js";import"./chunk-JYPW22JV.js";import"./chunk-NIFVFUCU.js";import"./chunk-URXG7FMO.js";import"./chunk-TTXYZUTQ.js";import"./chunk-7FWZHYYE.js";import"./chunk-WLX57ULC.js";import"./chunk-DG2OYKUQ.js";import"./chunk-A2ULGMMG.js";import"./chunk-IGRKFVFD.js";import"./chunk-D2A4TGZY.js";import"./chunk-RMQQ5UHM.js";import"./chunk-RE2IBX7Z.js";import"./chunk-SMTAZQJ3.js";import"./chunk-AOA454FC.js";import"./chunk-UBT7VCKQ.js";import"./chunk-B4AFVIOA.js";import"./chunk-4ZR5G4MZ.js";import"./chunk-KXXLMLMJ.js";import"./chunk-54TZA65H.js";import"./chunk-335CCAOL.js";export{j as AGENT_CAPABILITIES,h as DEFAULT_QE_REASONING_BANK_CONFIG,i as PRETRAINED_PATTERNS,m as QEReasoningBank,l as RELATED_DOMAINS,d as applyPatternTemplate,k as calculateAgentScores,n as createQEReasoningBank,a as detectQEDomain,b as detectQEDomains,g as generateGuidanceContext,f as getCombinedGuidance,e as getGuidance,c as mapQEDomainToAQE};
|
|
@@ -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.9.
|
|
2
|
-
import{c as l,d as u,h as d}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.9.10");process.exit(0)}
|
|
2
|
+
import{c as l,d as u,h as d}from"./chunk-EHGTNSJ2.js";import"./chunk-335CCAOL.js";import{Command as w}from"commander";import e from"chalk";function P(g,o,h){return new w("quality").description("Quality assessment shortcut").option("--gate","Run quality gate evaluation").option("-F, --format <format>","Output format (text|json|markdown)","text").option("-o, --output <path>","Write output to file").action(async i=>{if(await h())try{let r=i.format;{r==="text"&&console.log(e.blue(`
|
|
3
3
|
Running quality gate evaluation...
|
|
4
4
|
`));let m=await g.kernel.getDomainAPIAsync("quality-assessment");m||(console.log(e.red("Quality assessment domain not available")),await o(1));let f={coverage:0,testsPassing:0,criticalBugs:0,codeSmells:0,securityVulnerabilities:0,technicalDebt:0,duplications:0},y={coverage:{min:80},testsPassing:{min:95},criticalBugs:{max:0},codeSmells:{max:20},securityVulnerabilities:{max:0},technicalDebt:{max:5},duplications:{max:5}},n=await m.evaluateGate({gateName:"standard",metrics:f,thresholds:y});if(n.success&&n.value){let s=n.value,t={passed:s.passed??s.meetsThreshold??!0,score:s.score??s.grade??"N/A",checks:s.checks||[],recommendations:s.recommendations||[]};if(r==="json")l(u(t),i.output);else if(r==="markdown")l(d(t),i.output);else{let p=t.passed?e.green("\u2713 PASSED"):e.red("\u2717 FAILED");if(console.log(` Quality Gate: ${p}`),console.log(` Score: ${e.cyan(t.score)}
|
|
5
5
|
`),t.checks.length>0){console.log(e.cyan(" Checks:"));for(let a of t.checks){let b=a.passed?e.green("\u2713"):e.red("\u2717");console.log(` ${b} ${a.name}: ${a.value} (threshold: ${a.threshold})`)}}if(t.recommendations&&t.recommendations.length>0){console.log(e.cyan(`
|
|
@@ -0,0 +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.9.10");process.exit(0)}
|
|
2
|
+
import{c as a,d as b,e as c,f as d}from"./chunk-2IJFZW3N.js";import"./chunk-5QKTLOGO.js";import"./chunk-FIQNVPYY.js";import"./chunk-TO4NGP3E.js";import"./chunk-F7HRGQRS.js";import"./chunk-32OB4ZYQ.js";import"./chunk-4FU6YNDP.js";import"./chunk-4LOJJ4VX.js";import"./chunk-ZENLP5LF.js";import"./chunk-XH7D6EGE.js";import"./chunk-URXG7FMO.js";import"./chunk-TTXYZUTQ.js";import"./chunk-ORA6NIXN.js";import"./chunk-7FWZHYYE.js";import"./chunk-WLX57ULC.js";import"./chunk-DG2OYKUQ.js";import"./chunk-A2ULGMMG.js";import"./chunk-IGRKFVFD.js";import"./chunk-D2A4TGZY.js";import"./chunk-RMQQ5UHM.js";import"./chunk-RE2IBX7Z.js";import"./chunk-SMTAZQJ3.js";import"./chunk-AOA454FC.js";import"./chunk-UBT7VCKQ.js";import"./chunk-B4AFVIOA.js";import"./chunk-4ZR5G4MZ.js";import"./chunk-KXXLMLMJ.js";import"./chunk-54TZA65H.js";import"./chunk-335CCAOL.js";export{a as DOMAIN_GROUPS,c as QueenCoordinator,b as TASK_DOMAIN_MAP,d as createQueenCoordinator};
|
|
@@ -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.9.
|
|
2
|
-
import{a as b,b as c,c as d,d as e,e as f,f as g,g as h,h as i}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.9.10");process.exit(0)}
|
|
2
|
+
import{a as b,b as c,c as d,d as e,e as f,f as g,g as h,h as i}from"./chunk-NIFVFUCU.js";import"./chunk-IGRKFVFD.js";import{a}from"./chunk-B4AFVIOA.js";import"./chunk-335CCAOL.js";export{b as DEFAULT_EMBEDDING_CONFIG,e as clearEmbeddingCache,d as computeBatchEmbeddings,c as computeRealEmbedding,a as cosineSimilarity,f as getCacheStats,h as getEmbeddingDimension,g as isTransformerAvailable,i as resetInitialization};
|
|
@@ -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.9.
|
|
2
|
-
import{b 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.9.10");process.exit(0)}
|
|
2
|
+
import{b as p}from"./chunk-3HIDCXW3.js";import{a as f,c as v}from"./chunk-IGRKFVFD.js";import"./chunk-335CCAOL.js";v();import{existsSync as n,mkdirSync as m,readFileSync as u,writeFileSync as a}from"fs";import{join as d,dirname as h}from"path";var l=class{projectRoot;overwrite;generator;constructor(r){this.projectRoot=r.projectRoot,this.overwrite=r.overwrite??!1,this.generator=p()}async install(){let r={success:!0,mcpConfigured:!1,modeInstalled:!1,errors:[],configPath:"",modePath:""};try{let t=this.generator.generateMcpConfig("roocode"),e=d(this.projectRoot,t.path);if(r.configPath=e,!n(e)||this.overwrite){let i=h(e);if(n(i)||m(i,{recursive:!0}),n(e)&&this.overwrite){let c=this.mergeExistingConfig(e,t.content);a(e,c)}else a(e,t.content);r.mcpConfigured=!0}let s=this.generator.generateBehavioralRules("roocode"),o=d(this.projectRoot,s.path);if(r.modePath=o,!n(o)||this.overwrite){let i=h(o);if(n(i)||m(i,{recursive:!0}),n(o)&&this.overwrite){let c=this.mergeExistingModes(o,s.content);a(o,c)}else a(o,s.content);r.modeInstalled=!0}}catch(t){r.success=!1,r.errors.push(`Roo Code installation failed: ${f(t)}`)}return r}mergeExistingConfig(r,t){try{let e=JSON.parse(u(r,"utf-8")),s=JSON.parse(t);return e.mcpServers||(e.mcpServers={}),Object.assign(e.mcpServers,s.mcpServers),JSON.stringify(e,null,2)+`
|
|
3
3
|
`}catch{return t}}mergeExistingModes(r,t){try{let e=JSON.parse(u(r,"utf-8")),s=JSON.parse(t);if(!Array.isArray(e))return t;let o=e.filter(i=>i.slug!=="qe-engineer");return o.push(...s),JSON.stringify(o,null,2)+`
|
|
4
4
|
`}catch{return t}}};function P(g){return new l(g)}export{l as RooCodeInstaller,P as createRooCodeInstaller};
|
|
@@ -0,0 +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.9.10");process.exit(0)}
|
|
2
|
+
import{a,b,c}from"./chunk-YT6KBEXE.js";import"./chunk-VXIXHZCN.js";import"./chunk-OOHKW3UE.js";import"./chunk-GCNTU3QJ.js";import"./chunk-JQX2DHQT.js";import"./chunk-DG2OYKUQ.js";import"./chunk-IGRKFVFD.js";import"./chunk-335CCAOL.js";export{a as ModelRouter,b as createModelRouter,c as createModelRouterWithAgentBooster};
|
|
@@ -0,0 +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.9.10");process.exit(0)}
|
|
2
|
+
import{a,b}from"./chunk-YPIZMTTA.js";import"./chunk-XSUPK7FI.js";import"./chunk-52ZHPZVX.js";import"./chunk-X364AIY6.js";import"./chunk-URXG7FMO.js";import"./chunk-TTXYZUTQ.js";import"./chunk-7FWZHYYE.js";import"./chunk-WLX57ULC.js";import"./chunk-DG2OYKUQ.js";import"./chunk-IGRKFVFD.js";import"./chunk-RMQQ5UHM.js";import"./chunk-RE2IBX7Z.js";import"./chunk-SMTAZQJ3.js";import"./chunk-AOA454FC.js";import"./chunk-UBT7VCKQ.js";import"./chunk-B4AFVIOA.js";import"./chunk-4ZR5G4MZ.js";import"./chunk-KXXLMLMJ.js";import"./chunk-54TZA65H.js";import"./chunk-335CCAOL.js";export{a as RoutingFeedbackCollector,b as createRoutingFeedbackCollector};
|
|
@@ -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.9.
|
|
2
|
-
import{b as u}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.9.10");process.exit(0)}
|
|
2
|
+
import{b as u}from"./chunk-YPIZMTTA.js";import{c as m}from"./chunk-XSUPK7FI.js";import"./chunk-52ZHPZVX.js";import"./chunk-X364AIY6.js";import"./chunk-URXG7FMO.js";import"./chunk-TTXYZUTQ.js";import"./chunk-7FWZHYYE.js";import"./chunk-WLX57ULC.js";import"./chunk-DG2OYKUQ.js";import{a as l,c as f}from"./chunk-IGRKFVFD.js";import"./chunk-RMQQ5UHM.js";import"./chunk-RE2IBX7Z.js";import"./chunk-SMTAZQJ3.js";import"./chunk-AOA454FC.js";import"./chunk-UBT7VCKQ.js";import"./chunk-B4AFVIOA.js";import"./chunk-4ZR5G4MZ.js";import"./chunk-KXXLMLMJ.js";import"./chunk-54TZA65H.js";import"./chunk-335CCAOL.js";f();import o from"chalk";var d=class{name="routing";description="View routing performance, economics, and accuracy";cleanupAndExit;constructor(n){this.cleanupAndExit=n}getHelp(){return["aqe routing economics [--complexity <0-1>] [--json] Show tier efficiency & budget","aqe routing accuracy [--json] Show routing accuracy analysis","aqe routing metrics [--json] Show per-agent performance"].join(`
|
|
3
3
|
`)}register(n,r){let t=n.command("routing").description(this.description);t.command("economics").description("Show economic routing report: tier efficiency, budget, savings").option("-c, --complexity <value>","Task complexity for scoring (0-1)","0.5").option("--json","Output as JSON").action(async e=>{await this.executeEconomics(parseFloat(e.complexity)||.5,!!e.json)}),t.command("accuracy").description("Show routing accuracy analysis").option("--json","Output as JSON").action(async e=>{await this.executeAccuracy(!!e.json)}),t.command("metrics").description("Show per-agent performance metrics").option("--json","Output as JSON").action(async e=>{await this.executeMetrics(!!e.json)})}async executeEconomics(n,r){try{let t=u(100);await t.initialize(),t.enableEconomicRouting({},m());let e=t.getEconomicReport();if(!e){console.error(o.red(`
|
|
4
4
|
Economic routing is not available.
|
|
5
5
|
`)),await this.cleanupAndExit(1);return}if(r){console.log(JSON.stringify(e,(a,s)=>s===1/0?"Infinity":s,2)),await this.cleanupAndExit(0);return}console.log(o.blue(`
|
|
@@ -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.9.
|
|
2
|
-
import{a as p,c 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.9.10");process.exit(0)}
|
|
2
|
+
import{a as p,c as h}from"./chunk-4ZR5G4MZ.js";import"./chunk-KXXLMLMJ.js";import{S as A,a as u,b as f,c as d}from"./chunk-54TZA65H.js";import{a as y}from"./chunk-335CCAOL.js";A();h();import{Command as S}from"commander";import e from"chalk";var F=[{name:"hnswlib-node",flag:"useNativeHNSW",fallback:"ProgressiveHnswBackend"},{name:"prime-radiant-advanced-wasm",flag:"useCoherenceGate",fallback:"Word-frequency heuristics"},{name:"@ruvector/sona",flag:"useSONAThreeLoop",fallback:"TypeScript MicroLoRA/EWC++"}],D={useQESONA:"Self-Optimizing Neural Architecture",useQEFlashAttention:"SIMD-accelerated attention computation",useQEGNNIndex:"Differentiable search and HNSW indexing",logMigrationMetrics:"Log migration metrics during rollout",useNativeHNSW:"Native HNSW backend (hnswlib-node, C++ Hnswlib reference)",useTemporalCompression:"Temporal tensor compression (ADR-085)",useMetadataFiltering:"SIMD-accelerated metadata filtering",useDeterministicDither:"Cross-platform deterministic dithering",useNeuralRouting:"Neural model routing via FastGRNN (ADR-082)",useSONAThreeLoop:"SONA Three-Loop Engine (Task 2.2)",useCrossDomainTransfer:"Cross-domain transfer learning (ADR-084)",useHnswHealthMonitor:"HNSW health monitor (Task 3.4)",useRegretTracking:"Regret tracking & learning health (Task 2.4)",useCoherenceGate:"Sheaf-gated coherence validation (ADR-083, Task 3.1)",useWitnessChain:"SHA-256 hash-chained witness records (Task 3.1)",useCNNVisualRegression:"CNN visual regression testing (Task 4.3)",useDAGAttention:"DAG attention for test scheduling (Task 4.2)",useCoherenceActionGate:"Coherence-gated agent actions (ADR-083, Task 3.2)",useReasoningQEC:"Reasoning QEC error correction (Task 4.5)",useRVFPatternStore:"RVF-backed PatternStore with persistent HNSW (ADR-066)",useAgentMemoryBranching:"Agent memory branching via RVF COW (ADR-067)",useUnifiedHnsw:"Unified HNSW provider replacing 3 legacy impls (ADR-071)",rvfMigrationStage:"RVF migration stage 0-4: sqlite\u2192hybrid\u2192dual\u2192rvf-primary (ADR-072)",useHDCFingerprinting:"HDC pattern fingerprinting (R1, ADR-087)",useCusumDriftDetection:"CUSUM drift detection (R2, ADR-087)",useDeltaEventSourcing:"Delta event sourcing (R3, ADR-087)",useEwcPlusPlusRegularization:"EWC++ regularization (ADR-087)",useGraphMAEEmbeddings:"GraphMAE self-supervised embeddings (R4, ADR-087)",useHopfieldMemory:"Modern Hopfield memory (R5, ADR-087)",useColdTierGNN:"Cold-tier GNN training (R6, ADR-087)",useMetaLearningEnhancements:"Meta-learning enhancements (R7, ADR-087)",useSublinearSolver:"Sublinear PageRank solver (R8, ADR-087)",useSpectralSparsification:"Spectral graph sparsification (R9, ADR-087)",useReservoirReplay:"Reservoir replay with coherence gating (R10, ADR-087)",useEpropOnlineLearning:"E-prop online learning, RL algorithm #10 (R11, ADR-087)",useGrangerCausality:"Granger causality for test failure prediction (R12, ADR-087)",useCognitiveRouting:"Cognitive routing with predictive delta compression (R13, ADR-087)",useHyperbolicHnsw:"Hyperbolic HNSW with Poincare ball embeddings (R14, ADR-087)"},m={performance:{useNativeHNSW:!0,useTemporalCompression:!0,useDeterministicDither:!0},experimental:{useQESONA:!0,useQEFlashAttention:!0,useQEGNNIndex:!0,logMigrationMetrics:!0,useNativeHNSW:!0,useTemporalCompression:!0,useMetadataFiltering:!0,useDeterministicDither:!0,useNeuralRouting:!0},safe:{useQESONA:!0,useQEFlashAttention:!0,useQEGNNIndex:!0,logMigrationMetrics:!0,useNativeHNSW:!1,useTemporalCompression:!1,useMetadataFiltering:!1,useDeterministicDither:!1,useNeuralRouting:!1}},g=Object.keys(u);function b(o){try{return y.resolve(o),!0}catch{return!1}}function v(o,s){return u[o]===s}function i(o,s){return o.padEnd(s)}function N(o){return o<1024?`${o}B`:o<1024*1024?`${(o/1024).toFixed(1)}KB`:o<1024*1024*1024?`${(o/(1024*1024)).toFixed(1)}MB`:`${(o/(1024*1024*1024)).toFixed(2)}GB`}function k(o){return g.includes(o)}function C(o){return o in m}function T(){let o=f();console.log(""),console.log(e.bold.blue("RuVector Integration Status:")),console.log(e.cyan(" Native Packages:"));for(let t of F){let a=b(t.name)?e.green("installed"):e.gray(`not installed (fallback: ${t.fallback})`);console.log(` ${i(t.name+":",30)} ${a}`)}console.log(""),console.log(e.cyan(" Feature Flags:"));for(let t of g){let r=o[t],a=v(t,r),n=typeof r=="number"?e.cyan(String(r)):r?e.green("true"):e.gray("false"),l=a?e.gray(" (default)"):e.yellow(" (modified)");console.log(` ${i(t+":",30)} ${n}${l}`)}let s=p.listIndexes();if(s.length>0){console.log(""),console.log(e.cyan(" HNSW Memory Usage:"));let t=0,r=0;for(let a of s){let n=p.get(a);if(n){let l=n.size(),c=n.dimensions(),R=l*c*4*3;t+=l,r+=R,console.log(` ${i(a+":",20)} ${e.white(String(l))} vectors, ${e.white(c)}d, ~${e.white(N(R))}`)}}console.log(e.gray(` ${"\u2500".repeat(50)}`)),console.log(` ${i("Total:",20)} ${e.bold.white(String(t))} vectors, ~${e.bold.white(N(r))}`)}else console.log(""),console.log(e.cyan(" HNSW Memory Usage:")),console.log(e.gray(" No active indexes (indexes are created on first use)"));o.useTemporalCompression&&(console.log(""),console.log(e.cyan(" Temporal Compression:")),console.log(e.gray(" Hot tier: 8-bit quantization (frequently accessed patterns)")),console.log(e.gray(" Warm tier: 5-bit quantization (moderately accessed patterns)")),console.log(e.gray(" Cold tier: 3-bit quantization (rarely accessed patterns)")),console.log(e.gray(" Estimated memory savings: 40-60% for cold patterns"))),console.log("")}function x(o){if(o.profile){if(!C(o.profile)){console.log(""),console.log(e.red(` Unknown profile: ${o.profile}`)),console.log(e.gray(` Valid profiles: ${Object.keys(m).join(", ")}`)),console.log(""),process.exit(1);return}let t=m[o.profile];d(t),console.log(""),console.log(e.bold.blue(`Setting ${o.profile} profile:`));for(let[r,a]of Object.entries(t)){let n=a?e.green("true"):e.gray("false");console.log(` ${i(r+":",30)} ${n}`)}console.log("");return}if(o.set){let t=o.set.indexOf("=");if(t<=0){console.log(""),console.log(e.red(" Invalid format. Use: --set flagName=true|false")),console.log(""),process.exit(1);return}let r=o.set.substring(0,t),a=o.set.substring(t+1);if(!k(r)){console.log(""),console.log(e.red(` Unknown flag: ${r}`)),console.log(e.gray(` Valid flags: ${g.join(", ")}`)),console.log(""),process.exit(1);return}if(a!=="true"&&a!=="false"){console.log(""),console.log(e.red(` Invalid value: ${a}. Use true or false.`)),console.log(""),process.exit(1);return}let n=a==="true";d({[r]:n});let l=n?e.green("true"):e.gray("false");console.log(""),console.log(e.green(` Set ${r} = ${l}`)),console.log("");return}let s=f();console.log(""),console.log(e.bold.blue("RuVector Feature Flags:")),console.log(""),console.log(e.bold(" "+i("Flag",28)+i("Value",10)+"Description")),console.log(e.gray(" "+"-".repeat(78)));for(let t of g){let r=s[t],a=v(t,r),n=typeof r=="number"?e.cyan(String(r)):r?e.green("true"):e.gray("false"),l=a?"":e.yellow(" *"),c=D[t];console.log(" "+i(t,28)+i(String(r),10)+e.gray(c)+l)}console.log(""),console.log(e.gray(" * = modified from default")),console.log(""),console.log(e.gray(" Profiles: performance, experimental, safe")),console.log(e.gray(" Usage:")),console.log(e.gray(" aqe ruvector flags --set useNativeHNSW=true")),console.log(e.gray(" aqe ruvector flags --profile=performance")),console.log("")}function E(){let o=new S("ruvector").description("RuVector integration management").addHelpText("after",`
|
|
3
3
|
Examples:
|
|
4
4
|
$ aqe ruvector status Show native packages and flags
|
|
5
5
|
$ aqe ruvector flags List all feature flags
|
|
@@ -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.9.
|
|
2
|
-
import{a,b}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.9.10");process.exit(0)}
|
|
2
|
+
import{a,b}from"./chunk-JXDJMVIG.js";import"./chunk-335CCAOL.js";export{a as RvfDualWriter,b as createDualWriter};
|
package/dist/cli/chunks/{rvf-migration-adapter-EBTV6FV2.js → rvf-migration-adapter-HQPEC4BN.js}
RENAMED
|
@@ -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.9.
|
|
2
|
-
import{a,b}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.9.10");process.exit(0)}
|
|
2
|
+
import{a,b}from"./chunk-CFQHIWWH.js";import"./chunk-335CCAOL.js";export{b as RvfMigrationAdapter,a as STAGE_NAMES};
|
|
@@ -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.9.
|
|
2
|
-
import{a as m,b 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.9.10");process.exit(0)}
|
|
2
|
+
import{a as m,b as p}from"./chunk-CFQHIWWH.js";import"./chunk-335CCAOL.js";var v={sampleSize:50,windowDurationMs:6048e5,compactionThreshold:.3,scoreTolerance:.05},l=class{config;db=null;rvfStore=null;history=[];constructor(t){this.config={...v,...t}}setSqliteDb(t){this.db=t}setRvfStore(t){this.rvfStore=t}runCheck(){let t={timestamp:Date.now(),samplesChecked:0,divergences:0,divergenceRate:0,details:[],deadSpaceRatio:null,compactionTriggered:!1};if(!this.db||!this.rvfStore)return this.history.push(t),t;let e=this.getSampleIds(this.config.sampleSize);if(t.samplesChecked=e.length,e.length===0)return this.history.push(t),t;for(let a of e){let n=this.getSqliteEmbedding(a);if(!n){t.divergences++,t.details.push({patternId:a,issue:"missing-in-sqlite"});continue}try{let i=this.rvfStore.search(n,1);i.length===0?(t.divergences++,t.details.push({patternId:a,issue:"missing-in-rvf"})):i[0].id!==a&&i[0].score<.99&&(t.divergences++,t.details.push({patternId:a,issue:"score-mismatch",rvfScore:i[0].score}))}catch{t.divergences++,t.details.push({patternId:a,issue:"missing-in-rvf"})}}t.divergenceRate=t.samplesChecked>0?t.divergences/t.samplesChecked:0;try{let n=this.rvfStore.status().deadSpaceRatio;t.deadSpaceRatio=n??null,n!=null&&n>this.config.compactionThreshold&&(this.triggerCompaction(),t.compactionTriggered=!0)}catch{}return this.history.push(t),this.pruneHistory(),t}getRollingDivergenceRate(){let t=Date.now()-this.config.windowDurationMs,e=this.history.filter(i=>i.timestamp>=t);if(e.length===0)return 0;let a=e.reduce((i,r)=>i+r.samplesChecked,0),n=e.reduce((i,r)=>i+r.divergences,0);return a>0?n/a:0}getCheckCount(){let t=Date.now()-this.config.windowDurationMs;return this.history.filter(e=>e.timestamp>=t).length}getHistory(){let t=Date.now()-this.config.windowDurationMs;return this.history.filter(e=>e.timestamp>=t)}getSampleIds(t){if(!this.db)return[];try{return this.db.prepare("SELECT pattern_id FROM qe_pattern_embeddings ORDER BY RANDOM() LIMIT ?").all(t).map(a=>a.pattern_id)}catch{return[]}}getSqliteEmbedding(t){if(!this.db)return null;try{let e=this.db.prepare("SELECT embedding, dimension FROM qe_pattern_embeddings WHERE pattern_id = ?").get(t);return e?new Float32Array(e.embedding.buffer,e.embedding.byteOffset,e.dimension):null}catch{return null}}triggerCompaction(){try{this.rvfStore.compact?.()}catch{}}pruneHistory(){let t=Date.now()-this.config.windowDurationMs;this.history=this.history.filter(e=>e.timestamp>=t)}};var S={maxDivergenceRate2to3:1e-4,maxReadLatencyRatio2to3:2,maxFallbacks3to4:0,maxWriteLatencyRatio3to4:1.5,minChecksRequired:10},g=class{config;witnessChain=null;constructor(t){this.config={...S,...t}}setWitnessChain(t){this.witnessChain=t}evaluate(t,e,a){let n=Math.min(t+1,4);if(t>=4)return{canPromote:!1,currentStage:t,targetStage:4,checks:[],summary:"Already at maximum stage (4: RVF primary)"};if(t<2)return{canPromote:!0,currentStage:t,targetStage:n,checks:[],summary:`Stage ${t}\u2192${n} has no automated gates \u2014 manual promotion allowed`};let i=[];if(t===2){let s=e.getRollingDivergenceRate(),o=e.getCheckCount();i.push({name:"consistency-checks-count",passed:o>=this.config.minChecksRequired,actual:`${o} checks`,threshold:`>= ${this.config.minChecksRequired} checks`}),i.push({name:"divergence-rate",passed:s<=this.config.maxDivergenceRate2to3,actual:`${(s*100).toFixed(4)}%`,threshold:`<= ${(this.config.maxDivergenceRate2to3*100).toFixed(4)}%`});let c=a.sqliteReadLatencyAvgMs>0?a.rvfReadLatencyAvgMs/a.sqliteReadLatencyAvgMs:0;i.push({name:"read-latency-ratio",passed:c<=this.config.maxReadLatencyRatio2to3||a.rvfReadLatencyAvgMs===0,actual:`${c.toFixed(2)}x`,threshold:`<= ${this.config.maxReadLatencyRatio2to3}x`})}if(t===3){i.push({name:"fallback-count",passed:a.fallbacksUsed<=this.config.maxFallbacks3to4,actual:`${a.fallbacksUsed} fallbacks`,threshold:`<= ${this.config.maxFallbacks3to4} fallbacks`});let s=a.sqliteWriteLatencyAvgMs??a.sqliteReadLatencyAvgMs,o=a.rvfWriteLatencyAvgMs??a.rvfReadLatencyAvgMs,c=s>0?o/s:0;i.push({name:"write-latency-ratio",passed:c<=this.config.maxWriteLatencyRatio3to4||o===0,actual:`${c.toFixed(2)}x`,threshold:`<= ${this.config.maxWriteLatencyRatio3to4}x`})}let r=i.length>0&&i.every(s=>s.passed),u=i.filter(s=>!s.passed).map(s=>s.name);return{canPromote:r,currentStage:t,targetStage:n,checks:i,summary:r?`All gates passed \u2014 safe to promote to stage ${n}`:`Blocked: ${u.join(", ")} failed`}}promote(t,e,a,n=!1){let i=this.evaluate(t,e,a);if(!i.canPromote&&!n)return this.recordWitness("QUALITY_GATE_FAIL",{action:"stage-promotion-blocked",from:t,to:i.targetStage,failedChecks:i.checks.filter(u=>!u.passed),summary:i.summary}),{promoted:!1,newStage:t,result:i};let r=i.targetStage;return this.recordWitness("QUALITY_GATE_PASS",{action:n?"stage-promotion-forced":"stage-promotion-approved",from:t,to:r,checks:i.checks,forced:n,summary:i.summary}),{promoted:!0,newStage:r,result:i}}recordWitness(t,e){try{this.witnessChain?.append(t,e,"rvf-stage-gate")}catch{}}};var d=null,f=class h{adapter;validator;gate;currentStage;initialized=!1;constructor(t){this.currentStage=t?.stage??1,this.adapter=new p({stage:this.currentStage,rvfPath:t?.rvfPath??".agentic-qe/patterns.rvf",dimensions:t?.dimensions??384,enableFallback:!0}),this.validator=new l({sampleSize:50,windowDurationMs:10080*60*1e3,compactionThreshold:.3,scoreTolerance:.05}),this.gate=new g({minChecksRequired:10})}attachSqliteDb(t){this.adapter.setSqliteDb(t),this.validator.setSqliteDb(t)}attachRvfStore(t){this.adapter.setRvfStore(t),this.validator.setRvfStore(t)}attachWitnessChain(t){this.gate.setWitnessChain(t)}async initialize(){if(!this.initialized){if(this.currentStage===1)try{let{getRvfMigrationStage:t}=await import("./feature-flags-KXXHAEYF.js"),e=t();this.currentStage=e,this.adapter.setStage(e)}catch{}try{let{UnifiedMemoryManager:t}=await import("./unified-memory-EXO6WK33.js"),e=t.getInstance();await e.initialize();let a=e.getDatabase();a&&this.attachSqliteDb(a)}catch{}try{let{getSharedRvfAdapter:t}=await import("./shared-rvf-adapter-JJCR3AWU.js"),e=t();e&&this.attachRvfStore(e)}catch{}try{let{WitnessChain:t}=await import("./witness-chain-XQXF3RSP.js"),e=new t;await e.initialize(),this.attachWitnessChain(e)}catch{}this.initialized=!0}}getStatus(){let t=this.adapter.getMetrics(),e=this.adapter.status(),a=this.validator.getHistory(),n=this.gate.evaluate(this.currentStage,this.validator,t);return{stage:this.currentStage,stageName:m[this.currentStage],metrics:t,consistencyHistory:{totalChecks:this.validator.getCheckCount(),rollingDivergenceRate:this.validator.getRollingDivergenceRate(),lastCheck:a.length>0?a[a.length-1]:null},gateEvaluation:n,engineStatus:{sqliteVectorCount:e.sqlite.vectorCount,rvfAvailable:e.rvf!==null,rvfVectorCount:e.rvf?.totalVectors??null,rvfDeadSpaceRatio:e.rvf?.deadSpaceRatio??null}}}runConsistencyCheck(){return this.validator.runCheck()}evaluateGate(){return this.gate.evaluate(this.currentStage,this.validator,this.adapter.getMetrics())}promote(t=!1){let e=this.currentStage,{promoted:a,newStage:n,result:i}=this.gate.promote(this.currentStage,this.validator,this.adapter.getMetrics(),t);return a&&(this.currentStage=n,this.adapter.setStage(n)),{promoted:a,previousStage:e,newStage:n,result:i}}write(t,e){return this.adapter.write(t,e)}search(t,e){return this.adapter.search(t,e)}getAdapter(){return this.adapter}static getInstance(t){return d||(d=new h(t)),d}static resetInstance(){d=null}};export{f as RvfMigrationCoordinator};
|
|
@@ -0,0 +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.9.10");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,f as e}from"./chunk-JYPW22JV.js";import"./chunk-335CCAOL.js";e();export{a as createRvfStore,d as isRvfNativeAvailable,b as openRvfStore,c as openRvfStoreReadonly};
|
|
@@ -0,0 +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.9.10");process.exit(0)}
|
|
2
|
+
import{a,b}from"./chunk-RMQQ5UHM.js";import"./chunk-RE2IBX7Z.js";import"./chunk-335CCAOL.js";b();export{a as openDatabase};
|
|
@@ -0,0 +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.9.10");process.exit(0)}
|
|
2
|
+
import{a}from"./chunk-EGIYLRW5.js";import"./chunk-34WI4QNF.js";import"./chunk-JN3CC2TX.js";import"./chunk-URXG7FMO.js";import"./chunk-TTXYZUTQ.js";import"./chunk-7FWZHYYE.js";import"./chunk-WLX57ULC.js";import"./chunk-DG2OYKUQ.js";import"./chunk-IGRKFVFD.js";import"./chunk-D2A4TGZY.js";import"./chunk-RMQQ5UHM.js";import"./chunk-RE2IBX7Z.js";import"./chunk-SMTAZQJ3.js";import"./chunk-AOA454FC.js";import"./chunk-UBT7VCKQ.js";import"./chunk-B4AFVIOA.js";import"./chunk-4ZR5G4MZ.js";import"./chunk-KXXLMLMJ.js";import"./chunk-54TZA65H.js";import"./chunk-335CCAOL.js";export{a as TestScheduleTool};
|
|
@@ -0,0 +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.9.10");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-DPYCHODC.js";import"./chunk-CQNXIYQW.js";import"./chunk-DG2OYKUQ.js";import"./chunk-A2ULGMMG.js";import"./chunk-IGRKFVFD.js";import"./chunk-335CCAOL.js";export{a as PersistentScheduler,b as createPersistentScheduler,d as createScheduleEntry,c as generateScheduleId};
|
|
@@ -1,7 +1,7 @@
|
|
|
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.9.
|
|
2
|
-
import{b 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.9.10");process.exit(0)}
|
|
2
|
+
import{b as h}from"./chunk-HJMLJNCB.js";import{c as g,d as f,e as S,i as w}from"./chunk-EHGTNSJ2.js";import"./chunk-335CCAOL.js";import{Command as b}from"commander";import e from"chalk";function P(v,a,k){return new b("security").description("Security scanning and URL validation").option("--sast","Run SAST scan").option("--dast","Run DAST scan").option("--compliance <frameworks>","Check compliance (gdpr,hipaa,soc2)","").option("--url-validate <url>","Validate a URL for security threats and PII exposure").option("--no-pii","Disable PII scanning when using --url-validate").option("-t, --target <path>","Target directory to scan",".").option("-F, --format <format>","Output format (text|json|sarif|markdown)","text").option("-o, --output <path>","Write output to file").action(async r=>{if(await k()){if(r.urlValidate){try{let o=r.format,u=r.urlValidate;o==="text"&&console.log(e.blue(`
|
|
3
3
|
Validating URL: ${u}
|
|
4
|
-
`));let{VisualSecurityTool:y}=await import("./visual-security-
|
|
4
|
+
`));let{VisualSecurityTool:y}=await import("./visual-security-COW3OCEE.js"),c=await new y().invoke({url:u,enablePII:r.pii!==!1});if(c.success&&c.data){let t=c.data;if(o==="json")g(f(t),r.output);else{if(t.urlSecurity.valid)console.log(e.green(" URL Security: CLEAN"));else{console.log(e.red(` URL Security: ${t.urlSecurity.issues.length} issue(s) (risk: ${t.urlSecurity.riskLevel})`));for(let s of t.urlSecurity.issues){let i=s.severity==="critical"?e.red:s.severity==="high"?e.yellow:e.gray;console.log(i(` [${s.severity}] ${s.type}: ${s.description}`))}}if(t.piiExposure.scanned)if(t.piiExposure.found){console.log(e.red(`
|
|
5
5
|
PII Exposure: ${t.piiExposure.types.length} type(s) found in URL`));for(let s of t.piiExposure.details)console.log(e.yellow(` [${s.type}] in ${s.location}: ${s.masked}`))}else console.log(e.green(`
|
|
6
6
|
PII Exposure: none detected`));console.log(`
|
|
7
7
|
${t.summary}
|
|
@@ -0,0 +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.9.10");process.exit(0)}
|
|
2
|
+
import{a,b,d as c}from"./chunk-KK3KVYE7.js";import"./chunk-JYPW22JV.js";import"./chunk-335CCAOL.js";c();export{a as getSharedRvfAdapter,b as resetSharedRvfAdapter};
|
package/dist/cli/chunks/{shared-rvf-dual-writer-7OGLQE5Y.js → shared-rvf-dual-writer-ZUWSLFPH.js}
RENAMED
|
@@ -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.9.
|
|
2
|
-
import{a,b,c,d}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.9.10");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-B3L3CT4X.js";import"./chunk-335CCAOL.js";export{c as getSharedMigrationAdapter,a as getSharedRvfDualWriter,b as getSharedRvfDualWriterSync,d as resetSharedRvfDualWriter};
|
|
@@ -0,0 +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.9.10");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-53G3OCGS.js";import"./chunk-NIFVFUCU.js";import"./chunk-URXG7FMO.js";import"./chunk-TTXYZUTQ.js";import"./chunk-7FWZHYYE.js";import"./chunk-WLX57ULC.js";import"./chunk-DG2OYKUQ.js";import"./chunk-IGRKFVFD.js";import"./chunk-D2A4TGZY.js";import"./chunk-RMQQ5UHM.js";import"./chunk-RE2IBX7Z.js";import"./chunk-SMTAZQJ3.js";import"./chunk-AOA454FC.js";import"./chunk-UBT7VCKQ.js";import"./chunk-B4AFVIOA.js";import"./chunk-4ZR5G4MZ.js";import"./chunk-KXXLMLMJ.js";import"./chunk-54TZA65H.js";import"./chunk-335CCAOL.js";export{a as DEFAULT_SQLITE_CONFIG,c as SQLitePatternStore,d as createSQLitePatternStore,b as hashEmbedding};
|
|
@@ -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.9.
|
|
2
|
-
import{a as m,c as y}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.9.10");process.exit(0)}
|
|
2
|
+
import{a as m,c as y}from"./chunk-CJO2V2FB.js";import{c as g,d as h}from"./chunk-EHGTNSJ2.js";import"./chunk-335CCAOL.js";import t from"chalk";var p=class{name="status";description="Show system status";cleanupAndExit;ensureInitialized;constructor(o,n){this.cleanupAndExit=o,this.ensureInitialized=n}register(o,n){o.command("status").description(this.description).option("-v, --verbose","Show detailed status").option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async a=>{await this.executeStatus(a,n)})}async executeStatus(o,n){if(await this.ensureInitialized())try{let a=n.queen.getHealth(),e=n.queen.getMetrics();if((o.format||"text")==="json"){let s={};if(o.verbose)for(let[i,l]of a.domainHealth)s[i]={status:l.status,agents:l.agents,errors:l.errors.length};g(h({status:a.status,uptime:e.uptime,workStealing:a.workStealingActive,agents:{total:a.totalAgents,active:a.activeAgents,utilization:e.agentUtilization},tasks:{received:e.tasksReceived,completed:e.tasksCompleted,failed:e.tasksFailed,pending:a.pendingTasks,running:a.runningTasks,stolen:e.tasksStolen},coordination:{protocols:e.protocolsExecuted,workflows:e.workflowsExecuted},...o.verbose?{domains:s}:{},issues:a.issues}),o.output),await this.cleanupAndExit(0);return}if(console.log(t.blue(`
|
|
3
3
|
AQE v3 Status
|
|
4
4
|
`)),console.log(` Status: ${m(a.status)}`),console.log(` Uptime: ${t.cyan(y(e.uptime))}`),console.log(` Work Stealing: ${a.workStealingActive?t.green("active"):t.gray("inactive")}`),console.log(t.blue(`
|
|
5
5
|
Agents:`)),console.log(` Total: ${t.cyan(a.totalAgents)}`),console.log(` Active: ${t.yellow(a.activeAgents)}`),console.log(` Utilization: ${t.cyan((e.agentUtilization*100).toFixed(1))}%`),console.log(t.blue(`
|
|
@@ -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.9.
|
|
2
|
-
import{a as l}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.9.10");process.exit(0)}
|
|
2
|
+
import{a as l}from"./chunk-VIWDVS24.js";import"./chunk-XMAV7AIC.js";import"./chunk-32OB4ZYQ.js";import"./chunk-54TZA65H.js";import"./chunk-335CCAOL.js";var s={healthyThreshold:.4,warningThreshold:.2,maxHistoryEntries:100,enableLogging:!1},n=class{config;minCutService;history=[];constructor(t){this.config={...s,...t},this.minCutService=l()}computeFleetHealth(t){if(t.length===0)return this.emptyFleetResult();let r=this.minCutService.buildTaskGraphFromTopology(t);return this.computeFleetHealthFromGraph(r,t.length)}computeFleetHealthFromGraph(t,r){if(t.nodes.length===0)return this.emptyFleetResult();let e=this.minCutService.getStructuralHealth(t),o=this.determineStatus(e.normalizedLambda),a={lambda:e.lambda,healthy:e.healthy,weakPoints:e.weakPoints,normalizedLambda:e.normalizedLambda,riskScore:e.riskScore,status:o,suggestions:e.suggestions,measuredAt:new Date};return this.addHistoryEntry({lambda:e.lambda,healthy:e.healthy,weakPointCount:e.weakPoints.length,agentCount:r??t.nodes.length,timestamp:a.measuredAt}),this.config.enableLogging&&this.logHealth(a),a}getTrend(){if(this.history.length<2)return"stable";let t=Math.min(5,this.history.length),r=this.history.slice(-t),e=r[0].lambda,a=r[r.length-1].lambda-e;return Math.abs(a)<.05?"stable":a>0?"improving":"degrading"}getHistory(t){let r=[...this.history];return t!==void 0&&t<r.length?r.slice(-t):r}clearHistory(){this.history.length=0}getMinCutService(){return this.minCutService}determineStatus(t){return t>=this.config.healthyThreshold?"healthy":t>=this.config.warningThreshold?"warning":"critical"}addHistoryEntry(t){this.history.push(t),this.history.length>this.config.maxHistoryEntries&&this.history.splice(0,this.history.length-this.config.maxHistoryEntries)}emptyFleetResult(){return{lambda:0,healthy:!1,weakPoints:[],normalizedLambda:0,riskScore:1,status:"empty",suggestions:["No agents in fleet. Spawn agents to build a topology."],measuredAt:new Date}}logHealth(t){console.error(`[StructuralHealth] Status: ${t.status} | Lambda: ${t.normalizedLambda.toFixed(3)} | Weak points: ${t.weakPoints.length} | Risk: ${(t.riskScore*100).toFixed(0)}%`)}};function d(i){return new n(i)}export{s as DEFAULT_STRUCTURAL_HEALTH_CONFIG,n as StructuralHealthMonitor,d as createStructuralHealthMonitor};
|