audrey 0.21.0 → 1.0.0

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 (346) hide show
  1. package/CHANGELOG.md +238 -0
  2. package/LICENSE +21 -21
  3. package/README.md +281 -33
  4. package/SECURITY.md +30 -0
  5. package/benchmarks/adapter-kit.mjs +20 -0
  6. package/benchmarks/adapter-self-test.mjs +166 -0
  7. package/benchmarks/adapters/example-allow.mjs +28 -0
  8. package/benchmarks/adapters/mem0-platform.mjs +267 -0
  9. package/benchmarks/adapters/registry.json +51 -0
  10. package/benchmarks/adapters/zep-cloud.mjs +280 -0
  11. package/benchmarks/baselines.js +169 -0
  12. package/benchmarks/build-leaderboard.mjs +170 -0
  13. package/benchmarks/cases.js +537 -0
  14. package/benchmarks/create-conformance-card.mjs +139 -0
  15. package/benchmarks/create-submission-bundle.mjs +176 -0
  16. package/benchmarks/dry-run-external-adapters.mjs +165 -0
  17. package/benchmarks/guardbench.js +1035 -0
  18. package/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +50 -0
  19. package/benchmarks/output/external/guardbench-external-dry-run.json +69 -0
  20. package/benchmarks/output/external/guardbench-external-evidence.json +56 -0
  21. package/benchmarks/output/guardbench-conformance-card.json +63 -0
  22. package/benchmarks/output/guardbench-manifest.json +414 -0
  23. package/benchmarks/output/guardbench-raw.json +1171 -0
  24. package/benchmarks/output/guardbench-summary.json +1981 -0
  25. package/benchmarks/output/leaderboard/guardbench-leaderboard.json +93 -0
  26. package/benchmarks/output/leaderboard/guardbench-leaderboard.md +7 -0
  27. package/benchmarks/output/submission-bundle/guardbench-conformance-card.json +63 -0
  28. package/benchmarks/output/submission-bundle/guardbench-manifest.json +414 -0
  29. package/benchmarks/output/submission-bundle/guardbench-raw.json +1171 -0
  30. package/benchmarks/output/submission-bundle/guardbench-summary.json +1981 -0
  31. package/benchmarks/output/submission-bundle/schemas/guardbench-adapter-registry.schema.json +69 -0
  32. package/benchmarks/output/submission-bundle/schemas/guardbench-adapter-self-test.schema.json +156 -0
  33. package/benchmarks/output/submission-bundle/schemas/guardbench-conformance-card.schema.json +184 -0
  34. package/benchmarks/output/submission-bundle/schemas/guardbench-external-dry-run.schema.json +74 -0
  35. package/benchmarks/output/submission-bundle/schemas/guardbench-external-evidence.schema.json +108 -0
  36. package/benchmarks/output/submission-bundle/schemas/guardbench-external-run.schema.json +160 -0
  37. package/benchmarks/output/submission-bundle/schemas/guardbench-leaderboard.schema.json +179 -0
  38. package/benchmarks/output/submission-bundle/schemas/guardbench-manifest.schema.json +213 -0
  39. package/benchmarks/output/submission-bundle/schemas/guardbench-publication-verification.schema.json +47 -0
  40. package/benchmarks/output/submission-bundle/schemas/guardbench-raw.schema.json +164 -0
  41. package/benchmarks/output/submission-bundle/schemas/guardbench-submission-manifest.schema.json +151 -0
  42. package/benchmarks/output/submission-bundle/schemas/guardbench-summary.schema.json +228 -0
  43. package/benchmarks/output/submission-bundle/submission-manifest.json +131 -0
  44. package/benchmarks/output/submission-bundle/validation-report.json +31 -0
  45. package/benchmarks/output/summary.json +2354 -0
  46. package/benchmarks/perf-snapshot.js +304 -0
  47. package/benchmarks/perf.bench.js +161 -0
  48. package/benchmarks/public-paths.mjs +78 -0
  49. package/benchmarks/reference-results.js +70 -0
  50. package/benchmarks/report.js +259 -0
  51. package/benchmarks/run-external-guardbench.mjs +281 -0
  52. package/benchmarks/run.js +682 -0
  53. package/benchmarks/schemas/guardbench-adapter-registry.schema.json +69 -0
  54. package/benchmarks/schemas/guardbench-adapter-self-test.schema.json +156 -0
  55. package/benchmarks/schemas/guardbench-conformance-card.schema.json +184 -0
  56. package/benchmarks/schemas/guardbench-external-dry-run.schema.json +74 -0
  57. package/benchmarks/schemas/guardbench-external-evidence.schema.json +108 -0
  58. package/benchmarks/schemas/guardbench-external-run.schema.json +160 -0
  59. package/benchmarks/schemas/guardbench-leaderboard.schema.json +179 -0
  60. package/benchmarks/schemas/guardbench-manifest.schema.json +213 -0
  61. package/benchmarks/schemas/guardbench-publication-verification.schema.json +47 -0
  62. package/benchmarks/schemas/guardbench-raw.schema.json +164 -0
  63. package/benchmarks/schemas/guardbench-submission-manifest.schema.json +151 -0
  64. package/benchmarks/schemas/guardbench-summary.schema.json +228 -0
  65. package/benchmarks/snapshots/perf-0.22.2.json +123 -0
  66. package/benchmarks/snapshots/perf-0.23.0.json +123 -0
  67. package/benchmarks/validate-adapter-module.mjs +104 -0
  68. package/benchmarks/validate-adapter-registry.mjs +134 -0
  69. package/benchmarks/validate-adapter-self-test.mjs +96 -0
  70. package/benchmarks/validate-guardbench-artifacts.mjs +343 -0
  71. package/benchmarks/verify-external-evidence.mjs +296 -0
  72. package/benchmarks/verify-publication-artifacts.mjs +286 -0
  73. package/benchmarks/verify-submission-bundle.mjs +167 -0
  74. package/dist/mcp-server/config.d.ts +5 -4
  75. package/dist/mcp-server/config.d.ts.map +1 -1
  76. package/dist/mcp-server/config.js +6 -8
  77. package/dist/mcp-server/config.js.map +1 -1
  78. package/dist/mcp-server/index.d.ts +281 -23
  79. package/dist/mcp-server/index.d.ts.map +1 -1
  80. package/dist/mcp-server/index.js +1186 -82
  81. package/dist/mcp-server/index.js.map +1 -1
  82. package/dist/src/action-key.d.ts +9 -0
  83. package/dist/src/action-key.d.ts.map +1 -0
  84. package/dist/src/action-key.js +49 -0
  85. package/dist/src/action-key.js.map +1 -0
  86. package/dist/src/adaptive.d.ts.map +1 -1
  87. package/dist/src/adaptive.js +8 -6
  88. package/dist/src/adaptive.js.map +1 -1
  89. package/dist/src/affect.d.ts +4 -1
  90. package/dist/src/affect.d.ts.map +1 -1
  91. package/dist/src/affect.js +14 -12
  92. package/dist/src/affect.js.map +1 -1
  93. package/dist/src/audrey.d.ts +57 -4
  94. package/dist/src/audrey.d.ts.map +1 -1
  95. package/dist/src/audrey.js +512 -65
  96. package/dist/src/audrey.js.map +1 -1
  97. package/dist/src/capsule.d.ts +2 -1
  98. package/dist/src/capsule.d.ts.map +1 -1
  99. package/dist/src/capsule.js +18 -8
  100. package/dist/src/capsule.js.map +1 -1
  101. package/dist/src/causal.d.ts.map +1 -1
  102. package/dist/src/causal.js +23 -5
  103. package/dist/src/causal.js.map +1 -1
  104. package/dist/src/confidence.d.ts.map +1 -1
  105. package/dist/src/confidence.js +3 -0
  106. package/dist/src/confidence.js.map +1 -1
  107. package/dist/src/consolidate.d.ts +1 -0
  108. package/dist/src/consolidate.d.ts.map +1 -1
  109. package/dist/src/consolidate.js +70 -54
  110. package/dist/src/consolidate.js.map +1 -1
  111. package/dist/src/controller.d.ts +94 -0
  112. package/dist/src/controller.d.ts.map +1 -0
  113. package/dist/src/controller.js +350 -0
  114. package/dist/src/controller.js.map +1 -0
  115. package/dist/src/db.d.ts.map +1 -1
  116. package/dist/src/db.js +181 -169
  117. package/dist/src/db.js.map +1 -1
  118. package/dist/src/decay.d.ts.map +1 -1
  119. package/dist/src/decay.js +62 -55
  120. package/dist/src/decay.js.map +1 -1
  121. package/dist/src/embedding.d.ts +2 -1
  122. package/dist/src/embedding.d.ts.map +1 -1
  123. package/dist/src/embedding.js +60 -22
  124. package/dist/src/embedding.js.map +1 -1
  125. package/dist/src/encode.d.ts +9 -2
  126. package/dist/src/encode.d.ts.map +1 -1
  127. package/dist/src/encode.js +25 -12
  128. package/dist/src/encode.js.map +1 -1
  129. package/dist/src/export.d.ts.map +1 -1
  130. package/dist/src/export.js +5 -3
  131. package/dist/src/export.js.map +1 -1
  132. package/dist/src/feedback.d.ts +35 -0
  133. package/dist/src/feedback.d.ts.map +1 -0
  134. package/dist/src/feedback.js +129 -0
  135. package/dist/src/feedback.js.map +1 -0
  136. package/dist/src/forget.d.ts.map +1 -1
  137. package/dist/src/forget.js +68 -60
  138. package/dist/src/forget.js.map +1 -1
  139. package/dist/src/fts.js +1 -1
  140. package/dist/src/fts.js.map +1 -1
  141. package/dist/src/hybrid-recall.d.ts +2 -1
  142. package/dist/src/hybrid-recall.d.ts.map +1 -1
  143. package/dist/src/hybrid-recall.js +41 -32
  144. package/dist/src/hybrid-recall.js.map +1 -1
  145. package/dist/src/impact.d.ts +47 -0
  146. package/dist/src/impact.d.ts.map +1 -0
  147. package/dist/src/impact.js +146 -0
  148. package/dist/src/impact.js.map +1 -0
  149. package/dist/src/import.d.ts +177 -1
  150. package/dist/src/import.d.ts.map +1 -1
  151. package/dist/src/import.js +235 -46
  152. package/dist/src/import.js.map +1 -1
  153. package/dist/src/index.d.ts +5 -1
  154. package/dist/src/index.d.ts.map +1 -1
  155. package/dist/src/index.js +3 -1
  156. package/dist/src/index.js.map +1 -1
  157. package/dist/src/interference.d.ts +5 -2
  158. package/dist/src/interference.d.ts.map +1 -1
  159. package/dist/src/interference.js +39 -32
  160. package/dist/src/interference.js.map +1 -1
  161. package/dist/src/introspect.js +18 -18
  162. package/dist/src/llm.d.ts.map +1 -1
  163. package/dist/src/llm.js +1 -0
  164. package/dist/src/llm.js.map +1 -1
  165. package/dist/src/migrate.d.ts.map +1 -1
  166. package/dist/src/migrate.js +21 -9
  167. package/dist/src/migrate.js.map +1 -1
  168. package/dist/src/preflight.d.ts +2 -1
  169. package/dist/src/preflight.d.ts.map +1 -1
  170. package/dist/src/preflight.js +66 -5
  171. package/dist/src/preflight.js.map +1 -1
  172. package/dist/src/profile.d.ts +23 -0
  173. package/dist/src/profile.d.ts.map +1 -0
  174. package/dist/src/profile.js +51 -0
  175. package/dist/src/profile.js.map +1 -0
  176. package/dist/src/promote.d.ts.map +1 -1
  177. package/dist/src/promote.js +8 -9
  178. package/dist/src/promote.js.map +1 -1
  179. package/dist/src/prompts.d.ts.map +1 -1
  180. package/dist/src/prompts.js +165 -136
  181. package/dist/src/prompts.js.map +1 -1
  182. package/dist/src/recall.d.ts +9 -6
  183. package/dist/src/recall.d.ts.map +1 -1
  184. package/dist/src/recall.js +204 -62
  185. package/dist/src/recall.js.map +1 -1
  186. package/dist/src/redact.d.ts +7 -1
  187. package/dist/src/redact.d.ts.map +1 -1
  188. package/dist/src/redact.js +94 -11
  189. package/dist/src/redact.js.map +1 -1
  190. package/dist/src/reflexes.d.ts +1 -0
  191. package/dist/src/reflexes.d.ts.map +1 -1
  192. package/dist/src/reflexes.js +3 -0
  193. package/dist/src/reflexes.js.map +1 -1
  194. package/dist/src/rollback.d.ts.map +1 -1
  195. package/dist/src/rollback.js +13 -8
  196. package/dist/src/rollback.js.map +1 -1
  197. package/dist/src/routes.d.ts +1 -0
  198. package/dist/src/routes.d.ts.map +1 -1
  199. package/dist/src/routes.js +251 -6
  200. package/dist/src/routes.js.map +1 -1
  201. package/dist/src/rules-compiler.d.ts.map +1 -1
  202. package/dist/src/rules-compiler.js +36 -6
  203. package/dist/src/rules-compiler.js.map +1 -1
  204. package/dist/src/server.d.ts +2 -1
  205. package/dist/src/server.d.ts.map +1 -1
  206. package/dist/src/server.js +42 -4
  207. package/dist/src/server.js.map +1 -1
  208. package/dist/src/tool-trace.d.ts.map +1 -1
  209. package/dist/src/tool-trace.js +42 -29
  210. package/dist/src/tool-trace.js.map +1 -1
  211. package/dist/src/types.d.ts +28 -1
  212. package/dist/src/types.d.ts.map +1 -1
  213. package/dist/src/ulid.d.ts.map +1 -1
  214. package/dist/src/ulid.js +52 -2
  215. package/dist/src/ulid.js.map +1 -1
  216. package/dist/src/utils.d.ts.map +1 -1
  217. package/dist/src/utils.js +8 -1
  218. package/dist/src/utils.js.map +1 -1
  219. package/dist/src/validate.d.ts +2 -0
  220. package/dist/src/validate.d.ts.map +1 -1
  221. package/dist/src/validate.js +77 -46
  222. package/dist/src/validate.js.map +1 -1
  223. package/docs/AUDREY_PAPER_OUTLINE.md +175 -0
  224. package/docs/MEMORY_BENCHMARKING.md +59 -0
  225. package/docs/PRODUCTION_BACKLOG.md +304 -0
  226. package/docs/paper/00-master.md +48 -0
  227. package/docs/paper/01-introduction.md +27 -0
  228. package/docs/paper/02-related-work.md +47 -0
  229. package/docs/paper/03-problem-definition.md +108 -0
  230. package/docs/paper/04-design.md +164 -0
  231. package/docs/paper/05-guardbench-spec.md +412 -0
  232. package/docs/paper/06-implementation.md +113 -0
  233. package/docs/paper/07-evaluation.md +168 -0
  234. package/docs/paper/08-discussion-limitations.md +61 -0
  235. package/docs/paper/09-conclusion.md +11 -0
  236. package/docs/paper/SUBMISSION_README.md +162 -0
  237. package/docs/paper/appendix-a-demo-transcript.md +114 -0
  238. package/docs/paper/arxiv-compile-report.schema.json +116 -0
  239. package/docs/paper/arxiv-source.schema.json +61 -0
  240. package/docs/paper/audrey-paper-v1.md +1106 -0
  241. package/docs/paper/browser-launch-plan.json +209 -0
  242. package/docs/paper/browser-launch-plan.schema.json +100 -0
  243. package/docs/paper/browser-launch-results.json +86 -0
  244. package/docs/paper/browser-launch-results.schema.json +66 -0
  245. package/docs/paper/claim-register.json +138 -0
  246. package/docs/paper/claim-register.schema.json +81 -0
  247. package/docs/paper/evidence-ledger.md +103 -0
  248. package/docs/paper/output/arxiv/README-arxiv.txt +8 -0
  249. package/docs/paper/output/arxiv/arxiv-manifest.json +41 -0
  250. package/docs/paper/output/arxiv/main.tex +949 -0
  251. package/docs/paper/output/arxiv/references.bib +222 -0
  252. package/docs/paper/output/arxiv-compile-report.json +24 -0
  253. package/docs/paper/output/submission-bundle/LICENSE +21 -0
  254. package/docs/paper/output/submission-bundle/README.md +533 -0
  255. package/docs/paper/output/submission-bundle/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +50 -0
  256. package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-dry-run.json +69 -0
  257. package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-evidence.json +56 -0
  258. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-conformance-card.json +63 -0
  259. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-manifest.json +414 -0
  260. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-raw.json +1171 -0
  261. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-summary.json +1981 -0
  262. package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.json +93 -0
  263. package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.md +7 -0
  264. package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/submission-manifest.json +131 -0
  265. package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/validation-report.json +31 -0
  266. package/docs/paper/output/submission-bundle/benchmarks/output/summary.json +2354 -0
  267. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-adapter-registry.schema.json +69 -0
  268. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-adapter-self-test.schema.json +156 -0
  269. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-conformance-card.schema.json +184 -0
  270. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-dry-run.schema.json +74 -0
  271. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-evidence.schema.json +108 -0
  272. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-run.schema.json +160 -0
  273. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-leaderboard.schema.json +179 -0
  274. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-manifest.schema.json +213 -0
  275. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-publication-verification.schema.json +47 -0
  276. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-raw.schema.json +164 -0
  277. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-submission-manifest.schema.json +151 -0
  278. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-summary.schema.json +228 -0
  279. package/docs/paper/output/submission-bundle/docs/AUDREY_PAPER_OUTLINE.md +175 -0
  280. package/docs/paper/output/submission-bundle/docs/paper/00-master.md +48 -0
  281. package/docs/paper/output/submission-bundle/docs/paper/01-introduction.md +27 -0
  282. package/docs/paper/output/submission-bundle/docs/paper/02-related-work.md +47 -0
  283. package/docs/paper/output/submission-bundle/docs/paper/03-problem-definition.md +108 -0
  284. package/docs/paper/output/submission-bundle/docs/paper/04-design.md +164 -0
  285. package/docs/paper/output/submission-bundle/docs/paper/05-guardbench-spec.md +412 -0
  286. package/docs/paper/output/submission-bundle/docs/paper/06-implementation.md +113 -0
  287. package/docs/paper/output/submission-bundle/docs/paper/07-evaluation.md +168 -0
  288. package/docs/paper/output/submission-bundle/docs/paper/08-discussion-limitations.md +61 -0
  289. package/docs/paper/output/submission-bundle/docs/paper/09-conclusion.md +11 -0
  290. package/docs/paper/output/submission-bundle/docs/paper/SUBMISSION_README.md +162 -0
  291. package/docs/paper/output/submission-bundle/docs/paper/appendix-a-demo-transcript.md +114 -0
  292. package/docs/paper/output/submission-bundle/docs/paper/arxiv-compile-report.schema.json +116 -0
  293. package/docs/paper/output/submission-bundle/docs/paper/arxiv-source.schema.json +61 -0
  294. package/docs/paper/output/submission-bundle/docs/paper/audrey-paper-v1.md +1106 -0
  295. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-plan.json +209 -0
  296. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-plan.schema.json +100 -0
  297. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-results.json +86 -0
  298. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-results.schema.json +66 -0
  299. package/docs/paper/output/submission-bundle/docs/paper/claim-register.json +138 -0
  300. package/docs/paper/output/submission-bundle/docs/paper/claim-register.schema.json +81 -0
  301. package/docs/paper/output/submission-bundle/docs/paper/evidence-ledger.md +103 -0
  302. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/README-arxiv.txt +8 -0
  303. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/arxiv-manifest.json +41 -0
  304. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/main.tex +949 -0
  305. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/references.bib +222 -0
  306. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv-compile-report.json +24 -0
  307. package/docs/paper/output/submission-bundle/docs/paper/paper-submission-bundle.schema.json +70 -0
  308. package/docs/paper/output/submission-bundle/docs/paper/publication-pack.json +81 -0
  309. package/docs/paper/output/submission-bundle/docs/paper/publication-pack.schema.json +60 -0
  310. package/docs/paper/output/submission-bundle/docs/paper/references.bib +222 -0
  311. package/docs/paper/output/submission-bundle/package.json +212 -0
  312. package/docs/paper/output/submission-bundle/paper-submission-manifest.json +379 -0
  313. package/docs/paper/paper-submission-bundle.schema.json +70 -0
  314. package/docs/paper/publication-pack.json +81 -0
  315. package/docs/paper/publication-pack.schema.json +60 -0
  316. package/docs/paper/references.bib +222 -0
  317. package/package.json +103 -26
  318. package/scripts/audit-release-completion.mjs +362 -0
  319. package/scripts/create-arxiv-source.mjs +362 -0
  320. package/scripts/create-paper-submission-bundle.mjs +210 -0
  321. package/scripts/finalize-release.mjs +526 -0
  322. package/scripts/prepare-release-cut.mjs +269 -0
  323. package/scripts/publish-release-bundle.mjs +209 -0
  324. package/scripts/publish-release-github-api.mjs +429 -0
  325. package/scripts/run-vitest.mjs +34 -0
  326. package/scripts/smoke-cli.js +72 -0
  327. package/scripts/sync-paper-artifacts.mjs +109 -0
  328. package/scripts/verify-arxiv-compile.mjs +440 -0
  329. package/scripts/verify-arxiv-source.mjs +194 -0
  330. package/scripts/verify-browser-launch-plan.mjs +237 -0
  331. package/scripts/verify-browser-launch-results.mjs +285 -0
  332. package/scripts/verify-paper-artifacts.mjs +338 -0
  333. package/scripts/verify-paper-claims.mjs +226 -0
  334. package/scripts/verify-paper-submission-bundle.mjs +207 -0
  335. package/scripts/verify-publication-pack.mjs +196 -0
  336. package/scripts/verify-python-package.py +201 -0
  337. package/scripts/verify-release-readiness.mjs +741 -0
  338. package/docs/assets/benchmarks/local-benchmark.svg +0 -45
  339. package/docs/assets/benchmarks/operations-benchmark.svg +0 -45
  340. package/docs/assets/benchmarks/published-memory-standards.svg +0 -50
  341. package/docs/audrey-for-dummies.md +0 -670
  342. package/docs/benchmarking.md +0 -151
  343. package/docs/future-of-llm-memory.md +0 -452
  344. package/docs/mcp-hosts.md +0 -206
  345. package/docs/ollama-local-agents.md +0 -128
  346. package/docs/production-readiness.md +0 -128
@@ -1,96 +1,104 @@
1
1
  import { deleteFTSEpisode, deleteFTSSemantic, deleteFTSProcedure } from './fts.js';
2
2
  export function forgetMemory(db, id, { purge = false } = {}) {
3
- const episode = db.prepare('SELECT id FROM episodes WHERE id = ?').get(id);
4
- if (episode) {
5
- if (purge) {
6
- db.prepare('DELETE FROM vec_episodes WHERE id = ?').run(id);
7
- db.prepare('DELETE FROM episodes WHERE id = ?').run(id);
3
+ const performForget = db.transaction(() => {
4
+ const episode = db.prepare('SELECT id FROM episodes WHERE id = ?').get(id);
5
+ if (episode) {
6
+ if (purge) {
7
+ db.prepare('DELETE FROM vec_episodes WHERE id = ?').run(id);
8
+ db.prepare('DELETE FROM episodes WHERE id = ?').run(id);
9
+ }
10
+ else {
11
+ db.prepare("UPDATE episodes SET superseded_by = 'forgotten' WHERE id = ?").run(id);
12
+ db.prepare('DELETE FROM vec_episodes WHERE id = ?').run(id);
13
+ }
14
+ deleteFTSEpisode(db, id);
15
+ return { id, type: 'episodic', purged: purge };
8
16
  }
9
- else {
10
- db.prepare("UPDATE episodes SET superseded_by = 'forgotten' WHERE id = ?").run(id);
11
- db.prepare('DELETE FROM vec_episodes WHERE id = ?').run(id);
17
+ const semantic = db.prepare('SELECT id FROM semantics WHERE id = ?').get(id);
18
+ if (semantic) {
19
+ if (purge) {
20
+ db.prepare('DELETE FROM vec_semantics WHERE id = ?').run(id);
21
+ db.prepare('DELETE FROM semantics WHERE id = ?').run(id);
22
+ }
23
+ else {
24
+ db.prepare("UPDATE semantics SET state = 'superseded' WHERE id = ?").run(id);
25
+ db.prepare('DELETE FROM vec_semantics WHERE id = ?').run(id);
26
+ }
27
+ deleteFTSSemantic(db, id);
28
+ return { id, type: 'semantic', purged: purge };
12
29
  }
13
- deleteFTSEpisode(db, id);
14
- return { id, type: 'episodic', purged: purge };
15
- }
16
- const semantic = db.prepare('SELECT id FROM semantics WHERE id = ?').get(id);
17
- if (semantic) {
18
- if (purge) {
19
- db.prepare('DELETE FROM vec_semantics WHERE id = ?').run(id);
20
- db.prepare('DELETE FROM semantics WHERE id = ?').run(id);
30
+ const procedure = db.prepare('SELECT id FROM procedures WHERE id = ?').get(id);
31
+ if (procedure) {
32
+ if (purge) {
33
+ db.prepare('DELETE FROM vec_procedures WHERE id = ?').run(id);
34
+ db.prepare('DELETE FROM procedures WHERE id = ?').run(id);
35
+ }
36
+ else {
37
+ db.prepare("UPDATE procedures SET state = 'superseded' WHERE id = ?").run(id);
38
+ db.prepare('DELETE FROM vec_procedures WHERE id = ?').run(id);
39
+ }
40
+ deleteFTSProcedure(db, id);
41
+ return { id, type: 'procedural', purged: purge };
21
42
  }
22
- else {
23
- db.prepare("UPDATE semantics SET state = 'superseded' WHERE id = ?").run(id);
24
- db.prepare('DELETE FROM vec_semantics WHERE id = ?').run(id);
25
- }
26
- deleteFTSSemantic(db, id);
27
- return { id, type: 'semantic', purged: purge };
28
- }
29
- const procedure = db.prepare('SELECT id FROM procedures WHERE id = ?').get(id);
30
- if (procedure) {
31
- if (purge) {
32
- db.prepare('DELETE FROM vec_procedures WHERE id = ?').run(id);
33
- db.prepare('DELETE FROM procedures WHERE id = ?').run(id);
34
- }
35
- else {
36
- db.prepare("UPDATE procedures SET state = 'superseded' WHERE id = ?").run(id);
37
- db.prepare('DELETE FROM vec_procedures WHERE id = ?').run(id);
38
- }
39
- deleteFTSProcedure(db, id);
40
- return { id, type: 'procedural', purged: purge };
41
- }
42
- throw new Error(`Memory not found: ${id}`);
43
+ throw new Error(`Memory not found: ${id}`);
44
+ });
45
+ return performForget();
43
46
  }
44
47
  export function purgeMemories(db) {
45
- const deadEpisodes = db.prepare('SELECT id FROM episodes WHERE superseded_by IS NOT NULL').all();
46
- const deadSemantics = db.prepare("SELECT id FROM semantics WHERE state IN ('superseded', 'dormant', 'rolled_back')").all();
47
- const deadProcedures = db.prepare("SELECT id FROM procedures WHERE state IN ('superseded', 'dormant', 'rolled_back')").all();
48
+ const selectDeadEpisodes = db.prepare('SELECT id FROM episodes WHERE superseded_by IS NOT NULL');
49
+ const selectDeadSemantics = db.prepare("SELECT id FROM semantics WHERE state IN ('superseded', 'dormant', 'rolled_back')");
50
+ const selectDeadProcedures = db.prepare("SELECT id FROM procedures WHERE state IN ('superseded', 'dormant', 'rolled_back')");
51
+ let episodes = 0;
52
+ let semantics = 0;
53
+ let procedures = 0;
54
+ // Read inside the transaction so we never delete something a concurrent
55
+ // writer just resurrected, and so the returned counts match what we
56
+ // actually purged.
48
57
  const purgeAll = db.transaction(() => {
49
- for (const row of deadEpisodes) {
58
+ for (const row of selectDeadEpisodes.all()) {
50
59
  db.prepare('DELETE FROM vec_episodes WHERE id = ?').run(row.id);
51
60
  db.prepare('DELETE FROM episodes WHERE id = ?').run(row.id);
52
61
  deleteFTSEpisode(db, row.id);
62
+ episodes++;
53
63
  }
54
- for (const row of deadSemantics) {
64
+ for (const row of selectDeadSemantics.all()) {
55
65
  db.prepare('DELETE FROM vec_semantics WHERE id = ?').run(row.id);
56
66
  db.prepare('DELETE FROM semantics WHERE id = ?').run(row.id);
57
67
  deleteFTSSemantic(db, row.id);
68
+ semantics++;
58
69
  }
59
- for (const row of deadProcedures) {
70
+ for (const row of selectDeadProcedures.all()) {
60
71
  db.prepare('DELETE FROM vec_procedures WHERE id = ?').run(row.id);
61
72
  db.prepare('DELETE FROM procedures WHERE id = ?').run(row.id);
62
73
  deleteFTSProcedure(db, row.id);
74
+ procedures++;
63
75
  }
64
76
  });
65
77
  purgeAll();
66
- return {
67
- episodes: deadEpisodes.length,
68
- semantics: deadSemantics.length,
69
- procedures: deadProcedures.length,
70
- };
78
+ return { episodes, semantics, procedures };
71
79
  }
72
80
  export async function forgetByQuery(db, embeddingProvider, query, { minSimilarity = 0.9, purge = false } = {}) {
73
81
  const queryVector = await embeddingProvider.embed(query);
74
82
  const queryBuffer = embeddingProvider.vectorToBuffer(queryVector);
75
83
  const candidates = [];
76
- const epMatch = db.prepare(`
77
- SELECT e.id, (1.0 - v.distance) AS similarity, 'episodic' AS type
78
- FROM vec_episodes v JOIN episodes e ON e.id = v.id
79
- WHERE v.embedding MATCH ? AND k = 1 AND e.superseded_by IS NULL
84
+ const epMatch = db.prepare(`
85
+ SELECT e.id, (1.0 - v.distance) AS similarity, 'episodic' AS type
86
+ FROM vec_episodes v JOIN episodes e ON e.id = v.id
87
+ WHERE v.embedding MATCH ? AND k = 1 AND e.superseded_by IS NULL
80
88
  `).get(queryBuffer);
81
89
  if (epMatch)
82
90
  candidates.push(epMatch);
83
- const semMatch = db.prepare(`
84
- SELECT s.id, (1.0 - v.distance) AS similarity, 'semantic' AS type
85
- FROM vec_semantics v JOIN semantics s ON s.id = v.id
86
- WHERE v.embedding MATCH ? AND k = 1 AND (v.state = 'active' OR v.state = 'context_dependent')
91
+ const semMatch = db.prepare(`
92
+ SELECT s.id, (1.0 - v.distance) AS similarity, 'semantic' AS type
93
+ FROM vec_semantics v JOIN semantics s ON s.id = v.id
94
+ WHERE v.embedding MATCH ? AND k = 1 AND (s.state = 'active' OR s.state = 'context_dependent')
87
95
  `).get(queryBuffer);
88
96
  if (semMatch)
89
97
  candidates.push(semMatch);
90
- const procMatch = db.prepare(`
91
- SELECT p.id, (1.0 - v.distance) AS similarity, 'procedural' AS type
92
- FROM vec_procedures v JOIN procedures p ON p.id = v.id
93
- WHERE v.embedding MATCH ? AND k = 1 AND (v.state = 'active' OR v.state = 'context_dependent')
98
+ const procMatch = db.prepare(`
99
+ SELECT p.id, (1.0 - v.distance) AS similarity, 'procedural' AS type
100
+ FROM vec_procedures v JOIN procedures p ON p.id = v.id
101
+ WHERE v.embedding MATCH ? AND k = 1 AND (p.state = 'active' OR p.state = 'context_dependent')
94
102
  `).get(queryBuffer);
95
103
  if (procMatch)
96
104
  candidates.push(procMatch);
@@ -1 +1 @@
1
- {"version":3,"file":"forget.js","sourceRoot":"","sources":["../../src/forget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forget.js","sourceRoot":"","sources":["../../src/forget.ts"],"names":[],"mappings":"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"}
package/dist/src/fts.js CHANGED
@@ -107,7 +107,7 @@ export function backfillFTS(db) {
107
107
  */
108
108
  export function sanitizeFTSQuery(query) {
109
109
  return query
110
- .replace(/[*"(){}[\]^~\:]/g, ' ')
110
+ .replace(/[^\p{L}\p{N}_]+/gu, ' ')
111
111
  .replace(/\bAND\b|\bOR\b|\bNOT\b|\bNEAR\b/gi, ' ')
112
112
  .trim()
113
113
  .split(/\s+/)
@@ -1 +1 @@
1
- {"version":3,"file":"fts.js","sourceRoot":"","sources":["../../src/fts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fts.js","sourceRoot":"","sources":["../../src/fts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,UAAU,eAAe,CAAC,EAAqB;IACnD,EAAE,CAAC,IAAI,CAAC;;;;;;;GAOP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAqB;IAChD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,oFAAoF,CACrF,CAAC,GAAG,EAAmB,CAAC;IACzB,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,EAAqB,EACrB,EAAU,EACV,OAAe,EACf,IAA+B;IAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,EAAE,CAAC,OAAO,CAAC,yEAAyE,CAAC,CAAC,GAAG,CACvF,EAAE,EAAE,OAAO,EAAE,QAAQ,CACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAqB,EAAE,EAAU,EAAE,OAAe;IAClF,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAqB,EAAE,EAAU,EAAE,OAAe;IACnF,EAAE,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAqB,EAAE,EAAU;IAChE,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAqB,EAAE,EAAU;IACjE,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAqB,EAAE,EAAU;IAClE,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAqB,EACrB,KAAa,EACb,QAAgB,EAAE,EAClB,cAA6B,IAAI;IAEjC,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1E,OAAO,EAAE,CAAC,OAAO,CAAC;;;;;;QAMZ,WAAW;;;GAGhB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAe,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,EAAqB,EACrB,KAAa,EACb,QAAgB,EAAE,EAClB,cAA6B,IAAI;IAEjC,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1E,OAAO,EAAE,CAAC,OAAO,CAAC;;;;;;QAMZ,WAAW;;;GAGhB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAe,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,EAAqB,EACrB,KAAa,EACb,QAAgB,EAAE,EAClB,cAA6B,IAAI;IAEjC,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1E,OAAO,EAAE,CAAC,OAAO,CAAC;;;;;;QAMZ,WAAW;;;GAGhB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAe,CAAC;AAClC,CAAC;AAaD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,EAAqB;IAC/C,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAkB,CAAC;IAC5F,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,wEAAwE,CAAC,CAAC;IACpG,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAAkB,CAAC;IACxF,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC;IAC/F,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAkB,CAAC;IAC1F,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC;IACjG,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,KAAK;SACT,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,mCAAmC,EAAE,GAAG,CAAC;SACjD,IAAI,EAAE;SACN,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -17,7 +17,7 @@
17
17
  */
18
18
  import Database from 'better-sqlite3';
19
19
  import type { MemoryType, RecallResult, RetrievalMode } from './types.js';
20
- export declare function ftsIdsByType(db: Database.Database, query: string, types: MemoryType[], limit: number): Map<MemoryType, string[]>;
20
+ export declare function ftsIdsByType(db: Database.Database, query: string, types: MemoryType[], limit: number, agentFilter?: string | undefined): Map<MemoryType, string[]>;
21
21
  export interface FuseFilters {
22
22
  tags?: string[];
23
23
  sources?: string[];
@@ -32,6 +32,7 @@ export interface FuseInput {
32
32
  includeDormant?: boolean;
33
33
  minConfidence?: number;
34
34
  filters?: FuseFilters;
35
+ agentFilter?: string;
35
36
  }
36
37
  export declare function fuseResults(db: Database.Database, input: FuseInput): RecallResult[];
37
38
  //# sourceMappingURL=hybrid-recall.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid-recall.d.ts","sourceRoot":"","sources":["../../src/hybrid-recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA4C1E,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EAAE,EACnB,KAAK,EAAE,MAAM,GACZ,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAqB3B;AAwED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAyBD,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,YAAY,EAAE,CA+DnF"}
1
+ {"version":3,"file":"hybrid-recall.d.ts","sourceRoot":"","sources":["../../src/hybrid-recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA+C1E,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,MAAM,GAAG,SAAqB,GAC1C,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAiB3B;AA8ED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA8BD,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,YAAY,EAAE,CA+DnF"}
@@ -20,37 +20,34 @@ import { sourceReliability } from './confidence.js';
20
20
  const RRF_K = 60;
21
21
  const VECTOR_WEIGHT = 0.3;
22
22
  const FTS_WEIGHT = 0.7;
23
- export function ftsIdsByType(db, query, types, limit) {
23
+ export function ftsIdsByType(db, query, types, limit, agentFilter = undefined) {
24
24
  const sanitized = sanitizeFTSQuery(query);
25
25
  const out = new Map();
26
26
  if (!sanitized)
27
27
  return out;
28
- try {
29
- if (types.includes('episodic')) {
30
- const hits = searchFTSEpisodes(db, sanitized, limit);
31
- out.set('episodic', hits.map(h => h.id));
32
- }
33
- if (types.includes('semantic')) {
34
- const hits = searchFTSSemantics(db, sanitized, limit);
35
- out.set('semantic', hits.map(h => h.id));
36
- }
37
- if (types.includes('procedural')) {
38
- const hits = searchFTSProcedures(db, sanitized, limit);
39
- out.set('procedural', hits.map(h => h.id));
40
- }
28
+ if (types.includes('episodic')) {
29
+ const hits = searchFTSEpisodes(db, sanitized, limit, agentFilter ?? null);
30
+ out.set('episodic', hits.map(h => h.id));
41
31
  }
42
- catch {
43
- // FTS tables may not exist on very old DBs. Return whatever we collected so far.
32
+ if (types.includes('semantic')) {
33
+ const hits = searchFTSSemantics(db, sanitized, limit, agentFilter ?? null);
34
+ out.set('semantic', hits.map(h => h.id));
35
+ }
36
+ if (types.includes('procedural')) {
37
+ const hits = searchFTSProcedures(db, sanitized, limit, agentFilter ?? null);
38
+ out.set('procedural', hits.map(h => h.id));
44
39
  }
45
40
  return out;
46
41
  }
47
- function loadFtsOnlyEpisode(db, id, includePrivate, filters) {
48
- const row = db.prepare(`
49
- SELECT id, content, source, source_reliability, created_at, superseded_by, "private", tags
50
- FROM episodes WHERE id = ?
42
+ function loadFtsOnlyEpisode(db, id, includePrivate, filters, agentFilter) {
43
+ const row = db.prepare(`
44
+ SELECT id, content, source, agent, source_reliability, created_at, superseded_by, "private", tags
45
+ FROM episodes WHERE id = ?
51
46
  `).get(id);
52
47
  if (!row)
53
48
  return null;
49
+ if (agentFilter && row.agent !== agentFilter)
50
+ return null;
54
51
  if (row.superseded_by)
55
52
  return null;
56
53
  if (!includePrivate && row.private)
@@ -64,16 +61,19 @@ function loadFtsOnlyEpisode(db, id, includePrivate, filters) {
64
61
  confidence: row.source_reliability ?? sourceReliability(row.source),
65
62
  score: 0,
66
63
  source: row.source,
64
+ agent: row.agent ?? 'default',
67
65
  createdAt: row.created_at,
68
66
  };
69
67
  }
70
- function loadFtsOnlySemantic(db, id, includeDormant, filters) {
71
- const row = db.prepare(`
72
- SELECT id, content, state, evidence_count, supporting_count, contradicting_count, created_at
73
- FROM semantics WHERE id = ?
68
+ function loadFtsOnlySemantic(db, id, includeDormant, filters, agentFilter) {
69
+ const row = db.prepare(`
70
+ SELECT id, content, agent, state, evidence_count, supporting_count, contradicting_count, created_at
71
+ FROM semantics WHERE id = ?
74
72
  `).get(id);
75
73
  if (!row)
76
74
  return null;
75
+ if (agentFilter && row.agent !== agentFilter)
76
+ return null;
77
77
  const allowed = includeDormant
78
78
  ? ['active', 'context_dependent', 'dormant']
79
79
  : ['active', 'context_dependent'];
@@ -90,17 +90,20 @@ function loadFtsOnlySemantic(db, id, includeDormant, filters) {
90
90
  confidence,
91
91
  score: 0,
92
92
  source: 'consolidation',
93
+ agent: row.agent ?? 'default',
93
94
  state: row.state,
94
95
  createdAt: row.created_at,
95
96
  };
96
97
  }
97
- function loadFtsOnlyProcedural(db, id, includeDormant, filters) {
98
- const row = db.prepare(`
99
- SELECT id, content, state, success_count, failure_count, created_at
100
- FROM procedures WHERE id = ?
98
+ function loadFtsOnlyProcedural(db, id, includeDormant, filters, agentFilter) {
99
+ const row = db.prepare(`
100
+ SELECT id, content, agent, state, success_count, failure_count, created_at
101
+ FROM procedures WHERE id = ?
101
102
  `).get(id);
102
103
  if (!row)
103
104
  return null;
105
+ if (agentFilter && row.agent !== agentFilter)
106
+ return null;
104
107
  const allowed = includeDormant
105
108
  ? ['active', 'context_dependent', 'dormant']
106
109
  : ['active', 'context_dependent'];
@@ -117,6 +120,7 @@ function loadFtsOnlyProcedural(db, id, includeDormant, filters) {
117
120
  confidence,
118
121
  score: 0,
119
122
  source: 'consolidation',
123
+ agent: row.agent ?? 'default',
120
124
  state: row.state,
121
125
  createdAt: row.created_at,
122
126
  };
@@ -130,6 +134,11 @@ function passesDateFilters(createdAt, filters) {
130
134
  return false;
131
135
  return true;
132
136
  }
137
+ function matchesTagFilters(rowTags, requiredTags) {
138
+ if (!requiredTags?.length)
139
+ return true;
140
+ return requiredTags.every(tag => rowTags.includes(tag));
141
+ }
133
142
  function passesFilters(row, filters) {
134
143
  if (!passesDateFilters(row.created_at, filters))
135
144
  return false;
@@ -145,7 +154,7 @@ function passesFilters(row, filters) {
145
154
  catch {
146
155
  rowTags = [];
147
156
  }
148
- if (!filters.tags.some(t => rowTags.includes(t)))
157
+ if (!matchesTagFilters(rowTags, filters.tags))
149
158
  return false;
150
159
  }
151
160
  return true;
@@ -183,11 +192,11 @@ export function fuseResults(db, input) {
183
192
  let result = existing ?? null;
184
193
  if (!result) {
185
194
  if (ranks.type === 'episodic')
186
- result = loadFtsOnlyEpisode(db, id, includePrivate, input.filters);
195
+ result = loadFtsOnlyEpisode(db, id, includePrivate, input.filters, input.agentFilter);
187
196
  else if (ranks.type === 'semantic')
188
- result = loadFtsOnlySemantic(db, id, includeDormant, input.filters);
197
+ result = loadFtsOnlySemantic(db, id, includeDormant, input.filters, input.agentFilter);
189
198
  else if (ranks.type === 'procedural')
190
- result = loadFtsOnlyProcedural(db, id, includeDormant, input.filters);
199
+ result = loadFtsOnlyProcedural(db, id, includeDormant, input.filters, input.agentFilter);
191
200
  if (!result)
192
201
  continue;
193
202
  if (result.confidence < minConfidence)
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid-recall.js","sourceRoot":"","sources":["../../src/hybrid-recall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hybrid-recall.js","sourceRoot":"","sources":["../../src/hybrid-recall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import Database from 'better-sqlite3';
2
+ export interface ImpactRow {
3
+ id: string;
4
+ type: 'episodic' | 'semantic' | 'procedural';
5
+ content: string;
6
+ salience: number;
7
+ usage_count: number;
8
+ last_used_at: string | null;
9
+ }
10
+ export interface ImpactReport {
11
+ generatedAt: string;
12
+ windowDays: number;
13
+ totals: {
14
+ episodic: number;
15
+ semantic: number;
16
+ procedural: number;
17
+ };
18
+ validatedTotal: number;
19
+ validatedInWindow: number;
20
+ byType: {
21
+ episodic: {
22
+ validated: number;
23
+ recent: number;
24
+ };
25
+ semantic: {
26
+ validated: number;
27
+ recent: number;
28
+ challenged: number;
29
+ };
30
+ procedural: {
31
+ validated: number;
32
+ recent: number;
33
+ };
34
+ };
35
+ /** Per-outcome breakdown over the configured window, sourced from memory_events. */
36
+ outcomeBreakdownInWindow: {
37
+ helpful: number;
38
+ wrong: number;
39
+ used: number;
40
+ };
41
+ topUsed: ImpactRow[];
42
+ weakest: ImpactRow[];
43
+ recentActivity: ImpactRow[];
44
+ }
45
+ export declare function buildImpactReport(db: Database.Database, windowDays?: number, limit?: number): ImpactReport;
46
+ export declare function formatImpactReport(report: ImpactReport): string;
47
+ //# sourceMappingURL=impact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact.d.ts","sourceRoot":"","sources":["../../src/impact.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE;QACN,QAAQ,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAChD,QAAQ,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;QACpE,UAAU,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KACnD,CAAC;IACF,oFAAoF;IACpF,wBAAwB,EAAE;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,cAAc,EAAE,SAAS,EAAE,CAAC;CAC7B;AAgED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,SAAI,EAAE,KAAK,SAAI,GAAG,YAAY,CA4DhG;AAOD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA8C/D"}
@@ -0,0 +1,146 @@
1
+ function rowsFromTable(db, table, type, orderBy, whereClause, limit) {
2
+ const sql = `
3
+ SELECT id, content, salience, usage_count, last_used_at
4
+ FROM ${table}
5
+ WHERE ${whereClause}
6
+ ORDER BY ${orderBy}
7
+ LIMIT ?
8
+ `;
9
+ const rows = db.prepare(sql).all(limit);
10
+ return rows.map(r => ({
11
+ id: r.id,
12
+ type,
13
+ content: r.content,
14
+ salience: r.salience ?? 0.5,
15
+ usage_count: r.usage_count ?? 0,
16
+ last_used_at: r.last_used_at,
17
+ }));
18
+ }
19
+ function topAcrossTables(db, orderBy, whereClause, limit) {
20
+ const all = [
21
+ ...rowsFromTable(db, 'episodes', 'episodic', orderBy, whereClause, limit),
22
+ ...rowsFromTable(db, 'semantics', 'semantic', orderBy, whereClause + " AND state != 'rolled_back'", limit),
23
+ ...rowsFromTable(db, 'procedures', 'procedural', orderBy, whereClause + " AND state != 'rolled_back'", limit),
24
+ ];
25
+ // Re-sort the merged list and trim. The ORDER BY clause is the same across
26
+ // all three queries so a stable lexical secondary on id keeps merges deterministic.
27
+ if (orderBy.startsWith('usage_count DESC')) {
28
+ all.sort((a, b) => (b.usage_count - a.usage_count) || a.id.localeCompare(b.id));
29
+ }
30
+ else if (orderBy.startsWith('salience ASC')) {
31
+ all.sort((a, b) => (a.salience - b.salience) || a.id.localeCompare(b.id));
32
+ }
33
+ else if (orderBy.startsWith('last_used_at DESC')) {
34
+ all.sort((a, b) => {
35
+ const aT = a.last_used_at ?? '';
36
+ const bT = b.last_used_at ?? '';
37
+ return bT.localeCompare(aT) || a.id.localeCompare(b.id);
38
+ });
39
+ }
40
+ return all.slice(0, limit);
41
+ }
42
+ export function buildImpactReport(db, windowDays = 7, limit = 5) {
43
+ const now = new Date();
44
+ const sinceISO = new Date(now.getTime() - windowDays * 86_400_000).toISOString();
45
+ const totalEp = db.prepare('SELECT COUNT(*) as c FROM episodes').get().c;
46
+ const totalSem = db.prepare("SELECT COUNT(*) as c FROM semantics WHERE state != 'rolled_back'").get().c;
47
+ const totalProc = db.prepare("SELECT COUNT(*) as c FROM procedures WHERE state != 'rolled_back'").get().c;
48
+ const validatedEp = db.prepare('SELECT COUNT(*) as c FROM episodes WHERE usage_count > 0').get().c;
49
+ const validatedSem = db.prepare("SELECT COUNT(*) as c FROM semantics WHERE usage_count > 0 AND state != 'rolled_back'").get().c;
50
+ const validatedProc = db.prepare("SELECT COUNT(*) as c FROM procedures WHERE usage_count > 0 AND state != 'rolled_back'").get().c;
51
+ const recentEp = db.prepare('SELECT COUNT(*) as c FROM episodes WHERE last_used_at >= ?').get(sinceISO).c;
52
+ const recentSem = db.prepare("SELECT COUNT(*) as c FROM semantics WHERE last_used_at >= ? AND state != 'rolled_back'").get(sinceISO).c;
53
+ const recentProc = db.prepare("SELECT COUNT(*) as c FROM procedures WHERE last_used_at >= ? AND state != 'rolled_back'").get(sinceISO).c;
54
+ const challenged = (db.prepare("SELECT SUM(challenge_count) as c FROM semantics WHERE state != 'rolled_back'").get()).c ?? 0;
55
+ // Per-outcome breakdown comes from the memory_events audit trail. Each
56
+ // memory_validate call writes a row with metadata.outcome = used|helpful|wrong.
57
+ // Cumulative counters on the memories tables can't distinguish outcomes,
58
+ // hence the audit trail.
59
+ const validateEvents = db.prepare("SELECT metadata FROM memory_events WHERE event_type = 'Validate' AND created_at >= ?").all(sinceISO);
60
+ const outcomeBreakdownInWindow = { helpful: 0, wrong: 0, used: 0 };
61
+ for (const evt of validateEvents) {
62
+ if (!evt.metadata)
63
+ continue;
64
+ try {
65
+ const meta = JSON.parse(evt.metadata);
66
+ if (meta.outcome === 'helpful')
67
+ outcomeBreakdownInWindow.helpful++;
68
+ else if (meta.outcome === 'wrong')
69
+ outcomeBreakdownInWindow.wrong++;
70
+ else if (meta.outcome === 'used')
71
+ outcomeBreakdownInWindow.used++;
72
+ }
73
+ catch {
74
+ // Skip malformed metadata silently — audit reports shouldn't fail on bad rows.
75
+ }
76
+ }
77
+ return {
78
+ generatedAt: now.toISOString(),
79
+ windowDays,
80
+ totals: {
81
+ episodic: totalEp,
82
+ semantic: totalSem,
83
+ procedural: totalProc,
84
+ },
85
+ validatedTotal: validatedEp + validatedSem + validatedProc,
86
+ validatedInWindow: recentEp + recentSem + recentProc,
87
+ byType: {
88
+ episodic: { validated: validatedEp, recent: recentEp },
89
+ semantic: { validated: validatedSem, recent: recentSem, challenged },
90
+ procedural: { validated: validatedProc, recent: recentProc },
91
+ },
92
+ outcomeBreakdownInWindow,
93
+ topUsed: topAcrossTables(db, 'usage_count DESC, id', 'usage_count > 0', limit),
94
+ weakest: topAcrossTables(db, 'salience ASC, id', 'salience IS NOT NULL', limit),
95
+ // sinceISO is generated by new Date().toISOString() so the embedded literal is
96
+ // safe; topAcrossTables doesn't accept bound params.
97
+ recentActivity: topAcrossTables(db, 'last_used_at DESC, id', `last_used_at >= '${sinceISO}'`, limit),
98
+ };
99
+ }
100
+ function truncateContent(s, max = 80) {
101
+ if (s.length <= max)
102
+ return s;
103
+ return s.slice(0, max - 1) + '…';
104
+ }
105
+ export function formatImpactReport(report) {
106
+ const lines = [];
107
+ lines.push(`Audrey Impact (${report.windowDays}-day window)`);
108
+ lines.push(`Generated: ${report.generatedAt}`);
109
+ lines.push('');
110
+ const totalMemories = report.totals.episodic + report.totals.semantic + report.totals.procedural;
111
+ lines.push(`Memories: ${totalMemories} total (${report.totals.episodic} episodic, ${report.totals.semantic} semantic, ${report.totals.procedural} procedural)`);
112
+ lines.push(`Validated: ${report.validatedTotal} all-time, ${report.validatedInWindow} in last ${report.windowDays} days`);
113
+ const o = report.outcomeBreakdownInWindow;
114
+ if (o.helpful + o.wrong + o.used > 0) {
115
+ lines.push(`Outcomes (last ${report.windowDays} days): ${o.helpful} helpful, ${o.wrong} wrong, ${o.used} used`);
116
+ }
117
+ lines.push('');
118
+ lines.push('By type:');
119
+ lines.push(` Episodic: ${report.byType.episodic.validated} validated, ${report.byType.episodic.recent} recent`);
120
+ lines.push(` Semantic: ${report.byType.semantic.validated} validated, ${report.byType.semantic.recent} recent, ${report.byType.semantic.challenged} challenges recorded`);
121
+ lines.push(` Procedural: ${report.byType.procedural.validated} validated, ${report.byType.procedural.recent} recent`);
122
+ lines.push('');
123
+ if (report.topUsed.length > 0) {
124
+ lines.push('Top validated:');
125
+ for (const r of report.topUsed) {
126
+ lines.push(` ${r.usage_count}x [${r.type}] ${truncateContent(r.content)}`);
127
+ }
128
+ lines.push('');
129
+ }
130
+ if (report.weakest.length > 0) {
131
+ lines.push('Weakest (lowest salience — candidates to review or forget):');
132
+ for (const r of report.weakest) {
133
+ lines.push(` salience=${r.salience.toFixed(2)} [${r.type}] ${truncateContent(r.content)}`);
134
+ }
135
+ lines.push('');
136
+ }
137
+ if (report.recentActivity.length > 0) {
138
+ lines.push(`Recent activity (last ${report.windowDays} days):`);
139
+ for (const r of report.recentActivity) {
140
+ const when = r.last_used_at ? r.last_used_at.replace('T', ' ').slice(0, 19) : '—';
141
+ lines.push(` ${when} [${r.type}] ${truncateContent(r.content)}`);
142
+ }
143
+ }
144
+ return lines.join('\n');
145
+ }
146
+ //# sourceMappingURL=impact.js.map