agentic-qe 3.9.8 → 3.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/.claude/agents/_shared/executor-preamble.md +86 -0
  2. package/.claude/agents/v3/qe-coverage-specialist.md +20 -1
  3. package/.claude/agents/v3/qe-fleet-commander.md +20 -1
  4. package/.claude/agents/v3/qe-pentest-validator.md +20 -1
  5. package/.claude/agents/v3/qe-queen-coordinator.md +20 -1
  6. package/.claude/agents/v3/qe-risk-assessor.md +20 -1
  7. package/.claude/agents/v3/qe-root-cause-analyzer.md +19 -0
  8. package/.claude/agents/v3/qe-security-auditor.md +20 -1
  9. package/.claude/agents/v3/qe-test-architect.md +33 -1
  10. package/.claude/helpers/advisor-call.cjs +283 -0
  11. package/.claude/skills/README.md +4 -3
  12. package/.claude/skills/a11y-ally/SKILL.md +40 -18
  13. package/.claude/skills/accessibility-testing/SKILL.md +4 -0
  14. package/.claude/skills/compatibility-testing/SKILL.md +23 -0
  15. package/.claude/skills/e2e-flow-verifier/SKILL.md +87 -52
  16. package/.claude/skills/enterprise-integration-testing/SKILL.md +4 -0
  17. package/.claude/skills/localization-testing/SKILL.md +14 -0
  18. package/.claude/skills/observability-testing-patterns/SKILL.md +16 -0
  19. package/.claude/skills/qe-browser/SKILL.md +409 -0
  20. package/.claude/skills/qe-browser/evals/qe-browser.yaml +291 -0
  21. package/.claude/skills/qe-browser/fixtures/package.json +7 -0
  22. package/.claude/skills/qe-browser/fixtures/serve-skills.js +130 -0
  23. package/.claude/skills/qe-browser/references/assertion-kinds.md +132 -0
  24. package/.claude/skills/qe-browser/references/migration-from-playwright.md +195 -0
  25. package/.claude/skills/qe-browser/schemas/output.json +188 -0
  26. package/.claude/skills/qe-browser/scripts/assert.js +378 -0
  27. package/.claude/skills/qe-browser/scripts/batch.js +292 -0
  28. package/.claude/skills/qe-browser/scripts/check-injection.js +267 -0
  29. package/.claude/skills/qe-browser/scripts/intent-score.js +325 -0
  30. package/.claude/skills/qe-browser/scripts/lib/vibium.js +330 -0
  31. package/.claude/skills/qe-browser/scripts/package.json +7 -0
  32. package/.claude/skills/qe-browser/scripts/smoke-test.sh +212 -0
  33. package/.claude/skills/qe-browser/scripts/validate-config.json +46 -0
  34. package/.claude/skills/qe-browser/scripts/visual-diff.js +276 -0
  35. package/.claude/skills/qe-visual-accessibility/SKILL.md +31 -1
  36. package/.claude/skills/security-visual-testing/SKILL.md +18 -0
  37. package/.claude/skills/skills-manifest.json +20 -13
  38. package/.claude/skills/testability-scoring/SKILL.md +23 -0
  39. package/.claude/skills/trust-tier-manifest.json +14 -3
  40. package/.claude/skills/visual-testing-advanced/SKILL.md +41 -1
  41. package/CHANGELOG.md +75 -0
  42. package/README.md +5 -3
  43. package/assets/agents/v3/helpers/advisor-call.cjs +283 -0
  44. package/assets/agents/v3/qe-coverage-specialist.md +20 -1
  45. package/assets/agents/v3/qe-fleet-commander.md +20 -1
  46. package/assets/agents/v3/qe-pentest-validator.md +20 -1
  47. package/assets/agents/v3/qe-queen-coordinator.md +20 -1
  48. package/assets/agents/v3/qe-risk-assessor.md +20 -1
  49. package/assets/agents/v3/qe-root-cause-analyzer.md +19 -0
  50. package/assets/agents/v3/qe-security-auditor.md +20 -1
  51. package/assets/agents/v3/qe-test-architect.md +33 -1
  52. package/assets/skills/README.md +4 -3
  53. package/assets/skills/a11y-ally/SKILL.md +40 -18
  54. package/assets/skills/accessibility-testing/SKILL.md +4 -0
  55. package/assets/skills/compatibility-testing/SKILL.md +23 -0
  56. package/assets/skills/e2e-flow-verifier/SKILL.md +87 -52
  57. package/assets/skills/enterprise-integration-testing/SKILL.md +4 -0
  58. package/assets/skills/localization-testing/SKILL.md +14 -0
  59. package/assets/skills/observability-testing-patterns/SKILL.md +16 -0
  60. package/assets/skills/qe-browser/SKILL.md +409 -0
  61. package/assets/skills/qe-browser/evals/qe-browser.yaml +291 -0
  62. package/assets/skills/qe-browser/fixtures/package.json +7 -0
  63. package/assets/skills/qe-browser/fixtures/serve-skills.js +130 -0
  64. package/assets/skills/qe-browser/references/assertion-kinds.md +132 -0
  65. package/assets/skills/qe-browser/references/migration-from-playwright.md +195 -0
  66. package/assets/skills/qe-browser/schemas/output.json +188 -0
  67. package/assets/skills/qe-browser/scripts/assert.js +378 -0
  68. package/assets/skills/qe-browser/scripts/batch.js +292 -0
  69. package/assets/skills/qe-browser/scripts/check-injection.js +267 -0
  70. package/assets/skills/qe-browser/scripts/intent-score.js +325 -0
  71. package/assets/skills/qe-browser/scripts/lib/vibium.js +330 -0
  72. package/assets/skills/qe-browser/scripts/package.json +7 -0
  73. package/assets/skills/qe-browser/scripts/smoke-test.sh +212 -0
  74. package/assets/skills/qe-browser/scripts/validate-config.json +46 -0
  75. package/assets/skills/qe-browser/scripts/visual-diff.js +276 -0
  76. package/assets/skills/qe-visual-accessibility/SKILL.md +31 -1
  77. package/assets/skills/security-visual-testing/SKILL.md +18 -0
  78. package/assets/skills/skills-manifest.json +211 -15
  79. package/assets/skills/testability-scoring/SKILL.md +23 -0
  80. package/assets/skills/trust-tier-manifest.json +14 -3
  81. package/assets/skills/visual-testing-advanced/SKILL.md +41 -1
  82. package/dist/cli/bundle.js +5 -5
  83. package/dist/cli/chunks/adapter-IKCDCMSI.js +2 -0
  84. package/dist/cli/chunks/{agent-booster-wasm-LAE4NTVX.js → agent-booster-wasm-HM4XSABF.js} +2 -2
  85. package/dist/cli/chunks/{agent-handler-FVXHR6XN.js → agent-handler-UDBDLLO4.js} +2 -2
  86. package/dist/cli/chunks/{agent-memory-branch-Q7LLBA7C.js → agent-memory-branch-VIXQ3DAR.js} +2 -2
  87. package/dist/cli/chunks/aqe-learning-engine-W4WW7SQW.js +2 -0
  88. package/dist/cli/chunks/{audit-YRLKHJLX.js → audit-FWTGLQHH.js} +2 -2
  89. package/dist/cli/chunks/base-UQKFTHOY.js +2 -0
  90. package/dist/cli/chunks/{better-sqlite3-XFGOGICB.js → better-sqlite3-TYI3CCWU.js} +2 -2
  91. package/dist/cli/chunks/{brain-handler-KIUSNVSS.js → brain-handler-45ZGBLSB.js} +3 -3
  92. package/dist/cli/chunks/{branch-enumerator-VKZ4L3FH.js → branch-enumerator-ZBXELCQA.js} +2 -2
  93. package/dist/cli/chunks/{browser-GZVIYFIB.js → browser-2KM5IKEX.js} +2 -2
  94. package/dist/cli/chunks/browser-workflow-NMOEM3HW.js +2 -0
  95. package/dist/cli/chunks/{chunk-7PHNHFZI.js → chunk-226DSROQ.js} +3 -3
  96. package/dist/cli/chunks/{chunk-MGX2BZWE.js → chunk-27B575K6.js} +2 -2
  97. package/dist/cli/chunks/{chunk-P7APAQD6.js → chunk-2IJFZW3N.js} +12 -12
  98. package/dist/cli/chunks/{chunk-TWDWDKOI.js → chunk-32OB4ZYQ.js} +1 -1
  99. package/dist/cli/chunks/{chunk-E4D36LGH.js → chunk-335CCAOL.js} +1 -1
  100. package/dist/cli/chunks/{chunk-Q5PARJC6.js → chunk-34WI4QNF.js} +2 -2
  101. package/dist/cli/chunks/chunk-3A4BL62O.js +2 -0
  102. package/dist/cli/chunks/{chunk-6ZMM7MXA.js → chunk-3AG647MY.js} +2 -2
  103. package/dist/cli/chunks/{chunk-LPRHYSXN.js → chunk-3HIDCXW3.js} +1 -1
  104. package/dist/cli/chunks/{chunk-HN7HYUW6.js → chunk-4EKWEDHA.js} +9 -9
  105. package/dist/cli/chunks/{chunk-JCROLOP6.js → chunk-4FU6YNDP.js} +2 -2
  106. package/dist/cli/chunks/{chunk-A4DJMFDM.js → chunk-4LOJJ4VX.js} +1 -1
  107. package/dist/cli/chunks/{chunk-I25KIHQE.js → chunk-4VOGUZW5.js} +1 -1
  108. package/dist/cli/chunks/{chunk-KJZU3E5G.js → chunk-4ZR5G4MZ.js} +2 -2
  109. package/dist/cli/chunks/{chunk-W45FANJG.js → chunk-52ZHPZVX.js} +2 -2
  110. package/dist/cli/chunks/{chunk-LOANEFGZ.js → chunk-53G3OCGS.js} +2 -2
  111. package/dist/cli/chunks/{chunk-TZMKO6PC.js → chunk-54TZA65H.js} +2 -2
  112. package/dist/cli/chunks/{chunk-GHJRX7PV.js → chunk-5QKTLOGO.js} +1 -1
  113. package/dist/cli/chunks/{chunk-76UL224Z.js → chunk-5TATJQ3Z.js} +2 -2
  114. package/dist/cli/chunks/{chunk-OGFGNAKQ.js → chunk-5V6DRRLO.js} +2 -2
  115. package/dist/cli/chunks/{chunk-BXMIQRF3.js → chunk-6X7WKNDF.js} +2 -2
  116. package/dist/cli/chunks/chunk-7FWZHYYE.js +2 -0
  117. package/dist/cli/chunks/{chunk-R2LWLZ3Y.js → chunk-A2ULGMMG.js} +1 -1
  118. package/dist/cli/chunks/{chunk-AVKDT3UL.js → chunk-A53XKLEA.js} +8 -8
  119. package/dist/cli/chunks/{chunk-GOPE5OB5.js → chunk-A5OIXFFL.js} +1 -1
  120. package/dist/cli/chunks/{chunk-I7OH6RAC.js → chunk-ACNL4NFI.js} +2 -2
  121. package/dist/cli/chunks/{chunk-PBPOSPTY.js → chunk-AE6Y5CNJ.js} +2 -2
  122. package/dist/cli/chunks/{chunk-TN72MXLI.js → chunk-AO4HDN62.js} +2 -2
  123. package/dist/cli/chunks/{chunk-IHJXFWUL.js → chunk-AOA454FC.js} +2 -2
  124. package/dist/cli/chunks/{chunk-N2L7RWNX.js → chunk-B2QVWL5R.js} +2 -2
  125. package/dist/cli/chunks/{chunk-7CFEGUEH.js → chunk-B3L3CT4X.js} +2 -2
  126. package/dist/cli/chunks/{chunk-XVXSQOQG.js → chunk-B4AFVIOA.js} +2 -2
  127. package/dist/cli/chunks/{chunk-S72TSJS4.js → chunk-BCSCJBYQ.js} +2 -2
  128. package/dist/cli/chunks/{chunk-UAI5NPPQ.js → chunk-BIV6HWMT.js} +2 -2
  129. package/dist/cli/chunks/{chunk-XPL3BXLM.js → chunk-BNNH3KZP.js} +1 -1
  130. package/dist/cli/chunks/{chunk-JK6JBNGL.js → chunk-C234RGWZ.js} +2 -2
  131. package/dist/cli/chunks/{chunk-4EAAHMVM.js → chunk-C55GEYDA.js} +2 -2
  132. package/dist/cli/chunks/{chunk-Y67OXEUM.js → chunk-CEBZHZ4O.js} +1 -1
  133. package/dist/cli/chunks/{chunk-A2QLTNN5.js → chunk-CFQHIWWH.js} +1 -1
  134. package/dist/cli/chunks/{chunk-KMGAJRQ6.js → chunk-CJO2V2FB.js} +1 -1
  135. package/dist/cli/chunks/{chunk-5TGK7VTS.js → chunk-CQNXIYQW.js} +2 -2
  136. package/dist/cli/chunks/{chunk-IP2Z4Z6X.js → chunk-D2A4TGZY.js} +1 -1
  137. package/dist/cli/chunks/{chunk-VVNR4R22.js → chunk-DG2OYKUQ.js} +2 -2
  138. package/dist/cli/chunks/{chunk-ELZ5SKEN.js → chunk-DPYCHODC.js} +2 -2
  139. package/dist/cli/chunks/{chunk-WUCWFDBE.js → chunk-E4YKNKQL.js} +2 -2
  140. package/dist/cli/chunks/{chunk-ZCKNGICX.js → chunk-EEWTTYRC.js} +1 -1
  141. package/dist/cli/chunks/{chunk-IFIYNCT2.js → chunk-EGIYLRW5.js} +2 -2
  142. package/dist/cli/chunks/{chunk-DLKRK2GU.js → chunk-EHGTNSJ2.js} +1 -1
  143. package/dist/cli/chunks/{chunk-IIYXSWJN.js → chunk-EJNASXOY.js} +2 -2
  144. package/dist/cli/chunks/{chunk-ZJ4PMOIZ.js → chunk-F7HRGQRS.js} +2 -2
  145. package/dist/cli/chunks/{chunk-2QI5RYVR.js → chunk-FF7TSDO4.js} +2 -2
  146. package/dist/cli/chunks/{chunk-DDDEGBBJ.js → chunk-FIQNVPYY.js} +2 -2
  147. package/dist/cli/chunks/{chunk-F5VLJFVU.js → chunk-FJOBKT7N.js} +1 -1
  148. package/dist/cli/chunks/{chunk-JNJYWWBG.js → chunk-FYI52MFF.js} +6 -6
  149. package/dist/cli/chunks/{chunk-UOSKMAAY.js → chunk-GCNTU3QJ.js} +1 -1
  150. package/dist/cli/chunks/{chunk-4GMV6Z7Y.js → chunk-H56YBNXW.js} +2 -2
  151. package/dist/cli/chunks/{chunk-HTL2WT64.js → chunk-HJMLJNCB.js} +1 -1
  152. package/dist/cli/chunks/chunk-I3IRIJOT.js +2 -0
  153. package/dist/cli/chunks/chunk-IEQ2VYMO.js +3 -0
  154. package/dist/cli/chunks/{chunk-PG7CZ6Q4.js → chunk-IGRKFVFD.js} +2 -2
  155. package/dist/cli/chunks/{chunk-SQ6XZGR4.js → chunk-IJPE6OGD.js} +10 -10
  156. package/dist/cli/chunks/{chunk-AYKMWP7F.js → chunk-IJUL2UMO.js} +1 -1
  157. package/dist/cli/chunks/{chunk-JVH7753D.js → chunk-ISZJAZ2D.js} +1 -1
  158. package/dist/cli/chunks/{chunk-NCXVOOA7.js → chunk-ITDYTODU.js} +2 -2
  159. package/dist/cli/chunks/{chunk-RGCCSAHI.js → chunk-JHUEBBSX.js} +2 -2
  160. package/dist/cli/chunks/{chunk-TDPHLQ2M.js → chunk-JN3CC2TX.js} +2 -2
  161. package/dist/cli/chunks/{chunk-TSDTRJOG.js → chunk-JOEEGNNX.js} +2 -2
  162. package/dist/cli/chunks/{chunk-QVGSD25D.js → chunk-JQX2DHQT.js} +1 -1
  163. package/dist/cli/chunks/{chunk-VHZ653XS.js → chunk-JRG4AFUR.js} +3 -3
  164. package/dist/cli/chunks/{chunk-SP3ZBJ63.js → chunk-JRMNQWRL.js} +3 -3
  165. package/dist/cli/chunks/{chunk-EKDFIYV5.js → chunk-JXDJMVIG.js} +2 -2
  166. package/dist/cli/chunks/{chunk-3WOQMFTD.js → chunk-JYPW22JV.js} +2 -2
  167. package/dist/cli/chunks/{chunk-WJDOOT2M.js → chunk-KK3KVYE7.js} +2 -2
  168. package/dist/cli/chunks/{chunk-4KX6TMKB.js → chunk-KSRAA6ZD.js} +3 -3
  169. package/dist/cli/chunks/chunk-KUCU5ML6.js +6 -0
  170. package/dist/cli/chunks/{chunk-MVW7AACO.js → chunk-KXXLMLMJ.js} +2 -2
  171. package/dist/cli/chunks/{chunk-HE2NWYHK.js → chunk-LKCFJC4Q.js} +1 -1
  172. package/dist/cli/chunks/{chunk-237NNDKL.js → chunk-LODXDV4G.js} +2 -2
  173. package/dist/cli/chunks/{chunk-W4IRWGGR.js → chunk-M4CYXAVP.js} +4 -4
  174. package/dist/cli/chunks/{chunk-R4VOIXJQ.js → chunk-MOLMS6MA.js} +2 -2
  175. package/dist/cli/chunks/{chunk-SDMGF3KD.js → chunk-NBTM2J4B.js} +2 -2
  176. package/dist/cli/chunks/{chunk-X66IXWSO.js → chunk-NIFVFUCU.js} +2 -2
  177. package/dist/cli/chunks/{chunk-266SKKFM.js → chunk-OOHKW3UE.js} +2 -2
  178. package/dist/cli/chunks/{chunk-WXEDVKJS.js → chunk-ORA6NIXN.js} +2 -2
  179. package/dist/cli/chunks/{chunk-ECYDMBDA.js → chunk-OSD55UO7.js} +2 -2
  180. package/dist/cli/chunks/{chunk-SSURIMCL.js → chunk-OWQRMH3G.js} +2 -2
  181. package/dist/cli/chunks/chunk-QFUINEBN.js +2 -0
  182. package/dist/cli/chunks/{chunk-HYACMUUR.js → chunk-RE2IBX7Z.js} +2 -2
  183. package/dist/cli/chunks/{chunk-2V5VKOJ2.js → chunk-RMQQ5UHM.js} +2 -2
  184. package/dist/cli/chunks/{chunk-U62WL3WZ.js → chunk-ROEMVTXC.js} +3 -3
  185. package/dist/cli/chunks/{chunk-YOKRSFGA.js → chunk-SMTAZQJ3.js} +2 -2
  186. package/dist/cli/chunks/{chunk-OZTSMI7P.js → chunk-TO4NGP3E.js} +1 -1
  187. package/dist/cli/chunks/{chunk-LFEBTWFS.js → chunk-TTXYZUTQ.js} +2 -2
  188. package/dist/cli/chunks/{chunk-IZTUAI5T.js → chunk-U4NODKRR.js} +2 -2
  189. package/dist/cli/chunks/{chunk-JD3GH47Z.js → chunk-U635PSAW.js} +2 -2
  190. package/dist/cli/chunks/{chunk-6DBYVKGA.js → chunk-UBT7VCKQ.js} +2 -2
  191. package/dist/cli/chunks/{chunk-YSUMQBMY.js → chunk-UETM5XDO.js} +1 -1
  192. package/dist/cli/chunks/{chunk-BZB5D4BO.js → chunk-URXG7FMO.js} +4 -3
  193. package/dist/cli/chunks/{chunk-M2JBQVBP.js → chunk-VIWDVS24.js} +2 -2
  194. package/dist/cli/chunks/{chunk-6A4FEIE2.js → chunk-VNKCUKUJ.js} +3 -3
  195. package/dist/cli/chunks/{chunk-6KWX7A3R.js → chunk-VXIXHZCN.js} +2 -2
  196. package/dist/cli/chunks/{chunk-YIJDCZVX.js → chunk-WFEXEDMC.js} +2 -2
  197. package/dist/cli/chunks/{chunk-CG3HIYF4.js → chunk-WLX57ULC.js} +2 -2
  198. package/dist/cli/chunks/{chunk-FKODRXOU.js → chunk-WVQZGLCT.js} +2 -2
  199. package/dist/cli/chunks/{chunk-677V67MR.js → chunk-WW5DZ6BU.js} +1 -1
  200. package/dist/cli/chunks/{chunk-7L64UC5U.js → chunk-X364AIY6.js} +1 -1
  201. package/dist/cli/chunks/{chunk-UGJNR52C.js → chunk-XH7D6EGE.js} +1 -1
  202. package/dist/cli/chunks/{chunk-66DCG6RO.js → chunk-XICRAXUR.js} +4 -4
  203. package/dist/cli/chunks/{chunk-ETXK25IY.js → chunk-XMAV7AIC.js} +1 -1
  204. package/dist/cli/chunks/{chunk-NHXFAXEV.js → chunk-XSUPK7FI.js} +1 -1
  205. package/dist/cli/chunks/{chunk-3ZAGYTEC.js → chunk-XSWOB74I.js} +2 -2
  206. package/dist/cli/chunks/chunk-YPIZMTTA.js +14 -0
  207. package/dist/cli/chunks/{chunk-YDW522M7.js → chunk-YT6KBEXE.js} +2 -2
  208. package/dist/cli/chunks/{chunk-P2H5ARHM.js → chunk-ZENLP5LF.js} +1 -1
  209. package/dist/cli/chunks/{ci-A5ZXOEC4.js → ci-WS32HBBS.js} +2 -2
  210. package/dist/cli/chunks/{ci-output-S47BMRYC.js → ci-output-67R5MSLL.js} +2 -2
  211. package/dist/cli/chunks/circuit-breaker-MA562FT7.js +2 -0
  212. package/dist/cli/chunks/{claude-flow-setup-F5WBEBVK.js → claude-flow-setup-4QKGSRS7.js} +2 -2
  213. package/dist/cli/chunks/client-XQGZKXOB.js +2 -0
  214. package/dist/cli/chunks/{cline-installer-HLKR4QDR.js → cline-installer-6VSROHRY.js} +2 -2
  215. package/dist/cli/chunks/{code-MTZWS6JT.js → code-FBPBHVV3.js} +2 -2
  216. package/dist/cli/chunks/{code-index-extractor-BALTZ2WQ.js → code-index-extractor-62F622V2.js} +2 -2
  217. package/dist/cli/chunks/{codex-installer-LI2VIGET.js → codex-installer-LSR6DVCU.js} +2 -2
  218. package/dist/cli/chunks/{completions-TOF4GTNF.js → completions-56QOICBN.js} +2 -2
  219. package/dist/cli/chunks/{complexity-analyzer-IPFXIT6T.js → complexity-analyzer-SDH4NWIS.js} +2 -2
  220. package/dist/cli/chunks/{continuedev-installer-KWI66RBI.js → continuedev-installer-S7ZPL3VC.js} +2 -2
  221. package/dist/cli/chunks/{copilot-installer-REFOE6UF.js → copilot-installer-25GNNKNL.js} +2 -2
  222. package/dist/cli/chunks/{cost-tracker-M2MZQXCN.js → cost-tracker-73J4Y2RS.js} +2 -2
  223. package/dist/cli/chunks/{coverage-UR2XSJCR.js → coverage-WEE2AZ5F.js} +3 -3
  224. package/dist/cli/chunks/cross-domain-router-C2ZFCSXJ.js +2 -0
  225. package/dist/cli/chunks/{cursor-installer-X4PXCVYH.js → cursor-installer-DHQ644T3.js} +2 -2
  226. package/dist/cli/chunks/{daemon-5R6ZEEBB.js → daemon-3WUJ5E3X.js} +3 -3
  227. package/dist/cli/chunks/{dag-attention-scheduler-RUY2RJZA.js → dag-attention-scheduler-IRLAM43H.js} +2 -2
  228. package/dist/cli/chunks/{detect-PX2AYBHM.js → detect-DTSB4T4R.js} +2 -2
  229. package/dist/cli/chunks/{domain-handler-5JXWEO3E.js → domain-handler-DDN2Z5XC.js} +2 -2
  230. package/dist/cli/chunks/{domain-transfer-6M2YLBJY.js → domain-transfer-3RRG4S6R.js} +2 -2
  231. package/dist/cli/chunks/dream-JSZZ67OO.js +2 -0
  232. package/dist/cli/chunks/esm-node-X4TES6NX.js +2 -0
  233. package/dist/cli/chunks/{eval-L6ZBG462.js → eval-UXEP425X.js} +2 -2
  234. package/dist/cli/chunks/{fast-paths-WIFDALFK.js → fast-paths-4XLHS2VN.js} +2 -2
  235. package/dist/cli/chunks/{feature-flags-YLBXFUCN.js → feature-flags-6C2HD76K.js} +2 -2
  236. package/dist/cli/chunks/{feature-flags-GRHF5MTK.js → feature-flags-KXXHAEYF.js} +2 -2
  237. package/dist/cli/chunks/{file-discovery-4HXUB4HN.js → file-discovery-YSDUIZO4.js} +2 -2
  238. package/dist/cli/chunks/{fleet-RPLJXOEP.js → fleet-TYDG5DWK.js} +3 -3
  239. package/dist/cli/chunks/{gnn-wrapper-2D5IOGAT.js → gnn-wrapper-GJVYRPHB.js} +2 -2
  240. package/dist/cli/chunks/{heartbeat-handler-D5SWZZGA.js → heartbeat-handler-X63CM35O.js} +4 -4
  241. package/dist/cli/chunks/{heartbeat-scheduler-WSG4Y3M2.js → heartbeat-scheduler-NYH4CMVM.js} +2 -2
  242. package/dist/cli/chunks/hnsw-adapter-SQCVEHB5.js +2 -0
  243. package/dist/cli/chunks/hnsw-index-UGVC5IDK.js +2 -0
  244. package/dist/cli/chunks/{hnsw-legacy-bridge-UH6RWE74.js → hnsw-legacy-bridge-YDVUZTJI.js} +2 -2
  245. package/dist/cli/chunks/{hnswlib-node-BJ4ZJPMP.js → hnswlib-node-TLBDFWA6.js} +2 -2
  246. package/dist/cli/chunks/{hooks-KGDQNB5T.js → hooks-B6PVGP7D.js} +6 -6
  247. package/dist/cli/chunks/hybrid-router-YZEBKUZJ.js +2 -0
  248. package/dist/cli/chunks/{hypergraph-engine-LARQCK7V.js → hypergraph-engine-OQ2ZEG53.js} +2 -2
  249. package/dist/cli/chunks/{hypergraph-handler-RACF4AOX.js → hypergraph-handler-VPD424MI.js} +3 -3
  250. package/dist/cli/chunks/impact-analyzer-ZIXSRWED.js +2 -0
  251. package/dist/cli/chunks/{init-handler-64AOFMJD.js → init-handler-5WYP6NJW.js} +6 -6
  252. package/dist/cli/chunks/init-wizard-MO6PCXPX.js +2 -0
  253. package/dist/cli/chunks/kernel-P54KQB2F.js +2 -0
  254. package/dist/cli/chunks/{kilocode-installer-4ICIP6QN.js → kilocode-installer-YVY4EVMY.js} +2 -2
  255. package/dist/cli/chunks/{kiro-installer-J2GOV2OB.js → kiro-installer-GNT4BN3A.js} +2 -2
  256. package/dist/cli/chunks/knowledge-graph-GU57FQAQ.js +2 -0
  257. package/dist/cli/chunks/{learning-QD4JVH3K.js → learning-LD2RSBRS.js} +3 -3
  258. package/dist/cli/chunks/llm-router-ALKXFKLQ.js +36 -0
  259. package/dist/cli/chunks/{load-EXKUJMBK.js → load-XAOTGZYB.js} +2 -2
  260. package/dist/cli/chunks/load-test-5RFBTSS7.js +2 -0
  261. package/dist/cli/chunks/{mcp-NSNDZSMH.js → mcp-WDAJHGH4.js} +2 -2
  262. package/dist/cli/chunks/{memory-63JTNVZN.js → memory-M7QD57JD.js} +5 -5
  263. package/dist/cli/chunks/memory-backend-GPOP3IR4.js +2 -0
  264. package/dist/cli/chunks/memory-handlers-2NHGZLQM.js +2 -0
  265. package/dist/cli/chunks/multi-model-executor-2XZQK2IN.js +14 -0
  266. package/dist/cli/chunks/{opencode-installer-244LFSPN.js → opencode-installer-ASCVY3GG.js} +2 -2
  267. package/dist/cli/chunks/{orchestrator-TZB457J6.js → orchestrator-GOZICWN3.js} +22 -19
  268. package/dist/cli/chunks/{pipeline-YLBD2Z5Q.js → pipeline-YHQRJWV3.js} +2 -2
  269. package/dist/cli/chunks/{platform-53PWFZSE.js → platform-4NESYFHN.js} +2 -2
  270. package/dist/cli/chunks/{plugin-6GUQEFJU.js → plugin-E24I2RVB.js} +2 -2
  271. package/dist/cli/chunks/{prime-radiant-advanced-wasm-VCOK7FV5.js → prime-radiant-advanced-wasm-CDVSLR7R.js} +2 -2
  272. package/dist/cli/chunks/protocol-executor-M5IONISJ.js +2 -0
  273. package/dist/cli/chunks/{protocol-handler-25UEGTE2.js → protocol-handler-TGTDKSZB.js} +2 -2
  274. package/dist/cli/chunks/{prove-CTOU5F6G.js → prove-WUKDAMSE.js} +2 -2
  275. package/dist/cli/chunks/provider-manager-BTKK6W7M.js +24 -0
  276. package/dist/cli/chunks/qe-reasoning-bank-WIEXCBVE.js +2 -0
  277. package/dist/cli/chunks/{quality-PB7H5UEF.js → quality-RTIOIS2K.js} +2 -2
  278. package/dist/cli/chunks/queen-coordinator-ZFK6DANW.js +2 -0
  279. package/dist/cli/chunks/{real-embeddings-RWWYCIE5.js → real-embeddings-4JJKAEMO.js} +2 -2
  280. package/dist/cli/chunks/{roocode-installer-U4AGYVKL.js → roocode-installer-XU2IXRBM.js} +2 -2
  281. package/dist/cli/chunks/router-TOFBEI2Q.js +2 -0
  282. package/dist/cli/chunks/routing-feedback-RC2VDP6W.js +2 -0
  283. package/dist/cli/chunks/{routing-handler-NTDKDEBE.js → routing-handler-3KBOCIEN.js} +2 -2
  284. package/dist/cli/chunks/{ruvector-commands-RQKOLQSW.js → ruvector-commands-HHE2ZPX7.js} +2 -2
  285. package/dist/cli/chunks/{rvf-dual-writer-6EZ7S7OG.js → rvf-dual-writer-GAWM2BUZ.js} +2 -2
  286. package/dist/cli/chunks/{rvf-migration-adapter-EBTV6FV2.js → rvf-migration-adapter-HQPEC4BN.js} +2 -2
  287. package/dist/cli/chunks/{rvf-migration-coordinator-MERU7VLY.js → rvf-migration-coordinator-A4K45EFU.js} +2 -2
  288. package/dist/cli/chunks/rvf-native-adapter-ZOQDH3JY.js +2 -0
  289. package/dist/cli/chunks/safe-db-RIP3X32S.js +2 -0
  290. package/dist/cli/chunks/schedule-Q6KZRLWS.js +2 -0
  291. package/dist/cli/chunks/scheduler-SJO5QPAU.js +2 -0
  292. package/dist/cli/chunks/{security-JPDLGHMC.js → security-UIKUNOXB.js} +3 -3
  293. package/dist/cli/chunks/shared-rvf-adapter-JJCR3AWU.js +2 -0
  294. package/dist/cli/chunks/{shared-rvf-dual-writer-7OGLQE5Y.js → shared-rvf-dual-writer-ZUWSLFPH.js} +2 -2
  295. package/dist/cli/chunks/sqlite-persistence-HK2S6XAI.js +2 -0
  296. package/dist/cli/chunks/{status-handler-3TI3DHEL.js → status-handler-E3VSWGA6.js} +2 -2
  297. package/dist/cli/chunks/{structural-health-WCZKXVWS.js → structural-health-Y22H4BOU.js} +2 -2
  298. package/dist/cli/chunks/{sync-AM5T4GYO.js → sync-CA4KWZFS.js} +2 -2
  299. package/dist/cli/chunks/{task-handler-VHDTXPVP.js → task-handler-3EZPIAMD.js} +2 -2
  300. package/dist/cli/chunks/task-handlers-6UVAQAGP.js +2 -0
  301. package/dist/cli/chunks/{test-G6P5XGHM.js → test-Q5DOFSJI.js} +4 -4
  302. package/dist/cli/chunks/{test-scheduling-37RBUN4E.js → test-scheduling-BSXWCIMQ.js} +3 -3
  303. package/dist/cli/chunks/token-bootstrap-XGEZU2CS.js +2 -0
  304. package/dist/cli/chunks/{token-usage-5XGVBLFR.js → token-usage-BZX5TCG6.js} +2 -2
  305. package/dist/cli/chunks/{transformers-JTKWAZJU.js → transformers-7ITQPXAU.js} +2 -2
  306. package/dist/cli/chunks/{tree-sitter-wasm-parser-KW2GWIIQ.js → tree-sitter-wasm-parser-ZYBBNYR3.js} +2 -2
  307. package/dist/cli/chunks/{types-7R72BACI.js → types-ACZ5VVRC.js} +2 -2
  308. package/dist/cli/chunks/unified-memory-EXO6WK33.js +2 -0
  309. package/dist/cli/chunks/unified-memory-hnsw-7HPSTFVV.js +2 -0
  310. package/dist/cli/chunks/unified-persistence-WC3O4WOJ.js +2 -0
  311. package/dist/cli/chunks/{validate-TYB4ZTUL.js → validate-IQL6OVXD.js} +2 -2
  312. package/dist/cli/chunks/{validate-swarm-3TFI6PLT.js → validate-swarm-J52J2K5X.js} +2 -2
  313. package/dist/cli/chunks/{vibium-3YELURJT.js → vibium-XSE76PXE.js} +2 -2
  314. package/dist/cli/chunks/visual-security-COW3OCEE.js +2 -0
  315. package/dist/cli/chunks/{web-tree-sitter-7Q77A27Y.js → web-tree-sitter-YM6QXUIY.js} +2 -2
  316. package/dist/cli/chunks/{windsurf-installer-ASARRM2X.js → windsurf-installer-M27DVL4H.js} +2 -2
  317. package/dist/cli/chunks/{witness-chain-WZ6PNXEY.js → witness-chain-NB5LP73S.js} +2 -2
  318. package/dist/cli/chunks/witness-chain-XQXF3RSP.js +2 -0
  319. package/dist/cli/chunks/{workflow-JDTEE6TY.js → workflow-5DODQ6XS.js} +4 -4
  320. package/dist/cli/chunks/workflow-orchestrator-HSIZEKZM.js +2 -0
  321. package/dist/cli/chunks/{wrappers-X7WZLBZD.js → wrappers-K7HHCIYD.js} +2 -2
  322. package/dist/cli/commands/llm-router.js +252 -0
  323. package/dist/coordination/queen-task-management.js +8 -1
  324. package/dist/init/browser-engine-installer.d.ts +60 -0
  325. package/dist/init/browser-engine-installer.js +92 -0
  326. package/dist/init/init-wizard-steps.js +9 -0
  327. package/dist/init/phases/09-assets.d.ts +2 -0
  328. package/dist/init/phases/09-assets.js +65 -0
  329. package/dist/init/phases/12-verification.js +8 -0
  330. package/dist/init/skills-installer.js +1 -0
  331. package/dist/kernel/unified-memory-schemas.d.ts +1 -1
  332. package/dist/kernel/unified-memory-schemas.js +2 -1
  333. package/dist/mcp/bundle.js +47 -44
  334. package/dist/mcp/protocol-server.js +87 -0
  335. package/dist/routing/advisor/circuit-breaker.d.ts +56 -0
  336. package/dist/routing/advisor/circuit-breaker.js +128 -0
  337. package/dist/routing/advisor/domain-prompts.d.ts +14 -0
  338. package/dist/routing/advisor/domain-prompts.js +53 -0
  339. package/dist/routing/advisor/index.d.ts +10 -0
  340. package/dist/routing/advisor/index.js +9 -0
  341. package/dist/routing/advisor/multi-model-executor.d.ts +60 -0
  342. package/dist/routing/advisor/multi-model-executor.js +176 -0
  343. package/dist/routing/advisor/redaction.d.ts +40 -0
  344. package/dist/routing/advisor/redaction.js +187 -0
  345. package/dist/routing/advisor/types.d.ts +101 -0
  346. package/dist/routing/advisor/types.js +9 -0
  347. package/dist/routing/queen-integration.d.ts +3 -0
  348. package/dist/routing/queen-integration.js +7 -1
  349. package/dist/routing/routing-feedback.d.ts +7 -1
  350. package/dist/routing/routing-feedback.js +57 -11
  351. package/dist/routing/tiny-dancer-router.d.ts +35 -1
  352. package/dist/routing/tiny-dancer-router.js +33 -0
  353. package/dist/routing/types.d.ts +12 -0
  354. package/package.json +1 -1
  355. package/dist/cli/chunks/adapter-D4XQUIJD.js +0 -2
  356. package/dist/cli/chunks/aqe-learning-engine-CGIWYLIP.js +0 -2
  357. package/dist/cli/chunks/base-BYVP2STR.js +0 -2
  358. package/dist/cli/chunks/browser-workflow-PC4N5TKL.js +0 -2
  359. package/dist/cli/chunks/chunk-2K3DJ3EK.js +0 -7
  360. package/dist/cli/chunks/chunk-JBQ4WGB4.js +0 -14
  361. package/dist/cli/chunks/chunk-OT4JADWW.js +0 -2
  362. package/dist/cli/chunks/client-56BU3GAX.js +0 -2
  363. package/dist/cli/chunks/cross-domain-router-XQT52BTB.js +0 -2
  364. package/dist/cli/chunks/dream-LFZCN5WK.js +0 -2
  365. package/dist/cli/chunks/esm-node-EBDIEPKS.js +0 -2
  366. package/dist/cli/chunks/hnsw-adapter-BMXTVGZB.js +0 -2
  367. package/dist/cli/chunks/hnsw-index-YX6XLICT.js +0 -2
  368. package/dist/cli/chunks/impact-analyzer-MGSI2WBK.js +0 -2
  369. package/dist/cli/chunks/init-wizard-TBDWRRMC.js +0 -2
  370. package/dist/cli/chunks/kernel-NV7TO2FK.js +0 -2
  371. package/dist/cli/chunks/knowledge-graph-7REGYH6A.js +0 -2
  372. package/dist/cli/chunks/llm-router-4K4IT2PQ.js +0 -30
  373. package/dist/cli/chunks/load-test-RYQK44TT.js +0 -2
  374. package/dist/cli/chunks/memory-backend-3EBE2DEX.js +0 -2
  375. package/dist/cli/chunks/memory-handlers-2335MVQJ.js +0 -2
  376. package/dist/cli/chunks/protocol-executor-MR37S7GX.js +0 -2
  377. package/dist/cli/chunks/qe-reasoning-bank-DANGLPTH.js +0 -2
  378. package/dist/cli/chunks/queen-coordinator-4YJPYF5F.js +0 -2
  379. package/dist/cli/chunks/router-F4IPY4RQ.js +0 -2
  380. package/dist/cli/chunks/routing-feedback-VGHFIJ5S.js +0 -2
  381. package/dist/cli/chunks/rvf-native-adapter-2P75WF5A.js +0 -2
  382. package/dist/cli/chunks/safe-db-47NEO2RS.js +0 -2
  383. package/dist/cli/chunks/schedule-L5GJW25Z.js +0 -2
  384. package/dist/cli/chunks/scheduler-NGGGSZMO.js +0 -2
  385. package/dist/cli/chunks/shared-rvf-adapter-NKNTYGHO.js +0 -2
  386. package/dist/cli/chunks/sqlite-persistence-TE2ZRHKA.js +0 -2
  387. package/dist/cli/chunks/task-handlers-GEJ36WNB.js +0 -2
  388. package/dist/cli/chunks/token-bootstrap-JPE3LWXQ.js +0 -2
  389. package/dist/cli/chunks/unified-memory-KSBLUZT4.js +0 -2
  390. package/dist/cli/chunks/unified-memory-hnsw-V3EOMQIZ.js +0 -2
  391. package/dist/cli/chunks/unified-persistence-URIRJ4BM.js +0 -2
  392. package/dist/cli/chunks/visual-security-DJOOVCBZ.js +0 -2
  393. package/dist/cli/chunks/witness-chain-ZWJUCXCJ.js +0 -2
  394. package/dist/cli/chunks/workflow-orchestrator-5CKA6Q74.js +0 -2
@@ -0,0 +1,86 @@
1
+ # Executor Preamble — Advisor Protocol (ADR-092)
2
+
3
+ This preamble is prepended to any qe-* agent with `advisor.enabled: true` in its
4
+ frontmatter. It follows Anthropic's published canonical system prompt for the
5
+ executor/advisor pattern, adapted to AQE's CLI surface.
6
+
7
+ ---
8
+
9
+ ## Advisor Tool Access
10
+
11
+ You have access to an advisor backed by a stronger reviewer model. You invoke it
12
+ by running the following Bash command:
13
+
14
+ ```bash
15
+ aqe llm advise --session <session-id> --agent <your-agent-name> --json
16
+ ```
17
+
18
+ The CLI takes no semantic parameters beyond the session ID — when you call it,
19
+ the advisor receives your full conversation history automatically. The advisor
20
+ sees the task, every tool call you have made, and every result you have seen.
21
+
22
+ ## Routing Signal: `advisor:triggerMultiModel`
23
+
24
+ If your task capabilities include `advisor:triggerMultiModel`, the routing
25
+ layer (TinyDancerRouter) flagged this task as needing a second opinion due to
26
+ low routing confidence or security sensitivity. When this signal is present,
27
+ call the advisor **immediately after orientation** — do not wait for difficulty
28
+ to appear. The routing layer identified uncertainty before you started; confirm
29
+ the approach early.
30
+
31
+ ## When to Call the Advisor
32
+
33
+ Call the advisor **BEFORE substantive work** — before writing code, before
34
+ committing to an interpretation, before building on an assumption. If the task
35
+ requires orientation first (finding files, fetching a source, seeing what's
36
+ there), do that first, then call the advisor. Orientation is not substantive
37
+ work. Writing, editing, and declaring an answer are.
38
+
39
+ Also call the advisor:
40
+ - **When you believe the task is complete.** Before this call, make your
41
+ deliverable durable: write the file, save the result, commit the change. The
42
+ advisor call takes time; if the session ends during it, a durable result
43
+ persists and an unwritten one does not.
44
+ - **When stuck** — errors recurring, approach not converging, results that do
45
+ not fit.
46
+ - **When considering a change of approach.**
47
+
48
+ On tasks longer than a few steps, call the advisor at least once before
49
+ committing to an approach and once before declaring done. On short reactive
50
+ tasks where the next action is dictated by tool output you just read, you do
51
+ not need to keep calling — the advisor adds most of its value on the first
52
+ call, before the approach crystallizes.
53
+
54
+ ## How to Treat the Advice
55
+
56
+ Give the advice serious weight. If you follow a step and it fails empirically,
57
+ or you have primary-source evidence that contradicts a specific claim (the file
58
+ says X, the paper states Y), adapt. A passing self-test is not evidence the
59
+ advice is wrong — it is evidence your test does not check what the advice is
60
+ checking.
61
+
62
+ If you have already retrieved data pointing one way and the advisor points
63
+ another: **do not silently switch**. Surface the conflict in one more advisor
64
+ call — "I found X, you suggest Y, which constraint breaks the tie?" The
65
+ advisor saw your evidence but may have underweighted it; a reconcile call is
66
+ cheaper than committing to the wrong branch.
67
+
68
+ ## Output Contract
69
+
70
+ The advisor responds in under 100 words using enumerated steps, not
71
+ explanations. Expect something like:
72
+
73
+ ```
74
+ 1. Read auth.ts before changing the route handler — current implementation uses express-session, not JWT.
75
+ 2. Check TestUserFactory line 42 for the role field you need.
76
+ 3. Write a failing test first; production code after.
77
+ ```
78
+
79
+ Parse it as a list of next actions, not as natural-language commentary.
80
+
81
+ ## Budget and Limits
82
+
83
+ - Per-task cap: 3 advisor calls (configurable via frontmatter `max_uses`)
84
+ - Per-session hard ceiling: 10 advisor calls total
85
+ - Exceeding these limits returns exit code 3 — do not retry; continue without
86
+ the advisor.
@@ -1,16 +1,35 @@
1
1
  ---
2
2
  name: qe-coverage-specialist
3
3
  version: "3.0.0"
4
- updated: "2026-01-10"
4
+ updated: "2026-04-12"
5
5
  description: O(log n) sublinear coverage analysis with risk-weighted gap detection and HNSW vector indexing
6
6
  v2_compat:
7
7
  name: qe-coverage-analyzer
8
8
  deprecated_in: "3.0.0"
9
9
  removed_in: "4.0.0"
10
10
  domain: coverage-analysis
11
+ advisor:
12
+ enabled: true
13
+ provider: openrouter
14
+ model: anthropic/claude-opus-4
15
+ max_uses: 3
16
+ redact: strict
11
17
  ---
12
18
 
13
19
  <qe_agent_definition>
20
+ <advisor_protocol>
21
+ You have access to an advisor for strategic guidance on coverage analysis. The helper auto-detects the best provider from the user's environment.
22
+
23
+ ```bash
24
+ node .claude/helpers/v3/advisor-call.cjs \
25
+ --agent qe-coverage-specialist \
26
+ --task "Analyze coverage gaps for <target>" \
27
+ --context "Coverage data shows: <summary of uncovered areas>"
28
+ ```
29
+
30
+ Call BEFORE deciding which gaps to prioritize. Skip for simple single-file checks.
31
+ </advisor_protocol>
32
+
14
33
  <identity>
15
34
  You are the V3 QE Coverage Specialist, the primary agent for intelligent coverage analysis in Agentic QE v3.
16
35
  Mission: Achieve O(log n) coverage gap detection using HNSW vector indexing with risk-weighted prioritization.
@@ -1,13 +1,32 @@
1
1
  ---
2
2
  name: qe-fleet-commander
3
3
  version: "3.0.0"
4
- updated: "2026-01-10"
4
+ updated: "2026-04-12"
5
5
  description: Fleet management with agent lifecycle, workload distribution, and cross-domain coordination at scale
6
6
  v2_compat: qe-fleet-commander
7
7
  domain: cross-domain
8
+ advisor:
9
+ enabled: true
10
+ provider: openrouter
11
+ model: anthropic/claude-opus-4
12
+ max_uses: 3
13
+ redact: strict
8
14
  ---
9
15
 
10
16
  <qe_agent_definition>
17
+ <advisor_protocol>
18
+ You have access to an advisor for strategic guidance on fleet coordination. The helper auto-detects the best provider from the user's environment.
19
+
20
+ ```bash
21
+ node .claude/helpers/v3/advisor-call.cjs \
22
+ --agent qe-fleet-commander \
23
+ --task "Coordinate <task description>" \
24
+ --context "Fleet state: <N agents active>, domains: <list>, plan: <decomposition>"
25
+ ```
26
+
27
+ Call BEFORE task decomposition and BEFORE declaring a multi-agent coordination complete.
28
+ </advisor_protocol>
29
+
11
30
  <identity>
12
31
  You are the V3 QE Fleet Commander, the fleet management and orchestration expert in Agentic QE v3.
13
32
  Mission: Oversee and coordinate all QE agents across the fleet, managing resource allocation, workload distribution, agent health, and cross-domain orchestration at scale.
@@ -1,13 +1,32 @@
1
1
  ---
2
2
  name: qe-pentest-validator
3
3
  version: "3.6.0"
4
- updated: "2026-02-08"
4
+ updated: "2026-04-12"
5
5
  description: Graduated exploit validation with parallel vulnerability pipelines, browser-based attack execution, and "No Exploit, No Report" quality gate
6
6
  v2_compat: null
7
7
  domain: security-compliance
8
+ advisor:
9
+ enabled: true
10
+ provider: claude
11
+ model: claude-opus-4-6
12
+ max_uses: 3
13
+ redact: strict
8
14
  ---
9
15
 
10
16
  <qe_agent_definition>
17
+ <advisor_protocol>
18
+ You have access to an advisor for strategic guidance on exploit validation. The helper auto-detects the provider. Security agents are automatically restricted to direct Anthropic or self-hosted Ollama (OpenRouter is blocked).
19
+
20
+ ```bash
21
+ node .claude/helpers/v3/advisor-call.cjs \
22
+ --agent qe-pentest-validator \
23
+ --task "Validate <vulnerability type> in <target>" \
24
+ --context "SAST found <finding>. Attempting exploitation via <approach>."
25
+ ```
26
+
27
+ Call BEFORE each exploitation attempt and BEFORE declaring a finding validated or false-positive. Skip for obvious true-positives with clear reproduction steps.
28
+ </advisor_protocol>
29
+
11
30
  <identity>
12
31
  You are the V3 QE Pentest Validator, the exploit validation agent in Agentic QE v3.
13
32
  Mission: Validate security findings through graduated exploitation - proving vulnerabilities are real before reporting them. Adopts the "No Exploit, No Report" philosophy to eliminate false positives.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: qe-queen-coordinator
3
3
  version: "3.1.0"
4
- updated: "2026-01-30"
4
+ updated: "2026-04-12"
5
5
  description: V3 QE Queen Coordinator - MCP-powered swarm orchestration with real fleet coordination
6
6
  v2_compat: null # New in v3
7
7
  domain: coordination
@@ -11,9 +11,28 @@ dependencies:
11
11
  required: true
12
12
  - name: claude-flow
13
13
  required: false
14
+ advisor:
15
+ enabled: true
16
+ provider: openrouter
17
+ model: anthropic/claude-opus-4
18
+ max_uses: 3
19
+ redact: strict
14
20
  ---
15
21
 
16
22
  <qe_agent_definition>
23
+ <advisor_protocol>
24
+ You have access to an advisor for strategic guidance on fleet orchestration decisions. The helper auto-detects the best provider.
25
+
26
+ ```bash
27
+ node .claude/helpers/v3/advisor-call.cjs \
28
+ --agent qe-queen-coordinator \
29
+ --task "Orchestrate <objective>" \
30
+ --context "Fleet state: <agents active>, domains: <list>, current plan: <decomposition>"
31
+ ```
32
+
33
+ Call BEFORE decomposing a complex multi-domain objective and BEFORE finalizing agent delegation.
34
+ </advisor_protocol>
35
+
17
36
  <identity>
18
37
  You are the V3 QE Queen Coordinator, the sovereign orchestrator of the Agentic QE v3 fleet.
19
38
  Mission: Lead hierarchical coordination of 40+ specialized QE agents to achieve >90% coverage, zero-defect releases, and <5min test feedback.
@@ -1,13 +1,32 @@
1
1
  ---
2
2
  name: qe-risk-assessor
3
3
  version: "3.0.0"
4
- updated: "2026-01-10"
4
+ updated: "2026-04-12"
5
5
  description: Quality risk assessment with multi-factor scoring, impact analysis, and mitigation recommendations
6
6
  domain: quality-assessment
7
7
  v3_new: true
8
+ advisor:
9
+ enabled: true
10
+ provider: openrouter
11
+ model: anthropic/claude-opus-4
12
+ max_uses: 3
13
+ redact: strict
8
14
  ---
9
15
 
10
16
  <qe_agent_definition>
17
+ <advisor_protocol>
18
+ You have access to an advisor for strategic guidance on risk assessment decisions. The helper auto-detects the best provider.
19
+
20
+ ```bash
21
+ node .claude/helpers/v3/advisor-call.cjs \
22
+ --agent qe-risk-assessor \
23
+ --task "Assess quality risk for <target>" \
24
+ --context "Risk factors identified: <list>. Current scoring: <summary>"
25
+ ```
26
+
27
+ Call BEFORE assigning final risk scores and BEFORE recommending mitigation strategies. The advisor can identify risk factors you may have underweighted.
28
+ </advisor_protocol>
29
+
11
30
  <identity>
12
31
  You are the V3 QE Risk Assessor, the quality risk assessment expert in Agentic QE v3.
13
32
  Mission: Assess and quantify quality risks across code, tests, and releases using multi-factor risk models and predictive analytics.
@@ -16,9 +16,28 @@ dependencies:
16
16
  mcp_servers:
17
17
  - name: agentic-qe
18
18
  required: true
19
+ advisor:
20
+ enabled: true
21
+ provider: openrouter
22
+ model: anthropic/claude-opus-4
23
+ max_uses: 3
24
+ redact: strict
19
25
  ---
20
26
 
21
27
  <qe_agent_definition>
28
+ <advisor_protocol>
29
+ You have access to an advisor for strategic guidance on root cause investigations. The helper auto-detects the best provider.
30
+
31
+ ```bash
32
+ node .claude/helpers/v3/advisor-call.cjs \
33
+ --agent qe-root-cause-analyzer \
34
+ --task "Root cause analysis for <failure description>" \
35
+ --context "Evidence gathered: <logs, traces, timeline>. Current hypothesis: <theory>"
36
+ ```
37
+
38
+ Call BEFORE committing to a root cause hypothesis and BEFORE recommending prevention strategies. Early wrong turns in RCA compound — the advisor can challenge your hypothesis.
39
+ </advisor_protocol>
40
+
22
41
  <identity>
23
42
  You are the V3 QE Root Cause Analyzer, the failure investigation expert in Agentic QE v3.
24
43
  Mission: Perform systematic root cause analysis on test failures, production incidents, and defects to identify underlying causes and prevent recurrence.
@@ -1,13 +1,32 @@
1
1
  ---
2
2
  name: qe-security-auditor
3
3
  version: "3.0.0"
4
- updated: "2026-01-10"
4
+ updated: "2026-04-12"
5
5
  description: Security audit specialist with OWASP coverage, compliance validation, and remediation workflows
6
6
  v2_compat: null # New in v3
7
7
  domain: security-compliance
8
+ advisor:
9
+ enabled: true
10
+ provider: claude
11
+ model: claude-opus-4-6
12
+ max_uses: 3
13
+ redact: strict
8
14
  ---
9
15
 
10
16
  <qe_agent_definition>
17
+ <advisor_protocol>
18
+ You have access to an advisor for strategic guidance on security audits. The helper auto-detects the provider. Security agents are automatically restricted to direct Anthropic or self-hosted Ollama (OpenRouter is blocked).
19
+
20
+ ```bash
21
+ node .claude/helpers/v3/advisor-call.cjs \
22
+ --agent qe-security-auditor \
23
+ --task "Security audit of <target>" \
24
+ --context "Found so far: <findings summary>"
25
+ ```
26
+
27
+ Call BEFORE committing to a finding severity assessment and BEFORE declaring the audit complete.
28
+ </advisor_protocol>
29
+
11
30
  <identity>
12
31
  You are the V3 QE Security Auditor, the comprehensive security audit expert in Agentic QE v3.
13
32
  Mission: Conduct comprehensive security audits of code, configurations, and infrastructure to identify vulnerabilities, ensure compliance, and recommend remediation strategies.
@@ -1,13 +1,21 @@
1
1
  ---
2
2
  name: qe-test-architect
3
3
  version: "3.0.0"
4
- updated: "2026-01-10"
4
+ updated: "2026-04-11"
5
5
  description: AI-powered test generation with sublinear optimization, multi-framework support, and self-learning capabilities
6
6
  v2_compat:
7
7
  name: qe-test-generator
8
8
  deprecated_in: "3.0.0"
9
9
  removed_in: "4.0.0"
10
10
  domain: test-generation
11
+ advisor:
12
+ enabled: true # ADR-092 Phase 0 target agent
13
+ provider: openrouter # Phase 0 default; any HybridRouter provider supported
14
+ model: anthropic/claude-opus-4 # Strong reasoning model via OpenRouter
15
+ max_uses: 3 # Per-task advisor call cap
16
+ budget_usd_per_task: 0.05 # Per-call budget ceiling
17
+ required: false # Phase 5 flips this to true for quality-gate enforcement
18
+ redact: strict # Phase 1 activates; Phase 0 uses happy path
11
19
  ---
12
20
 
13
21
  <qe_agent_definition>
@@ -37,6 +45,30 @@ Planned:
37
45
  - AI-powered test data synthesis at scale
38
46
  </implementation_status>
39
47
 
48
+ <advisor_protocol>
49
+ You have access to an advisor backed by a stronger model. The helper script auto-detects which provider and model to use from the user's environment and project config.
50
+
51
+ To call the advisor:
52
+ ```bash
53
+ node .claude/helpers/v3/advisor-call.cjs \
54
+ --agent qe-test-architect \
55
+ --task "Generate pytest tests for <module>" \
56
+ --context "I read the source. It has classes X, Y, Z with deps on A, B."
57
+ ```
58
+
59
+ If `aqe` is not on PATH, use `npx` instead:
60
+ ```bash
61
+ npx -y agentic-qe llm advise --stdin --agent qe-test-architect --json <<< '{"taskDescription":"...","messages":[{"role":"user","content":"..."},{"role":"assistant","content":"..."}]}'
62
+ ```
63
+
64
+ WHEN TO CALL:
65
+ - BEFORE writing any test code — after reading the source file(s), call for a strategic plan
66
+ - When stuck — errors recurring, approach not converging
67
+ - Before declaring the task complete — verify your approach
68
+
69
+ The advisor responds in under 100 words with enumerated steps naming concrete classes, methods, and mock targets. Give the advice serious weight. On short tasks (1-2 files, obvious strategy), skip the call.
70
+ </advisor_protocol>
71
+
40
72
  <default_to_action>
41
73
  Generate tests immediately when provided with source code and requirements.
42
74
  Make autonomous decisions about test types and coverage strategies when goals are clear.
@@ -0,0 +1,283 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * advisor-call.cjs — Helper script for agent advisor protocol (ADR-092)
4
+ *
5
+ * Agents call this instead of invoking `aqe llm advise` directly.
6
+ * This script:
7
+ * 1. Reads .agentic-qe/config.yaml for advisor settings
8
+ * 2. Detects available API keys in environment
9
+ * 3. Applies security-agent provider restrictions automatically
10
+ * 4. Picks the best available provider/model
11
+ * 5. Calls `aqe llm advise` with the resolved settings
12
+ *
13
+ * Usage from agent definitions:
14
+ * node "$(dirname "$(which aqe)")/../lib/helpers/advisor-call.cjs" \
15
+ * --agent <agent-name> \
16
+ * --task "<task description>" \
17
+ * --context "<what the executor has found so far>"
18
+ *
19
+ * Or simpler (when aqe is installed):
20
+ * aqe advisor call --agent <name> --task "<desc>" --context "<ctx>"
21
+ *
22
+ * Exits 0 with JSON on success, 1-6 with error JSON on failure.
23
+ */
24
+
25
+ 'use strict';
26
+
27
+ const { execFileSync } = require('child_process');
28
+ const { readFileSync, writeFileSync, mkdirSync, existsSync } = require('fs');
29
+ const { join, dirname } = require('path');
30
+ const { tmpdir } = require('os');
31
+
32
+ // ============================================================================
33
+ // Parse arguments
34
+ // ============================================================================
35
+
36
+ const args = process.argv.slice(2);
37
+ function getArg(name) {
38
+ const idx = args.indexOf(`--${name}`);
39
+ return idx >= 0 && idx + 1 < args.length ? args[idx + 1] : null;
40
+ }
41
+
42
+ const agentName = getArg('agent') || 'unknown';
43
+ const taskDescription = getArg('task') || '';
44
+ const context = getArg('context') || '';
45
+ const userMessage = getArg('message') || taskDescription;
46
+
47
+ if (!taskDescription && !userMessage) {
48
+ console.error(JSON.stringify({
49
+ error: 'Usage: advisor-call.cjs --agent <name> --task "<description>" [--context "<findings>"] [--message "<user request>"]',
50
+ exit_code: 1,
51
+ }));
52
+ process.exit(1);
53
+ }
54
+
55
+ // ============================================================================
56
+ // Detect available providers from environment
57
+ // ============================================================================
58
+
59
+ const availableProviders = [];
60
+
61
+ if (process.env.OPENROUTER_API_KEY) {
62
+ availableProviders.push({
63
+ name: 'openrouter',
64
+ model: 'anthropic/claude-opus-4',
65
+ securityAllowed: false, // third-party proxy
66
+ });
67
+ }
68
+
69
+ if (process.env.ANTHROPIC_API_KEY) {
70
+ availableProviders.push({
71
+ name: 'claude',
72
+ model: 'claude-opus-4-6',
73
+ securityAllowed: true,
74
+ });
75
+ }
76
+
77
+ if (process.env.OLLAMA_HOST || process.env.OLLAMA_BASE_URL) {
78
+ availableProviders.push({
79
+ name: 'ollama',
80
+ model: process.env.OLLAMA_ADVISOR_MODEL || 'llama3.1:70b',
81
+ securityAllowed: true, // self-hosted
82
+ });
83
+ }
84
+
85
+ if (availableProviders.length === 0) {
86
+ console.error(JSON.stringify({
87
+ error: 'No advisor provider available. Set one of: OPENROUTER_API_KEY, ANTHROPIC_API_KEY, OLLAMA_HOST',
88
+ exit_code: 4,
89
+ }));
90
+ process.exit(4);
91
+ }
92
+
93
+ // ============================================================================
94
+ // Read project config for advisor overrides
95
+ // ============================================================================
96
+
97
+ let advisorConfig = {};
98
+ const configPaths = [
99
+ join(process.cwd(), '.agentic-qe', 'config.yaml'),
100
+ join(process.cwd(), '.agentic-qe', 'config.json'),
101
+ ];
102
+
103
+ for (const cfgPath of configPaths) {
104
+ try {
105
+ if (!existsSync(cfgPath)) continue;
106
+ const raw = readFileSync(cfgPath, 'utf-8');
107
+
108
+ if (cfgPath.endsWith('.yaml') || cfgPath.endsWith('.yml')) {
109
+ // Simple YAML parse for advisor section (no dependency required)
110
+ const advisorMatch = raw.match(/^advisor:\s*\n((?: .+\n)*)/m);
111
+ if (advisorMatch) {
112
+ const lines = advisorMatch[1].split('\n').filter(Boolean);
113
+ for (const line of lines) {
114
+ const kv = line.match(/^\s+(\w+):\s*"?([^"#\n]+)"?/);
115
+ if (kv) advisorConfig[kv[1].trim()] = kv[2].trim();
116
+ }
117
+ }
118
+ } else {
119
+ const json = JSON.parse(raw);
120
+ if (json.advisor) advisorConfig = json.advisor;
121
+ }
122
+ break;
123
+ } catch {
124
+ // config not available — use defaults
125
+ }
126
+ }
127
+
128
+ // ============================================================================
129
+ // Select provider based on agent domain + security constraints
130
+ // ============================================================================
131
+
132
+ const isSecurityAgent = /^qe-security|^qe-pentest/.test(agentName);
133
+
134
+ let selectedProvider;
135
+
136
+ // Config override takes priority
137
+ if (advisorConfig.provider) {
138
+ selectedProvider = availableProviders.find(p => p.name === advisorConfig.provider);
139
+ }
140
+
141
+ // Security agents: filter to allowed providers only
142
+ if (!selectedProvider && isSecurityAgent) {
143
+ selectedProvider = availableProviders.find(p => p.securityAllowed);
144
+ if (!selectedProvider) {
145
+ console.error(JSON.stringify({
146
+ error: `Security agent "${agentName}" requires direct Anthropic (ANTHROPIC_API_KEY) or self-hosted Ollama. OpenRouter is not allowed for security agents.`,
147
+ exit_code: 6,
148
+ }));
149
+ process.exit(6);
150
+ }
151
+ }
152
+
153
+ // Default: first available provider (preference: openrouter > claude > ollama)
154
+ if (!selectedProvider) {
155
+ selectedProvider = availableProviders[0];
156
+ }
157
+
158
+ // Config model override
159
+ const model = advisorConfig.model || selectedProvider.model;
160
+ const maxUses = advisorConfig.maxUses || '3';
161
+ const redactMode = advisorConfig.redact || 'strict';
162
+
163
+ // M2 fix: resolve domain-specific advisor prompt from agent name
164
+ const DOMAIN_PROMPTS = {
165
+ 'test-generation': 'You are the advisor for a test-generation executor. Respond in under 100 words, enumerated steps. Name concrete classes, methods, dependencies. Focus on: what to mock, priority coverage methods, edge cases the executor will miss, test structure.',
166
+ 'security-compliance': 'You are the advisor for a security executor. Respond in under 100 words, enumerated steps. Name concrete attack vectors, CWE IDs, code locations. Focus on: input validation gaps, auth/authz issues, data exposure, dependency CVEs. Prioritize by exploitability.',
167
+ 'coverage-analysis': 'You are the advisor for a coverage analysis executor. Respond in under 100 words, enumerated steps. Name concrete uncovered files, functions, branches. Focus on: highest business risk gaps, missed branch types, quick wins.',
168
+ 'cross-domain': 'You are the advisor for a fleet commander. Respond in under 100 words, enumerated steps. Focus on: which domains need attention, agent delegation, coordination risks, missing subtasks.',
169
+ };
170
+
171
+ const AGENT_DOMAIN_MAP = {
172
+ 'qe-test-architect': 'test-generation',
173
+ 'qe-test-generator': 'test-generation',
174
+ 'qe-coverage-specialist': 'coverage-analysis',
175
+ 'qe-coverage-analyzer': 'coverage-analysis',
176
+ 'qe-security-auditor': 'security-compliance',
177
+ 'qe-security-scanner': 'security-compliance',
178
+ 'qe-pentest-validator': 'security-compliance',
179
+ 'qe-fleet-commander': 'cross-domain',
180
+ 'qe-queen-coordinator': 'cross-domain',
181
+ 'qe-risk-assessor': 'cross-domain',
182
+ 'qe-root-cause-analyzer': 'cross-domain',
183
+ };
184
+
185
+ const agentDomain = AGENT_DOMAIN_MAP[agentName];
186
+ const domainPrompt = agentDomain ? DOMAIN_PROMPTS[agentDomain] : null;
187
+
188
+ // ============================================================================
189
+ // Write transcript and call aqe llm advise
190
+ // ============================================================================
191
+
192
+ const transcriptDir = join(tmpdir(), 'aqe-advisor');
193
+ mkdirSync(transcriptDir, { recursive: true });
194
+ const transcriptPath = join(transcriptDir, `transcript-${Date.now()}.json`);
195
+
196
+ const transcript = {
197
+ taskDescription,
198
+ messages: [
199
+ { role: 'user', content: userMessage },
200
+ ...(context ? [{ role: 'assistant', content: context }] : []),
201
+ ],
202
+ };
203
+
204
+ writeFileSync(transcriptPath, JSON.stringify(transcript));
205
+
206
+ // Find aqe binary
207
+ let aqeBin = 'aqe';
208
+ try {
209
+ execFileSync('which', ['aqe'], { encoding: 'utf-8' });
210
+ } catch {
211
+ // aqe not on PATH — try npx
212
+ aqeBin = 'npx';
213
+ }
214
+
215
+ const cliArgs = aqeBin === 'npx'
216
+ ? ['aqe', 'llm', 'advise']
217
+ : ['llm', 'advise'];
218
+
219
+ cliArgs.push(
220
+ '--transcript', transcriptPath,
221
+ '--agent', agentName,
222
+ '--provider', selectedProvider.name,
223
+ '--model', model,
224
+ '--redact', redactMode,
225
+ '--json',
226
+ );
227
+
228
+ // M2 fix: pass domain-specific prompt if resolved
229
+ if (domainPrompt) {
230
+ cliArgs.push('--advisor-prompt', domainPrompt);
231
+ }
232
+
233
+ try {
234
+ const result = execFileSync(aqeBin, cliArgs, {
235
+ encoding: 'utf-8',
236
+ timeout: 60000,
237
+ env: process.env,
238
+ });
239
+
240
+ // Forward the JSON result, filtering out non-JSON lines (e.g., UnifiedMemory init)
241
+ const lines = result.split('\n');
242
+ let inJson = false;
243
+ let jsonDepth = 0;
244
+ const jsonLines = [];
245
+
246
+ for (const line of lines) {
247
+ const trimmed = line.trim();
248
+ if (!inJson && trimmed.startsWith('{')) {
249
+ inJson = true;
250
+ }
251
+ if (inJson) {
252
+ jsonLines.push(line);
253
+ jsonDepth += (trimmed.match(/{/g) || []).length;
254
+ jsonDepth -= (trimmed.match(/}/g) || []).length;
255
+ if (jsonDepth <= 0) break;
256
+ }
257
+ }
258
+
259
+ if (jsonLines.length > 0) {
260
+ console.log(jsonLines.join('\n'));
261
+ }
262
+
263
+ // Clean up transcript
264
+ try { require('fs').unlinkSync(transcriptPath); } catch {}
265
+
266
+ process.exit(0);
267
+ } catch (err) {
268
+ const exitCode = err.status || 1;
269
+ const stderr = err.stderr || err.message || 'Unknown error';
270
+
271
+ console.error(JSON.stringify({
272
+ error: stderr.slice(0, 500),
273
+ exit_code: exitCode,
274
+ provider: selectedProvider.name,
275
+ model,
276
+ agent: agentName,
277
+ }));
278
+
279
+ // Clean up
280
+ try { require('fs').unlinkSync(transcriptPath); } catch {}
281
+
282
+ process.exit(exitCode);
283
+ }