agentic-qe 3.13.12 → 3.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/.claude/helpers/brain-checkpoint.cjs +2 -1
  2. package/.claude/helpers/validate-v3-config.sh +6 -5
  3. package/.claude/hooks/aqe-hook.cjs +14 -14
  4. package/.claude/skills/qe-browser/evals/qe-browser.yaml +30 -41
  5. package/.claude/skills/qe-browser/fixtures/serve-skills.js +37 -0
  6. package/.claude/skills/qe-browser/scripts/lib/vibium.js +1 -1
  7. package/.claude/skills/qe-browser/scripts/smoke-test.sh +56 -25
  8. package/.claude/skills/qe-browser/scripts/visual-diff.js +24 -15
  9. package/.claude/skills/qe-court/SKILL.md +4 -4
  10. package/.claude/skills/qe-court/config-schema.json +38 -0
  11. package/.claude/skills/qe-court/evals/qe-court.yaml +8 -8
  12. package/.claude/skills/skills-manifest.json +1 -1
  13. package/CHANGELOG.md +130 -0
  14. package/assets/skills/qe-browser/evals/qe-browser.yaml +30 -41
  15. package/assets/skills/qe-browser/fixtures/serve-skills.js +37 -0
  16. package/assets/skills/qe-browser/scripts/lib/vibium.js +1 -1
  17. package/assets/skills/qe-browser/scripts/smoke-test.sh +56 -25
  18. package/assets/skills/qe-browser/scripts/visual-diff.js +24 -15
  19. package/assets/skills/qe-court/SKILL.md +4 -4
  20. package/assets/skills/qe-court/config-schema.json +38 -0
  21. package/assets/skills/qe-court/evals/qe-court.yaml +8 -8
  22. package/assets/skills/skills-manifest.json +1 -1
  23. package/dist/cli/brain-commands.d.ts +1 -0
  24. package/dist/cli/brain-commands.js +1 -0
  25. package/dist/cli/bundle.js +7 -7
  26. package/dist/cli/chunks/adapter-I2N7PEKG.js +2 -0
  27. package/dist/cli/chunks/{agent-booster-wasm-7I7LZFNC.js → agent-booster-wasm-OY5Y2CUM.js} +2 -2
  28. package/dist/cli/chunks/{agent-handler-QZZT52BH.js → agent-handler-TUOH55LD.js} +2 -2
  29. package/dist/cli/chunks/{agent-memory-branch-MLQS5Y26.js → agent-memory-branch-XM3IYKT3.js} +2 -2
  30. package/dist/cli/chunks/aqe-learning-engine-U4ALUH6A.js +2 -0
  31. package/dist/cli/chunks/{arena-WRIY37EJ.js → arena-DOCLIEBL.js} +4 -4
  32. package/dist/cli/chunks/{arena-IM4CP6LP.js → arena-UMFJZKG7.js} +2 -2
  33. package/dist/cli/chunks/{audit-BSAQ4EFN.js → audit-KZLU5VLW.js} +3 -3
  34. package/dist/cli/chunks/base-RCYIBNHM.js +2 -0
  35. package/dist/cli/chunks/{better-sqlite3-X2XZUXWZ.js → better-sqlite3-MIEZBNUI.js} +2 -2
  36. package/dist/cli/chunks/brain-handler-6PZN46B7.js +90 -0
  37. package/dist/cli/chunks/{branch-enumerator-NI4Q7DSJ.js → branch-enumerator-XCETHA4F.js} +2 -2
  38. package/dist/cli/chunks/{browser-PXBLORUZ.js → browser-UEXISDCJ.js} +2 -2
  39. package/dist/cli/chunks/browser-workflow-L6TDB5O5.js +2 -0
  40. package/dist/cli/chunks/{chunk-5PNQNBDZ.js → chunk-3AYNHOWS.js} +1 -1
  41. package/dist/cli/chunks/{chunk-NL2SCAGJ.js → chunk-3BRR2FLH.js} +3 -3
  42. package/dist/cli/chunks/chunk-3FFMUB3B.js +14 -0
  43. package/dist/cli/chunks/{chunk-GJJWXRAD.js → chunk-3JMSXOU4.js} +2 -2
  44. package/dist/cli/chunks/{chunk-MB2KLJ6Q.js → chunk-3TMUCJNJ.js} +1 -1
  45. package/dist/cli/chunks/{chunk-JVFZAJ5N.js → chunk-3WSH4HD2.js} +2 -2
  46. package/dist/cli/chunks/{chunk-SCQNISGS.js → chunk-3XRXUVUI.js} +1 -1
  47. package/dist/cli/chunks/{chunk-Z56BBX77.js → chunk-45S5553E.js} +2 -2
  48. package/dist/cli/chunks/{chunk-6BSZHNOC.js → chunk-4MT62HKK.js} +1 -1
  49. package/dist/cli/chunks/{chunk-PVINNJ4P.js → chunk-4ZLFUO4I.js} +2 -2
  50. package/dist/cli/chunks/{chunk-MYVKTG55.js → chunk-5F5V4QYU.js} +3 -3
  51. package/dist/cli/chunks/{chunk-2W3D5A4R.js → chunk-5KP62DC3.js} +2 -2
  52. package/dist/cli/chunks/{chunk-BODFJ3DC.js → chunk-5NSSJUWW.js} +2 -2
  53. package/dist/cli/chunks/{chunk-KXSUDN46.js → chunk-5T6PAUZD.js} +1 -1
  54. package/dist/cli/chunks/{chunk-7ZVO7I4Q.js → chunk-5TYGSQOL.js} +1 -1
  55. package/dist/cli/chunks/{chunk-M7CPJW53.js → chunk-5Y2QFSVZ.js} +2 -2
  56. package/dist/cli/chunks/{chunk-VQD2ELNL.js → chunk-6B77GPWL.js} +2 -2
  57. package/dist/cli/chunks/{chunk-GJUGG6UR.js → chunk-6DDMHZWH.js} +2 -2
  58. package/dist/cli/chunks/{chunk-IPZEBALY.js → chunk-6HMNN2Y2.js} +54 -54
  59. package/dist/cli/chunks/{chunk-M73KM3AZ.js → chunk-6YIMLUH6.js} +160 -26
  60. package/dist/cli/chunks/{chunk-UBOGJHWC.js → chunk-6Z6Y3YBX.js} +1 -1
  61. package/dist/cli/chunks/{chunk-M3354CE4.js → chunk-75SC3GEX.js} +2 -2
  62. package/dist/cli/chunks/{chunk-TJVTV3HP.js → chunk-7AF55H2D.js} +2 -2
  63. package/dist/cli/chunks/{chunk-3XVZHJQT.js → chunk-7AYTM426.js} +1 -1
  64. package/dist/cli/chunks/{chunk-U5G6OC2C.js → chunk-7GF6IRSU.js} +2 -2
  65. package/dist/cli/chunks/{chunk-LRO74LPA.js → chunk-7XL2D56F.js} +4 -4
  66. package/dist/cli/chunks/{chunk-MGKH4LCM.js → chunk-A6RB34Y6.js} +1 -1
  67. package/dist/cli/chunks/{chunk-X2SZCVDA.js → chunk-AESYVAPH.js} +8 -7
  68. package/dist/cli/chunks/{chunk-3ASVQILY.js → chunk-AZUC7E5S.js} +2 -2
  69. package/dist/cli/chunks/{chunk-R7LGVJMZ.js → chunk-B6Y6AF4M.js} +2 -2
  70. package/dist/cli/chunks/chunk-C3XNFIOM.js +2 -0
  71. package/dist/cli/chunks/{chunk-ZSAGRDXA.js → chunk-CBWF42ET.js} +2 -2
  72. package/dist/cli/chunks/{chunk-VNODKACB.js → chunk-CCZZZBAO.js} +2 -2
  73. package/dist/cli/chunks/{chunk-5E76HULA.js → chunk-CGDW47WP.js} +2 -2
  74. package/dist/cli/chunks/chunk-CGZ7LTUK.js +2 -0
  75. package/dist/cli/chunks/{chunk-6KI6LAAZ.js → chunk-D6RCRTTR.js} +2 -2
  76. package/dist/cli/chunks/{chunk-TB2N3CAK.js → chunk-DFXQLHQM.js} +2 -2
  77. package/dist/cli/chunks/chunk-DKSLJZVA.js +2 -0
  78. package/dist/cli/chunks/{chunk-JTYCOFTD.js → chunk-DKUKGBJE.js} +1 -1
  79. package/dist/cli/chunks/{chunk-AN5CGTTJ.js → chunk-DKXSJDII.js} +2 -2
  80. package/dist/cli/chunks/chunk-EEJP3WTQ.js +4 -0
  81. package/dist/cli/chunks/{chunk-ZMYV4R32.js → chunk-EHW62JL2.js} +1 -1
  82. package/dist/cli/chunks/{chunk-WYFAPA2G.js → chunk-EPBWFTHH.js} +2 -2
  83. package/dist/cli/chunks/{chunk-P6EFKHNI.js → chunk-ERTGGFXZ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-G45AOQDZ.js → chunk-F7TRO2OM.js} +1 -1
  85. package/dist/cli/chunks/{chunk-XT473WPO.js → chunk-FFRKTZYP.js} +2 -2
  86. package/dist/cli/chunks/{chunk-5VSS2RBD.js → chunk-FH7SCX2I.js} +2 -2
  87. package/dist/cli/chunks/{chunk-44NPKZGI.js → chunk-FHBGALBG.js} +2 -2
  88. package/dist/cli/chunks/{chunk-NTALX2YC.js → chunk-FOAFRC2W.js} +2 -2
  89. package/dist/cli/chunks/{chunk-7LATB5IR.js → chunk-FPBQ7BXU.js} +2 -2
  90. package/dist/cli/chunks/{chunk-AKUDUB3O.js → chunk-FRRRDCXY.js} +2 -2
  91. package/dist/cli/chunks/{chunk-NG6A7LCG.js → chunk-FZ47ZCRL.js} +1 -1
  92. package/dist/cli/chunks/{chunk-VD53LBF7.js → chunk-GH3NJOTC.js} +3 -3
  93. package/dist/cli/chunks/{chunk-NDRZZSD5.js → chunk-GO66DCIZ.js} +2 -2
  94. package/dist/cli/chunks/{chunk-Z6DSYLAG.js → chunk-GRVR3Y6I.js} +1 -1
  95. package/dist/cli/chunks/chunk-GYTWUOKU.js +65 -0
  96. package/dist/cli/chunks/{chunk-6KKVMPPR.js → chunk-H2DX36SC.js} +2 -2
  97. package/dist/cli/chunks/{chunk-NJ3QXJ54.js → chunk-H5LSXVWY.js} +2 -2
  98. package/dist/cli/chunks/{chunk-HQWFZQMJ.js → chunk-HBAQVJDP.js} +2 -2
  99. package/dist/cli/chunks/{chunk-33YZGOT6.js → chunk-HCCILQGN.js} +2 -2
  100. package/dist/cli/chunks/{chunk-KRZYWVS3.js → chunk-HJD52N32.js} +2 -2
  101. package/dist/cli/chunks/{chunk-IPDM3CAK.js → chunk-HKU5PPS7.js} +1 -1
  102. package/dist/cli/chunks/{chunk-7RVLVIAI.js → chunk-HPQU6XZH.js} +1 -1
  103. package/dist/cli/chunks/{chunk-TWUWLSGQ.js → chunk-HRUQWABO.js} +10 -10
  104. package/dist/cli/chunks/{chunk-HAJG44BD.js → chunk-IGRTQ6VT.js} +2 -2
  105. package/dist/cli/chunks/{chunk-WXU7FAEB.js → chunk-IIBXGHZT.js} +2 -2
  106. package/dist/cli/chunks/{chunk-QG5L2JM5.js → chunk-IYB3GRXF.js} +10 -10
  107. package/dist/cli/chunks/{chunk-NNLZAVFH.js → chunk-IYIMLLUV.js} +1 -1
  108. package/dist/cli/chunks/{chunk-SXFSJJZF.js → chunk-J2VF7ZO7.js} +2 -2
  109. package/dist/cli/chunks/{chunk-4FVOJBEU.js → chunk-J33LKXVH.js} +1 -1
  110. package/dist/cli/chunks/{chunk-IOJ34SXJ.js → chunk-J7VAD4RG.js} +2 -2
  111. package/dist/cli/chunks/{chunk-VQCLSX7T.js → chunk-JJ4GUO4K.js} +1 -1
  112. package/dist/cli/chunks/{chunk-QM4Z7TQH.js → chunk-JMULRLD4.js} +1 -1
  113. package/dist/cli/chunks/{chunk-LXVT6JXO.js → chunk-JNSTKE3K.js} +2 -2
  114. package/dist/cli/chunks/{chunk-SOS37ECY.js → chunk-JZUWPDVS.js} +1 -1
  115. package/dist/cli/chunks/chunk-KHUO4NCW.js +11 -0
  116. package/dist/cli/chunks/chunk-KXMW7XTJ.js +2 -0
  117. package/dist/cli/chunks/{chunk-4AITMWFZ.js → chunk-KXTN3FR4.js} +2 -2
  118. package/dist/cli/chunks/{chunk-4Z4X2ND4.js → chunk-L4WATX6B.js} +2 -2
  119. package/dist/cli/chunks/{chunk-GMLRIZ4E.js → chunk-L66BWYQH.js} +1 -1
  120. package/dist/cli/chunks/{chunk-52VGZJSD.js → chunk-LJ63HPPN.js} +1 -1
  121. package/dist/cli/chunks/{chunk-WE3VKDMK.js → chunk-LMPK63PO.js} +3 -3
  122. package/dist/cli/chunks/{chunk-S6WHYOWV.js → chunk-LQDFWLKK.js} +27 -25
  123. package/dist/cli/chunks/{chunk-EG73WYAW.js → chunk-LSXQPMPI.js} +2 -2
  124. package/dist/cli/chunks/{chunk-NJ4YVAG7.js → chunk-MDLLEUFN.js} +3 -3
  125. package/dist/cli/chunks/{chunk-YQOQVSYU.js → chunk-MFAN5W27.js} +1 -1
  126. package/dist/cli/chunks/{chunk-A5RWLPVT.js → chunk-MZ2PJUN6.js} +2 -2
  127. package/dist/cli/chunks/{chunk-HRTSYT4N.js → chunk-N22LMACN.js} +2 -2
  128. package/dist/cli/chunks/{chunk-L3GBNX7B.js → chunk-NAJCQJSK.js} +2 -2
  129. package/dist/cli/chunks/{chunk-XM5I7J5S.js → chunk-ND6JBUVH.js} +2 -2
  130. package/dist/cli/chunks/{chunk-YL2GOJF6.js → chunk-NEEZ6M4W.js} +2 -2
  131. package/dist/cli/chunks/{chunk-DGFINXUE.js → chunk-NNJ63W77.js} +1 -1
  132. package/dist/cli/chunks/{chunk-G6FJHDUG.js → chunk-O7KF3GBV.js} +1 -1
  133. package/dist/cli/chunks/{chunk-RP2BRRLX.js → chunk-OBKMLOHU.js} +2 -2
  134. package/dist/cli/chunks/{chunk-AOOCV56W.js → chunk-OBLHI4HA.js} +1 -1
  135. package/dist/cli/chunks/{chunk-OZ53BIY5.js → chunk-ODNLKYOM.js} +1 -1
  136. package/dist/cli/chunks/{chunk-VBHA4SDU.js → chunk-PMREFRPP.js} +2 -2
  137. package/dist/cli/chunks/{chunk-ASWWBNX2.js → chunk-PMUF7WU6.js} +2 -2
  138. package/dist/cli/chunks/{chunk-I5SXLV7D.js → chunk-PS5NIMWJ.js} +2 -2
  139. package/dist/cli/chunks/chunk-PS6Y662P.js +13 -0
  140. package/dist/cli/chunks/{chunk-N4OQ4D4V.js → chunk-PYAH4K2U.js} +2 -2
  141. package/dist/cli/chunks/{chunk-H3GAR4SV.js → chunk-PZZX57ZA.js} +2 -2
  142. package/dist/cli/chunks/chunk-QAE4BOIV.js +2 -0
  143. package/dist/cli/chunks/{chunk-7A4WTRWI.js → chunk-QIY43XQJ.js} +1 -1
  144. package/dist/cli/chunks/{chunk-MLXLGBQZ.js → chunk-QM6EJHP5.js} +1 -1
  145. package/dist/cli/chunks/{chunk-4ANJV6I4.js → chunk-QMTBWHGR.js} +3 -3
  146. package/dist/cli/chunks/{chunk-IT5QIUUA.js → chunk-RCHDSUVU.js} +2 -2
  147. package/dist/cli/chunks/{chunk-AYH3DMW2.js → chunk-RUEHSOE6.js} +1 -1
  148. package/dist/cli/chunks/{chunk-DCVFHVPR.js → chunk-RVCMZUSJ.js} +2 -2
  149. package/dist/cli/chunks/{chunk-2JAC57JE.js → chunk-RXHI6CKK.js} +1 -1
  150. package/dist/cli/chunks/{chunk-QXO35J6F.js → chunk-RXPHQ4ZE.js} +2 -2
  151. package/dist/cli/chunks/{chunk-FI6J3UHJ.js → chunk-RYHCYTFE.js} +1 -1
  152. package/dist/cli/chunks/{chunk-DFLASG3B.js → chunk-S4WIAKPL.js} +1 -1
  153. package/dist/cli/chunks/{chunk-2VY7FL6A.js → chunk-S53ZUAVI.js} +2 -2
  154. package/dist/cli/chunks/{chunk-4M7YZ2X7.js → chunk-SEKOMKNG.js} +1 -1
  155. package/dist/cli/chunks/{chunk-UC4EIULB.js → chunk-SZRDEPUY.js} +19 -19
  156. package/dist/cli/chunks/chunk-T7XYQX5G.js +24 -0
  157. package/dist/cli/chunks/{chunk-OG3DBHIV.js → chunk-TF33GKWA.js} +2 -2
  158. package/dist/cli/chunks/{chunk-2VTX4SYW.js → chunk-TGFJUL6M.js} +2 -2
  159. package/dist/cli/chunks/{chunk-4THFPRFM.js → chunk-TLD727EF.js} +2 -2
  160. package/dist/cli/chunks/{chunk-7PCIN7UN.js → chunk-TQ2JZVZ3.js} +2 -2
  161. package/dist/cli/chunks/{chunk-UWZYXI3R.js → chunk-TT7DF2GX.js} +2 -2
  162. package/dist/cli/chunks/{chunk-X3JNFQW2.js → chunk-UCJEAK7D.js} +2 -2
  163. package/dist/cli/chunks/{chunk-AM42ROKZ.js → chunk-UN7EHLRV.js} +1 -1
  164. package/dist/cli/chunks/{chunk-42AS3HPO.js → chunk-UUE5CBZQ.js} +2 -2
  165. package/dist/cli/chunks/{chunk-E67ZXRG6.js → chunk-UWRMPRY5.js} +1 -1
  166. package/dist/cli/chunks/{chunk-4YFXF5AQ.js → chunk-VEWYUEVY.js} +5 -5
  167. package/dist/cli/chunks/{chunk-UJUK6T4V.js → chunk-VUXHJPUS.js} +2 -2
  168. package/dist/cli/chunks/{chunk-VA2ORJB5.js → chunk-VVP2ROXD.js} +2 -2
  169. package/dist/cli/chunks/{chunk-BZIPYXSW.js → chunk-WFJKLM6Z.js} +3 -3
  170. package/dist/cli/chunks/{chunk-MLFELTJX.js → chunk-X5G3UDWP.js} +2 -2
  171. package/dist/cli/chunks/{chunk-IQH2RDN3.js → chunk-Y63V33M6.js} +5 -5
  172. package/dist/cli/chunks/{chunk-XIKYUBIV.js → chunk-YXN47QOI.js} +2 -2
  173. package/dist/cli/chunks/{chunk-RP5VFZJO.js → chunk-Z5YU2TDS.js} +2 -2
  174. package/dist/cli/chunks/{chunk-KYJBJ56M.js → chunk-ZAHCVRR7.js} +2 -2
  175. package/dist/cli/chunks/{chunk-66OQ7AB3.js → chunk-ZC3HC6FO.js} +1 -1
  176. package/dist/cli/chunks/{ci-QAUD62WH.js → ci-Q2VX75PS.js} +2 -2
  177. package/dist/cli/chunks/{ci-output-TZDVTNE7.js → ci-output-MD5GTVR2.js} +2 -2
  178. package/dist/cli/chunks/{circuit-breaker-ZWPHJ7YJ.js → circuit-breaker-JMRLG2XI.js} +2 -2
  179. package/dist/cli/chunks/{claude-flow-setup-SCB4EURN.js → claude-flow-setup-IMXYALBU.js} +2 -2
  180. package/dist/cli/chunks/client-L4PIXCGV.js +2 -0
  181. package/dist/cli/chunks/{cline-installer-EHZLMLXF.js → cline-installer-HWFASEGE.js} +2 -2
  182. package/dist/cli/chunks/{code-3N6PBJMK.js → code-3V37TCAD.js} +2 -2
  183. package/dist/cli/chunks/{code-index-extractor-6DIKHNRI.js → code-index-extractor-5V54WGFL.js} +2 -2
  184. package/dist/cli/chunks/codex-installer-UCA5AVE6.js +14 -0
  185. package/dist/cli/chunks/{completions-5MKWWCCE.js → completions-2DMRCQU6.js} +2 -2
  186. package/dist/cli/chunks/{complexity-analyzer-TPM4IPEK.js → complexity-analyzer-MMQRXBTD.js} +2 -2
  187. package/dist/cli/chunks/{continuedev-installer-VXODKGVX.js → continuedev-installer-FAARXP3S.js} +2 -2
  188. package/dist/cli/chunks/{copilot-installer-PVD5O56P.js → copilot-installer-AKQALMB5.js} +2 -2
  189. package/dist/cli/chunks/core-handlers-KROSXP4V.js +2 -0
  190. package/dist/cli/chunks/{cost-tracker-JOMZEQF3.js → cost-tracker-AXWHDND5.js} +2 -2
  191. package/dist/cli/chunks/{coverage-HTXLEV3B.js → coverage-ZLSKKCG5.js} +3 -3
  192. package/dist/cli/chunks/cross-domain-router-WMTYBOON.js +2 -0
  193. package/dist/cli/chunks/{cursor-installer-SHKDTDDZ.js → cursor-installer-UALCQKVD.js} +2 -2
  194. package/dist/cli/chunks/{daemon-FCFEWVVJ.js → daemon-4LNOPJGN.js} +3 -3
  195. package/dist/cli/chunks/{daemon-PN4FEPLE.js → daemon-K3DFGCXC.js} +4 -4
  196. package/dist/cli/chunks/{dag-attention-scheduler-PLOHU5SR.js → dag-attention-scheduler-LCQ7MYKC.js} +2 -2
  197. package/dist/cli/chunks/{detect-F3H4ZEZY.js → detect-P7PEN3MZ.js} +2 -2
  198. package/dist/cli/chunks/{dist-node-5TC665N6.js → dist-node-I72BJC2D.js} +2 -2
  199. package/dist/cli/chunks/{domain-handler-ZIWVFXCU.js → domain-handler-LROF6KWN.js} +2 -2
  200. package/dist/cli/chunks/{domain-transfer-7Q5JYMYR.js → domain-transfer-M2ZSSTPV.js} +2 -2
  201. package/dist/cli/chunks/dream-AV63YQ2Y.js +2 -0
  202. package/dist/cli/chunks/embed-and-insert-pattern-MTBPUGO4.js +3 -0
  203. package/dist/cli/chunks/{eval-E2K2T75A.js → eval-O24ALB3W.js} +2 -2
  204. package/dist/cli/chunks/{experience-capture-middleware-Z5SE2O53.js → experience-capture-middleware-7JXEOGRE.js} +3 -3
  205. package/dist/cli/chunks/{fast-paths-3H52RSUK.js → fast-paths-4CFYJV4U.js} +2 -2
  206. package/dist/cli/chunks/{feature-flags-ONIKUZVK.js → feature-flags-CHPUA7IM.js} +2 -2
  207. package/dist/cli/chunks/{feature-flags-LUHSMHPS.js → feature-flags-E6PIM6ZB.js} +2 -2
  208. package/dist/cli/chunks/{file-discovery-FLYSYSS4.js → file-discovery-2ANIAUCP.js} +2 -2
  209. package/dist/cli/chunks/{fleet-6OJUAAKV.js → fleet-2MQ3OGCP.js} +3 -3
  210. package/dist/cli/chunks/{gnn-wrapper-PUL6B7KZ.js → gnn-wrapper-P7JW3622.js} +2 -2
  211. package/dist/cli/chunks/{heartbeat-handler-HGHHDUDY.js → heartbeat-handler-WWWZSA7V.js} +4 -4
  212. package/dist/cli/chunks/heartbeat-scheduler-5IZUGMC2.js +2 -0
  213. package/dist/cli/chunks/hnsw-adapter-NV2NNBJL.js +2 -0
  214. package/dist/cli/chunks/hnsw-index-GRJ3KA2O.js +2 -0
  215. package/dist/cli/chunks/{hnsw-legacy-bridge-NDZSNMYX.js → hnsw-legacy-bridge-W634ZOTV.js} +2 -2
  216. package/dist/cli/chunks/{hnswlib-node-PISLKSO2.js → hnswlib-node-SLZDLMKM.js} +2 -2
  217. package/dist/cli/chunks/{hooks-WYG54MRI.js → hooks-3BFAZGG7.js} +10 -10
  218. package/dist/cli/chunks/{hypergraph-engine-EDHKHZZ2.js → hypergraph-engine-XJSGXP2J.js} +2 -2
  219. package/dist/cli/chunks/{hypergraph-handler-OCHZAPPL.js → hypergraph-handler-RVUWZMOX.js} +3 -3
  220. package/dist/cli/chunks/impact-analyzer-YM4QUWVH.js +2 -0
  221. package/dist/cli/chunks/{init-handler-5TCJ672H.js → init-handler-FYOZNNNO.js} +9 -8
  222. package/dist/cli/chunks/init-wizard-YESXGIK6.js +2 -0
  223. package/dist/cli/chunks/kernel-VH5SKESU.js +2 -0
  224. package/dist/cli/chunks/{kilocode-installer-SWUQRCTZ.js → kilocode-installer-MAAKFVSB.js} +2 -2
  225. package/dist/cli/chunks/{kiro-installer-L22EBAM5.js → kiro-installer-GX3TLZC5.js} +2 -2
  226. package/dist/cli/chunks/knowledge-graph-F3NL4WJV.js +2 -0
  227. package/dist/cli/chunks/learning-T4QZ6C26.js +122 -0
  228. package/dist/cli/chunks/{llm-router-F2L4LFT2.js → llm-router-N2M4WXOC.js} +14 -14
  229. package/dist/cli/chunks/llm-router-service-HQYCJMPK.js +2 -0
  230. package/dist/cli/chunks/{load-A4ZF2KHC.js → load-6RU3G4P2.js} +2 -2
  231. package/dist/cli/chunks/load-test-GWRGKWMN.js +2 -0
  232. package/dist/cli/chunks/{mcp-T2Z46NNK.js → mcp-EFBO7BAU.js} +2 -2
  233. package/dist/cli/chunks/{memory-PUC3J6XC.js → memory-AXU2M3DN.js} +5 -5
  234. package/dist/cli/chunks/memory-backend-7A2PFKPV.js +2 -0
  235. package/dist/cli/chunks/memory-handlers-65CXN76C.js +2 -0
  236. package/dist/cli/chunks/{multi-model-executor-U5L4FI4O.js → multi-model-executor-W7AFGVNH.js} +2 -2
  237. package/dist/cli/chunks/{opencode-installer-UWI6KHYH.js → opencode-installer-KJE2RLCH.js} +2 -2
  238. package/dist/cli/chunks/{orchestrator-3BEI7R5D.js → orchestrator-CL6MLGVU.js} +22 -24
  239. package/dist/cli/chunks/pattern-null-store-K2WPRYCP.js +2 -0
  240. package/dist/cli/chunks/{pattern-usage-recorder-EGWUI5LU.js → pattern-usage-recorder-7SNSJ7K2.js} +2 -2
  241. package/dist/cli/chunks/{pipeline-JG6M4RHD.js → pipeline-3UU6ON3F.js} +2 -2
  242. package/dist/cli/chunks/platform-SNMPIDIT.js +2 -0
  243. package/dist/cli/chunks/{plugin-EEGN3PMK.js → plugin-65IIUUCU.js} +2 -2
  244. package/dist/cli/chunks/{prime-radiant-advanced-wasm-7KZAINFT.js → prime-radiant-advanced-wasm-WWWJRLRP.js} +2 -2
  245. package/dist/cli/chunks/protocol-executor-TJDLEHND.js +2 -0
  246. package/dist/cli/chunks/{protocol-handler-UCEHYK2R.js → protocol-handler-SEBHCLLJ.js} +2 -2
  247. package/dist/cli/chunks/{prove-JSNG75VD.js → prove-N4X7CCJ4.js} +2 -2
  248. package/dist/cli/chunks/qe-reasoning-bank-CGRMFPDM.js +2 -0
  249. package/dist/cli/chunks/{quality-7SRM2HBM.js → quality-LBCJWXMU.js} +2 -2
  250. package/dist/cli/chunks/quality-gate-KZIQI7QT.js +7 -0
  251. package/dist/cli/chunks/queen-coordinator-FKP6QZAQ.js +2 -0
  252. package/dist/cli/chunks/real-embeddings-XCZFHFME.js +2 -0
  253. package/dist/cli/chunks/{roocode-installer-UYQK64BZ.js → roocode-installer-P3O6B7PT.js} +2 -2
  254. package/dist/cli/chunks/router-KZ5BISAM.js +2 -0
  255. package/dist/cli/chunks/routing-feedback-O4Y5TTR6.js +2 -0
  256. package/dist/cli/chunks/{routing-handler-PY3KPDTH.js → routing-handler-OXZ4DOV4.js} +2 -2
  257. package/dist/cli/chunks/{ruvector-commands-GCAOUTYS.js → ruvector-commands-PSY5IDSL.js} +2 -2
  258. package/dist/cli/chunks/rvf-dual-writer-NG3UF3D5.js +2 -0
  259. package/dist/cli/chunks/rvf-migration-adapter-PUHVTKQY.js +2 -0
  260. package/dist/cli/chunks/rvf-migration-coordinator-4SUT7GTJ.js +2 -0
  261. package/dist/cli/chunks/rvf-native-adapter-ODXFKZ6G.js +2 -0
  262. package/dist/cli/chunks/{rvf-store-integrity-HNDKOM4L.js → rvf-store-integrity-TCKC22FH.js} +2 -2
  263. package/dist/cli/chunks/safe-db-BUQDNH2R.js +2 -0
  264. package/dist/cli/chunks/schedule-ZXNDZNNB.js +2 -0
  265. package/dist/cli/chunks/scheduler-YUQQWWW3.js +2 -0
  266. package/dist/cli/chunks/{security-MQ2VB7PY.js → security-RQGUQGSI.js} +3 -3
  267. package/dist/cli/chunks/{shared-rvf-adapter-TAZEU6QK.js → shared-rvf-adapter-ZJFN52C2.js} +2 -2
  268. package/dist/cli/chunks/{shared-rvf-dual-writer-B7N6AOCY.js → shared-rvf-dual-writer-V2R37HWV.js} +2 -2
  269. package/dist/cli/chunks/sqlite-persistence-HVSX46C7.js +2 -0
  270. package/dist/cli/chunks/{status-handler-NZP7DFHE.js → status-handler-XEKWNVDR.js} +2 -2
  271. package/dist/cli/chunks/{structural-health-ALLUQ4X6.js → structural-health-QMIW6WUN.js} +2 -2
  272. package/dist/cli/chunks/{sync-WJJG5J6V.js → sync-GDYJ2ULT.js} +2 -2
  273. package/dist/cli/chunks/{sync-MM7OCUYD.js → sync-H5SXWXPP.js} +2 -2
  274. package/dist/cli/chunks/{task-handler-CAQUEEB4.js → task-handler-EPLKCQHY.js} +2 -2
  275. package/dist/cli/chunks/{task-handlers-25BJ7D3W.js → task-handlers-22NTLWTC.js} +3 -3
  276. package/dist/cli/chunks/{test-HW7GVGVN.js → test-WHJFRZ3F.js} +4 -4
  277. package/dist/cli/chunks/{test-scheduling-HTMFJMSP.js → test-scheduling-KZVFZOQN.js} +3 -3
  278. package/dist/cli/chunks/token-bootstrap-BW5WA6PY.js +2 -0
  279. package/dist/cli/chunks/{token-usage-RJZDMBDP.js → token-usage-4A4O57R6.js} +2 -2
  280. package/dist/cli/chunks/{transformers-3YFW3EUO.js → transformers-FYTBRV46.js} +2 -2
  281. package/dist/cli/chunks/{tree-sitter-wasm-parser-U3PQPIK7.js → tree-sitter-wasm-parser-TZIJPLF3.js} +2 -2
  282. package/dist/cli/chunks/{types-7Q762WDO.js → types-B2L6LKFA.js} +2 -2
  283. package/dist/cli/chunks/unified-memory-AHN4RVBP.js +2 -0
  284. package/dist/cli/chunks/unified-memory-hnsw-XB7JPF74.js +2 -0
  285. package/dist/cli/chunks/unified-persistence-53KWNFQJ.js +2 -0
  286. package/dist/cli/chunks/{upgrade-F7MKJWBQ.js → upgrade-O6U7EA7V.js} +2 -2
  287. package/dist/cli/chunks/{validate-B27AVRA6.js → validate-FHNZ5XL3.js} +2 -2
  288. package/dist/cli/chunks/{validate-swarm-GYZR3GNL.js → validate-swarm-YOLLUEHE.js} +2 -2
  289. package/dist/cli/chunks/{vibium-W4XQMPJP.js → vibium-UXRPEIXB.js} +2 -2
  290. package/dist/cli/chunks/visual-security-CRPYS7L7.js +2 -0
  291. package/dist/cli/chunks/{web-tree-sitter-I7CDCFJU.js → web-tree-sitter-JJ5UIYFD.js} +2 -2
  292. package/dist/cli/chunks/{windsurf-installer-UYLHFDHU.js → windsurf-installer-I4QMQPIL.js} +2 -2
  293. package/dist/cli/chunks/witness-chain-5WCR2CAS.js +2 -0
  294. package/dist/cli/chunks/{witness-chain-B66SYZKU.js → witness-chain-BIJ7WDGS.js} +2 -2
  295. package/dist/cli/chunks/{witness-key-manager-U4JPAHVW.js → witness-key-manager-3SMMLJLP.js} +2 -2
  296. package/dist/cli/chunks/{workflow-DYMO47FF.js → workflow-33PUXXJV.js} +4 -4
  297. package/dist/cli/chunks/workflow-orchestrator-RZWCLTT5.js +2 -0
  298. package/dist/cli/chunks/{wrappers-7S6DQTEA.js → wrappers-ASAU36VK.js} +2 -2
  299. package/dist/cli/commands/learning.js +44 -0
  300. package/dist/cli/commands/llm-router.js +27 -21
  301. package/dist/cli/commands/platform.d.ts +1 -0
  302. package/dist/cli/commands/platform.js +28 -6
  303. package/dist/cli/commands/quality-gate.js +25 -3
  304. package/dist/cli/handlers/brain-handler.js +2 -0
  305. package/dist/cli/handlers/init-handler.d.ts +5 -0
  306. package/dist/cli/handlers/init-handler.js +6 -0
  307. package/dist/cli/index.js +4 -1
  308. package/dist/context/compaction/index.d.ts +1 -0
  309. package/dist/context/compaction/index.js +3 -0
  310. package/dist/context/compaction/instruction-provenance.d.ts +20 -0
  311. package/dist/context/compaction/instruction-provenance.js +18 -0
  312. package/dist/context/compaction/tier2-session-summary.d.ts +8 -0
  313. package/dist/context/compaction/tier2-session-summary.js +20 -0
  314. package/dist/context/compaction/tier3-llm-compact.d.ts +4 -0
  315. package/dist/context/compaction/tier3-llm-compact.js +32 -4
  316. package/dist/contracts/verdicts.d.ts +625 -0
  317. package/dist/contracts/verdicts.js +202 -14
  318. package/dist/coordination/handlers/coverage-handlers.js +8 -1
  319. package/dist/domains/chaos-resilience/diagnosis/corpus.d.ts +5 -0
  320. package/dist/domains/chaos-resilience/diagnosis/corpus.js +141 -0
  321. package/dist/domains/chaos-resilience/diagnosis/detectors.d.ts +11 -0
  322. package/dist/domains/chaos-resilience/diagnosis/detectors.js +109 -0
  323. package/dist/domains/chaos-resilience/diagnosis/index.d.ts +5 -0
  324. package/dist/domains/chaos-resilience/diagnosis/index.js +5 -0
  325. package/dist/domains/chaos-resilience/diagnosis/scorer.d.ts +8 -0
  326. package/dist/domains/chaos-resilience/diagnosis/scorer.js +128 -0
  327. package/dist/domains/chaos-resilience/diagnosis/types.d.ts +171 -0
  328. package/dist/domains/chaos-resilience/diagnosis/types.js +3 -0
  329. package/dist/domains/chaos-resilience/index.d.ts +1 -0
  330. package/dist/domains/chaos-resilience/index.js +1 -0
  331. package/dist/domains/index.d.ts +1 -0
  332. package/dist/domains/index.js +1 -0
  333. package/dist/early-exit/early-exit-controller.d.ts +4 -2
  334. package/dist/early-exit/early-exit-controller.js +95 -7
  335. package/dist/early-exit/index.d.ts +1 -1
  336. package/dist/early-exit/speculative-executor.js +3 -0
  337. package/dist/early-exit/types.d.ts +51 -0
  338. package/dist/early-exit/types.js +3 -0
  339. package/dist/index.d.ts +4 -2
  340. package/dist/index.js +2 -1
  341. package/dist/init/browser-engine-installer.d.ts +11 -0
  342. package/dist/init/browser-engine-installer.js +35 -5
  343. package/dist/init/codex-installer.d.ts +11 -1
  344. package/dist/init/codex-installer.js +90 -24
  345. package/dist/init/init-wizard-hooks.js +11 -11
  346. package/dist/init/orchestrator.js +2 -0
  347. package/dist/init/phases/07-hooks.d.ts +3 -3
  348. package/dist/init/phases/07-hooks.js +19 -21
  349. package/dist/init/phases/09-assets.d.ts +4 -0
  350. package/dist/init/phases/09-assets.js +13 -10
  351. package/dist/init/phases/phase-interface.d.ts +2 -0
  352. package/dist/init/types.d.ts +4 -0
  353. package/dist/integrations/embeddings/base/EmbeddingGenerator.js +4 -2
  354. package/dist/integrations/ruvector/brain-exporter.d.ts +1 -1
  355. package/dist/integrations/ruvector/brain-exporter.js +15 -3
  356. package/dist/integrations/ruvector/brain-rvf-exporter.d.ts +4 -0
  357. package/dist/integrations/ruvector/brain-rvf-exporter.js +118 -37
  358. package/dist/integrations/ruvector/brain-search.d.ts +1 -1
  359. package/dist/integrations/ruvector/brain-search.js +1 -1
  360. package/dist/integrations/ruvector/brain-shared.d.ts +4 -2
  361. package/dist/integrations/ruvector/brain-shared.js +11 -4
  362. package/dist/integrations/ruvector/brain-table-ddl.d.ts +2 -2
  363. package/dist/integrations/ruvector/brain-table-ddl.js +20 -8
  364. package/dist/integrations/ruvector/cognitive-container.js +1 -1
  365. package/dist/integrations/ruvector/rvf-dual-writer.d.ts +4 -0
  366. package/dist/integrations/ruvector/rvf-dual-writer.js +57 -9
  367. package/dist/integrations/ruvector/rvf-store-integrity.js +1 -1
  368. package/dist/kernel/unified-memory-schemas.d.ts +4 -3
  369. package/dist/kernel/unified-memory-schemas.js +19 -9
  370. package/dist/kernel/unified-memory.d.ts +2 -0
  371. package/dist/kernel/unified-memory.js +19 -0
  372. package/dist/learning/embed-and-insert-pattern.js +6 -3
  373. package/dist/learning/embedding-space.d.ts +50 -0
  374. package/dist/learning/embedding-space.js +128 -0
  375. package/dist/learning/evidence-admission-store.d.ts +15 -0
  376. package/dist/learning/evidence-admission-store.js +68 -0
  377. package/dist/learning/index.d.ts +7 -0
  378. package/dist/learning/index.js +4 -0
  379. package/dist/learning/learning-evidence-admission.d.ts +44 -0
  380. package/dist/learning/learning-evidence-admission.js +97 -0
  381. package/dist/learning/pattern-mutation-error.d.ts +9 -0
  382. package/dist/learning/pattern-mutation-error.js +14 -0
  383. package/dist/learning/pattern-store.d.ts +5 -0
  384. package/dist/learning/pattern-store.js +60 -9
  385. package/dist/learning/qe-flywheel/coupled-anchor.d.ts +8 -0
  386. package/dist/learning/qe-flywheel/coupled-anchor.js +46 -3
  387. package/dist/learning/qe-reasoning-bank.js +28 -5
  388. package/dist/learning/real-embeddings.d.ts +3 -0
  389. package/dist/learning/real-embeddings.js +40 -3
  390. package/dist/learning/real-qe-reasoning-bank.js +7 -3
  391. package/dist/learning/rvf-pattern-migration.d.ts +2 -0
  392. package/dist/learning/rvf-pattern-migration.js +5 -3
  393. package/dist/learning/rvf-pattern-store.d.ts +3 -0
  394. package/dist/learning/rvf-pattern-store.js +44 -6
  395. package/dist/learning/sqlite-persistence.d.ts +7 -2
  396. package/dist/learning/sqlite-persistence.js +58 -21
  397. package/dist/learning/structural-retrieval/corpus.d.ts +5 -0
  398. package/dist/learning/structural-retrieval/corpus.js +97 -0
  399. package/dist/learning/structural-retrieval/evaluate.d.ts +7 -0
  400. package/dist/learning/structural-retrieval/evaluate.js +124 -0
  401. package/dist/learning/structural-retrieval/index.d.ts +6 -0
  402. package/dist/learning/structural-retrieval/index.js +4 -0
  403. package/dist/learning/structural-retrieval/receipt.d.ts +14 -0
  404. package/dist/learning/structural-retrieval/receipt.js +36 -0
  405. package/dist/learning/structural-retrieval/types.d.ts +83 -0
  406. package/dist/learning/structural-retrieval/types.js +2 -0
  407. package/dist/mcp/bundle.js +589 -433
  408. package/dist/mcp/handlers/memory-handlers.js +6 -2
  409. package/dist/mcp/services/session-resume.d.ts +15 -19
  410. package/dist/mcp/services/session-resume.js +204 -194
  411. package/dist/mcp/tools/quality-assessment/gate.d.ts +8 -5
  412. package/dist/mcp/tools/quality-assessment/gate.js +9 -4
  413. package/dist/migrations/20260830_add_learning_evidence_tables.d.ts +7 -0
  414. package/dist/migrations/20260830_add_learning_evidence_tables.js +173 -0
  415. package/dist/persistence/rvf-migration-adapter.d.ts +2 -0
  416. package/dist/persistence/rvf-migration-adapter.js +56 -12
  417. package/dist/shared/llm/llm-router-service.d.ts +8 -0
  418. package/dist/shared/llm/llm-router-service.js +21 -3
  419. package/dist/shared/sql-safety.js +4 -0
  420. package/dist/skills/qe-court/cli.d.ts +3 -0
  421. package/dist/skills/qe-court/cli.js +54 -0
  422. package/dist/validation/quality-gate-runner.d.ts +27 -4
  423. package/dist/validation/quality-gate-runner.js +33 -4
  424. package/dist/validation/verification-reach.d.ts +90 -0
  425. package/dist/validation/verification-reach.js +187 -0
  426. package/dist/verification/adversarial-verify/calibrate.d.ts +46 -2
  427. package/dist/verification/adversarial-verify/calibrate.js +104 -2
  428. package/dist/verification/adversarial-verify/index.d.ts +2 -2
  429. package/dist/verification/adversarial-verify/index.js +1 -1
  430. package/dist/verification/adversarial-verify/measurement-receipt.d.ts +13 -0
  431. package/dist/verification/adversarial-verify/measurement-receipt.js +136 -0
  432. package/dist/verification/adversarial-verify/synthesize.js +7 -10
  433. package/dist/verification/adversarial-verify/types.d.ts +35 -0
  434. package/dist/verification/adversarial-verify/verify.js +6 -1
  435. package/package.json +14 -6
  436. package/schemas/coverage-gap.schema.json +41 -0
  437. package/schemas/finding-verdict.schema.json +470 -0
  438. package/schemas/risk-decision.schema.json +41 -0
  439. package/dist/cli/chunks/adapter-FUV6LBJT.js +0 -2
  440. package/dist/cli/chunks/aqe-learning-engine-QNFNA3J4.js +0 -2
  441. package/dist/cli/chunks/base-37W2XIXC.js +0 -2
  442. package/dist/cli/chunks/brain-handler-TVTTWZGP.js +0 -89
  443. package/dist/cli/chunks/browser-workflow-PDIUEK7B.js +0 -2
  444. package/dist/cli/chunks/chunk-5PI75QYP.js +0 -4
  445. package/dist/cli/chunks/chunk-EDRPTLAX.js +0 -2
  446. package/dist/cli/chunks/chunk-GEQWCK4F.js +0 -2
  447. package/dist/cli/chunks/chunk-GQLJYTXN.js +0 -2
  448. package/dist/cli/chunks/chunk-NLZUGANH.js +0 -11
  449. package/dist/cli/chunks/chunk-O4BWESH5.js +0 -2
  450. package/dist/cli/chunks/chunk-PGFCKE4G.js +0 -12
  451. package/dist/cli/chunks/chunk-RACWX2ZX.js +0 -9
  452. package/dist/cli/chunks/chunk-SNC73DWF.js +0 -2
  453. package/dist/cli/chunks/chunk-TDVMILKO.js +0 -2
  454. package/dist/cli/chunks/chunk-TK5XLF3Z.js +0 -65
  455. package/dist/cli/chunks/chunk-UQ4UCHO7.js +0 -2
  456. package/dist/cli/chunks/chunk-VZGP77YU.js +0 -12
  457. package/dist/cli/chunks/chunk-WA6CSEOX.js +0 -2
  458. package/dist/cli/chunks/chunk-WYIXNHPF.js +0 -2
  459. package/dist/cli/chunks/client-4W3KWTAU.js +0 -2
  460. package/dist/cli/chunks/codex-installer-P7DPQMYL.js +0 -15
  461. package/dist/cli/chunks/core-handlers-BDU2XBLO.js +0 -2
  462. package/dist/cli/chunks/cross-domain-router-BPB6IHN4.js +0 -2
  463. package/dist/cli/chunks/dream-WFCZGFDY.js +0 -2
  464. package/dist/cli/chunks/embed-and-insert-pattern-VESJQSYD.js +0 -3
  465. package/dist/cli/chunks/heartbeat-scheduler-HWS4SHRM.js +0 -2
  466. package/dist/cli/chunks/hnsw-adapter-7QOBHKRB.js +0 -2
  467. package/dist/cli/chunks/hnsw-index-6WUKYJH7.js +0 -2
  468. package/dist/cli/chunks/hybrid-router-525JTRA5.js +0 -2
  469. package/dist/cli/chunks/impact-analyzer-GG6CJEOK.js +0 -2
  470. package/dist/cli/chunks/init-wizard-4VFAOK4Y.js +0 -2
  471. package/dist/cli/chunks/kernel-N3FQGOST.js +0 -2
  472. package/dist/cli/chunks/knowledge-graph-I5QIHB4G.js +0 -2
  473. package/dist/cli/chunks/learning-TQOGG3CR.js +0 -119
  474. package/dist/cli/chunks/llm-router-service-NCJZYJLG.js +0 -2
  475. package/dist/cli/chunks/load-test-DCJEYIXD.js +0 -2
  476. package/dist/cli/chunks/memory-backend-O6KO2KTX.js +0 -2
  477. package/dist/cli/chunks/memory-handlers-4Z43WEKD.js +0 -2
  478. package/dist/cli/chunks/pattern-null-store-5WIJKX2K.js +0 -2
  479. package/dist/cli/chunks/platform-F76G6RUI.js +0 -2
  480. package/dist/cli/chunks/protocol-executor-5TPNAZTB.js +0 -2
  481. package/dist/cli/chunks/provider-manager-3VMOZ6HV.js +0 -2
  482. package/dist/cli/chunks/qe-reasoning-bank-BATV4NTT.js +0 -2
  483. package/dist/cli/chunks/quality-gate-A5MPWHST.js +0 -7
  484. package/dist/cli/chunks/queen-coordinator-EIHGYBUO.js +0 -2
  485. package/dist/cli/chunks/real-embeddings-ZBF5EQOG.js +0 -2
  486. package/dist/cli/chunks/router-EMVGY4HU.js +0 -2
  487. package/dist/cli/chunks/routing-feedback-JUP4OFB2.js +0 -2
  488. package/dist/cli/chunks/rvf-dual-writer-BUNP4SKD.js +0 -2
  489. package/dist/cli/chunks/rvf-migration-adapter-VSOAPLMB.js +0 -2
  490. package/dist/cli/chunks/rvf-migration-coordinator-LSWEHAWX.js +0 -2
  491. package/dist/cli/chunks/rvf-native-adapter-LOC42TQ6.js +0 -2
  492. package/dist/cli/chunks/safe-db-WQ62IQKV.js +0 -2
  493. package/dist/cli/chunks/schedule-XJRP57TE.js +0 -2
  494. package/dist/cli/chunks/scheduler-EZH5SDIM.js +0 -2
  495. package/dist/cli/chunks/sqlite-persistence-HPEVCTIB.js +0 -2
  496. package/dist/cli/chunks/token-bootstrap-F2DCLWGW.js +0 -2
  497. package/dist/cli/chunks/unified-memory-ATILROKR.js +0 -2
  498. package/dist/cli/chunks/unified-memory-hnsw-XJXAX7DW.js +0 -2
  499. package/dist/cli/chunks/unified-persistence-3TN5PBWE.js +0 -2
  500. package/dist/cli/chunks/visual-security-VFWRBCNA.js +0 -2
  501. package/dist/cli/chunks/witness-chain-JC5LEXRV.js +0 -2
  502. package/dist/cli/chunks/workflow-orchestrator-TKQUF2KN.js +0 -2
@@ -7,7 +7,7 @@
7
7
  * This module owns:
8
8
  * - Row type interfaces (PatternRow, QValueRow, DreamInsightRow, WitnessRow)
9
9
  * - Merge result type and merge strategy type
10
- * - TABLE_CONFIGS: data-driven list of all 25 exportable tables
10
+ * - TABLE_CONFIGS: data-driven list of all 31 exportable tables
11
11
  * - All 4 legacy merge functions + generic mergeGenericRow / mergeAppendOnlyRow
12
12
  * - All SQL insert/update helpers
13
13
  * - Utility functions (sha256, tableExists, queryAll, domainFilter, countRows)
@@ -40,7 +40,7 @@ export const TIMESTAMP_COLUMNS = {
40
40
  goap_actions: 'updated_at',
41
41
  concept_edges: 'updated_at',
42
42
  };
43
- // --- TABLE_CONFIGS: All 25 exportable tables in FK-aware import order ---
43
+ // --- TABLE_CONFIGS: All 31 exportable tables in FK-aware import order ---
44
44
  export const TABLE_CONFIGS = [
45
45
  { tableName: 'qe_patterns', fileName: 'patterns.jsonl', domainColumn: 'qe_domain' },
46
46
  { tableName: 'rl_q_values', fileName: 'q-values.jsonl', domainColumn: 'domain' },
@@ -67,6 +67,12 @@ export const TABLE_CONFIGS = [
67
67
  { tableName: 'experience_applications', fileName: 'experience-applications.jsonl' },
68
68
  { tableName: 'execution_results', fileName: 'execution-results.jsonl' },
69
69
  { tableName: 'executed_steps', fileName: 'executed-steps.jsonl' },
70
+ { tableName: 'learning_evidence_manifests', fileName: 'learning-evidence-manifests.jsonl', domainColumn: 'task_family' },
71
+ { tableName: 'learning_evidence_segments', fileName: 'learning-evidence-segments.jsonl', dedupColumns: ['manifest_id', 'id'], preserveId: true },
72
+ { tableName: 'learning_segment_edges', fileName: 'learning-segment-edges.jsonl', dedupColumns: ['manifest_id', 'parent_segment_id', 'child_segment_id', 'edge_kind'], preserveId: true },
73
+ { tableName: 'learning_evidence_admissions', fileName: 'learning-evidence-admissions.jsonl' },
74
+ { tableName: 'pattern_manifest_lineage', fileName: 'pattern-manifest-lineage.jsonl', dedupColumns: ['pattern_id', 'manifest_id', 'use_kind'], preserveId: true },
75
+ { tableName: 'pattern_segment_lineage', fileName: 'pattern-segment-lineage.jsonl', dedupColumns: ['pattern_id', 'manifest_id', 'segment_id', 'use_kind'], preserveId: true },
70
76
  ];
71
77
  // --- Derived BLOB column map (from TABLE_CONFIGS) ---
72
78
  /** Maps table names to their BLOB columns. Derived from TABLE_CONFIGS for convenience. */
@@ -249,7 +255,7 @@ export function mergeGenericRow(db, tableName, row, idColumn, strategy, timestam
249
255
  * Merge for append-only tables (AUTOINCREMENT PK).
250
256
  * Deduplicates by checking composite columns; inserts if no match found.
251
257
  */
252
- export function mergeAppendOnlyRow(db, tableName, row, dedupColumns) {
258
+ export function mergeAppendOnlyRow(db, tableName, row, dedupColumns, preserveId = false) {
253
259
  const validated = validateTableName(tableName);
254
260
  if (!tableExists(db, validated)) {
255
261
  dynamicInsert(db, validated, row);
@@ -263,7 +269,8 @@ export function mergeAppendOnlyRow(db, tableName, row, dedupColumns) {
263
269
  }
264
270
  // Strip AUTOINCREMENT id column before insert
265
271
  const insertRow = { ...row };
266
- delete insertRow.id;
272
+ if (!preserveId)
273
+ delete insertRow.id;
267
274
  dynamicInsert(db, validated, insertRow);
268
275
  return { imported: 1, skipped: 0, conflicts: 0 };
269
276
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Brain Table DDL Definitions
3
3
  *
4
- * Contains CREATE TABLE statements for all 25 brain-exportable tables.
4
+ * Contains CREATE TABLE statements for all 31 brain-exportable tables.
5
5
  * Separated from brain-shared.ts to keep each file under 500 lines.
6
6
  *
7
7
  * Tables are listed in FK-aware import order:
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import Database from 'better-sqlite3';
12
12
  /**
13
- * Ensure all 25 brain-exportable tables exist in the target database.
13
+ * Ensure all 31 brain-exportable tables exist in the target database.
14
14
  * Creates tables in FK-aware order so parent tables come before children.
15
15
  */
16
16
  export declare function ensureAllBrainTables(db: Database.Database): void;
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * Brain Table DDL Definitions
3
3
  *
4
- * Contains CREATE TABLE statements for all 25 brain-exportable tables.
4
+ * Contains CREATE TABLE statements for all 31 brain-exportable tables.
5
5
  * Separated from brain-shared.ts to keep each file under 500 lines.
6
6
  *
7
7
  * Tables are listed in FK-aware import order:
8
8
  * 1. Parent tables first (qe_patterns, dream_cycles, goap_goals, etc.)
9
9
  * 2. Child tables after their parents (trajectory_steps after qe_trajectories, etc.)
10
10
  */
11
+ import { LEARNING_EVIDENCE_SCHEMA } from '../../migrations/20260830_add_learning_evidence_tables.js';
11
12
  /**
12
13
  * All DDL statements for brain-exportable tables, in FK-aware creation order.
13
14
  * Uses CREATE TABLE IF NOT EXISTS for idempotency.
@@ -53,11 +54,12 @@ const BRAIN_TABLE_DDL = [
53
54
  action_data TEXT, timestamp TEXT NOT NULL, actor TEXT NOT NULL,
54
55
  hash_algo TEXT DEFAULT 'sha256', signature TEXT, signer_key_id TEXT
55
56
  )`,
56
- `CREATE TABLE IF NOT EXISTS qe_pattern_embeddings (
57
- pattern_id TEXT PRIMARY KEY, embedding BLOB NOT NULL,
58
- dimension INTEGER NOT NULL, model TEXT DEFAULT 'all-MiniLM-L6-v2',
59
- created_at TEXT DEFAULT (datetime('now')),
60
- FOREIGN KEY (pattern_id) REFERENCES qe_patterns(id) ON DELETE CASCADE
57
+ `CREATE TABLE IF NOT EXISTS qe_pattern_embeddings (
58
+ pattern_id TEXT PRIMARY KEY, embedding BLOB NOT NULL,
59
+ dimension INTEGER NOT NULL, model TEXT DEFAULT 'all-MiniLM-L6-v2',
60
+ space_id TEXT,
61
+ created_at TEXT DEFAULT (datetime('now')),
62
+ FOREIGN KEY (pattern_id) REFERENCES qe_patterns(id) ON DELETE CASCADE
61
63
  )`,
62
64
  // --- Tier 1: New tables ---
63
65
  `CREATE TABLE IF NOT EXISTS captured_experiences (
@@ -192,7 +194,7 @@ const BRAIN_TABLE_DDL = [
192
194
  final_world_state TEXT, error_message TEXT,
193
195
  created_at TEXT DEFAULT (datetime('now'))
194
196
  )`,
195
- `CREATE TABLE IF NOT EXISTS executed_steps (
197
+ `CREATE TABLE IF NOT EXISTS executed_steps (
196
198
  id TEXT PRIMARY KEY, execution_id TEXT NOT NULL,
197
199
  plan_id TEXT NOT NULL, action_id TEXT NOT NULL,
198
200
  step_order INTEGER NOT NULL, status TEXT NOT NULL,
@@ -202,15 +204,22 @@ const BRAIN_TABLE_DDL = [
202
204
  error_message TEXT,
203
205
  FOREIGN KEY (execution_id) REFERENCES execution_results(id)
204
206
  )`,
207
+ LEARNING_EVIDENCE_SCHEMA,
205
208
  ];
206
209
  /**
207
- * Ensure all 25 brain-exportable tables exist in the target database.
210
+ * Ensure all 31 brain-exportable tables exist in the target database.
208
211
  * Creates tables in FK-aware order so parent tables come before children.
209
212
  */
210
213
  export function ensureAllBrainTables(db) {
211
214
  for (const ddl of BRAIN_TABLE_DDL) {
212
215
  db.exec(ddl);
213
216
  }
217
+ const embeddingColumns = db.prepare("PRAGMA table_info('qe_pattern_embeddings')")
218
+ .all();
219
+ if (!embeddingColumns.some((column) => column.name === 'space_id')) {
220
+ db.exec('ALTER TABLE qe_pattern_embeddings ADD COLUMN space_id TEXT');
221
+ }
222
+ db.exec('CREATE INDEX IF NOT EXISTS idx_qe_pattern_embeddings_space ON qe_pattern_embeddings(space_id)');
214
223
  }
215
224
  /** List of all table names in creation/import order. */
216
225
  export const ALL_BRAIN_TABLE_NAMES = [
@@ -222,5 +231,8 @@ export const ALL_BRAIN_TABLE_NAMES = [
222
231
  'qe_pattern_usage', 'pattern_evolution_events', 'pattern_relationships',
223
232
  'pattern_versions', 'vectors', 'experience_applications',
224
233
  'execution_results', 'executed_steps',
234
+ 'learning_evidence_manifests', 'learning_evidence_segments',
235
+ 'learning_segment_edges', 'learning_evidence_admissions',
236
+ 'pattern_manifest_lineage', 'pattern_segment_lineage',
225
237
  ];
226
238
  //# sourceMappingURL=brain-table-ddl.js.map
@@ -238,7 +238,7 @@ export class CognitiveContainer {
238
238
  for (const row of processedRows) {
239
239
  let result;
240
240
  if (config.dedupColumns && config.dedupColumns.length > 0) {
241
- result = mergeAppendOnlyRow(db, config.tableName, row, config.dedupColumns);
241
+ result = mergeAppendOnlyRow(db, config.tableName, row, config.dedupColumns, config.preserveId);
242
242
  }
243
243
  else {
244
244
  const idCol = PK_COLUMNS[config.tableName] || 'id';
@@ -56,6 +56,8 @@ export interface DualWriteConfig {
56
56
  mode: 'dual-write' | 'rvf-primary' | 'sqlite-only';
57
57
  /** Whether to verify witness chain on startup */
58
58
  verifyOnStartup?: boolean;
59
+ /** Runtime provenance for an injected embedding pipeline. */
60
+ embeddingSpaceId?: string;
59
61
  }
60
62
  export interface DualWriteResult {
61
63
  sqliteSuccess: boolean;
@@ -76,6 +78,7 @@ export declare class RvfDualWriter {
76
78
  private rvfStore;
77
79
  private rvfAvailable;
78
80
  constructor(db: unknown, config: DualWriteConfig);
81
+ private activeSpaceId;
79
82
  /**
80
83
  * Initialize the RVF store (create or open).
81
84
  *
@@ -143,6 +146,7 @@ export declare class RvfDualWriter {
143
146
  epoch: number;
144
147
  } | null;
145
148
  private shouldWriteRvf;
149
+ private hasCompatibleEmbeddingSpace;
146
150
  private writeSqliteEmbedding;
147
151
  private deleteSqliteEmbedding;
148
152
  private getSqliteEmbeddingCount;
@@ -10,6 +10,8 @@
10
10
  * intercepting pattern embedding writes/deletes/searches and routing them
11
11
  * to one or both backends depending on the configured mode.
12
12
  */
13
+ import { getActiveEmbeddingSpaceIdentity } from '../../learning/real-embeddings.js';
14
+ import { verifyOrCreateEmbeddingSpaceManifest } from '../../learning/embedding-space.js';
13
15
  /**
14
16
  * Wraps the real RvfNativeAdapter to conform to the simpler RvfStore interface.
15
17
  */
@@ -48,6 +50,10 @@ function tableExists(db, name) {
48
50
  const row = db.prepare("SELECT COUNT(*) as cnt FROM sqlite_master WHERE type='table' AND name=?").get(name);
49
51
  return (row?.cnt ?? 0) > 0;
50
52
  }
53
+ function columnExists(db, table, column) {
54
+ const rows = db.prepare(`PRAGMA table_info(${table})`).all();
55
+ return rows.some((row) => row.name === column);
56
+ }
51
57
  // ============================================================================
52
58
  // RvfDualWriter
53
59
  // ============================================================================
@@ -62,6 +68,16 @@ export class RvfDualWriter {
62
68
  ...config,
63
69
  dimensions: config.dimensions ?? 384,
64
70
  };
71
+ if (tableExists(this.db, 'qe_pattern_embeddings') && !columnExists(this.db, 'qe_pattern_embeddings', 'space_id')) {
72
+ this.db.exec('ALTER TABLE qe_pattern_embeddings ADD COLUMN space_id TEXT');
73
+ this.db.exec('CREATE INDEX IF NOT EXISTS idx_qe_pattern_embeddings_space ON qe_pattern_embeddings(space_id)');
74
+ }
75
+ }
76
+ activeSpaceId() {
77
+ // An injected writer belongs to the embedder that constructed it. A
78
+ // process-global identity may describe a different pipeline initialized by
79
+ // another subsystem, so it is only a fallback for legacy callers.
80
+ return this.config.embeddingSpaceId ?? getActiveEmbeddingSpaceIdentity()?.spaceId;
65
81
  }
66
82
  /**
67
83
  * Initialize the RVF store (create or open).
@@ -104,6 +120,7 @@ export class RvfDualWriter {
104
120
  }
105
121
  }
106
122
  this.rvfStore = wrapNativeAdapter(nativeAdapter, this.config.dimensions);
123
+ verifyOrCreateEmbeddingSpaceManifest(this.config.rvfPath, this.activeSpaceId() ?? null, this.rvfStore.status().totalVectors);
107
124
  this.rvfAvailable = true;
108
125
  }
109
126
  catch (err) {
@@ -134,6 +151,10 @@ export class RvfDualWriter {
134
151
  sqliteSuccess: false,
135
152
  rvfSuccess: false,
136
153
  };
154
+ const hasSpaceContract = columnExists(this.db, 'qe_pattern_embeddings', 'space_id');
155
+ if (!hasSpaceContract || !this.activeSpaceId()) {
156
+ return { ...result, divergence: 'VECTOR_SPACE_UNVERIFIED' };
157
+ }
137
158
  // 1. Always write to SQLite qe_pattern_embeddings
138
159
  try {
139
160
  this.writeSqliteEmbedding(patternId, embedding);
@@ -198,6 +219,8 @@ export class RvfDualWriter {
198
219
  * falls back to SQLite on error. Otherwise uses SQLite.
199
220
  */
200
221
  search(query, k) {
222
+ if (!this.hasCompatibleEmbeddingSpace())
223
+ return [];
201
224
  if (this.config.mode === 'rvf-primary' && this.rvfAvailable && this.rvfStore) {
202
225
  try {
203
226
  return this.rvfStore.search(query, k);
@@ -326,6 +349,19 @@ export class RvfDualWriter {
326
349
  this.rvfAvailable &&
327
350
  this.rvfStore !== null);
328
351
  }
352
+ hasCompatibleEmbeddingSpace() {
353
+ if (!columnExists(this.db, 'qe_pattern_embeddings', 'space_id'))
354
+ return false;
355
+ const activeSpaceId = this.activeSpaceId();
356
+ if (!activeSpaceId)
357
+ return false;
358
+ const row = this.db.prepare(`
359
+ SELECT COUNT(*) AS incompatible
360
+ FROM qe_pattern_embeddings
361
+ WHERE space_id IS NULL OR space_id <> ?
362
+ `).get(activeSpaceId);
363
+ return (row?.incompatible ?? 0) === 0;
364
+ }
329
365
  writeSqliteEmbedding(patternId, embedding) {
330
366
  const blob = Buffer.from(embedding instanceof Float32Array
331
367
  ? embedding.buffer
@@ -333,14 +369,22 @@ export class RvfDualWriter {
333
369
  const dimension = embedding.length;
334
370
  // Upsert into qe_pattern_embeddings
335
371
  if (tableExists(this.db, 'qe_pattern_embeddings')) {
336
- this.db.prepare(`
337
- INSERT INTO qe_pattern_embeddings (pattern_id, embedding, dimension, model, created_at)
338
- VALUES (?, ?, ?, 'all-MiniLM-L6-v2', datetime('now'))
339
- ON CONFLICT(pattern_id) DO UPDATE SET
340
- embedding = excluded.embedding,
341
- dimension = excluded.dimension,
342
- created_at = datetime('now')
343
- `).run(patternId, blob, dimension);
372
+ const spaceId = this.activeSpaceId();
373
+ if (columnExists(this.db, 'qe_pattern_embeddings', 'space_id')) {
374
+ if (!spaceId)
375
+ throw new Error('VECTOR_SPACE_UNVERIFIED: dual writer has no runtime provenance');
376
+ this.db.prepare(`
377
+ INSERT INTO qe_pattern_embeddings (pattern_id, embedding, dimension, model, space_id, created_at)
378
+ VALUES (?, ?, ?, 'all-MiniLM-L6-v2', ?, datetime('now'))
379
+ ON CONFLICT(pattern_id) DO UPDATE SET
380
+ embedding = excluded.embedding,
381
+ dimension = excluded.dimension,
382
+ space_id = excluded.space_id,
383
+ created_at = datetime('now')
384
+ `).run(patternId, blob, dimension, spaceId);
385
+ return;
386
+ }
387
+ throw new Error('VECTOR_SPACE_UNVERIFIED: canonical space_id column is unavailable');
344
388
  }
345
389
  }
346
390
  deleteSqliteEmbedding(patternId) {
@@ -367,7 +411,11 @@ export class RvfDualWriter {
367
411
  searchSqlite(query, k) {
368
412
  if (!tableExists(this.db, 'qe_pattern_embeddings'))
369
413
  return [];
370
- const rows = this.db.prepare('SELECT pattern_id, embedding, dimension FROM qe_pattern_embeddings').all();
414
+ const activeSpaceId = this.activeSpaceId();
415
+ const hasSpaceContract = columnExists(this.db, 'qe_pattern_embeddings', 'space_id');
416
+ if (!hasSpaceContract || !activeSpaceId)
417
+ return [];
418
+ const rows = this.db.prepare('SELECT pattern_id, embedding, dimension FROM qe_pattern_embeddings WHERE space_id = ?').all(activeSpaceId);
371
419
  const queryArr = query instanceof Float32Array ? Array.from(query) : query;
372
420
  const queryMag = Math.sqrt(queryArr.reduce((s, v) => s + v * v, 0));
373
421
  if (queryMag === 0)
@@ -30,7 +30,7 @@ const LOCK_MAGIC = 'FLVR';
30
30
  /** Byte offset of the owning pid within a lock record (u32 LE). */
31
31
  const LOCK_PID_OFFSET = 4;
32
32
  /** Sidecars that belong to a store and must be quarantined alongside it. */
33
- const STORE_SIDECAR_SUFFIXES = ['', '.idmap.json', '.manifest.json'];
33
+ const STORE_SIDECAR_SUFFIXES = ['', '.idmap.json', '.manifest.json', '.space.json'];
34
34
  /** Read the first `n` bytes of a file, or null if unreadable/shorter. */
35
35
  function readHead(path, n) {
36
36
  let fd;
@@ -6,15 +6,16 @@
6
6
  */
7
7
  import { HYPERGRAPH_SCHEMA } from '../migrations/20260120_add_hypergraph_tables.js';
8
8
  import { PATTERN_NULLS_SCHEMA } from '../migrations/20260611_add_pattern_nulls_table.js';
9
- export { HYPERGRAPH_SCHEMA, PATTERN_NULLS_SCHEMA };
10
- export declare const SCHEMA_VERSION = 11;
9
+ import { LEARNING_EVIDENCE_SCHEMA } from '../migrations/20260830_add_learning_evidence_tables.js';
10
+ export { HYPERGRAPH_SCHEMA, PATTERN_NULLS_SCHEMA, LEARNING_EVIDENCE_SCHEMA };
11
+ export declare const SCHEMA_VERSION = 13;
11
12
  export declare const SCHEMA_VERSION_TABLE = "\n CREATE TABLE IF NOT EXISTS schema_version (\n id INTEGER PRIMARY KEY CHECK (id = 1),\n version INTEGER NOT NULL,\n migrated_at TEXT DEFAULT (datetime('now'))\n );\n";
12
13
  export declare const KV_STORE_SCHEMA = "\n -- Key-Value Store (v2 compatible - same schema as HybridBackend)\n CREATE TABLE IF NOT EXISTS kv_store (\n key TEXT NOT NULL,\n namespace TEXT NOT NULL,\n value TEXT NOT NULL,\n expires_at INTEGER,\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),\n PRIMARY KEY (namespace, key)\n );\n CREATE INDEX IF NOT EXISTS idx_kv_namespace ON kv_store(namespace);\n CREATE INDEX IF NOT EXISTS idx_kv_expires ON kv_store(expires_at) WHERE expires_at IS NOT NULL;\n";
13
14
  export declare const VECTORS_SCHEMA = "\n -- Vector Embeddings (new in v3 - replaces in-memory AgentDB)\n CREATE TABLE IF NOT EXISTS vectors (\n id TEXT PRIMARY KEY,\n namespace TEXT NOT NULL DEFAULT 'default',\n embedding BLOB NOT NULL,\n dimensions INTEGER NOT NULL,\n metadata TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now'))\n );\n CREATE INDEX IF NOT EXISTS idx_vectors_namespace ON vectors(namespace);\n CREATE INDEX IF NOT EXISTS idx_vectors_dimensions ON vectors(dimensions);\n";
14
15
  export declare const RL_QVALUES_SCHEMA = "\n -- Q-Values for RL algorithms (ADR-046)\n CREATE TABLE IF NOT EXISTS rl_q_values (\n id TEXT PRIMARY KEY,\n algorithm TEXT NOT NULL,\n agent_id TEXT NOT NULL,\n state_key TEXT NOT NULL,\n action_key TEXT NOT NULL,\n q_value REAL NOT NULL DEFAULT 0.0,\n visits INTEGER NOT NULL DEFAULT 0,\n last_reward REAL,\n domain TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now')),\n UNIQUE(algorithm, agent_id, state_key, action_key)\n );\n CREATE INDEX IF NOT EXISTS idx_qvalues_agent ON rl_q_values(agent_id);\n CREATE INDEX IF NOT EXISTS idx_qvalues_algorithm ON rl_q_values(algorithm);\n CREATE INDEX IF NOT EXISTS idx_qvalues_state ON rl_q_values(agent_id, state_key);\n CREATE INDEX IF NOT EXISTS idx_qvalues_domain ON rl_q_values(domain);\n CREATE INDEX IF NOT EXISTS idx_qvalues_updated ON rl_q_values(updated_at);\n";
15
16
  export declare const GOAP_SCHEMA = "\n -- GOAP Goals\n CREATE TABLE IF NOT EXISTS goap_goals (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n description TEXT,\n conditions TEXT NOT NULL,\n priority INTEGER DEFAULT 3,\n qe_domain TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- GOAP Actions\n CREATE TABLE IF NOT EXISTS goap_actions (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n description TEXT,\n agent_type TEXT NOT NULL,\n preconditions TEXT NOT NULL,\n effects TEXT NOT NULL,\n cost REAL DEFAULT 1.0,\n estimated_duration_ms INTEGER,\n success_rate REAL DEFAULT 1.0,\n execution_count INTEGER DEFAULT 0,\n category TEXT NOT NULL,\n qe_domain TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now')),\n -- A14: real domain API method binding (kernel.getDomainAPI(qe_domain)[method](params)).\n -- method/implemented are NULL/0 for actions with no real backing yet \u2014\n -- GOAPExecutor must report those as \"not implemented\", never simulate them.\n method TEXT,\n params TEXT,\n implemented INTEGER DEFAULT 0\n );\n\n -- GOAP Plans\n CREATE TABLE IF NOT EXISTS goap_plans (\n id TEXT PRIMARY KEY,\n goal_id TEXT,\n initial_state TEXT NOT NULL,\n goal_state TEXT NOT NULL,\n action_sequence TEXT NOT NULL,\n total_cost REAL,\n estimated_duration_ms INTEGER,\n status TEXT DEFAULT 'pending',\n reused_from TEXT,\n similarity_score REAL,\n created_at TEXT DEFAULT (datetime('now')),\n executed_at TEXT,\n completed_at TEXT,\n FOREIGN KEY (goal_id) REFERENCES goap_goals(id)\n );\n\n -- Plan Signatures (for similarity matching)\n CREATE TABLE IF NOT EXISTS goap_plan_signatures (\n id TEXT PRIMARY KEY,\n plan_id TEXT NOT NULL UNIQUE,\n goal_hash TEXT NOT NULL,\n state_vector TEXT NOT NULL,\n action_sequence TEXT NOT NULL,\n total_cost REAL NOT NULL,\n success_rate REAL DEFAULT 1.0,\n usage_count INTEGER DEFAULT 0,\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- A14: canonical per-step execution history (was previously undefined in\n -- this schema \u2014 plan-executor.ts invented its own parallel\n -- execution_results/executed_steps tables instead). One row per action\n -- step per execution attempt (execution_id groups steps from the same\n -- plan.execute() call, since a plan can be executed/retried more than\n -- once). Aggregate per-execution stats (steps completed/failed, total\n -- duration, final world state) are derived by querying this table rather\n -- than maintained in a separate denormalized summary table.\n CREATE TABLE IF NOT EXISTS goap_execution_steps (\n id TEXT PRIMARY KEY,\n plan_id TEXT NOT NULL,\n execution_id TEXT NOT NULL,\n action_id TEXT NOT NULL,\n step_order INTEGER NOT NULL,\n world_state_before TEXT,\n world_state_after TEXT,\n status TEXT NOT NULL DEFAULT 'pending',\n retries INTEGER DEFAULT 0,\n started_at TEXT,\n duration_ms INTEGER,\n agent_id TEXT,\n agent_output TEXT,\n error_message TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n -- Deliberately no FK to goap_plans/goap_actions: PlanExecutor.execute()\n -- can legitimately run an ad-hoc GOAPPlan/GOAPAction that was never\n -- saved via savePlan()/addAction() (e.g. programmatic orchestration\n -- bypassing the A* planner). unified-memory.ts enables the\n -- foreign_keys pragma, so an enforced FK here would reject that\n -- entirely legitimate usage, not just catch real corruption.\n );\n\n -- GOAP Indexes\n CREATE INDEX IF NOT EXISTS idx_goap_actions_category ON goap_actions(category);\n CREATE INDEX IF NOT EXISTS idx_goap_actions_agent ON goap_actions(agent_type);\n CREATE INDEX IF NOT EXISTS idx_goap_plans_status ON goap_plans(status);\n CREATE INDEX IF NOT EXISTS idx_goap_sig_goal ON goap_plan_signatures(goal_hash);\n CREATE INDEX IF NOT EXISTS idx_goap_exec_steps_plan ON goap_execution_steps(plan_id);\n CREATE INDEX IF NOT EXISTS idx_goap_exec_steps_action ON goap_execution_steps(action_id);\n -- idx_goap_exec_steps_execution is NOT created here: databases with a\n -- pre-existing narrower goap_execution_steps table (missing execution_id)\n -- would fail on \"no such column\" since CREATE TABLE IF NOT EXISTS above\n -- silently no-ops against them. unified-memory.ts's v11 migration creates\n -- this index only after confirming/backfilling the column.\n";
16
17
  export declare const DREAM_SCHEMA = "\n -- Concept Graph Nodes (Dream Engine)\n CREATE TABLE IF NOT EXISTS concept_nodes (\n id TEXT PRIMARY KEY,\n concept_type TEXT NOT NULL,\n content TEXT NOT NULL,\n embedding BLOB,\n activation_level REAL DEFAULT 0.0,\n last_activated TEXT,\n pattern_id TEXT,\n metadata TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- Concept Edges\n CREATE TABLE IF NOT EXISTS concept_edges (\n id TEXT PRIMARY KEY,\n source TEXT NOT NULL,\n target TEXT NOT NULL,\n weight REAL NOT NULL DEFAULT 1.0,\n edge_type TEXT NOT NULL,\n evidence INTEGER DEFAULT 1,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now')),\n FOREIGN KEY (source) REFERENCES concept_nodes(id) ON DELETE CASCADE,\n FOREIGN KEY (target) REFERENCES concept_nodes(id) ON DELETE CASCADE\n );\n\n -- Dream Cycles\n CREATE TABLE IF NOT EXISTS dream_cycles (\n id TEXT PRIMARY KEY,\n start_time TEXT NOT NULL,\n end_time TEXT,\n duration_ms INTEGER,\n concepts_processed INTEGER DEFAULT 0,\n associations_found INTEGER DEFAULT 0,\n insights_generated INTEGER DEFAULT 0,\n status TEXT DEFAULT 'running',\n error TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- Dream Insights\n CREATE TABLE IF NOT EXISTS dream_insights (\n id TEXT PRIMARY KEY,\n cycle_id TEXT NOT NULL,\n insight_type TEXT NOT NULL,\n source_concepts TEXT NOT NULL,\n description TEXT NOT NULL,\n novelty_score REAL DEFAULT 0.5,\n confidence_score REAL DEFAULT 0.5,\n actionable INTEGER DEFAULT 0,\n applied INTEGER DEFAULT 0,\n suggested_action TEXT,\n pattern_id TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n FOREIGN KEY (cycle_id) REFERENCES dream_cycles(id) ON DELETE CASCADE\n );\n\n -- Dream Indexes\n CREATE INDEX IF NOT EXISTS idx_concept_type ON concept_nodes(concept_type);\n CREATE INDEX IF NOT EXISTS idx_concept_activation ON concept_nodes(activation_level);\n CREATE INDEX IF NOT EXISTS idx_concept_pattern ON concept_nodes(pattern_id);\n CREATE INDEX IF NOT EXISTS idx_edge_source ON concept_edges(source);\n CREATE INDEX IF NOT EXISTS idx_edge_target ON concept_edges(target);\n CREATE INDEX IF NOT EXISTS idx_edge_type ON concept_edges(edge_type);\n CREATE INDEX IF NOT EXISTS idx_edge_weight ON concept_edges(weight DESC);\n CREATE INDEX IF NOT EXISTS idx_insight_cycle ON dream_insights(cycle_id);\n CREATE INDEX IF NOT EXISTS idx_dream_status ON dream_cycles(status);\n";
17
- export declare const QE_PATTERNS_SCHEMA = "\n -- QE Patterns table (unified from sqlite-persistence.ts)\n CREATE TABLE IF NOT EXISTS qe_patterns (\n id TEXT PRIMARY KEY,\n pattern_type TEXT NOT NULL,\n qe_domain TEXT NOT NULL,\n domain TEXT NOT NULL,\n name TEXT NOT NULL,\n description TEXT,\n confidence REAL DEFAULT 0.5,\n usage_count INTEGER DEFAULT 0,\n success_rate REAL DEFAULT 0.0,\n quality_score REAL DEFAULT 0.0,\n tier TEXT DEFAULT 'short-term',\n template_json TEXT,\n context_json TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now')),\n last_used_at TEXT,\n successful_uses INTEGER DEFAULT 0,\n tokens_used INTEGER,\n input_tokens INTEGER,\n output_tokens INTEGER,\n latency_ms REAL,\n reusable INTEGER DEFAULT 0,\n reuse_count INTEGER DEFAULT 0,\n average_token_savings REAL DEFAULT 0,\n total_tokens_saved INTEGER\n );\n\n -- Pattern embeddings table (BLOB storage for vectors)\n CREATE TABLE IF NOT EXISTS qe_pattern_embeddings (\n pattern_id TEXT PRIMARY KEY,\n embedding BLOB NOT NULL,\n dimension INTEGER NOT NULL,\n model TEXT DEFAULT 'all-MiniLM-L6-v2',\n created_at TEXT DEFAULT (datetime('now')),\n FOREIGN KEY (pattern_id) REFERENCES qe_patterns(id) ON DELETE CASCADE\n );\n\n -- Pattern usage history (no FK -- used as analytics log by hooks with synthetic IDs)\n CREATE TABLE IF NOT EXISTS qe_pattern_usage (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n pattern_id TEXT NOT NULL,\n success INTEGER NOT NULL,\n metrics_json TEXT,\n feedback TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- Learning trajectories\n CREATE TABLE IF NOT EXISTS qe_trajectories (\n id TEXT PRIMARY KEY,\n task TEXT NOT NULL,\n agent TEXT,\n domain TEXT,\n started_at TEXT DEFAULT (datetime('now')),\n ended_at TEXT,\n success INTEGER,\n steps_json TEXT,\n metadata_json TEXT\n );\n\n -- Embeddings table (unified from EmbeddingCache.ts)\n -- Renamed from 'embedding_cache' to 'embeddings' to match existing code\n CREATE TABLE IF NOT EXISTS embeddings (\n key TEXT NOT NULL,\n namespace TEXT NOT NULL,\n vector BLOB NOT NULL,\n dimension INTEGER NOT NULL,\n text TEXT NOT NULL,\n timestamp INTEGER NOT NULL,\n quantization TEXT NOT NULL,\n metadata TEXT,\n access_count INTEGER DEFAULT 1,\n last_access INTEGER NOT NULL,\n PRIMARY KEY (key, namespace)\n );\n\n -- Execution results table (unified from plan-executor.ts)\n CREATE TABLE IF NOT EXISTS execution_results (\n id TEXT PRIMARY KEY,\n plan_id TEXT NOT NULL,\n status TEXT NOT NULL,\n steps_completed INTEGER DEFAULT 0,\n steps_failed INTEGER DEFAULT 0,\n total_duration_ms INTEGER DEFAULT 0,\n final_world_state TEXT,\n error_message TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- Executed steps table (unified from plan-executor.ts)\n CREATE TABLE IF NOT EXISTS executed_steps (\n id TEXT PRIMARY KEY,\n execution_id TEXT NOT NULL,\n plan_id TEXT NOT NULL,\n action_id TEXT NOT NULL,\n step_order INTEGER NOT NULL,\n status TEXT NOT NULL,\n retries INTEGER DEFAULT 0,\n started_at TEXT NOT NULL,\n completed_at TEXT,\n duration_ms INTEGER,\n agent_id TEXT,\n agent_output TEXT,\n world_state_before TEXT,\n world_state_after TEXT,\n error_message TEXT,\n FOREIGN KEY (execution_id) REFERENCES execution_results(id)\n );\n\n -- FTS5 full-text search index for hybrid vector/text search\n CREATE VIRTUAL TABLE IF NOT EXISTS qe_patterns_fts USING fts5(\n name, description, pattern_type, qe_domain,\n content='qe_patterns',\n content_rowid='rowid'\n );\n\n -- FTS5 triggers to keep index in sync\n CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_insert AFTER INSERT ON qe_patterns BEGIN\n INSERT INTO qe_patterns_fts(rowid, name, description, pattern_type, qe_domain)\n VALUES (new.rowid, new.name, new.description, new.pattern_type, new.qe_domain);\n END;\n\n CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_delete AFTER DELETE ON qe_patterns BEGIN\n INSERT INTO qe_patterns_fts(qe_patterns_fts, rowid, name, description, pattern_type, qe_domain)\n VALUES ('delete', old.rowid, old.name, old.description, old.pattern_type, old.qe_domain);\n END;\n\n CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_update AFTER UPDATE ON qe_patterns BEGIN\n INSERT INTO qe_patterns_fts(qe_patterns_fts, rowid, name, description, pattern_type, qe_domain)\n VALUES ('delete', old.rowid, old.name, old.description, old.pattern_type, old.qe_domain);\n INSERT INTO qe_patterns_fts(rowid, name, description, pattern_type, qe_domain)\n VALUES (new.rowid, new.name, new.description, new.pattern_type, new.qe_domain);\n END;\n\n -- QE Patterns indexes\n CREATE INDEX IF NOT EXISTS idx_qe_patterns_domain ON qe_patterns(qe_domain);\n CREATE INDEX IF NOT EXISTS idx_qe_patterns_type ON qe_patterns(pattern_type);\n CREATE INDEX IF NOT EXISTS idx_qe_patterns_tier ON qe_patterns(tier);\n CREATE INDEX IF NOT EXISTS idx_qe_patterns_quality ON qe_patterns(quality_score DESC);\n CREATE INDEX IF NOT EXISTS idx_qe_usage_pattern ON qe_pattern_usage(pattern_id);\n CREATE INDEX IF NOT EXISTS idx_qe_trajectories_domain ON qe_trajectories(domain);\n CREATE INDEX IF NOT EXISTS idx_embeddings_namespace ON embeddings(namespace);\n CREATE INDEX IF NOT EXISTS idx_embeddings_timestamp ON embeddings(timestamp);\n CREATE INDEX IF NOT EXISTS idx_execution_results_plan ON execution_results(plan_id);\n CREATE INDEX IF NOT EXISTS idx_execution_results_status ON execution_results(status);\n CREATE INDEX IF NOT EXISTS idx_executed_steps_execution ON executed_steps(execution_id);\n CREATE INDEX IF NOT EXISTS idx_executed_steps_action ON executed_steps(action_id);\n";
18
+ export declare const QE_PATTERNS_SCHEMA = "\n -- QE Patterns table (unified from sqlite-persistence.ts)\n CREATE TABLE IF NOT EXISTS qe_patterns (\n id TEXT PRIMARY KEY,\n pattern_type TEXT NOT NULL,\n qe_domain TEXT NOT NULL,\n domain TEXT NOT NULL,\n name TEXT NOT NULL,\n description TEXT,\n confidence REAL DEFAULT 0.5,\n usage_count INTEGER DEFAULT 0,\n success_rate REAL DEFAULT 0.0,\n quality_score REAL DEFAULT 0.0,\n tier TEXT DEFAULT 'short-term',\n template_json TEXT,\n context_json TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now')),\n last_used_at TEXT,\n successful_uses INTEGER DEFAULT 0,\n tokens_used INTEGER,\n input_tokens INTEGER,\n output_tokens INTEGER,\n latency_ms REAL,\n reusable INTEGER DEFAULT 0,\n reuse_count INTEGER DEFAULT 0,\n average_token_savings REAL DEFAULT 0,\n total_tokens_saved INTEGER\n );\n\n -- Pattern embeddings table (BLOB storage for vectors)\n CREATE TABLE IF NOT EXISTS qe_pattern_embeddings (\n pattern_id TEXT PRIMARY KEY,\n embedding BLOB NOT NULL,\n dimension INTEGER NOT NULL,\n model TEXT DEFAULT 'all-MiniLM-L6-v2',\n space_id TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n FOREIGN KEY (pattern_id) REFERENCES qe_patterns(id) ON DELETE CASCADE\n );\n\n -- Pattern usage history (no FK -- used as analytics log by hooks with synthetic IDs)\n CREATE TABLE IF NOT EXISTS qe_pattern_usage (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n pattern_id TEXT NOT NULL,\n success INTEGER NOT NULL,\n metrics_json TEXT,\n feedback TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- Learning trajectories\n CREATE TABLE IF NOT EXISTS qe_trajectories (\n id TEXT PRIMARY KEY,\n task TEXT NOT NULL,\n agent TEXT,\n domain TEXT,\n started_at TEXT DEFAULT (datetime('now')),\n ended_at TEXT,\n success INTEGER,\n steps_json TEXT,\n metadata_json TEXT\n );\n\n -- Embeddings table (unified from EmbeddingCache.ts)\n -- Renamed from 'embedding_cache' to 'embeddings' to match existing code\n CREATE TABLE IF NOT EXISTS embeddings (\n key TEXT NOT NULL,\n namespace TEXT NOT NULL,\n vector BLOB NOT NULL,\n dimension INTEGER NOT NULL,\n text TEXT NOT NULL,\n timestamp INTEGER NOT NULL,\n quantization TEXT NOT NULL,\n metadata TEXT,\n access_count INTEGER DEFAULT 1,\n last_access INTEGER NOT NULL,\n PRIMARY KEY (key, namespace)\n );\n\n -- Execution results table (unified from plan-executor.ts)\n CREATE TABLE IF NOT EXISTS execution_results (\n id TEXT PRIMARY KEY,\n plan_id TEXT NOT NULL,\n status TEXT NOT NULL,\n steps_completed INTEGER DEFAULT 0,\n steps_failed INTEGER DEFAULT 0,\n total_duration_ms INTEGER DEFAULT 0,\n final_world_state TEXT,\n error_message TEXT,\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- Executed steps table (unified from plan-executor.ts)\n CREATE TABLE IF NOT EXISTS executed_steps (\n id TEXT PRIMARY KEY,\n execution_id TEXT NOT NULL,\n plan_id TEXT NOT NULL,\n action_id TEXT NOT NULL,\n step_order INTEGER NOT NULL,\n status TEXT NOT NULL,\n retries INTEGER DEFAULT 0,\n started_at TEXT NOT NULL,\n completed_at TEXT,\n duration_ms INTEGER,\n agent_id TEXT,\n agent_output TEXT,\n world_state_before TEXT,\n world_state_after TEXT,\n error_message TEXT,\n FOREIGN KEY (execution_id) REFERENCES execution_results(id)\n );\n\n -- FTS5 full-text search index for hybrid vector/text search\n CREATE VIRTUAL TABLE IF NOT EXISTS qe_patterns_fts USING fts5(\n name, description, pattern_type, qe_domain,\n content='qe_patterns',\n content_rowid='rowid'\n );\n\n -- FTS5 triggers to keep index in sync\n CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_insert AFTER INSERT ON qe_patterns BEGIN\n INSERT INTO qe_patterns_fts(rowid, name, description, pattern_type, qe_domain)\n VALUES (new.rowid, new.name, new.description, new.pattern_type, new.qe_domain);\n END;\n\n CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_delete AFTER DELETE ON qe_patterns BEGIN\n INSERT INTO qe_patterns_fts(qe_patterns_fts, rowid, name, description, pattern_type, qe_domain)\n VALUES ('delete', old.rowid, old.name, old.description, old.pattern_type, old.qe_domain);\n END;\n\n CREATE TRIGGER IF NOT EXISTS qe_patterns_fts_update AFTER UPDATE ON qe_patterns BEGIN\n INSERT INTO qe_patterns_fts(qe_patterns_fts, rowid, name, description, pattern_type, qe_domain)\n VALUES ('delete', old.rowid, old.name, old.description, old.pattern_type, old.qe_domain);\n INSERT INTO qe_patterns_fts(rowid, name, description, pattern_type, qe_domain)\n VALUES (new.rowid, new.name, new.description, new.pattern_type, new.qe_domain);\n END;\n\n -- QE Patterns indexes\n CREATE INDEX IF NOT EXISTS idx_qe_patterns_domain ON qe_patterns(qe_domain);\n CREATE INDEX IF NOT EXISTS idx_qe_patterns_type ON qe_patterns(pattern_type);\n CREATE INDEX IF NOT EXISTS idx_qe_patterns_tier ON qe_patterns(tier);\n CREATE INDEX IF NOT EXISTS idx_qe_patterns_quality ON qe_patterns(quality_score DESC);\n CREATE INDEX IF NOT EXISTS idx_qe_pattern_embeddings_space ON qe_pattern_embeddings(space_id);\n CREATE INDEX IF NOT EXISTS idx_qe_usage_pattern ON qe_pattern_usage(pattern_id);\n CREATE INDEX IF NOT EXISTS idx_qe_trajectories_domain ON qe_trajectories(domain);\n CREATE INDEX IF NOT EXISTS idx_embeddings_namespace ON embeddings(namespace);\n CREATE INDEX IF NOT EXISTS idx_embeddings_timestamp ON embeddings(timestamp);\n CREATE INDEX IF NOT EXISTS idx_execution_results_plan ON execution_results(plan_id);\n CREATE INDEX IF NOT EXISTS idx_execution_results_status ON execution_results(status);\n CREATE INDEX IF NOT EXISTS idx_executed_steps_execution ON executed_steps(execution_id);\n CREATE INDEX IF NOT EXISTS idx_executed_steps_action ON executed_steps(action_id);\n";
18
19
  export declare const MINCUT_SCHEMA = "\n -- MinCut Graph Snapshots (ADR-047)\n CREATE TABLE IF NOT EXISTS mincut_snapshots (\n id TEXT PRIMARY KEY,\n timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n vertex_count INTEGER NOT NULL,\n edge_count INTEGER NOT NULL,\n total_weight REAL NOT NULL DEFAULT 0.0,\n is_connected INTEGER NOT NULL DEFAULT 1,\n component_count INTEGER NOT NULL DEFAULT 1,\n vertices_json TEXT NOT NULL,\n edges_json TEXT NOT NULL,\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- MinCut History (time-series MinCut values)\n CREATE TABLE IF NOT EXISTS mincut_history (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n mincut_value REAL NOT NULL,\n vertex_count INTEGER NOT NULL,\n edge_count INTEGER NOT NULL,\n algorithm TEXT NOT NULL DEFAULT 'weighted-degree',\n duration_ms INTEGER,\n snapshot_id TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n FOREIGN KEY (snapshot_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL\n );\n\n -- MinCut Weak Vertices (detected bottlenecks)\n CREATE TABLE IF NOT EXISTS mincut_weak_vertices (\n id TEXT PRIMARY KEY,\n vertex_id TEXT NOT NULL,\n weighted_degree REAL NOT NULL,\n risk_score REAL NOT NULL,\n reason TEXT NOT NULL,\n domain TEXT,\n vertex_type TEXT NOT NULL,\n suggestions_json TEXT,\n detected_at TEXT NOT NULL DEFAULT (datetime('now')),\n resolved_at TEXT,\n snapshot_id TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n FOREIGN KEY (snapshot_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL\n );\n\n -- MinCut Alerts\n CREATE TABLE IF NOT EXISTS mincut_alerts (\n id TEXT PRIMARY KEY,\n severity TEXT NOT NULL,\n message TEXT NOT NULL,\n mincut_value REAL NOT NULL,\n threshold REAL NOT NULL,\n affected_vertices_json TEXT,\n remediations_json TEXT,\n acknowledged INTEGER DEFAULT 0,\n acknowledged_at TEXT,\n acknowledged_by TEXT,\n timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n created_at TEXT DEFAULT (datetime('now'))\n );\n\n -- MinCut Healing Actions (self-healing history)\n CREATE TABLE IF NOT EXISTS mincut_healing_actions (\n id TEXT PRIMARY KEY,\n action_type TEXT NOT NULL,\n action_params_json TEXT NOT NULL,\n success INTEGER NOT NULL,\n mincut_before REAL NOT NULL,\n mincut_after REAL NOT NULL,\n improvement REAL NOT NULL DEFAULT 0.0,\n error_message TEXT,\n duration_ms INTEGER NOT NULL,\n triggered_by TEXT,\n snapshot_before_id TEXT,\n snapshot_after_id TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n FOREIGN KEY (snapshot_before_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL,\n FOREIGN KEY (snapshot_after_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL\n );\n\n -- MinCut Strange Loop Observations (P1: self-organizing)\n CREATE TABLE IF NOT EXISTS mincut_observations (\n id TEXT PRIMARY KEY,\n iteration INTEGER NOT NULL,\n mincut_value REAL NOT NULL,\n weak_vertex_count INTEGER NOT NULL DEFAULT 0,\n weak_vertices_json TEXT,\n snapshot_id TEXT,\n prediction_json TEXT,\n actual_vs_predicted_diff REAL,\n timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n FOREIGN KEY (snapshot_id) REFERENCES mincut_snapshots(id) ON DELETE SET NULL\n );\n\n -- MinCut Indexes\n CREATE INDEX IF NOT EXISTS idx_mincut_history_timestamp ON mincut_history(timestamp DESC);\n CREATE INDEX IF NOT EXISTS idx_mincut_history_value ON mincut_history(mincut_value);\n CREATE INDEX IF NOT EXISTS idx_mincut_weak_vertex ON mincut_weak_vertices(vertex_id);\n CREATE INDEX IF NOT EXISTS idx_mincut_weak_risk ON mincut_weak_vertices(risk_score DESC);\n CREATE INDEX IF NOT EXISTS idx_mincut_weak_resolved ON mincut_weak_vertices(resolved_at);\n CREATE INDEX IF NOT EXISTS idx_mincut_alerts_severity ON mincut_alerts(severity);\n CREATE INDEX IF NOT EXISTS idx_mincut_alerts_ack ON mincut_alerts(acknowledged);\n CREATE INDEX IF NOT EXISTS idx_mincut_healing_type ON mincut_healing_actions(action_type);\n CREATE INDEX IF NOT EXISTS idx_mincut_healing_success ON mincut_healing_actions(success);\n CREATE INDEX IF NOT EXISTS idx_mincut_observations_iter ON mincut_observations(iteration);\n";
19
20
  export declare const SONA_PATTERNS_SCHEMA = "\n -- SONA Patterns table (ADR-046: Pattern Persistence for Neural Backbone)\n CREATE TABLE IF NOT EXISTS sona_patterns (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL,\n domain TEXT NOT NULL,\n state_embedding BLOB,\n action_embedding BLOB,\n action_type TEXT NOT NULL,\n action_value TEXT,\n outcome_reward REAL NOT NULL DEFAULT 0.0,\n outcome_success INTEGER NOT NULL DEFAULT 0,\n outcome_quality REAL NOT NULL DEFAULT 0.0,\n confidence REAL DEFAULT 0.5,\n usage_count INTEGER DEFAULT 0,\n success_count INTEGER DEFAULT 0,\n failure_count INTEGER DEFAULT 0,\n metadata TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now')),\n last_used_at TEXT\n );\n CREATE INDEX IF NOT EXISTS idx_sona_patterns_type ON sona_patterns(type);\n CREATE INDEX IF NOT EXISTS idx_sona_patterns_domain ON sona_patterns(domain);\n CREATE INDEX IF NOT EXISTS idx_sona_patterns_confidence ON sona_patterns(confidence DESC);\n CREATE INDEX IF NOT EXISTS idx_sona_patterns_updated ON sona_patterns(updated_at DESC);\n";
20
21
  export declare const WITNESS_CHAIN_SCHEMA = "\n -- Witness Chain (ADR-070: Cryptographic audit trail for QE decisions)\n CREATE TABLE IF NOT EXISTS witness_chain (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n prev_hash TEXT NOT NULL,\n action_hash TEXT NOT NULL,\n action_type TEXT NOT NULL,\n action_data TEXT,\n timestamp TEXT NOT NULL,\n actor TEXT NOT NULL\n );\n CREATE INDEX IF NOT EXISTS idx_witness_action_type ON witness_chain(action_type);\n CREATE INDEX IF NOT EXISTS idx_witness_timestamp ON witness_chain(timestamp);\n";
@@ -6,12 +6,13 @@
6
6
  */
7
7
  import { HYPERGRAPH_SCHEMA } from '../migrations/20260120_add_hypergraph_tables.js';
8
8
  import { PATTERN_NULLS_SCHEMA } from '../migrations/20260611_add_pattern_nulls_table.js';
9
+ import { LEARNING_EVIDENCE_SCHEMA } from '../migrations/20260830_add_learning_evidence_tables.js';
9
10
  // Re-export for convenience
10
- export { HYPERGRAPH_SCHEMA, PATTERN_NULLS_SCHEMA };
11
+ export { HYPERGRAPH_SCHEMA, PATTERN_NULLS_SCHEMA, LEARNING_EVIDENCE_SCHEMA };
11
12
  // ============================================================================
12
13
  // Schema Version for Migrations
13
14
  // ============================================================================
14
- export const SCHEMA_VERSION = 11; // v11: adds goap_execution_steps canonical GOAP execution history (A14)
15
+ export const SCHEMA_VERSION = 13; // v12: learning evidence; v13: embedding-space provenance (#633)
15
16
  export const SCHEMA_VERSION_TABLE = `
16
17
  CREATE TABLE IF NOT EXISTS schema_version (
17
18
  id INTEGER PRIMARY KEY CHECK (id = 1),
@@ -284,12 +285,13 @@ export const QE_PATTERNS_SCHEMA = `
284
285
  );
285
286
 
286
287
  -- Pattern embeddings table (BLOB storage for vectors)
287
- CREATE TABLE IF NOT EXISTS qe_pattern_embeddings (
288
- pattern_id TEXT PRIMARY KEY,
289
- embedding BLOB NOT NULL,
290
- dimension INTEGER NOT NULL,
291
- model TEXT DEFAULT 'all-MiniLM-L6-v2',
292
- created_at TEXT DEFAULT (datetime('now')),
288
+ CREATE TABLE IF NOT EXISTS qe_pattern_embeddings (
289
+ pattern_id TEXT PRIMARY KEY,
290
+ embedding BLOB NOT NULL,
291
+ dimension INTEGER NOT NULL,
292
+ model TEXT DEFAULT 'all-MiniLM-L6-v2',
293
+ space_id TEXT,
294
+ created_at TEXT DEFAULT (datetime('now')),
293
295
  FOREIGN KEY (pattern_id) REFERENCES qe_patterns(id) ON DELETE CASCADE
294
296
  );
295
297
 
@@ -394,7 +396,8 @@ export const QE_PATTERNS_SCHEMA = `
394
396
  CREATE INDEX IF NOT EXISTS idx_qe_patterns_domain ON qe_patterns(qe_domain);
395
397
  CREATE INDEX IF NOT EXISTS idx_qe_patterns_type ON qe_patterns(pattern_type);
396
398
  CREATE INDEX IF NOT EXISTS idx_qe_patterns_tier ON qe_patterns(tier);
397
- CREATE INDEX IF NOT EXISTS idx_qe_patterns_quality ON qe_patterns(quality_score DESC);
399
+ CREATE INDEX IF NOT EXISTS idx_qe_patterns_quality ON qe_patterns(quality_score DESC);
400
+ CREATE INDEX IF NOT EXISTS idx_qe_pattern_embeddings_space ON qe_pattern_embeddings(space_id);
398
401
  CREATE INDEX IF NOT EXISTS idx_qe_usage_pattern ON qe_pattern_usage(pattern_id);
399
402
  CREATE INDEX IF NOT EXISTS idx_qe_trajectories_domain ON qe_trajectories(domain);
400
403
  CREATE INDEX IF NOT EXISTS idx_embeddings_namespace ON embeddings(namespace);
@@ -674,5 +677,12 @@ export const STATS_TABLES = [
674
677
  'sona_patterns',
675
678
  // v9: Witness Chain (ADR-070)
676
679
  'witness_chain',
680
+ // v12: qualified learning evidence (ADR-131)
681
+ 'learning_evidence_manifests',
682
+ 'learning_evidence_segments',
683
+ 'learning_segment_edges',
684
+ 'learning_evidence_admissions',
685
+ 'pattern_manifest_lineage',
686
+ 'pattern_segment_lineage',
677
687
  ];
678
688
  //# sourceMappingURL=unified-memory-schemas.js.map
@@ -163,6 +163,8 @@ export declare class UnifiedMemoryManager {
163
163
  score: number;
164
164
  metadata?: unknown;
165
165
  }>>;
166
+ /** Additive provenance migration. Existing vectors remain explicitly unverified. */
167
+ private migrateToV13EmbeddingSpace;
166
168
  getVectorSearchProvenance(): VectorSearchProvenance;
167
169
  vectorCount(namespace?: string): Promise<number>;
168
170
  /**
@@ -42,6 +42,7 @@ export { BinaryHeap, UnifiedHnswIndex, createHnswIndex } from './unified-memory-
42
42
  import { UnifiedHnswIndex } from './unified-memory-hnsw.js';
43
43
  // Import schemas
44
44
  import { SCHEMA_VERSION, SCHEMA_VERSION_TABLE, KV_STORE_SCHEMA, VECTORS_SCHEMA, RL_QVALUES_SCHEMA, GOAP_SCHEMA, DREAM_SCHEMA, QE_PATTERNS_SCHEMA, MINCUT_SCHEMA, SONA_PATTERNS_SCHEMA, FEEDBACK_SCHEMA, HYPERGRAPH_SCHEMA, PATTERN_NULLS_SCHEMA, STATS_TABLES, } from './unified-memory-schemas.js';
45
+ import { applyMigration as applyLearningEvidenceMigration } from '../migrations/20260830_add_learning_evidence_tables.js';
45
46
  // CRDT imports for distributed state synchronization
46
47
  import { createCRDTStore, } from '../memory/crdt/index.js';
47
48
  // ============================================================================
@@ -485,6 +486,10 @@ export class UnifiedMemoryManager {
485
486
  this.db.exec(PATTERN_NULLS_SCHEMA);
486
487
  if (currentVersion < 11)
487
488
  this.migrateToV11GoapExecutionSteps();
489
+ if (currentVersion < 12)
490
+ applyLearningEvidenceMigration(this.db);
491
+ if (currentVersion < 13)
492
+ this.migrateToV13EmbeddingSpace();
488
493
  this.db.prepare(`
489
494
  INSERT OR REPLACE INTO schema_version (id, version, migrated_at)
490
495
  VALUES (1, ?, datetime('now'))
@@ -800,6 +805,20 @@ export class UnifiedMemoryManager {
800
805
  };
801
806
  });
802
807
  }
808
+ /** Additive provenance migration. Existing vectors remain explicitly unverified. */
809
+ migrateToV13EmbeddingSpace() {
810
+ const db = this.db;
811
+ const table = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='qe_pattern_embeddings'").get();
812
+ if (!table) {
813
+ db.exec(QE_PATTERNS_SCHEMA);
814
+ return;
815
+ }
816
+ const columns = db.prepare("PRAGMA table_info('qe_pattern_embeddings')").all();
817
+ if (!columns.some((column) => column.name === 'space_id')) {
818
+ db.exec('ALTER TABLE qe_pattern_embeddings ADD COLUMN space_id TEXT');
819
+ }
820
+ db.exec('CREATE INDEX IF NOT EXISTS idx_qe_pattern_embeddings_space ON qe_pattern_embeddings(space_id)');
821
+ }
803
822
  getVectorSearchProvenance() {
804
823
  const provider = this.vectorIndex.getProvider();
805
824
  if (!provider.isNativeBackend()) {
@@ -18,7 +18,7 @@
18
18
  * fail-soft (errors are logged at debug level and swallowed) — pattern row
19
19
  * persistence must not regress when embedding computation fails.
20
20
  */
21
- import { computeRealEmbedding, DEFAULT_EMBEDDING_CONFIG, } from './real-embeddings.js';
21
+ import { computeRealEmbedding, DEFAULT_EMBEDDING_CONFIG, getActiveEmbeddingSpaceIdentity, } from './real-embeddings.js';
22
22
  /**
23
23
  * Compute an embedding for a pattern (`name + description + tags`) and persist
24
24
  * it to `qe_pattern_embeddings`. Caller is responsible for the matching
@@ -41,8 +41,11 @@ export async function ensurePatternEmbedding(db, patternId, name, description, t
41
41
  return;
42
42
  const buffer = Buffer.from(new Float32Array(embedding).buffer);
43
43
  const fullConfig = { ...DEFAULT_EMBEDDING_CONFIG, ...config };
44
- db.prepare(`INSERT OR REPLACE INTO qe_pattern_embeddings (pattern_id, embedding, dimension, model)
45
- VALUES (?, ?, ?, ?)`).run(patternId, buffer, embedding.length, fullConfig.modelName);
44
+ const spaceId = getActiveEmbeddingSpaceIdentity()?.spaceId;
45
+ if (!spaceId)
46
+ throw new Error('VECTOR_SPACE_UNVERIFIED: embedder has no runtime provenance');
47
+ db.prepare(`INSERT OR REPLACE INTO qe_pattern_embeddings (pattern_id, embedding, dimension, model, space_id)
48
+ VALUES (?, ?, ?, ?, ?)`).run(patternId, buffer, embedding.length, fullConfig.modelName, spaceId);
46
49
  }
47
50
  catch (error) {
48
51
  // Non-fatal: pattern row already persisted; embedding can be backfilled later.
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Executable embedding-space provenance (#633).
3
+ *
4
+ * Model names and dimensions are declarations, not proof that two vectors are
5
+ * comparable. An embedding space is therefore identified by canonical runtime
6
+ * configuration plus a fingerprint of a fixed canary vector.
7
+ */
8
+ export declare const EMBEDDING_SPACE_CANARY = "aqe embedding-space compatibility canary v1";
9
+ export declare const EMBEDDING_ROUND_TRIP_MIN_COSINE = 0.999;
10
+ export interface EmbeddingSpaceIdentity {
11
+ provider: string;
12
+ model: string;
13
+ dimensions: number;
14
+ pooling?: string;
15
+ normalized: boolean;
16
+ preprocessingVersion?: string;
17
+ implementation?: string;
18
+ runtimeFingerprint: string;
19
+ spaceId: string;
20
+ }
21
+ export type EmbeddingSpaceStatus = 'healthy' | 'vector_space_mismatch' | 'unverified';
22
+ export interface EmbeddingSpaceDiagnostics {
23
+ status: EmbeddingSpaceStatus;
24
+ activeSpaceId: string | null;
25
+ storedSpaceIds: string[];
26
+ verifiedVectors: number;
27
+ mismatchedVectors: number;
28
+ unverifiedVectors: number;
29
+ }
30
+ export declare class EmbeddingSpaceError extends Error {
31
+ readonly code: 'VECTOR_SPACE_MISMATCH' | 'VECTOR_SPACE_UNVERIFIED';
32
+ constructor(code: 'VECTOR_SPACE_MISMATCH' | 'VECTOR_SPACE_UNVERIFIED', message: string);
33
+ }
34
+ /** Fingerprint a normalized canary vector after stable int16 quantization. */
35
+ export declare function fingerprintEmbeddingRuntime(vector: readonly number[]): string;
36
+ export declare function deriveEmbeddingSpaceIdentity(identity: Omit<EmbeddingSpaceIdentity, 'spaceId'>): EmbeddingSpaceIdentity;
37
+ /** Execute the same-text write/read canary before semantic ranking is trusted. */
38
+ export declare function verifyEmbeddingRoundTrip(writeEmbed: (text: string) => Promise<number[]>, queryEmbed: (text: string) => Promise<number[]>, minimumCosine?: number): Promise<number>;
39
+ export declare function inspectEmbeddingSpaceRows(rows: ReadonlyArray<{
40
+ spaceId: string | null;
41
+ }>, activeSpaceId: string | null): EmbeddingSpaceDiagnostics;
42
+ /** Sidecar path used to bind a persistent ANN index to one embedding space. */
43
+ export declare function embeddingSpaceManifestPath(indexPath: string): string;
44
+ /**
45
+ * Bind an empty persistent index to the active space, or verify an existing
46
+ * binding. A populated index without a manifest is legacy/unverified and must
47
+ * be rebuilt rather than silently adopted by the current runtime.
48
+ */
49
+ export declare function verifyOrCreateEmbeddingSpaceManifest(indexPath: string, activeSpaceId: string | null, vectorCount: number): void;
50
+ //# sourceMappingURL=embedding-space.d.ts.map