@snoai/memory 0.0.0-stage → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +33 -2
  3. package/config/b-profile-section-registry.json +118 -0
  4. package/config/llm/compiled/2026-05-19T230932Z/manifest.json +25 -0
  5. package/config/llm/compiled/2026-05-19T230932Z/registry-root.json +67 -0
  6. package/config/llm/compiled/2026-05-19T230932Z/resolved/mem_claw/openai_gpt_5_nano.json +5 -0
  7. package/config/llm/compiled/2026-05-19T230932Z/resolved/mem_claw/openrouter_auto.json +5 -0
  8. package/config/llm/compiled/2026-05-19T230932Z/resolved/mem_claw/sno_ai_extract.json +5 -0
  9. package/config/llm/compiled/2026-05-19T230932Z/source/mem_claw/openai_gpt_5_nano.mda +24 -0
  10. package/config/llm/compiled/2026-05-19T230932Z/source/mem_claw/openrouter_auto.mda +24 -0
  11. package/config/llm/compiled/2026-05-19T230932Z/source/mem_claw/sno_ai_extract.mda +24 -0
  12. package/config/llm/compiled/2026-07-21T001311Z/manifest.json +43 -0
  13. package/config/llm/compiled/2026-07-21T001311Z/registry-root.json +97 -0
  14. package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/openai_gpt_5_nano.json +5 -0
  15. package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/openrouter_auto.json +5 -0
  16. package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/sno_ai_extract.json +5 -0
  17. package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/sno_conflict_verdict.json +10 -0
  18. package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/sno_extract_chat.json +10 -0
  19. package/config/llm/compiled/2026-07-21T001311Z/resolved/mem_claw/sno_extract_profile.json +10 -0
  20. package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/openai_gpt_5_nano.mda +24 -0
  21. package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/openrouter_auto.mda +24 -0
  22. package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/sno_ai_extract.mda +24 -0
  23. package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/sno_conflict_verdict.mda +27 -0
  24. package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/sno_extract_chat.mda +27 -0
  25. package/config/llm/compiled/2026-07-21T001311Z/source/mem_claw/sno_extract_profile.mda +27 -0
  26. package/config/llm/compiled/2026-08-29T060335Z/manifest.json +43 -0
  27. package/config/llm/compiled/2026-08-29T060335Z/registry-root.json +97 -0
  28. package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/openai_gpt_5_nano.json +5 -0
  29. package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/openrouter_auto.json +5 -0
  30. package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/sno_ai_extract.json +5 -0
  31. package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/sno_conflict_verdict.json +10 -0
  32. package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/sno_extract_chat.json +10 -0
  33. package/config/llm/compiled/2026-08-29T060335Z/resolved/mem_claw/sno_extract_profile.json +10 -0
  34. package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/openai_gpt_5_nano.mda +24 -0
  35. package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/openrouter_auto.mda +24 -0
  36. package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/sno_ai_extract.mda +24 -0
  37. package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/sno_conflict_verdict.mda +27 -0
  38. package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/sno_extract_chat.mda +27 -0
  39. package/config/llm/compiled/2026-08-29T060335Z/source/mem_claw/sno_extract_profile.mda +27 -0
  40. package/config/llm/compiled/2026-09-04T004828Z/manifest.json +43 -0
  41. package/config/llm/compiled/2026-09-04T004828Z/registry-root.json +97 -0
  42. package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/openai_gpt_5_nano.json +5 -0
  43. package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/openrouter_auto.json +5 -0
  44. package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/sno_ai_extract.json +5 -0
  45. package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/sno_conflict_verdict.json +10 -0
  46. package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/sno_extract_chat.json +10 -0
  47. package/config/llm/compiled/2026-09-04T004828Z/resolved/mem_claw/sno_extract_profile.json +10 -0
  48. package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/openai_gpt_5_nano.mda +24 -0
  49. package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/openrouter_auto.mda +24 -0
  50. package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/sno_ai_extract.mda +24 -0
  51. package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/sno_conflict_verdict.mda +27 -0
  52. package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/sno_extract_chat.mda +27 -0
  53. package/config/llm/compiled/2026-09-04T004828Z/source/mem_claw/sno_extract_profile.mda +27 -0
  54. package/config/llm/current.json +4 -0
  55. package/config/llm/source/mem_claw/openai_gpt_5_nano.mda +24 -0
  56. package/config/llm/source/mem_claw/openrouter_auto.mda +24 -0
  57. package/config/llm/source/mem_claw/sno_ai_extract.mda +24 -0
  58. package/config/llm/source/mem_claw/sno_conflict_verdict.mda +27 -0
  59. package/config/llm/source/mem_claw/sno_extract_chat.mda +27 -0
  60. package/config/llm/source/mem_claw/sno_extract_profile.mda +27 -0
  61. package/config/llm.trust.json +37 -0
  62. package/dist/_types-CUKHSRkS.d.ts +103 -0
  63. package/dist/access-tracker-BbEvEocb.d.ts +110 -0
  64. package/dist/adapter-B7Jox9-6.d.ts +69 -0
  65. package/dist/adapter-XaRHZWZ2.js +333 -0
  66. package/dist/agent-llm-port-5oXgBpzJ.d.ts +53 -0
  67. package/dist/all-resources-BQK2ugjB.js +6379 -0
  68. package/dist/all-resources-Dij6l5h0.d.ts +18 -0
  69. package/dist/ambient-learning-text-normalizer-CxjATmMp.js +170 -0
  70. package/dist/ambient-learning-text-normalizer-_fH3LeuK.d.ts +10 -0
  71. package/dist/atomic-extraction-reply-BJ9XV_9s.js +863 -0
  72. package/dist/atomic-extraction-skill-CcXmuCqL.js +56 -0
  73. package/dist/atomic-memory-extraction-C5rmogoY.js +3605 -0
  74. package/dist/atomic-memory-extraction-d9EG-4ti.d.ts +327 -0
  75. package/dist/b-profile-section-dictionary-provider-BHkoNqgk.js +1812 -0
  76. package/dist/b-profile-section-dictionary-provider-BxbksLj3.d.ts +62 -0
  77. package/dist/best-effort-BPZSzKk0.d.ts +9 -0
  78. package/dist/calendar-instruction-CzqZbAPG.js +194 -0
  79. package/dist/capture-policy-detector-CxbHPkMX.d.ts +53 -0
  80. package/dist/capture-policy-detector-DaMfy9CZ.js +357 -0
  81. package/dist/classifier-DnbbtwTS.d.ts +272 -0
  82. package/dist/client.d.ts +34 -0
  83. package/dist/client.js +306 -0
  84. package/dist/coding-skin.d.ts +51 -0
  85. package/dist/coding-skin.js +55 -0
  86. package/dist/config-CL90qYva.js +2576 -0
  87. package/dist/connection-3IVXpuPE.d.ts +391 -0
  88. package/dist/connection-C9YD5sgm.js +297 -0
  89. package/dist/daily-log-generator-CH_KuWHs.js +469 -0
  90. package/dist/daily-log-generator-CsQPHl4A.d.ts +73 -0
  91. package/dist/daily-spend-estimator-DiwzBlo1.d.ts +8 -0
  92. package/dist/data-bootstrap-Bl3lthzE.d.ts +30 -0
  93. package/dist/data-bootstrap-P8sie9WA.js +172 -0
  94. package/dist/data-paths-C7sNdqvP.d.ts +22 -0
  95. package/dist/derived-suppression-cache-CI0durYx.d.ts +36 -0
  96. package/dist/diagnostic-encoder.d.ts +6 -0
  97. package/dist/diagnostic-encoder.js +29 -0
  98. package/dist/embedding-provider-client-Q_hJonK9.js +294 -0
  99. package/dist/embedding-provider-client-vynZMuit.d.ts +94 -0
  100. package/dist/entry-metadata-parser-BIVSMCIk.js +20 -0
  101. package/dist/error-D-wb-rZw.js +23 -0
  102. package/dist/error-signals-D8_3vYu4.d.ts +28 -0
  103. package/dist/error-signals-lMH2uAdV.js +134 -0
  104. package/dist/errors-CeVRxf9V.d.ts +49 -0
  105. package/dist/extraction-text-sanitizer-B_AhIecT.d.ts +32 -0
  106. package/dist/i18n-text-DbD6Qify.d.ts +13 -0
  107. package/dist/index-0aqS8pVF.d.ts +351 -0
  108. package/dist/index-BO4RU_mc.d.ts +650 -0
  109. package/dist/index-DL8AVj0Z.d.ts +571 -0
  110. package/dist/index.d.ts +65 -0
  111. package/dist/index.js +1201 -0
  112. package/dist/intent-analyzer-B5XVrWwe.d.ts +28 -0
  113. package/dist/internal/config/index.d.ts +2 -0
  114. package/dist/internal/config/index.js +581 -0
  115. package/dist/internal/config/plugin-config-schema.d.ts +2 -0
  116. package/dist/internal/config/plugin-config-schema.js +2 -0
  117. package/dist/internal/config/product-mode.d.ts +2 -0
  118. package/dist/internal/config/product-mode.js +36 -0
  119. package/dist/internal/config/settings.d.ts +2 -0
  120. package/dist/internal/config/settings.js +265 -0
  121. package/dist/internal/config/skill-categories.d.ts +4 -0
  122. package/dist/internal/config/skill-categories.js +68 -0
  123. package/dist/internal/config/skin-defaults.d.ts +6 -0
  124. package/dist/internal/config/skin-defaults.js +6 -0
  125. package/dist/internal/contract/discovery.d.ts +10 -0
  126. package/dist/internal/contract/discovery.js +53 -0
  127. package/dist/internal/contract/profile.d.ts +2 -0
  128. package/dist/internal/contract/profile.js +44 -0
  129. package/dist/internal/contract/routes.d.ts +2 -0
  130. package/dist/internal/contract/routes.js +62 -0
  131. package/dist/internal/engine/bindings/memory-cli-shared.d.ts +47 -0
  132. package/dist/internal/engine/bindings/memory-cli-shared.js +84 -0
  133. package/dist/internal/engine/bindings/memory-forget-tool.d.ts +5 -0
  134. package/dist/internal/engine/bindings/memory-forget-tool.js +66 -0
  135. package/dist/internal/engine/bindings/memory-list-tool.d.ts +5 -0
  136. package/dist/internal/engine/bindings/memory-list-tool.js +57 -0
  137. package/dist/internal/engine/bindings/memory-recall-tool.d.ts +10 -0
  138. package/dist/internal/engine/bindings/memory-recall-tool.js +283 -0
  139. package/dist/internal/engine/bindings/memory-reflection-resolve-tool.d.ts +5 -0
  140. package/dist/internal/engine/bindings/memory-reflection-resolve-tool.js +150 -0
  141. package/dist/internal/engine/bindings/memory-stats-tool.d.ts +5 -0
  142. package/dist/internal/engine/bindings/memory-stats-tool.js +43 -0
  143. package/dist/internal/engine/bindings/memory-store-tool.d.ts +5 -0
  144. package/dist/internal/engine/bindings/memory-store-tool.js +165 -0
  145. package/dist/internal/engine/bindings/memory-tool-access.d.ts +16 -0
  146. package/dist/internal/engine/bindings/memory-tool-access.js +46 -0
  147. package/dist/internal/engine/bindings/memory-tool-formatting.d.ts +62 -0
  148. package/dist/internal/engine/bindings/memory-tool-formatting.js +106 -0
  149. package/dist/internal/engine/bindings/memory-tool-results.d.ts +8 -0
  150. package/dist/internal/engine/bindings/memory-tool-results.js +41 -0
  151. package/dist/internal/engine/bindings/memory-tool-schemas.d.ts +109 -0
  152. package/dist/internal/engine/bindings/memory-tool-schemas.js +75 -0
  153. package/dist/internal/engine/bindings/memory-update-tool.d.ts +5 -0
  154. package/dist/internal/engine/bindings/memory-update-tool.js +127 -0
  155. package/dist/internal/engine/bindings/sno-station-mem-ambient-learning-hook.d.ts +14 -0
  156. package/dist/internal/engine/bindings/sno-station-mem-ambient-learning-hook.js +248 -0
  157. package/dist/internal/engine/bindings/sno-station-mem-auto-recall-hook.d.ts +12 -0
  158. package/dist/internal/engine/bindings/sno-station-mem-auto-recall-hook.js +324 -0
  159. package/dist/internal/engine/bindings/sno-station-mem-hook-types.d.ts +56 -0
  160. package/dist/internal/engine/bindings/sno-station-mem-hook-types.js +1 -0
  161. package/dist/internal/engine/bindings/sno-station-mem-insight-distill-factory.d.ts +14 -0
  162. package/dist/internal/engine/bindings/sno-station-mem-insight-distill-factory.js +119 -0
  163. package/dist/internal/engine/bindings/sno-station-mem-message-transcript.d.ts +52 -0
  164. package/dist/internal/engine/bindings/sno-station-mem-message-transcript.js +145 -0
  165. package/dist/internal/engine/bindings/sno-station-mem-reset-hook.d.ts +10 -0
  166. package/dist/internal/engine/bindings/sno-station-mem-reset-hook.js +9 -0
  167. package/dist/internal/engine/bindings/sno-station-mem-runtime-mode.d.ts +36 -0
  168. package/dist/internal/engine/bindings/sno-station-mem-runtime-mode.js +104 -0
  169. package/dist/internal/engine/bindings/sno-station-mem-session-state.d.ts +10 -0
  170. package/dist/internal/engine/bindings/sno-station-mem-session-state.js +27 -0
  171. package/dist/internal/engine/eval/trace.d.ts +2 -0
  172. package/dist/internal/engine/eval/trace.js +151 -0
  173. package/dist/internal/engine/extraction/ambient-learning-text-normalizer.d.ts +2 -0
  174. package/dist/internal/engine/extraction/ambient-learning-text-normalizer.js +2 -0
  175. package/dist/internal/engine/extraction/atomic-memory-extraction.d.ts +2 -0
  176. package/dist/internal/engine/extraction/atomic-memory-extraction.js +2 -0
  177. package/dist/internal/engine/extraction/b-profile-section-dictionary-provider.d.ts +2 -0
  178. package/dist/internal/engine/extraction/b-profile-section-dictionary-provider.js +2 -0
  179. package/dist/internal/engine/extraction/b-profile-section-rekey.d.ts +49 -0
  180. package/dist/internal/engine/extraction/b-profile-section-rekey.js +730 -0
  181. package/dist/internal/engine/extraction/capture-policy-detector.d.ts +2 -0
  182. package/dist/internal/engine/extraction/capture-policy-detector.js +2 -0
  183. package/dist/internal/engine/extraction/embedding-provider-client.d.ts +2 -0
  184. package/dist/internal/engine/extraction/embedding-provider-client.js +2 -0
  185. package/dist/internal/engine/extraction/extraction-text-sanitizer.d.ts +2 -0
  186. package/dist/internal/engine/extraction/extraction-text-sanitizer.js +114 -0
  187. package/dist/internal/engine/extraction/memory-metadata-codec.d.ts +3 -0
  188. package/dist/internal/engine/extraction/memory-metadata-codec.js +2 -0
  189. package/dist/internal/engine/extraction/memory-temporality-classifier.d.ts +2 -0
  190. package/dist/internal/engine/extraction/memory-temporality-classifier.js +2 -0
  191. package/dist/internal/engine/i18n/all-resources.d.ts +2 -0
  192. package/dist/internal/engine/i18n/all-resources.js +2 -0
  193. package/dist/internal/engine/i18n/locales.d.ts +2 -0
  194. package/dist/internal/engine/i18n/locales.js +19 -0
  195. package/dist/internal/engine/i18n/res/_types.d.ts +2 -0
  196. package/dist/internal/engine/i18n/res/_types.js +11 -0
  197. package/dist/internal/engine/observability/adapter.d.ts +2 -0
  198. package/dist/internal/engine/observability/adapter.js +2 -0
  199. package/dist/internal/engine/observability/best-effort.d.ts +2 -0
  200. package/dist/internal/engine/observability/best-effort.js +41 -0
  201. package/dist/internal/engine/observability/early-diagnostics.js +2 -0
  202. package/dist/internal/engine/observability/memory-snapshot.d.ts +2 -0
  203. package/dist/internal/engine/observability/memory-snapshot.js +44 -0
  204. package/dist/internal/engine/observability/observable-embedder.d.ts +2 -0
  205. package/dist/internal/engine/observability/observable-embedder.js +43 -0
  206. package/dist/internal/engine/observability/observable-llm-client.d.ts +2 -0
  207. package/dist/internal/engine/observability/observable-llm-client.js +98 -0
  208. package/dist/internal/engine/observability/observable-memory-store.d.ts +2 -0
  209. package/dist/internal/engine/observability/observable-memory-store.js +701 -0
  210. package/dist/internal/engine/observability/observable-retriever.d.ts +2 -0
  211. package/dist/internal/engine/observability/observable-retriever.js +95 -0
  212. package/dist/internal/engine/observability/runtime-diagnostics.d.ts +13 -0
  213. package/dist/internal/engine/observability/runtime-diagnostics.js +96 -0
  214. package/dist/internal/engine/observability/session-registry.d.ts +2 -0
  215. package/dist/internal/engine/observability/session-registry.js +58 -0
  216. package/dist/internal/engine/observability/version-metadata.d.ts +7 -0
  217. package/dist/internal/engine/observability/version-metadata.js +59 -0
  218. package/dist/internal/engine/operations/daily-spend-estimator.d.ts +2 -0
  219. package/dist/internal/engine/operations/daily-spend-estimator.js +97 -0
  220. package/dist/internal/engine/operations/learning-file-maintenance.d.ts +2 -0
  221. package/dist/internal/engine/operations/learning-file-maintenance.js +255 -0
  222. package/dist/internal/engine/operations/memory-tier-promoter.d.ts +2 -0
  223. package/dist/internal/engine/operations/memory-tier-promoter.js +95 -0
  224. package/dist/internal/engine/operations/runtime-audit-log.d.ts +3 -0
  225. package/dist/internal/engine/operations/runtime-audit-log.js +3 -0
  226. package/dist/internal/engine/provider/canonical-memory-corpus.d.ts +38 -0
  227. package/dist/internal/engine/provider/canonical-memory-corpus.js +253 -0
  228. package/dist/internal/engine/provider/provider-registration.d.ts +39 -0
  229. package/dist/internal/engine/provider/provider-registration.js +2 -0
  230. package/dist/internal/engine/provider/provider-row-renderer.d.ts +7 -0
  231. package/dist/internal/engine/provider/provider-row-renderer.js +53 -0
  232. package/dist/internal/engine/provider/provider-types.d.ts +2 -0
  233. package/dist/internal/engine/provider/provider-types.js +1 -0
  234. package/dist/internal/engine/reflection/daily-log-generator.d.ts +2 -0
  235. package/dist/internal/engine/reflection/daily-log-generator.js +2 -0
  236. package/dist/internal/engine/reflection/reflection-command-hooks.d.ts +2 -0
  237. package/dist/internal/engine/reflection/reflection-command-hooks.js +2 -0
  238. package/dist/internal/engine/reflection/reflection-deps.d.ts +2 -0
  239. package/dist/internal/engine/reflection/reflection-deps.js +1 -0
  240. package/dist/internal/engine/reflection/reflection-embedded-generator.d.ts +2 -0
  241. package/dist/internal/engine/reflection/reflection-embedded-generator.js +2 -0
  242. package/dist/internal/engine/reflection/reflection-injection-hooks.d.ts +2 -0
  243. package/dist/internal/engine/reflection/reflection-injection-hooks.js +219 -0
  244. package/dist/internal/engine/reflection/reflection-lifecycle-hooks.d.ts +2 -0
  245. package/dist/internal/engine/reflection/reflection-lifecycle-hooks.js +63 -0
  246. package/dist/internal/engine/reflection/strategy-hook-runner.d.ts +4 -0
  247. package/dist/internal/engine/reflection/strategy-hook-runner.js +3 -0
  248. package/dist/internal/engine/rem/classifier.d.ts +2 -0
  249. package/dist/internal/engine/rem/classifier.js +180 -0
  250. package/dist/internal/engine/rem/index.d.ts +4 -0
  251. package/dist/internal/engine/rem/index.js +2551 -0
  252. package/dist/internal/engine/rem/types.d.ts +2 -0
  253. package/dist/internal/engine/rem/types.js +40 -0
  254. package/dist/internal/engine/retrieval/access-tracker.d.ts +2 -0
  255. package/dist/internal/engine/retrieval/access-tracker.js +314 -0
  256. package/dist/internal/engine/retrieval/intent-analyzer.d.ts +2 -0
  257. package/dist/internal/engine/retrieval/intent-analyzer.js +27 -0
  258. package/dist/internal/engine/retrieval/retrieval-gate.d.ts +2 -0
  259. package/dist/internal/engine/retrieval/retrieval-gate.js +47 -0
  260. package/dist/internal/engine/retrieval/retriever.d.ts +2 -0
  261. package/dist/internal/engine/retrieval/retriever.js +2 -0
  262. package/dist/internal/engine/security/memory-scope-policy.d.ts +2 -0
  263. package/dist/internal/engine/security/memory-scope-policy.js +2 -0
  264. package/dist/internal/engine/security/redact.d.ts +2 -0
  265. package/dist/internal/engine/security/redact.js +34 -0
  266. package/dist/internal/engine/security/scopes.d.ts +3 -0
  267. package/dist/internal/engine/security/scopes.js +3 -0
  268. package/dist/internal/engine/shared/errors.d.ts +2 -0
  269. package/dist/internal/engine/shared/errors.js +66 -0
  270. package/dist/internal/engine/shared/i18n-text.d.ts +2 -0
  271. package/dist/internal/engine/shared/i18n-text.js +58 -0
  272. package/dist/internal/engine/shared/iso-date-time.d.ts +16 -0
  273. package/dist/internal/engine/shared/iso-date-time.js +40 -0
  274. package/dist/internal/engine/shared/lru.d.ts +2 -0
  275. package/dist/internal/engine/shared/lru.js +30 -0
  276. package/dist/internal/engine/shared/memory-kind-policy.d.ts +2 -0
  277. package/dist/internal/engine/shared/memory-kind-policy.js +64 -0
  278. package/dist/internal/engine/shared/paths.d.ts +3 -0
  279. package/dist/internal/engine/shared/paths.js +2 -0
  280. package/dist/internal/engine/shared/types.d.ts +3 -0
  281. package/dist/internal/engine/shared/types.js +25 -0
  282. package/dist/internal/engine/shared/utils.d.ts +2 -0
  283. package/dist/internal/engine/shared/utils.js +175 -0
  284. package/dist/internal/engine/telemetry/memory-telemetry-api.d.ts +134 -0
  285. package/dist/internal/engine/telemetry/memory-telemetry-api.js +730 -0
  286. package/dist/internal/engine/telemetry/memory-telemetry-observability.d.ts +24 -0
  287. package/dist/internal/engine/telemetry/memory-telemetry-observability.js +133 -0
  288. package/dist/internal/engine/telemetry/memory-telemetry-outbox.d.ts +2 -0
  289. package/dist/internal/engine/telemetry/memory-telemetry-outbox.js +443 -0
  290. package/dist/internal/engine/telemetry/memory-telemetry-types.d.ts +2 -0
  291. package/dist/internal/engine/telemetry/memory-telemetry-types.js +21 -0
  292. package/dist/internal/engine/telemetry/observe-ledger.d.ts +30 -0
  293. package/dist/internal/engine/telemetry/observe-ledger.js +111 -0
  294. package/dist/internal/model/agent-llm-port.d.ts +2 -0
  295. package/dist/internal/model/agent-llm-port.js +1 -0
  296. package/dist/internal/model/llm-client.d.ts +3 -0
  297. package/dist/internal/model/llm-client.js +3 -0
  298. package/dist/internal/model/llm-failure.d.ts +26 -0
  299. package/dist/internal/model/llm-failure.js +63 -0
  300. package/dist/internal/model/llm-mode-routing.d.ts +22 -0
  301. package/dist/internal/model/llm-mode-routing.js +37 -0
  302. package/dist/internal/store/atomic-memory-cutover-sql.d.ts +13 -0
  303. package/dist/internal/store/atomic-memory-cutover-sql.js +237 -0
  304. package/dist/internal/store/connection.d.ts +2 -0
  305. package/dist/internal/store/connection.js +2 -0
  306. package/dist/internal/store/data-bootstrap.d.ts +2 -0
  307. package/dist/internal/store/data-bootstrap.js +2 -0
  308. package/dist/internal/store/data-paths.d.ts +2 -0
  309. package/dist/internal/store/data-paths.js +65 -0
  310. package/dist/internal/store/maintenance.d.ts +75 -0
  311. package/dist/internal/store/maintenance.js +1401 -0
  312. package/dist/internal/store/memory-kinds-cutover-migrator.d.ts +28 -0
  313. package/dist/internal/store/memory-kinds-cutover-migrator.js +415 -0
  314. package/dist/internal/store/migrations.d.ts +27 -0
  315. package/dist/internal/store/migrations.js +201 -0
  316. package/dist/internal/store/sqlite-runtime.d.ts +2 -0
  317. package/dist/internal/store/sqlite-runtime.js +109 -0
  318. package/dist/internal/store/store.d.ts +3 -0
  319. package/dist/internal/store/store.js +2 -0
  320. package/dist/learning-file-maintenance-9b-Ut6Kv.d.ts +30 -0
  321. package/dist/llm-client-BSYUAcUb.js +1374 -0
  322. package/dist/llm-client-DOTSGzhe.d.ts +51 -0
  323. package/dist/locales-JxGmkG6t.d.ts +7 -0
  324. package/dist/log-site-catalog.generated-BMKWj-Nx.js +2321 -0
  325. package/dist/log-site-catalog.json +1 -0
  326. package/dist/lru-DyoaTyIs.d.ts +14 -0
  327. package/dist/memdump.d.ts +52 -0
  328. package/dist/memdump.js +163 -0
  329. package/dist/memory-entry-projector-DHo8jH10.js +1015 -0
  330. package/dist/memory-kind-policy-BiuRjSJc.d.ts +23 -0
  331. package/dist/memory-metadata-codec-DL1sbJiN.js +577 -0
  332. package/dist/memory-metadata-codec-DUvsYe_X.d.ts +68 -0
  333. package/dist/memory-runtime-DqUS4cWi.js +19459 -0
  334. package/dist/memory-scope-policy-1gg5QlWZ.d.ts +67 -0
  335. package/dist/memory-scope-policy-DICSCURA.js +283 -0
  336. package/dist/memory-snapshot-CqY1BUUA.d.ts +16 -0
  337. package/dist/memory-source-order-YMRoeDLd.js +134 -0
  338. package/dist/memory-store-base-CQ_bHlYA.d.ts +1094 -0
  339. package/dist/memory-store-shared-DqpWJXZZ.js +158 -0
  340. package/dist/memory-store-write-validation-B_hDG2zf.js +243 -0
  341. package/dist/memory-telemetry-incidents-BWA9kcZx.js +8 -0
  342. package/dist/memory-telemetry-metadata-CA7W8tK6.js +77 -0
  343. package/dist/memory-telemetry-outbox-ddTdImt7.d.ts +74 -0
  344. package/dist/memory-telemetry-receipts-MAJecvXQ.d.ts +34 -0
  345. package/dist/memory-telemetry-receipts-YsxbwOAf.js +91 -0
  346. package/dist/memory-telemetry-types-CufVmrCs.d.ts +14 -0
  347. package/dist/memory-temporality-classifier-BUjXG5o7.js +184 -0
  348. package/dist/memory-temporality-classifier-Brht5jyK.d.ts +43 -0
  349. package/dist/memory-tier-promoter-CqGxCkue.d.ts +43 -0
  350. package/dist/memory-tool-dependencies-CatGzI9R.d.ts +14 -0
  351. package/dist/memory-tool-dependencies-DjUoelnm.js +19 -0
  352. package/dist/model-call-table-CspopkBg.js +563 -0
  353. package/dist/model-reply-text-CKopStP2.js +334 -0
  354. package/dist/observable-embedder-CNNe9gkg.d.ts +17 -0
  355. package/dist/observable-llm-client-CRuKlefQ.d.ts +21 -0
  356. package/dist/observable-memory-store-CnGDpOY5.d.ts +73 -0
  357. package/dist/observable-retriever-Cooc62Qw.d.ts +23 -0
  358. package/dist/operation-cancellation-CTKWwNHk.js +81 -0
  359. package/dist/paths-qVF-5uBq.d.ts +1 -0
  360. package/dist/plugin-config-schema-C0UUbOmG.d.ts +413 -0
  361. package/dist/plugin-config-schema-YJLyIIcJ.js +361 -0
  362. package/dist/profile-TWPJ_myr.d.ts +13 -0
  363. package/dist/profile-section-writer-BhGKPBjw.js +2149 -0
  364. package/dist/provider-registration-CF1tg8Xy.js +721 -0
  365. package/dist/provider-runtime-types-DFhtdA6d.d.ts +134 -0
  366. package/dist/provider-types-CZGm6v88.d.ts +23 -0
  367. package/dist/redact-BTIZcHQL.d.ts +5 -0
  368. package/dist/reflection-command-hooks-ClUl-iv6.js +644 -0
  369. package/dist/reflection-command-hooks-G1-dI2Av.d.ts +32 -0
  370. package/dist/reflection-deps-Ccm2Jf5W.d.ts +19 -0
  371. package/dist/reflection-embedded-generator-BRvqV5N-.js +130 -0
  372. package/dist/reflection-embedded-generator-kfQfKEYV.d.ts +14 -0
  373. package/dist/reflection-injection-hooks-CS_uhjoD.d.ts +43 -0
  374. package/dist/reflection-lifecycle-hooks-CRSpUdLi.d.ts +27 -0
  375. package/dist/relation-dictionary-Cev1kyLe.js +4248 -0
  376. package/dist/release-download.d.ts +8 -0
  377. package/dist/release-download.js +32 -0
  378. package/dist/relevant-memories-context-m8nuFZcM.js +23 -0
  379. package/dist/rem-batch-executor-Dg2HgROM.js +2 -0
  380. package/dist/rem-batch-executor-DuC4nYyf.js +31640 -0
  381. package/dist/rem-consumer-retrieval-CR0dtcHR.js +246 -0
  382. package/dist/rem-trigger-Hn6od8IV.js +730 -0
  383. package/dist/resolver-Dy-hnjCR.js +103 -0
  384. package/dist/results-C3ZLroMb.js +140 -0
  385. package/dist/retrieval-gate-Bx2Zg7jD.d.ts +31 -0
  386. package/dist/retriever-Dxss5fRv.d.ts +469 -0
  387. package/dist/retriever-ZoLvPRHq.js +1757 -0
  388. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  389. package/dist/routes-DLHT__Ay.js +60 -0
  390. package/dist/runtime-audit-log-BCeujlEp.js +430 -0
  391. package/dist/runtime-audit-log-zpQiR9HT.d.ts +149 -0
  392. package/dist/scopes-CSOn6zdd.js +71 -0
  393. package/dist/scopes-CtrY-YQ3.d.ts +23 -0
  394. package/dist/server-CSvxchqg.js +1412 -0
  395. package/dist/session-registry-DBoE7AvZ.d.ts +14 -0
  396. package/dist/sidecar/main.d.ts +1 -0
  397. package/dist/sidecar/main.js +56 -0
  398. package/dist/signed-registry-constants-Bv0fgZ8Q.d.ts +12 -0
  399. package/dist/signed-registry-constants-yq3DlG3B.js +82 -0
  400. package/dist/sno-station-mem-runtime-dependencies-CoWqUMbK.js +30 -0
  401. package/dist/sno-station-mem-runtime-dependencies-DHESIuPn.d.ts +31 -0
  402. package/dist/sqlite-runtime-L_ywirTm.d.ts +58 -0
  403. package/dist/store-C8sUTssE.d.ts +27 -0
  404. package/dist/store-nPql26YM.js +5830 -0
  405. package/dist/strategy-hook-runner-Bxy851Xx.d.ts +16 -0
  406. package/dist/strategy-hook-runner-Djify5Rw.js +110 -0
  407. package/dist/token-counter-BD1f48Km.js +73 -0
  408. package/dist/trace-C1JxMfs-.d.ts +86 -0
  409. package/dist/types-CWdhXLxr.d.ts +477 -0
  410. package/dist/types-pVomjzqR.d.ts +132 -0
  411. package/dist/unplaced-candidate-migration-CbQHzcEM.js +940 -0
  412. package/dist/utils-Ctb9aevJ.d.ts +34 -0
  413. package/drizzle/0000_initial.sql +10 -0
  414. package/drizzle/0001_virtual_tables.sql +34 -0
  415. package/drizzle/0002_add_indexes.sql +11 -0
  416. package/drizzle/0003_content_hash_lookup_index.sql +2 -0
  417. package/drizzle/0004_chunk_swap.sql +60 -0
  418. package/drizzle/0005_drop_legacy_vec_fts.sql +10 -0
  419. package/drizzle/0006_fts_simple.sql +45 -0
  420. package/drizzle/0007_restore_simple_fts.sql +40 -0
  421. package/drizzle/0008_widen_memory_hash_unique_index.sql +4 -0
  422. package/drizzle/0009_memory_telemetry.sql +109 -0
  423. package/drizzle/0010_provider_mappings.sql +27 -0
  424. package/drizzle/0011_db_optimization.sql +82 -0
  425. package/drizzle/0012_b_profile_lanes.sql +9 -0
  426. package/drizzle/0013_extraction_timestamps.sql +6 -0
  427. package/drizzle/0014_extraction_timestamp_source.sql +3 -0
  428. package/drizzle/0015_task_lifecycle_state.sql +101 -0
  429. package/drizzle/0016_task_lifecycle_legacy_migration.sql +144 -0
  430. package/drizzle/0017_unplaced_candidates.sql +15 -0
  431. package/drizzle/0018_rem_batch_chassis.sql +71 -0
  432. package/drizzle/0019_profile_recovery_entries.sql +17 -0
  433. package/drizzle/0020_rem_scan_retry_progress.down.sql +14 -0
  434. package/drizzle/0020_rem_scan_retry_progress.sql +24 -0
  435. package/drizzle/0021_rem_two_facet_storage.down.sql +14 -0
  436. package/drizzle/0021_rem_two_facet_storage.sql +42 -0
  437. package/drizzle/0022_rem_facet_chunk_versions.down.sql +4 -0
  438. package/drizzle/0022_rem_facet_chunk_versions.sql +4 -0
  439. package/drizzle/0023_rem_defect_ledger.sql +40 -0
  440. package/drizzle/0024_rem_unbuilt_foundations.down.sql +13 -0
  441. package/drizzle/0024_rem_unbuilt_foundations.sql +65 -0
  442. package/drizzle/0025_rem_journal_operation_constraint.sql +28 -0
  443. package/drizzle/0026_rem_journal_detail.sql +1 -0
  444. package/drizzle/0027_legacy_nodix_namespace.sql +3 -0
  445. package/drizzle/0028_memory_timezone.sql +23 -0
  446. package/drizzle/0029_rem_write_hash_symmetry.sql +17 -0
  447. package/drizzle/0030_atomic_memory_additive.sql +105 -0
  448. package/drizzle/0031_atomic_extraction_ledger.sql +23 -0
  449. package/drizzle/0032_atomic_memory_entities.sql +12 -0
  450. package/drizzle/0033_todo_own_store.sql +99 -0
  451. package/drizzle/meta/0000_snapshot.json +87 -0
  452. package/drizzle/meta/_journal.json +244 -0
  453. package/generated/rem-operations.json +1 -0
  454. package/package.json +126 -4
  455. package/scripts/download-simple-tokenizer.mjs +254 -0
  456. package/settings.default.json +243 -0
  457. package/skills/extract-atomic-memory/SKILL.md +298 -0
  458. package/skills/extract-atomic-memory/references/account-for-turns.md +9 -0
  459. package/skills/extract-atomic-memory/references/calendar-meaning.md +64 -0
  460. package/skills/extract-atomic-memory/references/capture.md +120 -0
  461. package/skills/extract-atomic-memory/references/enrichment.md +92 -0
  462. package/skills/extract-atomic-memory/references/missing-durable-half.md +6 -0
  463. package/skills/extract-atomic-memory/references/progress-classification.md +21 -0
  464. package/skills/extract-atomic-memory/references/resolve-subject.md +19 -0
  465. package/skills/extract-atomic-memory/references/surrounding-context.md +10 -0
  466. package/skills/extract-atomic-memory/references/user-subject-guard.md +29 -0
  467. package/skills/judge-group-closure/SKILL.md +25 -0
  468. package/skills/judge-rem-memory-updates/SKILL.md +56 -0
  469. package/skills/judge-rem-memory-updates/agents/openai.yaml +4 -0
  470. package/skills/judge-retired-position/SKILL.md +25 -0
  471. package/skills/judge-task-lifecycle/SKILL.md +45 -0
  472. package/skills/key-state-attribute/SKILL.md +16 -0
  473. package/skills/resolve-entity-identity/SKILL.md +24 -0
  474. package/skills/resolve-relative-time/SKILL.md +22 -0
  475. package/sqlite-extensions/LICENSE-simple-tokenizer +28 -0
  476. package/sqlite-extensions/LICENSE-sqlite-vec +21 -0
  477. package/sqlite-extensions/linux-arm64/vec0.so +0 -0
  478. package/sqlite-extensions/linux-x64/vec0.so +0 -0
@@ -0,0 +1,1094 @@
1
+ import { _ as MemoryLane, b as MemoryTier, g as MemoryEntry, h as MemoryCategory, r as AggregationQuery, v as MemoryMetadata, y as MemorySearchResult } from "./types-CWdhXLxr.js";
2
+ import "./index-DL8AVj0Z.js";
3
+ import { t as Embedder } from "./embedding-provider-client-vynZMuit.js";
4
+ import { K as RemFacetPolicy } from "./index-BO4RU_mc.js";
5
+ import { T as WriteTextVersionInput, h as RemMutationResult } from "./types-pVomjzqR.js";
6
+ import { a as StorageError } from "./errors-CeVRxf9V.js";
7
+ import { r as WriterAuthority } from "./memory-kind-policy-BiuRjSJc.js";
8
+ import { t as DrizzleDB } from "./connection-3IVXpuPE.js";
9
+ import { r as SqliteDatabaseLike } from "./sqlite-runtime-L_ywirTm.js";
10
+ import { n as MemoryTelemetryKeySet, t as MemoryTelemetryReceiptService } from "./memory-telemetry-receipts-MAJecvXQ.js";
11
+ import { a as MemoryTelemetryMetadata, i as MemoryTelemetryEventType, r as MemoryTelemetryDeleteReason } from "./memory-telemetry-types-CufVmrCs.js";
12
+ import { ChunkMetadataDraft } from "@snoai/chunking";
13
+ import { createLogger } from "@snoai/utils/logger";
14
+ import { Mutex as Mutex$1 } from "async-mutex";
15
+ //#region src/engine/extraction/task-lifecycle-assertion.d.ts
16
+ type TaskLifecycleAction = "open_or_refine" | "complete" | "remove";
17
+ type TaskLifecycleTimeSource = "event_at" | "session_time" | "first_resolution";
18
+ interface TaskLifecycleOccurrenceAnchors {
19
+ date?: string;
20
+ ordinal?: string;
21
+ recurrence?: string;
22
+ explicitOccurrenceId?: string;
23
+ }
24
+ interface TaskLifecycleRevisionDetails {
25
+ deadline?: string | null;
26
+ location?: string | null;
27
+ participants?: string[] | null;
28
+ deliverable?: string | null;
29
+ quantity?: string | null;
30
+ constraints?: string[] | null;
31
+ }
32
+ interface TaskLifecycleAssertion {
33
+ kind: "task_lifecycle";
34
+ action: TaskLifecycleAction;
35
+ commandId: string;
36
+ projectId: string;
37
+ subject: "user";
38
+ description: string;
39
+ effectiveAtMs: number;
40
+ timeSource: TaskLifecycleTimeSource;
41
+ occurrenceAnchors: TaskLifecycleOccurrenceAnchors;
42
+ revisionDetails: TaskLifecycleRevisionDetails;
43
+ evidenceMemoryId?: string;
44
+ }
45
+ interface TaskLifecycleCommandIdentity {
46
+ commandId: string;
47
+ canonicalTuple: readonly string[] | undefined;
48
+ identityJson: string;
49
+ }
50
+ interface TaskLifecycleCommandClaim extends TaskLifecycleCommandIdentity {
51
+ action: TaskLifecycleAction;
52
+ sourceAssertionJson: string;
53
+ }
54
+ interface AdmittedTaskLifecycleAssertion {
55
+ assertion: TaskLifecycleAssertion;
56
+ commandIdentity: TaskLifecycleCommandIdentity;
57
+ created: boolean;
58
+ }
59
+ //#endregion
60
+ //#region src/engine/extraction/task-lifecycle-resolver.d.ts
61
+ interface TaskLifecycleCanonicalRevisionDetails {
62
+ deadline?: string;
63
+ location?: string;
64
+ participants?: string[];
65
+ deliverable?: string;
66
+ quantity?: string;
67
+ constraints?: string[];
68
+ }
69
+ interface TaskLifecycleInstanceSnapshot {
70
+ projectId: string;
71
+ activeTaskId: string;
72
+ currentRevisionId: string;
73
+ currentDescription: string;
74
+ occurrenceAnchors: TaskLifecycleOccurrenceAnchors;
75
+ revisionDetails: TaskLifecycleCanonicalRevisionDetails;
76
+ createdAtMs: number;
77
+ terminalAtMs?: number;
78
+ }
79
+ interface TaskLifecycleRelationCandidate {
80
+ activeTaskId: string;
81
+ currentDescription: string;
82
+ occurrenceAnchors: TaskLifecycleOccurrenceAnchors;
83
+ revisionDetails: TaskLifecycleCanonicalRevisionDetails;
84
+ createdAtMs: number;
85
+ currentRevisionId: string;
86
+ }
87
+ type TaskLifecycleRevisionIntent = {
88
+ kind: "evidence_only";
89
+ revisionDetails: TaskLifecycleCanonicalRevisionDetails;
90
+ } | {
91
+ kind: "successor_revision";
92
+ revisionDetails: TaskLifecycleCanonicalRevisionDetails;
93
+ };
94
+ type TaskLifecycleOpenResolution = {
95
+ action: "open_or_refine";
96
+ result: "same_instance";
97
+ target: TaskLifecycleRelationCandidate;
98
+ revisionIntent: TaskLifecycleRevisionIntent;
99
+ candidates: TaskLifecycleRelationCandidate[];
100
+ candidateSetVersion?: string;
101
+ } | {
102
+ action: "open_or_refine";
103
+ result: "distinct_instance";
104
+ candidates: TaskLifecycleRelationCandidate[];
105
+ candidateSetVersion?: string;
106
+ } | {
107
+ action: "open_or_refine";
108
+ result: "uncertain";
109
+ disposition: "visible_unresolved_open";
110
+ candidates: TaskLifecycleRelationCandidate[];
111
+ };
112
+ type TaskLifecycleTerminalResolution = {
113
+ action: "complete" | "remove";
114
+ result: "same_instance";
115
+ target: TaskLifecycleRelationCandidate;
116
+ candidates: TaskLifecycleRelationCandidate[];
117
+ candidateSetVersion: string;
118
+ } | {
119
+ action: "complete" | "remove";
120
+ result: "none" | "uncertain";
121
+ disposition: "no_terminal_mutation";
122
+ candidates: TaskLifecycleRelationCandidate[];
123
+ };
124
+ type TaskLifecycleResolution = TaskLifecycleOpenResolution | TaskLifecycleTerminalResolution;
125
+ //#endregion
126
+ //#region src/engine/telemetry/memory-telemetry-events.d.ts
127
+ interface MemoryTelemetryStoreConfig {
128
+ enabled?: boolean;
129
+ agentId?: string;
130
+ currentKeyVersion?: number;
131
+ key?: string;
132
+ historicKeys?: readonly string[];
133
+ keySet?: MemoryTelemetryKeySet;
134
+ receiptService?: MemoryTelemetryReceiptService;
135
+ }
136
+ interface MemoryTelemetryEventWriterOptions {
137
+ sqlite: SqliteDatabaseLike;
138
+ config?: MemoryTelemetryStoreConfig;
139
+ }
140
+ interface WriteReceiptEventInput {
141
+ eventType: Extract<MemoryTelemetryEventType, "create" | "update">;
142
+ factId: string;
143
+ memoryKind: string;
144
+ projectId: string;
145
+ contentHash: string;
146
+ metadata: MemoryTelemetryMetadata;
147
+ timestampMs?: number;
148
+ sourceEventId?: number | null;
149
+ derivedFrom?: readonly string[] | null;
150
+ }
151
+ interface WriteLifecycleEventInput {
152
+ eventType: Exclude<MemoryTelemetryEventType, "create" | "recall" | "inject" | "epoch_boundary">;
153
+ factId: string;
154
+ memoryKind: string;
155
+ projectId: string;
156
+ metadata: MemoryTelemetryMetadata;
157
+ timestampMs?: number;
158
+ sourceEventId?: number | null;
159
+ derivedFrom?: readonly string[] | null;
160
+ }
161
+ declare class MemoryTelemetryEventWriter {
162
+ private readonly sqlite;
163
+ private enabled;
164
+ private readonly agentId;
165
+ private readonly receiptService;
166
+ private readonly insertReceiptEventStatement;
167
+ private readonly insertLifecycleEventStatement;
168
+ private readonly readLatestReceiptEventIdStatement;
169
+ constructor(options: MemoryTelemetryEventWriterOptions);
170
+ writeReceiptEvent(input: WriteReceiptEventInput): void;
171
+ writeLifecycleEvent(input: WriteLifecycleEventInput): void;
172
+ readLatestReceiptEventId(factId: string): number | null;
173
+ private requireReceiptService;
174
+ }
175
+ //#endregion
176
+ //#region src/store/memory-store-shared.d.ts
177
+ interface StoreConfig {
178
+ dbPath: string;
179
+ vectorDim?: number;
180
+ memoryTelemetry?: MemoryTelemetryStoreConfig;
181
+ /**
182
+ * Embedder used to vectorize chunks during write paths. The store chunks
183
+ * incoming text via `@snoai/chunking` and embeds each chunk individually,
184
+ * so a per-store embedder reference is required even when callers also
185
+ * compute their own (soon-to-be-discarded) parent vector. Round B-2 will
186
+ * remove the discarded caller path.
187
+ */
188
+ embedder: Embedder;
189
+ }
190
+ /** Outcome of an atomic reflection-item resolution attempt. */
191
+ type ReflectionResolveOutcome = "resolved" | "already_resolved" | "not_found" | "not_reflection_item";
192
+ interface StoreInput {
193
+ text: string;
194
+ /**
195
+ * @deprecated Removed from persistence in Round B-2. Ignored by
196
+ * MemoryStore as of 2026-04-30 because chunks are derived from `text` and
197
+ * embedded internally via `prepareChunkInserts`. Target removal:
198
+ * post-task-6 cleanup once all legacy callers stop passing it.
199
+ */
200
+ vector?: Float32Array;
201
+ category: MemoryCategory;
202
+ projectId: string;
203
+ importance?: number;
204
+ timestamp?: number;
205
+ timezone?: string;
206
+ metadata?: string;
207
+ /**
208
+ * Trusted direct-store writes are reserved for profile-writer and setup/admin
209
+ * paths. Ordinary callers may create only agent-tool writable kinds.
210
+ */
211
+ trusted?: boolean;
212
+ /** System-only writes are reserved for derived pipeline aggregates. */
213
+ system?: boolean;
214
+ /** Explicit authority for reflection, summaries, and future offline maintenance. */
215
+ offlineFamily?: boolean;
216
+ lane?: MemoryLane;
217
+ rawCandidateJson?: string;
218
+ dispositionReason?: string;
219
+ dispositionedAt?: number;
220
+ }
221
+ type QuarantineDispositionReason = "candidate_not_grounded" | "absorbed_occurrence" | "subject_not_user";
222
+ interface QuarantinedStoreInput extends StoreInput {
223
+ trusted: true;
224
+ lane: "quarantined";
225
+ rawCandidateJson: string;
226
+ dispositionReason: QuarantineDispositionReason;
227
+ dispositionedAt: number;
228
+ }
229
+ type StoreWriteOutcome = "created" | "existing";
230
+ type StoreResult = MemoryEntry & {
231
+ readonly storeWriteOutcome: StoreWriteOutcome;
232
+ };
233
+ interface ListOptions {
234
+ projectId?: string;
235
+ projectIdFilter?: string[];
236
+ category?: MemoryCategory;
237
+ limit?: number;
238
+ offset?: number;
239
+ importanceMin?: number;
240
+ /** Defaults to active. Pass a non-active lane only for explicit audit reads. */
241
+ lane?: MemoryLane;
242
+ }
243
+ interface SearchOptions {
244
+ limit?: number;
245
+ minScore?: number;
246
+ projectIdFilter?: string[];
247
+ category?: MemoryCategory;
248
+ /** Excludes exact memory rows before candidate limits are applied. */
249
+ excludeMemoryIds?: readonly string[];
250
+ /** Includes refusal-marked rows only when an explicit serving caller requests them. */
251
+ includeRefused?: boolean;
252
+ /** Structured full-text predicate and reduction for aggregation reads. */
253
+ aggregation?: AggregationQuery;
254
+ /** Restricts complete-population reads to durable task carrier rows. */
255
+ taskCarrierPopulation?: "active" | "terminal" | "all";
256
+ /**
257
+ * Hides superseded values when set to `current-only`. NO retrieval path sets it: whether a
258
+ * question needs a retired value is a question of meaning, and scoring answers that, not a
259
+ * regex over the query text. Left here for a caller that knows what it wants — the recall
260
+ * tool asking explicitly for history is the case it exists for.
261
+ */
262
+ facetPolicy?: RemFacetPolicy;
263
+ /**
264
+ * When set, search excludes memories whose metadata.invalidated_at is <= this
265
+ * timestamp. Fires on EVERY recall path — manual + auto + slash commands —
266
+ * because a superseded fact is obsolete regardless of recall mode.
267
+ */
268
+ excludeInvalidatedBefore?: number;
269
+ /** Explicit historical recall retains an invalidated row only when it names a successor. */
270
+ includeRetired?: boolean;
271
+ /**
272
+ * Drops rows a group-CRUD close retired (`metadata.superseded_by`). Serving callers set it;
273
+ * the REM waves and dedup deliberately do not, because reading a retired row is their job.
274
+ *
275
+ * It has to be here rather than in the caller: the retriever cuts its candidates to the
276
+ * caller's `limit` before any of them is inspected, so a retired row filtered afterwards has
277
+ * already spent a slot, and a group whose highest-scoring rows are all retired serves nothing
278
+ * at all while its current fact sits just past the cut.
279
+ */
280
+ excludeSuperseded?: boolean;
281
+ }
282
+ /**
283
+ * Per-chunk search result returned by `searchChunksSemantic` /
284
+ * `searchChunksKeyword`. Carries enough context (`parentMemoryId`,
285
+ * `chunkIndex`, `chunkText`, `densePayload`) for downstream aggregation
286
+ * (`@snoai/chunking#aggregateChunksToMemories`) and for precision recall fusion +
287
+ * cross-encoder rerank in `retriever.ts`.
288
+ */
289
+ interface ChunkSearchResult {
290
+ chunkId: string;
291
+ parentMemoryId: string;
292
+ chunkIndex: number;
293
+ chunkText: string;
294
+ densePayload: string;
295
+ score: number;
296
+ /** Semantic only — raw cosine distance from sqlite-vec. */
297
+ distance?: number;
298
+ /** Keyword only — raw FTS5 BM25 score (lower-is-better, negative). */
299
+ bm25Rank?: number;
300
+ /** 1-based result rank within this method's result list. */
301
+ rank: number;
302
+ }
303
+ interface UpdateChanges {
304
+ /** Explicit writer provenance; omission is the live extraction boundary. */
305
+ writerAuthority?: WriterAuthority;
306
+ text?: string;
307
+ /**
308
+ * @deprecated Removed from persistence in Round B-2. Ignored by
309
+ * MemoryStore as of 2026-04-30 because chunks are derived internally when
310
+ * `text` changes. Target removal: post-task-6 cleanup once all legacy
311
+ * callers stop passing it.
312
+ */
313
+ vector?: Float32Array;
314
+ category?: MemoryCategory;
315
+ importance?: number;
316
+ timestamp?: number;
317
+ timezone?: string;
318
+ metadata?: string;
319
+ expectedContentHash?: string;
320
+ expectedMetadata?: string;
321
+ expectedAbsentFactKey?: string;
322
+ }
323
+ interface StatsResult {
324
+ total: number;
325
+ projectBreakdown: Record<string, number>;
326
+ categoryBreakdown: Record<string, number>;
327
+ }
328
+ interface BulkDeleteResult {
329
+ deleted: number;
330
+ truncated: boolean;
331
+ }
332
+ interface MemoryDeleteOptions {
333
+ deleteReason?: MemoryTelemetryDeleteReason;
334
+ }
335
+ type MemoryRow = {
336
+ id: string;
337
+ text: string;
338
+ category: string;
339
+ projectId: string;
340
+ importance: number;
341
+ timestamp: number;
342
+ timezone: string;
343
+ metadata: string | null;
344
+ content_hash: string;
345
+ fact_id?: string | null;
346
+ derived_from?: string | null;
347
+ lane?: string | null;
348
+ raw_candidate_json?: string | null;
349
+ disposition_reason?: string | null;
350
+ dispositioned_at_ms?: number | null;
351
+ };
352
+ type ChunkSearchRow = {
353
+ chunk_id: string;
354
+ memory_id: string;
355
+ chunk_index: number;
356
+ chunk_text: string;
357
+ dense_payload: string;
358
+ projectId: string;
359
+ category: string;
360
+ distance?: number;
361
+ rank?: number;
362
+ };
363
+ interface PreparedChunkRow {
364
+ chunkId: string;
365
+ memoryId: string;
366
+ chunkIndex: number;
367
+ draft: ChunkMetadataDraft;
368
+ densePayload: string;
369
+ summary: string | undefined;
370
+ vectorBytes: Uint8Array;
371
+ createdAt: number;
372
+ updatedAt: number;
373
+ }
374
+ /** A write attempt the extraction path could not place. Not a memory. */
375
+ interface UnplacedCandidate {
376
+ id: string;
377
+ projectId: string;
378
+ category: MemoryCategory;
379
+ text: string;
380
+ rawCandidateJson: string;
381
+ dispositionReason: string;
382
+ dispositionedAtMs: number;
383
+ sessionKey?: string;
384
+ }
385
+ interface RecordUnplacedCandidateInput {
386
+ projectId: string;
387
+ category: MemoryCategory;
388
+ text: string;
389
+ /** The raw model output. Required — it is the replay input. */
390
+ rawCandidateJson: string;
391
+ dispositionReason: string;
392
+ dispositionedAtMs: number;
393
+ sessionKey?: string;
394
+ }
395
+ interface RecordUnplacedCandidateResult {
396
+ id: string;
397
+ /** False when an identical failure is already preserved for this scope. */
398
+ created: boolean;
399
+ }
400
+ interface UnplacedCandidateQuery {
401
+ projectId?: string;
402
+ dispositionReason?: string;
403
+ limit?: number;
404
+ }
405
+ //#endregion
406
+ //#region src/store/memory-store-base.d.ts
407
+ type SupersedeActiveFactGuard = {
408
+ factKey: string;
409
+ expectedId: string | null;
410
+ expectedIds?: never;
411
+ } | {
412
+ factKey: string;
413
+ expectedIds: readonly string[];
414
+ expectedId?: never;
415
+ };
416
+ interface ActiveTaskProjectionGuard {
417
+ taskIds: readonly string[];
418
+ maxItems: number;
419
+ }
420
+ interface SupersedeClose {
421
+ id: string;
422
+ buildMetadata: (createdId: string) => string;
423
+ expectedContentHash?: string;
424
+ expectedMetadata?: string;
425
+ }
426
+ interface SupersedePreserveExisting {
427
+ id: string;
428
+ expectedContentHash: string;
429
+ expectedMetadata: string;
430
+ }
431
+ interface ProfileRecoveryWrite {
432
+ mutationAttemptId: string;
433
+ sectionName: string;
434
+ removedAtMs: number;
435
+ }
436
+ interface ProfileRecoveryEntry {
437
+ mutationAttemptId: string;
438
+ removedRowId: string;
439
+ removedValue: string;
440
+ sectionName: string;
441
+ removedAtMs: number;
442
+ }
443
+ type MemoryRelationPredicate = "IS_A" | "WORKS_ON" | "NEEDS" | "PREFERS" | "FORBIDS" | "USES" | "DEPENDS_ON" | "CAUSED" | "FIXED_BY" | "DECIDED" | "SUPERSEDES" | "GOVERNED_BY" | "OWNED_BY" | "MEMBER_OF" | "LOCATED_AT" | "HAS_SKILL" | "INTERESTED_IN" | "HAS_ACCOUNT" | "HAS_OCCUPATION" | "HAS_METRIC" | "WORKS_AT" | "ATTENDED" | "MENTIONS";
444
+ interface MemoryRelation {
445
+ sourceCardId: string;
446
+ projectId: string;
447
+ subject: string;
448
+ predicate: MemoryRelationPredicate;
449
+ object: string;
450
+ createdAt: number;
451
+ }
452
+ interface CorrectMemoryInput {
453
+ id: string;
454
+ content: string;
455
+ projectIdFilter: readonly string[];
456
+ session: string;
457
+ temporalMetadata?: Readonly<Record<string, unknown>>;
458
+ }
459
+ type CorrectMemoryResult = {
460
+ corrected: true;
461
+ id: string;
462
+ } | {
463
+ corrected: false;
464
+ errorCode: "not-found";
465
+ } | {
466
+ corrected: false;
467
+ errorCode: "invalid-input";
468
+ duplicate?: {
469
+ id: string;
470
+ state: "unchanged" | "current" | "retired";
471
+ };
472
+ } | {
473
+ corrected: false;
474
+ errorCode: "already-superseded";
475
+ successorId: string;
476
+ };
477
+ interface MemoryRelationWalkInput {
478
+ projectId: string;
479
+ node: string;
480
+ direction?: "outgoing" | "incoming";
481
+ includeMentions?: boolean;
482
+ }
483
+ type AtomicExtractionLedgerState = "open" | "calls_recorded" | "complete" | "pending_reprocess";
484
+ type AtomicExtractionReprocessReason = "input-overflow" | "truncation-exhaustion" | "parse-exhaustion";
485
+ interface AtomicExtractionLedgerKey {
486
+ conversationId: string;
487
+ chunkHash: string;
488
+ pipelineVersion: string;
489
+ }
490
+ interface AtomicExtractionRunParameters {
491
+ maxInputTokens: number;
492
+ outputTokenBudget: number;
493
+ subchunkCount: number;
494
+ }
495
+ interface AtomicExtractionReprocessBounds {
496
+ maxOutputTokenBudget: number;
497
+ requiredInputTokens?: number;
498
+ }
499
+ type AtomicExtractionRepairStrategy = "raise-input-budget" | "rechunk-smaller" | "subchunk-smaller" | "double-output-budget" | "rerun-as-is";
500
+ interface AtomicExtractionLedgerEntry extends AtomicExtractionLedgerKey {
501
+ state: AtomicExtractionLedgerState;
502
+ rawChunk: string;
503
+ routingSnapshotId: string;
504
+ runParameters: AtomicExtractionRunParameters;
505
+ reprocessReason: AtomicExtractionReprocessReason | null;
506
+ reprocessAttemptCount: number;
507
+ failedReply: string | null;
508
+ createdAt: number;
509
+ updatedAt: number;
510
+ }
511
+ interface AtomicExtractionWriteRelation {
512
+ subject: string;
513
+ predicate: MemoryRelationPredicate;
514
+ object: string;
515
+ }
516
+ interface AtomicMemoryEntityRegistration {
517
+ entityId: string;
518
+ displayName: string;
519
+ normalizedName: string;
520
+ }
521
+ interface AtomicMemoryEntityResolution {
522
+ entityId: string;
523
+ registration?: AtomicMemoryEntityRegistration;
524
+ }
525
+ interface AtomicExtractionWriteCard {
526
+ idempotencyKey: string;
527
+ refusedAttribute?: string;
528
+ globalTurnIndex: number;
529
+ endsCurrent: boolean;
530
+ endedAt: number | null;
531
+ text: string;
532
+ category: "episodic" | "profile" | "state";
533
+ subject: string | null;
534
+ attribute: string | null;
535
+ /**
536
+ * When the remembered thing happened — the resolved event time, or the session's own time when
537
+ * the model resolved none. NOT the moment of the write.
538
+ *
539
+ * Retrieval ages a row as `now - entry.timestamp` (retriever-scoring-pipeline.ts:222,291), so
540
+ * a write clock here makes every row equally new and kills recency and time decay outright.
541
+ * Measured 2026-09-04: the write bound its own `nowMs`, and all 40 episodic rows of a Memora
542
+ * persona carried the run's date while their own text carried the right one — against 376 rows
543
+ * correctly spread over the conversation week in the store the previous path wrote.
544
+ */
545
+ timestamp: number;
546
+ validFrom: number | null;
547
+ validUntil: number | null;
548
+ importance: number;
549
+ timezone: string;
550
+ lane: "active" | "parked";
551
+ dispositionReason: "compound" | "subject-unverified" | "subject-rejected" | null;
552
+ /**
553
+ * PARKED rows only: the record as judged, serialized, so a rejected candidate can be replayed.
554
+ *
555
+ * The unplaced-candidate migration refuses to move a non-active row that lacks it, and refuses
556
+ * loudly: measured 2026-09-04, 18 parked rows per persona had no value here, the migration
557
+ * aborted inside `initDb`, and all three Memora personas produced no score at all.
558
+ *
559
+ * It stays null on an active row on purpose. REM reads this same column as replace evidence
560
+ * (rem-batch-executor.ts:1855) and tests it with `evidence.includes(clause.value)` over rows
561
+ * where `lane = 'active'`; a serialized record escapes quotes and newlines, so filling it for
562
+ * an active row would refuse a replace that a plain-text row allows. REM never reads a parked
563
+ * row, so the two consumers do not collide.
564
+ */
565
+ rawCandidateJson: string | null;
566
+ metadata?: Readonly<Record<string, unknown>>;
567
+ relations: readonly AtomicExtractionWriteRelation[];
568
+ }
569
+ interface AtomicExtractionWriteInput {
570
+ ledgerKey: AtomicExtractionLedgerKey;
571
+ projectId: string;
572
+ extractorVersion: string;
573
+ nowMs: number;
574
+ cards: readonly AtomicExtractionWriteCard[];
575
+ entities?: readonly AtomicMemoryEntityRegistration[];
576
+ }
577
+ interface AtomicExtractionWriteResult {
578
+ ledger: AtomicExtractionLedgerEntry;
579
+ cardIds: string[];
580
+ createdCount: number;
581
+ suppressed: Array<{
582
+ idempotencyKey: string;
583
+ reason: "key-suppressed" | "content-suppressed";
584
+ }>;
585
+ }
586
+ type MemorySuppressionInput = {
587
+ projectId: string;
588
+ subject: string;
589
+ attribute: string;
590
+ nowMs: number;
591
+ } | {
592
+ projectId: string;
593
+ content: string;
594
+ nowMs: number;
595
+ };
596
+ interface MemorySuppressionResult {
597
+ created: boolean;
598
+ shape: "key" | "content";
599
+ projectId: string;
600
+ }
601
+ interface BeginAtomicExtractionChunkInput extends AtomicExtractionLedgerKey {
602
+ rawChunk: string;
603
+ routingSnapshotId: string;
604
+ runParameters: AtomicExtractionRunParameters;
605
+ nowMs: number;
606
+ }
607
+ type BeginAtomicExtractionChunkResult = {
608
+ action: "run";
609
+ entry: AtomicExtractionLedgerEntry;
610
+ } | {
611
+ action: "pending";
612
+ entry: AtomicExtractionLedgerEntry;
613
+ } | {
614
+ action: "skip";
615
+ entry: AtomicExtractionLedgerEntry;
616
+ };
617
+ type ReopenAtomicExtractionChunkResult = {
618
+ status: "reopened";
619
+ strategy: AtomicExtractionRepairStrategy;
620
+ entry: AtomicExtractionLedgerEntry;
621
+ } | {
622
+ status: "stuck";
623
+ entry: AtomicExtractionLedgerEntry;
624
+ };
625
+ interface ExtractionTimestampResolution {
626
+ resolvedAtMs: number;
627
+ created: boolean;
628
+ }
629
+ type TaskLifecycleTimestampSource = "event_at" | "session_time" | "first_resolution";
630
+ interface TaskLifecycleTimestampInput {
631
+ projectId: string;
632
+ commandId: string;
633
+ effectiveAtMs: number;
634
+ timeSource: TaskLifecycleTimestampSource;
635
+ }
636
+ interface TaskLifecycleTimestampResolution {
637
+ effectiveAtMs: number;
638
+ timeSource: TaskLifecycleTimestampSource;
639
+ created: boolean;
640
+ }
641
+ type TaskLifecycleWriteOutcome = "created_instance" | "created_unresolved_instance" | "refined" | "evidence_only" | "completed" | "removed" | "terminal_evidence_only" | "none" | "uncertain";
642
+ interface TaskLifecycleWriteInput {
643
+ admission: AdmittedTaskLifecycleAssertion;
644
+ commandClaim: TaskLifecycleCommandClaim;
645
+ resolution: TaskLifecycleResolution;
646
+ todoProvenance?: {
647
+ sourceSession: string;
648
+ extractionPath: string;
649
+ closeReason?: string;
650
+ };
651
+ atomicFactWrite?: AtomicExtractionWriteInput;
652
+ }
653
+ interface TaskLifecycleBatchWriteInput {
654
+ taskWriteFactories: readonly (() => TaskLifecycleWriteInput)[];
655
+ atomicFactWrite: AtomicExtractionWriteInput;
656
+ }
657
+ interface TaskLifecycleCommandReplayInput {
658
+ admission: AdmittedTaskLifecycleAssertion;
659
+ commandClaim: TaskLifecycleCommandClaim;
660
+ }
661
+ interface TaskLifecycleWriteResult {
662
+ commandId: string;
663
+ result: TaskLifecycleWriteOutcome;
664
+ activeTaskId: string | null;
665
+ activeTaskRevisionId: string | null;
666
+ replayed: boolean;
667
+ atomicFactWrite?: AtomicExtractionWriteResult;
668
+ }
669
+ interface TaskLifecycleBatchWriteResult {
670
+ tasks: TaskLifecycleWriteResult[];
671
+ atomicFactWrite: AtomicExtractionWriteResult;
672
+ }
673
+ type TodoStatus = "open" | "done" | "removed";
674
+ interface TodoRecord {
675
+ projectId: string;
676
+ activeTaskId: string;
677
+ description: string;
678
+ status: TodoStatus;
679
+ openedAt: number;
680
+ closedAt: number | null;
681
+ closeReason: string | null;
682
+ }
683
+ interface TodoListInput {
684
+ projectIdFilter: readonly string[];
685
+ includeHistory: boolean;
686
+ limit: number;
687
+ }
688
+ interface TodoListResult {
689
+ items: TodoRecord[];
690
+ totalCount: number;
691
+ }
692
+ interface TaskLifecycleMigrationSourceRow {
693
+ legacy_row_locator: string;
694
+ project_id: string;
695
+ description?: string;
696
+ description_sha256?: string;
697
+ legacy_status: "active" | "completed" | "removed";
698
+ created_at_ms: number;
699
+ transitioned_at_ms: number;
700
+ ordered_lifecycle_events: readonly unknown[];
701
+ provenance: Readonly<Record<string, unknown>>;
702
+ binding_evidence?: Readonly<Record<string, unknown>>;
703
+ }
704
+ interface TaskLifecycleMigrationCensusRow {
705
+ legacy_row_locator: string;
706
+ project_id: string;
707
+ legacy_status: "active" | "completed" | "removed";
708
+ preserved_created_at_ms: number;
709
+ preserved_transitioned_at_ms: number;
710
+ preserved_lifecycle_events?: readonly unknown[];
711
+ provenance?: Readonly<Record<string, unknown>>;
712
+ binding_evidence: Readonly<Record<string, unknown>> | string;
713
+ legacy_command_binding: "bound" | "preserved_unbound";
714
+ source_command_tuple: readonly string[] | null;
715
+ command_id: string | null;
716
+ migration_group_tuple: readonly string[];
717
+ migration_group_key: string;
718
+ migration_instance_tuple: readonly string[];
719
+ active_task_id: string;
720
+ migration_revision_tuple: readonly string[] | null;
721
+ active_task_revision_id: string | null;
722
+ revision_role: "current" | "terminal_non_current" | "evidence_only";
723
+ projection_member: boolean;
724
+ disposition: string;
725
+ grouping_evidence?: string;
726
+ }
727
+ interface TaskLifecycleMigrationManifestRow {
728
+ source: TaskLifecycleMigrationSourceRow;
729
+ census: TaskLifecycleMigrationCensusRow;
730
+ }
731
+ interface TaskLifecycleMigrationManifest {
732
+ schemaVersion: 1;
733
+ manifestId: string;
734
+ inputStoreHash: string;
735
+ rows: TaskLifecycleMigrationManifestRow[];
736
+ manifestHash: string;
737
+ }
738
+ interface TaskLifecycleMigrationApplyResult {
739
+ manifestHash: string;
740
+ stateHash: string;
741
+ rowCount: number;
742
+ replayed: boolean;
743
+ }
744
+ declare class TaskLifecycleCommandCollisionError extends StorageError {
745
+ readonly projectId: string;
746
+ readonly commandId: string;
747
+ constructor(projectId: string, commandId: string);
748
+ }
749
+ declare class TaskLifecycleStateCollisionError extends StorageError {
750
+ readonly identity: string;
751
+ constructor(identity: string);
752
+ }
753
+ declare class TaskLifecycleStaleResolutionError extends StorageError {
754
+ readonly activeTaskId: string;
755
+ constructor(activeTaskId: string);
756
+ }
757
+ declare class TaskLifecycleTimestampCollisionError extends StorageError {
758
+ readonly projectId: string;
759
+ readonly commandId: string;
760
+ constructor(projectId: string, commandId: string);
761
+ }
762
+ declare class StaleSupersedeTargetError extends StorageError {
763
+ readonly factKey: string;
764
+ readonly expectedId: string | null;
765
+ readonly expectedIds?: readonly string[] | undefined;
766
+ constructor(factKey: string, expectedId: string | null, expectedIds?: readonly string[] | undefined);
767
+ }
768
+ declare class MemoryStore {
769
+ readonly dbPath: string;
770
+ hasFtsSupport: boolean;
771
+ readonly db: DrizzleDB;
772
+ readonly sqlite: SqliteDatabaseLike;
773
+ readonly vectorDim: number;
774
+ readonly telemetryEvents: MemoryTelemetryEventWriter;
775
+ readonly writeMutex: Mutex$1;
776
+ readonly embedder: Embedder;
777
+ backfillComplete: boolean;
778
+ backfillPromise: Promise<void> | null;
779
+ backfillTimer: ReturnType<typeof setTimeout> | null;
780
+ backfillFailureCount: number;
781
+ backfillNextRetryAt: number;
782
+ backfillLastFailureAt: number;
783
+ closed: boolean;
784
+ sqliteClosed: boolean;
785
+ findByContentHash(_hash: string, _scope?: string): MemoryEntry | undefined;
786
+ findByExtractionIdempotencyKey(_projectId: string, _key: string): MemoryEntry | undefined;
787
+ recordUnplacedCandidate(_input: RecordUnplacedCandidateInput): RecordUnplacedCandidateResult;
788
+ listUnplacedCandidates(_query?: UnplacedCandidateQuery): UnplacedCandidate[];
789
+ resolveExtractionTimestamp(_projectId: string, _replayKey: string, _validAtNowMs: number): ExtractionTimestampResolution;
790
+ resolveTaskLifecycleTimestamp(_input: TaskLifecycleTimestampInput): TaskLifecycleTimestampResolution;
791
+ applyTaskLifecycleResolution(_input: TaskLifecycleWriteInput): Promise<TaskLifecycleWriteResult>;
792
+ applyTaskLifecycleBatchWithAtomicWrite(_input: TaskLifecycleBatchWriteInput): Promise<TaskLifecycleBatchWriteResult>;
793
+ findTaskLifecycleCommandReplay(_input: TaskLifecycleCommandReplayInput): TaskLifecycleWriteResult | undefined;
794
+ readTaskLifecycleInstances(_projectId: string): TaskLifecycleInstanceSnapshot[];
795
+ listTodos(_input: TodoListInput): TodoListResult;
796
+ readProfileRecoveryEntries(_rowId: string): ProfileRecoveryEntry[];
797
+ applyTaskLifecycleMigration(_manifest: TaskLifecycleMigrationManifest): Promise<TaskLifecycleMigrationApplyResult>;
798
+ getById(_id: string): MemoryEntry | undefined;
799
+ getByFactKey(_scope: string, _factKey: string): MemoryEntry | undefined;
800
+ isMemoryOnFactSurface(_id: string): boolean;
801
+ getAtomicBySubjectAttribute(_projectId: string, _subject: string, _attribute: string): MemoryEntry | undefined;
802
+ resolveAtomicMemoryEntity(_projectId: string, _displayName: string): AtomicMemoryEntityResolution;
803
+ listAtomicValidAt(_projectId: string, _atMs: number): MemoryEntry[];
804
+ walkMemoryRelations(_input: MemoryRelationWalkInput): MemoryRelation[];
805
+ beginAtomicExtractionChunk(_input: BeginAtomicExtractionChunkInput): BeginAtomicExtractionChunkResult;
806
+ recordAtomicExtractionCalls(_key: AtomicExtractionLedgerKey, _nowMs: number): void;
807
+ markAtomicExtractionPending(_key: AtomicExtractionLedgerKey, _reason: AtomicExtractionReprocessReason, _failedReply: string | null, _nowMs: number, _runParameters?: AtomicExtractionRunParameters): void;
808
+ reopenAtomicExtractionChunk(_key: AtomicExtractionLedgerKey, _attemptCap: number, _bounds: AtomicExtractionReprocessBounds, _nowMs: number): ReopenAtomicExtractionChunkResult;
809
+ completeAtomicExtractionChunk(_key: AtomicExtractionLedgerKey, _nowMs: number, _write: (database: SqliteDatabaseLike) => void): AtomicExtractionLedgerEntry;
810
+ storeAtomicExtractionChunk(_input: AtomicExtractionWriteInput): Promise<AtomicExtractionWriteResult>;
811
+ createMemorySuppression(_input: MemorySuppressionInput): Promise<MemorySuppressionResult>;
812
+ store(_entry: StoreInput): Promise<StoreResult>;
813
+ correct(_input: CorrectMemoryInput): Promise<CorrectMemoryResult>;
814
+ storeQuarantinedCandidate(_entry: QuarantinedStoreInput): Promise<StoreResult>;
815
+ bulkStore(entries: Array<StoreInput | null | undefined>): Promise<MemoryEntry[]>;
816
+ supersede(args: {
817
+ create: StoreInput;
818
+ closes: SupersedeClose[];
819
+ activeFactGuard?: SupersedeActiveFactGuard;
820
+ activeTaskProjectionGuard?: ActiveTaskProjectionGuard;
821
+ preserveExisting?: SupersedePreserveExisting;
822
+ reviveInvalidatedExisting?: boolean;
823
+ profileRecovery?: ProfileRecoveryWrite;
824
+ }): Promise<MemoryEntry>;
825
+ createMergeWithRawLineage(args: {
826
+ rawSource: StoreInput;
827
+ merged: StoreInput | ((ids: {
828
+ rawSourceId: string;
829
+ mergedId: string;
830
+ }) => StoreInput);
831
+ closeExisting: Array<{
832
+ id: string;
833
+ buildMetadata: (ids: {
834
+ rawSourceId: string;
835
+ mergedId: string;
836
+ }) => string;
837
+ }>;
838
+ buildRawSourceMetadata: (ids: {
839
+ rawSourceId: string;
840
+ mergedId: string;
841
+ }) => string;
842
+ }): Promise<{
843
+ rawSource: MemoryEntry;
844
+ merged: MemoryEntry;
845
+ }>;
846
+ createEventAndSupersede(args: {
847
+ event: StoreInput;
848
+ replacement: StoreInput;
849
+ closeExisting: Array<{
850
+ id: string;
851
+ buildMetadata: (ids: {
852
+ eventId: string;
853
+ replacementId: string;
854
+ }) => string;
855
+ }>;
856
+ profileRecovery?: ProfileRecoveryWrite;
857
+ }): Promise<{
858
+ event: MemoryEntry;
859
+ replacement: MemoryEntry;
860
+ }>;
861
+ importEntry(entry: Omit<MemoryEntry, "timezone"> & {
862
+ timezone?: string;
863
+ vector?: Float32Array;
864
+ trusted?: boolean;
865
+ system?: boolean;
866
+ offlineFamily?: boolean;
867
+ }): Promise<MemoryEntry>;
868
+ hasId(_id: string): Promise<boolean>;
869
+ searchChunksSemantic(vector: Float32Array, opts: SearchOptions): Promise<ChunkSearchResult[]>;
870
+ searchChunksKeyword(query: string, opts: SearchOptions): Promise<ChunkSearchResult[]>;
871
+ searchSemantic(vector: Float32Array, opts: SearchOptions): Promise<MemorySearchResult[]>;
872
+ hasIncompleteTaskCarrierPopulation(opts: SearchOptions): boolean;
873
+ searchAggregationEvidence(opts: SearchOptions): Promise<MemorySearchResult[]>;
874
+ searchKeyword(query: string, opts: SearchOptions): Promise<MemorySearchResult[]>;
875
+ getVectorsByIds(_ids: string[]): Map<string, Float32Array>;
876
+ getChunksByParent(memoryIds: string[], facetPolicy?: SearchOptions["facetPolicy"]): Map<string, Array<{
877
+ chunkIndex: number;
878
+ chunkText: string;
879
+ facet: "current" | "history";
880
+ }>>;
881
+ delete(_idOrPrefix: string, _options?: MemoryDeleteOptions): Promise<number>;
882
+ deleteMany(_ids: string[], _options?: MemoryDeleteOptions): Promise<number>;
883
+ list(_opts: ListOptions): Promise<MemoryEntry[]>;
884
+ stats(_scope?: string): Promise<StatsResult>;
885
+ update(id: string, changes: UpdateChanges): Promise<MemoryEntry | null>;
886
+ applyRemTextVersion(_input: WriteTextVersionInput): Promise<RemMutationResult>;
887
+ updateTier(memoryId: string, newTier: MemoryTier, options?: {
888
+ writerAuthority?: "offline-family";
889
+ }): Promise<void>;
890
+ updateMetadata(memoryId: string, patch: Partial<MemoryMetadata>): Promise<void>;
891
+ resolveReflectionItem(memoryId: string, opts: {
892
+ resolvedAt: number;
893
+ resolvedBy?: string;
894
+ note?: string;
895
+ writerAuthority?: "offline-family";
896
+ }): Promise<ReflectionResolveOutcome>;
897
+ listReflectionItems(opts: {
898
+ projectIdFilter?: string[];
899
+ limit?: number;
900
+ unresolvedOnly?: boolean;
901
+ }): Promise<MemoryEntry[]>;
902
+ applyMetadataDelta(memoryId: string, deltaFn: (current: MemoryMetadata) => Partial<MemoryMetadata>): Promise<void>;
903
+ applyMetadataDeltas(entries: Array<{
904
+ memoryId: string;
905
+ deltaFn: (current: MemoryMetadata) => Partial<MemoryMetadata> | undefined;
906
+ }>): Promise<void>;
907
+ getMemoryMetadata(memoryId: string): Promise<MemoryMetadata | undefined>;
908
+ bulkDelete(filter: {
909
+ projectId?: string;
910
+ category?: MemoryCategory;
911
+ }, _options?: MemoryDeleteOptions): Promise<BulkDeleteResult>;
912
+ close(): Promise<void>;
913
+ closeSync(): void;
914
+ startLegacyChunkBackfill(): void;
915
+ scheduleLegacyChunkBackfill(): void;
916
+ cancelScheduledLegacyChunkBackfill(): boolean;
917
+ constructor(config: StoreConfig);
918
+ }
919
+ interface MemoryStoreInternals {
920
+ dbPath: string;
921
+ hasFtsSupport: boolean;
922
+ db: DrizzleDB;
923
+ sqlite: SqliteDatabaseLike;
924
+ vectorDim: number;
925
+ telemetryEvents: MemoryTelemetryEventWriter;
926
+ writeMutex: Mutex$1;
927
+ embedder: Embedder;
928
+ backfillComplete: boolean;
929
+ backfillPromise: Promise<void> | null;
930
+ backfillTimer: ReturnType<typeof setTimeout> | null;
931
+ backfillFailureCount: number;
932
+ backfillNextRetryAt: number;
933
+ backfillLastFailureAt: number;
934
+ closed: boolean;
935
+ sqliteClosed: boolean;
936
+ toEntry(row: MemoryRow): MemoryEntry;
937
+ parseMetadataObject(metadata: string | null): Record<string, unknown>;
938
+ validateVector(vector: Float32Array): void;
939
+ prepareChunkInserts(memoryId: string, text: string): Promise<PreparedChunkRow[]>;
940
+ writeChunkRowsSync(rows: PreparedChunkRow[], projectId: string): void;
941
+ deleteChunksByMemoryIdsSync(memoryIds: string[]): void;
942
+ readChunklessMemoryRows(limit: number): MemoryRow[];
943
+ memoryExists(memoryId: string): boolean;
944
+ memoryHasChunks(memoryId: string): boolean;
945
+ backfillMissingChunks(): Promise<number>;
946
+ startLegacyChunkBackfill(): void;
947
+ scheduleLegacyChunkBackfill(): void;
948
+ cancelScheduledLegacyChunkBackfill(): boolean;
949
+ readExistingByHash(projectId: string, hash: string, category: MemoryCategory): MemoryRow | undefined;
950
+ findByContentHash(hash: string, projectId?: string): MemoryEntry | undefined;
951
+ findByExtractionIdempotencyKey(projectId: string, key: string): MemoryEntry | undefined;
952
+ recordUnplacedCandidate(input: RecordUnplacedCandidateInput): RecordUnplacedCandidateResult;
953
+ listUnplacedCandidates(query?: UnplacedCandidateQuery): UnplacedCandidate[];
954
+ resolveExtractionTimestamp(projectId: string, replayKey: string, validAtNowMs: number): ExtractionTimestampResolution;
955
+ resolveTaskLifecycleTimestamp(input: TaskLifecycleTimestampInput): TaskLifecycleTimestampResolution;
956
+ applyTaskLifecycleResolution(input: TaskLifecycleWriteInput): Promise<TaskLifecycleWriteResult>;
957
+ applyTaskLifecycleBatchWithAtomicWrite(input: TaskLifecycleBatchWriteInput): Promise<TaskLifecycleBatchWriteResult>;
958
+ findTaskLifecycleCommandReplay(input: TaskLifecycleCommandReplayInput): TaskLifecycleWriteResult | undefined;
959
+ readTaskLifecycleInstances(projectId: string): TaskLifecycleInstanceSnapshot[];
960
+ listTodos(input: TodoListInput): TodoListResult;
961
+ readProfileRecoveryEntries(rowId: string): ProfileRecoveryEntry[];
962
+ applyTaskLifecycleMigration(manifest: TaskLifecycleMigrationManifest): Promise<TaskLifecycleMigrationApplyResult>;
963
+ getById(id: string): MemoryEntry | undefined;
964
+ getByFactKey(projectId: string, factKey: string): MemoryEntry | undefined;
965
+ isMemoryOnFactSurface(id: string): boolean;
966
+ getAtomicBySubjectAttribute(projectId: string, subject: string, attribute: string): MemoryEntry | undefined;
967
+ resolveAtomicMemoryEntity(projectId: string, displayName: string): AtomicMemoryEntityResolution;
968
+ listAtomicValidAt(projectId: string, atMs: number): MemoryEntry[];
969
+ walkMemoryRelations(input: MemoryRelationWalkInput): MemoryRelation[];
970
+ beginAtomicExtractionChunk(input: BeginAtomicExtractionChunkInput): BeginAtomicExtractionChunkResult;
971
+ recordAtomicExtractionCalls(key: AtomicExtractionLedgerKey, nowMs: number): void;
972
+ markAtomicExtractionPending(key: AtomicExtractionLedgerKey, reason: AtomicExtractionReprocessReason, failedReply: string | null, nowMs: number, runParameters?: AtomicExtractionRunParameters): void;
973
+ reopenAtomicExtractionChunk(key: AtomicExtractionLedgerKey, attemptCap: number, bounds: AtomicExtractionReprocessBounds, nowMs: number): ReopenAtomicExtractionChunkResult;
974
+ completeAtomicExtractionChunk(key: AtomicExtractionLedgerKey, nowMs: number, write: (database: SqliteDatabaseLike) => void): AtomicExtractionLedgerEntry;
975
+ storeAtomicExtractionChunk(input: AtomicExtractionWriteInput): Promise<AtomicExtractionWriteResult>;
976
+ createMemorySuppression(input: MemorySuppressionInput): Promise<MemorySuppressionResult>;
977
+ store(entry: StoreInput): Promise<StoreResult>;
978
+ correct(input: CorrectMemoryInput): Promise<CorrectMemoryResult>;
979
+ storeQuarantinedCandidate(entry: QuarantinedStoreInput): Promise<StoreResult>;
980
+ bulkStore(entries: Array<StoreInput | null | undefined>): Promise<MemoryEntry[]>;
981
+ supersede(args: {
982
+ create: StoreInput;
983
+ closes: SupersedeClose[];
984
+ activeFactGuard?: SupersedeActiveFactGuard;
985
+ activeTaskProjectionGuard?: ActiveTaskProjectionGuard;
986
+ preserveExisting?: SupersedePreserveExisting;
987
+ reviveInvalidatedExisting?: boolean;
988
+ profileRecovery?: ProfileRecoveryWrite;
989
+ }): Promise<MemoryEntry>;
990
+ createMergeWithRawLineage(args: {
991
+ rawSource: StoreInput;
992
+ merged: StoreInput | ((ids: {
993
+ rawSourceId: string;
994
+ mergedId: string;
995
+ }) => StoreInput);
996
+ closeExisting: Array<{
997
+ id: string;
998
+ buildMetadata: (ids: {
999
+ rawSourceId: string;
1000
+ mergedId: string;
1001
+ }) => string;
1002
+ }>;
1003
+ buildRawSourceMetadata: (ids: {
1004
+ rawSourceId: string;
1005
+ mergedId: string;
1006
+ }) => string;
1007
+ }): Promise<{
1008
+ rawSource: MemoryEntry;
1009
+ merged: MemoryEntry;
1010
+ }>;
1011
+ createEventAndSupersede(args: {
1012
+ event: StoreInput;
1013
+ replacement: StoreInput;
1014
+ closeExisting: Array<{
1015
+ id: string;
1016
+ buildMetadata: (ids: {
1017
+ eventId: string;
1018
+ replacementId: string;
1019
+ }) => string;
1020
+ }>;
1021
+ profileRecovery?: ProfileRecoveryWrite;
1022
+ }): Promise<{
1023
+ event: MemoryEntry;
1024
+ replacement: MemoryEntry;
1025
+ }>;
1026
+ importEntry(entry: Omit<MemoryEntry, "timezone"> & {
1027
+ timezone?: string;
1028
+ vector?: Float32Array;
1029
+ trusted?: boolean;
1030
+ system?: boolean;
1031
+ offlineFamily?: boolean;
1032
+ }): Promise<MemoryEntry>;
1033
+ hasId(id: string): Promise<boolean>;
1034
+ searchChunksSemantic(vector: Float32Array, opts: SearchOptions): Promise<ChunkSearchResult[]>;
1035
+ searchChunksKeyword(query: string, opts: SearchOptions): Promise<ChunkSearchResult[]>;
1036
+ fetchMemoriesInOrder(memoryIds: string[], opts?: SearchOptions): MemoryRow[];
1037
+ searchSemantic(vector: Float32Array, opts: SearchOptions): Promise<MemorySearchResult[]>;
1038
+ hasIncompleteTaskCarrierPopulation(opts: SearchOptions): boolean;
1039
+ searchAggregationEvidence(opts: SearchOptions): Promise<MemorySearchResult[]>;
1040
+ searchKeyword(query: string, opts: SearchOptions): Promise<MemorySearchResult[]>;
1041
+ getVectorsByIds(ids: string[]): Map<string, Float32Array>;
1042
+ getRepresentativeVectorsForMemories(memoryIds: string[]): Map<string, Float32Array>;
1043
+ attachSnippets(results: MemorySearchResult[], facetPolicy?: SearchOptions["facetPolicy"]): void;
1044
+ getChunksByParent(memoryIds: string[], facetPolicy?: SearchOptions["facetPolicy"]): Map<string, Array<{
1045
+ chunkIndex: number;
1046
+ chunkText: string;
1047
+ facet: "current" | "history";
1048
+ }>>;
1049
+ delete(idOrPrefix: string, options?: MemoryDeleteOptions): Promise<number>;
1050
+ deleteMany(ids: string[], options?: MemoryDeleteOptions): Promise<number>;
1051
+ deleteByIds(ids: string[], options?: MemoryDeleteOptions): void;
1052
+ list(opts: ListOptions): Promise<MemoryEntry[]>;
1053
+ stats(projectId?: string): Promise<StatsResult>;
1054
+ update(id: string, changes: UpdateChanges): Promise<MemoryEntry | null>;
1055
+ updateTier(memoryId: string, newTier: MemoryTier, options?: {
1056
+ writerAuthority?: "offline-family";
1057
+ }): Promise<void>;
1058
+ applyRemTextVersion(input: WriteTextVersionInput): Promise<RemMutationResult>;
1059
+ updateMetadata(memoryId: string, patch: Partial<MemoryMetadata>): Promise<void>;
1060
+ /**
1061
+ * Atomically marks a `memory-reflection-item` row resolved (sets the
1062
+ * reflection-item `resolvedAt` / `resolvedBy` / `resolutionNote` fields only,
1063
+ * metadata-only, no content_hash recompute). The read-guard-write runs under
1064
+ * the write mutex, so a concurrent caller observes `already_resolved` rather
1065
+ * than clobbering the first resolution.
1066
+ */
1067
+ resolveReflectionItem(memoryId: string, opts: {
1068
+ resolvedAt: number;
1069
+ resolvedBy?: string;
1070
+ note?: string;
1071
+ writerAuthority?: "offline-family";
1072
+ }): Promise<ReflectionResolveOutcome>;
1073
+ /** Lists `memory-reflection-item` rows (newest first), optionally projectId-filtered and unresolved-only. */
1074
+ listReflectionItems(opts: {
1075
+ projectIdFilter?: string[];
1076
+ limit?: number;
1077
+ unresolvedOnly?: boolean;
1078
+ }): Promise<MemoryEntry[]>;
1079
+ applyMetadataDelta(memoryId: string, deltaFn: (current: MemoryMetadata) => Partial<MemoryMetadata>): Promise<void>;
1080
+ applyMetadataDeltas(entries: Array<{
1081
+ memoryId: string;
1082
+ deltaFn: (current: MemoryMetadata) => Partial<MemoryMetadata> | undefined;
1083
+ }>): Promise<void>;
1084
+ getMemoryMetadata(memoryId: string): Promise<MemoryMetadata | undefined>;
1085
+ bulkDelete(filter: {
1086
+ projectId?: string;
1087
+ category?: MemoryCategory;
1088
+ }, options?: MemoryDeleteOptions): Promise<BulkDeleteResult>;
1089
+ close(): Promise<void>;
1090
+ closeSync(): void;
1091
+ closeSqlite(): void;
1092
+ }
1093
+ //#endregion
1094
+ export { TodoListResult as $, StaleSupersedeTargetError as A, TaskLifecycleMigrationManifest as B, MemoryStore as C, ProfileRecoveryEntry as D, MemorySuppressionResult as E, TaskLifecycleBatchWriteResult as F, TaskLifecycleTimestampCollisionError as G, TaskLifecycleMigrationSourceRow as H, TaskLifecycleCommandCollisionError as I, TaskLifecycleTimestampSource as J, TaskLifecycleTimestampInput as K, TaskLifecycleCommandReplayInput as L, SupersedeClose as M, SupersedePreserveExisting as N, ProfileRecoveryWrite as O, TaskLifecycleBatchWriteInput as P, TodoListInput as Q, TaskLifecycleMigrationApplyResult as R, MemoryRelationWalkInput as S, MemorySuppressionInput as T, TaskLifecycleStaleResolutionError as U, TaskLifecycleMigrationManifestRow as V, TaskLifecycleStateCollisionError as W, TaskLifecycleWriteOutcome as X, TaskLifecycleWriteInput as Y, TaskLifecycleWriteResult as Z, CorrectMemoryInput as _, UnplacedCandidate as _t, AtomicExtractionRepairStrategy as a, ListOptions as at, MemoryRelation as b, AtomicExtractionRunParameters as c, QuarantineDispositionReason as ct, AtomicExtractionWriteRelation as d, RecordUnplacedCandidateResult as dt, TodoRecord as et, AtomicExtractionWriteResult as f, SearchOptions as ft, BeginAtomicExtractionChunkResult as g, StoreResult as gt, BeginAtomicExtractionChunkInput as h, StoreInput as ht, AtomicExtractionLedgerState as i, ChunkSearchRow as it, SupersedeActiveFactGuard as j, ReopenAtomicExtractionChunkResult as k, AtomicExtractionWriteCard as l, QuarantinedStoreInput as lt, AtomicMemoryEntityResolution as m, StoreConfig as mt, AtomicExtractionLedgerEntry as n, BulkDeleteResult as nt, AtomicExtractionReprocessBounds as o, MemoryRow as ot, AtomicMemoryEntityRegistration as p, StatsResult as pt, TaskLifecycleTimestampResolution as q, AtomicExtractionLedgerKey as r, ChunkSearchResult as rt, AtomicExtractionReprocessReason as s, PreparedChunkRow as st, ActiveTaskProjectionGuard as t, TodoStatus as tt, AtomicExtractionWriteInput as u, RecordUnplacedCandidateInput as ut, CorrectMemoryResult as v, UnplacedCandidateQuery as vt, MemoryStoreInternals as w, MemoryRelationPredicate as x, ExtractionTimestampResolution as y, UpdateChanges as yt, TaskLifecycleMigrationCensusRow as z };