@oscharko-dev/keiko 0.2.0-beta.5 → 0.2.0-beta.6

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 (622) hide show
  1. package/README.md +39 -14
  2. package/dist/ui/csp-hashes.json +17 -22
  3. package/dist/ui/static/404.html +1 -1
  4. package/dist/ui/static/__next.__PAGE__.txt +2 -2
  5. package/dist/ui/static/__next._full.txt +3 -3
  6. package/dist/ui/static/__next._head.txt +1 -1
  7. package/dist/ui/static/__next._index.txt +2 -2
  8. package/dist/ui/static/__next._tree.txt +2 -2
  9. package/dist/ui/static/_next/static/chunks/0-qhhdvxg2j_y.js +1 -0
  10. package/dist/ui/static/_next/static/chunks/0ke4ratkgvcxo.css +1 -0
  11. package/dist/ui/static/_next/static/chunks/0xhu-pfsyvbmx.js +5 -0
  12. package/dist/ui/static/_next/static/chunks/3vf3oh2-sl2nc.js +1 -0
  13. package/dist/ui/static/_next/static/chunks/3wmd4-2vznp2g.js +106 -0
  14. package/dist/ui/static/_next/static/chunks/turbopack-18q50fp2-1qbt.js +1 -0
  15. package/dist/ui/static/_not-found/__next._full.txt +2 -2
  16. package/dist/ui/static/_not-found/__next._head.txt +1 -1
  17. package/dist/ui/static/_not-found/__next._index.txt +2 -2
  18. package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +1 -1
  19. package/dist/ui/static/_not-found/__next._not-found.txt +1 -1
  20. package/dist/ui/static/_not-found/__next._tree.txt +2 -2
  21. package/dist/ui/static/_not-found.html +1 -1
  22. package/dist/ui/static/_not-found.txt +2 -2
  23. package/dist/ui/static/index.html +1 -1
  24. package/dist/ui/static/index.txt +3 -3
  25. package/dist/ui/static/launch/__next._full.txt +3 -3
  26. package/dist/ui/static/launch/__next._head.txt +1 -1
  27. package/dist/ui/static/launch/__next._index.txt +2 -2
  28. package/dist/ui/static/launch/__next._tree.txt +2 -2
  29. package/dist/ui/static/launch/__next.launch.__PAGE__.txt +2 -2
  30. package/dist/ui/static/launch/__next.launch.txt +1 -1
  31. package/dist/ui/static/launch.html +1 -1
  32. package/dist/ui/static/launch.txt +3 -3
  33. package/dist/ui/static/local-knowledge/__next._full.txt +3 -3
  34. package/dist/ui/static/local-knowledge/__next._head.txt +1 -1
  35. package/dist/ui/static/local-knowledge/__next._index.txt +2 -2
  36. package/dist/ui/static/local-knowledge/__next._tree.txt +2 -2
  37. package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +2 -2
  38. package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +1 -1
  39. package/dist/ui/static/local-knowledge/capsule/__next._full.txt +3 -3
  40. package/dist/ui/static/local-knowledge/capsule/__next._head.txt +1 -1
  41. package/dist/ui/static/local-knowledge/capsule/__next._index.txt +2 -2
  42. package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -2
  43. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +2 -2
  44. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +1 -1
  45. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +1 -1
  46. package/dist/ui/static/local-knowledge/capsule.html +1 -1
  47. package/dist/ui/static/local-knowledge/capsule.txt +3 -3
  48. package/dist/ui/static/local-knowledge.html +1 -1
  49. package/dist/ui/static/local-knowledge.txt +3 -3
  50. package/dist/ui/static/memoriaviva/__next._full.txt +6 -6
  51. package/dist/ui/static/memoriaviva/__next._head.txt +1 -1
  52. package/dist/ui/static/memoriaviva/__next._index.txt +2 -2
  53. package/dist/ui/static/memoriaviva/__next._tree.txt +2 -2
  54. package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +4 -4
  55. package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +1 -1
  56. package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +4 -4
  57. package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +1 -1
  58. package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +2 -2
  59. package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -2
  60. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +2 -2
  61. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +1 -1
  62. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +1 -1
  63. package/dist/ui/static/memoriaviva/consolidation.html +1 -1
  64. package/dist/ui/static/memoriaviva/consolidation.txt +4 -4
  65. package/dist/ui/static/memoriaviva/detail/__next._full.txt +6 -6
  66. package/dist/ui/static/memoriaviva/detail/__next._head.txt +1 -1
  67. package/dist/ui/static/memoriaviva/detail/__next._index.txt +2 -2
  68. package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -2
  69. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +4 -4
  70. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +1 -1
  71. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +1 -1
  72. package/dist/ui/static/memoriaviva/detail.html +1 -1
  73. package/dist/ui/static/memoriaviva/detail.txt +6 -6
  74. package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +4 -4
  75. package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +1 -1
  76. package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +2 -2
  77. package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -2
  78. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +2 -2
  79. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +1 -1
  80. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +1 -1
  81. package/dist/ui/static/memoriaviva/review-queue.html +1 -1
  82. package/dist/ui/static/memoriaviva/review-queue.txt +4 -4
  83. package/dist/ui/static/memoriaviva.html +1 -1
  84. package/dist/ui/static/memoriaviva.txt +6 -6
  85. package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
  86. package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.d.ts +24 -0
  87. package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.d.ts.map +1 -0
  88. package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.js +108 -0
  89. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.d.ts.map +1 -1
  90. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.js +7 -4
  91. package/node_modules/@oscharko-dev/keiko-cli/dist/index.d.ts +1 -0
  92. package/node_modules/@oscharko-dev/keiko-cli/dist/index.d.ts.map +1 -1
  93. package/node_modules/@oscharko-dev/keiko-cli/dist/index.js +1 -0
  94. package/node_modules/@oscharko-dev/keiko-cli/dist/init.d.ts +2 -2
  95. package/node_modules/@oscharko-dev/keiko-cli/dist/init.d.ts.map +1 -1
  96. package/node_modules/@oscharko-dev/keiko-cli/dist/init.js +4 -4
  97. package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.d.ts +6 -0
  98. package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.d.ts.map +1 -0
  99. package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.js +24 -0
  100. package/node_modules/@oscharko-dev/keiko-cli/dist/launcher.d.ts.map +1 -1
  101. package/node_modules/@oscharko-dev/keiko-cli/dist/launcher.js +5 -7
  102. package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.d.ts +1 -0
  103. package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.d.ts.map +1 -1
  104. package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.js +75 -30
  105. package/node_modules/@oscharko-dev/keiko-cli/dist/memory.d.ts +3 -0
  106. package/node_modules/@oscharko-dev/keiko-cli/dist/memory.d.ts.map +1 -1
  107. package/node_modules/@oscharko-dev/keiko-cli/dist/memory.js +76 -7
  108. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts.map +1 -1
  109. package/node_modules/@oscharko-dev/keiko-cli/dist/run.js +50 -2
  110. package/node_modules/@oscharko-dev/keiko-cli/dist/runner.d.ts.map +1 -1
  111. package/node_modules/@oscharko-dev/keiko-cli/dist/runner.js +20 -4
  112. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts +1 -1
  113. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts.map +1 -1
  114. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +17 -14
  115. package/node_modules/@oscharko-dev/keiko-cli/package.json +1 -1
  116. package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
  117. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +7 -0
  118. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts.map +1 -1
  119. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts.map +1 -1
  120. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +1 -2
  121. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +1 -0
  122. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
  123. package/node_modules/@oscharko-dev/keiko-contracts/dist/gateway.d.ts +12 -0
  124. package/node_modules/@oscharko-dev/keiko-contracts/dist/gateway.d.ts.map +1 -1
  125. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +4 -2
  126. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
  127. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +4 -1
  128. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
  129. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.d.ts +13 -1
  130. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.d.ts.map +1 -1
  131. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.js +7 -6
  132. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-internal.d.ts.map +1 -1
  133. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-internal.js +1 -1
  134. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-operations.d.ts.map +1 -1
  135. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-workflow-port.d.ts.map +1 -1
  136. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-workflow-port.js +1 -1
  137. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +21 -4
  138. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
  139. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts +1 -0
  140. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts.map +1 -1
  141. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.js +1 -0
  142. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +1 -0
  143. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -1
  144. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.js +26 -0
  145. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.d.ts +5 -3
  146. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.d.ts.map +1 -1
  147. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.js +29 -3
  148. package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.d.ts +7 -0
  149. package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.d.ts.map +1 -0
  150. package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.js +58 -0
  151. package/node_modules/@oscharko-dev/keiko-contracts/package.json +5 -1
  152. package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
  153. package/node_modules/@oscharko-dev/keiko-evaluations/dist/surface-parity.d.ts.map +1 -1
  154. package/node_modules/@oscharko-dev/keiko-evaluations/package.json +1 -1
  155. package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
  156. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts +1 -1
  157. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts.map +1 -1
  158. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts +7 -0
  159. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts.map +1 -1
  160. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.js +62 -13
  161. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +3 -3
  162. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts.map +1 -1
  163. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.js +31 -11
  164. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +35 -3
  165. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
  166. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.js +107 -3
  167. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +15 -1
  168. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
  169. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +248 -36
  170. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts +2 -2
  171. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
  172. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts +17 -3
  173. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts.map +1 -1
  174. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts +1 -1
  175. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts.map +1 -1
  176. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +26 -22
  177. package/node_modules/@oscharko-dev/keiko-evidence/dist/side-file.d.ts.map +1 -1
  178. package/node_modules/@oscharko-dev/keiko-evidence/dist/side-file.js +17 -5
  179. package/node_modules/@oscharko-dev/keiko-evidence/dist/store.d.ts.map +1 -1
  180. package/node_modules/@oscharko-dev/keiko-evidence/dist/store.js +128 -12
  181. package/node_modules/@oscharko-dev/keiko-evidence/dist/workflow-evidence.d.ts.map +1 -1
  182. package/node_modules/@oscharko-dev/keiko-evidence/dist/workflow-evidence.js +1 -3
  183. package/node_modules/@oscharko-dev/keiko-evidence/package.json +1 -1
  184. package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
  185. package/node_modules/@oscharko-dev/keiko-harness/package.json +1 -1
  186. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
  187. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts.map +1 -1
  188. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.js +1 -2
  189. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts.map +1 -1
  190. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.js +1 -1
  191. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts.map +1 -1
  192. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.js +45 -21
  193. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/media-type.d.ts.map +1 -1
  194. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/media-type.js +1 -0
  195. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.d.ts.map +1 -1
  196. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.js +11 -3
  197. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.d.ts +2 -0
  198. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.d.ts.map +1 -1
  199. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.js +42 -0
  200. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts.map +1 -1
  201. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.js +34 -0
  202. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts +1 -1
  203. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts.map +1 -1
  204. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.js +1 -1
  205. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/report.d.ts.map +1 -1
  206. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/report.js +7 -6
  207. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner.d.ts.map +1 -1
  208. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner.js +7 -1
  209. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.d.ts +4 -0
  210. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.d.ts.map +1 -1
  211. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.js +2 -0
  212. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +1 -1
  213. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts.map +1 -1
  214. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.js +1 -1
  215. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.d.ts.map +1 -1
  216. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.js +121 -3
  217. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.d.ts.map +1 -1
  218. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.js +34 -4
  219. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +1 -0
  220. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts.map +1 -1
  221. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.js +63 -0
  222. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.d.ts.map +1 -1
  223. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.js +4 -7
  224. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/html-parser.d.ts.map +1 -1
  225. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/html-parser.js +67 -11
  226. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -0
  227. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts.map +1 -1
  228. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.js +3 -0
  229. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.d.ts.map +1 -1
  230. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.js +39 -3
  231. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/null-ocr-adapter.d.ts.map +1 -1
  232. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/ocr-pipeline-parser.d.ts.map +1 -1
  233. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/ocr-pipeline-parser.js +46 -11
  234. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.d.ts +2 -0
  235. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.d.ts.map +1 -1
  236. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.js +2 -0
  237. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts.map +1 -1
  238. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.js +114 -0
  239. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.d.ts +3 -0
  240. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.d.ts.map +1 -0
  241. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.js +425 -0
  242. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.d.ts.map +1 -1
  243. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.d.ts +9 -4
  244. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.d.ts.map +1 -1
  245. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.js +11 -6
  246. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +15 -2
  247. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts +1 -0
  248. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts.map +1 -1
  249. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.js +220 -7
  250. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/types.d.ts +2 -1
  251. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/types.d.ts.map +1 -1
  252. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts.map +1 -1
  253. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.js +3 -1
  254. package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +4 -2
  255. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
  256. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.d.ts +4 -0
  257. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.d.ts.map +1 -0
  258. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.js +17 -0
  259. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/errors.d.ts +1 -1
  260. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/errors.d.ts.map +1 -1
  261. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.d.ts +1 -0
  262. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.d.ts.map +1 -1
  263. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.js +1 -0
  264. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/salience.js +1 -1
  265. package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +1 -1
  266. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
  267. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.d.ts +3 -0
  268. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.d.ts.map +1 -1
  269. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.js +5 -0
  270. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/consolidate.d.ts.map +1 -1
  271. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/consolidate.js +93 -30
  272. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/stale.d.ts.map +1 -1
  273. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/stale.js +3 -1
  274. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.d.ts +5 -0
  275. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.d.ts.map +1 -1
  276. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.js +1 -1
  277. package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +2 -2
  278. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/.tsbuildinfo +1 -1
  279. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/forget.js +1 -1
  280. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/types.js +1 -1
  281. package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +2 -2
  282. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/.tsbuildinfo +1 -1
  283. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/context.d.ts.map +1 -1
  284. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/context.js +61 -18
  285. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/ranking.d.ts.map +1 -1
  286. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/ranking.js +3 -1
  287. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/retrieve.d.ts.map +1 -1
  288. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/retrieve.js +26 -4
  289. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/types.d.ts +9 -1
  290. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/types.d.ts.map +1 -1
  291. package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +1 -1
  292. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
  293. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.d.ts +1 -0
  294. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.d.ts.map +1 -1
  295. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.js +21 -0
  296. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/index.d.ts +1 -1
  297. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/index.d.ts.map +1 -1
  298. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/migrate-encrypt.d.ts.map +1 -1
  299. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/migrate-encrypt.js +24 -4
  300. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.d.ts +1 -1
  301. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.d.ts.map +1 -1
  302. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.js +27 -4
  303. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.d.ts +1 -0
  304. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.d.ts.map +1 -1
  305. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.js +21 -4
  306. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/types.d.ts +22 -1
  307. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/types.d.ts.map +1 -1
  308. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/validate.d.ts.map +1 -1
  309. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/validate.js +3 -0
  310. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/vault.d.ts.map +1 -1
  311. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/vault.js +105 -28
  312. package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +1 -1
  313. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
  314. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts +2 -0
  315. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts.map +1 -1
  316. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.js +83 -69
  317. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.d.ts +3 -2
  318. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.d.ts.map +1 -1
  319. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.js +20 -16
  320. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/gateway.d.ts.map +1 -1
  321. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/gateway.js +9 -3
  322. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts.map +1 -1
  323. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.js +29 -3
  324. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.d.ts +4 -4
  325. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.d.ts.map +1 -1
  326. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.js +3 -3
  327. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.d.ts.map +1 -1
  328. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.js +51 -6
  329. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.d.ts +20 -1
  330. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.d.ts.map +1 -1
  331. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.js +122 -7
  332. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.d.ts +10 -1
  333. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.d.ts.map +1 -1
  334. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.js +33 -11
  335. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.d.ts +4 -0
  336. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.d.ts.map +1 -0
  337. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.js +21 -0
  338. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.d.ts +1 -1
  339. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.d.ts.map +1 -1
  340. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.js +1 -1
  341. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/routing.d.ts.map +1 -1
  342. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/routing.js +2 -13
  343. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.d.ts +1 -0
  344. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.d.ts.map +1 -1
  345. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.js +18 -2
  346. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/types.d.ts +5 -1
  347. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/types.d.ts.map +1 -1
  348. package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +1 -1
  349. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
  350. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.d.ts +35 -0
  351. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.d.ts.map +1 -1
  352. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.js +74 -0
  353. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/deduplication.d.ts.map +1 -1
  354. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/deduplication.js +6 -2
  355. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.d.ts.map +1 -1
  356. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.js +64 -19
  357. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.d.ts.map +1 -1
  358. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +3 -0
  359. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.d.ts +6 -1
  360. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.d.ts.map +1 -1
  361. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.js +22 -9
  362. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +4 -1
  363. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts.map +1 -1
  364. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.js +28 -12
  365. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts.map +1 -1
  366. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js +123 -33
  367. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/index.d.ts +2 -2
  368. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/index.d.ts.map +1 -1
  369. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +7 -4
  370. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map +1 -1
  371. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map +1 -1
  372. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.js +13 -17
  373. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map +1 -1
  374. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.js +35 -12
  375. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map +1 -1
  376. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.js +54 -6
  377. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts +4 -0
  378. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
  379. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +29 -10
  380. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.d.ts.map +1 -1
  381. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.js +10 -4
  382. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/requirementExcerpt.d.ts.map +1 -1
  383. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/requirementExcerpt.js +15 -6
  384. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.d.ts +4 -0
  385. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.d.ts.map +1 -1
  386. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.js +162 -6
  387. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts +14 -2
  388. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts.map +1 -1
  389. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.js +50 -12
  390. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
  391. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +4 -2
  392. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.d.ts.map +1 -1
  393. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.js +8 -3
  394. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/traceability.d.ts.map +1 -1
  395. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/traceability.js +12 -9
  396. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.d.ts +7 -0
  397. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.d.ts.map +1 -1
  398. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.js +7 -0
  399. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.d.ts +10 -0
  400. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.d.ts.map +1 -0
  401. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.js +14 -0
  402. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/index.d.ts.map +1 -1
  403. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/index.js +3 -2
  404. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.d.ts.map +1 -1
  405. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.js +97 -50
  406. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.d.ts.map +1 -1
  407. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.js +35 -7
  408. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts +2 -2
  409. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts.map +1 -1
  410. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.js +2 -2
  411. package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +1 -1
  412. package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
  413. package/node_modules/@oscharko-dev/keiko-sdk/package.json +1 -1
  414. package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
  415. package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.d.ts +11 -0
  416. package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.d.ts.map +1 -1
  417. package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.js +13 -0
  418. package/node_modules/@oscharko-dev/keiko-security/package.json +1 -1
  419. package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
  420. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
  421. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +50 -12
  422. package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.d.ts.map +1 -1
  423. package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.js +10 -8
  424. package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts +1 -0
  425. package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts.map +1 -1
  426. package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.js +3 -0
  427. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +4 -2
  428. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
  429. package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +44 -69
  430. package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.d.ts.map +1 -1
  431. package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.js +120 -28
  432. package/node_modules/@oscharko-dev/keiko-server/dist/governed-workflow.d.ts.map +1 -1
  433. package/node_modules/@oscharko-dev/keiko-server/dist/governed-workflow.js +4 -1
  434. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
  435. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +2 -0
  436. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
  437. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +115 -22
  438. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts.map +1 -1
  439. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +54 -21
  440. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
  441. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +11 -4
  442. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -0
  443. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts.map +1 -1
  444. package/node_modules/@oscharko-dev/keiko-server/dist/index.js +1 -0
  445. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
  446. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +7 -3
  447. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.d.ts.map +1 -1
  448. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.js +26 -14
  449. package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.d.ts +1 -0
  450. package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.d.ts.map +1 -1
  451. package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.js +52 -27
  452. package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.d.ts +10 -0
  453. package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.d.ts.map +1 -0
  454. package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.js +44 -0
  455. package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-handlers.d.ts.map +1 -1
  456. package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-handlers.js +79 -57
  457. package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-registry.d.ts +1 -0
  458. package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-registry.d.ts.map +1 -1
  459. package/node_modules/@oscharko-dev/keiko-server/dist/memory-conv-handlers.d.ts.map +1 -1
  460. package/node_modules/@oscharko-dev/keiko-server/dist/memory-conv-handlers.js +6 -4
  461. package/node_modules/@oscharko-dev/keiko-server/dist/memory-conversation-context.d.ts.map +1 -1
  462. package/node_modules/@oscharko-dev/keiko-server/dist/memory-diagnostics.d.ts.map +1 -1
  463. package/node_modules/@oscharko-dev/keiko-server/dist/memory-diagnostics.js +16 -9
  464. package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts +3 -1
  465. package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts.map +1 -1
  466. package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.js +538 -87
  467. package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.d.ts +6 -1
  468. package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.d.ts.map +1 -1
  469. package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.js +17 -38
  470. package/node_modules/@oscharko-dev/keiko-server/dist/memory-retention.d.ts.map +1 -1
  471. package/node_modules/@oscharko-dev/keiko-server/dist/memory-retention.js +7 -15
  472. package/node_modules/@oscharko-dev/keiko-server/dist/memory-salience.d.ts.map +1 -1
  473. package/node_modules/@oscharko-dev/keiko-server/dist/memory-salience.js +17 -2
  474. package/node_modules/@oscharko-dev/keiko-server/dist/memory-scope-sanitizer.d.ts.map +1 -1
  475. package/node_modules/@oscharko-dev/keiko-server/dist/memory-scope-sanitizer.js +19 -0
  476. package/node_modules/@oscharko-dev/keiko-server/dist/memory-target-resolver.d.ts.map +1 -1
  477. package/node_modules/@oscharko-dev/keiko-server/dist/memory-target-resolver.js +4 -1
  478. package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.d.ts +1 -0
  479. package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.d.ts.map +1 -1
  480. package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.js +108 -27
  481. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.d.ts +4 -0
  482. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.d.ts.map +1 -1
  483. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.js +3 -0
  484. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.d.ts.map +1 -1
  485. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.js +61 -7
  486. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.d.ts.map +1 -1
  487. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.js +9 -3
  488. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConcurrency.d.ts.map +1 -1
  489. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConcurrency.js +2 -1
  490. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.d.ts +6 -0
  491. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.d.ts.map +1 -1
  492. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.js +16 -3
  493. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorAudit.d.ts +7 -0
  494. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorAudit.d.ts.map +1 -1
  495. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +1 -1
  496. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -1
  497. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.js +3 -1
  498. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.d.ts +2 -2
  499. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.d.ts.map +1 -1
  500. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.js +3 -3
  501. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.d.ts +5 -0
  502. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.d.ts.map +1 -1
  503. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.js +10 -8
  504. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaReadiness.d.ts.map +1 -1
  505. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaReadiness.js +11 -5
  506. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -1
  507. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js +1 -0
  508. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts +3 -0
  509. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts.map +1 -1
  510. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.js +71 -10
  511. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts +2 -0
  512. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
  513. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +86 -23
  514. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +1 -1
  515. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
  516. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaTokenSource.d.ts.map +1 -1
  517. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaTokenSource.js +4 -3
  518. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaUrl.d.ts.map +1 -1
  519. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaUrl.js +2 -0
  520. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.d.ts +1 -1
  521. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.d.ts.map +1 -1
  522. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.js +1 -1
  523. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaCodegenRoutes.d.ts.map +1 -1
  524. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaCodegenRoutes.js +60 -20
  525. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +11 -6
  526. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -1
  527. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.js +144 -6
  528. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +9 -0
  529. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -1
  530. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.js +84 -15
  531. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -7
  532. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
  533. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +206 -42
  534. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts +3 -1
  535. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
  536. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +69 -65
  537. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts +15 -1
  538. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts.map +1 -1
  539. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.js +56 -39
  540. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts +1 -1
  541. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
  542. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +382 -75
  543. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.d.ts.map +1 -1
  544. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.js +14 -6
  545. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.d.ts +3 -2
  546. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.d.ts.map +1 -1
  547. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.js +44 -16
  548. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts +7 -0
  549. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
  550. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +336 -47
  551. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
  552. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +15 -5
  553. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/traceabilityRoutes.d.ts.map +1 -1
  554. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/traceabilityRoutes.js +36 -4
  555. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -1
  556. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.js +61 -6
  557. package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
  558. package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +16 -5
  559. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts +1 -0
  560. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts.map +1 -1
  561. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.js +3 -0
  562. package/node_modules/@oscharko-dev/keiko-server/dist/run-handlers.d.ts.map +1 -1
  563. package/node_modules/@oscharko-dev/keiko-server/dist/run-handlers.js +2 -0
  564. package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.d.ts +9 -0
  565. package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.d.ts.map +1 -0
  566. package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.js +26 -0
  567. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts.map +1 -1
  568. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.js +16 -8
  569. package/node_modules/@oscharko-dev/keiko-server/dist/store/messages.d.ts.map +1 -1
  570. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.d.ts.map +1 -1
  571. package/node_modules/@oscharko-dev/keiko-server/dist/terminal.d.ts.map +1 -1
  572. package/node_modules/@oscharko-dev/keiko-server/package.json +1 -1
  573. package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
  574. package/node_modules/@oscharko-dev/keiko-tools/dist/patch-normalize.d.ts.map +1 -1
  575. package/node_modules/@oscharko-dev/keiko-tools/dist/patch-normalize.js +13 -7
  576. package/node_modules/@oscharko-dev/keiko-tools/package.json +1 -1
  577. package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
  578. package/node_modules/@oscharko-dev/keiko-verification/package.json +1 -1
  579. package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
  580. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.d.ts +2 -2
  581. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.d.ts.map +1 -1
  582. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.js +16 -18
  583. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/prompt.d.ts.map +1 -1
  584. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/prompt.js +6 -1
  585. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/workflow.d.ts.map +1 -1
  586. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/workflow.js +3 -3
  587. package/node_modules/@oscharko-dev/keiko-workflows/dist/governed-handoff.d.ts.map +1 -1
  588. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/descriptors.d.ts +2 -2
  589. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts +18 -2
  590. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
  591. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +209 -54
  592. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts +4 -4
  593. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts.map +1 -1
  594. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.js +4 -1
  595. package/node_modules/@oscharko-dev/keiko-workflows/dist/unit-tests/target-guard.d.ts.map +1 -1
  596. package/node_modules/@oscharko-dev/keiko-workflows/package.json +1 -1
  597. package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
  598. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -1
  599. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +1 -2
  600. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -1
  601. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +2 -1
  602. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
  603. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +6 -2
  604. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -1
  605. package/node_modules/@oscharko-dev/keiko-workspace/package.json +1 -1
  606. package/package.json +23 -6
  607. package/dist/ui/static/_next/static/chunks/082obv3v03b-9.js +0 -2
  608. package/dist/ui/static/_next/static/chunks/0uifns067thv8.js +0 -1
  609. package/dist/ui/static/_next/static/chunks/0x31-j53ab1tt.js +0 -1
  610. package/dist/ui/static/_next/static/chunks/1m-kvwm6_90_3.css +0 -1
  611. package/dist/ui/static/_next/static/chunks/1v4hrxrm_6_rw.js +0 -1
  612. package/dist/ui/static/_next/static/chunks/27jktro2p5rq9.js +0 -4
  613. package/dist/ui/static/_next/static/chunks/2lypy3ewh0r04.js +0 -1
  614. package/dist/ui/static/_next/static/chunks/2ngm8iwdb1cbv.js +0 -106
  615. package/dist/ui/static/_next/static/chunks/32573pyyglqxl.js +0 -1
  616. package/dist/ui/static/_next/static/chunks/3_t_pzet29qtn.js +0 -1
  617. package/dist/ui/static/_next/static/chunks/3jgg_oe0iok0l.js +0 -1
  618. package/dist/ui/static/_next/static/chunks/3o_oia3vsam60.js +0 -1
  619. package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.js +0 -1
  620. /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → fQMXe8UmV01bh25WOoIt3}/_buildManifest.js +0 -0
  621. /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → fQMXe8UmV01bh25WOoIt3}/_clientMiddlewareManifest.js +0 -0
  622. /package/dist/ui/static/_next/static/{hR2gBQqCDKdPdSxBqZhqv → fQMXe8UmV01bh25WOoIt3}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- // Memory Center BFF route handlers (Issue #211 / Epic #204).
1
+ // MemoriaViva BFF route handlers (Issue #211 / Epic #204).
2
2
  //
3
3
  // These handlers wire the /api/memory/* routes to the three memory packages:
4
4
  // - @oscharko-dev/keiko-memory-vault → persistence (list / get / update / delete)
@@ -15,15 +15,16 @@
15
15
  // Every response is redacted through `deps.redactor` before serialisation to honour D9.
16
16
  import { randomUUID } from "node:crypto";
17
17
  import { createMemoryVault, MemoryStorageError, } from "@oscharko-dev/keiko-memory-vault";
18
- import { GovernanceError, buildArchiveOperation, buildForgetOperations, buildPinOperation, buildUnpinOperation, selectMemoriesForForget, } from "@oscharko-dev/keiko-memory-governance";
19
- import { MEMORY_SCOPE_KINDS, MEMORY_STATUSES, MEMORY_TYPES, MEMORY_SENSITIVITIES, } from "@oscharko-dev/keiko-contracts";
18
+ import { GovernanceError, buildArchiveOperation, buildConflictTransitions, buildCorrection, buildForgetOperations, buildPinOperation, buildUnpinOperation, detectConflictPair, selectMemoriesForForget, } from "@oscharko-dev/keiko-memory-governance";
19
+ import { checkStatusTransition, MEMORY_SCOPE_KINDS, MEMORY_STATUSES, MEMORY_TYPES, MEMORY_SENSITIVITIES, validateMemoryScope, } from "@oscharko-dev/keiko-contracts";
20
20
  import { errorBody } from "./routes.js";
21
+ import { auditRunIdFor, recordMemoryAudit } from "./memory-audit-handler.js";
21
22
  // ─── Constants ────────────────────────────────────────────────────────────────
22
23
  const MAX_MEMORY_BODY_BYTES = 64_000;
23
- const DEFAULT_REVIEWER_ID = "memory-center-ui";
24
+ const DEFAULT_REVIEWER_ID = "memoriaviva-ui";
24
25
  const MAX_LIST_LIMIT = 200;
25
26
  const DEFAULT_LIST_LIMIT = 50;
26
- const REVIEW_QUEUE_STATUSES = ["proposed", "conflicted"];
27
+ const REVIEW_QUEUE_STATUSES = ["proposed", "conflicted", "expired"];
27
28
  // ─── Type guards / helpers ─────────────────────────────────────────────────────
28
29
  // Sanitise GovernanceError into a code-keyed safe response body. GovernanceError.message
29
30
  // is composed as `GovernanceError(${code}): ${detail}` and can embed memory UUIDs from
@@ -74,6 +75,18 @@ function splitComma(raw) {
74
75
  .map((s) => s.trim())
75
76
  .filter((s) => s.length > 0);
76
77
  }
78
+ function parseScope(raw) {
79
+ if (!isRecord(raw)) {
80
+ return { status: 400, body: errorBody("BAD_REQUEST", "selector.scope must be an object.") };
81
+ }
82
+ if (!validateMemoryScope(raw).ok) {
83
+ return {
84
+ status: 400,
85
+ body: errorBody("BAD_REQUEST", "selector.scope must be a valid memory scope."),
86
+ };
87
+ }
88
+ return raw;
89
+ }
77
90
  // ─── Body reading ──────────────────────────────────────────────────────────────
78
91
  class BodyTooLargeError extends Error {
79
92
  constructor() {
@@ -185,6 +198,26 @@ function listMemoriesAcrossScopes(vault, options) {
185
198
  });
186
199
  return sortMemories(filtered);
187
200
  }
201
+ function isStaleReviewCandidate(record) {
202
+ return (record.staleReason !== undefined &&
203
+ record.status !== "proposed" &&
204
+ record.status !== "conflicted" &&
205
+ record.status !== "expired" &&
206
+ record.status !== "rejected" &&
207
+ record.status !== "archived" &&
208
+ record.status !== "forgotten");
209
+ }
210
+ function listReviewQueueMemories(vault) {
211
+ const byStatus = listMemoriesAcrossScopes(vault, {
212
+ statuses: REVIEW_QUEUE_STATUSES,
213
+ });
214
+ const stale = listMemoriesAcrossScopes(vault, {}).filter(isStaleReviewCandidate);
215
+ const byId = new Map();
216
+ for (const record of [...byStatus, ...stale]) {
217
+ byId.set(record.id, record);
218
+ }
219
+ return sortMemories([...byId.values()]);
220
+ }
188
221
  function parseListParams(ctx) {
189
222
  const scopeKinds = splitComma(ctx.url.searchParams.get("scope"));
190
223
  const types = splitComma(ctx.url.searchParams.get("type"));
@@ -259,9 +292,7 @@ export function handleMemoryReviewQueue(_ctx, deps) {
259
292
  if (isRouteResult(vault))
260
293
  return vault;
261
294
  try {
262
- const proposed = listMemoriesAcrossScopes(vault, {
263
- statuses: REVIEW_QUEUE_STATUSES,
264
- });
295
+ const proposed = listReviewQueueMemories(vault);
265
296
  return {
266
297
  status: 200,
267
298
  body: {
@@ -466,7 +497,7 @@ export async function handleArchiveMemory(ctx, deps) {
466
497
  throw err;
467
498
  }
468
499
  }
469
- function parseForgetInput(raw) {
500
+ function parseDestructiveInput(raw, defaultReason) {
470
501
  if (raw.acknowledged !== true) {
471
502
  return {
472
503
  status: 400,
@@ -475,30 +506,152 @@ function parseForgetInput(raw) {
475
506
  }
476
507
  const reason = typeof raw.reason === "string" && raw.reason.trim().length > 0
477
508
  ? raw.reason.trim()
478
- : "user-initiated forget from Memory Center";
509
+ : defaultReason;
479
510
  return { reason };
480
511
  }
481
- function executeForget(vault, id, reason) {
482
- const record = vault.getMemory(id);
483
- if (record === undefined) {
484
- return { status: 404, body: errorBody("NOT_FOUND", "Memory not found.") };
512
+ function parseByIdForgetSelector(raw) {
513
+ if (typeof raw.memoryId !== "string" || raw.memoryId.trim().length === 0) {
514
+ return {
515
+ status: 400,
516
+ body: errorBody("BAD_REQUEST", "selector.memoryId must be a non-empty string."),
517
+ };
518
+ }
519
+ return { kind: "by-id", memoryId: raw.memoryId };
520
+ }
521
+ function parseByScopeForgetSelector(raw) {
522
+ const scope = parseScope(raw.scope);
523
+ if (isRouteResult(scope))
524
+ return scope;
525
+ return { kind: "by-scope", scope };
526
+ }
527
+ function parseByTypeForgetSelector(raw) {
528
+ const scope = parseScope(raw.scope);
529
+ if (isRouteResult(scope))
530
+ return scope;
531
+ if (!isMemoryType(raw.type)) {
532
+ return {
533
+ status: 400,
534
+ body: errorBody("BAD_REQUEST", "selector.type must be a valid memory type."),
535
+ };
536
+ }
537
+ return { kind: "by-type", scope, type: raw.type };
538
+ }
539
+ function parseBySourceConversationForgetSelector(raw) {
540
+ const scope = parseScope(raw.scope);
541
+ if (isRouteResult(scope))
542
+ return scope;
543
+ if (typeof raw.sourceConversationId !== "string" ||
544
+ raw.sourceConversationId.trim().length === 0) {
545
+ return {
546
+ status: 400,
547
+ body: errorBody("BAD_REQUEST", "selector.sourceConversationId must be a non-empty string."),
548
+ };
485
549
  }
550
+ return {
551
+ kind: "by-source-conversation",
552
+ scope,
553
+ sourceConversationId: raw.sourceConversationId,
554
+ };
555
+ }
556
+ function parseByTimeWindowForgetSelector(raw) {
557
+ const scope = parseScope(raw.scope);
558
+ if (isRouteResult(scope))
559
+ return scope;
560
+ if (typeof raw.olderThanMs !== "number" ||
561
+ !Number.isFinite(raw.olderThanMs) ||
562
+ raw.olderThanMs < 0) {
563
+ return {
564
+ status: 400,
565
+ body: errorBody("BAD_REQUEST", "selector.olderThanMs must be a finite non-negative number."),
566
+ };
567
+ }
568
+ return { kind: "by-time-window", scope, olderThanMs: raw.olderThanMs };
569
+ }
570
+ function parseForgetSelector(raw) {
571
+ if (!isRecord(raw)) {
572
+ return { status: 400, body: errorBody("BAD_REQUEST", "selector must be an object.") };
573
+ }
574
+ switch (raw.kind) {
575
+ case "by-id":
576
+ return parseByIdForgetSelector(raw);
577
+ case "by-scope":
578
+ return parseByScopeForgetSelector(raw);
579
+ case "by-type":
580
+ return parseByTypeForgetSelector(raw);
581
+ case "by-source-conversation":
582
+ return parseBySourceConversationForgetSelector(raw);
583
+ case "by-time-window":
584
+ return parseByTimeWindowForgetSelector(raw);
585
+ default:
586
+ return {
587
+ status: 400,
588
+ body: errorBody("BAD_REQUEST", "selector.kind is not supported."),
589
+ };
590
+ }
591
+ }
592
+ function parseForgetSelectionInput(raw) {
593
+ const destructive = parseDestructiveInput(raw, "user-initiated selective forget from MemoriaViva");
594
+ if (isRouteResult(destructive))
595
+ return destructive;
596
+ const selector = parseForgetSelector(raw.selector);
597
+ if (isRouteResult(selector))
598
+ return selector;
599
+ return { ...destructive, selector };
600
+ }
601
+ function listForgetCandidates(vault, selector) {
602
+ if (selector.kind === "by-id") {
603
+ const record = vault.getMemory(selector.memoryId);
604
+ if (record === undefined) {
605
+ return { status: 404, body: errorBody("NOT_FOUND", "Memory not found.") };
606
+ }
607
+ return [record];
608
+ }
609
+ return sortMemories(vault.listMemoriesByScope(selector.scope, { includeExpired: true }));
610
+ }
611
+ function executeForgetSelection(vault, selector, reason) {
486
612
  const nowMs = Date.now();
487
- const candidates = selectMemoriesForForget([record], { kind: "by-id", memoryId: id }, { nowMs });
613
+ const records = listForgetCandidates(vault, selector);
614
+ if (isRouteResult(records))
615
+ return records;
616
+ const candidates = selectMemoriesForForget(records, selector, { nowMs });
488
617
  if (candidates.length === 0) {
489
618
  return {
490
619
  status: 409,
491
- body: errorBody("GOVERNANCE_ERROR", "Memory cannot be forgotten (it may be pinned)."),
620
+ body: errorBody("GOVERNANCE_ERROR", "No matching memories can be forgotten."),
492
621
  };
493
622
  }
494
- buildForgetOperations(candidates, { reviewerId: DEFAULT_REVIEWER_ID, nowMs }, { reason, writeTombstone: true });
495
- vault.deleteMemory(id, {
496
- tombstone: true,
497
- reason,
498
- forgetterSurface: "memory-center",
499
- nowMs,
500
- });
501
- return { status: 200, body: { forgotten: true, memoryId: id } };
623
+ const operations = buildForgetOperations(candidates, { reviewerId: DEFAULT_REVIEWER_ID, nowMs }, { reason, writeTombstone: true });
624
+ vault.deleteMemories(operations.map((operation) => ({
625
+ id: operation.memoryId,
626
+ options: {
627
+ tombstone: true,
628
+ reviewerId: operation.reviewerId,
629
+ reason: operation.reason,
630
+ forgetterSurface: "memory-center",
631
+ nowMs: operation.forgottenAt,
632
+ },
633
+ })));
634
+ return { memoryIds: operations.map((operation) => operation.memoryId) };
635
+ }
636
+ function formatForgetBody(memoryIds) {
637
+ return {
638
+ forgotten: true,
639
+ memoryIds,
640
+ count: memoryIds.length,
641
+ ...(memoryIds.length === 1 ? { memoryId: memoryIds[0] } : {}),
642
+ };
643
+ }
644
+ function memoryMutationErrorBody(err, fallbackMessage) {
645
+ if (err instanceof GovernanceError) {
646
+ return { status: 400, body: governanceErrorBody(err) };
647
+ }
648
+ if (err instanceof MemoryStorageError) {
649
+ return {
650
+ status: err.code === "not-found" ? 404 : 500,
651
+ body: errorBody("MEMORY_ERROR", fallbackMessage),
652
+ };
653
+ }
654
+ throw err;
502
655
  }
503
656
  export async function handleForgetMemory(ctx, deps) {
504
657
  const vault = resolveVault(deps);
@@ -511,28 +664,42 @@ export async function handleForgetMemory(ctx, deps) {
511
664
  const body = await readJsonBody(ctx.req);
512
665
  if (isRouteResult(body))
513
666
  return body;
514
- const input = parseForgetInput(body);
667
+ const input = parseDestructiveInput(body, "user-initiated forget from MemoriaViva");
515
668
  if (isRouteResult(input))
516
669
  return input;
517
670
  try {
518
- return executeForget(vault, id, input.reason);
671
+ const result = executeForgetSelection(vault, { kind: "by-id", memoryId: id }, input.reason);
672
+ if (isRouteResult(result))
673
+ return result;
674
+ return { status: 200, body: formatForgetBody(result.memoryIds) };
519
675
  }
520
676
  catch (err) {
521
- if (err instanceof GovernanceError) {
522
- return { status: 400, body: governanceErrorBody(err) };
523
- }
524
- if (err instanceof MemoryStorageError) {
525
- return {
526
- status: err.code === "not-found" ? 404 : 500,
527
- body: errorBody("MEMORY_ERROR", "Failed to forget memory."),
528
- };
529
- }
530
- throw err;
677
+ return memoryMutationErrorBody(err, "Failed to forget memory.");
678
+ }
679
+ }
680
+ export async function handleForgetMemories(ctx, deps) {
681
+ const vault = resolveVault(deps);
682
+ if (isRouteResult(vault))
683
+ return vault;
684
+ const body = await readJsonBody(ctx.req);
685
+ if (isRouteResult(body))
686
+ return body;
687
+ const input = parseForgetSelectionInput(body);
688
+ if (isRouteResult(input))
689
+ return input;
690
+ try {
691
+ const result = executeForgetSelection(vault, input.selector, input.reason);
692
+ if (isRouteResult(result))
693
+ return result;
694
+ return { status: 200, body: formatForgetBody(result.memoryIds) };
695
+ }
696
+ catch (err) {
697
+ return memoryMutationErrorBody(err, "Failed to forget memories.");
531
698
  }
532
699
  }
533
700
  // ─── Handler: DELETE /api/memory/:id ──────────────────────────────────────────
534
- // Hard delete without a tombstone. Intended for admin / data cleanup.
535
- export function handleDeleteMemory(ctx, deps) {
701
+ // DELETE is a convenience alias for governed, tombstoned deletion. It does not expose hard delete.
702
+ export async function handleDeleteMemory(ctx, deps) {
536
703
  const vault = resolveVault(deps);
537
704
  if (isRouteResult(vault))
538
705
  return vault;
@@ -540,26 +707,176 @@ export function handleDeleteMemory(ctx, deps) {
540
707
  if (id === undefined || id.length === 0) {
541
708
  return { status: 400, body: errorBody("BAD_REQUEST", "Memory id is required.") };
542
709
  }
710
+ const body = await readJsonBody(ctx.req);
711
+ if (isRouteResult(body))
712
+ return body;
713
+ const input = parseDestructiveInput(body, "user-initiated delete from MemoriaViva");
714
+ if (isRouteResult(input))
715
+ return input;
543
716
  try {
544
- const existing = vault.getMemory(id);
545
- if (existing === undefined) {
717
+ const result = executeForgetSelection(vault, { kind: "by-id", memoryId: id }, input.reason);
718
+ if (isRouteResult(result))
719
+ return result;
720
+ return {
721
+ status: 200,
722
+ body: {
723
+ deleted: true,
724
+ memoryId: id,
725
+ memoryIds: result.memoryIds,
726
+ count: result.memoryIds.length,
727
+ },
728
+ };
729
+ }
730
+ catch (err) {
731
+ return memoryMutationErrorBody(err, "Failed to delete memory.");
732
+ }
733
+ }
734
+ function uniqueIds(ids) {
735
+ return ids.filter((id, index) => ids.indexOf(id) === index);
736
+ }
737
+ function parseConflictResolutionInput(raw) {
738
+ if (typeof raw.winner !== "string" || raw.winner.trim().length === 0) {
739
+ return { status: 400, body: errorBody("BAD_REQUEST", "winner must be a non-empty string.") };
740
+ }
741
+ if (!Array.isArray(raw.losers) ||
742
+ raw.losers.length === 0 ||
743
+ !raw.losers.every((id) => typeof id === "string" && id.trim().length > 0)) {
744
+ return {
745
+ status: 400,
746
+ body: errorBody("BAD_REQUEST", "losers must be a non-empty string array."),
747
+ };
748
+ }
749
+ const reason = typeof raw.reason === "string" && raw.reason.trim().length > 0
750
+ ? raw.reason.trim()
751
+ : "conflict resolved from MemoriaViva";
752
+ const winner = raw.winner;
753
+ const losers = raw.losers.map((id) => id);
754
+ if (uniqueIds([winner, ...losers]).length !== 1 + losers.length) {
755
+ return {
756
+ status: 400,
757
+ body: errorBody("BAD_REQUEST", "winner and losers must be unique memory ids."),
758
+ };
759
+ }
760
+ return {
761
+ winner,
762
+ losers,
763
+ reason,
764
+ };
765
+ }
766
+ function loadConflictMemories(vault, input) {
767
+ const records = [];
768
+ for (const id of uniqueIds([input.winner, ...input.losers])) {
769
+ const record = vault.getMemory(id);
770
+ if (record === undefined) {
546
771
  return { status: 404, body: errorBody("NOT_FOUND", "Memory not found.") };
547
772
  }
548
- vault.deleteMemory(id, {
549
- tombstone: false,
550
- forgetterSurface: "memory-center",
551
- nowMs: Date.now(),
552
- });
553
- return { status: 200, body: { deleted: true, memoryId: id } };
773
+ records.push(record);
554
774
  }
555
- catch (err) {
556
- if (err instanceof MemoryStorageError) {
557
- return {
558
- status: err.code === "not-found" ? 404 : 500,
559
- body: errorBody("MEMORY_ERROR", "Failed to delete memory."),
560
- };
775
+ return records;
776
+ }
777
+ function scopeKey(scope) {
778
+ switch (scope.kind) {
779
+ case "user":
780
+ return `user:${scope.userId}`;
781
+ case "workspace":
782
+ return `workspace:${scope.workspaceId}`;
783
+ case "project":
784
+ return `project:${scope.projectId}`;
785
+ case "workflow":
786
+ return `workflow:${scope.workflowDefinitionId}`;
787
+ case "global":
788
+ return "global";
789
+ }
790
+ }
791
+ function validateConflictPairForResolution(winner, loser) {
792
+ if (winner.type !== loser.type || scopeKey(winner.scope) !== scopeKey(loser.scope)) {
793
+ throw new GovernanceError("invalid-resolution", "conflict resolution requires memories with the same scope and type");
794
+ }
795
+ const conflict = detectConflictPair(winner, loser);
796
+ if (!conflict.hasConflict) {
797
+ throw new GovernanceError("invalid-resolution", "conflict resolution requires an actual detected conflict");
798
+ }
799
+ }
800
+ function validateConflictResolutionMemories(memories, input) {
801
+ const winner = findMemoryById(memories, input.winner);
802
+ if (winner === undefined) {
803
+ throw new GovernanceError("invalid-resolution", "winner is not loaded");
804
+ }
805
+ for (const loserId of input.losers) {
806
+ const loser = findMemoryById(memories, loserId);
807
+ if (loser === undefined) {
808
+ throw new GovernanceError("invalid-resolution", "loser is not loaded");
561
809
  }
562
- throw err;
810
+ validateConflictPairForResolution(winner, loser);
811
+ }
812
+ }
813
+ function buildEdgeFromSupersession(supersession) {
814
+ return {
815
+ id: randomUUID(),
816
+ schemaVersion: "1",
817
+ fromMemoryId: supersession.oldMemoryId,
818
+ toMemoryId: supersession.newMemoryId,
819
+ kind: supersession.edgeKind,
820
+ createdAt: supersession.supersededAt,
821
+ provenanceSummary: supersession.reason,
822
+ };
823
+ }
824
+ function findMemoryById(memories, id) {
825
+ return memories.find((memory) => memory.id === id);
826
+ }
827
+ function persistConflictTransitions(vault, resolution, reason) {
828
+ for (const transition of resolution.statusTransitions) {
829
+ vault.updateMemory(transition.memoryId, { status: transition.to, staleReason: reason }, transition.transitionedAt);
830
+ }
831
+ }
832
+ function persistConflictSupersessions(vault, deps, memories, supersessions, nowMs) {
833
+ const edgeIds = [];
834
+ for (const supersession of supersessions) {
835
+ const edge = vault.insertEdge(buildEdgeFromSupersession(supersession));
836
+ edgeIds.push(edge.id);
837
+ const loser = findMemoryById(memories, supersession.oldMemoryId);
838
+ const winner = findMemoryById(memories, supersession.newMemoryId);
839
+ if (loser === undefined || winner === undefined)
840
+ continue;
841
+ recordSupersessionAudit(deps, loser, winner, nowMs, "Conflict resolution linked losing memory to the selected winner.");
842
+ }
843
+ return edgeIds;
844
+ }
845
+ function executeConflictResolution(vault, deps, input) {
846
+ const memories = loadConflictMemories(vault, input);
847
+ if (isRouteResult(memories))
848
+ return memories;
849
+ validateConflictResolutionMemories(memories, input);
850
+ const nowMs = Date.now();
851
+ const resolution = buildConflictTransitions(memories, { winner: input.winner, losers: input.losers }, { reviewerId: DEFAULT_REVIEWER_ID, nowMs });
852
+ persistConflictTransitions(vault, resolution, input.reason);
853
+ const edgeIds = persistConflictSupersessions(vault, deps, memories, resolution.supersessions, nowMs);
854
+ return {
855
+ resolved: true,
856
+ winner: input.winner,
857
+ losers: input.losers,
858
+ supersessionEdgeIds: edgeIds,
859
+ transitions: resolution.statusTransitions,
860
+ };
861
+ }
862
+ export async function handleResolveMemoryConflict(ctx, deps) {
863
+ const vault = resolveVault(deps);
864
+ if (isRouteResult(vault))
865
+ return vault;
866
+ const body = await readJsonBody(ctx.req);
867
+ if (isRouteResult(body))
868
+ return body;
869
+ const input = parseConflictResolutionInput(body);
870
+ if (isRouteResult(input))
871
+ return input;
872
+ try {
873
+ const result = executeConflictResolution(vault, deps, input);
874
+ if (isRouteResult(result))
875
+ return result;
876
+ return { status: 200, body: result };
877
+ }
878
+ catch (err) {
879
+ return memoryMutationErrorBody(err, "Failed to resolve conflict.");
563
880
  }
564
881
  }
565
882
  // ─── Handler: POST /api/memory/:id/correct ────────────────────────────────────
@@ -574,26 +891,74 @@ function parseCorrectInput(raw) {
574
891
  }
575
892
  return { correctedBody };
576
893
  }
577
- function buildCorrectionRecord(existing, correctedBody, nowMs) {
894
+ function buildCorrectionRecord(proposal, id, nowMs) {
578
895
  // Note: exactOptionalPropertyTypes is on — omit staleReason rather than assigning undefined.
579
- return {
580
- id: randomUUID(),
896
+ const base = {
897
+ id,
581
898
  schemaVersion: "1",
582
- scope: existing.scope,
583
- type: "correction",
584
- body: correctedBody,
585
- provenance: {
586
- ...existing.provenance,
587
- sourceKind: "accepted-correction",
588
- capturedAt: nowMs,
589
- },
590
- validity: existing.validity,
591
- status: "proposed",
899
+ scope: proposal.scope,
900
+ type: proposal.type,
901
+ body: proposal.body,
902
+ provenance: proposal.provenance,
903
+ validity: proposal.validity,
904
+ status: proposal.initialStatus,
592
905
  pinned: false,
593
- tags: existing.tags,
906
+ tags: proposal.tags,
594
907
  createdAt: nowMs,
595
908
  updatedAt: nowMs,
596
909
  };
910
+ return {
911
+ ...base,
912
+ ...(proposal.payload === undefined ? {} : { payload: proposal.payload }),
913
+ ...(proposal.retentionHint === undefined ? {} : { retentionHint: proposal.retentionHint }),
914
+ };
915
+ }
916
+ function redactString(deps, value) {
917
+ const redacted = deps.redactor(value);
918
+ return typeof redacted === "string" ? redacted : value;
919
+ }
920
+ function recordSupersessionAudit(deps, oldMemory, newMemory, nowMs, summary) {
921
+ const event = {
922
+ schemaVersion: "1",
923
+ kind: "memory:superseded",
924
+ eventId: randomUUID(),
925
+ occurredAt: nowMs,
926
+ initiatorSurface: "memory-center",
927
+ summary,
928
+ oldMemoryId: oldMemory.id,
929
+ newMemoryId: newMemory.id,
930
+ scope: oldMemory.scope,
931
+ };
932
+ recordMemoryAudit({ evidenceStore: deps.evidenceStore, redactString: (value) => redactString(deps, value) }, event);
933
+ }
934
+ function auditEventCountForDay(deps, nowMs) {
935
+ const json = deps.evidenceStore.get(auditRunIdFor(nowMs));
936
+ if (json === undefined) {
937
+ return 0;
938
+ }
939
+ try {
940
+ const parsed = JSON.parse(json);
941
+ return Array.isArray(parsed) ? parsed.length : 0;
942
+ }
943
+ catch {
944
+ return 0;
945
+ }
946
+ }
947
+ function recordCorrectionProposalAuditIfNeeded(deps, inserted, nowMs, countBeforeInsert) {
948
+ if (auditEventCountForDay(deps, nowMs) > countBeforeInsert) {
949
+ return;
950
+ }
951
+ const event = {
952
+ schemaVersion: "1",
953
+ kind: "memory:proposed",
954
+ eventId: randomUUID(),
955
+ occurredAt: nowMs,
956
+ initiatorSurface: "memory-center",
957
+ summary: `memory ${inserted.id} correction proposed`,
958
+ memoryId: inserted.id,
959
+ scope: inserted.scope,
960
+ };
961
+ recordMemoryAudit({ evidenceStore: deps.evidenceStore, redactString: (value) => redactString(deps, value) }, event);
597
962
  }
598
963
  export async function handleCorrectMemory(ctx, deps) {
599
964
  const vault = resolveVault(deps);
@@ -614,13 +979,28 @@ export async function handleCorrectMemory(ctx, deps) {
614
979
  if (existing === undefined) {
615
980
  return { status: 404, body: errorBody("NOT_FOUND", "Memory not found.") };
616
981
  }
617
- const inserted = vault.insertMemory(buildCorrectionRecord(existing, input.correctedBody, Date.now()));
982
+ const nowMs = Date.now();
983
+ const correctionId = randomUUID();
984
+ const { proposal, supersession } = buildCorrection({
985
+ olderMemory: existing,
986
+ correctedBody: input.correctedBody,
987
+ context: { reviewerId: DEFAULT_REVIEWER_ID, nowMs },
988
+ newProposalId: randomUUID(),
989
+ newMemoryId: correctionId,
990
+ });
991
+ const auditCountBeforeInsert = auditEventCountForDay(deps, nowMs);
992
+ const inserted = vault.insertMemory(buildCorrectionRecord(proposal, correctionId, nowMs));
993
+ recordCorrectionProposalAuditIfNeeded(deps, inserted, nowMs, auditCountBeforeInsert);
994
+ vault.insertEdge(buildEdgeFromSupersession(supersession));
618
995
  return {
619
996
  status: 201,
620
997
  body: { correction: redactMemory(deps, inserted), originalMemoryId: id },
621
998
  };
622
999
  }
623
1000
  catch (err) {
1001
+ if (err instanceof GovernanceError) {
1002
+ return { status: 400, body: governanceErrorBody(err) };
1003
+ }
624
1004
  if (err instanceof MemoryStorageError) {
625
1005
  return { status: 500, body: errorBody("MEMORY_ERROR", "Failed to create correction.") };
626
1006
  }
@@ -628,6 +1008,94 @@ export async function handleCorrectMemory(ctx, deps) {
628
1008
  }
629
1009
  }
630
1010
  // ─── Handler: POST /api/memory/proposals/:id/accept ───────────────────────────
1011
+ function assertSupersedable(memory) {
1012
+ const check = checkStatusTransition(memory.status, "superseded");
1013
+ if (!check.ok) {
1014
+ throw new GovernanceError("illegal-status-transition", check.reason ?? `illegal transition: ${memory.status} -> superseded`);
1015
+ }
1016
+ }
1017
+ function loadCorrectionSupersessionOrigins(vault, proposal) {
1018
+ if (proposal.type !== "correction")
1019
+ return [];
1020
+ const incomingSupersessions = vault
1021
+ .listIncomingEdges(proposal.id)
1022
+ .filter((edge) => edge.kind === "supersedes");
1023
+ if (incomingSupersessions.length === 0) {
1024
+ throw new GovernanceError("invalid-resolution", "correction proposal requires a supersession origin");
1025
+ }
1026
+ return incomingSupersessions.map((edge) => {
1027
+ const original = vault.getMemory(edge.fromMemoryId);
1028
+ if (original === undefined) {
1029
+ throw new GovernanceError("invalid-resolution", "correction origin memory is missing");
1030
+ }
1031
+ return { edge, original };
1032
+ });
1033
+ }
1034
+ function acceptedCorrectionType(origins) {
1035
+ if (origins.length === 0)
1036
+ return undefined;
1037
+ const first = origins[0]?.original.type;
1038
+ if (first === undefined)
1039
+ return undefined;
1040
+ for (const origin of origins) {
1041
+ if (origin.original.type !== first) {
1042
+ throw new GovernanceError("invalid-resolution", "correction origins must have the same memory type");
1043
+ }
1044
+ assertSupersedable(origin.original);
1045
+ }
1046
+ return first;
1047
+ }
1048
+ function buildAcceptProposalPatch(origins) {
1049
+ const correctionType = acceptedCorrectionType(origins);
1050
+ return correctionType === undefined
1051
+ ? { status: "accepted" }
1052
+ : { status: "accepted", type: correctionType };
1053
+ }
1054
+ function buildCorrectionAcceptanceUpdates(proposalId, acceptPatch, origins, nowMs) {
1055
+ return [
1056
+ { id: proposalId, patch: acceptPatch, nowMs },
1057
+ ...origins.map(({ edge, original }) => ({
1058
+ id: original.id,
1059
+ patch: {
1060
+ status: "superseded",
1061
+ staleReason: edge.provenanceSummary ?? "accepted correction",
1062
+ },
1063
+ nowMs,
1064
+ })),
1065
+ ];
1066
+ }
1067
+ function recordCorrectionSupersessionAudits(deps, acceptedCorrection, origins, nowMs) {
1068
+ for (const { original } of origins) {
1069
+ recordSupersessionAudit(deps, original, acceptedCorrection, nowMs, "Accepted correction superseded the original memory.");
1070
+ }
1071
+ }
1072
+ function ensureProposedMemory(existing) {
1073
+ if (existing === undefined) {
1074
+ return { status: 404, body: errorBody("NOT_FOUND", "Memory proposal not found.") };
1075
+ }
1076
+ if (existing.status !== "proposed") {
1077
+ return {
1078
+ status: 409,
1079
+ body: errorBody("CONFLICT", "Memory is not in proposed status."),
1080
+ };
1081
+ }
1082
+ return existing;
1083
+ }
1084
+ function acceptMemoryProposal(vault, deps, id) {
1085
+ const existing = ensureProposedMemory(vault.getMemory(id));
1086
+ if (isRouteResult(existing))
1087
+ return existing;
1088
+ const nowMs = Date.now();
1089
+ const origins = loadCorrectionSupersessionOrigins(vault, existing);
1090
+ const acceptPatch = buildAcceptProposalPatch(origins);
1091
+ const updates = buildCorrectionAcceptanceUpdates(id, acceptPatch, origins, nowMs);
1092
+ const [updated] = vault.updateMemories(updates);
1093
+ if (updated === undefined) {
1094
+ throw new GovernanceError("invalid-resolution", "acceptance update produced no records");
1095
+ }
1096
+ recordCorrectionSupersessionAudits(deps, updated, origins, nowMs);
1097
+ return { status: 200, body: { memory: redactMemory(deps, updated) } };
1098
+ }
631
1099
  export function handleAcceptMemoryProposal(ctx, deps) {
632
1100
  const vault = resolveVault(deps);
633
1101
  if (isRouteResult(vault))
@@ -637,27 +1105,10 @@ export function handleAcceptMemoryProposal(ctx, deps) {
637
1105
  return { status: 400, body: errorBody("BAD_REQUEST", "Memory id is required.") };
638
1106
  }
639
1107
  try {
640
- const existing = vault.getMemory(id);
641
- if (existing === undefined) {
642
- return { status: 404, body: errorBody("NOT_FOUND", "Memory proposal not found.") };
643
- }
644
- if (existing.status !== "proposed") {
645
- return {
646
- status: 409,
647
- body: errorBody("CONFLICT", "Memory is not in proposed status."),
648
- };
649
- }
650
- const updated = vault.updateMemory(id, { status: "accepted" }, Date.now());
651
- return { status: 200, body: { memory: redactMemory(deps, updated) } };
1108
+ return acceptMemoryProposal(vault, deps, id);
652
1109
  }
653
1110
  catch (err) {
654
- if (err instanceof MemoryStorageError) {
655
- return {
656
- status: err.code === "not-found" ? 404 : 500,
657
- body: errorBody("MEMORY_ERROR", "Failed to accept proposal."),
658
- };
659
- }
660
- throw err;
1111
+ return memoryMutationErrorBody(err, "Failed to accept proposal.");
661
1112
  }
662
1113
  }
663
1114
  // ─── Handler: POST /api/memory/proposals/:id/reject ───────────────────────────