agentic-qe 3.10.3 → 3.10.4

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 (333) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +33 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/cli/bundle.js +5 -5
  5. package/dist/cli/chunks/adapter-A62ETL5C.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-NGC6LSQP.js → agent-booster-wasm-EJPDSWON.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-P2IJE4GK.js → agent-handler-2DZB7LGI.js} +2 -2
  8. package/dist/cli/chunks/{agent-memory-branch-JXRJ5GKQ.js → agent-memory-branch-SSFYAVIK.js} +2 -2
  9. package/dist/cli/chunks/aqe-learning-engine-MTCRAV6N.js +2 -0
  10. package/dist/cli/chunks/audit-42XG5JFB.js +3 -0
  11. package/dist/cli/chunks/base-KKEBUHZC.js +2 -0
  12. package/dist/cli/chunks/{hnswlib-node-64EGGWIC.js → better-sqlite3-PX5JM3DG.js} +2 -2
  13. package/dist/cli/chunks/{brain-handler-SACNDFSW.js → brain-handler-LFHX2TYP.js} +3 -3
  14. package/dist/cli/chunks/{branch-enumerator-LFOTVUDA.js → branch-enumerator-AX7DKGV7.js} +2 -2
  15. package/dist/cli/chunks/{browser-FK7PRF3W.js → browser-4NYLZ7FA.js} +2 -2
  16. package/dist/cli/chunks/browser-workflow-XHYAJUB6.js +2 -0
  17. package/dist/cli/chunks/{chunk-3LRK7PYN.js → chunk-2B6ETC7C.js} +2 -2
  18. package/dist/cli/chunks/{chunk-VRXY4T22.js → chunk-2G2PVVQG.js} +2 -2
  19. package/dist/cli/chunks/{chunk-EETVN2OJ.js → chunk-2L5VFVCG.js} +1 -1
  20. package/dist/cli/chunks/{chunk-CNEWYJKT.js → chunk-2TYO4VZH.js} +3 -3
  21. package/dist/cli/chunks/{chunk-GHNNJHH3.js → chunk-3ISX5B77.js} +2 -2
  22. package/dist/cli/chunks/{chunk-X2B7SANM.js → chunk-3UGUX34A.js} +1 -1
  23. package/dist/cli/chunks/{chunk-VIWIO27R.js → chunk-4BX72XG4.js} +2 -2
  24. package/dist/cli/chunks/{chunk-3HBWDG62.js → chunk-4FTLYIMW.js} +2 -2
  25. package/dist/cli/chunks/{chunk-KG5SM36Y.js → chunk-5FNNCVXR.js} +1 -1
  26. package/dist/cli/chunks/{chunk-72LE6PHL.js → chunk-5Q3L4QEE.js} +2 -2
  27. package/dist/cli/chunks/{chunk-NZHOKLII.js → chunk-5T2HDET6.js} +3 -3
  28. package/dist/cli/chunks/{chunk-OX4R55T3.js → chunk-5T4J3IPG.js} +2 -2
  29. package/dist/cli/chunks/{chunk-QWG76RHA.js → chunk-6OLHPWSN.js} +2 -2
  30. package/dist/cli/chunks/{chunk-M5CDW2ZH.js → chunk-6SCIX2W2.js} +2 -2
  31. package/dist/cli/chunks/{chunk-MQOFFRTA.js → chunk-6WF2MOQB.js} +2 -2
  32. package/dist/cli/chunks/{chunk-JP63XACW.js → chunk-7BQXEYRV.js} +2 -2
  33. package/dist/cli/chunks/{chunk-H56AROF2.js → chunk-7VO5IEJ2.js} +2 -2
  34. package/dist/cli/chunks/{chunk-YXH2CVAF.js → chunk-AIBE3J4A.js} +1 -1
  35. package/dist/cli/chunks/{chunk-BWP3UVPE.js → chunk-AMW27FSS.js} +3 -3
  36. package/dist/cli/chunks/{chunk-3JAOFKEU.js → chunk-AZJYDM2K.js} +1 -1
  37. package/dist/cli/chunks/{chunk-MBSJ5G4I.js → chunk-B6CT4ILU.js} +4 -4
  38. package/dist/cli/chunks/{chunk-FJGSEPFL.js → chunk-BEFRQOLH.js} +2 -2
  39. package/dist/cli/chunks/{chunk-UIJFU4KD.js → chunk-C2446H7G.js} +2 -2
  40. package/dist/cli/chunks/{chunk-YIYV2JB6.js → chunk-D7IWGQTW.js} +2 -2
  41. package/dist/cli/chunks/{chunk-JLL27IGU.js → chunk-D7PI4CYZ.js} +2 -2
  42. package/dist/cli/chunks/{chunk-I42R57ON.js → chunk-DAIM72HV.js} +2 -2
  43. package/dist/cli/chunks/{chunk-YYAPO3CU.js → chunk-DPKECIKN.js} +2 -2
  44. package/dist/cli/chunks/{chunk-E2BJT6A7.js → chunk-E6CGBOZY.js} +2 -2
  45. package/dist/cli/chunks/{chunk-MC7K44M4.js → chunk-EGTOSQZK.js} +2 -2
  46. package/dist/cli/chunks/{chunk-NRCL3WCP.js → chunk-EMZ3DXMG.js} +2 -2
  47. package/dist/cli/chunks/{chunk-NNZMEYLT.js → chunk-EWI37TJA.js} +1 -1
  48. package/dist/cli/chunks/{chunk-NNVXHC74.js → chunk-F34OO2Q7.js} +3 -3
  49. package/dist/cli/chunks/{chunk-U7NMPZE2.js → chunk-F6QPAVWS.js} +2 -2
  50. package/dist/cli/chunks/chunk-F77X5DAF.js +2 -0
  51. package/dist/cli/chunks/{chunk-6GCOIIHY.js → chunk-FDFJJFQT.js} +2 -2
  52. package/dist/cli/chunks/{chunk-OPDTDKN3.js → chunk-FQ7I4JBQ.js} +2 -2
  53. package/dist/cli/chunks/{chunk-RNF47IJ5.js → chunk-G5FPWH5O.js} +2 -2
  54. package/dist/cli/chunks/{chunk-IRR7YA3Q.js → chunk-GDMH7NPV.js} +2 -2
  55. package/dist/cli/chunks/{chunk-6FL3GN4T.js → chunk-GILL32E2.js} +2 -2
  56. package/dist/cli/chunks/{chunk-JE3C7JYN.js → chunk-GLMDRGJD.js} +1 -1
  57. package/dist/cli/chunks/{chunk-JTF6D2RJ.js → chunk-GS33ZRJH.js} +2 -2
  58. package/dist/cli/chunks/chunk-HPYGMKZF.js +2 -0
  59. package/dist/cli/chunks/{chunk-6Q2PPOOF.js → chunk-HTLAPMTK.js} +1 -1
  60. package/dist/cli/chunks/{chunk-RZCAA2PZ.js → chunk-IAK76TIZ.js} +1 -1
  61. package/dist/cli/chunks/{chunk-LZ6TNTGO.js → chunk-ICF5RPQU.js} +2 -2
  62. package/dist/cli/chunks/{chunk-BO2OV2RH.js → chunk-IPAQ4HVX.js} +2 -2
  63. package/dist/cli/chunks/{chunk-FND6V2RV.js → chunk-ISRTT4I7.js} +8 -8
  64. package/dist/cli/chunks/{chunk-KTRB3L53.js → chunk-IYFMDIYZ.js} +2 -2
  65. package/dist/cli/chunks/{chunk-T63EK6GH.js → chunk-JRBGHWAM.js} +2 -2
  66. package/dist/cli/chunks/{chunk-GL3HZN3O.js → chunk-JYR3X4OC.js} +1 -1
  67. package/dist/cli/chunks/{chunk-R5ONQAQL.js → chunk-K72J52JO.js} +2 -2
  68. package/dist/cli/chunks/{chunk-FU77CDEM.js → chunk-K7CW2X6U.js} +2 -2
  69. package/dist/cli/chunks/{chunk-3X2ZQ55B.js → chunk-K7K4TFJM.js} +3 -3
  70. package/dist/cli/chunks/{chunk-2ULVCLOW.js → chunk-KCXE2LZU.js} +2 -2
  71. package/dist/cli/chunks/{chunk-UDV4YB42.js → chunk-KGPAWNNR.js} +1 -1
  72. package/dist/cli/chunks/{chunk-CTDO2UB2.js → chunk-KJ56OXH4.js} +1 -1
  73. package/dist/cli/chunks/{chunk-DF3MJ2YL.js → chunk-KUFC4DBX.js} +1 -1
  74. package/dist/cli/chunks/{chunk-UHDBM7QS.js → chunk-KWZEBHAP.js} +2 -2
  75. package/dist/cli/chunks/{chunk-WWD5IWTV.js → chunk-L6VNEEN6.js} +1 -1
  76. package/dist/cli/chunks/{chunk-7SEHQTYD.js → chunk-LHPR7ROV.js} +1 -1
  77. package/dist/cli/chunks/{chunk-YDKYLNKZ.js → chunk-LKK3NIHC.js} +1 -1
  78. package/dist/cli/chunks/{chunk-YDDZJCKY.js → chunk-LOFA3U4X.js} +1 -1
  79. package/dist/cli/chunks/{chunk-HAO3SPOE.js → chunk-LYKSIOOT.js} +2 -2
  80. package/dist/cli/chunks/chunk-M2PSXKTG.js +2 -0
  81. package/dist/cli/chunks/{chunk-UZL366ZI.js → chunk-M3MKP5VN.js} +1 -1
  82. package/dist/cli/chunks/{chunk-7YYTTWGY.js → chunk-M4ARHDY4.js} +1 -1
  83. package/dist/cli/chunks/{chunk-IL2KOW5W.js → chunk-M5DBKHM4.js} +2 -2
  84. package/dist/cli/chunks/{chunk-SL6YZAT4.js → chunk-MDWJXSBA.js} +2 -2
  85. package/dist/cli/chunks/{chunk-HMFEPKAR.js → chunk-MFWWPRBV.js} +2 -2
  86. package/dist/cli/chunks/{chunk-N7IBYDW5.js → chunk-MHWYQHGN.js} +1 -1
  87. package/dist/cli/chunks/{chunk-Q7EBD24B.js → chunk-MIQBRVK2.js} +1 -1
  88. package/dist/cli/chunks/{chunk-ERYMAYJW.js → chunk-MKZQBBCU.js} +2 -2
  89. package/dist/cli/chunks/{chunk-NEYYLAYS.js → chunk-MQ5WMWUK.js} +2 -2
  90. package/dist/cli/chunks/chunk-MQIAN57O.js +2 -0
  91. package/dist/cli/chunks/{chunk-6B4S7PKP.js → chunk-MU4P4P4E.js} +1 -1
  92. package/dist/cli/chunks/{chunk-B5MMDMH6.js → chunk-MWV4KPOB.js} +2 -2
  93. package/dist/cli/chunks/{chunk-SWOG3PBD.js → chunk-N244P4MM.js} +2 -2
  94. package/dist/cli/chunks/{chunk-7ZSPCGTI.js → chunk-N3MM4Z33.js} +2 -2
  95. package/dist/cli/chunks/{chunk-VDTFRMES.js → chunk-N4CXUGXE.js} +2 -2
  96. package/dist/cli/chunks/{chunk-C6BBRM2J.js → chunk-ND6YSW5N.js} +1 -1
  97. package/dist/cli/chunks/{chunk-5IBJURYB.js → chunk-NJYI7HX7.js} +2 -2
  98. package/dist/cli/chunks/{chunk-4CYLSXA6.js → chunk-NSRDP7RD.js} +2 -2
  99. package/dist/cli/chunks/{chunk-USFZ4IJD.js → chunk-NZGLDOU4.js} +15 -15
  100. package/dist/cli/chunks/{chunk-HM523MTQ.js → chunk-O3SG32PS.js} +1 -1
  101. package/dist/cli/chunks/{chunk-NXPFGPHV.js → chunk-OIFJH7TF.js} +1 -1
  102. package/dist/cli/chunks/{chunk-5EWWA4QP.js → chunk-OKKTDHHF.js} +6 -6
  103. package/dist/cli/chunks/{chunk-5SGEOO2F.js → chunk-OO7KJ34Y.js} +2 -2
  104. package/dist/cli/chunks/{chunk-Z2K5IZM6.js → chunk-OV4BLIKJ.js} +2 -2
  105. package/dist/cli/chunks/{chunk-RTDHWOAG.js → chunk-PISW5HUX.js} +1 -1
  106. package/dist/cli/chunks/{chunk-5ER3COX3.js → chunk-PLD4IGDL.js} +2 -2
  107. package/dist/cli/chunks/{chunk-D2FBUOAR.js → chunk-PMWWWYUM.js} +1 -1
  108. package/dist/cli/chunks/{chunk-OG7CWWFR.js → chunk-PWJZZCHJ.js} +1 -1
  109. package/dist/cli/chunks/{chunk-GELF4ILR.js → chunk-PZ4PRZXN.js} +9 -9
  110. package/dist/cli/chunks/chunk-PZCSJZVJ.js +2 -0
  111. package/dist/cli/chunks/{chunk-ZXQNE4QV.js → chunk-Q53M4LI7.js} +1 -1
  112. package/dist/cli/chunks/{chunk-WPVCSFDA.js → chunk-QPMAXDJ2.js} +2 -2
  113. package/dist/cli/chunks/{chunk-L74CHKFR.js → chunk-RJKYPWFD.js} +2 -2
  114. package/dist/cli/chunks/{chunk-4OUAHZX2.js → chunk-RUC3FCRK.js} +2 -2
  115. package/dist/cli/chunks/{chunk-HRLXU4LH.js → chunk-SC6UFGJ6.js} +2 -2
  116. package/dist/cli/chunks/{chunk-AEJVOJPT.js → chunk-SJC7OKF3.js} +2 -2
  117. package/dist/cli/chunks/{chunk-X3RJ6SFC.js → chunk-STMMZXS6.js} +1 -1
  118. package/dist/cli/chunks/{chunk-CAMEFWRK.js → chunk-SVILIQQQ.js} +1 -1
  119. package/dist/cli/chunks/{chunk-ADV4DH3W.js → chunk-SXMGNMFL.js} +3 -3
  120. package/dist/cli/chunks/{chunk-ZG4P3DTL.js → chunk-SZKFT6CD.js} +2 -2
  121. package/dist/cli/chunks/{chunk-4QFAUSWQ.js → chunk-TBJ566KV.js} +2 -2
  122. package/dist/cli/chunks/{chunk-7RMZAVGO.js → chunk-TCV5DASI.js} +2 -2
  123. package/dist/cli/chunks/{chunk-U6UK3UMX.js → chunk-TWAWEP4X.js} +3 -3
  124. package/dist/cli/chunks/chunk-U27GVYXA.js +2 -0
  125. package/dist/cli/chunks/{chunk-JD2PG4KS.js → chunk-UFKVKNAA.js} +1 -1
  126. package/dist/cli/chunks/{chunk-FLTPHVZ3.js → chunk-USB7GCIC.js} +1 -1
  127. package/dist/cli/chunks/{chunk-HQJMCTWN.js → chunk-UW3ZSFFB.js} +2 -2
  128. package/dist/cli/chunks/{chunk-JTZ3Q2QS.js → chunk-UWAUYDW4.js} +2 -2
  129. package/dist/cli/chunks/{chunk-QEODION5.js → chunk-UXJVR323.js} +2 -2
  130. package/dist/cli/chunks/{chunk-QM65UGPV.js → chunk-V5G3SMAJ.js} +2 -2
  131. package/dist/cli/chunks/{chunk-PL5SLO2W.js → chunk-VDKMBOUK.js} +1 -1
  132. package/dist/cli/chunks/{chunk-HWM2XJ3P.js → chunk-VJ2D6FST.js} +2 -2
  133. package/dist/cli/chunks/{chunk-5LON3MLI.js → chunk-VJOPNK2L.js} +2 -2
  134. package/dist/cli/chunks/{chunk-2L73WXA4.js → chunk-VRE2EBFI.js} +2 -2
  135. package/dist/cli/chunks/{chunk-3RZL4QTT.js → chunk-WI5WXYIS.js} +2 -2
  136. package/dist/cli/chunks/{chunk-XTP2GHI7.js → chunk-WIYWDON4.js} +2 -2
  137. package/dist/cli/chunks/{chunk-SNTMAVPH.js → chunk-WYMQ6FZR.js} +3 -3
  138. package/dist/cli/chunks/{chunk-BT3QLWII.js → chunk-XBFEHVBO.js} +2 -2
  139. package/dist/cli/chunks/{chunk-DY5KEOHX.js → chunk-XDZXLEJK.js} +1 -1
  140. package/dist/cli/chunks/{chunk-PFCAMX6H.js → chunk-XJXCSCCP.js} +1 -1
  141. package/dist/cli/chunks/{chunk-JXIPRMAY.js → chunk-XVA56PXZ.js} +4 -4
  142. package/dist/cli/chunks/{chunk-6ZK24V2Y.js → chunk-Y2EDDV5U.js} +2 -2
  143. package/dist/cli/chunks/{chunk-5G5AAEFF.js → chunk-YSLE6NNG.js} +2 -2
  144. package/dist/cli/chunks/{chunk-PZHZPX3O.js → chunk-Z4BTPQLG.js} +2 -2
  145. package/dist/cli/chunks/{chunk-GJUGSH7T.js → chunk-ZM4QGYGK.js} +3 -3
  146. package/dist/cli/chunks/{ci-AWZ3S5OT.js → ci-2BLMQNX3.js} +2 -2
  147. package/dist/cli/chunks/{ci-output-JLCYTIMT.js → ci-output-XK4PPSN7.js} +2 -2
  148. package/dist/cli/chunks/{circuit-breaker-BJDKBDIL.js → circuit-breaker-W7X4NPFE.js} +2 -2
  149. package/dist/cli/chunks/{claude-flow-setup-KKOP5ZMO.js → claude-flow-setup-GLBLSYNJ.js} +2 -2
  150. package/dist/cli/chunks/client-C6CJOCRN.js +2 -0
  151. package/dist/cli/chunks/{cline-installer-7M525SEA.js → cline-installer-7WX7DBGI.js} +2 -2
  152. package/dist/cli/chunks/{code-27SUVJDO.js → code-SP3HAQWG.js} +2 -2
  153. package/dist/cli/chunks/{code-index-extractor-TTQQZLAK.js → code-index-extractor-44HH36UG.js} +2 -2
  154. package/dist/cli/chunks/{codex-installer-GHNGNPKP.js → codex-installer-LMXRWLPU.js} +2 -2
  155. package/dist/cli/chunks/{completions-JPJD24DG.js → completions-GL5FTZAN.js} +2 -2
  156. package/dist/cli/chunks/{complexity-analyzer-Q74EJV33.js → complexity-analyzer-CQMYGETL.js} +2 -2
  157. package/dist/cli/chunks/{continuedev-installer-ULTRDIML.js → continuedev-installer-CYVYS5B7.js} +2 -2
  158. package/dist/cli/chunks/{copilot-installer-EK52X4CG.js → copilot-installer-M7XVII2A.js} +2 -2
  159. package/dist/cli/chunks/{cost-tracker-2GKBRYXL.js → cost-tracker-S4ET4FH3.js} +2 -2
  160. package/dist/cli/chunks/{coverage-YCLC3W2A.js → coverage-DFVSSQ4A.js} +3 -3
  161. package/dist/cli/chunks/cross-domain-router-I3GEA5G6.js +2 -0
  162. package/dist/cli/chunks/{cursor-installer-B3ALFW5E.js → cursor-installer-KWDSQPQC.js} +2 -2
  163. package/dist/cli/chunks/{daemon-ZKEBVLJA.js → daemon-2HD54QVO.js} +3 -3
  164. package/dist/cli/chunks/daemon-CRX46BBO.js +10 -0
  165. package/dist/cli/chunks/{dag-attention-scheduler-OQPJ6ULA.js → dag-attention-scheduler-SCP6WPZB.js} +2 -2
  166. package/dist/cli/chunks/{detect-YMYIQH3Q.js → detect-XS2GDCEX.js} +2 -2
  167. package/dist/cli/chunks/{dist-node-R4FAYQRY.js → dist-node-U43MVQ3F.js} +2 -2
  168. package/dist/cli/chunks/{domain-handler-IGWXLF2S.js → domain-handler-HITMDULH.js} +2 -2
  169. package/dist/cli/chunks/{domain-transfer-A7YNO76C.js → domain-transfer-TJF7DNI4.js} +2 -2
  170. package/dist/cli/chunks/dream-JCQMG2RL.js +2 -0
  171. package/dist/cli/chunks/{embed-and-insert-pattern-KODZAS7Y.js → embed-and-insert-pattern-JKG33YZK.js} +2 -2
  172. package/dist/cli/chunks/{eval-ALQW7Q2S.js → eval-NF5Y4W37.js} +2 -2
  173. package/dist/cli/chunks/{experience-capture-middleware-3WK4RXWK.js → experience-capture-middleware-VMMFYJ4D.js} +3 -3
  174. package/dist/cli/chunks/{fast-paths-PQWDFIJZ.js → fast-paths-W2Q53IR2.js} +2 -2
  175. package/dist/cli/chunks/{feature-flags-JRUAZCND.js → feature-flags-B4PBMQJO.js} +2 -2
  176. package/dist/cli/chunks/{feature-flags-6X33B3WX.js → feature-flags-PVI7A4RE.js} +2 -2
  177. package/dist/cli/chunks/{file-discovery-SA3YU3IH.js → file-discovery-E4L3I33I.js} +2 -2
  178. package/dist/cli/chunks/{fleet-7TXCAOKQ.js → fleet-LE5SHVLK.js} +3 -3
  179. package/dist/cli/chunks/{gnn-wrapper-ZKNYACEC.js → gnn-wrapper-MWWJBLOH.js} +2 -2
  180. package/dist/cli/chunks/{heartbeat-handler-KRZRZ23F.js → heartbeat-handler-XOUVNPQK.js} +4 -4
  181. package/dist/cli/chunks/heartbeat-scheduler-FBHE4ZWH.js +2 -0
  182. package/dist/cli/chunks/hnsw-adapter-EOOA4WXD.js +2 -0
  183. package/dist/cli/chunks/hnsw-index-TD3KRPND.js +2 -0
  184. package/dist/cli/chunks/{hnsw-legacy-bridge-LVHQ5SG7.js → hnsw-legacy-bridge-W3T5ZDDP.js} +2 -2
  185. package/dist/cli/chunks/{better-sqlite3-HP4JZS6K.js → hnswlib-node-3TZFES5I.js} +2 -2
  186. package/dist/cli/chunks/hooks-RUPQVIUM.js +250 -0
  187. package/dist/cli/chunks/hybrid-router-64O6PXZ2.js +2 -0
  188. package/dist/cli/chunks/{hypergraph-engine-2EZBZMFK.js → hypergraph-engine-VDFK3JYH.js} +2 -2
  189. package/dist/cli/chunks/{hypergraph-handler-GLPWYII2.js → hypergraph-handler-EUDGEF25.js} +3 -3
  190. package/dist/cli/chunks/impact-analyzer-ITQHXGTM.js +2 -0
  191. package/dist/cli/chunks/{init-handler-ZSDO5VMA.js → init-handler-MZEAJOZK.js} +6 -6
  192. package/dist/cli/chunks/init-wizard-DZ4IKGQI.js +2 -0
  193. package/dist/cli/chunks/kernel-HSVY4ZYK.js +2 -0
  194. package/dist/cli/chunks/{kilocode-installer-ATYSDWIV.js → kilocode-installer-ECBYWT6M.js} +2 -2
  195. package/dist/cli/chunks/{kiro-installer-K66YT6PC.js → kiro-installer-KYFCSYTG.js} +2 -2
  196. package/dist/cli/chunks/knowledge-graph-H32TXXX4.js +2 -0
  197. package/dist/cli/chunks/{learning-BVYCC4RI.js → learning-4RAFMDSB.js} +3 -3
  198. package/dist/cli/chunks/{llm-router-VBCXE6DN.js → llm-router-JHBNLYP3.js} +4 -4
  199. package/dist/cli/chunks/llm-router-service-3FKESBUX.js +2 -0
  200. package/dist/cli/chunks/{load-AREDQE2U.js → load-4DVQML7P.js} +2 -2
  201. package/dist/cli/chunks/load-test-LKHURZGZ.js +2 -0
  202. package/dist/cli/chunks/{mcp-NG6H6UC5.js → mcp-LCWMU4GZ.js} +2 -2
  203. package/dist/cli/chunks/{memory-Y65EHG6N.js → memory-3DTJAURT.js} +5 -5
  204. package/dist/cli/chunks/memory-backend-XRJRZ6CK.js +2 -0
  205. package/dist/cli/chunks/memory-handlers-BL6E3XAK.js +2 -0
  206. package/dist/cli/chunks/{multi-model-executor-VRPRFUZT.js → multi-model-executor-AVR5SZOO.js} +2 -2
  207. package/dist/cli/chunks/{opencode-installer-CKQXPM5R.js → opencode-installer-DW2426QM.js} +2 -2
  208. package/dist/cli/chunks/{orchestrator-I7JBKD6G.js → orchestrator-AHF4W5GS.js} +5 -5
  209. package/dist/cli/chunks/{pipeline-MV2RWCBI.js → pipeline-N6THEWYE.js} +2 -2
  210. package/dist/cli/chunks/{platform-VU5P3SOG.js → platform-MRCFQF7X.js} +2 -2
  211. package/dist/cli/chunks/{plugin-6TERLKCB.js → plugin-6YKUN5QM.js} +2 -2
  212. package/dist/cli/chunks/{prime-radiant-advanced-wasm-WIUIN2DL.js → prime-radiant-advanced-wasm-2YPAHSVS.js} +2 -2
  213. package/dist/cli/chunks/protocol-executor-KABPB6PQ.js +2 -0
  214. package/dist/cli/chunks/{protocol-handler-HKWBGARO.js → protocol-handler-Y2NMUKWQ.js} +2 -2
  215. package/dist/cli/chunks/{prove-7CQPHBRJ.js → prove-DZUNWBFD.js} +2 -2
  216. package/dist/cli/chunks/provider-manager-U7EBM3FA.js +2 -0
  217. package/dist/cli/chunks/qe-reasoning-bank-64O2OQIW.js +2 -0
  218. package/dist/cli/chunks/{quality-VLUVXKVG.js → quality-AIFQMGUV.js} +2 -2
  219. package/dist/cli/chunks/queen-coordinator-SV3COGIL.js +2 -0
  220. package/dist/cli/chunks/{real-embeddings-JPZ64KK2.js → real-embeddings-5XL4LOG2.js} +2 -2
  221. package/dist/cli/chunks/{roocode-installer-NONVB3UE.js → roocode-installer-LV3WONT5.js} +2 -2
  222. package/dist/cli/chunks/router-QARRPMED.js +2 -0
  223. package/dist/cli/chunks/routing-feedback-KD2JFTPK.js +2 -0
  224. package/dist/cli/chunks/{routing-handler-YYXDT4J2.js → routing-handler-WSMUILGD.js} +2 -2
  225. package/dist/cli/chunks/{ruvector-commands-5PFMNDLR.js → ruvector-commands-BCEIDTW3.js} +2 -2
  226. package/dist/cli/chunks/{rvf-dual-writer-TF6H7AXH.js → rvf-dual-writer-LRSPC6H3.js} +2 -2
  227. package/dist/cli/chunks/{rvf-migration-adapter-VNGIUZCO.js → rvf-migration-adapter-QHNX6353.js} +2 -2
  228. package/dist/cli/chunks/{rvf-migration-coordinator-VA52YAIY.js → rvf-migration-coordinator-SLNB3XPW.js} +2 -2
  229. package/dist/cli/chunks/rvf-native-adapter-4LLGF5AY.js +2 -0
  230. package/dist/cli/chunks/safe-db-RAX3H2P7.js +2 -0
  231. package/dist/cli/chunks/schedule-RQZGLLUY.js +2 -0
  232. package/dist/cli/chunks/scheduler-ACWTN4LN.js +2 -0
  233. package/dist/cli/chunks/{security-62HEETBF.js → security-CYY6TECQ.js} +3 -3
  234. package/dist/cli/chunks/shared-rvf-adapter-U6JE4O6A.js +2 -0
  235. package/dist/cli/chunks/{shared-rvf-dual-writer-JTZK7LRD.js → shared-rvf-dual-writer-PJBSNBRV.js} +2 -2
  236. package/dist/cli/chunks/sqlite-persistence-SWNBO257.js +2 -0
  237. package/dist/cli/chunks/{status-handler-LSUPUKRF.js → status-handler-W723LXX5.js} +2 -2
  238. package/dist/cli/chunks/{structural-health-Z75A666N.js → structural-health-WZUPZBB5.js} +2 -2
  239. package/dist/cli/chunks/{sync-M3O4T3A3.js → sync-UA22CKUS.js} +2 -2
  240. package/dist/cli/chunks/sync-ZLMF53TB.js +2 -0
  241. package/dist/cli/chunks/{task-handler-AQBSZAQC.js → task-handler-SENTEEXZ.js} +2 -2
  242. package/dist/cli/chunks/{task-handlers-BOZP247V.js → task-handlers-FGVUZOCC.js} +3 -3
  243. package/dist/cli/chunks/{test-FTEGPNN2.js → test-Q37C3WI2.js} +4 -4
  244. package/dist/cli/chunks/{test-scheduling-IGR4U2VQ.js → test-scheduling-E6SPIBTH.js} +3 -3
  245. package/dist/cli/chunks/token-bootstrap-HQFFMZUF.js +2 -0
  246. package/dist/cli/chunks/{token-usage-VCHV47EO.js → token-usage-JHNWTZ7L.js} +2 -2
  247. package/dist/cli/chunks/{transformers-M27QSNFH.js → transformers-TEXDUVNI.js} +2 -2
  248. package/dist/cli/chunks/{tree-sitter-wasm-parser-IIGEJYFU.js → tree-sitter-wasm-parser-MWSS52H6.js} +2 -2
  249. package/dist/cli/chunks/{types-RQFPUUKA.js → types-YQRKHYH3.js} +2 -2
  250. package/dist/cli/chunks/unified-memory-QG3FDRKR.js +2 -0
  251. package/dist/cli/chunks/unified-memory-hnsw-KOR4EOIG.js +2 -0
  252. package/dist/cli/chunks/unified-persistence-J6NIRYKM.js +2 -0
  253. package/dist/cli/chunks/{upgrade-VJMYX3AL.js → upgrade-JKMEDURI.js} +2 -2
  254. package/dist/cli/chunks/{validate-ML7HUAU5.js → validate-URO7G6OE.js} +2 -2
  255. package/dist/cli/chunks/{validate-swarm-RCR6EYRC.js → validate-swarm-VZVJ56Z5.js} +2 -2
  256. package/dist/cli/chunks/{vibium-ZOOS3W5L.js → vibium-G5WZILL6.js} +2 -2
  257. package/dist/cli/chunks/visual-security-RAWV6YLN.js +2 -0
  258. package/dist/cli/chunks/{web-tree-sitter-2YPGYLWK.js → web-tree-sitter-LECH5T6H.js} +2 -2
  259. package/dist/cli/chunks/{windsurf-installer-GOJWUWC5.js → windsurf-installer-2NPLC2YW.js} +2 -2
  260. package/dist/cli/chunks/{witness-chain-3MGSS3Q4.js → witness-chain-X347C36A.js} +2 -2
  261. package/dist/cli/chunks/witness-chain-ZO7FIM35.js +2 -0
  262. package/dist/cli/chunks/{workflow-B5Q77BI4.js → workflow-V4ALYZ73.js} +4 -4
  263. package/dist/cli/chunks/workflow-orchestrator-7SKITNIJ.js +2 -0
  264. package/dist/cli/chunks/wrappers-QXOPRPR4.js +2 -0
  265. package/dist/cli/commands/hooks-handlers/task-hooks.js +50 -0
  266. package/dist/integrations/ruvector/shared-rvf-adapter.js +12 -1
  267. package/dist/integrations/ruvector/shared-rvf-dual-writer.js +6 -2
  268. package/dist/kernel/project-root.d.ts +33 -0
  269. package/dist/kernel/project-root.js +86 -0
  270. package/dist/kernel/unified-memory.d.ts +2 -19
  271. package/dist/kernel/unified-memory.js +8 -64
  272. package/dist/learning/local-judge-client.d.ts +55 -0
  273. package/dist/learning/local-judge-client.js +127 -0
  274. package/dist/learning/nagual-client.d.ts +73 -0
  275. package/dist/learning/nagual-client.js +150 -0
  276. package/dist/learning/pattern-store.js +10 -3
  277. package/dist/mcp/bundle.js +392 -390
  278. package/dist/mcp/entry.js +44 -33
  279. package/dist/mcp/transport/stdio.d.ts +7 -0
  280. package/dist/mcp/transport/stdio.js +39 -2
  281. package/dist/workers/daemon.js +2 -0
  282. package/dist/workers/quality-daemon/git-watcher.js +2 -0
  283. package/dist/workers/quality-daemon/index.js +2 -0
  284. package/dist/workers/worker-manager.js +4 -0
  285. package/package.json +1 -1
  286. package/dist/cli/chunks/adapter-BHPUKMJ5.js +0 -2
  287. package/dist/cli/chunks/aqe-learning-engine-JQ5WD2HM.js +0 -2
  288. package/dist/cli/chunks/audit-BMQ3VESB.js +0 -3
  289. package/dist/cli/chunks/base-E32WLGY2.js +0 -2
  290. package/dist/cli/chunks/browser-workflow-LNNXXAJG.js +0 -2
  291. package/dist/cli/chunks/chunk-2EQVYYBF.js +0 -2
  292. package/dist/cli/chunks/chunk-3VF3HCG4.js +0 -2
  293. package/dist/cli/chunks/chunk-JOLDCS6X.js +0 -2
  294. package/dist/cli/chunks/chunk-JSFYPLMQ.js +0 -2
  295. package/dist/cli/chunks/chunk-YX2HY4MX.js +0 -2
  296. package/dist/cli/chunks/client-2UKBYFX4.js +0 -2
  297. package/dist/cli/chunks/cross-domain-router-FPM3L27L.js +0 -2
  298. package/dist/cli/chunks/daemon-YWINEHG4.js +0 -10
  299. package/dist/cli/chunks/dream-XM33US3V.js +0 -2
  300. package/dist/cli/chunks/heartbeat-scheduler-GM3M2MTG.js +0 -2
  301. package/dist/cli/chunks/hnsw-adapter-K62GEHIL.js +0 -2
  302. package/dist/cli/chunks/hnsw-index-VCAK3TWN.js +0 -2
  303. package/dist/cli/chunks/hooks-6Y3UHYI2.js +0 -248
  304. package/dist/cli/chunks/hybrid-router-432QNCNG.js +0 -2
  305. package/dist/cli/chunks/impact-analyzer-VTSISNN4.js +0 -2
  306. package/dist/cli/chunks/init-wizard-COB5AH7Q.js +0 -2
  307. package/dist/cli/chunks/kernel-ROK7X5FM.js +0 -2
  308. package/dist/cli/chunks/knowledge-graph-YUWIDIWW.js +0 -2
  309. package/dist/cli/chunks/llm-router-service-7VLXJ7VE.js +0 -2
  310. package/dist/cli/chunks/load-test-32524DL3.js +0 -2
  311. package/dist/cli/chunks/memory-backend-BI2V5AAB.js +0 -2
  312. package/dist/cli/chunks/memory-handlers-NSOFWVFN.js +0 -2
  313. package/dist/cli/chunks/protocol-executor-2UPB7SPI.js +0 -2
  314. package/dist/cli/chunks/provider-manager-PDT37MIJ.js +0 -2
  315. package/dist/cli/chunks/qe-reasoning-bank-AQQ2BI4V.js +0 -2
  316. package/dist/cli/chunks/queen-coordinator-6DVDVEU4.js +0 -2
  317. package/dist/cli/chunks/router-O2G4KQ6L.js +0 -2
  318. package/dist/cli/chunks/routing-feedback-TAGTD3KQ.js +0 -2
  319. package/dist/cli/chunks/rvf-native-adapter-46GRWQJR.js +0 -2
  320. package/dist/cli/chunks/safe-db-LNIPXXHH.js +0 -2
  321. package/dist/cli/chunks/schedule-AUH3ZALY.js +0 -2
  322. package/dist/cli/chunks/scheduler-KK3OYPWW.js +0 -2
  323. package/dist/cli/chunks/shared-rvf-adapter-XWTQPGCT.js +0 -2
  324. package/dist/cli/chunks/sqlite-persistence-CYESP7NG.js +0 -2
  325. package/dist/cli/chunks/sync-VI37UHHH.js +0 -2
  326. package/dist/cli/chunks/token-bootstrap-2DFRVMBM.js +0 -2
  327. package/dist/cli/chunks/unified-memory-RISHEANP.js +0 -2
  328. package/dist/cli/chunks/unified-memory-hnsw-2IKXGMNZ.js +0 -2
  329. package/dist/cli/chunks/unified-persistence-ZTTUJNTU.js +0 -2
  330. package/dist/cli/chunks/visual-security-D66DTAO5.js +0 -2
  331. package/dist/cli/chunks/witness-chain-RHWHHDLV.js +0 -2
  332. package/dist/cli/chunks/workflow-orchestrator-OQMFW2TC.js +0 -2
  333. package/dist/cli/chunks/wrappers-MM5VLEPG.js +0 -2
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
+ import{a}from"./chunk-F6QPAVWS.js";import"./chunk-F77X5DAF.js";import"./chunk-TBJ566KV.js";import"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-2B6ETC7C.js";import"./chunk-PISW5HUX.js";import"./chunk-RJKYPWFD.js";import"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{a as VisualSecurityTool};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.3");process.exit(0)}
2
- import"./chunk-CAMEFWRK.js";import{createRequire as t}from"module";var o=t(import.meta.url),e=o("web-tree-sitter"),i=e,{RuvectorLayer:n,TensorCompress:a,differentiableSearch:c,hierarchicalForward:s,getCompressionLevel:l,init:p,FlashAttention:m,DotProductAttention:u,MultiHeadAttention:d,HyperbolicAttention:A,LinearAttention:f,MoEAttention:h,SonaEngine:_,pipeline:b}=e||{};export{u as DotProductAttention,m as FlashAttention,A as HyperbolicAttention,f as LinearAttention,h as MoEAttention,d as MultiHeadAttention,n as RuvectorLayer,_ as SonaEngine,a as TensorCompress,i as default,c as differentiableSearch,l as getCompressionLevel,s as hierarchicalForward,p as init,b as pipeline};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
+ import"./chunk-SVILIQQQ.js";import{createRequire as t}from"module";var o=t(import.meta.url),e=o("web-tree-sitter"),i=e,{RuvectorLayer:n,TensorCompress:a,differentiableSearch:c,hierarchicalForward:s,getCompressionLevel:l,init:p,FlashAttention:m,DotProductAttention:u,MultiHeadAttention:d,HyperbolicAttention:A,LinearAttention:f,MoEAttention:h,SonaEngine:_,pipeline:b}=e||{};export{u as DotProductAttention,m as FlashAttention,A as HyperbolicAttention,f as LinearAttention,h as MoEAttention,d as MultiHeadAttention,n as RuvectorLayer,_ as SonaEngine,a as TensorCompress,i as default,c as differentiableSearch,l as getCompressionLevel,s as hierarchicalForward,p as init,b as pipeline};
@@ -1,5 +1,5 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.3");process.exit(0)}
2
- import{b as u}from"./chunk-YDDZJCKY.js";import{a as f,c as h}from"./chunk-3LRK7PYN.js";import"./chunk-CAMEFWRK.js";h();import{existsSync as i,mkdirSync as d,readFileSync as g,writeFileSync as a}from"fs";import{join as p,dirname as v}from"path";var c=class{projectRoot;overwrite;generator;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.generator=u()}async install(){let e={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("windsurf"),r=p(this.projectRoot,t.path);if(e.configPath=r,!i(r)||this.overwrite){let o=v(r);if(i(o)||d(o,{recursive:!0}),i(r)&&this.overwrite){let m=this.mergeExistingConfig(r,t.content);a(r,m)}else a(r,t.content);e.mcpConfigured=!0}let n=this.generator.generateBehavioralRules("windsurf"),s=p(this.projectRoot,n.path);if(e.rulesPath=s,!i(s)||this.overwrite){if(i(s)&&this.overwrite){let o=this.mergeExistingRules(s,n.content);a(s,o)}else a(s,n.content);e.rulesInstalled=!0}}catch(t){e.success=!1,e.errors.push(`Windsurf installation failed: ${f(t)}`)}return e}mergeExistingConfig(e,t){try{let r=JSON.parse(g(e,"utf-8")),n=JSON.parse(t);return r.mcpServers||(r.mcpServers={}),Object.assign(r.mcpServers,n.mcpServers),JSON.stringify(r,null,2)+`
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
+ import{b as u}from"./chunk-LOFA3U4X.js";import{a as f,c as h}from"./chunk-2B6ETC7C.js";import"./chunk-SVILIQQQ.js";h();import{existsSync as i,mkdirSync as d,readFileSync as g,writeFileSync as a}from"fs";import{join as p,dirname as v}from"path";var c=class{projectRoot;overwrite;generator;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.generator=u()}async install(){let e={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("windsurf"),r=p(this.projectRoot,t.path);if(e.configPath=r,!i(r)||this.overwrite){let o=v(r);if(i(o)||d(o,{recursive:!0}),i(r)&&this.overwrite){let m=this.mergeExistingConfig(r,t.content);a(r,m)}else a(r,t.content);e.mcpConfigured=!0}let n=this.generator.generateBehavioralRules("windsurf"),s=p(this.projectRoot,n.path);if(e.rulesPath=s,!i(s)||this.overwrite){if(i(s)&&this.overwrite){let o=this.mergeExistingRules(s,n.content);a(s,o)}else a(s,n.content);e.rulesInstalled=!0}}catch(t){e.success=!1,e.errors.push(`Windsurf installation failed: ${f(t)}`)}return e}mergeExistingConfig(e,t){try{let r=JSON.parse(g(e,"utf-8")),n=JSON.parse(t);return r.mcpServers||(r.mcpServers={}),Object.assign(r.mcpServers,n.mcpServers),JSON.stringify(r,null,2)+`
3
3
  `}catch{return t}}mergeExistingRules(e,t){try{let r=g(e,"utf-8");return r.includes("Agentic QE")||r.includes("fleet_init")?r:r.trimEnd()+`
4
4
 
5
5
  ---
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.3");process.exit(0)}
2
- import{a,b,c,d,e,f,g}from"./chunk-HQJMCTWN.js";import"./chunk-3VF3HCG4.js";import"./chunk-2L73WXA4.js";import"./chunk-YIYV2JB6.js";import"./chunk-CAMEFWRK.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
+ import{a,b,c,d,e,f,g}from"./chunk-UW3ZSFFB.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i}from"./chunk-YSLE6NNG.js";import"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-2B6ETC7C.js";import"./chunk-RJKYPWFD.js";import"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{a as GENESIS_PREV_HASH,f as WitnessChain,i as _resetWitnessChainForTests,h as createWitnessChain,g as getWitnessChain,d as hashWith,e as serializeEntry,b as sha256,c as shake256};
@@ -1,5 +1,5 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.3");process.exit(0)}
2
- import{b as $}from"./chunk-CTDO2UB2.js";import"./chunk-XTP2GHI7.js";import{d as R}from"./chunk-6FL3GN4T.js";import{b as k,c as C,d as b}from"./chunk-YYAPO3CU.js";import{c as W}from"./chunk-KTRB3L53.js";import"./chunk-JD2PG4KS.js";import"./chunk-3LRK7PYN.js";import"./chunk-CAMEFWRK.js";import{Command as O}from"commander";import o from"chalk";function P(d,a){let m=d.indexOf("=");return m>0&&(a[d.substring(0,m)]=d.substring(m+1)),a}function x(d,a,m){let y=new O("workflow").description("Manage QE workflows and pipelines (ADR-041)");return y.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(t,l)=>{if(!await m())return;let e=await import("fs"),c=(await import("path")).resolve(t);try{console.log(o.blue(`
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
+ import{b as $}from"./chunk-KJ56OXH4.js";import"./chunk-WIYWDON4.js";import{d as R}from"./chunk-GILL32E2.js";import{b as k,c as C,d as b}from"./chunk-DPKECIKN.js";import{c as W}from"./chunk-IYFMDIYZ.js";import"./chunk-UFKVKNAA.js";import"./chunk-2B6ETC7C.js";import"./chunk-SVILIQQQ.js";import{Command as O}from"commander";import o from"chalk";function P(d,a){let m=d.indexOf("=");return m>0&&(a[d.substring(0,m)]=d.substring(m+1)),a}function x(d,a,m){let y=new O("workflow").description("Manage QE workflows and pipelines (ADR-041)");return y.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(t,l)=>{if(!await m())return;let e=await import("fs"),c=(await import("path")).resolve(t);try{console.log(o.blue(`
3
3
  Running workflow from: ${t}
4
4
  `));let s=k(c);if(!s.success||!s.workflow){console.log(o.red("Failed to parse pipeline:"));for(let w of s.errors)console.log(o.red(` ${w}`));await a(1)}let r={...W(l.params,"params")};if(s.pipeline){for(let w of s.pipeline.stages)if(w.params)for(let[S,h]of Object.entries(w.params))r[S]=h}if(!d.workflowOrchestrator.getWorkflow(s.workflow.id)){let w=d.workflowOrchestrator.registerWorkflow(s.workflow);w.success||(console.log(o.red(`Failed to register workflow: ${w.error.message}`)),await a(1))}let n=await d.workflowOrchestrator.executeWorkflow(s.workflow.id,r);if(!n.success){console.log(o.red(`Failed to start workflow: ${n.error.message}`)),await a(1);return}let p=n.value;if(console.log(o.cyan(` Execution ID: ${p}`)),console.log(o.gray(` Workflow: ${s.workflow.name}`)),console.log(o.gray(` Stages: ${s.workflow.steps.length}`)),console.log(""),l.watch){console.log(o.blue(`Workflow Progress:
5
5
  `));let w,S=Date.now();for(;;){let g=d.workflowOrchestrator.getWorkflowStatus(p);if(!g)break;if(!w||w.progress!==g.progress||w.status!==g.status||JSON.stringify(w.currentSteps)!==JSON.stringify(g.currentSteps)){process.stdout.write("\r\x1B[K");let v="\u2588".repeat(Math.floor(g.progress/5))+"\u2591".repeat(20-Math.floor(g.progress/5)),D=g.status==="completed"?o.green:g.status==="failed"?o.red:g.status==="running"?o.yellow:o.gray;console.log(` [${v}] ${g.progress}% - ${D(g.status)}`),g.currentSteps.length>0&&l.verbose&&console.log(o.gray(` Running: ${g.currentSteps.join(", ")}`)),w=g}if(g.status==="completed"||g.status==="failed"||g.status==="cancelled")break;await new Promise(v=>setTimeout(v,500))}let h=d.workflowOrchestrator.getWorkflowStatus(p);if(h){console.log("");let g=h.duration||Date.now()-S;h.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(g)}`)),console.log(o.gray(` Completed: ${h.completedSteps.length} stages`)),h.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${h.skippedSteps.length} stages`))):h.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${h.error}`)),console.log(o.gray(` Failed stages: ${h.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${h.status}`))}}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${p}' to check progress`));console.log(""),await a(0)}catch(s){console.error(o.red(`
@@ -35,10 +35,10 @@ Workflow cancelled: ${t}
35
35
  `)):console.log(o.red(`
36
36
  Failed to cancel workflow: ${l.error.message}
37
37
  `)),await a(l.success?0:1)}catch(l){console.error(o.red(`
38
- Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-LNNXXAJG.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
38
+ Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-XHYAJUB6.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
39
39
  Browser Workflow Templates:
40
40
  `));for(let u of e.data.availableTemplates)console.log(` ${o.cyan(u)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await a(0)}catch(t){console.error(o.red(`
41
- Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-LNNXXAJG.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-JLCYTIMT.js"),s=new e,f={variables:l.var||{}};if(l.yaml)f.workflowYaml=l.yaml;else if(t)if(t.endsWith(".yaml")||t.endsWith(".yml")){let i=await import("fs"),p=(await import("path")).resolve(t);i.existsSync(p)||(console.log(o.red(`
41
+ Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-XHYAJUB6.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-XK4PPSN7.js"),s=new e,f={variables:l.var||{}};if(l.yaml)f.workflowYaml=l.yaml;else if(t)if(t.endsWith(".yaml")||t.endsWith(".yml")){let i=await import("fs"),p=(await import("path")).resolve(t);i.existsSync(p)||(console.log(o.red(`
42
42
  File not found: ${p}
43
43
  `)),await a(1)),f.workflowYaml=i.readFileSync(p,"utf-8")}else f.templateName=t;else console.log(o.red(`
44
44
  Provide a template name or --yaml. Use "workflow browser-list" to see templates.
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
+ import{a,b,c,d}from"./chunk-4BX72XG4.js";import"./chunk-GDMH7NPV.js";import"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-UFKVKNAA.js";import"./chunk-2B6ETC7C.js";import"./chunk-PISW5HUX.js";import"./chunk-RJKYPWFD.js";import"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-N4CXUGXE.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-C2446H7G.js";import"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-2B6ETC7C.js";import"./chunk-RJKYPWFD.js";import"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
@@ -9,6 +9,7 @@ import chalk from 'chalk';
9
9
  import path from 'node:path';
10
10
  import { QE_HOOK_EVENTS } from '../../../learning/qe-hooks.js';
11
11
  import { findProjectRoot, getUnifiedMemory } from '../../../kernel/unified-memory.js';
12
+ import { getNagualClient } from '../../../learning/nagual-client.js';
12
13
  import { applyHookBusyTimeout, getHooksSystem, createHybridBackendWithTimeout, incrementDreamExperience, persistTaskOutcome, updateHookRouterQValue, updateRoutingOutcomeQuality, printJson, printSuccess, } from './hooks-shared.js';
13
14
  import { ensureRoutingOutcomesAdr095Columns } from '../../../routing/routing-outcomes-migration.js';
14
15
  import { deriveTaskType } from '../../../learning/agent-routing.js';
@@ -32,6 +33,36 @@ const LOW_CONFIDENCE_THRESHOLD = 0.5;
32
33
  function hashDescription(description) {
33
34
  return createHash('sha256').update(description).digest('hex').slice(0, 16);
34
35
  }
36
+ /**
37
+ * QE domains where nagual patterns add meaningful context.
38
+ * Skipped for trivial/short tasks to avoid latency with no benefit.
39
+ */
40
+ const NAGUAL_SEARCH_DOMAINS = new Set([
41
+ 'test-generation',
42
+ 'coverage-analysis',
43
+ 'defect-intelligence',
44
+ 'security-compliance',
45
+ 'quality-assessment',
46
+ 'requirements-validation',
47
+ ]);
48
+ const NAGUAL_SEARCH_MIN_DESCRIPTION_LENGTH = 80;
49
+ /**
50
+ * Search nagual for relevant patterns when the task is complex enough to benefit.
51
+ * Returns empty array silently on any failure — always best-effort.
52
+ */
53
+ async function fetchNagualContext(description, domain) {
54
+ if (!process.env['NAGUAL_URL'] && !process.env['NAGUAL_CLOUD_URL'] && !process.env['NAGUAL_CLOUD_KEY']) {
55
+ return [];
56
+ }
57
+ if (description.length < NAGUAL_SEARCH_MIN_DESCRIPTION_LENGTH) {
58
+ return [];
59
+ }
60
+ if (domain && !NAGUAL_SEARCH_DOMAINS.has(domain)) {
61
+ return [];
62
+ }
63
+ const client = getNagualClient();
64
+ return client.search(description.slice(0, 300), domain, 3);
65
+ }
35
66
  /**
36
67
  * Register pre-task and post-task subcommands on the hooks command.
37
68
  */
@@ -63,6 +94,11 @@ export function registerTaskHooks(hooks) {
63
94
  .slice(0, 5)
64
95
  .map((p) => p?.id)
65
96
  .filter((id) => typeof id === 'string');
97
+ // Nagual context: search cross-project knowledge hub for complex tasks
98
+ const nagualDomain = routing?.domains?.[0];
99
+ const nagualPatterns = options.description
100
+ ? await fetchNagualContext(String(options.description), nagualDomain)
101
+ : [];
66
102
  // Patches 090/100/160/300/320: signals derived from memory.db.
67
103
  // All best-effort: failures fall through to empty/default values.
68
104
  let historicalBest = null;
@@ -228,6 +264,14 @@ export function registerTaskHooks(hooks) {
228
264
  lowConfidence,
229
265
  // Bridge identifier so post-task can correlate (debug aid)
230
266
  bridgeKey,
267
+ // Nagual cross-project context
268
+ nagualPatterns: nagualPatterns.map((p) => ({
269
+ id: p.id,
270
+ problem: p.problem,
271
+ solution: p.solution.slice(0, 400),
272
+ domain: p.domain,
273
+ reward: p.reward,
274
+ })),
231
275
  });
232
276
  }
233
277
  else {
@@ -240,6 +284,12 @@ export function registerTaskHooks(hooks) {
240
284
  console.log(chalk.yellow(' ⚠ Low confidence — consider providing more context'));
241
285
  }
242
286
  }
287
+ if (nagualPatterns.length > 0) {
288
+ console.log(chalk.bold('\n📚 Nagual context (cross-project):'));
289
+ for (const p of nagualPatterns) {
290
+ console.log(chalk.dim(` [${p.domain}] ${p.problem.slice(0, 80)} (reward: ${p.reward.toFixed(2)})`));
291
+ }
292
+ }
243
293
  }
244
294
  return;
245
295
  }
@@ -10,6 +10,9 @@
10
10
  *
11
11
  * @module integrations/ruvector/shared-rvf-adapter
12
12
  */
13
+ // Issue #516: lightweight, sqlite-free project-root resolver (static import so it
14
+ // resolves under the test runner; avoids pulling unified-memory's sqlite graph).
15
+ import { findProjectRoot } from '../../kernel/project-root.js';
13
16
  let sharedAdapter = null;
14
17
  let initAttempted = false;
15
18
  // ---------------------------------------------------------------------------
@@ -62,7 +65,15 @@ export function getSharedRvfAdapter(dataDir = '.agentic-qe', dimensions = 384) {
62
65
  }
63
66
  // eslint-disable-next-line @typescript-eslint/no-require-imports
64
67
  const path = require('path');
65
- const rvfPath = path.join(dataDir, 'patterns.rvf');
68
+ // Issue #516: resolve a relative dataDir against the project root so the
69
+ // store lands in the project's own .agentic-qe/, not a cwd-relative one.
70
+ // A subfolder cwd (vendored builds, background workers, `aqe code index
71
+ // docs/`) otherwise scatters stray patterns.rvf-only stores. Explicit
72
+ // absolute dataDir args are honored as-is.
73
+ const baseDir = path.isAbsolute(dataDir)
74
+ ? dataDir
75
+ : path.join(process.env.AQE_PROJECT_ROOT ?? findProjectRoot(), dataDir);
76
+ const rvfPath = path.join(baseDir, 'patterns.rvf');
66
77
  // Open-or-create with a try-ladder rather than `existsSync` gate.
67
78
  // Reasons:
68
79
  // 1. RVF native's `RvfDatabase.create()` throws `0x0303 FsyncFailed`
@@ -56,16 +56,20 @@ export async function getSharedRvfDualWriter() {
56
56
  return null;
57
57
  }
58
58
  // Get DB handle from unified memory
59
- const { getUnifiedMemory } = await import('../../kernel/unified-memory.js');
59
+ const { getUnifiedMemory, findProjectRoot } = await import('../../kernel/unified-memory.js');
60
60
  const unifiedMemory = getUnifiedMemory();
61
61
  const db = unifiedMemory.getDatabase();
62
62
  if (!db) {
63
63
  return null;
64
64
  }
65
+ // Issue #516: anchor brain.rvf to the project root rather than a
66
+ // cwd-relative path, so a subfolder cwd doesn't scatter a stray store.
67
+ const { join: joinPath } = await import('node:path');
68
+ const rvfPath = joinPath(process.env.AQE_PROJECT_ROOT ?? findProjectRoot(), '.agentic-qe', 'brain.rvf');
65
69
  // Create dual-writer (dynamic import to avoid bundling .node files)
66
70
  const { RvfDualWriter: DualWriterClass } = await import('./rvf-dual-writer.js');
67
71
  const writer = new DualWriterClass(db, {
68
- rvfPath: '.agentic-qe/brain.rvf',
72
+ rvfPath,
69
73
  mode: 'dual-write',
70
74
  dimensions: 384,
71
75
  });
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Project Root Detection
3
+ *
4
+ * Lightweight, dependency-free resolution of the AQE project root. Kept in its
5
+ * own module (no SQLite / kernel imports) so hot paths — e.g. the RVF pattern
6
+ * store factory — can import it statically without dragging in the sqlite-heavy
7
+ * unified-memory graph, and so it resolves cleanly under the test runner.
8
+ *
9
+ * `unified-memory` re-exports `findProjectRoot` / `clearProjectRootCache` for
10
+ * backward compatibility, so existing import sites keep working.
11
+ *
12
+ * @module kernel/project-root
13
+ */
14
+ /**
15
+ * Clear the cached project root. Useful for testing or when the
16
+ * environment changes at runtime.
17
+ */
18
+ export declare function clearProjectRootCache(): void;
19
+ /**
20
+ * Find the project root by walking up the directory tree.
21
+ *
22
+ * Priority order:
23
+ * 1. AQE_PROJECT_ROOT environment variable (set by MCP config or init)
24
+ * 2. Walk up looking for the NEAREST .agentic-qe directory (existing AQE project)
25
+ * 3. Walk up looking for .git directory (git repo root)
26
+ * 4. Walk up looking for package.json WITHOUT node_modules sibling (monorepo root)
27
+ * 5. Fallback to current working directory
28
+ *
29
+ * Optimized: single upward walk checks all markers in one pass,
30
+ * and the result is cached at module level for subsequent calls.
31
+ */
32
+ export declare function findProjectRoot(startDir?: string): string;
33
+ //# sourceMappingURL=project-root.d.ts.map
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Project Root Detection
3
+ *
4
+ * Lightweight, dependency-free resolution of the AQE project root. Kept in its
5
+ * own module (no SQLite / kernel imports) so hot paths — e.g. the RVF pattern
6
+ * store factory — can import it statically without dragging in the sqlite-heavy
7
+ * unified-memory graph, and so it resolves cleanly under the test runner.
8
+ *
9
+ * `unified-memory` re-exports `findProjectRoot` / `clearProjectRootCache` for
10
+ * backward compatibility, so existing import sites keep working.
11
+ *
12
+ * @module kernel/project-root
13
+ */
14
+ import * as fs from 'fs';
15
+ import * as path from 'path';
16
+ /** Module-level cache for findProjectRoot result. */
17
+ let _cachedProjectRoot = null;
18
+ /**
19
+ * Clear the cached project root. Useful for testing or when the
20
+ * environment changes at runtime.
21
+ */
22
+ export function clearProjectRootCache() {
23
+ _cachedProjectRoot = null;
24
+ }
25
+ /**
26
+ * Find the project root by walking up the directory tree.
27
+ *
28
+ * Priority order:
29
+ * 1. AQE_PROJECT_ROOT environment variable (set by MCP config or init)
30
+ * 2. Walk up looking for the NEAREST .agentic-qe directory (existing AQE project)
31
+ * 3. Walk up looking for .git directory (git repo root)
32
+ * 4. Walk up looking for package.json WITHOUT node_modules sibling (monorepo root)
33
+ * 5. Fallback to current working directory
34
+ *
35
+ * Optimized: single upward walk checks all markers in one pass,
36
+ * and the result is cached at module level for subsequent calls.
37
+ */
38
+ export function findProjectRoot(startDir = process.cwd()) {
39
+ if (_cachedProjectRoot) {
40
+ return _cachedProjectRoot;
41
+ }
42
+ if (process.env.AQE_PROJECT_ROOT) {
43
+ _cachedProjectRoot = process.env.AQE_PROJECT_ROOT;
44
+ return _cachedProjectRoot;
45
+ }
46
+ const dir = startDir;
47
+ const root = path.parse(dir).root;
48
+ let checkDir = dir;
49
+ let nearestAqeDir = null;
50
+ let lowestGitDir = null;
51
+ let topmostPackageJson = null;
52
+ while (checkDir !== root) {
53
+ // Issue #516: prefer the NEAREST (lowest) .agentic-qe, mirroring the
54
+ // .git logic below. Keeping the topmost match let an ancestor store
55
+ // (e.g. ~/.agentic-qe, created by any `aqe` run from $HOME) hijack
56
+ // every descendant project and fragment its learning into $HOME.
57
+ if (fs.existsSync(path.join(checkDir, '.agentic-qe'))) {
58
+ if (nearestAqeDir === null) {
59
+ nearestAqeDir = checkDir;
60
+ }
61
+ }
62
+ if (fs.existsSync(path.join(checkDir, '.git'))) {
63
+ if (lowestGitDir === null) {
64
+ lowestGitDir = checkDir;
65
+ }
66
+ }
67
+ if (fs.existsSync(path.join(checkDir, 'package.json'))) {
68
+ topmostPackageJson = checkDir;
69
+ }
70
+ checkDir = path.dirname(checkDir);
71
+ }
72
+ if (nearestAqeDir) {
73
+ _cachedProjectRoot = nearestAqeDir;
74
+ }
75
+ else if (lowestGitDir) {
76
+ _cachedProjectRoot = lowestGitDir;
77
+ }
78
+ else if (topmostPackageJson) {
79
+ _cachedProjectRoot = topmostPackageJson;
80
+ }
81
+ else {
82
+ _cachedProjectRoot = process.cwd();
83
+ }
84
+ return _cachedProjectRoot;
85
+ }
86
+ //# sourceMappingURL=project-root.js.map
@@ -25,25 +25,8 @@ import { type Database as DatabaseType, type Statement } from 'better-sqlite3';
25
25
  export { validateTableName, ALLOWED_TABLE_NAMES } from '../shared/sql-safety.js';
26
26
  export { BinaryHeap, UnifiedHnswIndex, createHnswIndex } from './unified-memory-hnsw.js';
27
27
  import { type CRDTStore, type CRDTStoreState, type CRDTStoreDelta } from '../memory/crdt/index.js';
28
- /**
29
- * Clear the cached project root. Useful for testing or when the
30
- * environment changes at runtime.
31
- */
32
- export declare function clearProjectRootCache(): void;
33
- /**
34
- * Find the project root by walking up the directory tree.
35
- *
36
- * Priority order:
37
- * 1. AQE_PROJECT_ROOT environment variable (set by MCP config or init)
38
- * 2. Walk up looking for .agentic-qe directory (existing AQE project)
39
- * 3. Walk up looking for .git directory (git repo root)
40
- * 4. Walk up looking for package.json WITHOUT node_modules sibling (monorepo root)
41
- * 5. Fallback to current working directory
42
- *
43
- * Optimized: single upward walk checks all markers in one pass,
44
- * and the result is cached at module level for subsequent calls.
45
- */
46
- export declare function findProjectRoot(startDir?: string): string;
28
+ import { findProjectRoot, clearProjectRootCache } from './project-root.js';
29
+ export { findProjectRoot, clearProjectRootCache };
47
30
  /**
48
31
  * Get the default database path using project root detection.
49
32
  * Always resolves to {project_root}/.agentic-qe/memory.db
@@ -46,70 +46,14 @@ import { createCRDTStore, } from '../memory/crdt/index.js';
46
46
  // ============================================================================
47
47
  // Project Root Detection
48
48
  // ============================================================================
49
- /** Module-level cache for findProjectRoot result. */
50
- let _cachedProjectRoot = null;
51
- /**
52
- * Clear the cached project root. Useful for testing or when the
53
- * environment changes at runtime.
54
- */
55
- export function clearProjectRootCache() {
56
- _cachedProjectRoot = null;
57
- }
58
- /**
59
- * Find the project root by walking up the directory tree.
60
- *
61
- * Priority order:
62
- * 1. AQE_PROJECT_ROOT environment variable (set by MCP config or init)
63
- * 2. Walk up looking for .agentic-qe directory (existing AQE project)
64
- * 3. Walk up looking for .git directory (git repo root)
65
- * 4. Walk up looking for package.json WITHOUT node_modules sibling (monorepo root)
66
- * 5. Fallback to current working directory
67
- *
68
- * Optimized: single upward walk checks all markers in one pass,
69
- * and the result is cached at module level for subsequent calls.
70
- */
71
- export function findProjectRoot(startDir = process.cwd()) {
72
- if (_cachedProjectRoot) {
73
- return _cachedProjectRoot;
74
- }
75
- if (process.env.AQE_PROJECT_ROOT) {
76
- _cachedProjectRoot = process.env.AQE_PROJECT_ROOT;
77
- return _cachedProjectRoot;
78
- }
79
- const dir = startDir;
80
- const root = path.parse(dir).root;
81
- let checkDir = dir;
82
- let topmostAqeDir = null;
83
- let lowestGitDir = null;
84
- let topmostPackageJson = null;
85
- while (checkDir !== root) {
86
- if (fs.existsSync(path.join(checkDir, '.agentic-qe'))) {
87
- topmostAqeDir = checkDir;
88
- }
89
- if (fs.existsSync(path.join(checkDir, '.git'))) {
90
- if (lowestGitDir === null) {
91
- lowestGitDir = checkDir;
92
- }
93
- }
94
- if (fs.existsSync(path.join(checkDir, 'package.json'))) {
95
- topmostPackageJson = checkDir;
96
- }
97
- checkDir = path.dirname(checkDir);
98
- }
99
- if (topmostAqeDir) {
100
- _cachedProjectRoot = topmostAqeDir;
101
- }
102
- else if (lowestGitDir) {
103
- _cachedProjectRoot = lowestGitDir;
104
- }
105
- else if (topmostPackageJson) {
106
- _cachedProjectRoot = topmostPackageJson;
107
- }
108
- else {
109
- _cachedProjectRoot = process.cwd();
110
- }
111
- return _cachedProjectRoot;
112
- }
49
+ // Issue #516: findProjectRoot / clearProjectRootCache live in a lightweight,
50
+ // sqlite-free module so RVF hot paths can import them statically without
51
+ // pulling in this sqlite-heavy module. Re-exported here for backward compat —
52
+ // existing `import { findProjectRoot } from '.../unified-memory.js'` sites keep
53
+ // working unchanged. Imported (not bare re-exported) so internal callers below
54
+ // have a usable local binding.
55
+ import { findProjectRoot, clearProjectRootCache } from './project-root.js';
56
+ export { findProjectRoot, clearProjectRootCache };
113
57
  /**
114
58
  * Get the default database path using project root detection.
115
59
  * Always resolves to {project_root}/.agentic-qe/memory.db
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Agentic QE v3 - Local LLM Judge Client
3
+ *
4
+ * Scores QE patterns for coherence, specificity, and reusability using a
5
+ * locally running Ollama-compatible LLM (OpenAI chat completions API).
6
+ *
7
+ * Reward blending: final_reward = 0.7 * outcome_reward + 0.3 * judge_score
8
+ * Escalation: score in [0.4, 0.6] → logged for human review (ambiguous zone)
9
+ *
10
+ * Env vars (all optional — client is disabled if none set):
11
+ * NAGUAL_JUDGE_URL — base URL of Ollama server (default: http://localhost:11434)
12
+ * NAGUAL_JUDGE_MODEL — model to use (default: qwen3:8b)
13
+ *
14
+ * Supported models (in preference order for M-series Macs):
15
+ * gemma4:12b-mlx — 10GB, MLX-optimised, best quality on Apple Silicon
16
+ * qwen3:8b — 5.2GB, strong reasoning, already installed
17
+ * qwen3:30b-a3b — 18GB, highest quality, use only if RAM permits
18
+ */
19
+ /** Output of a judge evaluation. */
20
+ export interface JudgeResult {
21
+ /** Quality score in [0, 1]. */
22
+ score: number;
23
+ /** One-sentence reasoning from the model. */
24
+ reason: string;
25
+ /** Model that produced the score. */
26
+ model: string;
27
+ /** True if score falls in the ambiguous zone [0.4, 0.6]. */
28
+ needsReview: boolean;
29
+ }
30
+ /**
31
+ * Blend an outcome reward with a judge score.
32
+ * final = 0.7 * outcomeReward + 0.3 * judgeScore
33
+ * Falls back to outcomeReward if judgeResult is null (judge unavailable).
34
+ */
35
+ export declare function blendReward(outcomeReward: number, judgeResult: JudgeResult | null): number;
36
+ /**
37
+ * Local LLM judge using OpenAI-compatible chat completions.
38
+ * Disabled automatically when NAGUAL_JUDGE_URL and NAGUAL_JUDGE_MODEL are both unset.
39
+ */
40
+ export declare class LocalJudgeClient {
41
+ readonly baseUrl: string;
42
+ readonly model: string;
43
+ readonly enabled: boolean;
44
+ constructor(opts?: {
45
+ url?: string;
46
+ model?: string;
47
+ });
48
+ /**
49
+ * Score a piece of text (pattern problem+solution) for QE quality.
50
+ * Returns null if judge is disabled or unavailable — callers use outcomeReward as-is.
51
+ */
52
+ score(text: string): Promise<JudgeResult | null>;
53
+ }
54
+ export declare function getLocalJudgeClient(): LocalJudgeClient;
55
+ //# sourceMappingURL=local-judge-client.d.ts.map
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Agentic QE v3 - Local LLM Judge Client
3
+ *
4
+ * Scores QE patterns for coherence, specificity, and reusability using a
5
+ * locally running Ollama-compatible LLM (OpenAI chat completions API).
6
+ *
7
+ * Reward blending: final_reward = 0.7 * outcome_reward + 0.3 * judge_score
8
+ * Escalation: score in [0.4, 0.6] → logged for human review (ambiguous zone)
9
+ *
10
+ * Env vars (all optional — client is disabled if none set):
11
+ * NAGUAL_JUDGE_URL — base URL of Ollama server (default: http://localhost:11434)
12
+ * NAGUAL_JUDGE_MODEL — model to use (default: qwen3:8b)
13
+ *
14
+ * Supported models (in preference order for M-series Macs):
15
+ * gemma4:12b-mlx — 10GB, MLX-optimised, best quality on Apple Silicon
16
+ * qwen3:8b — 5.2GB, strong reasoning, already installed
17
+ * qwen3:30b-a3b — 18GB, highest quality, use only if RAM permits
18
+ */
19
+ import { LoggerFactory } from '../logging/index.js';
20
+ const logger = LoggerFactory.create('local-judge');
21
+ const DEFAULT_URL = 'http://localhost:11434';
22
+ const DEFAULT_MODEL = 'qwen3:8b';
23
+ const JUDGE_TIMEOUT_MS = 30_000;
24
+ const MAX_TEXT_LENGTH = 600;
25
+ // Thinking models (gemma4, qwen3) need extra tokens to finish reasoning before output
26
+ const MAX_TOKENS = 600;
27
+ /** Score in this range is ambiguous — flagged for human review. */
28
+ const AMBIGUOUS_LOW = 0.4;
29
+ const AMBIGUOUS_HIGH = 0.6;
30
+ /**
31
+ * Blend an outcome reward with a judge score.
32
+ * final = 0.7 * outcomeReward + 0.3 * judgeScore
33
+ * Falls back to outcomeReward if judgeResult is null (judge unavailable).
34
+ */
35
+ export function blendReward(outcomeReward, judgeResult) {
36
+ if (judgeResult === null)
37
+ return outcomeReward;
38
+ return 0.7 * outcomeReward + 0.3 * judgeResult.score;
39
+ }
40
+ /**
41
+ * Local LLM judge using OpenAI-compatible chat completions.
42
+ * Disabled automatically when NAGUAL_JUDGE_URL and NAGUAL_JUDGE_MODEL are both unset.
43
+ */
44
+ export class LocalJudgeClient {
45
+ baseUrl;
46
+ model;
47
+ enabled;
48
+ constructor(opts) {
49
+ this.baseUrl = opts?.url ?? process.env['NAGUAL_JUDGE_URL'] ?? DEFAULT_URL;
50
+ this.model = opts?.model ?? process.env['NAGUAL_JUDGE_MODEL'] ?? DEFAULT_MODEL;
51
+ // Only active when explicitly configured via env or constructor options
52
+ this.enabled = Boolean(opts?.url ?? opts?.model ??
53
+ process.env['NAGUAL_JUDGE_URL'] ??
54
+ process.env['NAGUAL_JUDGE_MODEL']);
55
+ }
56
+ /**
57
+ * Score a piece of text (pattern problem+solution) for QE quality.
58
+ * Returns null if judge is disabled or unavailable — callers use outcomeReward as-is.
59
+ */
60
+ async score(text) {
61
+ if (!this.enabled)
62
+ return null;
63
+ const truncated = text.slice(0, MAX_TEXT_LENGTH);
64
+ const prompt = [
65
+ 'You are a QE pattern quality judge.',
66
+ 'Rate the following pattern for: coherence, specificity, and reusability in a software quality engineering context.',
67
+ 'Reply with valid JSON only, no other text: {"score": <float 0.0-1.0>, "reason": "<one sentence>"}',
68
+ '',
69
+ `Pattern:\n${truncated}`,
70
+ ].join('\n');
71
+ try {
72
+ const response = await fetch(`${this.baseUrl}/v1/chat/completions`, {
73
+ method: 'POST',
74
+ headers: { 'Content-Type': 'application/json' },
75
+ body: JSON.stringify({
76
+ model: this.model,
77
+ messages: [{ role: 'user', content: prompt }],
78
+ temperature: 0.1,
79
+ max_tokens: MAX_TOKENS,
80
+ }),
81
+ signal: AbortSignal.timeout(JUDGE_TIMEOUT_MS),
82
+ });
83
+ if (!response.ok) {
84
+ logger.debug('judge request failed', { status: response.status, model: this.model });
85
+ return null;
86
+ }
87
+ const data = await response.json();
88
+ const msg = data.choices?.[0]?.message;
89
+ // Thinking models (gemma4, qwen3) emit final answer in content; reasoning
90
+ // holds the internal chain-of-thought. Fall back to reasoning if content empty.
91
+ const rawText = (msg?.content ?? '') || (msg?.reasoning ?? '');
92
+ // Strip markdown code fences before parsing
93
+ const cleaned = rawText.replace(/```[\w]*\n?/g, '').replace(/```/g, '');
94
+ // Extract first JSON object — handles multiline values via [\s\S] inside quotes
95
+ const jsonMatch = cleaned.match(/\{[\s\S]*?"score"[\s\S]*?\}/);
96
+ if (!jsonMatch) {
97
+ logger.debug('judge response had no JSON', { rawText: rawText.slice(0, 150) });
98
+ return null;
99
+ }
100
+ const parsed = JSON.parse(jsonMatch[0]);
101
+ if (typeof parsed.score !== 'number')
102
+ return null;
103
+ const score = Math.max(0, Math.min(1, parsed.score));
104
+ const reason = typeof parsed.reason === 'string' ? parsed.reason : '';
105
+ const needsReview = score >= AMBIGUOUS_LOW && score <= AMBIGUOUS_HIGH;
106
+ if (needsReview) {
107
+ logger.info('[SurpriseReview] ambiguous judge score — flag for human review', {
108
+ score,
109
+ reason,
110
+ model: this.model,
111
+ });
112
+ }
113
+ return { score, reason, model: this.model, needsReview };
114
+ }
115
+ catch (err) {
116
+ logger.debug('judge unavailable (non-fatal)', { err, model: this.model });
117
+ return null;
118
+ }
119
+ }
120
+ }
121
+ let _instance;
122
+ export function getLocalJudgeClient() {
123
+ if (!_instance)
124
+ _instance = new LocalJudgeClient();
125
+ return _instance;
126
+ }
127
+ //# sourceMappingURL=local-judge-client.js.map