agentic-qe 3.9.0 → 3.9.2

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 (416) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +43 -0
  3. package/dist/audit/witness-chain.d.ts +1 -1
  4. package/dist/cli/bundle.js +8 -8
  5. package/dist/cli/chunks/adapter-53WBPKXU.js +2 -0
  6. package/dist/cli/chunks/{agent-booster-wasm-PQYB7VRU.js → agent-booster-wasm-AKAOHSCX.js} +2 -2
  7. package/dist/cli/chunks/{agent-handler-QDAB5NQS.js → agent-handler-MTGPOUVP.js} +2 -2
  8. package/dist/cli/chunks/agent-memory-branch-UFPKWUFK.js +2 -0
  9. package/dist/cli/chunks/aqe-learning-engine-MV7NGY24.js +2 -0
  10. package/dist/cli/chunks/{audit-S7JUYYVP.js → audit-VBEZHNHO.js} +2 -2
  11. package/dist/cli/chunks/base-DZVGMQN2.js +2 -0
  12. package/dist/cli/chunks/better-sqlite3-IRPHIXRU.js +2 -0
  13. package/dist/cli/chunks/brain-handler-7EO3FFRZ.js +68 -0
  14. package/dist/cli/chunks/{branch-enumerator-XK4V5W7L.js → branch-enumerator-MZRGP35N.js} +2 -2
  15. package/dist/cli/chunks/{browser-PALA5PL3.js → browser-VSIWQE7J.js} +2 -2
  16. package/dist/cli/chunks/browser-workflow-3J5YNMEI.js +2 -0
  17. package/dist/cli/chunks/chunk-25LFUL2K.js +79 -0
  18. package/dist/cli/chunks/{chunk-LHJQD2VU.js → chunk-2EC5Z2J4.js} +68 -68
  19. package/dist/cli/chunks/{chunk-4YOMLWEK.js → chunk-2VVV73PW.js} +1 -1
  20. package/dist/cli/chunks/{chunk-BPWXXEH2.js → chunk-2WBCYSUN.js} +128 -128
  21. package/dist/cli/chunks/{chunk-X3KI6JOY.js → chunk-2Z2TFEOL.js} +2 -2
  22. package/dist/cli/chunks/chunk-34U7JDCN.js +2 -0
  23. package/dist/cli/chunks/{chunk-24FKIJNC.js → chunk-3GZKAORV.js} +2 -2
  24. package/dist/cli/chunks/{chunk-72WOAVK6.js → chunk-4D2ZG2QO.js} +1 -1
  25. package/dist/cli/chunks/{chunk-B36CDR4U.js → chunk-4DAOZQ3V.js} +2 -2
  26. package/dist/cli/chunks/{chunk-CL6POIX4.js → chunk-4FMHBBG5.js} +1 -1
  27. package/dist/cli/chunks/{chunk-BXAXGEFC.js → chunk-4FT3PND7.js} +5 -5
  28. package/dist/cli/chunks/{chunk-IGJPMN4I.js → chunk-4LA7IW3V.js} +1 -1
  29. package/dist/cli/chunks/{chunk-JRYGQO2W.js → chunk-4PKXIBX2.js} +1 -1
  30. package/dist/cli/chunks/{chunk-YPFOCNOE.js → chunk-4UH25U4O.js} +1 -1
  31. package/dist/cli/chunks/{chunk-U5RN7YQW.js → chunk-4Z27TRQF.js} +2 -2
  32. package/dist/cli/chunks/{chunk-YW2THB5Q.js → chunk-563PJBDM.js} +2 -2
  33. package/dist/cli/chunks/{chunk-BDIEMZ22.js → chunk-56IWS2KY.js} +2 -2
  34. package/dist/cli/chunks/chunk-5AUKULWO.js +2 -0
  35. package/dist/cli/chunks/{chunk-VSVXUTJN.js → chunk-5L6AU3QK.js} +2 -2
  36. package/dist/cli/chunks/{chunk-RTGGL7D7.js → chunk-5RL66XSH.js} +2 -2
  37. package/dist/cli/chunks/{chunk-YANUP2RO.js → chunk-65M7C6SH.js} +1 -1
  38. package/dist/cli/chunks/{chunk-ESVQ6MEB.js → chunk-6SOJVEU7.js} +2 -2
  39. package/dist/cli/chunks/{chunk-UFUVUO3J.js → chunk-727BDQ3K.js} +2 -2
  40. package/dist/cli/chunks/{chunk-TLHP5EII.js → chunk-7NOIIC7G.js} +1 -1
  41. package/dist/cli/chunks/{chunk-N4TL73TH.js → chunk-7SLN2JGP.js} +8 -8
  42. package/dist/cli/chunks/{chunk-NZ2VCPN4.js → chunk-AA33R5U4.js} +2 -2
  43. package/dist/cli/chunks/{chunk-Y7BHKZFJ.js → chunk-AKSJQ6B3.js} +2 -2
  44. package/dist/cli/chunks/{chunk-3ZOONQG6.js → chunk-BIVIPF4O.js} +1 -1
  45. package/dist/cli/chunks/{chunk-VOS4NQSF.js → chunk-BKCTNRC5.js} +2 -2
  46. package/dist/cli/chunks/{chunk-B6LLWYQ6.js → chunk-BOH22AKC.js} +2 -2
  47. package/dist/cli/chunks/{chunk-OI5NGQO2.js → chunk-BY47GV4T.js} +2 -2
  48. package/dist/cli/chunks/chunk-CCYMJKWX.js +2 -0
  49. package/dist/cli/chunks/chunk-CL3K5EJK.js +2 -0
  50. package/dist/cli/chunks/{chunk-GPQ57KA4.js → chunk-CQBSGYRA.js} +2 -2
  51. package/dist/cli/chunks/{chunk-MZOFWJTM.js → chunk-CQP7ZFME.js} +2 -2
  52. package/dist/cli/chunks/chunk-DBE34QES.js +2 -0
  53. package/dist/cli/chunks/chunk-DHE66JRR.js +12 -0
  54. package/dist/cli/chunks/{chunk-2BZFNEN2.js → chunk-DNLMZTE2.js} +1 -1
  55. package/dist/cli/chunks/{chunk-XLRQYLWW.js → chunk-DSE57A5N.js} +1 -1
  56. package/dist/cli/chunks/{chunk-SUSEVMZT.js → chunk-E25S5E2D.js} +1 -1
  57. package/dist/cli/chunks/{chunk-FEKY7T6Q.js → chunk-FAXVVLPL.js} +2 -2
  58. package/dist/cli/chunks/chunk-FRJLP7IB.js +2 -0
  59. package/dist/cli/chunks/{chunk-CS2KS7LP.js → chunk-FUIHWBVF.js} +1 -1
  60. package/dist/cli/chunks/{chunk-LNQIY6BP.js → chunk-GCMVJS5X.js} +2 -2
  61. package/dist/cli/chunks/{chunk-XT2V2322.js → chunk-GITD7SRQ.js} +2 -2
  62. package/dist/cli/chunks/{chunk-JJO7Y4H3.js → chunk-GK72GUHA.js} +3 -3
  63. package/dist/cli/chunks/{chunk-6EOS7KX2.js → chunk-GPLERTZU.js} +2 -2
  64. package/dist/cli/chunks/{chunk-2E5NQNSU.js → chunk-HW4ISY5B.js} +11 -11
  65. package/dist/cli/chunks/{chunk-HRO6OZQD.js → chunk-ICDXWIFZ.js} +1 -1
  66. package/dist/cli/chunks/{chunk-3NZLZHJI.js → chunk-J4BS6IWE.js} +1 -1
  67. package/dist/cli/chunks/{chunk-4VUPRTVX.js → chunk-JOVINE23.js} +2 -2
  68. package/dist/cli/chunks/chunk-JV7LX6OT.js +95 -0
  69. package/dist/cli/chunks/{chunk-6SVX4DJC.js → chunk-KBA7FBK3.js} +3 -3
  70. package/dist/cli/chunks/chunk-KDDZYXP4.js +2 -0
  71. package/dist/cli/chunks/{chunk-GAOJV3OX.js → chunk-KNVAAVHH.js} +2 -2
  72. package/dist/cli/chunks/{chunk-CWFB6BSA.js → chunk-KQTJ2YLI.js} +4 -4
  73. package/dist/cli/chunks/{chunk-FGA7VIFR.js → chunk-KTYUCZEM.js} +3 -3
  74. package/dist/cli/chunks/{chunk-RU5WAHB7.js → chunk-KZTO5EVM.js} +2 -2
  75. package/dist/cli/chunks/{chunk-IFNIIK34.js → chunk-KZUJBZ7B.js} +3 -3
  76. package/dist/cli/chunks/{chunk-GKNNSCLC.js → chunk-L5WZUPZF.js} +2 -2
  77. package/dist/cli/chunks/{chunk-MDUHYUHF.js → chunk-L5YEPSDU.js} +2 -2
  78. package/dist/cli/chunks/chunk-LCAA6H4J.js +2 -0
  79. package/dist/cli/chunks/{chunk-XRE2HCWG.js → chunk-LMMEUVE5.js} +1 -1
  80. package/dist/cli/chunks/{chunk-7VDBAVTY.js → chunk-MN742FIH.js} +2 -2
  81. package/dist/cli/chunks/chunk-MY4LMIG7.js +180 -0
  82. package/dist/cli/chunks/{chunk-WGMPEW2T.js → chunk-N3F3CX4V.js} +2 -2
  83. package/dist/cli/chunks/{chunk-YVA65UZL.js → chunk-NJY7ZA77.js} +1 -1
  84. package/dist/cli/chunks/{chunk-3IHG3WOY.js → chunk-NM6TIEJ3.js} +3 -3
  85. package/dist/cli/chunks/{chunk-KP5NUODU.js → chunk-NRCKGXJJ.js} +1 -1
  86. package/dist/cli/chunks/{chunk-3ADGXLTM.js → chunk-PFNFC43Q.js} +1 -1
  87. package/dist/cli/chunks/{chunk-4VBTXZRM.js → chunk-PJFLO37I.js} +2 -2
  88. package/dist/cli/chunks/{chunk-XIBDETCS.js → chunk-PNL5G6TE.js} +2 -2
  89. package/dist/cli/chunks/{chunk-AFLLQ5PP.js → chunk-Q4A72ZTV.js} +2 -2
  90. package/dist/cli/chunks/{chunk-EHDQJQ6Y.js → chunk-QEQTC4WQ.js} +5 -5
  91. package/dist/cli/chunks/{chunk-IAV2JMIX.js → chunk-QIH3E775.js} +2 -2
  92. package/dist/cli/chunks/{chunk-GRUUQAR6.js → chunk-QNBQBSAI.js} +2 -2
  93. package/dist/cli/chunks/{chunk-WIEC7VKK.js → chunk-QODE4LM6.js} +2 -2
  94. package/dist/cli/chunks/{chunk-HY6PMO5W.js → chunk-QPRVX4H2.js} +2 -2
  95. package/dist/cli/chunks/chunk-RC5CPXON.js +2 -0
  96. package/dist/cli/chunks/{chunk-TWUWL5EJ.js → chunk-RITN3XR4.js} +2 -2
  97. package/dist/cli/chunks/{chunk-WBQSXPBI.js → chunk-RJROC5M3.js} +2 -2
  98. package/dist/cli/chunks/chunk-RQGYJK7H.js +2 -0
  99. package/dist/cli/chunks/{chunk-XO6PVK2P.js → chunk-S3RDH5CI.js} +2 -2
  100. package/dist/cli/chunks/{chunk-3IUNFTIF.js → chunk-SCF7NRVE.js} +1 -1
  101. package/dist/cli/chunks/chunk-SDTVHR63.js +2 -0
  102. package/dist/cli/chunks/chunk-SGAW2WLI.js +65 -0
  103. package/dist/cli/chunks/{chunk-N2NS2PHA.js → chunk-SNVM4YJS.js} +2 -2
  104. package/dist/cli/chunks/{chunk-JXM26HEE.js → chunk-SRRFWTNF.js} +2 -2
  105. package/dist/cli/chunks/{chunk-UQHYFOBX.js → chunk-STE42EMB.js} +2 -2
  106. package/dist/cli/chunks/{chunk-WJ3DLOXF.js → chunk-T5GV6UIO.js} +2 -2
  107. package/dist/cli/chunks/{chunk-4YS3IJ45.js → chunk-TKF447CW.js} +1 -1
  108. package/dist/cli/chunks/{chunk-ZAPS3UGQ.js → chunk-TTOE336G.js} +3 -3
  109. package/dist/cli/chunks/{chunk-YAGODYIG.js → chunk-UKDOMLBI.js} +3 -3
  110. package/dist/cli/chunks/{chunk-JBANAPWG.js → chunk-V6XBAZNH.js} +1 -1
  111. package/dist/cli/chunks/{chunk-BULKFVYX.js → chunk-VHVWAXCF.js} +1 -1
  112. package/dist/cli/chunks/{chunk-5SKGFSKD.js → chunk-VL7YOOC2.js} +2 -2
  113. package/dist/cli/chunks/{chunk-AKE543X2.js → chunk-VUAO4VFC.js} +2 -2
  114. package/dist/cli/chunks/{chunk-7R6YMLVS.js → chunk-WG4GHAML.js} +2 -2
  115. package/dist/cli/chunks/{chunk-BTREG4IW.js → chunk-WXWY2GAF.js} +2 -2
  116. package/dist/cli/chunks/chunk-X35GP7TR.js +1 -0
  117. package/dist/cli/chunks/chunk-X6LCMOGC.js +2 -0
  118. package/dist/cli/chunks/{chunk-BGXNSCXX.js → chunk-XFMKJ3UD.js} +1 -1
  119. package/dist/cli/chunks/{chunk-BLBRY5UD.js → chunk-XH53ARZD.js} +2 -2
  120. package/dist/cli/chunks/chunk-XIBVVZGB.js +2 -0
  121. package/dist/cli/chunks/chunk-XYJL6DKI.js +2 -0
  122. package/dist/cli/chunks/{chunk-5T2ZQWKF.js → chunk-Y6O7CDLI.js} +2 -2
  123. package/dist/cli/chunks/{chunk-4I2IOUS4.js → chunk-YXCU4CJX.js} +1 -1
  124. package/dist/cli/chunks/{chunk-YR6ZZGH7.js → chunk-Z2IKNC5M.js} +1 -1
  125. package/dist/cli/chunks/{chunk-OLHKGP35.js → chunk-Z54EO6E6.js} +2 -2
  126. package/dist/cli/chunks/{chunk-ZDATDCYN.js → chunk-Z5HXGVXZ.js} +1 -1
  127. package/dist/cli/chunks/{ci-J374KDLI.js → ci-2BCOBWFG.js} +2 -2
  128. package/dist/cli/chunks/ci-output-FB4OJHAC.js +2 -0
  129. package/dist/cli/chunks/{claude-flow-setup-245JLJCN.js → claude-flow-setup-NEEFZTMB.js} +2 -2
  130. package/dist/cli/chunks/client-EF555KYW.js +2 -0
  131. package/dist/cli/chunks/{cline-installer-LBA2M5N3.js → cline-installer-ODO2PS4K.js} +2 -2
  132. package/dist/cli/chunks/{code-U4N4WONM.js → code-NSOF62VE.js} +2 -2
  133. package/dist/cli/chunks/{code-index-extractor-A57Z6BO4.js → code-index-extractor-YQL5XN52.js} +2 -2
  134. package/dist/cli/chunks/{codex-installer-UXMK2N4T.js → codex-installer-SPEY6VYT.js} +2 -2
  135. package/dist/cli/chunks/{completions-W66BSCOE.js → completions-OWKBUMBE.js} +2 -2
  136. package/dist/cli/chunks/complexity-analyzer-PGTXKP73.js +2 -0
  137. package/dist/cli/chunks/{continuedev-installer-LRFZ2SJM.js → continuedev-installer-KGOXAC7L.js} +2 -2
  138. package/dist/cli/chunks/{copilot-installer-CQ3JYBIB.js → copilot-installer-BF3UA3TG.js} +2 -2
  139. package/dist/cli/chunks/cost-tracker-2HDJ66E2.js +2 -0
  140. package/dist/cli/chunks/{coverage-4PUEQXAY.js → coverage-KPA2PHIN.js} +3 -3
  141. package/dist/cli/chunks/cross-domain-router-GXFNK5TS.js +2 -0
  142. package/dist/cli/chunks/{cursor-installer-JZEDEDHA.js → cursor-installer-7CDZFHTV.js} +2 -2
  143. package/dist/cli/chunks/{daemon-B7TWGHXQ.js → daemon-4BPGCKDJ.js} +3 -3
  144. package/dist/cli/chunks/dag-attention-scheduler-2MAVGSBB.js +2 -0
  145. package/dist/cli/chunks/detect-WRPWTGP5.js +2 -0
  146. package/dist/cli/chunks/{domain-handler-FT5FLZWL.js → domain-handler-JZVSJ7AG.js} +2 -2
  147. package/dist/cli/chunks/domain-transfer-XGIZOR2X.js +2 -0
  148. package/dist/cli/chunks/dream-3IKF5XH4.js +2 -0
  149. package/dist/cli/chunks/esm-node-DHAE52OW.js +2 -0
  150. package/dist/cli/chunks/{eval-GHMPFGWV.js → eval-T7YPAS4G.js} +2 -2
  151. package/dist/cli/chunks/{fast-paths-B3R647KN.js → fast-paths-QECJTKCQ.js} +2 -2
  152. package/dist/cli/chunks/{feature-flags-DWS7ARSX.js → feature-flags-LIFURSFZ.js} +2 -2
  153. package/dist/cli/chunks/feature-flags-R4QZYTIW.js +2 -0
  154. package/dist/cli/chunks/file-discovery-4W3K3W4C.js +2 -0
  155. package/dist/cli/chunks/{fleet-EKOKMOMW.js → fleet-NLLQWCI5.js} +3 -3
  156. package/dist/cli/chunks/gnn-wrapper-XEII72LN.js +2 -0
  157. package/dist/cli/chunks/{heartbeat-handler-MBBS4IBU.js → heartbeat-handler-DJ65RE5D.js} +4 -4
  158. package/dist/cli/chunks/{heartbeat-scheduler-XDGMOT7X.js → heartbeat-scheduler-H664265Q.js} +2 -2
  159. package/dist/cli/chunks/hnsw-adapter-DML5KXQR.js +2 -0
  160. package/dist/cli/chunks/hnsw-index-BUPPGVR6.js +2 -0
  161. package/dist/cli/chunks/hnsw-legacy-bridge-SQIDTWAA.js +2 -0
  162. package/dist/cli/chunks/hnswlib-node-WICYCU5U.js +2 -0
  163. package/dist/cli/chunks/{hooks-L5VLZGEK.js → hooks-GZUHUD63.js} +6 -6
  164. package/dist/cli/chunks/hypergraph-engine-MLCDZ6BL.js +2 -0
  165. package/dist/cli/chunks/{hypergraph-handler-3HDGB5SZ.js → hypergraph-handler-NNDDI4R3.js} +3 -3
  166. package/dist/cli/chunks/impact-analyzer-DPTMJRYS.js +2 -0
  167. package/dist/cli/chunks/{init-handler-JDET6WUN.js → init-handler-IJ6BHE6A.js} +6 -6
  168. package/dist/cli/chunks/init-wizard-35PUDJPW.js +2 -0
  169. package/dist/cli/chunks/kernel-2HZ44ZJ4.js +2 -0
  170. package/dist/cli/chunks/{kilocode-installer-GZZG5AFW.js → kilocode-installer-EPZFFPFE.js} +2 -2
  171. package/dist/cli/chunks/{kiro-installer-IWNY5TKH.js → kiro-installer-5VACG3HU.js} +2 -2
  172. package/dist/cli/chunks/knowledge-graph-JL62G72U.js +2 -0
  173. package/dist/cli/chunks/{learning-722ZNSZ6.js → learning-6FITK6XY.js} +3 -3
  174. package/dist/cli/chunks/{llm-router-DNAV746L.js → llm-router-4DDC6AKJ.js} +2 -2
  175. package/dist/cli/chunks/{load-Y3GCUFM4.js → load-KGDNVUBX.js} +2 -2
  176. package/dist/cli/chunks/load-test-LN245SSD.js +2 -0
  177. package/dist/cli/chunks/{mcp-LKPIBZ3W.js → mcp-4LETGVIV.js} +2 -2
  178. package/dist/cli/chunks/{memory-L57MLFOP.js → memory-II4I4QMO.js} +5 -5
  179. package/dist/cli/chunks/memory-backend-SVM7YRIE.js +2 -0
  180. package/dist/cli/chunks/memory-handlers-TQXTOJGQ.js +2 -0
  181. package/dist/cli/chunks/opencode-installer-EU6JCWBW.js +3 -0
  182. package/dist/cli/chunks/{orchestrator-QHSBB2UC.js → orchestrator-YLMGJVSP.js} +5 -5
  183. package/dist/cli/chunks/{pipeline-D3QER35Z.js → pipeline-MPZJWYKK.js} +2 -2
  184. package/dist/cli/chunks/{platform-T4E7Q3RD.js → platform-YH35ZZFZ.js} +2 -2
  185. package/dist/cli/chunks/{plugin-JHW2YPRC.js → plugin-B7JYZFNQ.js} +2 -2
  186. package/dist/cli/chunks/{prime-radiant-advanced-wasm-G7CFNNQV.js → prime-radiant-advanced-wasm-KTUK6UE2.js} +2 -2
  187. package/dist/cli/chunks/protocol-executor-IEN2XB4L.js +2 -0
  188. package/dist/cli/chunks/{protocol-handler-2BQQ4HDM.js → protocol-handler-3NXMVU34.js} +2 -2
  189. package/dist/cli/chunks/{prove-UQ6JFT73.js → prove-H5LMGSUC.js} +2 -2
  190. package/dist/cli/chunks/qe-reasoning-bank-Q3ZV3JRG.js +2 -0
  191. package/dist/cli/chunks/{quality-JRZYMC77.js → quality-RCWHY6GO.js} +2 -2
  192. package/dist/cli/chunks/queen-coordinator-E6ON3JUR.js +2 -0
  193. package/dist/cli/chunks/real-embeddings-NKH4VURF.js +2 -0
  194. package/dist/cli/chunks/{roocode-installer-F4E2LAYR.js → roocode-installer-SB7QJYM3.js} +2 -2
  195. package/dist/cli/chunks/router-WMC3LZ3C.js +2 -0
  196. package/dist/cli/chunks/routing-feedback-VKCZRCE3.js +2 -0
  197. package/dist/cli/chunks/{routing-handler-VNKFUUGB.js → routing-handler-SY7GKG2W.js} +2 -2
  198. package/dist/cli/chunks/ruvector-commands-HATTO3UQ.js +8 -0
  199. package/dist/cli/chunks/rvf-dual-writer-D57EXQUD.js +2 -0
  200. package/dist/cli/chunks/rvf-migration-adapter-OWDYN6KD.js +2 -0
  201. package/dist/cli/chunks/rvf-migration-coordinator-SIQVJB5S.js +2 -0
  202. package/dist/cli/chunks/rvf-native-adapter-C7NBH5UN.js +2 -0
  203. package/dist/cli/chunks/safe-db-5KLXCNXN.js +2 -0
  204. package/dist/cli/chunks/schedule-HAWWOXWB.js +2 -0
  205. package/dist/cli/chunks/scheduler-HTRDY5BC.js +2 -0
  206. package/dist/cli/chunks/{security-EBEG2OPU.js → security-DS3XLZWN.js} +3 -3
  207. package/dist/cli/chunks/shared-rvf-adapter-6I2Z5UGL.js +2 -0
  208. package/dist/cli/chunks/shared-rvf-dual-writer-YB7AH6XJ.js +2 -0
  209. package/dist/cli/chunks/sqlite-persistence-WNNRGTGG.js +2 -0
  210. package/dist/cli/chunks/{status-handler-VZ32M4G4.js → status-handler-TUYHE4FT.js} +2 -2
  211. package/dist/cli/chunks/{structural-health-K6LRCKV6.js → structural-health-XNGBNRRD.js} +2 -2
  212. package/dist/cli/chunks/{sync-MHSHNLIM.js → sync-K6CIRKBB.js} +2 -2
  213. package/dist/cli/chunks/{task-handler-JNOIBZ2G.js → task-handler-7PJY67DR.js} +2 -2
  214. package/dist/cli/chunks/task-handlers-WB5CDWUR.js +2 -0
  215. package/dist/cli/chunks/{test-DO22BNIL.js → test-WV5ALEBB.js} +4 -4
  216. package/dist/cli/chunks/{test-scheduling-VLRQZEFL.js → test-scheduling-N55ZGGA2.js} +3 -3
  217. package/dist/cli/chunks/token-bootstrap-SINWHAKR.js +2 -0
  218. package/dist/cli/chunks/{token-usage-LG3PXRXH.js → token-usage-R7TGEVGL.js} +2 -2
  219. package/dist/cli/chunks/transformers-6DBLXPV7.js +2 -0
  220. package/dist/cli/chunks/{tree-sitter-wasm-parser-FT2KB66N.js → tree-sitter-wasm-parser-7C7FKMQW.js} +2 -2
  221. package/dist/cli/chunks/types-VNPMOKQT.js +2 -0
  222. package/dist/cli/chunks/unified-memory-72SKVZ7Y.js +2 -0
  223. package/dist/cli/chunks/unified-memory-hnsw-TMN2L77W.js +2 -0
  224. package/dist/cli/chunks/unified-persistence-MDN3SRCR.js +2 -0
  225. package/dist/cli/chunks/{validate-VQCRSVNQ.js → validate-53MNIRAF.js} +2 -2
  226. package/dist/cli/chunks/{validate-swarm-A5DHAWTP.js → validate-swarm-ZY4RGUFO.js} +2 -2
  227. package/dist/cli/chunks/{vibium-RZBSL4EB.js → vibium-PBADBIV6.js} +2 -2
  228. package/dist/cli/chunks/visual-security-TRBCXPIB.js +2 -0
  229. package/dist/cli/chunks/{web-tree-sitter-7C4NXEOF.js → web-tree-sitter-O7VI6RLB.js} +2 -2
  230. package/dist/cli/chunks/{windsurf-installer-ES3KPQG3.js → windsurf-installer-HV3C3TAD.js} +2 -2
  231. package/dist/cli/chunks/witness-chain-4WIMYP4X.js +2 -0
  232. package/dist/cli/chunks/witness-chain-JOI2YYGK.js +2 -0
  233. package/dist/cli/chunks/{workflow-JETHX4ML.js → workflow-5RVAQ4TM.js} +4 -4
  234. package/dist/cli/chunks/workflow-orchestrator-2NQ72S3C.js +2 -0
  235. package/dist/cli/chunks/{wrappers-WP5RH745.js → wrappers-RRHCCA3E.js} +2 -2
  236. package/dist/cli/commands/ruvector-commands.js +14 -2
  237. package/dist/cli/index.js +10 -15
  238. package/dist/coordination/agent-memory-branch.d.ts +117 -0
  239. package/dist/coordination/agent-memory-branch.js +213 -0
  240. package/dist/coordination/agent-teams/mailbox.d.ts +43 -0
  241. package/dist/coordination/agent-teams/mailbox.js +130 -4
  242. package/dist/coordination/handlers/handler-utils.d.ts +1 -0
  243. package/dist/coordination/handlers/handler-utils.js +9 -2
  244. package/dist/coordination/handlers/quality-handlers.js +7 -1
  245. package/dist/domains/contract-testing/coordinator.js +11 -0
  246. package/dist/domains/quality-assessment/coherence/gate-controller.d.ts +20 -1
  247. package/dist/domains/quality-assessment/coherence/gate-controller.js +64 -0
  248. package/dist/domains/quality-assessment/coherence/index.d.ts +3 -3
  249. package/dist/domains/quality-assessment/coherence/index.js +2 -2
  250. package/dist/domains/quality-assessment/coherence/types.d.ts +39 -0
  251. package/dist/domains/quality-assessment/coherence/types.js +11 -0
  252. package/dist/domains/quality-assessment/coordinator.d.ts +14 -0
  253. package/dist/domains/quality-assessment/coordinator.js +92 -0
  254. package/dist/domains/test-execution/coordinator.d.ts +19 -0
  255. package/dist/domains/test-execution/coordinator.js +102 -5
  256. package/dist/domains/test-generation/coordinator.js +11 -0
  257. package/dist/domains/test-generation/interfaces.d.ts +2 -0
  258. package/dist/domains/test-generation/services/test-generator.d.ts +9 -0
  259. package/dist/domains/test-generation/services/test-generator.js +37 -0
  260. package/dist/init/agents-installer.d.ts +5 -3
  261. package/dist/init/agents-installer.js +17 -43
  262. package/dist/init/find-package-root.d.ts +22 -0
  263. package/dist/init/find-package-root.js +46 -0
  264. package/dist/init/n8n-installer.d.ts +4 -2
  265. package/dist/init/n8n-installer.js +23 -23
  266. package/dist/init/opencode-installer.d.ts +0 -5
  267. package/dist/init/opencode-installer.js +12 -39
  268. package/dist/init/skills-installer.d.ts +5 -2
  269. package/dist/init/skills-installer.js +15 -37
  270. package/dist/integrations/embeddings/index/HNSWIndex.d.ts +9 -2
  271. package/dist/integrations/embeddings/index/HNSWIndex.js +110 -35
  272. package/dist/integrations/ruvector/cognitive-routing.d.ts +67 -0
  273. package/dist/integrations/ruvector/cognitive-routing.js +208 -0
  274. package/dist/integrations/ruvector/feature-flags.d.ts +84 -0
  275. package/dist/integrations/ruvector/feature-flags.js +59 -0
  276. package/dist/integrations/ruvector/hdc-fingerprint.d.ts +76 -0
  277. package/dist/integrations/ruvector/hdc-fingerprint.js +217 -0
  278. package/dist/integrations/ruvector/hyperbolic-hnsw.d.ts +59 -0
  279. package/dist/integrations/ruvector/hyperbolic-hnsw.js +194 -0
  280. package/dist/integrations/ruvector/index.d.ts +5 -2
  281. package/dist/integrations/ruvector/index.js +13 -2
  282. package/dist/integrations/ruvector/shared-rvf-adapter.d.ts +24 -0
  283. package/dist/integrations/ruvector/shared-rvf-adapter.js +55 -0
  284. package/dist/integrations/ruvector/shared-rvf-dual-writer.d.ts +6 -0
  285. package/dist/integrations/ruvector/shared-rvf-dual-writer.js +38 -0
  286. package/dist/integrations/ruvector/sona-persistence.d.ts +8 -0
  287. package/dist/integrations/ruvector/sona-persistence.js +10 -0
  288. package/dist/integrations/ruvector/vector-delta-tracker.d.ts +96 -0
  289. package/dist/integrations/ruvector/vector-delta-tracker.js +226 -0
  290. package/dist/kernel/agent-coordinator.d.ts +75 -1
  291. package/dist/kernel/agent-coordinator.js +250 -1
  292. package/dist/kernel/hnsw-legacy-bridge.d.ts +38 -0
  293. package/dist/kernel/hnsw-legacy-bridge.js +88 -0
  294. package/dist/kernel/hnsw-shadow-validator.d.ts +91 -0
  295. package/dist/kernel/hnsw-shadow-validator.js +139 -0
  296. package/dist/kernel/index.d.ts +1 -1
  297. package/dist/kernel/index.js +1 -1
  298. package/dist/kernel/interfaces.d.ts +39 -0
  299. package/dist/kernel/kernel.d.ts +23 -0
  300. package/dist/kernel/kernel.js +106 -1
  301. package/dist/kernel/unified-memory.d.ts +1 -1
  302. package/dist/kernel/unified-memory.js +7 -3
  303. package/dist/learning/aqe-learning-engine.d.ts +65 -0
  304. package/dist/learning/aqe-learning-engine.js +134 -0
  305. package/dist/learning/dream/dream-engine.d.ts +6 -1
  306. package/dist/learning/dream/dream-engine.js +37 -2
  307. package/dist/learning/dream/dream-scheduler.d.ts +25 -0
  308. package/dist/learning/dream/dream-scheduler.js +120 -0
  309. package/dist/learning/dream/rvcow-branch-manager.d.ts +6 -3
  310. package/dist/learning/dream/rvcow-branch-manager.js +60 -5
  311. package/dist/learning/experience-capture.d.ts +3 -3
  312. package/dist/learning/hyperbolic-pattern-index.d.ts +82 -0
  313. package/dist/learning/hyperbolic-pattern-index.js +142 -0
  314. package/dist/learning/index.d.ts +3 -3
  315. package/dist/learning/index.js +1 -1
  316. package/dist/learning/metrics-tracker.d.ts +44 -0
  317. package/dist/learning/metrics-tracker.js +37 -0
  318. package/dist/learning/pattern-promotion.d.ts +3 -3
  319. package/dist/learning/pattern-store.d.ts +45 -2
  320. package/dist/learning/pattern-store.js +239 -4
  321. package/dist/learning/qe-patterns.d.ts +1 -1
  322. package/dist/learning/qe-reasoning-bank.js +1 -1
  323. package/dist/learning/rvf-pattern-migration.d.ts +50 -0
  324. package/dist/learning/rvf-pattern-migration.js +106 -0
  325. package/dist/learning/rvf-pattern-store.d.ts +69 -0
  326. package/dist/learning/rvf-pattern-store.js +449 -0
  327. package/dist/mcp/bundle.js +1894 -1804
  328. package/dist/mcp/handlers/index.d.ts +1 -0
  329. package/dist/mcp/handlers/index.js +2 -0
  330. package/dist/mcp/handlers/migration-handlers.d.ts +52 -0
  331. package/dist/mcp/handlers/migration-handlers.js +85 -0
  332. package/dist/mcp/protocol-server.d.ts +1 -0
  333. package/dist/mcp/protocol-server.js +63 -2
  334. package/dist/mcp/types.d.ts +1 -1
  335. package/dist/optimization/early-exit-token-optimizer.d.ts +7 -7
  336. package/dist/optimization/early-exit-token-optimizer.js +3 -3
  337. package/dist/persistence/rvf-consistency-validator.d.ts +85 -0
  338. package/dist/persistence/rvf-consistency-validator.js +182 -0
  339. package/dist/persistence/rvf-migration-adapter.d.ts +125 -0
  340. package/dist/persistence/rvf-migration-adapter.js +303 -0
  341. package/dist/persistence/rvf-migration-coordinator.d.ts +115 -0
  342. package/dist/persistence/rvf-migration-coordinator.js +224 -0
  343. package/dist/persistence/rvf-stage-gate.d.ts +70 -0
  344. package/dist/persistence/rvf-stage-gate.js +163 -0
  345. package/package.json +10 -10
  346. package/dist/cli/chunks/adapter-WBR5NXS3.js +0 -2
  347. package/dist/cli/chunks/aqe-learning-engine-TK4JQCGT.js +0 -2
  348. package/dist/cli/chunks/base-2WXOSMBQ.js +0 -2
  349. package/dist/cli/chunks/better-sqlite3-7KY2RDXO.js +0 -2
  350. package/dist/cli/chunks/brain-handler-PPEGDCN4.js +0 -68
  351. package/dist/cli/chunks/browser-workflow-42F7GK5T.js +0 -2
  352. package/dist/cli/chunks/chunk-263XS447.js +0 -2
  353. package/dist/cli/chunks/chunk-2I7J3O6V.js +0 -2
  354. package/dist/cli/chunks/chunk-3JPRUND5.js +0 -2
  355. package/dist/cli/chunks/chunk-3THRQEZ2.js +0 -95
  356. package/dist/cli/chunks/chunk-4B6NCELM.js +0 -2
  357. package/dist/cli/chunks/chunk-62ADTHV7.js +0 -2
  358. package/dist/cli/chunks/chunk-BR26T7ZS.js +0 -180
  359. package/dist/cli/chunks/chunk-DRT3WKQW.js +0 -2
  360. package/dist/cli/chunks/chunk-FIA6X7UL.js +0 -2
  361. package/dist/cli/chunks/chunk-J3KWWR6Z.js +0 -1
  362. package/dist/cli/chunks/chunk-JZSDOIXA.js +0 -2
  363. package/dist/cli/chunks/chunk-MV6CMOJQ.js +0 -65
  364. package/dist/cli/chunks/chunk-N5UXCLFI.js +0 -2
  365. package/dist/cli/chunks/chunk-OF4D7MYI.js +0 -2
  366. package/dist/cli/chunks/chunk-QOVHWZEP.js +0 -1
  367. package/dist/cli/chunks/chunk-RFSN6IDA.js +0 -79
  368. package/dist/cli/chunks/chunk-X5IJGWYG.js +0 -2
  369. package/dist/cli/chunks/ci-output-7JN7F6CI.js +0 -2
  370. package/dist/cli/chunks/client-MCSNSH2C.js +0 -2
  371. package/dist/cli/chunks/complexity-analyzer-AB4OZARV.js +0 -2
  372. package/dist/cli/chunks/cost-tracker-4F723RB6.js +0 -2
  373. package/dist/cli/chunks/cross-domain-router-OWR5IJ5G.js +0 -2
  374. package/dist/cli/chunks/dag-attention-scheduler-JWO6XI6A.js +0 -2
  375. package/dist/cli/chunks/detect-L6ZZHUSX.js +0 -2
  376. package/dist/cli/chunks/domain-transfer-5Y4FGJAJ.js +0 -2
  377. package/dist/cli/chunks/dream-4TDBIYED.js +0 -2
  378. package/dist/cli/chunks/esm-node-2PKHKOTS.js +0 -2
  379. package/dist/cli/chunks/feature-flags-IVQ3AL4Q.js +0 -2
  380. package/dist/cli/chunks/file-discovery-QFPA6GMV.js +0 -2
  381. package/dist/cli/chunks/gnn-wrapper-OYC55N5E.js +0 -2
  382. package/dist/cli/chunks/hnsw-index-YO7CT23I.js +0 -2
  383. package/dist/cli/chunks/hnswlib-node-56YWVXFE.js +0 -2
  384. package/dist/cli/chunks/hypergraph-engine-A4Y2ZRAG.js +0 -2
  385. package/dist/cli/chunks/impact-analyzer-UEIGXSZ4.js +0 -2
  386. package/dist/cli/chunks/init-wizard-JWZUGIPJ.js +0 -2
  387. package/dist/cli/chunks/kernel-YNDTVKIW.js +0 -2
  388. package/dist/cli/chunks/knowledge-graph-NGJKFTSN.js +0 -2
  389. package/dist/cli/chunks/load-test-GZUBXFF3.js +0 -2
  390. package/dist/cli/chunks/memory-backend-3NQIZUXE.js +0 -2
  391. package/dist/cli/chunks/memory-handlers-MDZQ7HVW.js +0 -2
  392. package/dist/cli/chunks/opencode-installer-4HUB36H5.js +0 -3
  393. package/dist/cli/chunks/protocol-executor-SPUVRDWT.js +0 -2
  394. package/dist/cli/chunks/qe-reasoning-bank-3HBK2FVD.js +0 -2
  395. package/dist/cli/chunks/queen-coordinator-RW3NKO5A.js +0 -2
  396. package/dist/cli/chunks/real-embeddings-GK63VF35.js +0 -2
  397. package/dist/cli/chunks/router-RJGHWDQ3.js +0 -2
  398. package/dist/cli/chunks/routing-feedback-ZXBXFKX6.js +0 -2
  399. package/dist/cli/chunks/ruvector-commands-2TLNHC3A.js +0 -8
  400. package/dist/cli/chunks/rvf-dual-writer-MQW2SJLT.js +0 -2
  401. package/dist/cli/chunks/rvf-native-adapter-LKFKTMUN.js +0 -2
  402. package/dist/cli/chunks/safe-db-G22E5ROA.js +0 -2
  403. package/dist/cli/chunks/schedule-Y7VVCPYV.js +0 -2
  404. package/dist/cli/chunks/scheduler-AUQIFQB7.js +0 -2
  405. package/dist/cli/chunks/shared-rvf-dual-writer-BVSCQAFS.js +0 -2
  406. package/dist/cli/chunks/sqlite-persistence-JAVHUGGL.js +0 -2
  407. package/dist/cli/chunks/task-handlers-P5DSUKND.js +0 -2
  408. package/dist/cli/chunks/token-bootstrap-4VJKGVMK.js +0 -2
  409. package/dist/cli/chunks/transformers-GY7SIKEU.js +0 -2
  410. package/dist/cli/chunks/types-QJGNBKP2.js +0 -2
  411. package/dist/cli/chunks/unified-memory-XYGENQUT.js +0 -2
  412. package/dist/cli/chunks/unified-memory-hnsw-MVEGQBF3.js +0 -2
  413. package/dist/cli/chunks/unified-persistence-PFRCWEUG.js +0 -2
  414. package/dist/cli/chunks/visual-security-V47BLGJM.js +0 -2
  415. package/dist/cli/chunks/witness-chain-BR63P4A7.js +0 -2
  416. package/dist/cli/chunks/workflow-orchestrator-7PZMX3JZ.js +0 -2
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Shared utility: find the agentic-qe package root directory.
3
+ *
4
+ * When esbuild bundles the CLI with code-splitting, `import.meta.url`
5
+ * resolves to `dist/cli/chunks/chunk-XXX.js` (3+ levels deep) instead
6
+ * of the expected `dist/init/skills-installer.js` (2 levels deep).
7
+ * Fixed `../../` traversals land at `dist/` instead of the package root,
8
+ * so skills/agents/helpers can't be found.
9
+ *
10
+ * This module walks up from the caller's directory until it finds a
11
+ * `package.json` with `name === "agentic-qe"`, which works regardless
12
+ * of how deep the bundle puts the calling file.
13
+ */
14
+ import { existsSync, readFileSync } from 'fs';
15
+ import { join, dirname } from 'path';
16
+ import { fileURLToPath } from 'url';
17
+ /**
18
+ * Find the agentic-qe package root by walking up from `import.meta.url`.
19
+ *
20
+ * @param callerMetaUrl – pass `import.meta.url` from the calling module
21
+ * @param maxDepth – how many parent directories to check (default 10)
22
+ * @returns absolute path to the package root, or null if not found
23
+ */
24
+ export function findPackageRoot(callerMetaUrl, maxDepth = 10) {
25
+ let dir = dirname(fileURLToPath(callerMetaUrl));
26
+ for (let i = 0; i < maxDepth; i++) {
27
+ const pkgPath = join(dir, 'package.json');
28
+ if (existsSync(pkgPath)) {
29
+ try {
30
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
31
+ if (pkg.name === 'agentic-qe') {
32
+ return dir;
33
+ }
34
+ }
35
+ catch {
36
+ // Malformed JSON — keep walking
37
+ }
38
+ }
39
+ const parent = dirname(dir);
40
+ if (parent === dir)
41
+ break; // filesystem root
42
+ dir = parent;
43
+ }
44
+ return null;
45
+ }
46
+ //# sourceMappingURL=find-package-root.js.map
@@ -42,11 +42,13 @@ export declare class N8nInstaller {
42
42
  private sourceSkillsDir;
43
43
  constructor(options: N8nInstallerOptions);
44
44
  /**
45
- * Find the source n8n agents directory
45
+ * Find the source n8n agents directory.
46
+ * n8n agents live under .claude/agents/n8n/ in the package root.
46
47
  */
47
48
  private findSourceAgentsDir;
48
49
  /**
49
- * Find the source skills directory
50
+ * Find the source skills directory.
51
+ * Skills are in assets/skills/ (canonical npm source).
50
52
  */
51
53
  private findSourceSkillsDir;
52
54
  /**
@@ -6,12 +6,9 @@
6
6
  * Copies agent definitions from .claude/agents/n8n/ and installs n8n-specific skills.
7
7
  */
8
8
  import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, copyFileSync, } from 'fs';
9
- import { join, dirname } from 'path';
10
- import { fileURLToPath } from 'url';
9
+ import { join } from 'path';
11
10
  import { toErrorMessage } from '../shared/error-utils.js';
12
- // ESM compatibility - __dirname is not available in ES modules
13
- const __filename = fileURLToPath(import.meta.url);
14
- const __dirname = dirname(__filename);
11
+ import { findPackageRoot } from './find-package-root.js';
15
12
  // ============================================================================
16
13
  // N8n Agent Categories
17
14
  // ============================================================================
@@ -78,40 +75,43 @@ export class N8nInstaller {
78
75
  // Source Directory Detection
79
76
  // ==========================================================================
80
77
  /**
81
- * Find the source n8n agents directory
78
+ * Find the source n8n agents directory.
79
+ * n8n agents live under .claude/agents/n8n/ in the package root.
82
80
  */
83
81
  findSourceAgentsDir() {
84
- const possiblePaths = [
85
- // Development: src/init/ or dist/init/ -> project root
86
- join(__dirname, '../../.claude/agents/n8n'),
87
- // From project root
88
- join(process.cwd(), '.claude/agents/n8n'),
89
- // NPM package location
90
- join(__dirname, '../../assets/agents/n8n'),
91
- ];
82
+ const pkgRoot = findPackageRoot(import.meta.url);
83
+ const possiblePaths = [];
84
+ if (pkgRoot) {
85
+ possiblePaths.push(join(pkgRoot, '.claude/agents/n8n'));
86
+ }
87
+ // Local install: in node_modules
88
+ possiblePaths.push(join(this.projectRoot, 'node_modules/agentic-qe/.claude/agents/n8n'));
92
89
  for (const path of possiblePaths) {
93
90
  if (existsSync(path)) {
94
91
  return path;
95
92
  }
96
93
  }
97
- // Default to project root location
98
- return join(process.cwd(), '.claude/agents/n8n');
94
+ return possiblePaths[0];
99
95
  }
100
96
  /**
101
- * Find the source skills directory
97
+ * Find the source skills directory.
98
+ * Skills are in assets/skills/ (canonical npm source).
102
99
  */
103
100
  findSourceSkillsDir() {
104
- const possiblePaths = [
105
- join(__dirname, '../../.claude/skills'),
106
- join(process.cwd(), '.claude/skills'),
107
- join(__dirname, '../../assets/skills'),
108
- ];
101
+ const pkgRoot = findPackageRoot(import.meta.url);
102
+ const possiblePaths = [];
103
+ if (pkgRoot) {
104
+ possiblePaths.push(join(pkgRoot, 'assets/skills'));
105
+ possiblePaths.push(join(pkgRoot, '.claude/skills'));
106
+ }
107
+ // Local install: in node_modules
108
+ possiblePaths.push(join(this.projectRoot, 'node_modules/agentic-qe/assets/skills'));
109
109
  for (const path of possiblePaths) {
110
110
  if (existsSync(path)) {
111
111
  return path;
112
112
  }
113
113
  }
114
- return join(process.cwd(), '.claude/skills');
114
+ return possiblePaths[0];
115
115
  }
116
116
  // ==========================================================================
117
117
  // Installation
@@ -37,11 +37,6 @@ export declare class OpenCodeInstaller {
37
37
  * globally-installed and bundled CLI paths all work correctly (#361).
38
38
  */
39
39
  private findSourceDir;
40
- /**
41
- * Try to find the package root via require.resolve on our own package.json,
42
- * then return <root>/.opencode. Returns null if resolution fails.
43
- */
44
- private resolveViaPackageJson;
45
40
  /**
46
41
  * Check if a directory is a valid source for OpenCode assets
47
42
  * (must exist and contain at least an agents/ or skills/ subdirectory)
@@ -5,13 +5,10 @@
5
5
  * Installs OpenCode agents, skills, tools, and permissions to user projects
6
6
  * when --with-opencode flag is used. Follows the N8n installer pattern.
7
7
  */
8
- import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, copyFileSync, } from 'fs';
9
- import { join, dirname } from 'path';
10
- import { fileURLToPath } from 'url';
8
+ import { existsSync, mkdirSync, readdirSync, writeFileSync, copyFileSync, } from 'fs';
9
+ import { join } from 'path';
11
10
  import { toErrorMessage } from '../shared/error-utils.js';
12
- // ESM compatibility
13
- const __filename = fileURLToPath(import.meta.url);
14
- const __dirname = dirname(__filename);
11
+ import { findPackageRoot } from './find-package-root.js';
15
12
  // ============================================================================
16
13
  // OpenCode Installer Class
17
14
  // ============================================================================
@@ -40,14 +37,14 @@ export class OpenCodeInstaller {
40
37
  */
41
38
  findSourceDir() {
42
39
  const targetDir = join(this.projectRoot, '.opencode');
43
- const possiblePaths = [
44
- // From dist/init/ or src/init/ → package root .opencode/
45
- join(__dirname, '../../.opencode'),
46
- // From dist/cli/ (bundle) package root .opencode/
47
- join(__dirname, '../.opencode'),
48
- // require.resolve fallback: find the package root via its package.json
49
- this.resolveViaPackageJson(),
50
- ].filter((p) => p !== null);
40
+ const pkgRoot = findPackageRoot(import.meta.url);
41
+ const possiblePaths = [];
42
+ if (pkgRoot) {
43
+ // OpenCode assets live at the package root .opencode/ directory
44
+ possiblePaths.push(join(pkgRoot, '.opencode'));
45
+ }
46
+ // Local install: in node_modules
47
+ possiblePaths.push(join(this.projectRoot, 'node_modules/agentic-qe/.opencode'));
51
48
  for (const path of possiblePaths) {
52
49
  // Never use the target directory as the source
53
50
  if (path === targetDir)
@@ -57,31 +54,7 @@ export class OpenCodeInstaller {
57
54
  }
58
55
  }
59
56
  // Return the first package path even if not found — install() will report the error
60
- return possiblePaths[0] ?? join(__dirname, '../../.opencode');
61
- }
62
- /**
63
- * Try to find the package root via require.resolve on our own package.json,
64
- * then return <root>/.opencode. Returns null if resolution fails.
65
- */
66
- resolveViaPackageJson() {
67
- try {
68
- // Walk up from __dirname to find the nearest package.json with our name
69
- let dir = __dirname;
70
- for (let i = 0; i < 5; i++) {
71
- const pkgPath = join(dir, 'package.json');
72
- if (existsSync(pkgPath)) {
73
- const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
74
- if (pkg.name === 'agentic-qe') {
75
- return join(dir, '.opencode');
76
- }
77
- }
78
- dir = dirname(dir);
79
- }
80
- }
81
- catch {
82
- // resolution failed
83
- }
84
- return null;
57
+ return possiblePaths[0] ?? join(this.projectRoot, 'node_modules/agentic-qe/.opencode');
85
58
  }
86
59
  /**
87
60
  * Check if a directory is a valid source for OpenCode assets
@@ -40,8 +40,11 @@ export declare class SkillsInstaller {
40
40
  private sourceSkillsDir;
41
41
  constructor(options: SkillsInstallerOptions);
42
42
  /**
43
- * Find the source skills directory
44
- * Looks in multiple locations to support different installation scenarios
43
+ * Find the source skills directory.
44
+ *
45
+ * Uses findPackageRoot() to reliably locate the package root regardless
46
+ * of esbuild bundle depth (dist/init/, dist/cli/, dist/cli/chunks/, etc.).
47
+ * Prioritises assets/skills/ (canonical npm source) over .claude/skills/.
45
48
  */
46
49
  private findSourceSkillsDir;
47
50
  /**
@@ -6,9 +6,9 @@
6
6
  * Skills are copied from the bundled skills directory to the project's .claude/skills/.
7
7
  */
8
8
  import { existsSync, mkdirSync, readdirSync, statSync, readFileSync, writeFileSync, copyFileSync, unlinkSync, rmdirSync } from 'fs';
9
- import { join, dirname } from 'path';
10
- import { fileURLToPath } from 'url';
9
+ import { join } from 'path';
11
10
  import { toErrorMessage } from '../shared/error-utils.js';
11
+ import { findPackageRoot } from './find-package-root.js';
12
12
  // ============================================================================
13
13
  // Skill Categories (QE Skills Only - Claude Flow skills are managed separately)
14
14
  // ============================================================================
@@ -135,44 +135,22 @@ export class SkillsInstaller {
135
135
  this.sourceSkillsDir = this.findSourceSkillsDir();
136
136
  }
137
137
  /**
138
- * Find the source skills directory
139
- * Looks in multiple locations to support different installation scenarios
138
+ * Find the source skills directory.
139
+ *
140
+ * Uses findPackageRoot() to reliably locate the package root regardless
141
+ * of esbuild bundle depth (dist/init/, dist/cli/, dist/cli/chunks/, etc.).
142
+ * Prioritises assets/skills/ (canonical npm source) over .claude/skills/.
140
143
  */
141
144
  findSourceSkillsDir() {
142
- // Try relative to this module (development)
143
- const moduleDir = dirname(fileURLToPath(import.meta.url));
144
- // Possible locations for skills
145
- const possiblePaths = [
146
- // Development: relative to src/init/ or dist/init/ (2 levels up to project root)
147
- join(moduleDir, '../../.claude/skills'),
148
- // NPM package: assets directory at package root (dist/init -> dist -> package root)
149
- join(moduleDir, '../../assets/skills'),
150
- // Local install: in node_modules
151
- join(this.projectRoot, 'node_modules/agentic-qe/assets/skills'),
152
- join(this.projectRoot, 'node_modules/agentic-qe/assets/skills'),
153
- ];
154
- // For global npm installs, add common global node_modules paths
155
- // Note: We use platform-based heuristics instead of npm prefix lookup
156
- // to avoid dynamic require issues in ESM bundles
157
- const homeDir = process.env.HOME || process.env.USERPROFILE || '';
158
- const isWindows = process.platform === 'win32';
159
- if (isWindows) {
160
- // Windows: npm global is typically in AppData
161
- const appData = process.env.APPDATA || join(homeDir, 'AppData', 'Roaming');
162
- possiblePaths.push(join(appData, 'npm/node_modules/agentic-qe/assets/skills'), join(appData, 'npm/node_modules/agentic-qe/.claude/skills'));
163
- }
164
- else {
165
- // Unix/Linux/macOS: common global prefixes
166
- const globalPrefixes = [
167
- '/usr/local',
168
- '/usr',
169
- join(homeDir, '.npm-global'),
170
- join(homeDir, '.nvm/versions/node', process.version),
171
- ];
172
- for (const prefix of globalPrefixes) {
173
- possiblePaths.push(join(prefix, 'lib/node_modules/agentic-qe/assets/skills'), join(prefix, 'lib/node_modules/agentic-qe/.claude/skills'), join(prefix, 'node_modules/agentic-qe/assets/skills'), join(prefix, 'node_modules/agentic-qe/.claude/skills'));
174
- }
145
+ const pkgRoot = findPackageRoot(import.meta.url);
146
+ const possiblePaths = [];
147
+ if (pkgRoot) {
148
+ // Canonical npm source — assets/ is never a dotfile, always extracted
149
+ possiblePaths.push(join(pkgRoot, 'assets/skills'));
150
+ possiblePaths.push(join(pkgRoot, '.claude/skills'));
175
151
  }
152
+ // Local install: in node_modules
153
+ possiblePaths.push(join(this.projectRoot, 'node_modules/agentic-qe/assets/skills'));
176
154
  for (const skillsPath of possiblePaths) {
177
155
  if (existsSync(skillsPath)) {
178
156
  return skillsPath;
@@ -4,6 +4,9 @@
4
4
  * Shared HNSW indexing between QE and claude-flow per ADR-040.
5
5
  * Performance: 150x-12,500x faster than linear search
6
6
  *
7
+ * When useUnifiedHnsw feature flag is enabled (ADR-071), all namespaces
8
+ * are routed through the unified HnswAdapter backend instead of hnswlib-node.
9
+ *
7
10
  * @module integrations/embeddings/index/HNSWIndex
8
11
  */
9
12
  import type { IEmbedding, IHNSWConfig, EmbeddingNamespace, ISearchOptions } from '../base/types.js';
@@ -18,6 +21,8 @@ export declare class HNSWEmbeddingIndex {
18
21
  private config;
19
22
  private initialized;
20
23
  private nextId;
24
+ private unifiedAdapters;
25
+ private readonly useUnified;
21
26
  constructor(config?: Partial<IHNSWConfig>);
22
27
  /**
23
28
  * Initialize index for a namespace
@@ -51,11 +56,13 @@ export declare class HNSWEmbeddingIndex {
51
56
  metric: string;
52
57
  } | null;
53
58
  /**
54
- * Save index to file
59
+ * Save index to file.
60
+ * Not supported when using unified backend (HnswAdapter manages persistence).
55
61
  */
56
62
  saveIndex(namespace: EmbeddingNamespace, path: string): Promise<void>;
57
63
  /**
58
- * Load index from file
64
+ * Load index from file.
65
+ * Not supported when using unified backend (HnswAdapter manages persistence).
59
66
  */
60
67
  loadIndex(namespace: EmbeddingNamespace, path: string): Promise<void>;
61
68
  /**
@@ -4,12 +4,21 @@
4
4
  * Shared HNSW indexing between QE and claude-flow per ADR-040.
5
5
  * Performance: 150x-12,500x faster than linear search
6
6
  *
7
+ * When useUnifiedHnsw feature flag is enabled (ADR-071), all namespaces
8
+ * are routed through the unified HnswAdapter backend instead of hnswlib-node.
9
+ *
7
10
  * @module integrations/embeddings/index/HNSWIndex
8
11
  */
9
12
  // ESM/CJS interop: hnswlib-node is CommonJS, we import via default export
10
13
  // This pattern matches real-qe-reasoning-bank.ts for consistency
11
14
  import hnswlib from 'hnswlib-node';
12
15
  const { HierarchicalNSW } = hnswlib;
16
+ // ADR-071 Phase 2C: Always use unified HnswAdapter backend.
17
+ // The hnswlib-node legacy path below is retained as dead code for
18
+ // emergency rollback only — production always takes the adapter path.
19
+ function isUnifiedHnswActive() {
20
+ return true;
21
+ }
13
22
  /**
14
23
  * HNSW index manager
15
24
  *
@@ -21,6 +30,9 @@ export class HNSWEmbeddingIndex {
21
30
  config;
22
31
  initialized;
23
32
  nextId;
33
+ // ADR-071: Unified backend adapters per namespace (when useUnifiedHnsw=true)
34
+ unifiedAdapters = null;
35
+ useUnified;
24
36
  constructor(config = {}) {
25
37
  this.config = {
26
38
  M: config.M || 16,
@@ -33,6 +45,10 @@ export class HNSWEmbeddingIndex {
33
45
  this.indexes = new Map();
34
46
  this.initialized = new Set();
35
47
  this.nextId = new Map();
48
+ this.useUnified = isUnifiedHnswActive();
49
+ if (this.useUnified) {
50
+ this.unifiedAdapters = new Map();
51
+ }
36
52
  }
37
53
  /**
38
54
  * Initialize index for a namespace
@@ -41,6 +57,28 @@ export class HNSWEmbeddingIndex {
41
57
  if (this.initialized.has(namespace)) {
42
58
  return;
43
59
  }
60
+ // ADR-071: Route through unified HnswAdapter when flag is enabled
61
+ if (this.useUnified && this.unifiedAdapters) {
62
+ try {
63
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
64
+ const { HnswAdapter } = require('../../../kernel/hnsw-adapter.js');
65
+ const adapter = new HnswAdapter(`embedding-${namespace}`, {
66
+ dimensions: this.config.dimension,
67
+ M: this.config.M,
68
+ efConstruction: this.config.efConstruction,
69
+ efSearch: this.config.efSearch,
70
+ metric: this.config.metric === 'dotproduct' ? 'cosine' : this.config.metric,
71
+ });
72
+ this.unifiedAdapters.set(namespace, adapter);
73
+ this.initialized.add(namespace);
74
+ this.nextId.set(namespace, 0);
75
+ return;
76
+ }
77
+ catch {
78
+ // Fall through to hnswlib-node
79
+ }
80
+ }
81
+ // Legacy path: hnswlib-node
44
82
  // Map our metric names to hnswlib-node space names
45
83
  const spaceMap = {
46
84
  'cosine': 'cosine',
@@ -66,14 +104,23 @@ export class HNSWEmbeddingIndex {
66
104
  if (!this.initialized.has(namespace)) {
67
105
  this.initializeIndex(namespace);
68
106
  }
69
- const index = this.indexes.get(namespace);
70
- // Convert vector to float array
71
- const vector = this.toFloatArray(embedding.vector);
72
107
  // Use provided ID or auto-increment
73
108
  const actualId = id ?? this.nextId.get(namespace);
74
109
  if (id === undefined) {
75
110
  this.nextId.set(namespace, actualId + 1);
76
111
  }
112
+ // ADR-071: Route through unified backend
113
+ const adapter = this.unifiedAdapters?.get(namespace);
114
+ if (adapter) {
115
+ const vector = embedding.vector instanceof Float32Array
116
+ ? embedding.vector
117
+ : new Float32Array(this.toFloatArray(embedding.vector));
118
+ adapter.add(actualId, vector);
119
+ return actualId;
120
+ }
121
+ // Legacy path
122
+ const index = this.indexes.get(namespace);
123
+ const vector = this.toFloatArray(embedding.vector);
77
124
  index.addPoint(vector, actualId);
78
125
  return actualId;
79
126
  }
@@ -81,33 +128,8 @@ export class HNSWEmbeddingIndex {
81
128
  * Add multiple embeddings to index
82
129
  */
83
130
  addEmbeddingsBatch(embeddings) {
84
- const ids = [];
85
- // Group by namespace
86
- const byNamespace = new Map();
87
- for (const item of embeddings) {
88
- const ns = item.embedding.namespace;
89
- if (!byNamespace.has(ns)) {
90
- byNamespace.set(ns, []);
91
- }
92
- byNamespace.get(ns).push(item);
93
- }
94
- // Add to each namespace's index
95
- for (const [namespace, items] of byNamespace.entries()) {
96
- if (!this.initialized.has(namespace)) {
97
- this.initializeIndex(namespace);
98
- }
99
- const index = this.indexes.get(namespace);
100
- for (const item of items) {
101
- const vector = this.toFloatArray(item.embedding.vector);
102
- const actualId = item.id ?? this.nextId.get(namespace);
103
- if (item.id === undefined) {
104
- this.nextId.set(namespace, actualId + 1);
105
- }
106
- index.addPoint(vector, actualId);
107
- ids.push(actualId);
108
- }
109
- }
110
- return ids;
131
+ // ADR-071: Route each item through addEmbedding() which handles unified routing
132
+ return embeddings.map(item => this.addEmbedding(item.embedding, item.id));
111
133
  }
112
134
  /**
113
135
  * Search for similar embeddings
@@ -117,11 +139,22 @@ export class HNSWEmbeddingIndex {
117
139
  if (!this.initialized.has(namespace)) {
118
140
  return [];
119
141
  }
120
- const index = this.indexes.get(namespace);
121
142
  const k = options.limit || 10;
122
- // Convert query vector
143
+ // ADR-071: Route through unified backend
144
+ const adapter = this.unifiedAdapters?.get(namespace);
145
+ if (adapter) {
146
+ const queryVector = query.vector instanceof Float32Array
147
+ ? query.vector
148
+ : new Float32Array(this.toFloatArray(query.vector));
149
+ const results = adapter.search(queryVector, k);
150
+ return results.map(r => ({
151
+ id: r.id,
152
+ distance: 1 - r.score, // convert similarity to distance
153
+ }));
154
+ }
155
+ // Legacy path
156
+ const index = this.indexes.get(namespace);
123
157
  const queryVector = this.toFloatArray(query.vector);
124
- // Search
125
158
  const result = index.searchKnn(queryVector, k);
126
159
  // Convert hnswlib-node result format to our format
127
160
  return result.neighbors.map((id, i) => ({
@@ -136,6 +169,16 @@ export class HNSWEmbeddingIndex {
136
169
  if (!this.initialized.has(namespace)) {
137
170
  return null;
138
171
  }
172
+ // ADR-071: Use unified adapter stats
173
+ const adapter = this.unifiedAdapters?.get(namespace);
174
+ if (adapter) {
175
+ return {
176
+ size: adapter.size(),
177
+ maxElements: 10000,
178
+ dimension: adapter.dimensions(),
179
+ metric: this.config.metric,
180
+ };
181
+ }
139
182
  const index = this.indexes.get(namespace);
140
183
  return {
141
184
  size: index.getCurrentCount(), // Note: This may not be available in all versions
@@ -145,19 +188,33 @@ export class HNSWEmbeddingIndex {
145
188
  };
146
189
  }
147
190
  /**
148
- * Save index to file
191
+ * Save index to file.
192
+ * Not supported when using unified backend (HnswAdapter manages persistence).
149
193
  */
150
194
  async saveIndex(namespace, path) {
151
195
  if (!this.initialized.has(namespace)) {
152
196
  throw new Error(`Namespace ${namespace} not initialized`);
153
197
  }
198
+ // ADR-071: Unified backend manages its own persistence
199
+ if (this.unifiedAdapters?.has(namespace)) {
200
+ console.warn(`[HNSWEmbeddingIndex] saveIndex() is a no-op for namespace '${namespace}' — ` +
201
+ `unified HnswAdapter manages persistence internally.`);
202
+ return;
203
+ }
154
204
  const index = this.indexes.get(namespace);
155
205
  await index.writeIndex(path);
156
206
  }
157
207
  /**
158
- * Load index from file
208
+ * Load index from file.
209
+ * Not supported when using unified backend (HnswAdapter manages persistence).
159
210
  */
160
211
  async loadIndex(namespace, path) {
212
+ // ADR-071: Unified backend manages its own persistence
213
+ if (this.useUnified) {
214
+ console.warn(`[HNSWEmbeddingIndex] loadIndex() is a no-op for namespace '${namespace}' — ` +
215
+ `unified HnswAdapter manages persistence internally. Initialize via initializeIndex() instead.`);
216
+ return;
217
+ }
161
218
  const spaceMap = {
162
219
  'cosine': 'cosine',
163
220
  'euclidean': 'l2',
@@ -174,6 +231,12 @@ export class HNSWEmbeddingIndex {
174
231
  */
175
232
  clearIndex(namespace) {
176
233
  if (this.initialized.has(namespace)) {
234
+ // ADR-071: Clear unified adapter if present
235
+ const adapter = this.unifiedAdapters?.get(namespace);
236
+ if (adapter) {
237
+ adapter.clear?.();
238
+ this.unifiedAdapters.delete(namespace);
239
+ }
177
240
  this.indexes.delete(namespace);
178
241
  this.initialized.delete(namespace);
179
242
  this.nextId.delete(namespace);
@@ -183,6 +246,13 @@ export class HNSWEmbeddingIndex {
183
246
  * Clear all indexes
184
247
  */
185
248
  clearAll() {
249
+ // ADR-071: Clear all unified adapters
250
+ if (this.unifiedAdapters) {
251
+ for (const adapter of this.unifiedAdapters.values()) {
252
+ adapter.clear?.();
253
+ }
254
+ this.unifiedAdapters.clear();
255
+ }
186
256
  this.indexes.clear();
187
257
  this.initialized.clear();
188
258
  this.nextId.clear();
@@ -263,6 +333,11 @@ export class HNSWEmbeddingIndex {
263
333
  if (!this.initialized.has(namespace)) {
264
334
  return 0;
265
335
  }
336
+ // ADR-071: Use unified adapter size when available
337
+ const adapter = this.unifiedAdapters?.get(namespace);
338
+ if (adapter) {
339
+ return adapter.size();
340
+ }
266
341
  return this.nextId.get(namespace) || 0;
267
342
  }
268
343
  }
@@ -0,0 +1,67 @@
1
+ export interface CognitiveRoutingConfig {
2
+ predictionWindowSize: number;
3
+ compressionThreshold: number;
4
+ maxConcurrentStreams: number;
5
+ oscillationFrequencyMs: number;
6
+ }
7
+ export interface RoutedMessage {
8
+ streamId: string;
9
+ senderId: string;
10
+ receiverId: string;
11
+ payload: unknown;
12
+ compressed: boolean;
13
+ originalSize: number;
14
+ compressedSize: number;
15
+ timestamp: number;
16
+ }
17
+ export interface RoutingStats {
18
+ totalMessages: number;
19
+ compressedMessages: number;
20
+ bandwidthSavedBytes: number;
21
+ bandwidthReductionPercent: number;
22
+ activeStreams: number;
23
+ }
24
+ /** Sliding-window predictor: predicts next payload as copy of last seen. */
25
+ export declare class MessagePredictor {
26
+ private readonly windowSize;
27
+ private readonly windows;
28
+ constructor(windowSize: number);
29
+ predict(streamId: string): Record<string, unknown> | null;
30
+ record(streamId: string, payload: unknown): void;
31
+ removeStream(streamId: string): void;
32
+ }
33
+ /** Round-robin multiplexer for concurrent message streams. */
34
+ export declare class OscillatoryRouter {
35
+ private readonly maxStreams;
36
+ readonly cycleMs: number;
37
+ private readonly streamIds;
38
+ private currentIndex;
39
+ constructor(maxStreams: number, cycleMs: number);
40
+ addStream(streamId: string): boolean;
41
+ removeStream(streamId: string): boolean;
42
+ nextStream(): string | null;
43
+ getActiveStreams(): string[];
44
+ get activeCount(): number;
45
+ }
46
+ /** Combines MessagePredictor + OscillatoryRouter for bandwidth-efficient routing. */
47
+ export declare class CognitiveRouter {
48
+ private readonly config;
49
+ private readonly predictor;
50
+ private readonly router;
51
+ private readonly lastPayloads;
52
+ private totalMessages;
53
+ private compressedMessages;
54
+ private totalOriginalBytes;
55
+ private totalCompressedBytes;
56
+ constructor(config?: Partial<CognitiveRoutingConfig>);
57
+ send(streamId: string, senderId: string, receiverId: string, payload: unknown): RoutedMessage;
58
+ receive(message: RoutedMessage): unknown;
59
+ getStats(): RoutingStats;
60
+ addStream(streamId: string): void;
61
+ removeStream(streamId: string): void;
62
+ }
63
+ /** Create a CognitiveRouter if the feature flag is enabled, otherwise null. */
64
+ export declare function createCognitiveRouter(config?: Partial<CognitiveRoutingConfig>): CognitiveRouter | null;
65
+ /** Check if Cognitive Routing feature flag is enabled. */
66
+ export declare function isCognitiveRoutingEnabled(): boolean;
67
+ //# sourceMappingURL=cognitive-routing.d.ts.map