agentic-qe 3.10.9 → 3.11.1
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/commands/agents/README.md +50 -0
- package/.claude/commands/agents/agent-capabilities.md +140 -0
- package/.claude/commands/agents/agent-coordination.md +28 -0
- package/.claude/commands/agents/agent-spawning.md +28 -0
- package/.claude/commands/agents/agent-types.md +216 -0
- package/.claude/commands/agents/health.md +139 -0
- package/.claude/commands/agents/list.md +100 -0
- package/.claude/commands/agents/logs.md +130 -0
- package/.claude/commands/agents/metrics.md +122 -0
- package/.claude/commands/agents/pool.md +127 -0
- package/.claude/commands/agents/spawn.md +140 -0
- package/.claude/commands/agents/status.md +115 -0
- package/.claude/commands/agents/stop.md +102 -0
- package/.claude/commands/claude-flow-help.md +1 -1
- package/.claude/commands/coordination/README.md +9 -0
- package/.claude/commands/coordination/agent-spawn.md +25 -0
- package/.claude/commands/coordination/init.md +44 -0
- package/.claude/commands/coordination/orchestrate.md +43 -0
- package/.claude/commands/coordination/spawn.md +45 -0
- package/.claude/commands/coordination/swarm-init.md +85 -0
- package/.claude/commands/coordination/task-orchestrate.md +25 -0
- package/.claude/commands/github/code-review-swarm.md +1 -1
- package/.claude/commands/github/issue-tracker.md +3 -3
- package/.claude/commands/github/release-manager.md +5 -3
- package/.claude/commands/github/release-swarm.md +1 -1
- package/.claude/commands/github/repo-architect.md +2 -2
- package/.claude/commands/github/swarm-issue.md +4 -1
- package/.claude/commands/github/swarm-pr.md +6 -3
- package/.claude/commands/github/sync-coordinator.md +3 -1
- package/.claude/commands/github/workflow-automation.md +2 -2
- package/.claude/commands/hive-mind/README.md +17 -0
- package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-init.md +18 -0
- package/.claude/commands/hive-mind/hive-mind-memory.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-resume.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -0
- package/.claude/commands/hive-mind/hive-mind-status.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-stop.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -0
- package/.claude/commands/hive-mind/hive-mind.md +27 -0
- package/.claude/commands/memory/README.md +9 -0
- package/.claude/commands/memory/memory-persist.md +25 -0
- package/.claude/commands/memory/memory-search.md +25 -0
- package/.claude/commands/memory/memory-usage.md +25 -0
- package/.claude/commands/memory/neural.md +47 -0
- package/.claude/commands/swarm/README.md +15 -0
- package/.claude/commands/swarm/analysis.md +95 -0
- package/.claude/commands/swarm/development.md +96 -0
- package/.claude/commands/swarm/examples.md +168 -0
- package/.claude/commands/swarm/maintenance.md +102 -0
- package/.claude/commands/swarm/optimization.md +117 -0
- package/.claude/commands/swarm/research.md +136 -0
- package/.claude/commands/swarm/swarm-analysis.md +8 -0
- package/.claude/commands/swarm/swarm-background.md +8 -0
- package/.claude/commands/swarm/swarm-init.md +19 -0
- package/.claude/commands/swarm/swarm-modes.md +8 -0
- package/.claude/commands/swarm/swarm-monitor.md +8 -0
- package/.claude/commands/swarm/swarm-spawn.md +19 -0
- package/.claude/commands/swarm/swarm-status.md +8 -0
- package/.claude/commands/swarm/swarm-strategies.md +8 -0
- package/.claude/commands/swarm/swarm.md +87 -0
- package/.claude/commands/swarm/testing.md +131 -0
- package/.claude/commands/workflows/README.md +9 -0
- package/.claude/commands/workflows/development.md +78 -0
- package/.claude/commands/workflows/research.md +63 -0
- package/.claude/commands/workflows/workflow-create.md +25 -0
- package/.claude/commands/workflows/workflow-execute.md +25 -0
- package/.claude/commands/workflows/workflow-export.md +25 -0
- package/.claude/helpers/auto-commit.sh +1 -1
- package/.claude/helpers/auto-memory-hook.mjs +37 -4
- package/.claude/helpers/github-safe.js +90 -40
- package/.claude/helpers/github-setup.sh +30 -13
- package/.claude/helpers/hook-handler.cjs +68 -49
- package/.claude/helpers/intelligence.cjs +156 -27
- package/.claude/helpers/post-commit +1 -1
- package/.claude/helpers/pre-commit +1 -1
- package/.claude/helpers/quick-start.sh +4 -4
- package/.claude/helpers/router.js +70 -31
- package/.claude/helpers/ruflo-hook.cjs +59 -0
- package/.claude/helpers/session.js +28 -6
- package/.claude/helpers/setup-mcp.sh +3 -3
- package/.claude/helpers/statusline.cjs +584 -468
- package/.claude/helpers/statusline.js +47 -11
- 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/github-code-review/SKILL.md +2 -17
- package/.claude/skills/github-multi-repo/SKILL.md +4 -16
- package/.claude/skills/github-project-management/SKILL.md +18 -33
- package/.claude/skills/github-release-management/SKILL.md +4 -21
- package/.claude/skills/github-workflow-automation/SKILL.md +8 -26
- package/.claude/skills/holistic-testing-pact/SKILL.md +50 -17
- package/.claude/skills/pair-programming/SKILL.md +2 -2
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
- package/.claude/skills/skill-builder/SKILL.md +0 -103
- package/.claude/skills/skills-manifest.json +6 -6
- package/.claude/skills/sparc-methodology/SKILL.md +2 -11
- package/.claude/skills/stream-chain/SKILL.md +0 -3
- package/.claude/skills/swarm-advanced/SKILL.md +2 -5
- package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
- package/.claude/skills/verification-quality/SKILL.md +121 -93
- package/.opencode/skills/qe-agentic-quality-engineering.yaml +5 -5
- package/.opencode/skills/qe-holistic-testing-pact.yaml +11 -11
- package/CHANGELOG.md +100 -0
- 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/pair-programming/SKILL.md +2 -2
- package/assets/skills/skills-manifest.json +6 -6
- package/assets/skills/verification-quality/SKILL.md +121 -93
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/audit/witness-findings.d.ts +50 -0
- package/dist/audit/witness-findings.js +41 -0
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-A6GCBONS.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-RPAOJXZ3.js → agent-booster-wasm-3OJAT664.js} +2 -2
- package/dist/cli/chunks/{agent-handler-SMD5CAS6.js → agent-handler-6TCTI5AT.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-3IOQIQ7Y.js → agent-memory-branch-FAWCYEGJ.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-FRCSXNMG.js +2 -0
- package/dist/cli/chunks/{arena-AP2J62WO.js → arena-O2TCUQBF.js} +4 -4
- package/dist/cli/chunks/{arena-GT3D6EAO.js → arena-UVYIGYUF.js} +2 -2
- package/dist/cli/chunks/{audit-Q3GJ5354.js → audit-AYESKHAJ.js} +2 -2
- package/dist/cli/chunks/base-CZ3EHBU5.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-YTK7S7GL.js → better-sqlite3-MJNUEPYB.js} +2 -2
- package/dist/cli/chunks/{brain-handler-2Z4ILQF3.js → brain-handler-KSJBVTHZ.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-EZWGL4UM.js → branch-enumerator-4O3S42EG.js} +2 -2
- package/dist/cli/chunks/{browser-YZELFPLJ.js → browser-5VXK323P.js} +2 -2
- package/dist/cli/chunks/browser-workflow-EKTGQQBQ.js +2 -0
- package/dist/cli/chunks/{chunk-CDJIYJIA.js → chunk-22FHOXEE.js} +1 -1
- package/dist/cli/chunks/{chunk-OIN3Y4BY.js → chunk-2RE32VOF.js} +1 -1
- package/dist/cli/chunks/{chunk-RSWQY4NZ.js → chunk-3D4HNUZM.js} +2 -2
- package/dist/cli/chunks/{chunk-6TR3OM7C.js → chunk-3DS7ZHA7.js} +2 -2
- package/dist/cli/chunks/{chunk-HGKZOSAI.js → chunk-3G25ZBQ6.js} +1 -1
- package/dist/cli/chunks/{chunk-QHPLU5BU.js → chunk-3IMEDZIS.js} +3 -3
- package/dist/cli/chunks/{chunk-EL6F72JN.js → chunk-3V5DAM37.js} +2 -2
- package/dist/cli/chunks/{chunk-IR7PJUO7.js → chunk-3XCEFSUK.js} +2 -2
- package/dist/cli/chunks/{chunk-L5NEEGKO.js → chunk-437XL5VZ.js} +2 -2
- package/dist/cli/chunks/{chunk-C6GQIUKW.js → chunk-44HXRFOP.js} +2 -2
- package/dist/cli/chunks/{chunk-KAMFT25W.js → chunk-4565IIF6.js} +2 -2
- package/dist/cli/chunks/{chunk-X7677BX3.js → chunk-4BMPFEEG.js} +2 -2
- package/dist/cli/chunks/{chunk-3YKJGKOY.js → chunk-4G4GTF36.js} +4 -4
- package/dist/cli/chunks/{chunk-352W5G4G.js → chunk-4OYC5TIZ.js} +2 -2
- package/dist/cli/chunks/{chunk-VHCHBMZC.js → chunk-4RUS5E3Q.js} +2 -2
- package/dist/cli/chunks/{chunk-QHICG2NI.js → chunk-4S3UIY3G.js} +2 -2
- package/dist/cli/chunks/{chunk-FD37QFXW.js → chunk-4UHWZ47M.js} +1 -1
- package/dist/cli/chunks/{chunk-UU7OCRZM.js → chunk-56PICCZN.js} +2 -2
- package/dist/cli/chunks/chunk-57WGS6BI.js +2 -0
- package/dist/cli/chunks/{chunk-RRSJ7BMF.js → chunk-5LDUW2FD.js} +1 -1
- package/dist/cli/chunks/{chunk-J6GKKXCP.js → chunk-5PSIKJL5.js} +2 -2
- package/dist/cli/chunks/{chunk-QE3CZGAC.js → chunk-5QFZEEJ2.js} +3 -3
- package/dist/cli/chunks/{chunk-RHOBDQXA.js → chunk-5Y7GXQOM.js} +2 -2
- package/dist/cli/chunks/{chunk-5X73HV2P.js → chunk-6CH7476R.js} +1 -1
- package/dist/cli/chunks/{chunk-BG2FN5K2.js → chunk-6WNYBIPS.js} +2 -2
- package/dist/cli/chunks/{chunk-G4KVGUQN.js → chunk-6YNXH6H4.js} +2 -2
- package/dist/cli/chunks/{chunk-2WRVNEIR.js → chunk-6ZAUNPAI.js} +2 -2
- package/dist/cli/chunks/{chunk-2I5QLMQF.js → chunk-72UPBNVF.js} +2 -2
- package/dist/cli/chunks/{chunk-VDL277DX.js → chunk-76UVJLPM.js} +2 -2
- package/dist/cli/chunks/{chunk-4EJTE5TL.js → chunk-7DQLYWLR.js} +1 -1
- package/dist/cli/chunks/{chunk-4D3LVXUD.js → chunk-7GP7ZG3K.js} +2 -2
- package/dist/cli/chunks/{chunk-757YHKIJ.js → chunk-7OAKIXNM.js} +2 -2
- package/dist/cli/chunks/{chunk-7S6D5K4X.js → chunk-7QICU44H.js} +2 -2
- package/dist/cli/chunks/{chunk-ABJPFKHE.js → chunk-7SRSOZMP.js} +1 -1
- package/dist/cli/chunks/{chunk-2WSEJHFQ.js → chunk-7WQKKYYG.js} +1 -1
- package/dist/cli/chunks/{chunk-7NT34MLU.js → chunk-AEZMNFXM.js} +1 -1
- package/dist/cli/chunks/{chunk-MDED3HJI.js → chunk-AG4BYKUV.js} +2 -2
- package/dist/cli/chunks/{chunk-QL7OOCPO.js → chunk-AL54LED5.js} +2 -2
- package/dist/cli/chunks/{chunk-I7RTTJH5.js → chunk-ATQTTGSE.js} +2 -2
- package/dist/cli/chunks/{chunk-HQZX4XYH.js → chunk-B5EE63VE.js} +2 -2
- package/dist/cli/chunks/{chunk-QWXJRZEH.js → chunk-B6U56VWG.js} +1 -1
- package/dist/cli/chunks/{chunk-5HLOQEKL.js → chunk-BOQNPFO5.js} +1 -1
- package/dist/cli/chunks/{chunk-I5C7O5IQ.js → chunk-BR4ERWVD.js} +2 -2
- package/dist/cli/chunks/{chunk-GPALZJD3.js → chunk-BVFNF3RW.js} +1 -1
- package/dist/cli/chunks/{chunk-NYBAH76S.js → chunk-BXLWERBR.js} +3 -3
- package/dist/cli/chunks/{chunk-YQBL5XTM.js → chunk-C27UV6DO.js} +1 -1
- package/dist/cli/chunks/{chunk-UUA2NVUN.js → chunk-C7FYDE5F.js} +244 -233
- package/dist/cli/chunks/{chunk-6HPI6YX3.js → chunk-CIDTFU3C.js} +2 -2
- package/dist/cli/chunks/{chunk-VIHFC67B.js → chunk-CII57TME.js} +1 -1
- package/dist/cli/chunks/{chunk-57XCLC55.js → chunk-CN2HMHIY.js} +2 -2
- package/dist/cli/chunks/{chunk-CREORFJV.js → chunk-CXIFCN6G.js} +1 -1
- package/dist/cli/chunks/{chunk-EYGRNXQT.js → chunk-CZU5G6J4.js} +1 -1
- package/dist/cli/chunks/{chunk-HZSYCVLC.js → chunk-D4DAZ3P2.js} +2 -2
- package/dist/cli/chunks/{chunk-3HT4CT6F.js → chunk-D6MPGK7R.js} +2 -2
- package/dist/cli/chunks/{chunk-DK6WWNCL.js → chunk-DZT4A7R3.js} +2 -2
- package/dist/cli/chunks/{chunk-H7AQ7M3J.js → chunk-EFRIMR74.js} +1 -1
- package/dist/cli/chunks/{chunk-S73EBPI5.js → chunk-EJSDQQZH.js} +3 -3
- package/dist/cli/chunks/{chunk-X6YUGKMM.js → chunk-EQYDPF52.js} +1 -1
- package/dist/cli/chunks/{chunk-BYVARYGB.js → chunk-EZBXCEBV.js} +2 -2
- package/dist/cli/chunks/{chunk-L5IO7QNO.js → chunk-FBOPSWF6.js} +2 -2
- package/dist/cli/chunks/{chunk-K23XK33X.js → chunk-FK3XYV3A.js} +2 -2
- package/dist/cli/chunks/{chunk-4BB75U6N.js → chunk-FOD6JEEU.js} +2 -2
- package/dist/cli/chunks/{chunk-TIR3Z6TE.js → chunk-GUSW3OGX.js} +1 -1
- package/dist/cli/chunks/{chunk-2K2X75UF.js → chunk-H4V6WCF7.js} +2 -2
- package/dist/cli/chunks/{chunk-AHUX7QSE.js → chunk-H5GCRC2D.js} +2 -2
- package/dist/cli/chunks/{chunk-R2M3RMCN.js → chunk-HMVL55QX.js} +2 -2
- package/dist/cli/chunks/{chunk-NOWGQ6YZ.js → chunk-HOFEAA4R.js} +1 -1
- package/dist/cli/chunks/{chunk-PFGH7TWL.js → chunk-HYT5EMES.js} +2 -2
- package/dist/cli/chunks/{chunk-AU4DQMLJ.js → chunk-IAHJ62JS.js} +4 -4
- package/dist/cli/chunks/{chunk-ZVF7QY4R.js → chunk-IIX5Y7BO.js} +1 -1
- package/dist/cli/chunks/{chunk-QAP5S7YC.js → chunk-ILZHECWZ.js} +3 -3
- package/dist/cli/chunks/{chunk-ZT2DGSIO.js → chunk-IUVAWWQG.js} +2 -2
- package/dist/cli/chunks/{chunk-ABVBHH7P.js → chunk-IVZVVZZ3.js} +3 -3
- package/dist/cli/chunks/{chunk-DZWZASDV.js → chunk-J2LAYCYZ.js} +1 -1
- package/dist/cli/chunks/{chunk-G7V2HDTH.js → chunk-JGHEGMLD.js} +3 -3
- package/dist/cli/chunks/{chunk-QFIKEZB5.js → chunk-K3BBLIWW.js} +2 -2
- package/dist/cli/chunks/{chunk-BSMUT672.js → chunk-K7XPKGOL.js} +2 -2
- package/dist/cli/chunks/{chunk-YHFCLJMY.js → chunk-KIBP3LGY.js} +1 -1
- package/dist/cli/chunks/{chunk-U6TZVACK.js → chunk-KRUKMGPF.js} +2 -2
- package/dist/cli/chunks/{chunk-UX4UHYLE.js → chunk-L2QHZFC3.js} +1 -1
- package/dist/cli/chunks/{chunk-O36VC7B7.js → chunk-LNV76GGB.js} +2 -2
- package/dist/cli/chunks/{chunk-NMQEU4BG.js → chunk-LOPM3YIO.js} +2 -2
- package/dist/cli/chunks/{chunk-LT6QHDPK.js → chunk-LSZLXLZA.js} +2 -2
- package/dist/cli/chunks/{chunk-NLUWPS2H.js → chunk-MILWEZSZ.js} +3 -3
- package/dist/cli/chunks/{chunk-LHKQW72O.js → chunk-MX6M2VPB.js} +1 -1
- package/dist/cli/chunks/{chunk-KRAWWBX5.js → chunk-N4OWZLH5.js} +2 -2
- package/dist/cli/chunks/{chunk-4MUZGQPE.js → chunk-N52WQO3G.js} +2 -2
- package/dist/cli/chunks/{chunk-246Z3PH6.js → chunk-N6NSZG7Z.js} +2 -2
- package/dist/cli/chunks/{chunk-OQUH7657.js → chunk-N6RSJGTW.js} +5 -5
- package/dist/cli/chunks/{chunk-WOGWIMQK.js → chunk-NKCL6RAF.js} +2 -2
- package/dist/cli/chunks/{chunk-C6JULAWA.js → chunk-NVJIOCS5.js} +5 -5
- package/dist/cli/chunks/{chunk-TKZABUHO.js → chunk-NYWK7ZSX.js} +1 -1
- package/dist/cli/chunks/{chunk-DNE6MVNA.js → chunk-O5NF6BBD.js} +1 -1
- package/dist/cli/chunks/{chunk-CWRSQQHV.js → chunk-O75SVMMB.js} +2 -2
- package/dist/cli/chunks/{chunk-OD4OIPXO.js → chunk-OHBZON7T.js} +1 -1
- package/dist/cli/chunks/{chunk-CLJNAQXB.js → chunk-OUBYADPD.js} +2 -2
- package/dist/cli/chunks/{chunk-PYQZ4OA3.js → chunk-OUSD2RWO.js} +2 -2
- package/dist/cli/chunks/{chunk-TVU6NMO3.js → chunk-OX2PGDUM.js} +3 -3
- package/dist/cli/chunks/{chunk-XLK4GP3I.js → chunk-P7CMWL7Y.js} +2 -2
- package/dist/cli/chunks/{chunk-7C5HI4ZA.js → chunk-PY4YQDBM.js} +4 -4
- package/dist/cli/chunks/{chunk-5U5SEO7C.js → chunk-QEDS3MOJ.js} +2 -2
- package/dist/cli/chunks/{chunk-WPBVLIWQ.js → chunk-QMN563LV.js} +18 -18
- package/dist/cli/chunks/{chunk-D2JCSWYM.js → chunk-QOR4YAZY.js} +2 -2
- package/dist/cli/chunks/{chunk-H4SHHYRD.js → chunk-QUTKELAS.js} +2 -2
- package/dist/cli/chunks/{chunk-42FBJF73.js → chunk-QXDZN2WX.js} +1 -1
- package/dist/cli/chunks/{chunk-OSP5AJAB.js → chunk-S456W64P.js} +2 -2
- package/dist/cli/chunks/{chunk-VHYNRISI.js → chunk-S7IHSELP.js} +2 -2
- package/dist/cli/chunks/{chunk-62MH7QAQ.js → chunk-S7ZHD6VN.js} +2 -2
- package/dist/cli/chunks/{chunk-QL6ZJ7RV.js → chunk-SU4YXUVK.js} +2 -2
- package/dist/cli/chunks/{chunk-JZNMU63B.js → chunk-SZPTUV3B.js} +2 -2
- package/dist/cli/chunks/{chunk-FALB6Z2Y.js → chunk-T7PUM6OY.js} +1 -1
- package/dist/cli/chunks/{chunk-BVEQPMOF.js → chunk-TCKBICJ3.js} +2 -2
- package/dist/cli/chunks/{chunk-Z6FRNWQA.js → chunk-TOQJWLJV.js} +2 -2
- package/dist/cli/chunks/{chunk-YB3PQ3UV.js → chunk-TUEDIQHY.js} +1 -1
- package/dist/cli/chunks/{chunk-CVRTXIYP.js → chunk-U5GCSSYX.js} +1 -1
- package/dist/cli/chunks/{chunk-WWGGL3TR.js → chunk-UDLN2THT.js} +1 -1
- package/dist/cli/chunks/{chunk-CLSHSVMY.js → chunk-V6YDM37M.js} +1 -1
- package/dist/cli/chunks/{chunk-ILPIH4Z6.js → chunk-VGR65B4Y.js} +1 -1
- package/dist/cli/chunks/{chunk-XEMP2PNW.js → chunk-VRHLHGKR.js} +2 -2
- package/dist/cli/chunks/{chunk-BM52ZEAD.js → chunk-VS2G6LX5.js} +2 -2
- package/dist/cli/chunks/{chunk-TOGD2JH2.js → chunk-W6RS5S4Q.js} +2 -2
- package/dist/cli/chunks/{chunk-UJBIHPU5.js → chunk-WEPZOCN7.js} +1 -1
- package/dist/cli/chunks/{chunk-OF3EMOWN.js → chunk-WIC5UZCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-D7NWDUY3.js → chunk-X2OVUBF6.js} +2 -2
- package/dist/cli/chunks/{chunk-XYRJL7YN.js → chunk-X4GKYSOH.js} +2 -2
- package/dist/cli/chunks/{chunk-TXWUV3S5.js → chunk-XEVUW4QL.js} +2 -2
- package/dist/cli/chunks/{chunk-HAC7NB6R.js → chunk-XMDZRULK.js} +2 -2
- package/dist/cli/chunks/{chunk-UPGKS6Z3.js → chunk-YFY35CSD.js} +2 -2
- package/dist/cli/chunks/{chunk-7D5JE46U.js → chunk-Z6ADE3KJ.js} +2 -2
- package/dist/cli/chunks/{chunk-KJA5A3TV.js → chunk-ZKPOKMJZ.js} +2 -2
- package/dist/cli/chunks/{chunk-7PYEJ4NV.js → chunk-ZRWAFMM7.js} +2 -2
- package/dist/cli/chunks/{ci-KDEFR2X3.js → ci-KTWY7BZT.js} +2 -2
- package/dist/cli/chunks/{ci-output-Z3WXRRFI.js → ci-output-WOX6QBMS.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-GS44DEW2.js → circuit-breaker-6XKOSFIF.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-OHVMHAAH.js → claude-flow-setup-5JA4MNE4.js} +2 -2
- package/dist/cli/chunks/client-X3KUJ6R5.js +2 -0
- package/dist/cli/chunks/{cline-installer-5TCF4MZD.js → cline-installer-Z2ANHEKW.js} +2 -2
- package/dist/cli/chunks/{code-3KCGTG7Z.js → code-NO4ZKNDU.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-LJBI54MZ.js → code-index-extractor-VV4OEPG7.js} +2 -2
- package/dist/cli/chunks/{codex-installer-IB62Z6LA.js → codex-installer-BP7Y2NYR.js} +2 -2
- package/dist/cli/chunks/{completions-JDXX7KKB.js → completions-YULJQUF4.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-6JVDXXXP.js → complexity-analyzer-D7XYPQ76.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-PUB45QVR.js → continuedev-installer-E3L7UF72.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-QWJ36P22.js → copilot-installer-5TRUMJC5.js} +2 -2
- package/dist/cli/chunks/core-handlers-A2EQB3UH.js +2 -0
- package/dist/cli/chunks/{cost-tracker-J3KEJDL5.js → cost-tracker-QTYSJMSV.js} +2 -2
- package/dist/cli/chunks/{coverage-FWKRI2EY.js → coverage-D5DKZ3XT.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-OKZ2PDHT.js +2 -0
- package/dist/cli/chunks/{cursor-installer-2HYCUCTH.js → cursor-installer-UDBHGUIG.js} +2 -2
- package/dist/cli/chunks/{daemon-G3DBRWDQ.js → daemon-2GXYN7F7.js} +3 -3
- package/dist/cli/chunks/{daemon-BVP66DIZ.js → daemon-IVWUMQKL.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-2AQLNB4B.js → dag-attention-scheduler-PWXR4QTU.js} +2 -2
- package/dist/cli/chunks/{detect-RUM5SHNE.js → detect-C6P7ONFB.js} +2 -2
- package/dist/cli/chunks/{dist-node-GX7MJHFT.js → dist-node-2BUFM2JK.js} +2 -2
- package/dist/cli/chunks/{domain-handler-OFBGZ2U5.js → domain-handler-Q2GWZLDM.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-6CGRPRGR.js → domain-transfer-GMUBAM3J.js} +2 -2
- package/dist/cli/chunks/dream-ZBP4Z5C3.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-MUOEVQX2.js → embed-and-insert-pattern-EFUERRM2.js} +2 -2
- package/dist/cli/chunks/{eval-SJMG67DE.js → eval-24FIC43F.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-ICKN6IXX.js → experience-capture-middleware-R4UP2Q2M.js} +3 -3
- package/dist/cli/chunks/{fast-paths-HXLBG3J4.js → fast-paths-RQCGGTXB.js} +2 -2
- package/dist/cli/chunks/{feature-flags-CRUB2ASU.js → feature-flags-APTWWVNQ.js} +2 -2
- package/dist/cli/chunks/{feature-flags-JYZSSQJC.js → feature-flags-SOXVYIBN.js} +2 -2
- package/dist/cli/chunks/{file-discovery-YHHC7NTJ.js → file-discovery-66KRMXVF.js} +2 -2
- package/dist/cli/chunks/{fleet-2VGDL4YL.js → fleet-EMBNKO5Q.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-7ZAGD4S4.js → gnn-wrapper-6TKDWFJF.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-HAW3JRHN.js → heartbeat-handler-4ODKJ75H.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-6JUWQXWG.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-JT4BU7XJ.js +2 -0
- package/dist/cli/chunks/hnsw-index-JC5YELJX.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-BO325POX.js → hnsw-legacy-bridge-25KFCLUC.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-6A6EAXAT.js → hnswlib-node-FUWQTM2D.js} +2 -2
- package/dist/cli/chunks/{hooks-HKM3JTFQ.js → hooks-JIDA2COE.js} +10 -10
- package/dist/cli/chunks/hybrid-router-SLTXHUFG.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-LGLGHK6B.js → hypergraph-engine-3YDFDPE3.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-6QDVREZA.js → hypergraph-handler-VWZX2OJX.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-JXHCMZXY.js +2 -0
- package/dist/cli/chunks/{init-handler-XUQ7XHIE.js → init-handler-DH7VQAMF.js} +6 -6
- package/dist/cli/chunks/init-wizard-EX37TYOG.js +2 -0
- package/dist/cli/chunks/kernel-JPHAG27D.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-6CEZLVIX.js → kilocode-installer-2W2KZCGH.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-6CJGATOS.js → kiro-installer-E5KP7OMD.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-5QJZIRYB.js +2 -0
- package/dist/cli/chunks/{learning-EIYTYZJY.js → learning-XJRUVPLF.js} +3 -3
- package/dist/cli/chunks/{llm-router-J4CI7VHU.js → llm-router-AEEKEMF5.js} +4 -4
- package/dist/cli/chunks/llm-router-service-SE2RO4P5.js +2 -0
- package/dist/cli/chunks/{load-CQPWGLQQ.js → load-PZ4YOTBJ.js} +2 -2
- package/dist/cli/chunks/load-test-LOTBWIIS.js +2 -0
- package/dist/cli/chunks/{mcp-THOATWCO.js → mcp-IVA6LC2S.js} +2 -2
- package/dist/cli/chunks/{memory-NZHMHMRK.js → memory-Y3DHXFQE.js} +5 -5
- package/dist/cli/chunks/memory-backend-BSDKTFAN.js +2 -0
- package/dist/cli/chunks/{memory-handlers-L2J54AQE.js → memory-handlers-V5PXEJWL.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-3P5E773H.js → multi-model-executor-646G4S4Y.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-IRZMKSNG.js → opencode-installer-P6KOOTUS.js} +2 -2
- package/dist/cli/chunks/{orchestrator-UADLXTKP.js → orchestrator-T2GVKYMX.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-LRSXCZWM.js +2 -0
- package/dist/cli/chunks/{pipeline-QEH3XHXJ.js → pipeline-CK2ON45P.js} +2 -2
- package/dist/cli/chunks/{platform-NEZ3NXLT.js → platform-OQNSD3A3.js} +2 -2
- package/dist/cli/chunks/{plugin-O33HR2VO.js → plugin-UOG6RNRM.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-MBUMFEX7.js → prime-radiant-advanced-wasm-37UE6TG5.js} +2 -2
- package/dist/cli/chunks/protocol-executor-WPUVJEL7.js +2 -0
- package/dist/cli/chunks/{protocol-handler-L455UOUT.js → protocol-handler-V722S6YH.js} +2 -2
- package/dist/cli/chunks/{prove-3XA3SMAA.js → prove-ANGY6W3W.js} +2 -2
- package/dist/cli/chunks/provider-manager-EVPWSH3E.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-IH63FG33.js +2 -0
- package/dist/cli/chunks/{quality-H6Z5JH5B.js → quality-KG4ALI2L.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-TTCAGYQO.js +2 -0
- package/dist/cli/chunks/{real-embeddings-5DNJ4KEM.js → real-embeddings-GUZDO5UN.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-KHXKR2FK.js → roocode-installer-WROAR6MJ.js} +2 -2
- package/dist/cli/chunks/router-64Q4ILOQ.js +2 -0
- package/dist/cli/chunks/routing-feedback-KCZV4XXC.js +2 -0
- package/dist/cli/chunks/{routing-handler-WAMGESEM.js → routing-handler-UFPSSS5D.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-4J7XC6XY.js → ruvector-commands-XJQMKDRM.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-3PZEN6XN.js → rvf-dual-writer-QPRMDKYX.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-OIUNRQSU.js → rvf-migration-adapter-SOHBK23K.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-QZXDI4I5.js → rvf-migration-coordinator-MTWUSPEJ.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-GNJKMURU.js +2 -0
- package/dist/cli/chunks/safe-db-6VBZQIJI.js +2 -0
- package/dist/cli/chunks/schedule-4V7O5IPX.js +2 -0
- package/dist/cli/chunks/scheduler-CQDMHEHN.js +2 -0
- package/dist/cli/chunks/{security-5NY77AMD.js → security-5MAMQKP6.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-MHPUZIMW.js → shared-rvf-adapter-YEUBSRNN.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-ITLDYHCX.js → shared-rvf-dual-writer-DBQJHG42.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-7DHUFTHL.js +2 -0
- package/dist/cli/chunks/{status-handler-7RBRIXZD.js → status-handler-ZUB2UKQZ.js} +2 -2
- package/dist/cli/chunks/{structural-health-MQPY6GA6.js → structural-health-B2GHENWX.js} +2 -2
- package/dist/cli/chunks/{sync-66KCEANE.js → sync-7VMXJTR2.js} +2 -2
- package/dist/cli/chunks/{sync-USVQTHKN.js → sync-YCUUW3IP.js} +2 -2
- package/dist/cli/chunks/{task-handler-4UI4FPPW.js → task-handler-N7LJTXZM.js} +2 -2
- package/dist/cli/chunks/{task-handlers-KRII3GVV.js → task-handlers-GDHNJV2E.js} +3 -3
- package/dist/cli/chunks/{test-JHN2MVEG.js → test-6COGC5KI.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-ZWTEGS3S.js → test-scheduling-CUERHJMF.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-YWXL6AS5.js → token-bootstrap-JTGSL6PP.js} +2 -2
- package/dist/cli/chunks/{token-usage-INII2XM3.js → token-usage-LSG3JYGX.js} +2 -2
- package/dist/cli/chunks/{transformers-DVFGDNZC.js → transformers-ODIITRCT.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-W2XJT3XF.js → tree-sitter-wasm-parser-KSP7ZZ5H.js} +2 -2
- package/dist/cli/chunks/{types-GBZ5Q2GP.js → types-6N6SUU2O.js} +2 -2
- package/dist/cli/chunks/unified-memory-MQA72NLP.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-K7HA3CWV.js +2 -0
- package/dist/cli/chunks/unified-persistence-2DXB4OE4.js +2 -0
- package/dist/cli/chunks/{upgrade-2JEXEGQX.js → upgrade-7SCVOCPS.js} +2 -2
- package/dist/cli/chunks/{validate-GDCM5YTS.js → validate-762ISH2Y.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-QZ5RSJEU.js → validate-swarm-R6WYYXGO.js} +2 -2
- package/dist/cli/chunks/{vibium-I5BMT734.js → vibium-5GZYSUDQ.js} +2 -2
- package/dist/cli/chunks/visual-security-UD6CARIJ.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-3QY2LMLP.js → web-tree-sitter-VYYVAJTY.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-V7OBPLOB.js → windsurf-installer-RRIOR3B6.js} +2 -2
- package/dist/cli/chunks/witness-chain-LWALPPMC.js +2 -0
- package/dist/cli/chunks/{witness-chain-BNJ4VSZX.js → witness-chain-SRVBEKDB.js} +2 -2
- package/dist/cli/chunks/{workflow-3FJSNLPI.js → workflow-XNUDHGEC.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-QU652FLH.js +2 -0
- package/dist/cli/chunks/{wrappers-ERTQNIPK.js → wrappers-3STST7QW.js} +2 -2
- package/dist/domains/requirements-validation/coordinator.d.ts +16 -2
- package/dist/domains/requirements-validation/coordinator.js +112 -7
- package/dist/domains/requirements-validation/plugin.js +20 -1
- package/dist/domains/test-generation/coordinator.d.ts +26 -1
- package/dist/domains/test-generation/coordinator.js +119 -2
- package/dist/domains/test-generation/plugin.js +23 -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 +69 -0
- package/dist/integrations/darwin/types.js +21 -0
- package/dist/mcp/bundle.js +390 -379
- package/dist/mcp/tool-scoping.d.ts +8 -2
- package/dist/mcp/tool-scoping.js +13 -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/coordinator-support.d.ts +90 -0
- package/dist/routing/free-tier/coordinator-support.js +78 -0
- package/dist/routing/free-tier/executor.d.ts +161 -0
- package/dist/routing/free-tier/executor.js +182 -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 +15 -0
- package/dist/routing/free-tier/index.js +6 -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/dist/routing/value-score.d.ts +49 -0
- package/dist/routing/value-score.js +54 -0
- package/dist/shared/optional-module.d.ts +23 -0
- package/dist/shared/optional-module.js +46 -0
- package/dist/verification/adversarial-verify/calibrate.d.ts +32 -0
- package/dist/verification/adversarial-verify/calibrate.js +33 -0
- package/dist/verification/adversarial-verify/gate.d.ts +38 -0
- package/dist/verification/adversarial-verify/gate.js +32 -0
- package/dist/verification/adversarial-verify/index.d.ts +20 -0
- package/dist/verification/adversarial-verify/index.js +6 -0
- package/dist/verification/adversarial-verify/prompts.d.ts +14 -0
- package/dist/verification/adversarial-verify/prompts.js +17 -0
- package/dist/verification/adversarial-verify/synthesize.d.ts +18 -0
- package/dist/verification/adversarial-verify/synthesize.js +35 -0
- package/dist/verification/adversarial-verify/types.d.ts +59 -0
- package/dist/verification/adversarial-verify/types.js +10 -0
- package/dist/verification/adversarial-verify/verify.d.ts +20 -0
- package/dist/verification/adversarial-verify/verify.js +34 -0
- package/package.json +14 -1
- package/dist/cli/chunks/adapter-TRSV37EA.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-CVJRJOSO.js +0 -2
- package/dist/cli/chunks/base-BX4A2D4V.js +0 -2
- package/dist/cli/chunks/browser-workflow-O3RL7EYT.js +0 -2
- package/dist/cli/chunks/chunk-OPKEQYAC.js +0 -2
- package/dist/cli/chunks/client-T263ZXVV.js +0 -2
- package/dist/cli/chunks/core-handlers-ODKKGCFK.js +0 -2
- package/dist/cli/chunks/cross-domain-router-APU725GC.js +0 -2
- package/dist/cli/chunks/dream-PJ5GKY3J.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-4ZHUIW3Q.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-UVJJ6TTP.js +0 -2
- package/dist/cli/chunks/hnsw-index-K6HS34JZ.js +0 -2
- package/dist/cli/chunks/hybrid-router-25S7OH2Y.js +0 -2
- package/dist/cli/chunks/impact-analyzer-UP4RDMJH.js +0 -2
- package/dist/cli/chunks/init-wizard-2PAJ3GEC.js +0 -2
- package/dist/cli/chunks/kernel-7WOQGMMT.js +0 -2
- package/dist/cli/chunks/knowledge-graph-FN2AWHGR.js +0 -2
- package/dist/cli/chunks/llm-router-service-C3UPBAS3.js +0 -2
- package/dist/cli/chunks/load-test-PQSGLDXJ.js +0 -2
- package/dist/cli/chunks/memory-backend-6FR4RT5O.js +0 -2
- package/dist/cli/chunks/pattern-null-store-B2UX4NZY.js +0 -2
- package/dist/cli/chunks/protocol-executor-OQ6SL7SR.js +0 -2
- package/dist/cli/chunks/provider-manager-DQWHW2RG.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-3JS2CZAE.js +0 -2
- package/dist/cli/chunks/queen-coordinator-KXCWEM3Y.js +0 -2
- package/dist/cli/chunks/router-OVLIKT55.js +0 -2
- package/dist/cli/chunks/routing-feedback-2BYCXNXX.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-YNUYOQ5C.js +0 -2
- package/dist/cli/chunks/safe-db-6TYYEU7C.js +0 -2
- package/dist/cli/chunks/schedule-XVH7RTVY.js +0 -2
- package/dist/cli/chunks/scheduler-DHZBN5HA.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-NR5WXTPN.js +0 -2
- package/dist/cli/chunks/unified-memory-WJEZ5YAK.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-6ZA2PMYO.js +0 -2
- package/dist/cli/chunks/unified-persistence-SWH6R7MA.js +0 -2
- package/dist/cli/chunks/visual-security-PH5JQZCZ.js +0 -2
- package/dist/cli/chunks/witness-chain-WYMBNGSL.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-56JIXCI4.js +0 -2
|
@@ -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.11.1");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-7GP7ZG3K.js";import"./chunk-5PSIKJL5.js";import"./chunk-437XL5VZ.js";import"./chunk-W6RS5S4Q.js";import"./chunk-57WGS6BI.js";import"./chunk-S7IHSELP.js";import"./chunk-IUVAWWQG.js";import"./chunk-N6NSZG7Z.js";import"./chunk-S456W64P.js";import"./chunk-EQYDPF52.js";import"./chunk-QEDS3MOJ.js";import"./chunk-B6U56VWG.js";import"./chunk-X2OVUBF6.js";import"./chunk-FBOPSWF6.js";import"./chunk-FOD6JEEU.js";import"./chunk-NKCL6RAF.js";import"./chunk-VRHLHGKR.js";import"./chunk-44HXRFOP.js";import"./chunk-O75SVMMB.js";import"./chunk-D6MPGK7R.js";import"./chunk-N4OWZLH5.js";import"./chunk-7SRSOZMP.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
|
|
@@ -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.
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}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.11.1");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-SZPTUV3B.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-ZKPOKMJZ.js";import"./chunk-437XL5VZ.js";import"./chunk-W6RS5S4Q.js";import"./chunk-57WGS6BI.js";import"./chunk-S7IHSELP.js";import"./chunk-IUVAWWQG.js";import"./chunk-N6NSZG7Z.js";import"./chunk-S456W64P.js";import"./chunk-QEDS3MOJ.js";import"./chunk-X2OVUBF6.js";import"./chunk-FBOPSWF6.js";import"./chunk-FOD6JEEU.js";import"./chunk-NKCL6RAF.js";import"./chunk-VRHLHGKR.js";import"./chunk-44HXRFOP.js";import"./chunk-O75SVMMB.js";import"./chunk-D6MPGK7R.js";import"./chunk-N4OWZLH5.js";import"./chunk-7SRSOZMP.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { Result } from '../../shared/types/index.js';
|
|
10
10
|
import { EventBus, MemoryBackend, AgentCoordinator } from '../../kernel/interfaces.js';
|
|
11
11
|
import type { HybridRouter } from '../../shared/llm/router/hybrid-router.js';
|
|
12
|
+
import { type FreeTierCoordinatorConfig, type RoutingFeedbackLike } from '../../routing/free-tier/index.js';
|
|
12
13
|
import { IRequirementsValidationCoordinator, RequirementAnalysis, TestArtifacts, SprintValidation } from './interfaces.js';
|
|
13
14
|
import { BaseDomainCoordinator, type BaseDomainCoordinatorConfig } from '../base-domain-coordinator.js';
|
|
14
15
|
import { type DomainFinding } from '../../coordination/consensus/domain-findings.js';
|
|
@@ -22,7 +23,7 @@ export declare const RequirementsValidationEvents: {
|
|
|
22
23
|
/**
|
|
23
24
|
* CQ-002: Extends BaseDomainCoordinatorConfig — removes duplicate fields
|
|
24
25
|
*/
|
|
25
|
-
export interface CoordinatorConfig extends BaseDomainCoordinatorConfig {
|
|
26
|
+
export interface CoordinatorConfig extends BaseDomainCoordinatorConfig, FreeTierCoordinatorConfig {
|
|
26
27
|
minTestabilityThreshold: number;
|
|
27
28
|
enablePPO: boolean;
|
|
28
29
|
enableSONA: boolean;
|
|
@@ -45,10 +46,14 @@ export declare class RequirementsValidationCoordinator extends BaseDomainCoordin
|
|
|
45
46
|
private readonly bddWriter;
|
|
46
47
|
private readonly testabilityScorer;
|
|
47
48
|
private readonly repository;
|
|
49
|
+
/** Opt-in cheap-first BDD scenario generation (plan 06, ADR-111). Null = off. */
|
|
50
|
+
private readonly freeTierExecutor;
|
|
48
51
|
private ppoAlgorithm?;
|
|
49
52
|
private sonaEngine?;
|
|
50
53
|
private rlInitialized;
|
|
51
|
-
constructor(eventBus: EventBus, memory: MemoryBackend, agentCoordinator: AgentCoordinator, config?: Partial<CoordinatorConfig>, llmRouter?: HybridRouter
|
|
54
|
+
constructor(eventBus: EventBus, memory: MemoryBackend, agentCoordinator: AgentCoordinator, config?: Partial<CoordinatorConfig>, llmRouter?: HybridRouter,
|
|
55
|
+
/** Optional D9 sink — when provided, free-tier outcomes feed routing-feedback. */
|
|
56
|
+
routingFeedback?: RoutingFeedbackLike | null);
|
|
52
57
|
/**
|
|
53
58
|
* Initialize the coordinator
|
|
54
59
|
* CQ-002: Domain-specific initialization
|
|
@@ -74,6 +79,15 @@ export declare class RequirementsValidationCoordinator extends BaseDomainCoordin
|
|
|
74
79
|
/**
|
|
75
80
|
* Generate test artifacts from requirement
|
|
76
81
|
*/
|
|
82
|
+
/**
|
|
83
|
+
* Cheap-first BDD generation (plan 06 broadening; ADR-111 escalation lane).
|
|
84
|
+
* Generates raw Gherkin on the free local tier (best-effort), verifies Gherkin
|
|
85
|
+
* STRUCTURE as the objective oracle (§10 — never the model's own judgement),
|
|
86
|
+
* parses it back into structured scenarios, and escalates the hard tail via the
|
|
87
|
+
* router. Returns null when off or nothing usable → caller falls back to the
|
|
88
|
+
* normal structured path. Off by default.
|
|
89
|
+
*/
|
|
90
|
+
private tryFreeTierScenarios;
|
|
77
91
|
generateTestArtifacts(requirementId: string): Promise<Result<TestArtifacts>>;
|
|
78
92
|
/**
|
|
79
93
|
* Validate sprint requirements
|
|
@@ -10,6 +10,7 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
10
10
|
import { LoggerFactory } from '../../logging/index.js';
|
|
11
11
|
import { ok, err } from '../../shared/types/index.js';
|
|
12
12
|
import { toError } from '../../shared/error-utils.js';
|
|
13
|
+
import { buildFreeTierExecutor, } from '../../routing/free-tier/index.js';
|
|
13
14
|
import { createEvent } from '../../shared/events/domain-events.js';
|
|
14
15
|
import { RequirementsValidatorService } from './services/requirements-validator.js';
|
|
15
16
|
import { BDDScenarioWriterService } from './services/bdd-scenario-writer.js';
|
|
@@ -93,6 +94,25 @@ class InMemoryRequirementRepository {
|
|
|
93
94
|
* CQ-002: Extends BaseDomainCoordinator
|
|
94
95
|
*/
|
|
95
96
|
const logger = LoggerFactory.create('requirements-validation');
|
|
97
|
+
/** Strip a ```gherkin fence (truncation-robust); else return the text as-is. */
|
|
98
|
+
function stripGherkinFence(s) {
|
|
99
|
+
s = (s ?? '').trim();
|
|
100
|
+
const full = /```(?:gherkin|feature)?\s*([\s\S]*?)```/.exec(s);
|
|
101
|
+
if (full)
|
|
102
|
+
return full[1].trim();
|
|
103
|
+
const open = /```(?:gherkin|feature)?[^\n]*\n([\s\S]*)$/.exec(s);
|
|
104
|
+
return open ? open[1].trim() : s;
|
|
105
|
+
}
|
|
106
|
+
const GHERKIN_STOPWORDS = new Set([
|
|
107
|
+
'given', 'when', 'then', 'scenario', 'feature', 'with', 'that', 'this', 'from', 'into',
|
|
108
|
+
'should', 'must', 'have', 'will', 'shall', 'able', 'user', 'users', 'system', 'value',
|
|
109
|
+
'valid', 'invalid', 'returns', 'return', 'apply', 'using', 'based', 'their', 'they',
|
|
110
|
+
]);
|
|
111
|
+
/** Significant lowercased terms (>3 chars, non-stopword) from a requirement. */
|
|
112
|
+
function significantTerms(requirement) {
|
|
113
|
+
const src = `${requirement.title} ${(requirement.acceptanceCriteria ?? []).join(' ')}`.toLowerCase();
|
|
114
|
+
return Array.from(new Set(src.match(/[a-z][a-z0-9]{3,}/g) ?? [])).filter((w) => !GHERKIN_STOPWORDS.has(w));
|
|
115
|
+
}
|
|
96
116
|
export class RequirementsValidationCoordinator extends BaseDomainCoordinator {
|
|
97
117
|
memory;
|
|
98
118
|
agentCoordinator;
|
|
@@ -100,11 +120,15 @@ export class RequirementsValidationCoordinator extends BaseDomainCoordinator {
|
|
|
100
120
|
bddWriter;
|
|
101
121
|
testabilityScorer;
|
|
102
122
|
repository;
|
|
123
|
+
/** Opt-in cheap-first BDD scenario generation (plan 06, ADR-111). Null = off. */
|
|
124
|
+
freeTierExecutor;
|
|
103
125
|
// V3: RL and SONA integrations
|
|
104
126
|
ppoAlgorithm;
|
|
105
127
|
sonaEngine;
|
|
106
128
|
rlInitialized = false;
|
|
107
|
-
constructor(eventBus, memory, agentCoordinator, config = {}, llmRouter
|
|
129
|
+
constructor(eventBus, memory, agentCoordinator, config = {}, llmRouter,
|
|
130
|
+
/** Optional D9 sink — when provided, free-tier outcomes feed routing-feedback. */
|
|
131
|
+
routingFeedback) {
|
|
108
132
|
const fullConfig = { ...DEFAULT_CONFIG, ...config };
|
|
109
133
|
super(eventBus, 'requirements-validation', fullConfig, {
|
|
110
134
|
verifyFindingTypes: ['requirement-conflict', 'testability-assessment', 'ambiguous-requirement'],
|
|
@@ -116,6 +140,16 @@ export class RequirementsValidationCoordinator extends BaseDomainCoordinator {
|
|
|
116
140
|
this.bddWriter = new BDDScenarioWriterService(memory);
|
|
117
141
|
this.testabilityScorer = new TestabilityScorerService(memory);
|
|
118
142
|
this.repository = new InMemoryRequirementRepository(memory);
|
|
143
|
+
// Opt-in cheap-first BDD generation (plan 06 broadening; ADR-111 escalation
|
|
144
|
+
// lane). OFF by default; BDD/Gherkin is a bounded-gen + objective-oracle fit.
|
|
145
|
+
this.freeTierExecutor = buildFreeTierExecutor({
|
|
146
|
+
config: this.config,
|
|
147
|
+
agentType: 'qe-requirements-validator',
|
|
148
|
+
taskKind: 'requirements-validation',
|
|
149
|
+
llmRouter,
|
|
150
|
+
routingFeedback, // D9 sink (undefined unless wired by the plugin)
|
|
151
|
+
logger,
|
|
152
|
+
});
|
|
119
153
|
}
|
|
120
154
|
// ==========================================================================
|
|
121
155
|
// BaseDomainCoordinator Template Methods
|
|
@@ -294,6 +328,72 @@ export class RequirementsValidationCoordinator extends BaseDomainCoordinator {
|
|
|
294
328
|
/**
|
|
295
329
|
* Generate test artifacts from requirement
|
|
296
330
|
*/
|
|
331
|
+
/**
|
|
332
|
+
* Cheap-first BDD generation (plan 06 broadening; ADR-111 escalation lane).
|
|
333
|
+
* Generates raw Gherkin on the free local tier (best-effort), verifies Gherkin
|
|
334
|
+
* STRUCTURE as the objective oracle (§10 — never the model's own judgement),
|
|
335
|
+
* parses it back into structured scenarios, and escalates the hard tail via the
|
|
336
|
+
* router. Returns null when off or nothing usable → caller falls back to the
|
|
337
|
+
* normal structured path. Off by default.
|
|
338
|
+
*/
|
|
339
|
+
async tryFreeTierScenarios(requirement, scenarioCount) {
|
|
340
|
+
if (!this.freeTierExecutor)
|
|
341
|
+
return null;
|
|
342
|
+
const ac = (requirement.acceptanceCriteria ?? []).map((c, i) => `${i + 1}. ${c}`).join('\n');
|
|
343
|
+
const system = 'You write Gherkin .feature files. Output ONLY a single fenced ```gherkin code block — no prose.';
|
|
344
|
+
const user = `Write a Gherkin feature with ~${scenarioCount} scenarios for this requirement. ` +
|
|
345
|
+
'Use Feature/Scenario/Given/When/Then; cover the acceptance criteria and edge cases.\n\n' +
|
|
346
|
+
`Title: ${requirement.title}\nDescription: ${requirement.description}\n` +
|
|
347
|
+
(ac ? `Acceptance criteria:\n${ac}\n` : '');
|
|
348
|
+
// Objective oracle (structural proxy — does NOT execute the scenarios). Beyond
|
|
349
|
+
// bare structure it requires: parses to >=1 scenario, EVERY scenario has a
|
|
350
|
+
// non-empty Given/When/Then, AND the feature is RELEVANT to the requirement
|
|
351
|
+
// (token overlap) — so generic off-topic boilerplate is rejected, not rewarded
|
|
352
|
+
// (resists the §10 Goodhart trap). Still a proxy, not semantic ground truth.
|
|
353
|
+
const sigTerms = significantTerms(requirement);
|
|
354
|
+
const verify = (out) => {
|
|
355
|
+
const text = stripGherkinFence(out);
|
|
356
|
+
const structural = /\bFeature:/i.test(text) && /\bScenario:/i.test(text) &&
|
|
357
|
+
/\bGiven\b/i.test(text) && /\bWhen\b/i.test(text) && /\bThen\b/i.test(text);
|
|
358
|
+
if (!structural) {
|
|
359
|
+
return { passed: false, feedback: 'must be valid Gherkin: Feature:, Scenario:, and Given/When/Then steps' };
|
|
360
|
+
}
|
|
361
|
+
const parsed = this.bddWriter.parseGherkin(text);
|
|
362
|
+
if (!parsed.success || parsed.value.length === 0) {
|
|
363
|
+
return { passed: false, feedback: 'Gherkin did not parse into any scenario' };
|
|
364
|
+
}
|
|
365
|
+
const wellFormed = parsed.value.every((s) => s.given.length > 0 && s.when.length > 0 && s.then.length > 0);
|
|
366
|
+
if (!wellFormed) {
|
|
367
|
+
return { passed: false, feedback: 'every scenario needs at least one Given, one When, and one Then step' };
|
|
368
|
+
}
|
|
369
|
+
if (sigTerms.length > 0) {
|
|
370
|
+
const lower = text.toLowerCase();
|
|
371
|
+
const hits = sigTerms.filter((t) => lower.includes(t)).length;
|
|
372
|
+
if (hits < Math.min(2, sigTerms.length)) {
|
|
373
|
+
return { passed: false, feedback: `scenarios must address THIS requirement — reference its terms (e.g. ${sigTerms.slice(0, 6).join(', ')})` };
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return { passed: true };
|
|
377
|
+
};
|
|
378
|
+
const r = await this.freeTierExecutor.execute({
|
|
379
|
+
agentId: `requirements:${requirement.id}`,
|
|
380
|
+
messages: [
|
|
381
|
+
{ role: 'system', content: system },
|
|
382
|
+
{ role: 'user', content: user },
|
|
383
|
+
],
|
|
384
|
+
verify,
|
|
385
|
+
escalate: true,
|
|
386
|
+
bestOfK: this.config.freeTierBestOfK ?? 2, // §12, matches the D3-validated config
|
|
387
|
+
repairAttempts: this.config.freeTierRepairAttempts ?? 1,
|
|
388
|
+
});
|
|
389
|
+
if (!r.ok)
|
|
390
|
+
return null;
|
|
391
|
+
const parsed = this.bddWriter.parseGherkin(stripGherkinFence(r.content));
|
|
392
|
+
if (!parsed.success || parsed.value.length === 0)
|
|
393
|
+
return null;
|
|
394
|
+
logger.info(`Free-tier BDD scenarios for ${requirement.id} via tier=${r.tierUsed} (${parsed.value.length} scenarios)`);
|
|
395
|
+
return parsed.value;
|
|
396
|
+
}
|
|
297
397
|
async generateTestArtifacts(requirementId) {
|
|
298
398
|
const workflowId = uuidv4();
|
|
299
399
|
try {
|
|
@@ -320,15 +420,20 @@ export class RequirementsValidationCoordinator extends BaseDomainCoordinator {
|
|
|
320
420
|
logger.info(`[PPO] Optimized scenario count to ${optimizedScenarioCount}`);
|
|
321
421
|
}
|
|
322
422
|
}
|
|
323
|
-
//
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
423
|
+
// Cheap-first (opt-in, ADR-111): generate Gherkin on the free local tier,
|
|
424
|
+
// verify its structure (objective oracle), parse back to scenarios. Falls
|
|
425
|
+
// through to the normal structured path on any miss (off by default).
|
|
426
|
+
let scenarios = await this.tryFreeTierScenarios(requirement, optimizedScenarioCount);
|
|
427
|
+
if (!scenarios) {
|
|
428
|
+
const scenariosResult = await this.bddWriter.generateScenariosWithExamples(requirement, optimizedScenarioCount);
|
|
429
|
+
if (!scenariosResult.success) {
|
|
430
|
+
this.failWorkflow(workflowId, scenariosResult.error.message);
|
|
431
|
+
return err(scenariosResult.error);
|
|
432
|
+
}
|
|
433
|
+
scenarios = scenariosResult.value;
|
|
328
434
|
}
|
|
329
435
|
this.updateWorkflowProgress(workflowId, 50);
|
|
330
436
|
// V3: Use PPO to optimize scenario ordering
|
|
331
|
-
let scenarios = scenariosResult.value;
|
|
332
437
|
if (this.config.enablePPO && this.ppoAlgorithm) {
|
|
333
438
|
scenarios = await this.optimizeScenarioOrdering(requirement, scenarios);
|
|
334
439
|
}
|
|
@@ -9,6 +9,7 @@ import { RequirementsValidatorService, } from './services/requirements-validator
|
|
|
9
9
|
import { BDDScenarioWriterService, } from './services/bdd-scenario-writer.js';
|
|
10
10
|
import { TestabilityScorerService, } from './services/testability-scorer.js';
|
|
11
11
|
import { createQCSDIdeationPlugin, } from './qcsd-ideation-plugin.js';
|
|
12
|
+
import { RoutingFeedbackCollector } from '../../routing/routing-feedback.js';
|
|
12
13
|
import { toError } from '../../shared/error-utils.js';
|
|
13
14
|
// ============================================================================
|
|
14
15
|
// Plugin Implementation
|
|
@@ -171,8 +172,26 @@ export class RequirementsValidationPlugin extends BaseDomainPlugin {
|
|
|
171
172
|
this.validator = new RequirementsValidatorService({ memory: this.memory, llmRouter: this.llmRouter }, this.pluginConfig.validator);
|
|
172
173
|
this.bddWriter = new BDDScenarioWriterService(this.memory, this.pluginConfig.bddWriter);
|
|
173
174
|
this.testabilityScorer = new TestabilityScorerService(this.memory, this.pluginConfig.testabilityScorer);
|
|
175
|
+
// D9: when the free tier is opted in, stand up a live RoutingFeedbackCollector
|
|
176
|
+
// (calibrator + auto-escalation) so each cheap-vs-escalated BDD outcome feeds
|
|
177
|
+
// routing confidence. Memory-only fallback if the DB is unavailable.
|
|
178
|
+
let routingFeedback;
|
|
179
|
+
const freeTierOn = this.pluginConfig.coordinator?.enableFreeTier === true || process.env.AQE_FREE_TIER === '1';
|
|
180
|
+
if (freeTierOn) {
|
|
181
|
+
routingFeedback = new RoutingFeedbackCollector(10000, {
|
|
182
|
+
enableEMACalibration: true,
|
|
183
|
+
enableAutoEscalation: true,
|
|
184
|
+
});
|
|
185
|
+
try {
|
|
186
|
+
await routingFeedback.initialize();
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
// memory-only is fine — recording still drives calibration/escalation
|
|
190
|
+
}
|
|
191
|
+
}
|
|
174
192
|
// Create and initialize coordinator
|
|
175
|
-
this.coordinator = new RequirementsValidationCoordinator(this.eventBus, this.memory, this.agentCoordinator, this.pluginConfig.coordinator, this.llmRouter)
|
|
193
|
+
this.coordinator = new RequirementsValidationCoordinator(this.eventBus, this.memory, this.agentCoordinator, this.pluginConfig.coordinator, this.llmRouter, routingFeedback // D9 sink (undefined unless free tier is on)
|
|
194
|
+
);
|
|
176
195
|
await this.coordinator.initialize();
|
|
177
196
|
// Create and initialize QCSD Ideation Plugin
|
|
178
197
|
this.qcsdIdeationPlugin = createQCSDIdeationPlugin(this.memory);
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - DecisionTransformer for test case selection
|
|
9
9
|
*/
|
|
10
10
|
import { Result } from '../../shared/types';
|
|
11
|
+
import { type RoutingFeedbackLike } from '../../routing/free-tier/index.js';
|
|
11
12
|
import { EventBus, MemoryBackend, AgentCoordinator } from '../../kernel/interfaces';
|
|
12
13
|
import type { HybridRouter } from '../../shared/llm/router/hybrid-router.js';
|
|
13
14
|
import { GenerateTestsRequest, GeneratedTests, TDDRequest, TDDResult, PropertyTestRequest, PropertyTests, TestDataRequest, TestData, LearnPatternsRequest, LearnedPatterns, TestGenerationAPI } from './interfaces';
|
|
@@ -61,6 +62,18 @@ export interface CoordinatorConfig extends BaseDomainCoordinatorConfig {
|
|
|
61
62
|
blockOnIncoherentRequirements: boolean;
|
|
62
63
|
enrichOnRetrievalLane: boolean;
|
|
63
64
|
consensusConfig?: Partial<ConsensusEnabledConfig>;
|
|
65
|
+
/**
|
|
66
|
+
* Opt-in (plan 06, D7-wire): try a FREE local model first for test generation,
|
|
67
|
+
* with a same-tier repair loop (D8), before the normal LLM path. OFF by default
|
|
68
|
+
* — also enables via env `AQE_FREE_TIER=1`. Local-only / no paid escalation yet.
|
|
69
|
+
*/
|
|
70
|
+
enableFreeTier?: boolean;
|
|
71
|
+
/** Local model id for the free tier (default qwen3:30b-a3b or env AQE_FREE_TIER_MODEL). */
|
|
72
|
+
freeTierModel?: string;
|
|
73
|
+
/** Same-tier repair retries on a failed free-tier generation (D8). Default 1. */
|
|
74
|
+
freeTierRepairAttempts?: number;
|
|
75
|
+
/** Best-of-k diverse local attempts per tier (§12; D3-validated k=2). Default 2. */
|
|
76
|
+
freeTierBestOfK?: number;
|
|
64
77
|
}
|
|
65
78
|
type TestGenWorkflowType = 'generate' | 'tdd' | 'property' | 'data' | 'learn';
|
|
66
79
|
export declare class TestGenerationCoordinator extends BaseDomainCoordinator<CoordinatorConfig, TestGenWorkflowType> implements ITestGenerationCoordinator {
|
|
@@ -70,13 +83,17 @@ export declare class TestGenerationCoordinator extends BaseDomainCoordinator<Coo
|
|
|
70
83
|
private readonly hookRegistry?;
|
|
71
84
|
private readonly testGenerator;
|
|
72
85
|
private readonly patternMatcher;
|
|
86
|
+
/** Opt-in free-tier local executor (null unless enabled). */
|
|
87
|
+
private freeTierExecutor;
|
|
73
88
|
private qesona;
|
|
74
89
|
private flashAttention;
|
|
75
90
|
private decisionTransformer;
|
|
76
91
|
private testEmbeddings;
|
|
77
92
|
private recentDreamInsights;
|
|
78
93
|
private coherenceGate;
|
|
79
|
-
constructor(eventBus: EventBus, memory: MemoryBackend, agentCoordinator: AgentCoordinator, config?: Partial<CoordinatorConfig>, llmRouter?: HybridRouter, coherenceService?: (ICoherenceService | null) | undefined, hookRegistry?: (QEHookRegistry | null) | undefined
|
|
94
|
+
constructor(eventBus: EventBus, memory: MemoryBackend, agentCoordinator: AgentCoordinator, config?: Partial<CoordinatorConfig>, llmRouter?: HybridRouter, coherenceService?: (ICoherenceService | null) | undefined, hookRegistry?: (QEHookRegistry | null) | undefined,
|
|
95
|
+
/** Optional D9 sink — when provided, free-tier outcomes feed routing-feedback. */
|
|
96
|
+
routingFeedback?: RoutingFeedbackLike | null);
|
|
80
97
|
protected onInitialize(): Promise<void>;
|
|
81
98
|
protected onDispose(): Promise<void>;
|
|
82
99
|
/**
|
|
@@ -98,6 +115,14 @@ export declare class TestGenerationCoordinator extends BaseDomainCoordinator<Coo
|
|
|
98
115
|
* - Verifies test pattern selections for high-stakes decisions
|
|
99
116
|
*/
|
|
100
117
|
generateTests(request: GenerateTestsRequest): Promise<Result<GeneratedTests, Error>>;
|
|
118
|
+
/**
|
|
119
|
+
* Opt-in free-tier local test generation (plan 06, D7-wire/D8/D9).
|
|
120
|
+
* Reads the first source file, asks the FREE local model to write tests,
|
|
121
|
+
* verifies the output is a real test (has a test + an assertion) with a
|
|
122
|
+
* same-tier repair loop, and parses it into a minimal GeneratedTests.
|
|
123
|
+
* Returns null on ANY miss so the caller falls back to the normal path.
|
|
124
|
+
*/
|
|
125
|
+
private tryFreeTierGeneration;
|
|
101
126
|
/**
|
|
102
127
|
* Generate tests using TDD workflow
|
|
103
128
|
*/
|
|
@@ -9,8 +9,11 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { LoggerFactory } from '../../logging/index.js';
|
|
11
11
|
import { v4 as uuidv4 } from 'uuid';
|
|
12
|
-
import {
|
|
12
|
+
import { readFile } from 'node:fs/promises';
|
|
13
|
+
import { ok, err, } from '../../shared/types';
|
|
13
14
|
import { toError } from '../../shared/error-utils.js';
|
|
15
|
+
// Opt-in free-tier local test generation (cross-pollination plan 06, D7-wire/D8/D9).
|
|
16
|
+
import { buildFreeTierExecutor, } from '../../routing/free-tier/index.js';
|
|
14
17
|
import { TestGenerationEvents, LearningOptimizationEvents, createEvent, } from '../../shared/events/domain-events';
|
|
15
18
|
import { createTestGeneratorServiceWithDependencies, } from './services/test-generator';
|
|
16
19
|
import { PatternMatcherService, } from './services/pattern-matcher';
|
|
@@ -52,6 +55,8 @@ const DEFAULT_CONFIG = {
|
|
|
52
55
|
consensusThreshold: 0.7,
|
|
53
56
|
consensusStrategy: 'weighted',
|
|
54
57
|
consensusMinModels: 2,
|
|
58
|
+
// Free-tier local generation is OFF by default (opt-in).
|
|
59
|
+
enableFreeTier: false,
|
|
55
60
|
};
|
|
56
61
|
/**
|
|
57
62
|
* Test Generation Coordinator
|
|
@@ -71,6 +76,15 @@ const DEFAULT_CONFIG = {
|
|
|
71
76
|
* - Verifies test patterns, mock strategies, and edge cases
|
|
72
77
|
*/
|
|
73
78
|
const logger = LoggerFactory.create('test-generation');
|
|
79
|
+
/** Strip a single ```fenced``` block if the model wrapped its output (free-tier path). */
|
|
80
|
+
function stripFence(text) {
|
|
81
|
+
const m = text.match(/```(?:[a-zA-Z0-9]+)?\n([\s\S]*?)\n```/);
|
|
82
|
+
return (m ? m[1] : text).trim();
|
|
83
|
+
}
|
|
84
|
+
/** Derive a test file path from a source path: `foo.ts` → `foo.test.ts` (free-tier path). */
|
|
85
|
+
function deriveTestFilePath(src) {
|
|
86
|
+
return src.replace(/\.([cm]?[jt]sx?)$/, '.test.$1');
|
|
87
|
+
}
|
|
74
88
|
export class TestGenerationCoordinator extends BaseDomainCoordinator {
|
|
75
89
|
memory;
|
|
76
90
|
agentCoordinator;
|
|
@@ -78,6 +92,8 @@ export class TestGenerationCoordinator extends BaseDomainCoordinator {
|
|
|
78
92
|
hookRegistry;
|
|
79
93
|
testGenerator;
|
|
80
94
|
patternMatcher;
|
|
95
|
+
/** Opt-in free-tier local executor (null unless enabled). */
|
|
96
|
+
freeTierExecutor = null;
|
|
81
97
|
// @ruvector integrations (ADR-040)
|
|
82
98
|
qesona = null;
|
|
83
99
|
flashAttention = null;
|
|
@@ -87,7 +103,9 @@ export class TestGenerationCoordinator extends BaseDomainCoordinator {
|
|
|
87
103
|
recentDreamInsights = [];
|
|
88
104
|
// Coherence gate (ADR-052)
|
|
89
105
|
coherenceGate = null;
|
|
90
|
-
constructor(eventBus, memory, agentCoordinator, config = {}, llmRouter, coherenceService, hookRegistry
|
|
106
|
+
constructor(eventBus, memory, agentCoordinator, config = {}, llmRouter, coherenceService, hookRegistry,
|
|
107
|
+
/** Optional D9 sink — when provided, free-tier outcomes feed routing-feedback. */
|
|
108
|
+
routingFeedback) {
|
|
91
109
|
const fullConfig = { ...DEFAULT_CONFIG, ...config };
|
|
92
110
|
super(eventBus, 'test-generation', fullConfig, {
|
|
93
111
|
verifyFindingTypes: [
|
|
@@ -105,6 +123,16 @@ export class TestGenerationCoordinator extends BaseDomainCoordinator {
|
|
|
105
123
|
// ADR-043 wiring: dependencies factory accepts llmRouter.
|
|
106
124
|
this.testGenerator = createTestGeneratorServiceWithDependencies({ memory, llmRouter });
|
|
107
125
|
this.patternMatcher = new PatternMatcherService(memory);
|
|
126
|
+
// Opt-in free-tier local generation (plan 06, D7-wire/D8/D9; ADR-111).
|
|
127
|
+
// OFF by default. Generic wiring lives in the shared factory now.
|
|
128
|
+
this.freeTierExecutor = buildFreeTierExecutor({
|
|
129
|
+
config: this.config,
|
|
130
|
+
agentType: 'qe-test-architect',
|
|
131
|
+
taskKind: 'test-generation',
|
|
132
|
+
llmRouter,
|
|
133
|
+
routingFeedback,
|
|
134
|
+
logger,
|
|
135
|
+
});
|
|
108
136
|
// Initialize coherence gate if service is provided (ADR-052)
|
|
109
137
|
if (this.config.enableCoherenceGate && coherenceService) {
|
|
110
138
|
this.coherenceGate = createTestGenerationCoherenceGate(coherenceService, undefined, // Use default embedding service
|
|
@@ -219,6 +247,21 @@ export class TestGenerationCoordinator extends BaseDomainCoordinator {
|
|
|
219
247
|
try {
|
|
220
248
|
// Create workflow tracking
|
|
221
249
|
this.startWorkflow(workflowId, 'generate');
|
|
250
|
+
// Opt-in (plan 06, D7-wire): try the FREE local model first with a repair
|
|
251
|
+
// loop. Fully guarded — any miss falls through to the normal LLM path.
|
|
252
|
+
if (this.freeTierExecutor) {
|
|
253
|
+
try {
|
|
254
|
+
const ft = await this.tryFreeTierGeneration(request);
|
|
255
|
+
if (ft) {
|
|
256
|
+
this.completeWorkflow(workflowId);
|
|
257
|
+
logger.info(`Free-tier local generation produced ${ft.tests.length} test file(s); skipped paid path`);
|
|
258
|
+
return ok(ft);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
catch (e) {
|
|
262
|
+
logger.debug('Free-tier generation failed; falling back to the normal path');
|
|
263
|
+
}
|
|
264
|
+
}
|
|
222
265
|
// ADR-047: Check topology health before expensive operations
|
|
223
266
|
if (this.config.enableMinCutAwareness && !this.isTopologyHealthy()) {
|
|
224
267
|
logger.warn('Topology degraded, using conservative strategy');
|
|
@@ -361,6 +404,80 @@ export class TestGenerationCoordinator extends BaseDomainCoordinator {
|
|
|
361
404
|
return { success: false, error: err };
|
|
362
405
|
}
|
|
363
406
|
}
|
|
407
|
+
/**
|
|
408
|
+
* Opt-in free-tier local test generation (plan 06, D7-wire/D8/D9).
|
|
409
|
+
* Reads the first source file, asks the FREE local model to write tests,
|
|
410
|
+
* verifies the output is a real test (has a test + an assertion) with a
|
|
411
|
+
* same-tier repair loop, and parses it into a minimal GeneratedTests.
|
|
412
|
+
* Returns null on ANY miss so the caller falls back to the normal path.
|
|
413
|
+
*/
|
|
414
|
+
async tryFreeTierGeneration(request) {
|
|
415
|
+
if (!this.freeTierExecutor)
|
|
416
|
+
return null;
|
|
417
|
+
// Single-file only: the cheap-first path generates one test file. For
|
|
418
|
+
// multi-file requests fall back to the normal path so EVERY file is covered.
|
|
419
|
+
if (!request.sourceFiles || request.sourceFiles.length !== 1)
|
|
420
|
+
return null;
|
|
421
|
+
const src = request.sourceFiles[0];
|
|
422
|
+
if (!src)
|
|
423
|
+
return null;
|
|
424
|
+
let code = '';
|
|
425
|
+
try {
|
|
426
|
+
code = await readFile(src, 'utf8');
|
|
427
|
+
}
|
|
428
|
+
catch {
|
|
429
|
+
return null; // unreadable → fall back
|
|
430
|
+
}
|
|
431
|
+
if (!code.trim())
|
|
432
|
+
return null;
|
|
433
|
+
const framework = request.framework ?? 'vitest';
|
|
434
|
+
const messages = [
|
|
435
|
+
{ role: 'system', content: `You write ${framework} tests. Output ONLY a single fenced code block — no prose.` },
|
|
436
|
+
{
|
|
437
|
+
role: 'user',
|
|
438
|
+
content: `Write ${framework} ${request.testType ?? 'unit'} tests for this file ` +
|
|
439
|
+
`(aim for ~${request.coverageTarget ?? 80}% coverage). Use real assertions.\n\n` +
|
|
440
|
+
'```\n' + code.slice(0, 6000) + '\n```',
|
|
441
|
+
},
|
|
442
|
+
];
|
|
443
|
+
// Objective oracle: output must contain a test block AND an assertion.
|
|
444
|
+
const verify = (out) => {
|
|
445
|
+
const hasTest = /\b(test|it|describe)\s*\(/.test(out);
|
|
446
|
+
const hasAssert = /\b(expect|assert)\s*\(/.test(out);
|
|
447
|
+
return hasTest && hasAssert
|
|
448
|
+
? { passed: true }
|
|
449
|
+
: { passed: false, feedback: 'output must contain a test (test/it/describe) with an assertion (expect/assert)' };
|
|
450
|
+
};
|
|
451
|
+
const r = await this.freeTierExecutor.execute({
|
|
452
|
+
agentId: `test-gen:${src}`,
|
|
453
|
+
messages,
|
|
454
|
+
verify,
|
|
455
|
+
// Cheap-first: best-of-k (§12) + repair on the local tier, then escalate the
|
|
456
|
+
// hard tail up the ladder via the HybridRouter (when wired). Matches the D3
|
|
457
|
+
// config that was validated (k=2). Local-only if no router.
|
|
458
|
+
escalate: true,
|
|
459
|
+
bestOfK: this.config.freeTierBestOfK ?? 2,
|
|
460
|
+
repairAttempts: this.config.freeTierRepairAttempts ?? 1,
|
|
461
|
+
});
|
|
462
|
+
if (!r.ok)
|
|
463
|
+
return null;
|
|
464
|
+
const testCode = stripFence(r.content);
|
|
465
|
+
const assertions = (testCode.match(/\b(?:expect|assert)\s*\(/g) ?? []).length;
|
|
466
|
+
if (assertions === 0)
|
|
467
|
+
return null;
|
|
468
|
+
const test = {
|
|
469
|
+
id: uuidv4(),
|
|
470
|
+
name: `free-tier:${src.split('/').pop() ?? src}`,
|
|
471
|
+
sourceFile: src,
|
|
472
|
+
testFile: deriveTestFilePath(src),
|
|
473
|
+
testCode,
|
|
474
|
+
type: request.testType ?? 'unit',
|
|
475
|
+
assertions,
|
|
476
|
+
framework,
|
|
477
|
+
llmEnhanced: true,
|
|
478
|
+
};
|
|
479
|
+
return { tests: [test], coverageEstimate: 0, patternsUsed: ['free-tier-local', `tier:${r.tierUsed}`] };
|
|
480
|
+
}
|
|
364
481
|
/**
|
|
365
482
|
* Generate tests using TDD workflow
|
|
366
483
|
*/
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
import { err } from '../../shared/types';
|
|
6
6
|
import { BaseDomainPlugin } from '../domain-interface';
|
|
7
7
|
import { TestGenerationCoordinator, } from './coordinator';
|
|
8
|
+
// D9: live routing-feedback so free-tier outcomes lift routing confidence.
|
|
9
|
+
import { RoutingFeedbackCollector } from '../../routing/routing-feedback.js';
|
|
8
10
|
import { createTestGeneratorServiceWithDependencies, } from './services/test-generator';
|
|
9
11
|
import { toError } from '../../shared/error-utils.js';
|
|
10
12
|
import { PatternMatcherService, } from './services/pattern-matcher';
|
|
@@ -149,8 +151,28 @@ export class TestGenerationPlugin extends BaseDomainPlugin {
|
|
|
149
151
|
// so analyzeXxxWithLLM branches become reachable.
|
|
150
152
|
this.testGenerator = createTestGeneratorServiceWithDependencies({ memory: this.memory, llmRouter: this.llmRouter }, this.pluginConfig.testGenerator);
|
|
151
153
|
this.patternMatcher = new PatternMatcherService(this.memory, this.pluginConfig.patternMatcher);
|
|
154
|
+
// D9: when the free tier is opted in, stand up a live RoutingFeedbackCollector
|
|
155
|
+
// (calibrator + auto-escalation enabled) so each cheap-vs-escalated outcome
|
|
156
|
+
// feeds routing confidence. Memory-only fallback if the DB is unavailable.
|
|
157
|
+
let routingFeedback;
|
|
158
|
+
const freeTierOn = this.pluginConfig.coordinator?.enableFreeTier === true || process.env.AQE_FREE_TIER === '1';
|
|
159
|
+
if (freeTierOn) {
|
|
160
|
+
routingFeedback = new RoutingFeedbackCollector(10000, {
|
|
161
|
+
enableEMACalibration: true,
|
|
162
|
+
enableAutoEscalation: true,
|
|
163
|
+
});
|
|
164
|
+
try {
|
|
165
|
+
await routingFeedback.initialize();
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// memory-only is fine — recording still drives calibration/escalation
|
|
169
|
+
}
|
|
170
|
+
}
|
|
152
171
|
// Create coordinator
|
|
153
|
-
this.coordinator = new TestGenerationCoordinator(this.eventBus, this.memory, this.agentCoordinator, this.pluginConfig.coordinator, this.llmRouter
|
|
172
|
+
this.coordinator = new TestGenerationCoordinator(this.eventBus, this.memory, this.agentCoordinator, this.pluginConfig.coordinator, this.llmRouter, undefined, // coherenceService
|
|
173
|
+
undefined, // hookRegistry
|
|
174
|
+
routingFeedback // D9 sink (undefined unless free tier is on)
|
|
175
|
+
);
|
|
154
176
|
// Initialize coordinator
|
|
155
177
|
await this.coordinator.initialize();
|
|
156
178
|
// Issue #205 fix: Start with 'idle' status (0 agents)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Darwin Mode integration (cross-pollination plan 05, D1).
|
|
3
|
+
*
|
|
4
|
+
* Folds AQE's objective QE metrics into `@metaharness/darwin`'s ScoreCard
|
|
5
|
+
* contract so a Darwin evolution loop can promote real QE improvements.
|
|
6
|
+
* See docs/metaharness/06-darwin-qe-self-learning-action-lane.md.
|
|
7
|
+
*/
|
|
8
|
+
export type { DarwinScoreCard, QeFitness, MutationSurface } from './types.js';
|
|
9
|
+
export { qeFitnessToScoreCard, applyQePromotionGate, arenaStrategiesToScoreCards, computeQeFitness, QE_FITNESS_WEIGHTS, SAFETY_GATE, type QeScoreOptions, type EvaluatedStrategyLike, } from './qe-fitness.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QE → Darwin fitness adapter (cross-pollination plan 05, action D1).
|
|
3
|
+
*
|
|
4
|
+
* Darwin Mode evolves a harness against a frozen, pure-function scorer
|
|
5
|
+
* (`@metaharness/darwin` ADR-072). Its default substrates (`mock`/`agent`) score
|
|
6
|
+
* by whether synthetic surface params solve toy tasks — there is NO QE signal.
|
|
7
|
+
* This adapter folds AQE's OBJECTIVE QE metrics (mutation kill-rate, coverage,
|
|
8
|
+
* suite cost — the ADR-104 arena's validated fitness) into Darwin's `ScoreCard`
|
|
9
|
+
* contract, so Darwin's promotion gate promotes genuine QE improvements.
|
|
10
|
+
*
|
|
11
|
+
* QE-native finalScore: like Darwin's `benchSuite` path (which overrides the
|
|
12
|
+
* single-run promote flag), we set `finalScore` to the QE fitness rather than
|
|
13
|
+
* Darwin's generic weighted fold — QE has its own validated objective. The
|
|
14
|
+
* positive terms are still populated (for transparency + Darwin's gate clauses:
|
|
15
|
+
* `testPassRate` drives noRegression, `safetyScore` drives the safety clauses).
|
|
16
|
+
*
|
|
17
|
+
* Pure + deterministic + dependency-free: no model calls, no I/O. Unit-testable.
|
|
18
|
+
*/
|
|
19
|
+
import type { DarwinScoreCard, QeFitness } from './types.js';
|
|
20
|
+
/** ADR-104 arena weights — kept in sync with src/arena/arena.ts. */
|
|
21
|
+
export declare const QE_FITNESS_WEIGHTS: {
|
|
22
|
+
readonly kill: 0.6;
|
|
23
|
+
readonly coverage: 0.3;
|
|
24
|
+
readonly runtimePenalty: 0.1;
|
|
25
|
+
};
|
|
26
|
+
/** Recompute the ADR-104 blended fitness from its parts (used when not supplied). */
|
|
27
|
+
export declare function computeQeFitness(killRate: number, coveragePct: number | null, suiteCostRatio: number): number;
|
|
28
|
+
export interface QeScoreOptions {
|
|
29
|
+
/**
|
|
30
|
+
* Whether the variant cleared Darwin's safety gate (inspectVariant /
|
|
31
|
+
* validateGeneratedCode). Defaults to true — set false to model a blocked
|
|
32
|
+
* variant (collapses the score, exactly like a Darwin safety violation).
|
|
33
|
+
*/
|
|
34
|
+
safe?: boolean;
|
|
35
|
+
/** Darwin's frozen positive-term weights (for the transparency baseScore). */
|
|
36
|
+
weights?: {
|
|
37
|
+
taskSuccess: number;
|
|
38
|
+
testPassRate: number;
|
|
39
|
+
traceQuality: number;
|
|
40
|
+
costEfficiency: number;
|
|
41
|
+
latencyEfficiency: number;
|
|
42
|
+
safetyScore: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Map one QE outcome to a Darwin `ScoreCard`.
|
|
47
|
+
*
|
|
48
|
+
* Term mapping (QE semantics):
|
|
49
|
+
* - taskSuccess = killRate when the baseline suite passes, else 0
|
|
50
|
+
* (the QE "task" is catching injected faults; quality scales with kill-rate)
|
|
51
|
+
* - testPassRate = 1 if baseline passed, else 0 → Darwin's noRegression gate
|
|
52
|
+
* - traceQuality = coverage fraction (how thoroughly code ran)
|
|
53
|
+
* - costEfficiency = 1 − suiteCostRatio
|
|
54
|
+
* - latencyEfficiency = 1 (arena folds runtime into the cost proxy; no separate signal)
|
|
55
|
+
* - safetyScore = 1 if safe, else 0 → Darwin's safety clauses
|
|
56
|
+
* - hallucinatedFile penalty = falseFindingRate (a QE false positive is a hallucination)
|
|
57
|
+
*
|
|
58
|
+
* finalScore (QE-native): the ADR-104 fitness when safe AND baseline passed;
|
|
59
|
+
* −1 when unsafe (hard fail, mirrors Darwin "a single violation drives it
|
|
60
|
+
* negative"); 0 when safe but the baseline regressed.
|
|
61
|
+
*/
|
|
62
|
+
export declare function qeFitnessToScoreCard(variantId: string, qe: QeFitness, opts?: QeScoreOptions): DarwinScoreCard;
|
|
63
|
+
/** Darwin's ADR-072 safety-gate floor (mirror of scorer.ts SAFETY_GATE). */
|
|
64
|
+
export declare const SAFETY_GATE = 0.95;
|
|
65
|
+
/**
|
|
66
|
+
* Apply Darwin's 4-clause promotion gate (ADR-072 / scorer.ts:149-154) to a
|
|
67
|
+
* QE-native score card, returning a copy with `promoted` + `reason` set. Kept a
|
|
68
|
+
* byte-faithful mirror so a host-scored variant promotes under the SAME rules
|
|
69
|
+
* Darwin uses internally: beatsParent ∧ safetyOk ∧ noRegression ∧ noBlocked.
|
|
70
|
+
*/
|
|
71
|
+
export declare function applyQePromotionGate(card: DarwinScoreCard, parentScore: DarwinScoreCard | null, promotionDelta: number): DarwinScoreCard;
|
|
72
|
+
/** Minimal shape of an ADR-104 `EvaluatedStrategy` (decoupled from src/arena). */
|
|
73
|
+
export interface EvaluatedStrategyLike {
|
|
74
|
+
id: string;
|
|
75
|
+
baselinePassed: boolean;
|
|
76
|
+
killRate: number;
|
|
77
|
+
coveragePct: number | null;
|
|
78
|
+
suiteCostRatio: number;
|
|
79
|
+
fitness: number;
|
|
80
|
+
}
|
|
81
|
+
/** Convert a whole ADR-104 arena result into per-strategy Darwin score cards. */
|
|
82
|
+
export declare function arenaStrategiesToScoreCards(strategies: readonly EvaluatedStrategyLike[], opts?: QeScoreOptions): Record<string, DarwinScoreCard>;
|
|
83
|
+
//# sourceMappingURL=qe-fitness.d.ts.map
|