agentic-qe 3.10.8 → 3.11.0
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/v3/qe-learning-coordinator.md +1 -1
- package/.claude/skills/README.md +2 -2
- package/.claude/skills/agentic-quality-engineering/SKILL.md +6 -5
- package/.claude/skills/agentic-quality-engineering/schemas/output.json +7 -3
- package/.claude/skills/holistic-testing-pact/SKILL.md +50 -17
- package/.claude/skills/skills-manifest.json +6 -6
- package/.opencode/skills/qe-agentic-quality-engineering.yaml +5 -5
- package/.opencode/skills/qe-holistic-testing-pact.yaml +11 -11
- package/CHANGELOG.md +88 -1
- package/README.md +17 -0
- package/assets/agents/v3/qe-learning-coordinator.md +1 -1
- package/assets/skills/README.md +2 -2
- package/assets/skills/agentic-quality-engineering/SKILL.md +6 -5
- package/assets/skills/agentic-quality-engineering/schemas/output.json +7 -3
- package/assets/skills/holistic-testing-pact/SKILL.md +50 -17
- package/assets/skills/skills-manifest.json +6 -6
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-WLFT5VMV.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-4JSL6LF6.js → agent-booster-wasm-5CSKQB4O.js} +2 -2
- package/dist/cli/chunks/{agent-handler-6YOFH7KL.js → agent-handler-EBV3OKTE.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-O3IBK4BY.js → agent-memory-branch-RZ53YM2U.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-JBH4GZUM.js +2 -0
- package/dist/cli/chunks/{arena-BLCAZNAY.js → arena-QWYTIQ6I.js} +2 -2
- package/dist/cli/chunks/{arena-KLGRZTTU.js → arena-UCP74DRO.js} +4 -4
- package/dist/cli/chunks/{audit-FKKLR22S.js → audit-M4FNIX47.js} +2 -2
- package/dist/cli/chunks/base-A7JGM473.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-PNPV64M3.js → better-sqlite3-RIBLRHJL.js} +2 -2
- package/dist/cli/chunks/{brain-handler-YTGYC2QW.js → brain-handler-OY6Q2GY5.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-KIIBEJ5S.js → branch-enumerator-TQWN4NIX.js} +2 -2
- package/dist/cli/chunks/{browser-7YZLTV2C.js → browser-2EH3RXJ2.js} +2 -2
- package/dist/cli/chunks/browser-workflow-TIDJWULK.js +2 -0
- package/dist/cli/chunks/{chunk-4IGSL7CX.js → chunk-2BBKA5J4.js} +1 -1
- package/dist/cli/chunks/{chunk-LZVKR7HV.js → chunk-2QU6C3OS.js} +2 -2
- package/dist/cli/chunks/{chunk-B3B5QZYN.js → chunk-2TUVBEWK.js} +2 -2
- package/dist/cli/chunks/{chunk-W72CUJRB.js → chunk-2WVLFT2I.js} +1 -1
- package/dist/cli/chunks/{chunk-JZYXYHEE.js → chunk-2ZC7S4UG.js} +2 -2
- package/dist/cli/chunks/{chunk-PG7KISET.js → chunk-3GWSHRDA.js} +2 -2
- package/dist/cli/chunks/{chunk-VKLPSPPI.js → chunk-3J6LYF6I.js} +2 -2
- package/dist/cli/chunks/{chunk-ZSMHQENA.js → chunk-3LP5GPGU.js} +1 -1
- package/dist/cli/chunks/{chunk-MWAEUJDC.js → chunk-453UDYD2.js} +229 -225
- package/dist/cli/chunks/{chunk-DI7REPYC.js → chunk-4OTA6KYJ.js} +2 -2
- package/dist/cli/chunks/{chunk-SDVL5TZK.js → chunk-5ASPEVVF.js} +1 -1
- package/dist/cli/chunks/{chunk-LCDMB5SP.js → chunk-5DG6H553.js} +1 -1
- package/dist/cli/chunks/{chunk-JFTRHS5V.js → chunk-5OJXVVTI.js} +2 -2
- package/dist/cli/chunks/{chunk-6B3COND2.js → chunk-6VQKNPGY.js} +2 -2
- package/dist/cli/chunks/{chunk-NKKDO5W4.js → chunk-72QNONO6.js} +2 -2
- package/dist/cli/chunks/{chunk-OZDRAKFF.js → chunk-73EWPVBJ.js} +2 -2
- package/dist/cli/chunks/{chunk-CP4CSI5R.js → chunk-7BD7DZCB.js} +2 -2
- package/dist/cli/chunks/{chunk-DNC27OP7.js → chunk-7E5NYLJT.js} +2 -2
- package/dist/cli/chunks/{chunk-CDNXXNQM.js → chunk-7MBF3S25.js} +1 -1
- package/dist/cli/chunks/{chunk-IFQPGBKQ.js → chunk-7PTA7AVW.js} +1 -1
- package/dist/cli/chunks/{chunk-QNNH5TDV.js → chunk-7Q6CMSMD.js} +3 -3
- package/dist/cli/chunks/{chunk-SDGRU6SG.js → chunk-ACV2WVMX.js} +1 -1
- package/dist/cli/chunks/{chunk-XRJH5KXF.js → chunk-AURDGQNB.js} +2 -2
- package/dist/cli/chunks/{chunk-LIOK7WBX.js → chunk-AVKGDS6F.js} +2 -2
- package/dist/cli/chunks/{chunk-DPSLJ6IW.js → chunk-AYOTODUV.js} +1 -1
- package/dist/cli/chunks/{chunk-OK6CSJOX.js → chunk-B4QA3YN6.js} +1 -1
- package/dist/cli/chunks/{chunk-MTWBYHMS.js → chunk-BA4WZIAQ.js} +2 -2
- package/dist/cli/chunks/{chunk-RNJRKFMX.js → chunk-BEOGI5FC.js} +2 -2
- package/dist/cli/chunks/{chunk-XYXRO7VP.js → chunk-C33BMWYZ.js} +2 -2
- package/dist/cli/chunks/chunk-C4OYHUJV.js +2 -0
- package/dist/cli/chunks/{chunk-ON6C2OYG.js → chunk-CERSTEAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-YATW2RWQ.js → chunk-D3S4SRSA.js} +2 -2
- package/dist/cli/chunks/{chunk-CCUUTTTJ.js → chunk-DCJIXDO6.js} +2 -2
- package/dist/cli/chunks/chunk-DDQWW22L.js +6 -0
- package/dist/cli/chunks/{chunk-FWQZZ22V.js → chunk-DV7662EZ.js} +1 -1
- package/dist/cli/chunks/{chunk-HVE3EH36.js → chunk-ETGEGMYS.js} +3 -3
- package/dist/cli/chunks/{chunk-CO6UY7ZU.js → chunk-ETZ62NFD.js} +1 -1
- package/dist/cli/chunks/{chunk-G73PIM7X.js → chunk-F62ZQZQQ.js} +2 -2
- package/dist/cli/chunks/{chunk-AGQIJWAD.js → chunk-F6Y7DTHR.js} +2 -2
- package/dist/cli/chunks/{chunk-LT4OZHMK.js → chunk-FGOVDO3R.js} +2 -2
- package/dist/cli/chunks/{chunk-YUK4KU2B.js → chunk-FMKALHT3.js} +2 -2
- package/dist/cli/chunks/{chunk-X3NEQ3SL.js → chunk-FMULOSBL.js} +1 -1
- package/dist/cli/chunks/{chunk-3AG2MM7U.js → chunk-FTOICJQG.js} +2 -2
- package/dist/cli/chunks/{chunk-YQYTQRTR.js → chunk-G25YZ7Z6.js} +2 -2
- package/dist/cli/chunks/{chunk-QHLENBGB.js → chunk-G5VE3HQW.js} +2 -2
- package/dist/cli/chunks/{chunk-XLQX77KP.js → chunk-GBFAQ4DW.js} +1 -1
- package/dist/cli/chunks/{chunk-Z57UERQZ.js → chunk-GGSXHGWD.js} +2 -2
- package/dist/cli/chunks/{chunk-TXLLF7XR.js → chunk-HHSEIPSQ.js} +1 -1
- package/dist/cli/chunks/{chunk-4G2GTX2V.js → chunk-HJFQVKPI.js} +1 -1
- package/dist/cli/chunks/{chunk-WKLI5Z3L.js → chunk-HMSPPGUF.js} +2 -2
- package/dist/cli/chunks/{chunk-2KP5TJS2.js → chunk-HNSZDIQU.js} +2 -2
- package/dist/cli/chunks/{chunk-77BVW2CT.js → chunk-I2HQLBWG.js} +2 -2
- package/dist/cli/chunks/{chunk-G2J7WGOG.js → chunk-IFTEM672.js} +2 -2
- package/dist/cli/chunks/{chunk-Q7B7T4YK.js → chunk-IHNBZ5XG.js} +2 -2
- package/dist/cli/chunks/{chunk-5GPOSKGP.js → chunk-IKNDGXZZ.js} +2 -2
- package/dist/cli/chunks/{chunk-ALFF4AAM.js → chunk-IOQYSR5S.js} +2 -2
- package/dist/cli/chunks/{chunk-7LHN6WBX.js → chunk-IQSPL2H4.js} +2 -2
- package/dist/cli/chunks/{chunk-E5GUTKET.js → chunk-ISVBO4XO.js} +2 -2
- package/dist/cli/chunks/{chunk-KTBBSOZG.js → chunk-ITRUZ3WE.js} +2 -2
- package/dist/cli/chunks/{chunk-OIU6PKLF.js → chunk-J425SQFE.js} +2 -2
- package/dist/cli/chunks/{chunk-NFZY6ZVY.js → chunk-JN3IQB4L.js} +1 -1
- package/dist/cli/chunks/{chunk-6B32USSC.js → chunk-JNX7IRSI.js} +2 -2
- package/dist/cli/chunks/{chunk-PRYSWF6F.js → chunk-JQM64WJ2.js} +1 -1
- package/dist/cli/chunks/{chunk-4B676LUC.js → chunk-JQSA6EMI.js} +2 -2
- package/dist/cli/chunks/{chunk-NL4EKO2J.js → chunk-JZFA2PWY.js} +2 -2
- package/dist/cli/chunks/{chunk-54PBHRRW.js → chunk-KBVXKFDI.js} +4 -4
- package/dist/cli/chunks/{chunk-Z4WAJ647.js → chunk-KOOY72E3.js} +2 -2
- package/dist/cli/chunks/{chunk-M5PBVK3V.js → chunk-KZE5UR4T.js} +3 -3
- package/dist/cli/chunks/{chunk-2RDWYJJY.js → chunk-L7GQKJLV.js} +2 -2
- package/dist/cli/chunks/{chunk-GXKCRIHK.js → chunk-LCDRRAES.js} +2 -2
- package/dist/cli/chunks/{chunk-VL4MSE3J.js → chunk-LFT7WYHW.js} +2 -2
- package/dist/cli/chunks/{chunk-LBR5FXPD.js → chunk-LTH6XARD.js} +5 -5
- package/dist/cli/chunks/{chunk-KWKGROPS.js → chunk-LYV7WJWA.js} +1 -1
- package/dist/cli/chunks/{chunk-HVFHPDXV.js → chunk-MDYI4IIW.js} +1 -1
- package/dist/cli/chunks/{chunk-KTEWRRDZ.js → chunk-MKLLB4PM.js} +4 -4
- package/dist/cli/chunks/{chunk-34LWJDCM.js → chunk-MTSMFEWK.js} +2 -2
- package/dist/cli/chunks/{chunk-CHPL7TA4.js → chunk-N3R3JGUY.js} +1 -1
- package/dist/cli/chunks/{chunk-HWJEHXPQ.js → chunk-N52ZBTPM.js} +2 -2
- package/dist/cli/chunks/{chunk-X4CHPEOQ.js → chunk-N7MKF4F4.js} +1 -1
- package/dist/cli/chunks/{chunk-H35FNLQJ.js → chunk-NBTKI2TX.js} +2 -2
- package/dist/cli/chunks/{chunk-FPEFIJQ6.js → chunk-NI7O3GKZ.js} +3 -3
- package/dist/cli/chunks/{chunk-2UL4UK6V.js → chunk-NQD4CMXC.js} +2 -2
- package/dist/cli/chunks/{chunk-DNEYBK7X.js → chunk-O6FN53HB.js} +1 -1
- package/dist/cli/chunks/{chunk-XPAH7SEX.js → chunk-OZQIDDXB.js} +2 -2
- package/dist/cli/chunks/{chunk-474ZUVGP.js → chunk-P3NV6KN3.js} +1 -1
- package/dist/cli/chunks/{chunk-JITZAJJN.js → chunk-PC3VIR2A.js} +3 -3
- package/dist/cli/chunks/{chunk-WYAHOUK2.js → chunk-PJ4HSXH3.js} +1 -1
- package/dist/cli/chunks/{chunk-Z7FWPSOK.js → chunk-PUTRXS5I.js} +2 -2
- package/dist/cli/chunks/{chunk-GDHJZPNC.js → chunk-PVBJUANU.js} +2 -2
- package/dist/cli/chunks/{chunk-PTPGYUT2.js → chunk-QCJ7YOVN.js} +2 -2
- package/dist/cli/chunks/{chunk-T2Z3M6HA.js → chunk-QGBXENIP.js} +1 -1
- package/dist/cli/chunks/{chunk-OLOKPY5O.js → chunk-QYXTESM3.js} +2 -2
- package/dist/cli/chunks/{chunk-OV3ESWN4.js → chunk-QZQGYSDG.js} +2 -2
- package/dist/cli/chunks/{chunk-HEC2UWY3.js → chunk-R3YO3Z7I.js} +4 -4
- package/dist/cli/chunks/{chunk-JQBD4JO2.js → chunk-R7FHQQAV.js} +2 -2
- package/dist/cli/chunks/{chunk-MSWBVPVQ.js → chunk-RKDNLPZM.js} +2 -2
- package/dist/cli/chunks/{chunk-BALWMVCX.js → chunk-RPYYS6BX.js} +2 -2
- package/dist/cli/chunks/{chunk-R2LWUBET.js → chunk-RVQW6CBF.js} +2 -2
- package/dist/cli/chunks/{chunk-VM5C4DIV.js → chunk-SHW43QQV.js} +2 -2
- package/dist/cli/chunks/{chunk-S6PGWJDK.js → chunk-SKL225P5.js} +2 -2
- package/dist/cli/chunks/{chunk-Y4XTPEAC.js → chunk-SLWJNHCR.js} +2 -2
- package/dist/cli/chunks/{chunk-XNFYQRJ2.js → chunk-SQPDGRYR.js} +1 -1
- package/dist/cli/chunks/{chunk-NOP5ZJ7E.js → chunk-T6KT63NC.js} +2 -2
- package/dist/cli/chunks/{chunk-C6TUX7YJ.js → chunk-TGLEREP5.js} +2 -2
- package/dist/cli/chunks/{chunk-O75ODKCX.js → chunk-TYS77XHV.js} +2 -2
- package/dist/cli/chunks/{chunk-Q32LITZL.js → chunk-UEH6C5JA.js} +1 -1
- package/dist/cli/chunks/{chunk-6R6RC6YJ.js → chunk-UFMW25MS.js} +2 -2
- package/dist/cli/chunks/{chunk-BMSMDD72.js → chunk-V6WJVFRN.js} +2 -2
- package/dist/cli/chunks/{chunk-GHIHW3IE.js → chunk-VGYUVMSN.js} +2 -2
- package/dist/cli/chunks/{chunk-33CLP2NE.js → chunk-VHON5NDM.js} +3 -3
- package/dist/cli/chunks/{chunk-D7IH2A3C.js → chunk-VVJXQ4FR.js} +2 -2
- package/dist/cli/chunks/{chunk-K5Y64X2U.js → chunk-WBQEOACC.js} +2 -2
- package/dist/cli/chunks/{chunk-NWIKNQLJ.js → chunk-WP6XUSVW.js} +1 -1
- package/dist/cli/chunks/{chunk-FXPAGKVS.js → chunk-X2L4POJE.js} +1 -1
- package/dist/cli/chunks/{chunk-H73AA2JI.js → chunk-X2TUDGFL.js} +18 -18
- package/dist/cli/chunks/{chunk-WDZT344G.js → chunk-XKRG2U3V.js} +15 -13
- package/dist/cli/chunks/{chunk-D7ZVIL3C.js → chunk-XMZ2DHUL.js} +1 -1
- package/dist/cli/chunks/{chunk-LJEO5R32.js → chunk-XSG4XKGO.js} +2 -2
- package/dist/cli/chunks/{chunk-UU422SST.js → chunk-XVQUVCFR.js} +2 -2
- package/dist/cli/chunks/{chunk-SSRMFU4P.js → chunk-XW5OXBVV.js} +2 -2
- package/dist/cli/chunks/{chunk-DDMKCHYT.js → chunk-Y7TBCHW4.js} +2 -2
- package/dist/cli/chunks/{chunk-XKIVOADM.js → chunk-Y7UJC5OL.js} +3 -3
- package/dist/cli/chunks/{chunk-HE3KLHNO.js → chunk-YQIMO7VJ.js} +2 -2
- package/dist/cli/chunks/{chunk-RXWPYY6H.js → chunk-YR44KQUK.js} +1 -1
- package/dist/cli/chunks/{chunk-QHGHWATK.js → chunk-YRP73HO4.js} +1 -1
- package/dist/cli/chunks/{chunk-5KUINS3D.js → chunk-YSTWLDVD.js} +3 -3
- package/dist/cli/chunks/{chunk-YMJ5AVVU.js → chunk-Z45QDDZQ.js} +1 -1
- package/dist/cli/chunks/{chunk-2F4VRCT6.js → chunk-ZEUUVLS2.js} +1 -1
- package/dist/cli/chunks/{chunk-7NKVEEXD.js → chunk-ZFP3O5FM.js} +1 -1
- package/dist/cli/chunks/{chunk-4AG2TQEF.js → chunk-ZK56THZT.js} +3 -3
- package/dist/cli/chunks/{chunk-4OHLPG6B.js → chunk-ZT4NPTML.js} +2 -2
- package/dist/cli/chunks/{ci-2G4BBIQD.js → ci-4JK2NFCD.js} +2 -2
- package/dist/cli/chunks/{ci-output-SI3ME52L.js → ci-output-LCGTJQWC.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-KTICF3EC.js → circuit-breaker-EJF7D3L4.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-F44PULFU.js → claude-flow-setup-3RUC6OB4.js} +2 -2
- package/dist/cli/chunks/client-ZLJ3JMBC.js +2 -0
- package/dist/cli/chunks/cline-installer-6LY5C5QH.js +4 -0
- package/dist/cli/chunks/{code-EDLIBN77.js → code-MPDG4UHS.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-P4NBWGTV.js → code-index-extractor-OY5GQJBM.js} +2 -2
- package/dist/cli/chunks/codex-installer-BO7E2ZVA.js +8 -0
- package/dist/cli/chunks/{completions-XPCXB5SR.js → completions-VGL3KJ2R.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-LAL5RSB7.js → complexity-analyzer-5DPUK7IL.js} +2 -2
- package/dist/cli/chunks/continuedev-installer-LFDG2D42.js +15 -0
- package/dist/cli/chunks/copilot-installer-SEMMMIZH.js +3 -0
- package/dist/cli/chunks/core-handlers-EM7FUYTI.js +2 -0
- package/dist/cli/chunks/{cost-tracker-EUJFKHGT.js → cost-tracker-OPBC6FQM.js} +2 -2
- package/dist/cli/chunks/{coverage-C75LPZYB.js → coverage-CFDUSRKU.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-DYGHQ6P5.js +2 -0
- package/dist/cli/chunks/cursor-installer-6TXUUVY4.js +3 -0
- package/dist/cli/chunks/{daemon-JR2MSTSK.js → daemon-5KO46YQR.js} +4 -4
- package/dist/cli/chunks/{daemon-BPVBZZQO.js → daemon-7BDBPPAF.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-I5H7DBNU.js → dag-attention-scheduler-6DQKZOUW.js} +2 -2
- package/dist/cli/chunks/{detect-O5TMML24.js → detect-R2QAYDPI.js} +2 -2
- package/dist/cli/chunks/{dist-node-MDZ6UQ3V.js → dist-node-3POCIJ4N.js} +2 -2
- package/dist/cli/chunks/{domain-handler-BGBTZETG.js → domain-handler-KW63CHUH.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-C2D2IEYV.js → domain-transfer-2QPOJCUD.js} +2 -2
- package/dist/cli/chunks/dream-DBE5D5BD.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-UJREBJF5.js → embed-and-insert-pattern-OIDJZQEP.js} +2 -2
- package/dist/cli/chunks/{eval-BDD24HQC.js → eval-UGEKTTAQ.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-KLVXIIYH.js → experience-capture-middleware-3BIM2TT7.js} +3 -3
- package/dist/cli/chunks/{fast-paths-5HIKAQZ7.js → fast-paths-HCJQXB7W.js} +2 -2
- package/dist/cli/chunks/{feature-flags-YE5SJPDS.js → feature-flags-GDGJKLN4.js} +2 -2
- package/dist/cli/chunks/{feature-flags-NM3S7OEW.js → feature-flags-W4JSFBMV.js} +2 -2
- package/dist/cli/chunks/{file-discovery-PWRQZNJQ.js → file-discovery-JMUZ4MUH.js} +2 -2
- package/dist/cli/chunks/{fleet-UIPKNQX3.js → fleet-YNNK2CKW.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-GWGKZRTO.js → gnn-wrapper-R2ZY6CDD.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-GQHJPNAY.js → heartbeat-handler-OZX2EJHQ.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-NFHAANNL.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-HMPCZFBY.js +2 -0
- package/dist/cli/chunks/hnsw-index-KRIWSXX4.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-NE5JIRG3.js → hnsw-legacy-bridge-3S6TYCG3.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-MROES2Y7.js → hnswlib-node-HMZC5TXM.js} +2 -2
- package/dist/cli/chunks/{hooks-3NBBUOB6.js → hooks-KM7WR35T.js} +10 -10
- package/dist/cli/chunks/hybrid-router-BAB32B2W.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-6NRFVDV7.js → hypergraph-engine-RX53A73M.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-F3OOGTXF.js → hypergraph-handler-3QQB3H3Z.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-3D6XHWQE.js +2 -0
- package/dist/cli/chunks/{init-handler-DOTXTVUI.js → init-handler-Y62RH4ZI.js} +22 -21
- package/dist/cli/chunks/init-wizard-LLU3WVGC.js +2 -0
- package/dist/cli/chunks/kernel-ZFHAYHHJ.js +2 -0
- package/dist/cli/chunks/kilocode-installer-26R253L2.js +4 -0
- package/dist/cli/chunks/{kiro-installer-WBJDXY7Q.js → kiro-installer-PFA5QPZZ.js} +4 -4
- package/dist/cli/chunks/knowledge-graph-ETZ65KOY.js +2 -0
- package/dist/cli/chunks/{learning-BC5N4V3D.js → learning-CQLM5ANX.js} +3 -3
- package/dist/cli/chunks/{llm-router-T427WD6R.js → llm-router-QZ5PG4PF.js} +4 -4
- package/dist/cli/chunks/llm-router-service-R6CTGF5I.js +2 -0
- package/dist/cli/chunks/{load-M6SL2O3M.js → load-UPA6LPHM.js} +2 -2
- package/dist/cli/chunks/load-test-UOWIJUCH.js +2 -0
- package/dist/cli/chunks/mcp-LSWTLAJ4.js +2 -0
- package/dist/cli/chunks/{memory-FJAO3CSF.js → memory-VGEYYGCG.js} +5 -5
- package/dist/cli/chunks/memory-backend-E3ZQKW7A.js +2 -0
- package/dist/cli/chunks/{memory-handlers-S3W6IQJL.js → memory-handlers-QBURG7NA.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-FYOVZ4OH.js → multi-model-executor-VZVFBIKC.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-APSBE4UR.js → opencode-installer-PBQAXNLV.js} +2 -2
- package/dist/cli/chunks/{orchestrator-LN53EQ45.js → orchestrator-YND7JB5O.js} +16 -16
- package/dist/cli/chunks/pattern-null-store-OUOJO2RH.js +2 -0
- package/dist/cli/chunks/{pipeline-BYWXY2NO.js → pipeline-GM5RRUES.js} +2 -2
- package/dist/cli/chunks/{platform-CZ774YPS.js → platform-L7OGGRSL.js} +2 -2
- package/dist/cli/chunks/{plugin-72NXRX5Z.js → plugin-N4YAE6H5.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-G4DE6YKJ.js → prime-radiant-advanced-wasm-7D67XV6Z.js} +2 -2
- package/dist/cli/chunks/protocol-executor-KHAPG5CP.js +2 -0
- package/dist/cli/chunks/{protocol-handler-UH6CV63V.js → protocol-handler-V2WTFU7N.js} +2 -2
- package/dist/cli/chunks/{prove-V7FAT5HF.js → prove-33DS5Z3N.js} +2 -2
- package/dist/cli/chunks/provider-manager-FGPPW7T4.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-TS7XOJDA.js +2 -0
- package/dist/cli/chunks/{quality-N2K62FQM.js → quality-WCSEA5GH.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-J35FNFQ3.js +2 -0
- package/dist/cli/chunks/{real-embeddings-TKHUE2RL.js → real-embeddings-OQ5F37DG.js} +2 -2
- package/dist/cli/chunks/roocode-installer-II7LIR2X.js +4 -0
- package/dist/cli/chunks/router-AFTKPDI5.js +2 -0
- package/dist/cli/chunks/routing-feedback-SABZUJTF.js +2 -0
- package/dist/cli/chunks/{routing-handler-UUWD4IKG.js → routing-handler-6OFHARIY.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-B4WPTGCI.js → ruvector-commands-GD5JTR4M.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-MNRJGNIX.js → rvf-dual-writer-HSK6BYZV.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-P2RDBFA4.js → rvf-migration-adapter-554SMF5S.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-DFESZQSS.js → rvf-migration-coordinator-OFDBCAYE.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-57MDDSFQ.js +2 -0
- package/dist/cli/chunks/safe-db-2HR6MVYM.js +2 -0
- package/dist/cli/chunks/schedule-KLVAN6XI.js +2 -0
- package/dist/cli/chunks/scheduler-WYZ6BC5Y.js +2 -0
- package/dist/cli/chunks/{security-MHLTNKFX.js → security-GN4J6DSS.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-LR7E2EQI.js → shared-rvf-adapter-Q4PM3QCN.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-RFFON2F3.js → shared-rvf-dual-writer-R5WK5BXQ.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-2CGU5INO.js +2 -0
- package/dist/cli/chunks/{status-handler-ROPTYGQC.js → status-handler-AHS5WVMG.js} +2 -2
- package/dist/cli/chunks/{structural-health-YGUFXGJ6.js → structural-health-5KUKNLHZ.js} +2 -2
- package/dist/cli/chunks/{sync-6JTRTDL3.js → sync-PUMM3SR6.js} +2 -2
- package/dist/cli/chunks/{sync-NZZUMTKC.js → sync-TQLGD5HX.js} +2 -2
- package/dist/cli/chunks/{task-handler-KYMV3AC6.js → task-handler-D7VXV4AF.js} +2 -2
- package/dist/cli/chunks/{task-handlers-Z63YBQVU.js → task-handlers-QMN4SWUG.js} +3 -3
- package/dist/cli/chunks/{test-O6BQ7FGP.js → test-HEWZR6YQ.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-T3IOXEFI.js → test-scheduling-VTMLBEPA.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-CTI2ULJF.js → token-bootstrap-IYBG7PQ6.js} +2 -2
- package/dist/cli/chunks/{token-usage-TNQTNAVT.js → token-usage-C7H27BFZ.js} +2 -2
- package/dist/cli/chunks/{transformers-CJQDNQER.js → transformers-5ZJVC6NB.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-RBZWLEVQ.js → tree-sitter-wasm-parser-EARBJG2H.js} +2 -2
- package/dist/cli/chunks/{types-OMFCO364.js → types-3IHE42PZ.js} +2 -2
- package/dist/cli/chunks/unified-memory-PMYRQC5K.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-7TRL2K5Q.js +2 -0
- package/dist/cli/chunks/unified-persistence-S4BNJK4S.js +2 -0
- package/dist/cli/chunks/{upgrade-KRVOYWN3.js → upgrade-YP3VFSXO.js} +2 -2
- package/dist/cli/chunks/{validate-32FKHMKQ.js → validate-VSBNKPN6.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-45RPBPPH.js → validate-swarm-GOCJVWXE.js} +2 -2
- package/dist/cli/chunks/{vibium-LCTNDCKK.js → vibium-U6YKCLDF.js} +2 -2
- package/dist/cli/chunks/visual-security-RPMZ3J7L.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-FX2EFCLH.js → web-tree-sitter-TSNVGWSN.js} +2 -2
- package/dist/cli/chunks/windsurf-installer-2VKMEFSD.js +7 -0
- package/dist/cli/chunks/witness-chain-BTDZSQ6P.js +2 -0
- package/dist/cli/chunks/{witness-chain-YG2UWTYZ.js → witness-chain-BWZCW52H.js} +2 -2
- package/dist/cli/chunks/{workflow-AEJ37RNV.js → workflow-J6SCYLU3.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-42B62D3V.js +2 -0
- package/dist/cli/chunks/{wrappers-GSU6VNU6.js → wrappers-M5C7DONW.js} +2 -2
- package/dist/cli/commands/mcp.js +28 -28
- package/dist/cli/handlers/init-handler.d.ts +2 -0
- package/dist/cli/handlers/init-handler.js +22 -1
- package/dist/domains/test-generation/coordinator.d.ts +24 -1
- package/dist/domains/test-generation/coordinator.js +137 -2
- package/dist/domains/test-generation/plugin.js +23 -1
- package/dist/init/cline-installer.d.ts +6 -0
- package/dist/init/cline-installer.js +3 -1
- package/dist/init/codex-installer.d.ts +6 -0
- package/dist/init/codex-installer.js +3 -1
- package/dist/init/continuedev-installer.d.ts +6 -0
- package/dist/init/continuedev-installer.js +10 -3
- package/dist/init/copilot-installer.d.ts +6 -0
- package/dist/init/copilot-installer.js +3 -1
- package/dist/init/cursor-installer.d.ts +6 -0
- package/dist/init/cursor-installer.js +3 -1
- package/dist/init/kilocode-installer.d.ts +6 -0
- package/dist/init/kilocode-installer.js +3 -1
- package/dist/init/kiro-installer.d.ts +5 -0
- package/dist/init/kiro-installer.js +4 -4
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/07-hooks.js +5 -0
- package/dist/init/phases/08-mcp.js +34 -7
- package/dist/init/phases/09-assets.js +30 -27
- package/dist/init/phases/11-claude-md.d.ts +1 -0
- package/dist/init/phases/11-claude-md.js +8 -0
- package/dist/init/phases/13-governance.js +5 -0
- package/dist/init/phases/phase-interface.d.ts +8 -0
- package/dist/init/platform-config-generator.d.ts +3 -1
- package/dist/init/platform-config-generator.js +31 -17
- package/dist/init/roocode-installer.d.ts +6 -0
- package/dist/init/roocode-installer.js +3 -1
- package/dist/init/windsurf-installer.d.ts +6 -0
- package/dist/init/windsurf-installer.js +3 -1
- package/dist/integrations/darwin/index.d.ts +10 -0
- package/dist/integrations/darwin/index.js +2 -0
- package/dist/integrations/darwin/qe-fitness.d.ts +83 -0
- package/dist/integrations/darwin/qe-fitness.js +147 -0
- package/dist/integrations/darwin/types.d.ts +62 -0
- package/dist/integrations/darwin/types.js +14 -0
- package/dist/mcp/bundle.js +376 -371
- package/dist/mcp/entry.js +10 -1
- package/dist/mcp/protocol-server.js +17 -0
- package/dist/optimization/session-cache.d.ts +11 -0
- package/dist/optimization/session-cache.js +31 -0
- package/dist/routing/escalation/auto-escalation-tracker.d.ts +34 -15
- package/dist/routing/escalation/auto-escalation-tracker.js +24 -15
- package/dist/routing/free-tier/executor.d.ts +119 -0
- package/dist/routing/free-tier/executor.js +139 -0
- package/dist/routing/free-tier/feedback-sink.d.ts +49 -0
- package/dist/routing/free-tier/feedback-sink.js +52 -0
- package/dist/routing/free-tier/index.d.ts +14 -0
- package/dist/routing/free-tier/index.js +5 -0
- package/dist/routing/free-tier/ladder.d.ts +41 -0
- package/dist/routing/free-tier/ladder.js +78 -0
- package/dist/routing/free-tier/provider.d.ts +57 -0
- package/dist/routing/free-tier/provider.js +111 -0
- package/dist/routing/free-tier/types.d.ts +80 -0
- package/dist/routing/free-tier/types.js +16 -0
- package/package.json +6 -2
- package/dist/cli/chunks/adapter-PAMPC2X7.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-DGKLEC6I.js +0 -2
- package/dist/cli/chunks/base-6HJR4VJT.js +0 -2
- package/dist/cli/chunks/browser-workflow-OWNU5XK7.js +0 -2
- package/dist/cli/chunks/chunk-2B2RLPK3.js +0 -2
- package/dist/cli/chunks/chunk-NSI3WL6P.js +0 -6
- package/dist/cli/chunks/client-E6GK5NWT.js +0 -2
- package/dist/cli/chunks/cline-installer-A7G7OXIS.js +0 -4
- package/dist/cli/chunks/codex-installer-JB3ULDQP.js +0 -8
- package/dist/cli/chunks/continuedev-installer-GSYBLQV7.js +0 -14
- package/dist/cli/chunks/copilot-installer-7B56CNU2.js +0 -3
- package/dist/cli/chunks/core-handlers-HJUORTFU.js +0 -2
- package/dist/cli/chunks/cross-domain-router-35WVZFAZ.js +0 -2
- package/dist/cli/chunks/cursor-installer-WXQFM4KJ.js +0 -3
- package/dist/cli/chunks/dream-QTZDMP6D.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-N433NZCG.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-MR6W2OA4.js +0 -2
- package/dist/cli/chunks/hnsw-index-XC6EMJA2.js +0 -2
- package/dist/cli/chunks/hybrid-router-SH4IEAJA.js +0 -2
- package/dist/cli/chunks/impact-analyzer-RUTVXE7P.js +0 -2
- package/dist/cli/chunks/init-wizard-56NY5BSP.js +0 -2
- package/dist/cli/chunks/kernel-7JAN7WCO.js +0 -2
- package/dist/cli/chunks/kilocode-installer-3AXYSZTO.js +0 -4
- package/dist/cli/chunks/knowledge-graph-ST4LW3V4.js +0 -2
- package/dist/cli/chunks/llm-router-service-JNDF5MVJ.js +0 -2
- package/dist/cli/chunks/load-test-I3P3DUS5.js +0 -2
- package/dist/cli/chunks/mcp-F2V3KKG6.js +0 -2
- package/dist/cli/chunks/memory-backend-27BBT57O.js +0 -2
- package/dist/cli/chunks/pattern-null-store-SRBYJRNX.js +0 -2
- package/dist/cli/chunks/protocol-executor-WJLJHWO2.js +0 -2
- package/dist/cli/chunks/provider-manager-UKUHSHAL.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-IMUECSFZ.js +0 -2
- package/dist/cli/chunks/queen-coordinator-EC4SVNMB.js +0 -2
- package/dist/cli/chunks/roocode-installer-DFUA6FXW.js +0 -4
- package/dist/cli/chunks/router-TVTOUQLL.js +0 -2
- package/dist/cli/chunks/routing-feedback-Y4WDXNXW.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-4YSC6QKO.js +0 -2
- package/dist/cli/chunks/safe-db-RGAY54O5.js +0 -2
- package/dist/cli/chunks/schedule-KJ4GWLPJ.js +0 -2
- package/dist/cli/chunks/scheduler-AONSLVA3.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-7RZUEPM4.js +0 -2
- package/dist/cli/chunks/unified-memory-G3BYQ3WU.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-F7XUZMKW.js +0 -2
- package/dist/cli/chunks/unified-persistence-V35NXJSO.js +0 -2
- package/dist/cli/chunks/visual-security-K47U7KUM.js +0 -2
- package/dist/cli/chunks/windsurf-installer-I3TSJCNL.js +0 -7
- package/dist/cli/chunks/witness-chain-G6GJXZD3.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-SKF7GC5X.js +0 -2
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Free-tier escalation ladder (D7).
|
|
3
|
+
*
|
|
4
|
+
* Ties the configurable provider layer to the real `AutoEscalationTracker`:
|
|
5
|
+
* builds a tracker whose ladder starts at a FREE tier and escalates up the
|
|
6
|
+
* existing Claude tiers on failure (Ruv's Round-3 economics), and resolves any
|
|
7
|
+
* tier name to the concrete provider that should serve it.
|
|
8
|
+
*/
|
|
9
|
+
import { AutoEscalationTracker } from '../escalation/auto-escalation-tracker.js';
|
|
10
|
+
import type { ResolvedFreeTierProvider, QeRoutingLadder } from './types.js';
|
|
11
|
+
import type { AgentTier } from '../routing-config.js';
|
|
12
|
+
/**
|
|
13
|
+
* A ready-to-use, opinionated default: a free local Ollama tier under the three
|
|
14
|
+
* Claude tiers. Override `bindings.local.config.model` / `.kind` to point at
|
|
15
|
+
* cloud Ollama, OpenRouter, or any compatible endpoint.
|
|
16
|
+
*/
|
|
17
|
+
export declare function defaultFreeTierLadder(model?: string): QeRoutingLadder;
|
|
18
|
+
/** Validate a ladder: every tier in `tierOrder` must have a binding, bounds must exist. */
|
|
19
|
+
export declare function validateLadder(ladder: QeRoutingLadder): void;
|
|
20
|
+
/**
|
|
21
|
+
* Build an `AutoEscalationTracker` over the ladder's string tiers. Agents start
|
|
22
|
+
* at the bottom (free) tier; consecutive failures escalate, successes de-escalate
|
|
23
|
+
* — bounded by min/maxTier. Reuses the unchanged, tested tracker engine.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createFreeTierEscalation(ladder: QeRoutingLadder): {
|
|
26
|
+
tracker: AutoEscalationTracker<string>;
|
|
27
|
+
baseTier: string;
|
|
28
|
+
};
|
|
29
|
+
export type ResolvedTier = {
|
|
30
|
+
provider: 'claude';
|
|
31
|
+
claudeTier: AgentTier;
|
|
32
|
+
} | {
|
|
33
|
+
provider: 'free-tier';
|
|
34
|
+
resolved: ResolvedFreeTierProvider;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Resolve a tier name to the concrete handler: either a Claude tier (for the
|
|
38
|
+
* existing router) or a fully-resolved free-tier provider (env key read here).
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveTier(ladder: QeRoutingLadder, tier: string, env?: NodeJS.ProcessEnv): ResolvedTier;
|
|
41
|
+
//# sourceMappingURL=ladder.d.ts.map
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Free-tier escalation ladder (D7).
|
|
3
|
+
*
|
|
4
|
+
* Ties the configurable provider layer to the real `AutoEscalationTracker`:
|
|
5
|
+
* builds a tracker whose ladder starts at a FREE tier and escalates up the
|
|
6
|
+
* existing Claude tiers on failure (Ruv's Round-3 economics), and resolves any
|
|
7
|
+
* tier name to the concrete provider that should serve it.
|
|
8
|
+
*/
|
|
9
|
+
import { AutoEscalationTracker } from '../escalation/auto-escalation-tracker.js';
|
|
10
|
+
import { resolveFreeTierProvider } from './provider.js';
|
|
11
|
+
/**
|
|
12
|
+
* A ready-to-use, opinionated default: a free local Ollama tier under the three
|
|
13
|
+
* Claude tiers. Override `bindings.local.config.model` / `.kind` to point at
|
|
14
|
+
* cloud Ollama, OpenRouter, or any compatible endpoint.
|
|
15
|
+
*/
|
|
16
|
+
export function defaultFreeTierLadder(model = 'qwen3:8b') {
|
|
17
|
+
return {
|
|
18
|
+
tierOrder: ['local', 'haiku', 'sonnet', 'opus'],
|
|
19
|
+
minTier: 'local',
|
|
20
|
+
maxTier: 'opus',
|
|
21
|
+
escalateAfterFailures: 2,
|
|
22
|
+
deEscalateAfterSuccesses: 5,
|
|
23
|
+
bindings: {
|
|
24
|
+
local: { provider: 'free-tier', config: { kind: 'local-ollama', model } },
|
|
25
|
+
haiku: { provider: 'claude', claudeTier: 'haiku' },
|
|
26
|
+
sonnet: { provider: 'claude', claudeTier: 'sonnet' },
|
|
27
|
+
opus: { provider: 'claude', claudeTier: 'opus' },
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** Validate a ladder: every tier in `tierOrder` must have a binding, bounds must exist. */
|
|
32
|
+
export function validateLadder(ladder) {
|
|
33
|
+
if (ladder.tierOrder.length === 0)
|
|
34
|
+
throw new Error('free-tier ladder: tierOrder is empty');
|
|
35
|
+
for (const tier of ladder.tierOrder) {
|
|
36
|
+
if (!ladder.bindings[tier])
|
|
37
|
+
throw new Error(`free-tier ladder: no binding for tier "${tier}"`);
|
|
38
|
+
}
|
|
39
|
+
const min = ladder.minTier ?? ladder.tierOrder[0];
|
|
40
|
+
const max = ladder.maxTier ?? ladder.tierOrder[ladder.tierOrder.length - 1];
|
|
41
|
+
if (!ladder.tierOrder.includes(min))
|
|
42
|
+
throw new Error(`free-tier ladder: minTier "${min}" not in tierOrder`);
|
|
43
|
+
if (!ladder.tierOrder.includes(max))
|
|
44
|
+
throw new Error(`free-tier ladder: maxTier "${max}" not in tierOrder`);
|
|
45
|
+
if (ladder.tierOrder.indexOf(min) > ladder.tierOrder.indexOf(max)) {
|
|
46
|
+
throw new Error('free-tier ladder: minTier is above maxTier');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Build an `AutoEscalationTracker` over the ladder's string tiers. Agents start
|
|
51
|
+
* at the bottom (free) tier; consecutive failures escalate, successes de-escalate
|
|
52
|
+
* — bounded by min/maxTier. Reuses the unchanged, tested tracker engine.
|
|
53
|
+
*/
|
|
54
|
+
export function createFreeTierEscalation(ladder) {
|
|
55
|
+
validateLadder(ladder);
|
|
56
|
+
const tracker = new AutoEscalationTracker({
|
|
57
|
+
tierOrder: ladder.tierOrder,
|
|
58
|
+
minTier: ladder.minTier ?? ladder.tierOrder[0],
|
|
59
|
+
maxTier: ladder.maxTier ?? ladder.tierOrder[ladder.tierOrder.length - 1],
|
|
60
|
+
escalateAfterFailures: ladder.escalateAfterFailures ?? 2,
|
|
61
|
+
deEscalateAfterSuccesses: ladder.deEscalateAfterSuccesses ?? 5,
|
|
62
|
+
});
|
|
63
|
+
return { tracker, baseTier: ladder.tierOrder[0] };
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolve a tier name to the concrete handler: either a Claude tier (for the
|
|
67
|
+
* existing router) or a fully-resolved free-tier provider (env key read here).
|
|
68
|
+
*/
|
|
69
|
+
export function resolveTier(ladder, tier, env = process.env) {
|
|
70
|
+
const binding = ladder.bindings[tier];
|
|
71
|
+
if (!binding)
|
|
72
|
+
throw new Error(`free-tier ladder: no binding for tier "${tier}"`);
|
|
73
|
+
if (binding.provider === 'claude') {
|
|
74
|
+
return { provider: 'claude', claudeTier: binding.claudeTier };
|
|
75
|
+
}
|
|
76
|
+
return { provider: 'free-tier', resolved: resolveFreeTierProvider(binding.config, env) };
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=ladder.js.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Free-tier provider resolver + OpenAI-compatible chat (D7).
|
|
3
|
+
*
|
|
4
|
+
* Pure resolution (presets + env key) is split from the network call so the
|
|
5
|
+
* config logic is unit-testable without a server. The chat call targets the
|
|
6
|
+
* universal `/v1/chat/completions` shape (verified live against the M5 host
|
|
7
|
+
* Ollama on 2026-06-19) and is reasoning-model aware.
|
|
8
|
+
*/
|
|
9
|
+
import type { FreeTierKind, FreeTierProviderConfig, ResolvedFreeTierProvider } from './types.js';
|
|
10
|
+
interface Preset {
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
apiKeyEnv?: string;
|
|
13
|
+
/** True when this endpoint normally requires a key (→ missingKey flag). */
|
|
14
|
+
requiresKey: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Endpoint presets. `local-ollama` defaults to the Docker-Desktop host gateway
|
|
18
|
+
* (the M5 host) — override baseUrl to 'http://localhost:11434/v1' for a same-box
|
|
19
|
+
* Ollama. `openai-compatible` has no default URL (the caller must supply one).
|
|
20
|
+
*/
|
|
21
|
+
export declare const FREE_TIER_PRESETS: Record<FreeTierKind, Preset>;
|
|
22
|
+
/**
|
|
23
|
+
* Merge a config with its preset, read the API key from the named env var, and
|
|
24
|
+
* produce a ready-to-call provider. Pure except for the single `process.env`
|
|
25
|
+
* read (injectable via `env` for testing). Throws only on a structural error
|
|
26
|
+
* (openai-compatible without a baseUrl); a missing key is flagged, not thrown,
|
|
27
|
+
* so the caller can decide (some local endpoints accept any/no key).
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveFreeTierProvider(cfg: FreeTierProviderConfig, env?: NodeJS.ProcessEnv): ResolvedFreeTierProvider;
|
|
30
|
+
export interface ChatMessage {
|
|
31
|
+
role: 'system' | 'user' | 'assistant';
|
|
32
|
+
content: string;
|
|
33
|
+
}
|
|
34
|
+
export interface FreeTierChatResult {
|
|
35
|
+
ok: boolean;
|
|
36
|
+
/** Assistant text (answer channel only when contentOnly). Empty on failure. */
|
|
37
|
+
content: string;
|
|
38
|
+
/** Reasoning channel, when the model exposes one separately. */
|
|
39
|
+
reasoning?: string;
|
|
40
|
+
usage?: {
|
|
41
|
+
promptTokens?: number;
|
|
42
|
+
completionTokens?: number;
|
|
43
|
+
totalTokens?: number;
|
|
44
|
+
};
|
|
45
|
+
error?: string;
|
|
46
|
+
latencyMs: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* One OpenAI-compatible chat completion. Never throws — a transport/timeout/HTTP
|
|
50
|
+
* error returns `{ ok:false, error }` so an escalation loop treats it as a tier
|
|
51
|
+
* failure (and escalates) rather than crashing.
|
|
52
|
+
*/
|
|
53
|
+
export declare function freeTierChat(provider: ResolvedFreeTierProvider, messages: ChatMessage[]): Promise<FreeTierChatResult>;
|
|
54
|
+
/** Cheap liveness probe for a free-tier endpoint (Ollama /api/tags style or a tiny chat). */
|
|
55
|
+
export declare function freeTierHealth(provider: ResolvedFreeTierProvider): Promise<boolean>;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Free-tier provider resolver + OpenAI-compatible chat (D7).
|
|
3
|
+
*
|
|
4
|
+
* Pure resolution (presets + env key) is split from the network call so the
|
|
5
|
+
* config logic is unit-testable without a server. The chat call targets the
|
|
6
|
+
* universal `/v1/chat/completions` shape (verified live against the M5 host
|
|
7
|
+
* Ollama on 2026-06-19) and is reasoning-model aware.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Endpoint presets. `local-ollama` defaults to the Docker-Desktop host gateway
|
|
11
|
+
* (the M5 host) — override baseUrl to 'http://localhost:11434/v1' for a same-box
|
|
12
|
+
* Ollama. `openai-compatible` has no default URL (the caller must supply one).
|
|
13
|
+
*/
|
|
14
|
+
export const FREE_TIER_PRESETS = {
|
|
15
|
+
'local-ollama': { baseUrl: 'http://host.docker.internal:11434/v1', requiresKey: false },
|
|
16
|
+
'cloud-ollama': { baseUrl: 'https://ollama.com/v1', apiKeyEnv: 'OLLAMA_API_KEY', requiresKey: true },
|
|
17
|
+
openrouter: { baseUrl: 'https://openrouter.ai/api/v1', apiKeyEnv: 'OPENROUTER_API_KEY', requiresKey: true },
|
|
18
|
+
'openai-compatible': { baseUrl: '', requiresKey: false },
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Merge a config with its preset, read the API key from the named env var, and
|
|
22
|
+
* produce a ready-to-call provider. Pure except for the single `process.env`
|
|
23
|
+
* read (injectable via `env` for testing). Throws only on a structural error
|
|
24
|
+
* (openai-compatible without a baseUrl); a missing key is flagged, not thrown,
|
|
25
|
+
* so the caller can decide (some local endpoints accept any/no key).
|
|
26
|
+
*/
|
|
27
|
+
export function resolveFreeTierProvider(cfg, env = process.env) {
|
|
28
|
+
const preset = FREE_TIER_PRESETS[cfg.kind];
|
|
29
|
+
if (!preset)
|
|
30
|
+
throw new Error(`free-tier: unknown provider kind "${cfg.kind}"`);
|
|
31
|
+
const baseUrl = (cfg.baseUrl ?? preset.baseUrl).replace(/\/$/, '');
|
|
32
|
+
if (!baseUrl) {
|
|
33
|
+
throw new Error(`free-tier: kind "${cfg.kind}" requires an explicit baseUrl`);
|
|
34
|
+
}
|
|
35
|
+
const keyEnvName = cfg.apiKeyEnv ?? preset.apiKeyEnv;
|
|
36
|
+
const apiKey = keyEnvName ? (env[keyEnvName] ?? '').trim() : '';
|
|
37
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
38
|
+
if (apiKey)
|
|
39
|
+
headers.Authorization = `Bearer ${apiKey}`;
|
|
40
|
+
// OpenRouter etiquette headers (harmless elsewhere).
|
|
41
|
+
if (cfg.kind === 'openrouter') {
|
|
42
|
+
headers['HTTP-Referer'] = 'https://github.com/proffesor-for-testing/agentic-qe';
|
|
43
|
+
headers['X-Title'] = 'agentic-qe';
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
kind: cfg.kind,
|
|
47
|
+
model: cfg.model,
|
|
48
|
+
baseUrl,
|
|
49
|
+
headers,
|
|
50
|
+
timeoutMs: cfg.timeoutMs ?? 120_000,
|
|
51
|
+
maxTokens: cfg.maxTokens ?? 2048,
|
|
52
|
+
temperature: cfg.temperature ?? 0.2,
|
|
53
|
+
contentOnly: cfg.contentOnly ?? true,
|
|
54
|
+
missingKey: preset.requiresKey && !apiKey,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* One OpenAI-compatible chat completion. Never throws — a transport/timeout/HTTP
|
|
59
|
+
* error returns `{ ok:false, error }` so an escalation loop treats it as a tier
|
|
60
|
+
* failure (and escalates) rather than crashing.
|
|
61
|
+
*/
|
|
62
|
+
export async function freeTierChat(provider, messages) {
|
|
63
|
+
const started = Date.now();
|
|
64
|
+
const controller = new AbortController();
|
|
65
|
+
const timer = setTimeout(() => controller.abort(), provider.timeoutMs);
|
|
66
|
+
try {
|
|
67
|
+
const res = await fetch(`${provider.baseUrl}/chat/completions`, {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
headers: provider.headers,
|
|
70
|
+
body: JSON.stringify({
|
|
71
|
+
model: provider.model,
|
|
72
|
+
messages,
|
|
73
|
+
max_tokens: provider.maxTokens,
|
|
74
|
+
temperature: provider.temperature,
|
|
75
|
+
}),
|
|
76
|
+
signal: controller.signal,
|
|
77
|
+
});
|
|
78
|
+
if (!res.ok) {
|
|
79
|
+
const body = await res.text().catch(() => '');
|
|
80
|
+
return { ok: false, content: '', error: `HTTP ${res.status}: ${body.slice(0, 200)}`, latencyMs: Date.now() - started };
|
|
81
|
+
}
|
|
82
|
+
const j = (await res.json());
|
|
83
|
+
const msg = j.choices?.[0]?.message;
|
|
84
|
+
const content = (msg?.content ?? '').trim();
|
|
85
|
+
const reasoning = msg?.reasoning?.trim();
|
|
86
|
+
const text = provider.contentOnly || !reasoning ? content : `${reasoning}\n${content}`.trim();
|
|
87
|
+
return {
|
|
88
|
+
ok: text.length > 0,
|
|
89
|
+
content: text,
|
|
90
|
+
reasoning,
|
|
91
|
+
usage: j.usage
|
|
92
|
+
? { promptTokens: j.usage.prompt_tokens, completionTokens: j.usage.completion_tokens, totalTokens: j.usage.total_tokens }
|
|
93
|
+
: undefined,
|
|
94
|
+
error: text.length === 0 ? 'empty content' : undefined,
|
|
95
|
+
latencyMs: Date.now() - started,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
return { ok: false, content: '', error: e.message, latencyMs: Date.now() - started };
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
clearTimeout(timer);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** Cheap liveness probe for a free-tier endpoint (Ollama /api/tags style or a tiny chat). */
|
|
106
|
+
export async function freeTierHealth(provider) {
|
|
107
|
+
const r = await freeTierChat(provider, [{ role: 'user', content: 'ping' }]);
|
|
108
|
+
// A transport success (ok OR an "empty content" non-error reply) counts as alive.
|
|
109
|
+
return r.ok || r.error === 'empty content';
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Free-tier provider configuration (cross-pollination plan 06, D7).
|
|
3
|
+
*
|
|
4
|
+
* Lets a user place a FREE / low-cost model at the BOTTOM of the escalation
|
|
5
|
+
* ladder (below haiku), served by any OpenAI-compatible endpoint:
|
|
6
|
+
* - local-ollama — Ollama on the dev box / M5 host (zero cost, private)
|
|
7
|
+
* - cloud-ollama — ollama.com hosted models (free + paid tiers)
|
|
8
|
+
* - openrouter — OpenRouter free models (e.g. *:free) and paid
|
|
9
|
+
* - openai-compatible — any other `/v1/chat/completions` server (vLLM, LM Studio,
|
|
10
|
+
* Groq, Together, llama.cpp, ruvllm serve, …)
|
|
11
|
+
*
|
|
12
|
+
* Secrets are NEVER stored here: a provider names the ENV VAR to read its key
|
|
13
|
+
* from (`apiKeyEnv`); the key itself is read at resolve time and never persisted.
|
|
14
|
+
*/
|
|
15
|
+
import type { AgentTier } from '../routing-config.js';
|
|
16
|
+
export type FreeTierKind = 'local-ollama' | 'cloud-ollama' | 'openrouter' | 'openai-compatible';
|
|
17
|
+
export interface FreeTierProviderConfig {
|
|
18
|
+
/** Which family of OpenAI-compatible endpoint to talk to. */
|
|
19
|
+
kind: FreeTierKind;
|
|
20
|
+
/** Model id passed in the request body (e.g. 'qwen3:8b', 'mistralai/devstral-small:free'). */
|
|
21
|
+
model: string;
|
|
22
|
+
/** Override the endpoint base URL (required for 'openai-compatible'; optional otherwise). */
|
|
23
|
+
baseUrl?: string;
|
|
24
|
+
/** Name of the ENV VAR holding the API key (never the key itself). */
|
|
25
|
+
apiKeyEnv?: string;
|
|
26
|
+
/** Per-call wall-clock budget. Default 120_000 (reasoning models need ≥120s). */
|
|
27
|
+
timeoutMs?: number;
|
|
28
|
+
/** Token budget. Default 2048 (covers a reasoning channel + answer). */
|
|
29
|
+
maxTokens?: number;
|
|
30
|
+
/** Sampling temperature. Default 0.2. */
|
|
31
|
+
temperature?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Some local models (qwen3, gemma) emit a separate `reasoning` field and put
|
|
34
|
+
* the answer in `content`. When true, ignore `reasoning` and read `content`
|
|
35
|
+
* only (the default — matches the OpenAI shape). Set false to concatenate.
|
|
36
|
+
*/
|
|
37
|
+
contentOnly?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** A fully-resolved provider ready to call (preset merged, key read from env). */
|
|
40
|
+
export interface ResolvedFreeTierProvider {
|
|
41
|
+
kind: FreeTierKind;
|
|
42
|
+
model: string;
|
|
43
|
+
baseUrl: string;
|
|
44
|
+
/** Request headers incl. Authorization when a key was found. */
|
|
45
|
+
headers: Record<string, string>;
|
|
46
|
+
timeoutMs: number;
|
|
47
|
+
maxTokens: number;
|
|
48
|
+
temperature: number;
|
|
49
|
+
contentOnly: boolean;
|
|
50
|
+
/** True when the preset wants a key but none was found in env (call will likely 401). */
|
|
51
|
+
missingKey: boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A routing-ladder entry: a tier name maps EITHER to an existing Claude tier
|
|
55
|
+
* (handled by the normal router) OR to a free-tier provider (the new bottom).
|
|
56
|
+
*/
|
|
57
|
+
export type TierBinding = {
|
|
58
|
+
provider: 'claude';
|
|
59
|
+
claudeTier: AgentTier;
|
|
60
|
+
} | {
|
|
61
|
+
provider: 'free-tier';
|
|
62
|
+
config: FreeTierProviderConfig;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* A complete QE routing ladder: the ordered tiers, the per-tier bindings, and
|
|
66
|
+
* the de-/escalation bounds. Feeds `createFreeTierEscalation()`.
|
|
67
|
+
*/
|
|
68
|
+
export interface QeRoutingLadder {
|
|
69
|
+
/** Tiers in ascending order of capability/cost, e.g. ['local','haiku','sonnet','opus']. */
|
|
70
|
+
tierOrder: string[];
|
|
71
|
+
/** Binding per tier name (must cover every entry in tierOrder). */
|
|
72
|
+
bindings: Record<string, TierBinding>;
|
|
73
|
+
/** Lowest tier to de-escalate to (default: first of tierOrder). */
|
|
74
|
+
minTier?: string;
|
|
75
|
+
/** Highest tier to escalate to (default: last of tierOrder). */
|
|
76
|
+
maxTier?: string;
|
|
77
|
+
escalateAfterFailures?: number;
|
|
78
|
+
deEscalateAfterSuccesses?: number;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Free-tier provider configuration (cross-pollination plan 06, D7).
|
|
3
|
+
*
|
|
4
|
+
* Lets a user place a FREE / low-cost model at the BOTTOM of the escalation
|
|
5
|
+
* ladder (below haiku), served by any OpenAI-compatible endpoint:
|
|
6
|
+
* - local-ollama — Ollama on the dev box / M5 host (zero cost, private)
|
|
7
|
+
* - cloud-ollama — ollama.com hosted models (free + paid tiers)
|
|
8
|
+
* - openrouter — OpenRouter free models (e.g. *:free) and paid
|
|
9
|
+
* - openai-compatible — any other `/v1/chat/completions` server (vLLM, LM Studio,
|
|
10
|
+
* Groq, Together, llama.cpp, ruvllm serve, …)
|
|
11
|
+
*
|
|
12
|
+
* Secrets are NEVER stored here: a provider names the ENV VAR to read its key
|
|
13
|
+
* from (`apiKeyEnv`); the key itself is read at resolve time and never persisted.
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.11.0",
|
|
4
4
|
"description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -36,6 +36,10 @@
|
|
|
36
36
|
"./governance": {
|
|
37
37
|
"import": "./dist/governance/index.js",
|
|
38
38
|
"types": "./dist/governance/index.d.ts"
|
|
39
|
+
},
|
|
40
|
+
"./routing/free-tier": {
|
|
41
|
+
"import": "./dist/routing/free-tier/index.js",
|
|
42
|
+
"types": "./dist/routing/free-tier/index.d.ts"
|
|
39
43
|
}
|
|
40
44
|
},
|
|
41
45
|
"bin": {
|
|
@@ -66,7 +70,7 @@
|
|
|
66
70
|
"test:all": "npm test -- --run",
|
|
67
71
|
"test:mcp": "npm run test:unit:mcp",
|
|
68
72
|
"test:mcp:integration": "npm test -- --run tests/integration/mcp/",
|
|
69
|
-
"test:integration:fast": "NODE_OPTIONS='--max-old-space-size=2048 --expose-gc' vitest run tests/integration/mcp/fleet-init-wires-daemon.test.ts tests/integration/workers/workers-reach-domains.test.ts tests/integration/learning/coordinator-roundtrip.test.ts tests/integration/bridge/bridge-end-to-end.test.ts",
|
|
73
|
+
"test:integration:fast": "NODE_OPTIONS='--max-old-space-size=2048 --expose-gc' vitest run tests/integration/mcp/fleet-init-wires-daemon.test.ts tests/integration/mcp/mcp-cli-inprocess.test.ts tests/integration/mcp/memory-delete-cache-invalidation.test.ts tests/integration/workers/workers-reach-domains.test.ts tests/integration/learning/coordinator-roundtrip.test.ts tests/integration/bridge/bridge-end-to-end.test.ts",
|
|
70
74
|
"test:integration": "NODE_OPTIONS='--max-old-space-size=4096 --expose-gc' vitest run tests/integration/ --exclude='**/browser/**' --exclude='**/browser-integration/**' --exclude='**/*.e2e.test.ts'",
|
|
71
75
|
"mcp:validate": "node scripts/smoke-mcp-protocol.mjs",
|
|
72
76
|
"mcp:parity": "node scripts/audit-mcp-tool-parity.mjs",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-FPEFIJQ6.js";import"./chunk-KTBBSOZG.js";import"./chunk-DNEYBK7X.js";import"./chunk-DDMKCHYT.js";import"./chunk-MTWBYHMS.js";import"./chunk-SDGRU6SG.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-HVE3EH36.js";import"./chunk-2KP5TJS2.js";import"./chunk-5KUINS3D.js";import"./chunk-W72CUJRB.js";import"./chunk-HEC2UWY3.js";import"./chunk-Z57UERQZ.js";import"./chunk-4IGSL7CX.js";import"./chunk-HVFHPDXV.js";import"./chunk-CHPL7TA4.js";import"./chunk-Z7FWPSOK.js";import"./chunk-XYXRO7VP.js";import"./chunk-G2J7WGOG.js";import"./chunk-NL4EKO2J.js";import"./chunk-QNNH5TDV.js";import"./chunk-OLOKPY5O.js";import"./chunk-2RDWYJJY.js";import"./chunk-2B2RLPK3.js";import"./chunk-G73PIM7X.js";import"./chunk-NOP5ZJ7E.js";import"./chunk-DDMKCHYT.js";import"./chunk-O75ODKCX.js";import"./chunk-CP4CSI5R.js";import"./chunk-R2LWUBET.js";import"./chunk-D7ZVIL3C.js";import"./chunk-MTWBYHMS.js";import"./chunk-NFZY6ZVY.js";import"./chunk-4OHLPG6B.js";import"./chunk-LT4OZHMK.js";import"./chunk-MSWBVPVQ.js";import"./chunk-QHLENBGB.js";import"./chunk-GXKCRIHK.js";import"./chunk-UU422SST.js";import"./chunk-OIU6PKLF.js";import"./chunk-OZDRAKFF.js";import"./chunk-HE3KLHNO.js";import"./chunk-SDGRU6SG.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k}from"./chunk-YATW2RWQ.js";import"./chunk-ALFF4AAM.js";import"./chunk-OLOKPY5O.js";import"./chunk-2RDWYJJY.js";import"./chunk-2B2RLPK3.js";import"./chunk-G73PIM7X.js";import"./chunk-NOP5ZJ7E.js";import"./chunk-DDMKCHYT.js";import"./chunk-R2LWUBET.js";import"./chunk-MTWBYHMS.js";import"./chunk-NFZY6ZVY.js";import"./chunk-YUK4KU2B.js";import"./chunk-4OHLPG6B.js";import"./chunk-LT4OZHMK.js";import"./chunk-MSWBVPVQ.js";import"./chunk-QHLENBGB.js";import"./chunk-GXKCRIHK.js";import"./chunk-UU422SST.js";import"./chunk-OIU6PKLF.js";import"./chunk-OZDRAKFF.js";import"./chunk-HE3KLHNO.js";import"./chunk-SDGRU6SG.js";export{k as MCPToolBase,j as defaultToolLogger,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-6B32USSC.js";import"./chunk-YATW2RWQ.js";import"./chunk-ALFF4AAM.js";import"./chunk-OLOKPY5O.js";import"./chunk-2RDWYJJY.js";import"./chunk-2B2RLPK3.js";import"./chunk-G73PIM7X.js";import"./chunk-NOP5ZJ7E.js";import"./chunk-DDMKCHYT.js";import"./chunk-R2LWUBET.js";import"./chunk-MTWBYHMS.js";import"./chunk-NFZY6ZVY.js";import"./chunk-YUK4KU2B.js";import"./chunk-4OHLPG6B.js";import"./chunk-LT4OZHMK.js";import"./chunk-MSWBVPVQ.js";import"./chunk-QHLENBGB.js";import"./chunk-GXKCRIHK.js";import"./chunk-UU422SST.js";import"./chunk-OIU6PKLF.js";import"./chunk-OZDRAKFF.js";import"./chunk-HE3KLHNO.js";import"./chunk-SDGRU6SG.js";export{a as BrowserWorkflowTool};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a as e,b as g,e as r}from"./chunk-G73PIM7X.js";import{c as o}from"./chunk-SDGRU6SG.js";var L=o(()=>{"use strict";e();g();r()});export{L as a};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a as C,b as E}from"./chunk-2UL4UK6V.js";import{a as T}from"./chunk-HEC2UWY3.js";import{a as _}from"./chunk-HVFHPDXV.js";import{l as D,m as F}from"./chunk-OLOKPY5O.js";import{a as R,c as A}from"./chunk-MTWBYHMS.js";import{g as O}from"./chunk-SDGRU6SG.js";import{createHash as M}from"crypto";var $={enabled:!0,maxEntries:500,ttlMs:3600*1e3,persistToDb:!0};function S(o){if(o==null||typeof o!="object")return JSON.stringify(o);if(Array.isArray(o))return"["+o.map(i=>S(i)).join(",")+"]";let e=o;return"{"+Object.keys(e).sort().map(i=>JSON.stringify(i)+":"+S(e[i])).join(",")+"}"}var x=class{cache=new Map;config;hits=0;misses=0;constructor(e){this.config={...$,...e}}computeFingerprint(e,t,r){let i=S({action:t,domain:e,input:r});return M("sha256").update(i).digest("hex").slice(0,16)}get(e){if(!this.config.enabled)return null;let t=this.cache.get(e);return t?Date.now()-t.cachedAt>this.config.ttlMs?(this.cache.delete(e),this.misses++,null):(t.hitCount++,t.lastHitAt=Date.now(),this.hits++,t):(this.misses++,null)}set(e,t,r,i,n){if(!this.config.enabled)return;this.cache.size>=this.config.maxEntries&&this.evictOldest();let s={fingerprint:e,domain:t,action:r,result:i,tokensSaved:n,cachedAt:Date.now(),hitCount:0,lastHitAt:0};this.cache.set(e,s),this.config.persistToDb&&this.persistEntry(s)}loadFromDb(){try{let e=w();if(!e)return;let t=Date.now()-this.config.ttlMs,r=e.prepare(`SELECT key, value FROM kv_store
|
|
3
|
-
WHERE namespace = 'session_cache'
|
|
4
|
-
AND created_at > ?
|
|
5
|
-
ORDER BY created_at DESC LIMIT ?`).all(t,this.config.maxEntries);for(let i of r)try{let n=JSON.parse(i.value);Date.now()-n.cachedAt<=this.config.ttlMs&&this.cache.set(n.fingerprint,n)}catch{}}catch{}}getStats(){let e=this.hits+this.misses,t=0;for(let r of this.cache.values())t+=r.tokensSaved*r.hitCount;return{size:this.cache.size,hits:this.hits,misses:this.misses,hitRate:e>0?this.hits/e:0,estimatedTokensSaved:t}}clear(){this.cache.clear(),this.hits=0,this.misses=0}evictOldest(){let e=null,t=1/0;for(let[r,i]of this.cache)i.cachedAt<t&&(t=i.cachedAt,e=r);e&&this.cache.delete(e)}persistEntry(e){try{let t=w();if(!t)return;t.prepare(`INSERT OR REPLACE INTO kv_store (key, namespace, value, created_at)
|
|
6
|
-
VALUES (?, 'session_cache', ?, ?)`).run(`session_cache:${e.fingerprint}`,JSON.stringify(e),Date.now())}catch{}}};function w(){try{let{getUnifiedMemory:o}=(F(),O(D)),e=o();return e.isInitialized()?e.getDatabase():null}catch{return null}}var d=null;function f(o){return d||(d=new x(o),d.loadFromDb()),d}import{randomUUID as I}from"crypto";A();var b={minConfidenceForExit:.85,minSuccessRate:.9,maxPatternAge:10080*60*1e3,minQualityScore:.7,minSuccessfulUses:2,maxSearchResults:5,similarityThreshold:.8,verbose:!1},B={minConfidenceForExit:.75,minSuccessRate:.8,maxPatternAge:336*60*60*1e3,minQualityScore:.6,minSuccessfulUses:1,maxSearchResults:10,similarityThreshold:.7,verbose:!1},j={minConfidenceForExit:.92,minSuccessRate:.95,maxPatternAge:4320*60*1e3,minQualityScore:.85,minSuccessfulUses:3,maxSearchResults:3,similarityThreshold:.9,verbose:!1},p=class{patternStore;config;reuseHistory=[];attemptHistory=[];constructor(e,t){this.patternStore=e,this.config={...b,...t}}async checkEarlyExit(e){let t=performance.now(),r=new Date;try{let i=e.domain??_(e.description)??void 0,n={limit:this.config.maxSearchResults*2,useVectorSearch:!!e.embedding};i&&(n.domain=i),e.context&&(n.context={language:e.context.language,framework:e.context.framework,testType:e.context.testType});let s=e.embedding??e.description,m=await this.patternStore.search(s,n),l=performance.now()-t;if(!m.success){let a="error"in m?m.error.message:"Unknown error",h=this.createResult(!1,"search_error",`Pattern search failed: ${a}`,l);return this.recordAttempt("search_error",i),h}let c=m.value;if(c.length===0){let a=this.createResult(!1,"no_matching_pattern","No matching patterns found in store",l);return this.recordAttempt("no_matching_pattern",i),a}let u=null;for(let{pattern:a,score:h}of c){let g=this.evaluatePatternEligibility(a,h,r);if(g.eligible){let y=this.estimateTokensSaved(a),z={canExit:!0,reusedPattern:a,estimatedTokensSaved:y,confidence:a.confidence,similarityScore:h,reason:"pattern_reused",explanation:`Reusing pattern "${a.name}" with ${(a.confidence*100).toFixed(1)}% confidence`,searchLatencyMs:l};return this.recordReuse(a.id,y,a.confidence,h,l,i),this.config.verbose&&console.log(`[EarlyExitTokenOptimizer] Pattern reuse: ${a.name} (confidence: ${a.confidence.toFixed(2)}, similarity: ${h.toFixed(2)}, tokens saved: ${y})`),z}u===null&&(u={reason:g.reason,explanation:g.explanation})}if(u){let a=this.createResult(!1,u.reason,u.explanation,l);return this.recordAttempt(u.reason,i),a}let P=this.createResult(!1,"no_matching_pattern",`Found ${c.length} patterns but none met eligibility criteria`,l);return this.recordAttempt("no_matching_pattern",i),P}catch(i){let n=performance.now()-t,s=this.createResult(!1,"search_error",`Error during pattern search: ${R(i)}`,n);return this.recordAttempt("search_error"),s}}evaluatePatternEligibility(e,t,r){if(t<this.config.similarityThreshold)return{eligible:!1,reason:"similarity_too_low",explanation:`Similarity ${(t*100).toFixed(1)}% < threshold ${(this.config.similarityThreshold*100).toFixed(1)}%`};if(e.confidence<this.config.minConfidenceForExit)return{eligible:!1,reason:"confidence_too_low",explanation:`Confidence ${(e.confidence*100).toFixed(1)}% < threshold ${(this.config.minConfidenceForExit*100).toFixed(1)}%`};if(e.successRate<this.config.minSuccessRate)return{eligible:!1,reason:"success_rate_too_low",explanation:`Success rate ${(e.successRate*100).toFixed(1)}% < threshold ${(this.config.minSuccessRate*100).toFixed(1)}%`};let i=r.getTime()-e.lastUsedAt.getTime();if(i>this.config.maxPatternAge){let n=Math.floor(i/864e5),s=Math.floor(this.config.maxPatternAge/(1440*60*1e3));return{eligible:!1,reason:"pattern_too_old",explanation:`Pattern age ${n} days > max ${s} days`}}return e.qualityScore<this.config.minQualityScore?{eligible:!1,reason:"quality_score_too_low",explanation:`Quality score ${(e.qualityScore*100).toFixed(1)}% < threshold ${(this.config.minQualityScore*100).toFixed(1)}%`}:e.successfulUses<this.config.minSuccessfulUses?{eligible:!1,reason:"insufficient_uses",explanation:`Successful uses ${e.successfulUses} < minimum ${this.config.minSuccessfulUses}`}:{eligible:!0,reason:"pattern_reused",explanation:"Pattern meets all eligibility criteria"}}estimateTokensSaved(e){let t=100,r=Math.ceil(e.template.content.length/4);t+=r,t+=50;let s={"test-template":1.5,"assertion-pattern":1,"mock-pattern":1.2,"coverage-strategy":1.3,"api-contract":1.4,"visual-baseline":1.1,"perf-benchmark":1.4,"flaky-fix":1.3,"error-handling":1.2}[e.patternType]??1;return Math.ceil(t*s)}createResult(e,t,r,i){return{canExit:e,reason:t,explanation:r,searchLatencyMs:i}}recordReuse(e,t,r,i,n,s){this.reuseHistory.push({patternId:e,tokensSaved:t,confidence:r,similarity:i,latencyMs:n,domain:s,timestamp:new Date}),this.attemptHistory.push({reason:"pattern_reused",domain:s,timestamp:new Date}),this.reuseHistory.length>1e4&&(this.reuseHistory=this.reuseHistory.slice(-1e4))}recordAttempt(e,t){this.attemptHistory.push({reason:e,domain:t,timestamp:new Date}),this.attemptHistory.length>1e4&&(this.attemptHistory=this.attemptHistory.slice(-1e4))}recordSuccessfulReuse(e){this.patternStore.recordUsage(e,!0).catch(t=>{console.warn(`[EarlyExitTokenOptimizer] Failed to record successful reuse for ${e}:`,t)})}recordFailedReuse(e){this.patternStore.recordUsage(e,!1).catch(t=>{console.warn(`[EarlyExitTokenOptimizer] Failed to record failed reuse for ${e}:`,t)})}getReuseStats(){let e=this.reuseHistory.length,t=this.attemptHistory.length,r=0,i=0,n=0,s=0;for(let c of this.reuseHistory)r+=c.tokensSaved,i+=c.confidence,n+=c.similarity,s+=c.latencyMs;let m={pattern_reused:0,no_matching_pattern:0,confidence_too_low:0,success_rate_too_low:0,pattern_too_old:0,quality_score_too_low:0,insufficient_uses:0,similarity_too_low:0,search_error:0};for(let c of this.attemptHistory)m[c.reason]++;let l={};for(let c of this.reuseHistory){let u=c.domain??"unknown";l[u]||(l[u]={reuses:0,tokens:0}),l[u].reuses++,l[u].tokens+=c.tokensSaved}return{totalReuses:e,tokensSaved:r,avgConfidence:e>0?i/e:0,avgSimilarity:e>0?n/e:0,avgSearchLatencyMs:e>0?s/e:0,totalAttempts:t,exitRate:t>0?e/t:0,reasonBreakdown:m,domainBreakdown:l}}resetStats(){this.reuseHistory=[],this.attemptHistory=[]}getConfig(){return{...this.config}}updateConfig(e){Object.assign(this.config,e)}};var v={enabled:!0,earlyExit:b,verbose:!1},k=class{optimizer=null;patternStore=null;config=v;initialized=!1;readyPromise=null;memoryBackend=null;async initialize(e,t){this.initialized||(this.readyPromise=null,this.patternStore=null,this.optimizer=null,this.config={...v,...t},this.memoryBackend=e,this.initialized=!0,this.config.verbose&&console.log("[TokenOptimizerService] Registered (lazy \u2014 pattern store not yet created)"))}async ensurePatternStoreReady(){if(!this.optimizer&&!(!this.initialized||!this.config.enabled||!this.memoryBackend))return this.readyPromise?this.readyPromise:(this.readyPromise=(async()=>{try{this.patternStore=T(this.memoryBackend),await this.patternStore.initialize(),this.optimizer=new p(this.patternStore,this.config.earlyExit),this.config.verbose&&console.log("[TokenOptimizerService] Pattern store ready (lazy init)")}catch(e){console.warn("[TokenOptimizerService] Lazy pattern store init failed:",e)}})(),this.readyPromise)}async checkEarlyExit(e){if(!this.initialized||!this.config.enabled)return{canExit:!1,reason:"no_matching_pattern",explanation:"Token optimizer service not initialized",searchLatencyMs:0};try{let r=f(),i=r.computeFingerprint(e.domain??"unknown",e.description,e.context??{}),n=r.get(i);if(n)return E.recordEarlyExit(n.tokensSaved),this.config.verbose&&console.log(`[TokenOptimizerService] Session cache hit: ${i.slice(0,8)}... (saved ${n.tokensSaved} tokens)`),{canExit:!0,estimatedTokensSaved:n.tokensSaved,confidence:1,similarityScore:1,reason:"pattern_reused",explanation:`Session cache exact match (fingerprint: ${i.slice(0,8)}...)`,searchLatencyMs:0}}catch{}if(await this.ensurePatternStoreReady(),!this.optimizer)return{canExit:!1,reason:"no_matching_pattern",explanation:"Pattern store unavailable (lazy init failed or disabled)",searchLatencyMs:0};let t=await this.optimizer.checkEarlyExit(e);return t.canExit&&t.estimatedTokensSaved&&(E.recordEarlyExit(t.estimatedTokensSaved),this.config.verbose&&console.log(`[TokenOptimizerService] Early exit: ${t.reusedPattern?.name} (saved ${t.estimatedTokensSaved} tokens)`)),t}async checkTaskEarlyExit(e,t){return this.checkEarlyExit({description:e,domain:t})}recordSuccessfulReuse(e){this.optimizer&&this.optimizer.recordSuccessfulReuse(e)}recordFailedReuse(e){this.optimizer&&this.optimizer.recordFailedReuse(e)}async storePattern(e){if(await this.ensurePatternStoreReady(),!this.patternStore)return null;try{let t=await this.patternStore.store({...e,id:`pattern-${Date.now()}-${I().slice(0,8)}`,createdAt:new Date,lastUsedAt:new Date});return t.success?t.value:null}catch(t){return console.warn("[TokenOptimizerService] Failed to store pattern:",t),null}}getReuseStats(){return this.optimizer?this.optimizer.getReuseStats():null}isEnabled(){return this.initialized&&this.config.enabled}getConfig(){return{...this.config}}getDashboardSummary(){return C()}cacheOperationResult(e,t,r,i,n){try{let s=f(),m=s.computeFingerprint(e,t,r);s.set(m,e,t,i,n)}catch{}}getSessionCacheStats(){try{return f().getStats()}catch{return{size:0,hits:0,misses:0,hitRate:0,estimatedTokensSaved:0}}}reset(){this.optimizer&&this.optimizer.resetStats(),this.optimizer=null,this.patternStore=null,this.initialized=!1,this.readyPromise=null,this.memoryBackend=null,this.config=v}},H=new k;async function te(o,e){await H.initialize(o,e)}export{f as a,H as b,te as c};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{c as a,d as b,e as c}from"./chunk-XKIVOADM.js";import"./chunk-XPAH7SEX.js";import"./chunk-MTWBYHMS.js";import"./chunk-SDGRU6SG.js";c();export{a as VibiumClientImpl,b as VibiumClientProvider};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{b as p}from"./chunk-WDZT344G.js";import{a as f,c as v}from"./chunk-MTWBYHMS.js";import"./chunk-SDGRU6SG.js";v();import{existsSync as s,mkdirSync as m,readFileSync as u,writeFileSync as a}from"fs";import{join as h,dirname as d}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("cline"),e=h(this.projectRoot,t.path);if(r.configPath=e,!s(e)||this.overwrite){let o=d(e);if(s(o)||m(o,{recursive:!0}),s(e)&&this.overwrite){let c=this.mergeExistingConfig(e,t.content);a(e,c)}else a(e,t.content);r.mcpConfigured=!0}let n=this.generator.generateBehavioralRules("cline"),i=h(this.projectRoot,n.path);if(r.modePath=i,!s(i)||this.overwrite){let o=d(i);if(s(o)||m(o,{recursive:!0}),s(i)&&this.overwrite){let c=this.mergeExistingModes(i,n.content);a(i,c)}else a(i,n.content);r.modeInstalled=!0}}catch(t){r.success=!1,r.errors.push(`Cline installation failed: ${f(t)}`)}return r}mergeExistingConfig(r,t){try{let e=JSON.parse(u(r,"utf-8")),n=JSON.parse(t);return e.mcpServers||(e.mcpServers={}),Object.assign(e.mcpServers,n.mcpServers),JSON.stringify(e,null,2)+`
|
|
3
|
-
`}catch{return t}}mergeExistingModes(r,t){try{let e=JSON.parse(u(r,"utf-8")),n=JSON.parse(t);if(!Array.isArray(e))return t;let i=e.filter(o=>o.slug!=="qe-engineer");return i.push(...n),JSON.stringify(i,null,2)+`
|
|
4
|
-
`}catch{return t}}};function x(g){return new l(g)}export{l as ClineInstaller,x as createClineInstaller};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{b as f}from"./chunk-WDZT344G.js";import{a as l,c as m}from"./chunk-MTWBYHMS.js";import"./chunk-SDGRU6SG.js";m();import{existsSync as o,mkdirSync as h,readFileSync as d,writeFileSync as s}from"fs";import{join as u,dirname as x}from"path";var c=class{projectRoot;overwrite;generator;constructor(t){this.projectRoot=t.projectRoot,this.overwrite=t.overwrite??!1,this.generator=f()}async install(){let t={success:!0,mcpConfigured:!1,agentsMdInstalled:!1,errors:[],configPath:"",agentsMdPath:""};try{let r=this.generator.generateMcpConfig("codex"),e=u(this.projectRoot,r.path);if(t.configPath=e,!o(e)||this.overwrite){let i=x(e);if(o(i)||h(i,{recursive:!0}),o(e)&&this.overwrite){let p=this.mergeExistingTomlConfig(e,r.content);s(e,p)}else s(e,r.content);t.mcpConfigured=!0}let a=this.generator.generateBehavioralRules("codex"),n=u(this.projectRoot,a.path);if(t.agentsMdPath=n,!o(n)||this.overwrite){if(o(n)&&this.overwrite){let i=this.mergeExistingAgentsMd(n,a.content);s(n,i)}else s(n,a.content);t.agentsMdInstalled=!0}}catch(r){t.success=!1,t.errors.push(`Codex installation failed: ${l(r)}`)}return t}mergeExistingTomlConfig(t,r){try{let e=d(t,"utf-8");return e.includes("[mcp_servers.agentic-qe]")?e:e.trimEnd()+`
|
|
3
|
-
|
|
4
|
-
`+r}catch{return r}}mergeExistingAgentsMd(t,r){try{let e=d(t,"utf-8");return e.includes("Agentic QE")||e.includes("fleet_init")?e:e.trimEnd()+`
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
`+r}catch{return r}}};function I(g){return new c(g)}export{c as CodexInstaller,I as createCodexInstaller};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{b as g}from"./chunk-WDZT344G.js";import{a as u,c as h}from"./chunk-MTWBYHMS.js";import"./chunk-SDGRU6SG.js";h();import{existsSync as o,mkdirSync as f,readFileSync as d,writeFileSync as a}from"fs";import{join as m,dirname as p}from"path";var c=class{projectRoot;overwrite;generator;constructor(t){this.projectRoot=t.projectRoot,this.overwrite=t.overwrite??!1,this.generator=g()}async install(){let t={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let r=this.generator.generateMcpConfig("continuedev"),e=m(this.projectRoot,r.path);if(t.configPath=e,!o(e)||this.overwrite){let n=p(e);if(o(n)||f(n,{recursive:!0}),o(e)&&this.overwrite){let v=this.mergeExistingYamlConfig(e,r.content);a(e,v)}else a(e,r.content);t.mcpConfigured=!0}let s=this.generator.generateBehavioralRules("continuedev"),i=m(this.projectRoot,s.path);if(t.rulesPath=i,!o(i)||this.overwrite){let n=p(i);o(n)||f(n,{recursive:!0}),a(i,s.content),t.rulesInstalled=!0}}catch(r){t.success=!1,t.errors.push(`Continue.dev installation failed: ${u(r)}`)}return t}mergeExistingYamlConfig(t,r){try{let e=d(t,"utf-8");return e.includes("agentic-qe")?e:e.includes("mcpServers:")?e.trimEnd()+`
|
|
3
|
-
`+` - name: agentic-qe
|
|
4
|
-
command: npx
|
|
5
|
-
args:
|
|
6
|
-
- "-y"
|
|
7
|
-
- agentic-qe@latest
|
|
8
|
-
- mcp
|
|
9
|
-
env:
|
|
10
|
-
AQE_MEMORY_PATH: .agentic-qe/memory.db
|
|
11
|
-
AQE_V3_MODE: "true"`+`
|
|
12
|
-
`:e.trimEnd()+`
|
|
13
|
-
|
|
14
|
-
`+r}catch{return r}}};function R(l){return new c(l)}export{c as ContinueDevInstaller,R as createContinueDevInstaller};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{b as g}from"./chunk-WDZT344G.js";import{a as p,c as v}from"./chunk-MTWBYHMS.js";import"./chunk-SDGRU6SG.js";v();import{existsSync as s,mkdirSync as f,readFileSync as C,writeFileSync as l}from"fs";import{join as u,dirname as h}from"path";var a=class{projectRoot;overwrite;generator;constructor(t){this.projectRoot=t.projectRoot,this.overwrite=t.overwrite??!1,this.generator=g()}async install(){let t={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let r=this.generator.generateMcpConfig("copilot"),e=u(this.projectRoot,r.path);if(t.configPath=e,!s(e)||this.overwrite){let o=h(e);if(s(o)||f(o,{recursive:!0}),s(e)&&this.overwrite){let m=this.mergeExistingConfig(e,r.content);l(e,m)}else l(e,r.content);t.mcpConfigured=!0}let i=this.generator.generateBehavioralRules("copilot"),n=u(this.projectRoot,i.path);if(t.rulesPath=n,!s(n)||this.overwrite){let o=h(n);s(o)||f(o,{recursive:!0}),l(n,i.content),t.rulesInstalled=!0}}catch(r){t.success=!1,t.errors.push(`Copilot installation failed: ${p(r)}`)}return t}mergeExistingConfig(t,r){try{let e=JSON.parse(C(t,"utf-8")),i=JSON.parse(r);return e.servers||(e.servers={}),Object.assign(e.servers,i.servers),JSON.stringify(e,null,2)+`
|
|
3
|
-
`}catch{return r}}};function y(c){return new a(c)}export{a as CopilotInstaller,y as createCopilotInstaller};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{c as a,d as b,e as c,f as d,g as e,h as f,i as g,j as h,k as i,l as j,m as k,n as l}from"./chunk-H73AA2JI.js";import"./chunk-DI7REPYC.js";import"./chunk-WKLI5Z3L.js";import"./chunk-S6PGWJDK.js";import"./chunk-NSI3WL6P.js";import"./chunk-SSRMFU4P.js";import"./chunk-LJEO5R32.js";import"./chunk-JFTRHS5V.js";import"./chunk-6B32USSC.js";import"./chunk-JZYXYHEE.js";import"./chunk-CCUUTTTJ.js";import"./chunk-TXLLF7XR.js";import"./chunk-LIOK7WBX.js";import"./chunk-D7IH2A3C.js";import"./chunk-YMJ5AVVU.js";import"./chunk-LBR5FXPD.js";import"./chunk-NWIKNQLJ.js";import"./chunk-XRJH5KXF.js";import"./chunk-4G2GTX2V.js";import"./chunk-Q7B7T4YK.js";import"./chunk-MWAEUJDC.js";import"./chunk-X4CHPEOQ.js";import"./chunk-33CLP2NE.js";import"./chunk-JQBD4JO2.js";import"./chunk-474ZUVGP.js";import"./chunk-T2Z3M6HA.js";import"./chunk-XLQX77KP.js";import"./chunk-NKKDO5W4.js";import"./chunk-B3B5QZYN.js";import"./chunk-FWQZZ22V.js";import"./chunk-4AG2TQEF.js";import"./chunk-Q32LITZL.js";import"./chunk-FXPAGKVS.js";import"./chunk-C6TUX7YJ.js";import"./chunk-VM5C4DIV.js";import"./chunk-6R6RC6YJ.js";import"./chunk-SDVL5TZK.js";import"./chunk-OK6CSJOX.js";import"./chunk-FPEFIJQ6.js";import"./chunk-KTBBSOZG.js";import"./chunk-DNEYBK7X.js";import"./chunk-RNJRKFMX.js";import"./chunk-XKIVOADM.js";import"./chunk-XPAH7SEX.js";import"./chunk-KTEWRRDZ.js";import"./chunk-4B676LUC.js";import"./chunk-77BVW2CT.js";import"./chunk-BALWMVCX.js";import"./chunk-HVE3EH36.js";import"./chunk-2KP5TJS2.js";import"./chunk-34LWJDCM.js";import"./chunk-OV3ESWN4.js";import"./chunk-K5Y64X2U.js";import"./chunk-M5PBVK3V.js";import"./chunk-Z4WAJ647.js";import"./chunk-VKLPSPPI.js";import"./chunk-5GPOSKGP.js";import"./chunk-GDHJZPNC.js";import"./chunk-VL4MSE3J.js";import"./chunk-2UL4UK6V.js";import"./chunk-DNC27OP7.js";import"./chunk-ZSMHQENA.js";import"./chunk-LCDMB5SP.js";import"./chunk-7NKVEEXD.js";import"./chunk-QHGHWATK.js";import"./chunk-YATW2RWQ.js";import"./chunk-ALFF4AAM.js";import"./chunk-ON6C2OYG.js";import"./chunk-BMSMDD72.js";import"./chunk-PTPGYUT2.js";import"./chunk-Y4XTPEAC.js";import"./chunk-5KUINS3D.js";import"./chunk-W72CUJRB.js";import"./chunk-HEC2UWY3.js";import"./chunk-Z57UERQZ.js";import"./chunk-4IGSL7CX.js";import"./chunk-HVFHPDXV.js";import"./chunk-CHPL7TA4.js";import"./chunk-Z7FWPSOK.js";import"./chunk-XYXRO7VP.js";import"./chunk-G2J7WGOG.js";import"./chunk-6B3COND2.js";import"./chunk-HWJEHXPQ.js";import"./chunk-NL4EKO2J.js";import"./chunk-QNNH5TDV.js";import"./chunk-OLOKPY5O.js";import"./chunk-2RDWYJJY.js";import"./chunk-2B2RLPK3.js";import"./chunk-G73PIM7X.js";import"./chunk-NOP5ZJ7E.js";import"./chunk-DDMKCHYT.js";import"./chunk-O75ODKCX.js";import"./chunk-CP4CSI5R.js";import"./chunk-R2LWUBET.js";import"./chunk-D7ZVIL3C.js";import"./chunk-MTWBYHMS.js";import"./chunk-NFZY6ZVY.js";import"./chunk-YUK4KU2B.js";import"./chunk-4OHLPG6B.js";import"./chunk-LT4OZHMK.js";import"./chunk-MSWBVPVQ.js";import"./chunk-QHLENBGB.js";import"./chunk-GXKCRIHK.js";import"./chunk-UU422SST.js";import"./chunk-OIU6PKLF.js";import"./chunk-OZDRAKFF.js";import"./chunk-HE3KLHNO.js";import"./chunk-SDGRU6SG.js";export{c as adoptExternalFleet,e as assignAgentLevel,k as disposeFleet,f as getAgentLevel,g as getAllAgentLevels,a as getFleetState,d as getFleetTopology,l as handleAQEHealth,j as handleFleetHealth,h as handleFleetInit,i as handleFleetStatus,b as isFleetInitialized};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a,b}from"./chunk-NKKDO5W4.js";import"./chunk-OK6CSJOX.js";import"./chunk-D7ZVIL3C.js";import"./chunk-NFZY6ZVY.js";import"./chunk-SDGRU6SG.js";export{a as CrossDomainEventRouter,b as createCrossDomainRouter};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{b as g}from"./chunk-WDZT344G.js";import{a as u,c as m}from"./chunk-MTWBYHMS.js";import"./chunk-SDGRU6SG.js";m();import{existsSync as s,mkdirSync as h,readFileSync as v,writeFileSync as i}from"fs";import{join as f,dirname as C}from"path";var a=class{projectRoot;overwrite;generator;constructor(r){this.projectRoot=r.projectRoot,this.overwrite=r.overwrite??!1,this.generator=g()}async install(){let r={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("cursor"),e=f(this.projectRoot,t.path);if(r.configPath=e,!s(e)||this.overwrite){let l=C(e);if(s(l)||h(l,{recursive:!0}),s(e)&&this.overwrite){let p=this.mergeExistingConfig(e,t.content);i(e,p)}else i(e,t.content);r.mcpConfigured=!0}let o=this.generator.generateBehavioralRules("cursor"),n=f(this.projectRoot,o.path);r.rulesPath=n,(!s(n)||this.overwrite)&&(i(n,o.content),r.rulesInstalled=!0)}catch(t){r.success=!1,r.errors.push(`Cursor installation failed: ${u(t)}`)}return r}mergeExistingConfig(r,t){try{let e=JSON.parse(v(r,"utf-8")),o=JSON.parse(t);return e.mcpServers||(e.mcpServers={}),Object.assign(e.mcpServers,o.mcpServers),JSON.stringify(e,null,2)+`
|
|
3
|
-
`}catch{return t}}};function R(c){return new a(c)}export{a as CursorInstaller,R as createCursorInstaller};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u}from"./chunk-KTEWRRDZ.js";import"./chunk-4B676LUC.js";import"./chunk-HVE3EH36.js";import"./chunk-2KP5TJS2.js";import"./chunk-5KUINS3D.js";import"./chunk-W72CUJRB.js";import"./chunk-HEC2UWY3.js";import"./chunk-Z57UERQZ.js";import"./chunk-4IGSL7CX.js";import"./chunk-HVFHPDXV.js";import"./chunk-CHPL7TA4.js";import"./chunk-Z7FWPSOK.js";import"./chunk-XYXRO7VP.js";import"./chunk-G2J7WGOG.js";import"./chunk-HWJEHXPQ.js";import"./chunk-NL4EKO2J.js";import"./chunk-QNNH5TDV.js";import"./chunk-OLOKPY5O.js";import"./chunk-2RDWYJJY.js";import"./chunk-2B2RLPK3.js";import"./chunk-G73PIM7X.js";import"./chunk-NOP5ZJ7E.js";import"./chunk-DDMKCHYT.js";import"./chunk-O75ODKCX.js";import"./chunk-CP4CSI5R.js";import"./chunk-R2LWUBET.js";import"./chunk-D7ZVIL3C.js";import"./chunk-MTWBYHMS.js";import"./chunk-NFZY6ZVY.js";import"./chunk-4OHLPG6B.js";import"./chunk-LT4OZHMK.js";import"./chunk-MSWBVPVQ.js";import"./chunk-QHLENBGB.js";import"./chunk-GXKCRIHK.js";import"./chunk-UU422SST.js";import"./chunk-OIU6PKLF.js";import"./chunk-OZDRAKFF.js";import"./chunk-HE3KLHNO.js";import"./chunk-SDGRU6SG.js";export{t as BUILT_IN_STRATEGIES,e as ConceptGraph,j as DEFAULT_ACTIVATION_CONFIG,d as DEFAULT_CONCEPT_GRAPH_CONFIG,p as DEFAULT_DREAM_CONFIG,a as DEFAULT_DREAM_SCHEDULER_CONFIG,l as DEFAULT_INSIGHT_CONFIG,n as DEFAULT_VALIDATION_THRESHOLDS,q as DreamEngine,b as DreamScheduler,i as HISTORY_TRIM_TARGET_RATIO,m as InsightGenerator,g as MAX_ACTIVATION_HISTORY_ENTRIES,h as MAX_COACTIVATION_ENTRIES,o as RVCOWBranchManager,u as SpeculativeDreamer,k as SpreadingActivation,f as createConceptGraph,r as createDreamEngine,c as createDreamScheduler,s as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{b as a}from"./chunk-7LHN6WBX.js";import"./chunk-CCUUTTTJ.js";import"./chunk-TXLLF7XR.js";import"./chunk-HVFHPDXV.js";import"./chunk-OLOKPY5O.js";import"./chunk-2RDWYJJY.js";import"./chunk-2B2RLPK3.js";import"./chunk-G73PIM7X.js";import"./chunk-NOP5ZJ7E.js";import"./chunk-DDMKCHYT.js";import"./chunk-R2LWUBET.js";import"./chunk-MTWBYHMS.js";import"./chunk-4OHLPG6B.js";import"./chunk-LT4OZHMK.js";import"./chunk-MSWBVPVQ.js";import"./chunk-QHLENBGB.js";import"./chunk-GXKCRIHK.js";import"./chunk-UU422SST.js";import"./chunk-OIU6PKLF.js";import"./chunk-OZDRAKFF.js";import"./chunk-HE3KLHNO.js";import"./chunk-SDGRU6SG.js";export{a as HeartbeatSchedulerWorker};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a,c as b}from"./chunk-OIU6PKLF.js";import"./chunk-OZDRAKFF.js";import"./chunk-HE3KLHNO.js";import"./chunk-SDGRU6SG.js";b();export{a as HnswAdapter};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a,b,c,d}from"./chunk-Y4XTPEAC.js";import"./chunk-2B2RLPK3.js";import"./chunk-G73PIM7X.js";import"./chunk-QHLENBGB.js";import"./chunk-OIU6PKLF.js";import"./chunk-OZDRAKFF.js";import"./chunk-HE3KLHNO.js";import"./chunk-SDGRU6SG.js";export{a as DEFAULT_HNSW_CONFIG,b as HNSWIndex,d as benchmarkHNSW,c as createHNSWIndex};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-DNC27OP7.js";import"./chunk-ZSMHQENA.js";import"./chunk-LCDMB5SP.js";import"./chunk-7NKVEEXD.js";import"./chunk-QHGHWATK.js";import"./chunk-MTWBYHMS.js";import"./chunk-NFZY6ZVY.js";import"./chunk-SDGRU6SG.js";export{a as HybridRouter,b as createHybridRouter,c as createQERouter};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-K5Y64X2U.js";import"./chunk-M5PBVK3V.js";import"./chunk-Z4WAJ647.js";import"./chunk-2B2RLPK3.js";import"./chunk-G73PIM7X.js";import"./chunk-DDMKCHYT.js";import"./chunk-D7ZVIL3C.js";import"./chunk-MTWBYHMS.js";import"./chunk-NFZY6ZVY.js";import"./chunk-SDGRU6SG.js";export{a as ImpactAnalyzerService};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{a,b,c,d}from"./chunk-54PBHRRW.js";import"./chunk-JITZAJJN.js";import"./chunk-KWKGROPS.js";import"./chunk-4G2GTX2V.js";import"./chunk-FXPAGKVS.js";import"./chunk-DDMKCHYT.js";import"./chunk-MTWBYHMS.js";import"./chunk-4OHLPG6B.js";import"./chunk-LT4OZHMK.js";import"./chunk-SDGRU6SG.js";export{a as InitOrchestrator,b as createInitOrchestrator,d as formatInitResult,c as quickInit};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{v as a,w as b}from"./chunk-MWAEUJDC.js";import"./chunk-X4CHPEOQ.js";import"./chunk-33CLP2NE.js";import"./chunk-JQBD4JO2.js";import"./chunk-474ZUVGP.js";import"./chunk-T2Z3M6HA.js";import"./chunk-XLQX77KP.js";import"./chunk-FWQZZ22V.js";import"./chunk-VM5C4DIV.js";import"./chunk-6R6RC6YJ.js";import"./chunk-SDVL5TZK.js";import"./chunk-OK6CSJOX.js";import"./chunk-XKIVOADM.js";import"./chunk-XPAH7SEX.js";import"./chunk-KTEWRRDZ.js";import"./chunk-4B676LUC.js";import"./chunk-77BVW2CT.js";import"./chunk-BALWMVCX.js";import"./chunk-HVE3EH36.js";import"./chunk-2KP5TJS2.js";import"./chunk-34LWJDCM.js";import"./chunk-OV3ESWN4.js";import"./chunk-K5Y64X2U.js";import"./chunk-M5PBVK3V.js";import"./chunk-Z4WAJ647.js";import"./chunk-VKLPSPPI.js";import"./chunk-5GPOSKGP.js";import"./chunk-GDHJZPNC.js";import"./chunk-VL4MSE3J.js";import"./chunk-2UL4UK6V.js";import"./chunk-DNC27OP7.js";import"./chunk-ZSMHQENA.js";import"./chunk-LCDMB5SP.js";import"./chunk-7NKVEEXD.js";import"./chunk-QHGHWATK.js";import"./chunk-ALFF4AAM.js";import"./chunk-ON6C2OYG.js";import"./chunk-BMSMDD72.js";import"./chunk-PTPGYUT2.js";import"./chunk-Y4XTPEAC.js";import"./chunk-5KUINS3D.js";import"./chunk-W72CUJRB.js";import"./chunk-HEC2UWY3.js";import"./chunk-Z57UERQZ.js";import"./chunk-4IGSL7CX.js";import"./chunk-HVFHPDXV.js";import"./chunk-CHPL7TA4.js";import"./chunk-Z7FWPSOK.js";import"./chunk-XYXRO7VP.js";import"./chunk-G2J7WGOG.js";import"./chunk-6B3COND2.js";import"./chunk-HWJEHXPQ.js";import"./chunk-NL4EKO2J.js";import"./chunk-QNNH5TDV.js";import"./chunk-OLOKPY5O.js";import"./chunk-2RDWYJJY.js";import"./chunk-2B2RLPK3.js";import"./chunk-G73PIM7X.js";import"./chunk-NOP5ZJ7E.js";import"./chunk-DDMKCHYT.js";import"./chunk-O75ODKCX.js";import"./chunk-CP4CSI5R.js";import"./chunk-R2LWUBET.js";import"./chunk-D7ZVIL3C.js";import"./chunk-MTWBYHMS.js";import"./chunk-NFZY6ZVY.js";import"./chunk-YUK4KU2B.js";import"./chunk-4OHLPG6B.js";import"./chunk-LT4OZHMK.js";import"./chunk-MSWBVPVQ.js";import"./chunk-QHLENBGB.js";import"./chunk-GXKCRIHK.js";import"./chunk-UU422SST.js";import"./chunk-OIU6PKLF.js";import"./chunk-OZDRAKFF.js";import"./chunk-HE3KLHNO.js";import"./chunk-SDGRU6SG.js";export{a as QEKernelImpl,b as createKernel};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.8");process.exit(0)}
|
|
2
|
-
import{b as p}from"./chunk-WDZT344G.js";import{a as f,c as v}from"./chunk-MTWBYHMS.js";import"./chunk-SDGRU6SG.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("kilocode"),e=d(this.projectRoot,t.path);if(r.configPath=e,!n(e)||this.overwrite){let s=h(e);if(n(s)||m(s,{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 i=this.generator.generateBehavioralRules("kilocode"),o=d(this.projectRoot,i.path);if(r.modePath=o,!n(o)||this.overwrite){let s=h(o);if(n(s)||m(s,{recursive:!0}),n(o)&&this.overwrite){let c=this.mergeExistingModes(o,i.content);a(o,c)}else a(o,i.content);r.modeInstalled=!0}}catch(t){r.success=!1,r.errors.push(`Kilo Code installation failed: ${f(t)}`)}return r}mergeExistingConfig(r,t){try{let e=JSON.parse(u(r,"utf-8")),i=JSON.parse(t);return e.mcpServers||(e.mcpServers={}),Object.assign(e.mcpServers,i.mcpServers),JSON.stringify(e,null,2)+`
|
|
3
|
-
`}catch{return t}}mergeExistingModes(r,t){try{let e=JSON.parse(u(r,"utf-8")),i=JSON.parse(t);if(!Array.isArray(e))return t;let o=e.filter(s=>s.slug!=="qe-engineer");return o.push(...i),JSON.stringify(o,null,2)+`
|
|
4
|
-
`}catch{return t}}};function x(g){return new l(g)}export{l as KiloCodeInstaller,x as createKiloCodeInstaller};
|