agentic-qe 3.9.9 → 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 (330) 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/skills-manifest.json +2 -2
  12. package/CHANGELOG.md +22 -0
  13. package/assets/agents/v3/helpers/advisor-call.cjs +283 -0
  14. package/assets/agents/v3/qe-coverage-specialist.md +20 -1
  15. package/assets/agents/v3/qe-fleet-commander.md +20 -1
  16. package/assets/agents/v3/qe-pentest-validator.md +20 -1
  17. package/assets/agents/v3/qe-queen-coordinator.md +20 -1
  18. package/assets/agents/v3/qe-risk-assessor.md +20 -1
  19. package/assets/agents/v3/qe-root-cause-analyzer.md +19 -0
  20. package/assets/agents/v3/qe-security-auditor.md +20 -1
  21. package/assets/agents/v3/qe-test-architect.md +33 -1
  22. package/assets/skills/skills-manifest.json +2 -2
  23. package/dist/cli/bundle.js +5 -5
  24. package/dist/cli/chunks/adapter-IKCDCMSI.js +2 -0
  25. package/dist/cli/chunks/{agent-booster-wasm-QEN7W6VC.js → agent-booster-wasm-HM4XSABF.js} +2 -2
  26. package/dist/cli/chunks/{agent-handler-F3RLG42J.js → agent-handler-UDBDLLO4.js} +2 -2
  27. package/dist/cli/chunks/{agent-memory-branch-U3PZ3CPL.js → agent-memory-branch-VIXQ3DAR.js} +2 -2
  28. package/dist/cli/chunks/aqe-learning-engine-W4WW7SQW.js +2 -0
  29. package/dist/cli/chunks/{audit-FF6SP7Q2.js → audit-FWTGLQHH.js} +2 -2
  30. package/dist/cli/chunks/base-UQKFTHOY.js +2 -0
  31. package/dist/cli/chunks/{better-sqlite3-CVXRDGQX.js → better-sqlite3-TYI3CCWU.js} +2 -2
  32. package/dist/cli/chunks/{brain-handler-AMTRZ35W.js → brain-handler-45ZGBLSB.js} +3 -3
  33. package/dist/cli/chunks/{branch-enumerator-Y4A34YFT.js → branch-enumerator-ZBXELCQA.js} +2 -2
  34. package/dist/cli/chunks/{browser-ETSF5GZR.js → browser-2KM5IKEX.js} +2 -2
  35. package/dist/cli/chunks/browser-workflow-NMOEM3HW.js +2 -0
  36. package/dist/cli/chunks/{chunk-3NU4C62D.js → chunk-226DSROQ.js} +3 -3
  37. package/dist/cli/chunks/{chunk-JK4K4EH3.js → chunk-27B575K6.js} +2 -2
  38. package/dist/cli/chunks/{chunk-J2DNMVB5.js → chunk-2IJFZW3N.js} +12 -12
  39. package/dist/cli/chunks/{chunk-BVKS3X2I.js → chunk-32OB4ZYQ.js} +1 -1
  40. package/dist/cli/chunks/{chunk-UYKIPSRX.js → chunk-335CCAOL.js} +1 -1
  41. package/dist/cli/chunks/{chunk-ECNPBD4Y.js → chunk-34WI4QNF.js} +2 -2
  42. package/dist/cli/chunks/chunk-3A4BL62O.js +2 -0
  43. package/dist/cli/chunks/{chunk-4HDG7OS4.js → chunk-3AG647MY.js} +2 -2
  44. package/dist/cli/chunks/{chunk-22HQFULR.js → chunk-3HIDCXW3.js} +1 -1
  45. package/dist/cli/chunks/{chunk-OMRZUYXN.js → chunk-4EKWEDHA.js} +9 -9
  46. package/dist/cli/chunks/{chunk-S6VT7VAO.js → chunk-4FU6YNDP.js} +2 -2
  47. package/dist/cli/chunks/{chunk-2ZHA6ORO.js → chunk-4LOJJ4VX.js} +1 -1
  48. package/dist/cli/chunks/{chunk-Q2ZBPOUX.js → chunk-4VOGUZW5.js} +1 -1
  49. package/dist/cli/chunks/{chunk-QMNAELZG.js → chunk-4ZR5G4MZ.js} +2 -2
  50. package/dist/cli/chunks/{chunk-MDTF7LE6.js → chunk-52ZHPZVX.js} +2 -2
  51. package/dist/cli/chunks/{chunk-5DU4YW2S.js → chunk-53G3OCGS.js} +2 -2
  52. package/dist/cli/chunks/{chunk-NLKJI73E.js → chunk-54TZA65H.js} +2 -2
  53. package/dist/cli/chunks/{chunk-3JCZTTFY.js → chunk-5QKTLOGO.js} +1 -1
  54. package/dist/cli/chunks/{chunk-QHATTMJC.js → chunk-5TATJQ3Z.js} +2 -2
  55. package/dist/cli/chunks/{chunk-CJQLJEO4.js → chunk-5V6DRRLO.js} +2 -2
  56. package/dist/cli/chunks/{chunk-5L3EUZJA.js → chunk-6X7WKNDF.js} +2 -2
  57. package/dist/cli/chunks/chunk-7FWZHYYE.js +2 -0
  58. package/dist/cli/chunks/{chunk-PEEN4AAK.js → chunk-A2ULGMMG.js} +1 -1
  59. package/dist/cli/chunks/{chunk-2KY5B4ON.js → chunk-A53XKLEA.js} +8 -8
  60. package/dist/cli/chunks/{chunk-QSA23PJ6.js → chunk-A5OIXFFL.js} +1 -1
  61. package/dist/cli/chunks/{chunk-VTX4NAWB.js → chunk-ACNL4NFI.js} +2 -2
  62. package/dist/cli/chunks/{chunk-2UP3DYNH.js → chunk-AE6Y5CNJ.js} +2 -2
  63. package/dist/cli/chunks/{chunk-3F666FYP.js → chunk-AO4HDN62.js} +2 -2
  64. package/dist/cli/chunks/{chunk-JIPU4YQK.js → chunk-AOA454FC.js} +2 -2
  65. package/dist/cli/chunks/{chunk-YRORPSPA.js → chunk-B2QVWL5R.js} +2 -2
  66. package/dist/cli/chunks/{chunk-AYMIF4W5.js → chunk-B3L3CT4X.js} +2 -2
  67. package/dist/cli/chunks/{chunk-MXMKHI2I.js → chunk-B4AFVIOA.js} +2 -2
  68. package/dist/cli/chunks/{chunk-R23PJGH7.js → chunk-BCSCJBYQ.js} +2 -2
  69. package/dist/cli/chunks/{chunk-CCCBGKVY.js → chunk-BIV6HWMT.js} +2 -2
  70. package/dist/cli/chunks/{chunk-A6GYFTIA.js → chunk-BNNH3KZP.js} +1 -1
  71. package/dist/cli/chunks/{chunk-74FBSJVC.js → chunk-C234RGWZ.js} +2 -2
  72. package/dist/cli/chunks/{chunk-PRJUO2OQ.js → chunk-C55GEYDA.js} +2 -2
  73. package/dist/cli/chunks/{chunk-IZC5NPHD.js → chunk-CEBZHZ4O.js} +1 -1
  74. package/dist/cli/chunks/{chunk-TTENF6AH.js → chunk-CFQHIWWH.js} +1 -1
  75. package/dist/cli/chunks/{chunk-B3DA4SCL.js → chunk-CJO2V2FB.js} +1 -1
  76. package/dist/cli/chunks/{chunk-CZYTPNUI.js → chunk-CQNXIYQW.js} +2 -2
  77. package/dist/cli/chunks/{chunk-FTF34UME.js → chunk-D2A4TGZY.js} +1 -1
  78. package/dist/cli/chunks/{chunk-MWZN4PYF.js → chunk-DG2OYKUQ.js} +2 -2
  79. package/dist/cli/chunks/{chunk-OFOFXJ3M.js → chunk-DPYCHODC.js} +2 -2
  80. package/dist/cli/chunks/{chunk-JQJHRQRX.js → chunk-E4YKNKQL.js} +2 -2
  81. package/dist/cli/chunks/{chunk-65XCVUP7.js → chunk-EEWTTYRC.js} +1 -1
  82. package/dist/cli/chunks/{chunk-KSJCMXAJ.js → chunk-EGIYLRW5.js} +2 -2
  83. package/dist/cli/chunks/{chunk-ADJGMTIW.js → chunk-EHGTNSJ2.js} +1 -1
  84. package/dist/cli/chunks/{chunk-P6YMECV2.js → chunk-EJNASXOY.js} +2 -2
  85. package/dist/cli/chunks/{chunk-AT2VD2ZP.js → chunk-F7HRGQRS.js} +2 -2
  86. package/dist/cli/chunks/{chunk-C7YD7O74.js → chunk-FF7TSDO4.js} +2 -2
  87. package/dist/cli/chunks/{chunk-MUCFC3YG.js → chunk-FIQNVPYY.js} +2 -2
  88. package/dist/cli/chunks/{chunk-RZYTJSQT.js → chunk-FJOBKT7N.js} +1 -1
  89. package/dist/cli/chunks/{chunk-YXE67VME.js → chunk-FYI52MFF.js} +2 -2
  90. package/dist/cli/chunks/{chunk-DNS7DP2O.js → chunk-GCNTU3QJ.js} +1 -1
  91. package/dist/cli/chunks/{chunk-ZEUORIH2.js → chunk-H56YBNXW.js} +2 -2
  92. package/dist/cli/chunks/{chunk-J62N66ZH.js → chunk-HJMLJNCB.js} +1 -1
  93. package/dist/cli/chunks/chunk-I3IRIJOT.js +2 -0
  94. package/dist/cli/chunks/chunk-IEQ2VYMO.js +3 -0
  95. package/dist/cli/chunks/{chunk-BVOGMK6N.js → chunk-IGRKFVFD.js} +2 -2
  96. package/dist/cli/chunks/{chunk-6LTJP3DO.js → chunk-IJPE6OGD.js} +10 -10
  97. package/dist/cli/chunks/{chunk-HDM43P7H.js → chunk-IJUL2UMO.js} +1 -1
  98. package/dist/cli/chunks/{chunk-EV2NMWJV.js → chunk-ISZJAZ2D.js} +1 -1
  99. package/dist/cli/chunks/{chunk-4CDSEZD6.js → chunk-ITDYTODU.js} +2 -2
  100. package/dist/cli/chunks/{chunk-BYJEK6LX.js → chunk-JHUEBBSX.js} +2 -2
  101. package/dist/cli/chunks/{chunk-2HFPJPQW.js → chunk-JN3CC2TX.js} +2 -2
  102. package/dist/cli/chunks/{chunk-CXWA34RL.js → chunk-JOEEGNNX.js} +2 -2
  103. package/dist/cli/chunks/{chunk-BYPBKVTC.js → chunk-JQX2DHQT.js} +1 -1
  104. package/dist/cli/chunks/{chunk-ZKXA4VBK.js → chunk-JRG4AFUR.js} +3 -3
  105. package/dist/cli/chunks/{chunk-52RZZV4M.js → chunk-JRMNQWRL.js} +3 -3
  106. package/dist/cli/chunks/{chunk-2JAYDTSE.js → chunk-JXDJMVIG.js} +2 -2
  107. package/dist/cli/chunks/{chunk-2X7LDTVD.js → chunk-JYPW22JV.js} +2 -2
  108. package/dist/cli/chunks/{chunk-XZ2JYMFT.js → chunk-KK3KVYE7.js} +2 -2
  109. package/dist/cli/chunks/{chunk-BSES27JE.js → chunk-KSRAA6ZD.js} +3 -3
  110. package/dist/cli/chunks/chunk-KUCU5ML6.js +6 -0
  111. package/dist/cli/chunks/{chunk-QTYTM7C7.js → chunk-KXXLMLMJ.js} +2 -2
  112. package/dist/cli/chunks/{chunk-DI6R2AVP.js → chunk-LKCFJC4Q.js} +1 -1
  113. package/dist/cli/chunks/{chunk-SVLO2DVL.js → chunk-LODXDV4G.js} +2 -2
  114. package/dist/cli/chunks/{chunk-AHOP227C.js → chunk-M4CYXAVP.js} +4 -4
  115. package/dist/cli/chunks/{chunk-6KQLF3ZO.js → chunk-MOLMS6MA.js} +2 -2
  116. package/dist/cli/chunks/{chunk-YISXT54V.js → chunk-NBTM2J4B.js} +2 -2
  117. package/dist/cli/chunks/{chunk-FGW5W3YK.js → chunk-NIFVFUCU.js} +2 -2
  118. package/dist/cli/chunks/{chunk-W57I57M4.js → chunk-OOHKW3UE.js} +2 -2
  119. package/dist/cli/chunks/{chunk-6PJUDLCT.js → chunk-ORA6NIXN.js} +2 -2
  120. package/dist/cli/chunks/{chunk-HOWZFW7G.js → chunk-OSD55UO7.js} +2 -2
  121. package/dist/cli/chunks/{chunk-Z7AFNZMI.js → chunk-OWQRMH3G.js} +2 -2
  122. package/dist/cli/chunks/chunk-QFUINEBN.js +2 -0
  123. package/dist/cli/chunks/{chunk-OEZA7Q2Z.js → chunk-RE2IBX7Z.js} +2 -2
  124. package/dist/cli/chunks/{chunk-5SWY75MJ.js → chunk-RMQQ5UHM.js} +2 -2
  125. package/dist/cli/chunks/{chunk-MZOYBHJ3.js → chunk-ROEMVTXC.js} +3 -3
  126. package/dist/cli/chunks/{chunk-WDWIJDQR.js → chunk-SMTAZQJ3.js} +2 -2
  127. package/dist/cli/chunks/{chunk-W4VDPHWC.js → chunk-TO4NGP3E.js} +1 -1
  128. package/dist/cli/chunks/{chunk-PYTXZMXR.js → chunk-TTXYZUTQ.js} +2 -2
  129. package/dist/cli/chunks/{chunk-WEJJWJ5M.js → chunk-U4NODKRR.js} +2 -2
  130. package/dist/cli/chunks/{chunk-RLLDZNLF.js → chunk-U635PSAW.js} +2 -2
  131. package/dist/cli/chunks/{chunk-QZMBJ67L.js → chunk-UBT7VCKQ.js} +2 -2
  132. package/dist/cli/chunks/{chunk-R5ZKFJ3H.js → chunk-UETM5XDO.js} +1 -1
  133. package/dist/cli/chunks/{chunk-MUIJVPGB.js → chunk-URXG7FMO.js} +4 -3
  134. package/dist/cli/chunks/{chunk-VIIUJRKA.js → chunk-VIWDVS24.js} +2 -2
  135. package/dist/cli/chunks/{chunk-5HM66R4W.js → chunk-VNKCUKUJ.js} +3 -3
  136. package/dist/cli/chunks/{chunk-ZTI3BATG.js → chunk-VXIXHZCN.js} +2 -2
  137. package/dist/cli/chunks/{chunk-GYNGJHYF.js → chunk-WFEXEDMC.js} +2 -2
  138. package/dist/cli/chunks/{chunk-UEKDDUGV.js → chunk-WLX57ULC.js} +2 -2
  139. package/dist/cli/chunks/{chunk-ANLFEGDG.js → chunk-WVQZGLCT.js} +2 -2
  140. package/dist/cli/chunks/{chunk-2BSVGL35.js → chunk-WW5DZ6BU.js} +1 -1
  141. package/dist/cli/chunks/{chunk-4CSINHCB.js → chunk-X364AIY6.js} +1 -1
  142. package/dist/cli/chunks/{chunk-3FAEM5M7.js → chunk-XH7D6EGE.js} +1 -1
  143. package/dist/cli/chunks/{chunk-NQ3WHTLT.js → chunk-XICRAXUR.js} +4 -4
  144. package/dist/cli/chunks/{chunk-WZR4CKR4.js → chunk-XMAV7AIC.js} +1 -1
  145. package/dist/cli/chunks/{chunk-2O3WZ6E3.js → chunk-XSUPK7FI.js} +1 -1
  146. package/dist/cli/chunks/{chunk-QQLQEQJM.js → chunk-XSWOB74I.js} +2 -2
  147. package/dist/cli/chunks/chunk-YPIZMTTA.js +14 -0
  148. package/dist/cli/chunks/{chunk-3XR7ARS6.js → chunk-YT6KBEXE.js} +2 -2
  149. package/dist/cli/chunks/{chunk-VWHALAEO.js → chunk-ZENLP5LF.js} +1 -1
  150. package/dist/cli/chunks/{ci-4QYE6JBM.js → ci-WS32HBBS.js} +2 -2
  151. package/dist/cli/chunks/{ci-output-MV75HUK7.js → ci-output-67R5MSLL.js} +2 -2
  152. package/dist/cli/chunks/circuit-breaker-MA562FT7.js +2 -0
  153. package/dist/cli/chunks/{claude-flow-setup-CZITY7SG.js → claude-flow-setup-4QKGSRS7.js} +2 -2
  154. package/dist/cli/chunks/client-XQGZKXOB.js +2 -0
  155. package/dist/cli/chunks/{cline-installer-ZLQKCPFF.js → cline-installer-6VSROHRY.js} +2 -2
  156. package/dist/cli/chunks/{code-NYEXOJVP.js → code-FBPBHVV3.js} +2 -2
  157. package/dist/cli/chunks/{code-index-extractor-TITXUC44.js → code-index-extractor-62F622V2.js} +2 -2
  158. package/dist/cli/chunks/{codex-installer-TWT4LIL2.js → codex-installer-LSR6DVCU.js} +2 -2
  159. package/dist/cli/chunks/{completions-2KNV2MZG.js → completions-56QOICBN.js} +2 -2
  160. package/dist/cli/chunks/{complexity-analyzer-2U3OVRDX.js → complexity-analyzer-SDH4NWIS.js} +2 -2
  161. package/dist/cli/chunks/{continuedev-installer-BWQBRVTC.js → continuedev-installer-S7ZPL3VC.js} +2 -2
  162. package/dist/cli/chunks/{copilot-installer-CYN33NMG.js → copilot-installer-25GNNKNL.js} +2 -2
  163. package/dist/cli/chunks/{cost-tracker-2GUCBYLK.js → cost-tracker-73J4Y2RS.js} +2 -2
  164. package/dist/cli/chunks/{coverage-BAVD66VL.js → coverage-WEE2AZ5F.js} +3 -3
  165. package/dist/cli/chunks/cross-domain-router-C2ZFCSXJ.js +2 -0
  166. package/dist/cli/chunks/{cursor-installer-ZQAUD47B.js → cursor-installer-DHQ644T3.js} +2 -2
  167. package/dist/cli/chunks/{daemon-VY2LZPIM.js → daemon-3WUJ5E3X.js} +3 -3
  168. package/dist/cli/chunks/{dag-attention-scheduler-JNQWWXSW.js → dag-attention-scheduler-IRLAM43H.js} +2 -2
  169. package/dist/cli/chunks/{detect-Y7BBW4LI.js → detect-DTSB4T4R.js} +2 -2
  170. package/dist/cli/chunks/{domain-handler-473WNSR2.js → domain-handler-DDN2Z5XC.js} +2 -2
  171. package/dist/cli/chunks/{domain-transfer-R4VK7CRR.js → domain-transfer-3RRG4S6R.js} +2 -2
  172. package/dist/cli/chunks/dream-JSZZ67OO.js +2 -0
  173. package/dist/cli/chunks/esm-node-X4TES6NX.js +2 -0
  174. package/dist/cli/chunks/{eval-TJAZGRCM.js → eval-UXEP425X.js} +2 -2
  175. package/dist/cli/chunks/{fast-paths-LMN542IB.js → fast-paths-4XLHS2VN.js} +2 -2
  176. package/dist/cli/chunks/{feature-flags-IMFZ7KED.js → feature-flags-6C2HD76K.js} +2 -2
  177. package/dist/cli/chunks/{feature-flags-WMXIDTXL.js → feature-flags-KXXHAEYF.js} +2 -2
  178. package/dist/cli/chunks/{file-discovery-GXXWQJV3.js → file-discovery-YSDUIZO4.js} +2 -2
  179. package/dist/cli/chunks/{fleet-WIC7RHJV.js → fleet-TYDG5DWK.js} +3 -3
  180. package/dist/cli/chunks/{gnn-wrapper-PVKCXV25.js → gnn-wrapper-GJVYRPHB.js} +2 -2
  181. package/dist/cli/chunks/{heartbeat-handler-BJ6ZZP7Q.js → heartbeat-handler-X63CM35O.js} +4 -4
  182. package/dist/cli/chunks/{heartbeat-scheduler-3SQXTFYU.js → heartbeat-scheduler-NYH4CMVM.js} +2 -2
  183. package/dist/cli/chunks/hnsw-adapter-SQCVEHB5.js +2 -0
  184. package/dist/cli/chunks/hnsw-index-UGVC5IDK.js +2 -0
  185. package/dist/cli/chunks/{hnsw-legacy-bridge-23HFWIPK.js → hnsw-legacy-bridge-YDVUZTJI.js} +2 -2
  186. package/dist/cli/chunks/{hnswlib-node-4GRFMUPD.js → hnswlib-node-TLBDFWA6.js} +2 -2
  187. package/dist/cli/chunks/{hooks-IXH5454I.js → hooks-B6PVGP7D.js} +6 -6
  188. package/dist/cli/chunks/hybrid-router-YZEBKUZJ.js +2 -0
  189. package/dist/cli/chunks/{hypergraph-engine-TEQMJFJJ.js → hypergraph-engine-OQ2ZEG53.js} +2 -2
  190. package/dist/cli/chunks/{hypergraph-handler-3ECUWIG3.js → hypergraph-handler-VPD424MI.js} +3 -3
  191. package/dist/cli/chunks/impact-analyzer-ZIXSRWED.js +2 -0
  192. package/dist/cli/chunks/{init-handler-TZRKW3NZ.js → init-handler-5WYP6NJW.js} +6 -6
  193. package/dist/cli/chunks/init-wizard-MO6PCXPX.js +2 -0
  194. package/dist/cli/chunks/kernel-P54KQB2F.js +2 -0
  195. package/dist/cli/chunks/{kilocode-installer-IPH3O3ZS.js → kilocode-installer-YVY4EVMY.js} +2 -2
  196. package/dist/cli/chunks/{kiro-installer-VROMOOQO.js → kiro-installer-GNT4BN3A.js} +2 -2
  197. package/dist/cli/chunks/knowledge-graph-GU57FQAQ.js +2 -0
  198. package/dist/cli/chunks/{learning-JYQLD66S.js → learning-LD2RSBRS.js} +3 -3
  199. package/dist/cli/chunks/llm-router-ALKXFKLQ.js +36 -0
  200. package/dist/cli/chunks/{load-DMAQB4NC.js → load-XAOTGZYB.js} +2 -2
  201. package/dist/cli/chunks/load-test-5RFBTSS7.js +2 -0
  202. package/dist/cli/chunks/{mcp-K6CSUBMU.js → mcp-WDAJHGH4.js} +2 -2
  203. package/dist/cli/chunks/{memory-5BSXKHSK.js → memory-M7QD57JD.js} +5 -5
  204. package/dist/cli/chunks/memory-backend-GPOP3IR4.js +2 -0
  205. package/dist/cli/chunks/memory-handlers-2NHGZLQM.js +2 -0
  206. package/dist/cli/chunks/multi-model-executor-2XZQK2IN.js +14 -0
  207. package/dist/cli/chunks/{opencode-installer-IUWO2QV6.js → opencode-installer-ASCVY3GG.js} +2 -2
  208. package/dist/cli/chunks/{orchestrator-Z2EM76CR.js → orchestrator-GOZICWN3.js} +6 -6
  209. package/dist/cli/chunks/{pipeline-OL5SI2RI.js → pipeline-YHQRJWV3.js} +2 -2
  210. package/dist/cli/chunks/{platform-VNJIKIHZ.js → platform-4NESYFHN.js} +2 -2
  211. package/dist/cli/chunks/{plugin-SJJUE47D.js → plugin-E24I2RVB.js} +2 -2
  212. package/dist/cli/chunks/{prime-radiant-advanced-wasm-ZLVTCNSH.js → prime-radiant-advanced-wasm-CDVSLR7R.js} +2 -2
  213. package/dist/cli/chunks/protocol-executor-M5IONISJ.js +2 -0
  214. package/dist/cli/chunks/{protocol-handler-HTX44YTW.js → protocol-handler-TGTDKSZB.js} +2 -2
  215. package/dist/cli/chunks/{prove-MGFLVZNS.js → prove-WUKDAMSE.js} +2 -2
  216. package/dist/cli/chunks/provider-manager-BTKK6W7M.js +24 -0
  217. package/dist/cli/chunks/qe-reasoning-bank-WIEXCBVE.js +2 -0
  218. package/dist/cli/chunks/{quality-FMFKPICZ.js → quality-RTIOIS2K.js} +2 -2
  219. package/dist/cli/chunks/queen-coordinator-ZFK6DANW.js +2 -0
  220. package/dist/cli/chunks/{real-embeddings-2BMEEOA2.js → real-embeddings-4JJKAEMO.js} +2 -2
  221. package/dist/cli/chunks/{roocode-installer-2PA3B5JI.js → roocode-installer-XU2IXRBM.js} +2 -2
  222. package/dist/cli/chunks/router-TOFBEI2Q.js +2 -0
  223. package/dist/cli/chunks/routing-feedback-RC2VDP6W.js +2 -0
  224. package/dist/cli/chunks/{routing-handler-SNGSQ757.js → routing-handler-3KBOCIEN.js} +2 -2
  225. package/dist/cli/chunks/{ruvector-commands-54MYLF63.js → ruvector-commands-HHE2ZPX7.js} +2 -2
  226. package/dist/cli/chunks/{rvf-dual-writer-6Q44XJOJ.js → rvf-dual-writer-GAWM2BUZ.js} +2 -2
  227. package/dist/cli/chunks/{rvf-migration-adapter-JECN625C.js → rvf-migration-adapter-HQPEC4BN.js} +2 -2
  228. package/dist/cli/chunks/{rvf-migration-coordinator-MEAVIHQY.js → rvf-migration-coordinator-A4K45EFU.js} +2 -2
  229. package/dist/cli/chunks/rvf-native-adapter-ZOQDH3JY.js +2 -0
  230. package/dist/cli/chunks/safe-db-RIP3X32S.js +2 -0
  231. package/dist/cli/chunks/schedule-Q6KZRLWS.js +2 -0
  232. package/dist/cli/chunks/scheduler-SJO5QPAU.js +2 -0
  233. package/dist/cli/chunks/{security-CXLXTNIV.js → security-UIKUNOXB.js} +3 -3
  234. package/dist/cli/chunks/shared-rvf-adapter-JJCR3AWU.js +2 -0
  235. package/dist/cli/chunks/{shared-rvf-dual-writer-SOQDKE6S.js → shared-rvf-dual-writer-ZUWSLFPH.js} +2 -2
  236. package/dist/cli/chunks/sqlite-persistence-HK2S6XAI.js +2 -0
  237. package/dist/cli/chunks/{status-handler-NNEF4SQV.js → status-handler-E3VSWGA6.js} +2 -2
  238. package/dist/cli/chunks/{structural-health-FY6QIA55.js → structural-health-Y22H4BOU.js} +2 -2
  239. package/dist/cli/chunks/{sync-2QMSZ67Q.js → sync-CA4KWZFS.js} +2 -2
  240. package/dist/cli/chunks/{task-handler-GZJPE2QW.js → task-handler-3EZPIAMD.js} +2 -2
  241. package/dist/cli/chunks/task-handlers-6UVAQAGP.js +2 -0
  242. package/dist/cli/chunks/{test-JVA2S2R2.js → test-Q5DOFSJI.js} +4 -4
  243. package/dist/cli/chunks/{test-scheduling-PRMP4H6X.js → test-scheduling-BSXWCIMQ.js} +3 -3
  244. package/dist/cli/chunks/token-bootstrap-XGEZU2CS.js +2 -0
  245. package/dist/cli/chunks/{token-usage-G73L32OF.js → token-usage-BZX5TCG6.js} +2 -2
  246. package/dist/cli/chunks/{transformers-U3TSLEGO.js → transformers-7ITQPXAU.js} +2 -2
  247. package/dist/cli/chunks/{tree-sitter-wasm-parser-QXP2MNSX.js → tree-sitter-wasm-parser-ZYBBNYR3.js} +2 -2
  248. package/dist/cli/chunks/{types-BIQ7O5VR.js → types-ACZ5VVRC.js} +2 -2
  249. package/dist/cli/chunks/unified-memory-EXO6WK33.js +2 -0
  250. package/dist/cli/chunks/unified-memory-hnsw-7HPSTFVV.js +2 -0
  251. package/dist/cli/chunks/unified-persistence-WC3O4WOJ.js +2 -0
  252. package/dist/cli/chunks/{validate-CTBEA4BZ.js → validate-IQL6OVXD.js} +2 -2
  253. package/dist/cli/chunks/{validate-swarm-PHT6XW3A.js → validate-swarm-J52J2K5X.js} +2 -2
  254. package/dist/cli/chunks/{vibium-CRCYAH3V.js → vibium-XSE76PXE.js} +2 -2
  255. package/dist/cli/chunks/visual-security-COW3OCEE.js +2 -0
  256. package/dist/cli/chunks/{web-tree-sitter-2MH3G7K7.js → web-tree-sitter-YM6QXUIY.js} +2 -2
  257. package/dist/cli/chunks/{windsurf-installer-LBRNYFSI.js → windsurf-installer-M27DVL4H.js} +2 -2
  258. package/dist/cli/chunks/{witness-chain-HNFQLO7Q.js → witness-chain-NB5LP73S.js} +2 -2
  259. package/dist/cli/chunks/witness-chain-XQXF3RSP.js +2 -0
  260. package/dist/cli/chunks/{workflow-DNAF6BQ2.js → workflow-5DODQ6XS.js} +4 -4
  261. package/dist/cli/chunks/workflow-orchestrator-HSIZEKZM.js +2 -0
  262. package/dist/cli/chunks/{wrappers-U7AO6ZZN.js → wrappers-K7HHCIYD.js} +2 -2
  263. package/dist/cli/commands/llm-router.js +252 -0
  264. package/dist/coordination/queen-task-management.js +8 -1
  265. package/dist/init/init-wizard-steps.js +9 -0
  266. package/dist/init/phases/12-verification.js +8 -0
  267. package/dist/kernel/unified-memory-schemas.d.ts +1 -1
  268. package/dist/kernel/unified-memory-schemas.js +2 -1
  269. package/dist/mcp/bundle.js +47 -44
  270. package/dist/mcp/protocol-server.js +87 -0
  271. package/dist/routing/advisor/circuit-breaker.d.ts +56 -0
  272. package/dist/routing/advisor/circuit-breaker.js +128 -0
  273. package/dist/routing/advisor/domain-prompts.d.ts +14 -0
  274. package/dist/routing/advisor/domain-prompts.js +53 -0
  275. package/dist/routing/advisor/index.d.ts +10 -0
  276. package/dist/routing/advisor/index.js +9 -0
  277. package/dist/routing/advisor/multi-model-executor.d.ts +60 -0
  278. package/dist/routing/advisor/multi-model-executor.js +176 -0
  279. package/dist/routing/advisor/redaction.d.ts +40 -0
  280. package/dist/routing/advisor/redaction.js +187 -0
  281. package/dist/routing/advisor/types.d.ts +101 -0
  282. package/dist/routing/advisor/types.js +9 -0
  283. package/dist/routing/queen-integration.d.ts +3 -0
  284. package/dist/routing/queen-integration.js +7 -1
  285. package/dist/routing/routing-feedback.d.ts +7 -1
  286. package/dist/routing/routing-feedback.js +57 -11
  287. package/dist/routing/tiny-dancer-router.d.ts +35 -1
  288. package/dist/routing/tiny-dancer-router.js +33 -0
  289. package/dist/routing/types.d.ts +12 -0
  290. package/package.json +1 -1
  291. package/dist/cli/chunks/adapter-XKXEZEMM.js +0 -2
  292. package/dist/cli/chunks/aqe-learning-engine-K7XGBDMZ.js +0 -2
  293. package/dist/cli/chunks/base-NUF35LIJ.js +0 -2
  294. package/dist/cli/chunks/browser-workflow-MWPELXFA.js +0 -2
  295. package/dist/cli/chunks/chunk-ENG5UF7M.js +0 -7
  296. package/dist/cli/chunks/chunk-NVVF5ROM.js +0 -14
  297. package/dist/cli/chunks/chunk-VRH3YLO2.js +0 -2
  298. package/dist/cli/chunks/client-VXVVUQDV.js +0 -2
  299. package/dist/cli/chunks/cross-domain-router-HUJG6CFC.js +0 -2
  300. package/dist/cli/chunks/dream-QQDRI2EQ.js +0 -2
  301. package/dist/cli/chunks/esm-node-Y3HIFLTX.js +0 -2
  302. package/dist/cli/chunks/hnsw-adapter-VKS7ORL2.js +0 -2
  303. package/dist/cli/chunks/hnsw-index-GPUBY6EQ.js +0 -2
  304. package/dist/cli/chunks/impact-analyzer-D6MBGRKX.js +0 -2
  305. package/dist/cli/chunks/init-wizard-S6P2MFJF.js +0 -2
  306. package/dist/cli/chunks/kernel-EFDDMNXJ.js +0 -2
  307. package/dist/cli/chunks/knowledge-graph-4PM4DFH3.js +0 -2
  308. package/dist/cli/chunks/llm-router-CIICNICY.js +0 -30
  309. package/dist/cli/chunks/load-test-PPSWF3TO.js +0 -2
  310. package/dist/cli/chunks/memory-backend-3E6BA2JU.js +0 -2
  311. package/dist/cli/chunks/memory-handlers-APOLXPNH.js +0 -2
  312. package/dist/cli/chunks/protocol-executor-2RD52J5J.js +0 -2
  313. package/dist/cli/chunks/qe-reasoning-bank-OGKT52EN.js +0 -2
  314. package/dist/cli/chunks/queen-coordinator-B63YXNI6.js +0 -2
  315. package/dist/cli/chunks/router-NDQCJQC6.js +0 -2
  316. package/dist/cli/chunks/routing-feedback-PSN2RLDO.js +0 -2
  317. package/dist/cli/chunks/rvf-native-adapter-F56HQKLS.js +0 -2
  318. package/dist/cli/chunks/safe-db-LMRMNROL.js +0 -2
  319. package/dist/cli/chunks/schedule-OZSUYPPC.js +0 -2
  320. package/dist/cli/chunks/scheduler-GFXCQ6ZA.js +0 -2
  321. package/dist/cli/chunks/shared-rvf-adapter-RZPF4WWK.js +0 -2
  322. package/dist/cli/chunks/sqlite-persistence-VP67CJPK.js +0 -2
  323. package/dist/cli/chunks/task-handlers-AHM37D4I.js +0 -2
  324. package/dist/cli/chunks/token-bootstrap-YJEHCBV2.js +0 -2
  325. package/dist/cli/chunks/unified-memory-JB4KPMPI.js +0 -2
  326. package/dist/cli/chunks/unified-memory-hnsw-RPSZZIWP.js +0 -2
  327. package/dist/cli/chunks/unified-persistence-L23T4C5C.js +0 -2
  328. package/dist/cli/chunks/visual-security-F2I524IQ.js +0 -2
  329. package/dist/cli/chunks/witness-chain-CN6FCWRY.js +0 -2
  330. package/dist/cli/chunks/workflow-orchestrator-JJBCCNYI.js +0 -2
@@ -35,6 +35,8 @@ Examples:
35
35
  $ aqe llm config --set mode=cost-optimized
36
36
  $ aqe llm health Check provider health
37
37
  $ aqe llm cost claude-sonnet-4 --tokens 10000
38
+ $ aqe llm advise --transcript t.json --json Consult advisor (ADR-092)
39
+ $ aqe llm verify --session <id> Check advisor quality gate
38
40
  `);
39
41
  // llm providers
40
42
  llmCmd
@@ -95,6 +97,35 @@ Examples:
95
97
  .action(async (model, options) => {
96
98
  await executeCost(model, options);
97
99
  });
100
+ // llm verify (ADR-092 Phase 3 — quality gate enforcement)
101
+ llmCmd
102
+ .command('verify')
103
+ .description('Check whether an advisor was consulted for a session (ADR-092 quality gate)')
104
+ .requiredOption('--session <id>', 'Session ID to check')
105
+ .option('--min-calls <n>', 'Minimum required advisor calls (default: 1)', '1')
106
+ .option('--json', 'Output as JSON')
107
+ .action(async (options) => {
108
+ await executeVerify(options);
109
+ });
110
+ // llm advise (ADR-092)
111
+ llmCmd
112
+ .command('advise')
113
+ .description('Consult an advisor model on a forwarded transcript (ADR-092)')
114
+ .option('--transcript <path>', 'Path to a transcript JSON file')
115
+ .option('--session <id>', 'Claude Code session ID (reads JSONL from disk)')
116
+ .option('--stdin', 'Read transcript JSON from stdin')
117
+ .option('--provider <name>', 'Advisor provider (default: openrouter)')
118
+ .option('--model <id>', 'Advisor model ID (default: anthropic/claude-opus-4)')
119
+ .option('--max-words <n>', 'Max advice length in words', '100')
120
+ .option('--agent <name>', 'Agent invoking the advisor (for audit)')
121
+ .option('--trigger-reason <text>', 'Why the advisor is being called')
122
+ .option('--redact <mode>', 'Redaction mode: strict|balanced|off (default: strict)', 'strict')
123
+ .option('--advisor-prompt <text>', 'Domain-specific advisor system prompt (overrides default)')
124
+ .option('--json', 'Emit structured JSON to stdout (default)')
125
+ .option('--quiet', 'Suppress status messages')
126
+ .action(async (options) => {
127
+ await executeAdvise(options);
128
+ });
98
129
  return llmCmd;
99
130
  }
100
131
  // ============================================================================
@@ -458,4 +489,225 @@ function findModel(modelId) {
458
489
  }
459
490
  return undefined;
460
491
  }
492
+ // ============================================================================
493
+ // `aqe llm advise` — ADR-092 Phase 0
494
+ // ============================================================================
495
+ /**
496
+ * Read a transcript from one of three sources (--transcript, --session, --stdin).
497
+ * Phase 0 supports --transcript (JSON file) and --stdin; --session is Phase 1+.
498
+ */
499
+ async function loadTranscript(options) {
500
+ const { readFile } = await import('fs/promises');
501
+ if (options.transcript) {
502
+ const raw = await readFile(options.transcript, 'utf-8');
503
+ const parsed = JSON.parse(raw);
504
+ if (!parsed.messages || !Array.isArray(parsed.messages)) {
505
+ throw new Error(`Transcript file must contain a 'messages' array: ${options.transcript}`);
506
+ }
507
+ return {
508
+ systemPrompt: parsed.systemPrompt,
509
+ taskDescription: parsed.taskDescription,
510
+ messages: parsed.messages,
511
+ };
512
+ }
513
+ if (options.stdin) {
514
+ const chunks = [];
515
+ for await (const chunk of process.stdin) {
516
+ chunks.push(Buffer.from(chunk));
517
+ }
518
+ const raw = Buffer.concat(chunks).toString('utf-8');
519
+ const parsed = JSON.parse(raw);
520
+ if (!parsed.messages || !Array.isArray(parsed.messages)) {
521
+ throw new Error('Transcript from stdin must contain a `messages` array');
522
+ }
523
+ return {
524
+ systemPrompt: parsed.systemPrompt,
525
+ taskDescription: parsed.taskDescription,
526
+ messages: parsed.messages,
527
+ };
528
+ }
529
+ if (options.session) {
530
+ const { readFile, readdir } = await import('fs/promises');
531
+ const { join } = await import('path');
532
+ const os = await import('os');
533
+ const projectsDir = join(os.homedir(), '.claude', 'projects');
534
+ let jsonlPath = null;
535
+ try {
536
+ const encodedDirs = await readdir(projectsDir);
537
+ for (const dir of encodedDirs) {
538
+ const sessionsDir = join(projectsDir, dir);
539
+ const files = await readdir(sessionsDir).catch(() => []);
540
+ const match = files.find(f => f.includes(options.session) && f.endsWith('.jsonl'));
541
+ if (match) {
542
+ jsonlPath = join(sessionsDir, match);
543
+ break;
544
+ }
545
+ }
546
+ }
547
+ catch { /* projects dir doesn't exist */ }
548
+ if (!jsonlPath) {
549
+ throw new Error(`Could not find session JSONL for session ID "${options.session}" ` +
550
+ `in ~/.claude/projects/. Use --transcript <path> as fallback.`);
551
+ }
552
+ const raw = await readFile(jsonlPath, 'utf-8');
553
+ const lines = raw.trim().split('\n').filter(Boolean);
554
+ const messages = [];
555
+ for (const line of lines) {
556
+ try {
557
+ const entry = JSON.parse(line);
558
+ const entryType = entry.type;
559
+ const msg = entry.message;
560
+ if (!msg)
561
+ continue;
562
+ const role = msg.role;
563
+ const rawContent = msg.content;
564
+ if (entryType === 'user' && role === 'user') {
565
+ const text = typeof rawContent === 'string' ? rawContent
566
+ : Array.isArray(rawContent) ? rawContent.map((b) => b.text ?? '').join('')
567
+ : '';
568
+ if (text.trim())
569
+ messages.push({ role: 'user', content: text });
570
+ }
571
+ else if (entryType === 'assistant' && role === 'assistant') {
572
+ const text = typeof rawContent === 'string' ? rawContent
573
+ : Array.isArray(rawContent)
574
+ ? rawContent
575
+ .filter((b) => b.type === 'text')
576
+ .map((b) => b.text ?? '')
577
+ .join('')
578
+ : '';
579
+ if (text.trim())
580
+ messages.push({ role: 'assistant', content: text });
581
+ }
582
+ }
583
+ catch { /* skip unparseable lines */ }
584
+ }
585
+ if (messages.length === 0) {
586
+ throw new Error(`Session JSONL at ${jsonlPath} contained no parseable messages.`);
587
+ }
588
+ return { messages };
589
+ }
590
+ throw new Error('aqe llm advise requires one of: --transcript <path>, --stdin, --session <id>');
591
+ }
592
+ async function executeAdvise(options) {
593
+ const useJson = options.json !== false; // default true
594
+ const quiet = options.quiet ?? false;
595
+ try {
596
+ const transcript = await loadTranscript(options);
597
+ if (!quiet && !useJson) {
598
+ console.log(chalk.gray('Consulting advisor...'));
599
+ }
600
+ // Lazy-load to keep CLI cold-start fast when advise is not used
601
+ const { createProviderManager } = await import('../../shared/llm/provider-manager.js');
602
+ const { createHybridRouter } = await import('../../shared/llm/router/hybrid-router.js');
603
+ const { MultiModelExecutor, DEFAULT_ADVISOR_PROVIDER, DEFAULT_ADVISOR_MODEL } = await import('../../routing/advisor/multi-model-executor.js');
604
+ const provider = (options.provider ?? DEFAULT_ADVISOR_PROVIDER);
605
+ const model = options.model ?? DEFAULT_ADVISOR_MODEL;
606
+ // Phase 0: bootstrap a minimal ProviderManager + HybridRouter for the advisor call.
607
+ // Phase 1+ reuses a shared router from the AQE kernel.
608
+ const providerManager = createProviderManager({
609
+ primary: provider === 'openrouter' ? 'openrouter' : provider,
610
+ providers: {
611
+ openrouter: {
612
+ apiKey: process.env.OPENROUTER_API_KEY,
613
+ model,
614
+ },
615
+ },
616
+ });
617
+ const router = createHybridRouter(providerManager, {
618
+ mode: 'manual',
619
+ defaultProvider: provider,
620
+ defaultModel: model,
621
+ });
622
+ await router.initialize();
623
+ const executor = new MultiModelExecutor(router);
624
+ const redactMode = (options.redact ?? 'strict');
625
+ const result = await executor.consult(transcript, {
626
+ provider,
627
+ model,
628
+ maxWords: options.maxWords ? parseInt(options.maxWords, 10) : undefined,
629
+ agentName: options.agent,
630
+ triggerReason: options.triggerReason ?? 'cli',
631
+ sessionId: options.session ?? 'cli-' + Date.now(),
632
+ redact: redactMode,
633
+ advisorSystemPrompt: options.advisorPrompt,
634
+ });
635
+ if (useJson) {
636
+ console.log(JSON.stringify({
637
+ advice: result.advice,
638
+ model: result.model,
639
+ provider: result.provider,
640
+ tokens_in: result.tokensIn,
641
+ tokens_out: result.tokensOut,
642
+ latency_ms: result.latencyMs,
643
+ cost_usd: result.costUsd,
644
+ advice_hash: result.adviceHash,
645
+ trigger_reason: result.triggerReason,
646
+ cache_hit: result.cacheHit,
647
+ redaction_applied: result.redactionsApplied.length > 0,
648
+ redactions: result.redactionsApplied,
649
+ circuit_breaker_remaining: result.circuitBreakerRemaining,
650
+ }, null, 2));
651
+ }
652
+ else {
653
+ console.log(chalk.bold.cyan('\nAdvisor Response\n'));
654
+ console.log(result.advice);
655
+ console.log();
656
+ console.log(chalk.gray(`(${result.provider}/${result.model}, ${result.tokensIn}→${result.tokensOut} tokens, ` +
657
+ `${result.latencyMs}ms, $${result.costUsd.toFixed(4)})`));
658
+ }
659
+ process.exit(0);
660
+ }
661
+ catch (err) {
662
+ const message = err instanceof Error ? err.message : String(err);
663
+ const exitCode = err?.exitCode ?? 1;
664
+ if (useJson) {
665
+ console.error(JSON.stringify({ error: message, exit_code: exitCode }, null, 2));
666
+ }
667
+ else {
668
+ console.error(chalk.red(`Error: ${message}`));
669
+ }
670
+ process.exit(exitCode);
671
+ }
672
+ }
673
+ // ============================================================================
674
+ // `aqe llm verify` — ADR-092 Phase 3 quality gate
675
+ // ============================================================================
676
+ async function executeVerify(options) {
677
+ const useJson = options.json ?? false;
678
+ const minCalls = parseInt(options.minCalls ?? '1', 10);
679
+ try {
680
+ const { AdvisorCircuitBreaker } = await import('../../routing/advisor/circuit-breaker.js');
681
+ const breaker = new AdvisorCircuitBreaker();
682
+ const state = breaker.getState(options.session);
683
+ const passed = state.callCount >= minCalls;
684
+ const result = {
685
+ session: options.session,
686
+ advisor_calls: state.callCount,
687
+ required: minCalls,
688
+ gate: passed ? 'PASS' : 'FAIL',
689
+ };
690
+ if (useJson) {
691
+ console.log(JSON.stringify(result, null, 2));
692
+ }
693
+ else {
694
+ const icon = passed ? chalk.green('PASS') : chalk.red('FAIL');
695
+ console.log(`\nAdvisor Quality Gate: ${icon}`);
696
+ console.log(` Session: ${options.session}`);
697
+ console.log(` Advisor calls: ${state.callCount}`);
698
+ console.log(` Required: ≥${minCalls}`);
699
+ }
700
+ process.exit(passed ? 0 : 7);
701
+ }
702
+ catch (err) {
703
+ const message = err instanceof Error ? err.message : String(err);
704
+ if (useJson) {
705
+ console.error(JSON.stringify({ error: message }, null, 2));
706
+ }
707
+ else {
708
+ console.error(chalk.red(`Error: ${message}`));
709
+ }
710
+ process.exit(1);
711
+ }
712
+ }
461
713
  //# sourceMappingURL=llm-router.js.map
@@ -206,7 +206,14 @@ export async function assignTaskToDomain(ctx, task, domain) {
206
206
  }
207
207
  // Spawn an agent for this task if needed, using TinyDancer-recommended tier
208
208
  const agentType = routeDecision?.tier || 'task-worker';
209
- const spawnResult = await ctx.requestAgentSpawn(domain, agentType, ['task-execution', task.type, ...(routeDecision ? [`model:${routeDecision.model}`] : [])]);
209
+ const spawnCapabilities = [
210
+ 'task-execution', task.type,
211
+ ...(routeDecision ? [`model:${routeDecision.model}`] : []),
212
+ // ADR-092: surface advisor trigger signal to spawned agent so the executor
213
+ // preamble can instruct it to call `aqe llm advise` before substantive work
214
+ ...(routeDecision?.triggerMultiModel ? ['advisor:triggerMultiModel'] : []),
215
+ ];
216
+ const spawnResult = await ctx.requestAgentSpawn(domain, agentType, spawnCapabilities);
210
217
  const agentIds = [];
211
218
  if (spawnResult.success) {
212
219
  agentIds.push(spawnResult.value);
@@ -492,6 +492,15 @@ export function configToYAML(config) {
492
492
  lines.push(` confidenceThreshold: ${config.routing.confidenceThreshold}`);
493
493
  lines.push(` feedbackEnabled: ${config.routing.feedbackEnabled}`);
494
494
  lines.push('');
495
+ // ADR-092: Advisor Strategy Configuration
496
+ lines.push('# ADR-092: Advisor Strategy — agents consult a stronger model for strategic guidance');
497
+ lines.push('# Set provider/model to override auto-detection from environment API keys');
498
+ lines.push('advisor:');
499
+ lines.push(' # provider: "openrouter" # openrouter | claude | ollama (auto-detected if not set)');
500
+ lines.push(' # model: "anthropic/claude-opus-4" # provider-specific model ID');
501
+ lines.push(' # maxUses: "3" # per-task advisor call cap');
502
+ lines.push(' redact: "strict" # strict | balanced | off');
503
+ lines.push('');
495
504
  lines.push('workers:');
496
505
  lines.push(' enabled:');
497
506
  for (const worker of config.workers.enabled) {
@@ -349,6 +349,14 @@ export class VerificationPhase extends BasePhase {
349
349
  ` confidenceThreshold: ${config.routing.confidenceThreshold}`,
350
350
  ` feedbackEnabled: ${config.routing.feedbackEnabled}`,
351
351
  '',
352
+ '# ADR-092: Advisor Strategy — agents consult a stronger model for strategic guidance',
353
+ '# Set provider/model to override auto-detection from environment API keys',
354
+ 'advisor:',
355
+ ' # provider: "openrouter" # openrouter | claude | ollama (auto-detected if not set)',
356
+ ' # model: "anthropic/claude-opus-4" # provider-specific model ID',
357
+ ' # maxUses: "3" # per-task advisor call cap',
358
+ ' redact: "strict" # strict | balanced | off',
359
+ '',
352
360
  'workers:',
353
361
  ' enabled:',
354
362
  ...config.workers.enabled.map(w => ` - "${w}"`),
@@ -17,6 +17,6 @@ export declare const QE_PATTERNS_SCHEMA = "\n -- QE Patterns table (unified fro
17
17
  export declare const MINCUT_SCHEMA = "\n -- MinCut Graph Snapshots (ADR-047)\n CREATE TABLE IF NOT EXISTS mincut_snapshots (\n id TEXT PRIMARY KEY,\n timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n vertex_count INTEGER NOT NULL,\n edge_count INTEGER NOT NULL,\n total_weight REAL NOT NULL DEFAULT 0.0,\n is_connected INTEGER NOT NULL DEFAULT 1,\n component_count INTEGER NOT NULL DEFAULT 1,\n vertices_json TEXT NOT NULL,\n edges_json TEXT NOT NULL,\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- MinCut History (time-series MinCut values)\n CREATE TABLE IF NOT EXISTS mincut_history (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n mincut_value REAL NOT NULL,\n vertex_count INTEGER NOT NULL,\n edge_count INTEGER NOT NULL,\n algorithm TEXT NOT NULL DEFAULT 'weighted-degree',\n duration_ms INTEGER,\n snapshot_id TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n FOREIGN KEY (snapshot_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL\n );\n\n -- MinCut Weak Vertices (detected bottlenecks)\n CREATE TABLE IF NOT EXISTS mincut_weak_vertices (\n id TEXT PRIMARY KEY,\n vertex_id TEXT NOT NULL,\n weighted_degree REAL NOT NULL,\n risk_score REAL NOT NULL,\n reason TEXT NOT NULL,\n domain TEXT,\n vertex_type TEXT NOT NULL,\n suggestions_json TEXT,\n detected_at TEXT NOT NULL DEFAULT (datetime('now')),\n resolved_at TEXT,\n snapshot_id TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n FOREIGN KEY (snapshot_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL\n );\n\n -- MinCut Alerts\n CREATE TABLE IF NOT EXISTS mincut_alerts (\n id TEXT PRIMARY KEY,\n severity TEXT NOT NULL,\n message TEXT NOT NULL,\n mincut_value REAL NOT NULL,\n threshold REAL NOT NULL,\n affected_vertices_json TEXT,\n remediations_json TEXT,\n acknowledged INTEGER DEFAULT 0,\n acknowledged_at TEXT,\n acknowledged_by TEXT,\n timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- MinCut Healing Actions (self-healing history)\n CREATE TABLE IF NOT EXISTS mincut_healing_actions (\n id TEXT PRIMARY KEY,\n action_type TEXT NOT NULL,\n action_params_json TEXT NOT NULL,\n success INTEGER NOT NULL,\n mincut_before REAL NOT NULL,\n mincut_after REAL NOT NULL,\n improvement REAL NOT NULL DEFAULT 0.0,\n error_message TEXT,\n duration_ms INTEGER NOT NULL,\n triggered_by TEXT,\n snapshot_before_id TEXT,\n snapshot_after_id TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n FOREIGN KEY (snapshot_before_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL,\n FOREIGN KEY (snapshot_after_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL\n );\n\n -- MinCut Strange Loop Observations (P1: self-organizing)\n CREATE TABLE IF NOT EXISTS mincut_observations (\n id TEXT PRIMARY KEY,\n iteration INTEGER NOT NULL,\n mincut_value REAL NOT NULL,\n weak_vertex_count INTEGER NOT NULL DEFAULT 0,\n weak_vertices_json TEXT,\n snapshot_id TEXT,\n prediction_json TEXT,\n actual_vs_predicted_diff REAL,\n timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n FOREIGN KEY (snapshot_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL\n );\n\n -- MinCut Indexes\n CREATE INDEX IF NOT EXISTS idx_mincut_history_timestamp ON mincut_history(timestamp DESC);\n CREATE INDEX IF NOT EXISTS idx_mincut_history_value ON mincut_history(mincut_value);\n CREATE INDEX IF NOT EXISTS idx_mincut_weak_vertex ON mincut_weak_vertices(vertex_id);\n CREATE INDEX IF NOT EXISTS idx_mincut_weak_risk ON mincut_weak_vertices(risk_score DESC);\n CREATE INDEX IF NOT EXISTS idx_mincut_weak_resolved ON mincut_weak_vertices(resolved_at);\n CREATE INDEX IF NOT EXISTS idx_mincut_alerts_severity ON mincut_alerts(severity);\n CREATE INDEX IF NOT EXISTS idx_mincut_alerts_ack ON mincut_alerts(acknowledged);\n CREATE INDEX IF NOT EXISTS idx_mincut_healing_type ON mincut_healing_actions(action_type);\n CREATE INDEX IF NOT EXISTS idx_mincut_healing_success ON mincut_healing_actions(success);\n CREATE INDEX IF NOT EXISTS idx_mincut_observations_iter ON mincut_observations(iteration);\n";
18
18
  export declare const SONA_PATTERNS_SCHEMA = "\n -- SONA Patterns table (ADR-046: Pattern Persistence for Neural Backbone)\n CREATE TABLE IF NOT EXISTS sona_patterns (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL,\n domain TEXT NOT NULL,\n state_embedding BLOB,\n action_embedding BLOB,\n action_type TEXT NOT NULL,\n action_value TEXT,\n outcome_reward REAL NOT NULL DEFAULT 0.0,\n outcome_success INTEGER NOT NULL DEFAULT 0,\n outcome_quality REAL NOT NULL DEFAULT 0.0,\n confidence REAL DEFAULT 0.5,\n usage_count INTEGER DEFAULT 0,\n success_count INTEGER DEFAULT 0,\n failure_count INTEGER DEFAULT 0,\n metadata TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now')),\n last_used_at TEXT\n );\n CREATE INDEX IF NOT EXISTS idx_sona_patterns_type ON sona_patterns(type);\n CREATE INDEX IF NOT EXISTS idx_sona_patterns_domain ON sona_patterns(domain);\n CREATE INDEX IF NOT EXISTS idx_sona_patterns_confidence ON sona_patterns(confidence DESC);\n CREATE INDEX IF NOT EXISTS idx_sona_patterns_updated ON sona_patterns(updated_at DESC);\n";
19
19
  export declare const WITNESS_CHAIN_SCHEMA = "\n -- Witness Chain (ADR-070: Cryptographic audit trail for QE decisions)\n CREATE TABLE IF NOT EXISTS witness_chain (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n prev_hash TEXT NOT NULL,\n action_hash TEXT NOT NULL,\n action_type TEXT NOT NULL,\n action_data TEXT,\n timestamp TEXT NOT NULL,\n actor TEXT NOT NULL\n );\n CREATE INDEX IF NOT EXISTS idx_witness_action_type ON witness_chain(action_type);\n CREATE INDEX IF NOT EXISTS idx_witness_timestamp ON witness_chain(timestamp);\n";
20
- export declare const FEEDBACK_SCHEMA = "\n -- Test outcomes (ADR-023: Quality Feedback Loop)\n CREATE TABLE IF NOT EXISTS test_outcomes (\n id TEXT PRIMARY KEY,\n test_id TEXT NOT NULL,\n test_name TEXT NOT NULL,\n generated_by TEXT NOT NULL,\n pattern_id TEXT,\n framework TEXT NOT NULL,\n language TEXT NOT NULL,\n domain TEXT NOT NULL,\n passed INTEGER NOT NULL,\n error_message TEXT,\n coverage_lines REAL DEFAULT 0,\n coverage_branches REAL DEFAULT 0,\n coverage_functions REAL DEFAULT 0,\n mutation_score REAL,\n execution_time_ms REAL NOT NULL,\n flaky INTEGER DEFAULT 0,\n flakiness_score REAL,\n maintainability_score REAL NOT NULL,\n complexity REAL,\n lines_of_code INTEGER,\n assertion_count INTEGER,\n file_path TEXT,\n source_file_path TEXT,\n metadata_json TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n CREATE INDEX IF NOT EXISTS idx_test_outcomes_pattern ON test_outcomes(pattern_id);\n CREATE INDEX IF NOT EXISTS idx_test_outcomes_agent ON test_outcomes(generated_by);\n CREATE INDEX IF NOT EXISTS idx_test_outcomes_domain ON test_outcomes(domain);\n CREATE INDEX IF NOT EXISTS idx_test_outcomes_created ON test_outcomes(created_at);\n\n -- Routing outcomes (ADR-022: Adaptive QE Agent Routing)\n CREATE TABLE IF NOT EXISTS routing_outcomes (\n id TEXT PRIMARY KEY,\n task_json TEXT NOT NULL,\n decision_json TEXT NOT NULL,\n used_agent TEXT NOT NULL,\n followed_recommendation INTEGER NOT NULL,\n success INTEGER NOT NULL,\n quality_score REAL NOT NULL,\n duration_ms REAL NOT NULL,\n error TEXT,\n model_tier TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n CREATE INDEX IF NOT EXISTS idx_routing_outcomes_agent ON routing_outcomes(used_agent);\n CREATE INDEX IF NOT EXISTS idx_routing_outcomes_created ON routing_outcomes(created_at);\n CREATE INDEX IF NOT EXISTS idx_routing_outcomes_tier ON routing_outcomes(model_tier);\n\n -- Coverage sessions (ADR-023: Coverage Learning)\n CREATE TABLE IF NOT EXISTS coverage_sessions (\n id TEXT PRIMARY KEY,\n target_path TEXT NOT NULL,\n agent_id TEXT NOT NULL,\n technique TEXT NOT NULL,\n before_lines REAL DEFAULT 0,\n before_branches REAL DEFAULT 0,\n before_functions REAL DEFAULT 0,\n after_lines REAL DEFAULT 0,\n after_branches REAL DEFAULT 0,\n after_functions REAL DEFAULT 0,\n tests_generated INTEGER DEFAULT 0,\n tests_passed INTEGER DEFAULT 0,\n gaps_json TEXT,\n duration_ms REAL NOT NULL,\n started_at TEXT NOT NULL,\n completed_at TEXT NOT NULL,\n context_json TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n CREATE INDEX IF NOT EXISTS idx_coverage_sessions_technique ON coverage_sessions(technique);\n CREATE INDEX IF NOT EXISTS idx_coverage_sessions_agent ON coverage_sessions(agent_id);\n CREATE INDEX IF NOT EXISTS idx_coverage_sessions_created ON coverage_sessions(created_at);\n";
20
+ export declare const FEEDBACK_SCHEMA = "\n -- Test outcomes (ADR-023: Quality Feedback Loop)\n CREATE TABLE IF NOT EXISTS test_outcomes (\n id TEXT PRIMARY KEY,\n test_id TEXT NOT NULL,\n test_name TEXT NOT NULL,\n generated_by TEXT NOT NULL,\n pattern_id TEXT,\n framework TEXT NOT NULL,\n language TEXT NOT NULL,\n domain TEXT NOT NULL,\n passed INTEGER NOT NULL,\n error_message TEXT,\n coverage_lines REAL DEFAULT 0,\n coverage_branches REAL DEFAULT 0,\n coverage_functions REAL DEFAULT 0,\n mutation_score REAL,\n execution_time_ms REAL NOT NULL,\n flaky INTEGER DEFAULT 0,\n flakiness_score REAL,\n maintainability_score REAL NOT NULL,\n complexity REAL,\n lines_of_code INTEGER,\n assertion_count INTEGER,\n file_path TEXT,\n source_file_path TEXT,\n metadata_json TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n CREATE INDEX IF NOT EXISTS idx_test_outcomes_pattern ON test_outcomes(pattern_id);\n CREATE INDEX IF NOT EXISTS idx_test_outcomes_agent ON test_outcomes(generated_by);\n CREATE INDEX IF NOT EXISTS idx_test_outcomes_domain ON test_outcomes(domain);\n CREATE INDEX IF NOT EXISTS idx_test_outcomes_created ON test_outcomes(created_at);\n\n -- Routing outcomes (ADR-022: Adaptive QE Agent Routing, ADR-092: advisor_consultation_json)\n CREATE TABLE IF NOT EXISTS routing_outcomes (\n id TEXT PRIMARY KEY,\n task_json TEXT NOT NULL,\n decision_json TEXT NOT NULL,\n used_agent TEXT NOT NULL,\n followed_recommendation INTEGER NOT NULL,\n success INTEGER NOT NULL,\n quality_score REAL NOT NULL,\n duration_ms REAL NOT NULL,\n error TEXT,\n model_tier TEXT,\n advisor_consultation_json TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n CREATE INDEX IF NOT EXISTS idx_routing_outcomes_agent ON routing_outcomes(used_agent);\n CREATE INDEX IF NOT EXISTS idx_routing_outcomes_created ON routing_outcomes(created_at);\n CREATE INDEX IF NOT EXISTS idx_routing_outcomes_tier ON routing_outcomes(model_tier);\n\n -- Coverage sessions (ADR-023: Coverage Learning)\n CREATE TABLE IF NOT EXISTS coverage_sessions (\n id TEXT PRIMARY KEY,\n target_path TEXT NOT NULL,\n agent_id TEXT NOT NULL,\n technique TEXT NOT NULL,\n before_lines REAL DEFAULT 0,\n before_branches REAL DEFAULT 0,\n before_functions REAL DEFAULT 0,\n after_lines REAL DEFAULT 0,\n after_branches REAL DEFAULT 0,\n after_functions REAL DEFAULT 0,\n tests_generated INTEGER DEFAULT 0,\n tests_passed INTEGER DEFAULT 0,\n gaps_json TEXT,\n duration_ms REAL NOT NULL,\n started_at TEXT NOT NULL,\n completed_at TEXT NOT NULL,\n context_json TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n CREATE INDEX IF NOT EXISTS idx_coverage_sessions_technique ON coverage_sessions(technique);\n CREATE INDEX IF NOT EXISTS idx_coverage_sessions_agent ON coverage_sessions(agent_id);\n CREATE INDEX IF NOT EXISTS idx_coverage_sessions_created ON coverage_sessions(created_at);\n";
21
21
  export declare const STATS_TABLES: string[];
22
22
  //# sourceMappingURL=unified-memory-schemas.d.ts.map
@@ -540,7 +540,7 @@ export const FEEDBACK_SCHEMA = `
540
540
  CREATE INDEX IF NOT EXISTS idx_test_outcomes_domain ON test_outcomes(domain);
541
541
  CREATE INDEX IF NOT EXISTS idx_test_outcomes_created ON test_outcomes(created_at);
542
542
 
543
- -- Routing outcomes (ADR-022: Adaptive QE Agent Routing)
543
+ -- Routing outcomes (ADR-022: Adaptive QE Agent Routing, ADR-092: advisor_consultation_json)
544
544
  CREATE TABLE IF NOT EXISTS routing_outcomes (
545
545
  id TEXT PRIMARY KEY,
546
546
  task_json TEXT NOT NULL,
@@ -552,6 +552,7 @@ export const FEEDBACK_SCHEMA = `
552
552
  duration_ms REAL NOT NULL,
553
553
  error TEXT,
554
554
  model_tier TEXT,
555
+ advisor_consultation_json TEXT,
555
556
  created_at TEXT DEFAULT (datetime('now'))
556
557
  );
557
558
  CREATE INDEX IF NOT EXISTS idx_routing_outcomes_agent ON routing_outcomes(used_agent);