@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,644 @@
1
+ import { _t as FIXED_PROTOCOL_VALUE_78 } from "./signed-registry-constants-yq3DlG3B.js";
2
+ import { a as buildInsightMetadata, c as stringifyInsightMetadata } from "./memory-metadata-codec-DL1sbJiN.js";
3
+ import { redactSecrets } from "./internal/engine/security/redact.js";
4
+ import { t as checkMemoryOperation } from "./operation-cancellation-CTKWwNHk.js";
5
+ import { setLruEntry } from "./internal/engine/shared/lru.js";
6
+ import { i as createLlmClient } from "./llm-client-BSYUAcUb.js";
7
+ import { pickLlmRoutingConfig } from "./internal/model/llm-mode-routing.js";
8
+ import { appendSelfImprovementEntry } from "./internal/engine/operations/learning-file-maintenance.js";
9
+ import { getSnoStationMemDataDir } from "./internal/store/data-paths.js";
10
+ import { resolveHookAgentId } from "./internal/engine/bindings/sno-station-mem-runtime-mode.js";
11
+ import { n as createRetireByNameRunBudget, r as runProfileSectionUpdate } from "./profile-section-writer-BhGKPBjw.js";
12
+ import { a as generateReflectionText, c as shouldSkipReflectionMessage, l as writeReflectionToFilesystem, s as readSessionConversationWithResetFallback, u as extractTextContent } from "./daily-log-generator-CH_KuWHs.js";
13
+ import { a as resolveWorkspaceDirFromEvent, f as setReflectionDerivedCacheEntry, l as isSessionBoundaryReflectionAction, n as createReflectionGenerator, o as DEFAULT_REFLECTION_BOUNDARY_DERIVED_SUPPRESSION_MS, t as DEFAULT_MEMORY_LLM_CONFIG, u as setReflectionDerivedSuppression } from "./reflection-embedded-generator-BRvqV5N-.js";
14
+ import { i as buildReflectionMappedMetadata, n as createReflectionEventId, o as extractInjectableReflectionMappedMemoryItems, r as buildReflectionAntiPatternSignature, s as extractReflectionLearningGovernanceCandidates, t as storeReflectionEntries } from "./memory-entry-projector-DHo8jH10.js";
15
+ import { createLogger, currentLogContext, privateLogReference, withLogContext } from "@snoai/utils/logger";
16
+ import { basename, join } from "node:path";
17
+ import { getSnoProfileDir } from "@snoai/observability";
18
+ import { createHash, randomUUID } from "node:crypto";
19
+ //#region src/engine/reflection/reflection-mapped-memory-loop.ts
20
+ const diagnosticLog$2 = createLogger("sno-station-mem:reflection-mapped-memory-loop");
21
+ const MAX_MAPPED_ENTRIES = 100;
22
+ const MAPPED_DEDUP_THRESHOLD = .95;
23
+ /**
24
+ * Cosine similarity. Falls back to the raw dot product when either operand
25
+ * has zero norm — that is a degenerate, fail-open path so a model that
26
+ * returns an all-zero vector cannot crash the batch dedup scan.
27
+ */
28
+ function cosineSimilarity(a, b) {
29
+ const length = Math.min(a.length, b.length);
30
+ let dot = 0;
31
+ let normA = 0;
32
+ let normB = 0;
33
+ for (let i = 0; i < length; i += 1) {
34
+ const x = a[i] ?? 0;
35
+ const y = b[i] ?? 0;
36
+ dot += x * y;
37
+ normA += x * x;
38
+ normB += y * y;
39
+ }
40
+ if (normA === 0 || normB === 0) return dot;
41
+ return dot / (Math.sqrt(normA) * Math.sqrt(normB));
42
+ }
43
+ async function runMappedMemoryLoop(params) {
44
+ const { writerAgentId } = params;
45
+ const allMapped = extractInjectableReflectionMappedMemoryItems(params.reflectionText);
46
+ const seen = /* @__PURE__ */ new Map();
47
+ for (const m of allMapped) {
48
+ const k = JSON.stringify([
49
+ m.category,
50
+ m.heading,
51
+ m.text
52
+ ]);
53
+ if (!seen.has(k)) seen.set(k, m);
54
+ }
55
+ const deduped = [...seen.values()];
56
+ if (deduped.length < allMapped.length) diagnosticLog$2.info("Reflection duplicate input removed", {
57
+ input_count: allMapped.length,
58
+ output_count: deduped.length
59
+ }, {
60
+ event_name: "memory.reflection_mapped_memory_loop.reflection.duplicate.input.removed",
61
+ file: "packages/memory/src/engine/reflection/reflection-mapped-memory-loop.ts",
62
+ function: "runMappedMemoryLoop",
63
+ site_id: "reflection.reflection-mapped-memory-loop.runMappedMemoryLoop.d4cb1a8408"
64
+ });
65
+ if (deduped.length > MAX_MAPPED_ENTRIES) diagnosticLog$2.warn("Reflection input count limited", {
66
+ input_count: deduped.length,
67
+ limit: MAX_MAPPED_ENTRIES
68
+ }, {
69
+ event_name: "memory.reflection_mapped_memory_loop.reflection.input.count.limited",
70
+ file: "packages/memory/src/engine/reflection/reflection-mapped-memory-loop.ts",
71
+ function: "runMappedMemoryLoop",
72
+ site_id: "reflection.reflection-mapped-memory-loop.runMappedMemoryLoop.4f891b1d21"
73
+ });
74
+ const mapped = deduped.slice(0, MAX_MAPPED_ENTRIES);
75
+ if (mapped.length === 0) return;
76
+ const pending = [];
77
+ const pendingVectors = [];
78
+ const retireByNameBudget = createRetireByNameRunBudget();
79
+ for (const m of mapped) try {
80
+ const probeVector = await params.embedder.embed(m.text);
81
+ if ((await params.store.searchSemantic(probeVector, {
82
+ limit: 8,
83
+ minScore: .1,
84
+ projectIdFilter: [params.targetScope],
85
+ category: m.category
86
+ })).find((hit) => {
87
+ if (hit.score <= MAPPED_DEDUP_THRESHOLD) return false;
88
+ let hitKind;
89
+ try {
90
+ const meta = JSON.parse(hit.entry.metadata ?? "{}");
91
+ hitKind = typeof meta.mappedKind === "string" ? meta.mappedKind : void 0;
92
+ } catch {
93
+ hitKind = void 0;
94
+ }
95
+ if (hitKind !== void 0 && hitKind !== m.mappedKind) return false;
96
+ return true;
97
+ })) continue;
98
+ let skipped = false;
99
+ for (const prior of pendingVectors) {
100
+ if (prior.category !== m.category) continue;
101
+ if (prior.mappedKind !== m.mappedKind) continue;
102
+ const cosine = cosineSimilarity(probeVector, prior.vector);
103
+ if (cosine >= MAPPED_DEDUP_THRESHOLD) {
104
+ diagnosticLog$2.debug("Reflection duplicate candidate skipped", {
105
+ cosine,
106
+ category: m.category,
107
+ mapped_kind: m.mappedKind,
108
+ input_size: m.text.length
109
+ }, {
110
+ event_name: "memory.reflection_mapped_memory_loop.reflection.duplicate.candidate.skipped",
111
+ file: "packages/memory/src/engine/reflection/reflection-mapped-memory-loop.ts",
112
+ function: "runMappedMemoryLoop",
113
+ site_id: "reflection.reflection-mapped-memory-loop.runMappedMemoryLoop.78a7536d17"
114
+ });
115
+ skipped = true;
116
+ break;
117
+ }
118
+ }
119
+ if (skipped) continue;
120
+ const importance = m.mappedKind === "decision" ? .85 : .8;
121
+ const metadataPatch = {
122
+ ...buildReflectionMappedMetadata({
123
+ mappedItem: m,
124
+ eventId: params.eventId,
125
+ agentId: params.sourceAgentId,
126
+ sessionKey: params.sessionKey,
127
+ sessionId: params.sessionId,
128
+ runAt: params.runAt,
129
+ usedFallback: params.usedFallback,
130
+ toolErrorSignals: params.toolErrorSignals
131
+ }),
132
+ ...writerAgentId ? { writer_agent_id: writerAgentId } : {},
133
+ _reflectionHeading: m.heading
134
+ };
135
+ if (m.category === "profile") {
136
+ await runProfileSectionUpdate({
137
+ scope: params.targetScope,
138
+ sectionName: "preferences.general",
139
+ newAssertion: m.text,
140
+ evidence: m.text,
141
+ source: {
142
+ sessionKey: params.sessionKey,
143
+ source: "reflection",
144
+ agentId: writerAgentId
145
+ },
146
+ metadataPatch,
147
+ store: params.store,
148
+ llm: params.llm,
149
+ ...params.routing ? { routing: params.routing } : {},
150
+ at: params.runAt,
151
+ retireByNameBudget
152
+ });
153
+ pendingVectors.push({
154
+ vector: probeVector,
155
+ category: m.category,
156
+ mappedKind: m.mappedKind
157
+ });
158
+ continue;
159
+ }
160
+ const metadata = buildInsightMetadata({
161
+ text: m.text,
162
+ category: m.category,
163
+ timestamp: params.runAt
164
+ }, {
165
+ ...metadataPatch,
166
+ ...m.category === "lesson" ? { anti_pattern_signature: buildReflectionAntiPatternSignature(m.mappedKind, m.text) } : {}
167
+ });
168
+ pending.push({
169
+ entry: {
170
+ text: m.text,
171
+ category: m.category,
172
+ offlineFamily: true,
173
+ projectId: params.targetScope,
174
+ importance,
175
+ metadata: stringifyInsightMetadata(metadata),
176
+ timestamp: params.runAt
177
+ },
178
+ vector: probeVector,
179
+ category: m.category,
180
+ mappedKind: m.mappedKind
181
+ });
182
+ pendingVectors.push({
183
+ vector: probeVector,
184
+ category: m.category,
185
+ mappedKind: m.mappedKind
186
+ });
187
+ } catch (err) {
188
+ diagnosticLog$2.warn("Reflection candidate failed", { error: err }, {
189
+ event_name: "memory.reflection_mapped_memory_loop.reflection.candidate.failed",
190
+ file: "packages/memory/src/engine/reflection/reflection-mapped-memory-loop.ts",
191
+ function: "runMappedMemoryLoop",
192
+ site_id: "reflection.reflection-mapped-memory-loop.runMappedMemoryLoop.38fe983443"
193
+ });
194
+ }
195
+ if (pending.length === 0) return;
196
+ const entries = pending.map((p) => p.entry);
197
+ try {
198
+ await params.store.bulkStore(entries);
199
+ } catch (err) {
200
+ diagnosticLog$2.warn("Reflection batch write failed", {
201
+ error: err,
202
+ input_count: entries.length,
203
+ committed_count: 0
204
+ }, {
205
+ event_name: "memory.reflection_mapped_memory_loop.reflection.batch.write.failed",
206
+ file: "packages/memory/src/engine/reflection/reflection-mapped-memory-loop.ts",
207
+ function: "runMappedMemoryLoop",
208
+ site_id: "reflection.reflection-mapped-memory-loop.runMappedMemoryLoop.b692a46de7"
209
+ });
210
+ }
211
+ }
212
+ function governanceEntryType(area) {
213
+ const a = area?.trim().toLowerCase() ?? "";
214
+ if (a === "error" || a === "errors" || a.includes("err")) return "error";
215
+ if (a === "feature" || a === "features" || a.includes("feat")) return "feature";
216
+ return "learning";
217
+ }
218
+ //#endregion
219
+ //#region src/engine/reflection/session-serial-guard.ts
220
+ /** @file session-serial-guard.ts
221
+ * @purpose Serializes reflection runs per session via in-flight lock + post-completion debounce.
222
+ * @boundary Reflection hook entry - called once per command:new / command:reset.
223
+ * @see strategy-hook-runner.ts.
224
+ */
225
+ const diagnosticLog$1 = createLogger("sno-station-mem:session-serial-guard");
226
+ /**
227
+ * Serial guard for reflection.
228
+ *
229
+ * Two distinct protections:
230
+ * (1) In-flight lock - boolean, no time bound, blocks parallel re-entry.
231
+ * (2) Post-completion debounce - 30s window after the previous run completed.
232
+ *
233
+ * State lives on `globalThis` via Symbol keys so the guard survives across
234
+ * module reloads and is shared across plugin instances within a process.
235
+ * On process crash both maps die with the process; no permanent lock risk.
236
+ *
237
+ * The single source of truth is `runWithSerialGuard`. Production code never
238
+ * touches the in-flight Set or debounce Map directly.
239
+ */
240
+ const REFLECTION_INFLIGHT = Symbol.for("sno-station-mem.reflection-inflight");
241
+ const REFLECTION_DEBOUNCE = Symbol.for("sno-station-mem.reflection-debounce");
242
+ /**
243
+ * Backstop cap on the debounce Map size. The primary leak mitigation is the
244
+ * TTL sweep (any stamp older than `SERIAL_WINDOW_MS` is dead and removed on
245
+ * every insert). This cap only takes effect in the pathological case where
246
+ * more than `MAX_DEBOUNCE_ENTRIES` distinct sessions complete within a single
247
+ * 30s window — a regime the gateway is not expected to sustain. Sized at 1000
248
+ * so that under realistic fan-out the TTL sweep keeps the Map well under the
249
+ * cap and no still-active stamp gets evicted prematurely.
250
+ */
251
+ const MAX_DEBOUNCE_ENTRIES = 1e3;
252
+ /** Returns the in-flight Set, lazily creating it on first access. */
253
+ function getInflightSet() {
254
+ const g = globalThis;
255
+ if (!(g[REFLECTION_INFLIGHT] instanceof Set)) g[REFLECTION_INFLIGHT] = /* @__PURE__ */ new Set();
256
+ return g[REFLECTION_INFLIGHT];
257
+ }
258
+ /** Returns the debounce Map, lazily creating it on first access. */
259
+ function getDebounceMap() {
260
+ const g = globalThis;
261
+ if (!(g[REFLECTION_DEBOUNCE] instanceof Map)) g[REFLECTION_DEBOUNCE] = /* @__PURE__ */ new Map();
262
+ return g[REFLECTION_DEBOUNCE];
263
+ }
264
+ /**
265
+ * Drops debounce stamps that have aged past `SERIAL_WINDOW_MS`. Such stamps
266
+ * cannot gate any future call (the `Date.now() - last < SERIAL_WINDOW_MS`
267
+ * check returns false past the window) so removing them is semantically a
268
+ * no-op while it bounds Map growth.
269
+ *
270
+ * Map iteration is insertion-order; we walk in order and stop at the first
271
+ * non-expired entry, since `setLruEntry` re-inserts at the tail so older
272
+ * timestamps are always near the head.
273
+ */
274
+ function pruneExpiredDebounceStamps(map, now) {
275
+ for (const [key, stamp] of map) {
276
+ if (now - stamp < 3e4) return;
277
+ map.delete(key);
278
+ }
279
+ }
280
+ /**
281
+ * Run `work` under the serial guard for the given session key.
282
+ *
283
+ * Returns `true` when `work` ran (even if `work` threw - callers must use
284
+ * try/catch on the awaited result to observe the throw), `false` when the
285
+ * call was skipped by either the in-flight lock or the debounce window.
286
+ *
287
+ * Invariants:
288
+ * - The in-flight lock is acquired as the FIRST statement inside the try
289
+ * block so no synchronous code between acquire and try can leak it.
290
+ * - The debounce stamp is set unconditionally in the finally block, even on
291
+ * throw. This prevents an early-failing reflection run from being retried
292
+ * in a tight loop.
293
+ * - The in-flight lock is released unconditionally in the same finally.
294
+ *
295
+ * If `sessionKey` is falsy, the guard is bypassed and `work` runs
296
+ * unconditionally - there is nothing to key the lock on.
297
+ */
298
+ async function runWithSerialGuard(sessionKey, work, logger = { info: () => {} }) {
299
+ if (!sessionKey) {
300
+ await work();
301
+ return true;
302
+ }
303
+ if (getInflightSet().has(sessionKey)) {
304
+ diagnosticLog$1.info("Reflection command already running", {
305
+ outcome: "skipped",
306
+ reason_code: "already_in_flight",
307
+ session_reference: privateLogReference(sessionKey)
308
+ }, {
309
+ event_name: "memory.session_serial_guard.reflection.command.already.running",
310
+ file: "packages/memory/src/engine/reflection/session-serial-guard.ts",
311
+ function: "runWithSerialGuard",
312
+ site_id: "reflection.session-serial-guard.runWithSerialGuard.edb3193695"
313
+ });
314
+ return false;
315
+ }
316
+ const last = getDebounceMap().get(sessionKey);
317
+ if (last !== void 0 && Date.now() - last < 3e4) {
318
+ diagnosticLog$1.info("Reflection command delayed by debounce", {
319
+ outcome: "skipped",
320
+ reason_code: "debounced",
321
+ session_reference: privateLogReference(sessionKey)
322
+ }, {
323
+ event_name: "memory.session_serial_guard.reflection.command.delayed.by.debounce",
324
+ file: "packages/memory/src/engine/reflection/session-serial-guard.ts",
325
+ function: "runWithSerialGuard",
326
+ site_id: "reflection.session-serial-guard.runWithSerialGuard.2e95bc0994"
327
+ });
328
+ return false;
329
+ }
330
+ try {
331
+ getInflightSet().add(sessionKey);
332
+ await work();
333
+ } finally {
334
+ const now = Date.now();
335
+ const debounce = getDebounceMap();
336
+ pruneExpiredDebounceStamps(debounce, now);
337
+ setLruEntry(debounce, sessionKey, now, MAX_DEBOUNCE_ENTRIES);
338
+ getInflightSet().delete(sessionKey);
339
+ }
340
+ return true;
341
+ }
342
+ //#endregion
343
+ //#region src/engine/reflection/reflection-command-hooks.ts
344
+ /** @file reflection-command-hooks.ts
345
+ * @purpose Registers command hooks that write reflection logs and memories.
346
+ */
347
+ const diagnosticLog = createLogger("sno-station-mem:reflection-command-hooks");
348
+ function createRunMemoryReflection(params) {
349
+ return async (event) => {
350
+ const sessionKey = typeof event.sessionKey === "string" ? event.sessionKey : "";
351
+ return withLogContext({
352
+ operation_id: currentLogContext().operation_id ?? randomUUID(),
353
+ session_reference: sessionKey
354
+ }, async () => {
355
+ const started = performance.now();
356
+ const diagnostics = {
357
+ outcome: "skipped",
358
+ reason: "no_session_input",
359
+ inputSize: 0,
360
+ modelMs: 0,
361
+ writeMs: 0,
362
+ persisted: 0,
363
+ replayed: 0,
364
+ unclassifiedWrites: 0,
365
+ rowIds: [],
366
+ fileWritten: false
367
+ };
368
+ const action = String(event.action ?? "unknown");
369
+ const isBoundary = isSessionBoundaryReflectionAction(action);
370
+ if (sessionKey && isBoundary) armDerivedSuppression(params, sessionKey, action);
371
+ try {
372
+ if (!await runWithSerialGuard(sessionKey, async () => {
373
+ const context = event.context ?? {};
374
+ const workspaceDir = resolveWorkspaceDirFromEvent(context);
375
+ const sessionEntry = context.previousSessionEntry ?? context.sessionEntry ?? {};
376
+ const currentSessionFile = typeof sessionEntry.sessionFile === "string" ? sessionEntry.sessionFile : void 0;
377
+ const conversation = currentSessionFile ? await readSessionConversationWithResetFallback(currentSessionFile, params.reflectionCfg.messageCount) : Array.isArray(context.messages) ? context.messages.flatMap((message) => {
378
+ if (!message || typeof message !== "object") return [];
379
+ const record = message;
380
+ const role = record.role;
381
+ const text = extractTextContent(record.content);
382
+ return (role === "user" || role === "assistant") && text && !shouldSkipReflectionMessage(role, text) ? [`${role}: ${redactSecrets(text)}`] : [];
383
+ }).join("\n") : null;
384
+ if (!conversation) return;
385
+ diagnostics.inputSize = conversation.length;
386
+ await runMemoryReflectionBody(params, event, conversation, workspaceDir, diagnostics);
387
+ }, params.logger)) diagnostics.reason = "serial_guard";
388
+ } catch (error) {
389
+ diagnostics.outcome = "failed";
390
+ diagnostics.reason = "command_failed";
391
+ throw error;
392
+ } finally {
393
+ if (sessionKey && isBoundary) armDerivedSuppression(params, sessionKey, action);
394
+ diagnosticLog[diagnostics.outcome === "failed" ? "error" : "info"]("Reflection command completed", {
395
+ outcome: diagnostics.outcome,
396
+ reason_code: diagnostics.reason,
397
+ duration_ms: performance.now() - started,
398
+ input_size: diagnostics.inputSize,
399
+ model_duration_ms: diagnostics.modelMs,
400
+ model_duration_reason: "reflection_generation_calls_only",
401
+ write_duration_ms: diagnostics.writeMs,
402
+ persisted_count: diagnostics.unclassifiedWrites > 0 ? "unavailable" : diagnostics.persisted,
403
+ known_created_count: diagnostics.persisted,
404
+ replayed_count: diagnostics.replayed,
405
+ unclassified_write_count: diagnostics.unclassifiedWrites,
406
+ write_duration_reason: "layered_store_calls_only",
407
+ persisted_reason: diagnostics.unclassifiedWrites > 0 ? "store_write_outcome_unavailable" : "store_reported_created",
408
+ row_ids: diagnostics.rowIds.slice(0, 128),
409
+ file_written: diagnostics.fileWritten,
410
+ reflection_event_reference: diagnostics.eventId ?? "unavailable",
411
+ mapped_persisted_count: "unavailable",
412
+ mapped_persisted_reason: "mapped_writer_does_not_return_durable_count",
413
+ store_reference: privateLogReference(params.deps.store.dbPath)
414
+ }, {
415
+ event_name: "memory.reflection.completed",
416
+ file: "packages/memory/src/engine/reflection/reflection-command-hooks.ts",
417
+ function: "createRunMemoryReflection",
418
+ site_id: "memory.reflection.command.completed"
419
+ });
420
+ }
421
+ });
422
+ };
423
+ }
424
+ function armDerivedSuppression(params, sessionKey, action) {
425
+ const key = params.derivedKey(sessionKey);
426
+ params.derivedCache.delete(key);
427
+ const now = Date.now();
428
+ setReflectionDerivedSuppression(params.derivedSuppressionCache, key, {
429
+ updatedAt: now,
430
+ until: now + DEFAULT_REFLECTION_BOUNDARY_DERIVED_SUPPRESSION_MS,
431
+ reason: action
432
+ });
433
+ }
434
+ async function runMemoryReflectionBody(params, event, conversation, workspaceDir, diagnostics) {
435
+ const sessionKey = typeof event.sessionKey === "string" ? event.sessionKey : "";
436
+ let reflectionCompleted = false;
437
+ try {
438
+ params.doPrune();
439
+ const sessionEntry = event.context.previousSessionEntry ?? event.context.sessionEntry ?? {};
440
+ const currentSessionId = typeof sessionEntry.sessionId === "string" ? sessionEntry.sessionId : "unknown";
441
+ const nowTs = typeof event.timestamp === "number" ? event.timestamp : event.timestamp instanceof Date ? event.timestamp.getTime() : Date.now();
442
+ const sourceAgentId = params.deps.parseAgentIdFromSessionKey(sessionKey) || "main";
443
+ const writerAgentId = resolveHookAgentId(event.context.agentId, sessionKey).agentId;
444
+ const command = String(event.action ?? "unknown");
445
+ const errorReminderMax = params.reflectionCfg.errorReminderMaxEntries;
446
+ const toolErrorSignals = sessionKey && errorReminderMax > 0 ? params.errorTracker.getState(sessionKey).entries.slice(-errorReminderMax) : [];
447
+ const generate = createReflectionGenerator(params.config.extraction.llm ?? DEFAULT_MEMORY_LLM_CONFIG, pickLlmRoutingConfig(params.config), params.deps.agentPort);
448
+ const reflectionResult = await generateReflectionText({
449
+ conversation,
450
+ maxInputChars: params.reflectionCfg.maxInputChars,
451
+ timeoutMs: params.reflectionCfg.timeoutMs,
452
+ toolErrorSignals,
453
+ generate: async (...args) => {
454
+ const started = performance.now();
455
+ try {
456
+ return await generate(...args);
457
+ } finally {
458
+ diagnostics.modelMs += performance.now() - started;
459
+ }
460
+ },
461
+ logger: params.logger
462
+ });
463
+ if (reflectionResult.usedFallback) diagnosticLog.warn("Reflection generation used fallback", {
464
+ outcome: "partial",
465
+ error: reflectionResult.error,
466
+ session_reference: privateLogReference(currentSessionId)
467
+ }, {
468
+ event_name: "memory.reflection_command_hooks.reflection.generation.used.fallback",
469
+ file: "packages/memory/src/engine/reflection/reflection-command-hooks.ts",
470
+ function: "runMemoryReflectionBody",
471
+ site_id: "reflection.reflection-command-hooks.runMemoryReflectionBody.be803e8310"
472
+ });
473
+ checkMemoryOperation();
474
+ const skinId = event.context.reflectionSkinId;
475
+ const reflectionDir = skinId === "codex" || skinId === "claude-code" || skinId === "hermes" ? join(getSnoProfileDir(), "memory", "projects", `${basename(workspaceDir)}-${createHash("sha256").update(workspaceDir).digest("hex").slice(0, 12)}`) : workspaceDir;
476
+ const relPath = await writeReflectionToFilesystem({
477
+ workspaceDir: reflectionDir,
478
+ reflectionText: reflectionResult.text,
479
+ sessionKey,
480
+ sessionId: currentSessionId,
481
+ agentId: sourceAgentId,
482
+ command,
483
+ toolErrorSignals,
484
+ nowTs
485
+ });
486
+ diagnostics.fileWritten = true;
487
+ await maybeStoreReflection({
488
+ ...params,
489
+ reflectionText: reflectionResult.text,
490
+ usedFallback: reflectionResult.usedFallback,
491
+ sourceAgentId,
492
+ writerAgentId,
493
+ sessionKey,
494
+ sessionId: currentSessionId,
495
+ command,
496
+ toolErrorSignals,
497
+ nowTs
498
+ }, diagnostics);
499
+ reflectionCompleted = true;
500
+ diagnostics.outcome = reflectionResult.usedFallback ? "partial" : "success";
501
+ diagnostics.reason = reflectionResult.usedFallback ? "generation_fallback" : "completed";
502
+ diagnosticLog.info("Reflection file written", {
503
+ artifact_reference: privateLogReference(relPath),
504
+ session_reference: privateLogReference(currentSessionId)
505
+ }, {
506
+ event_name: "memory.reflection_command_hooks.reflection.file.written",
507
+ file: "packages/memory/src/engine/reflection/reflection-command-hooks.ts",
508
+ function: "runMemoryReflectionBody",
509
+ site_id: "reflection.reflection-command-hooks.runMemoryReflectionBody.2a047c8826"
510
+ });
511
+ } catch (err) {
512
+ checkMemoryOperation();
513
+ diagnostics.outcome = diagnostics.fileWritten || diagnostics.persisted > 0 ? "partial" : "failed";
514
+ diagnostics.reason = "reflection_failed";
515
+ diagnosticLog.warn("Reflection command failed", { error: err }, {
516
+ event_name: "memory.reflection_command_hooks.reflection.command.failed",
517
+ file: "packages/memory/src/engine/reflection/reflection-command-hooks.ts",
518
+ function: "runMemoryReflectionBody",
519
+ site_id: "reflection.reflection-command-hooks.runMemoryReflectionBody.55c5adf2a5"
520
+ });
521
+ } finally {
522
+ if (sessionKey && reflectionCompleted) params.errorTracker.clearSession(sessionKey);
523
+ params.doPrune();
524
+ }
525
+ }
526
+ async function maybeStoreReflection(params, diagnostics) {
527
+ if (!params.reflectionCfg.storeToDb || params.usedFallback) {
528
+ if (params.sessionKey && params.usedFallback) params.derivedCache.delete(`${params.sourceAgentId}::${params.sessionKey}`);
529
+ return;
530
+ }
531
+ const targetScope = params.deps.scopePolicy.getDefaultScope(params.sourceAgentId);
532
+ const eventId = createReflectionEventId({
533
+ runAt: params.nowTs,
534
+ sessionKey: params.sessionKey,
535
+ sessionId: params.sessionId,
536
+ agentId: params.sourceAgentId,
537
+ command: params.command
538
+ });
539
+ diagnostics.eventId = eventId;
540
+ try {
541
+ const llmCfg = params.config.extraction.llm ?? DEFAULT_MEMORY_LLM_CONFIG;
542
+ const mappedLlm = createLlmClient({
543
+ preset: llmCfg.preset,
544
+ ...llmCfg.apiKey ? { apiKey: llmCfg.apiKey } : {},
545
+ ...llmCfg.baseURL ? { baseURL: llmCfg.baseURL } : {},
546
+ timeoutMs: llmCfg.timeoutMs,
547
+ routing: pickLlmRoutingConfig(params.config),
548
+ ...params.deps.agentPort ? { agentPort: params.deps.agentPort } : {}
549
+ });
550
+ const layered = await storeReflectionEntries({
551
+ reflectionText: params.reflectionText,
552
+ sessionKey: params.sessionKey,
553
+ sessionId: params.sessionId,
554
+ agentId: params.sourceAgentId,
555
+ writerAgentId: params.writerAgentId,
556
+ command: params.command,
557
+ scope: targetScope,
558
+ toolErrorSignals: params.toolErrorSignals,
559
+ runAt: params.nowTs,
560
+ usedFallback: params.usedFallback,
561
+ eventId,
562
+ writeLegacyCombined: false,
563
+ dedupeThreshold: .97,
564
+ embed: (text) => params.deps.embedder.embed(text),
565
+ searchSemantic: (vector, options) => params.deps.store.searchSemantic(vector, options),
566
+ store: async (entry) => {
567
+ const started = performance.now();
568
+ try {
569
+ const result = await params.deps.store.store({
570
+ ...entry,
571
+ offlineFamily: true
572
+ });
573
+ if (result.storeWriteOutcome === "created") {
574
+ diagnostics.persisted += 1;
575
+ diagnostics.rowIds.push(result.id);
576
+ } else if (result.storeWriteOutcome === "existing") diagnostics.replayed += 1;
577
+ else diagnostics.unclassifiedWrites += 1;
578
+ return {
579
+ id: result.id,
580
+ factId: result.factId,
581
+ category: result.category,
582
+ projectId: result.projectId
583
+ };
584
+ } finally {
585
+ diagnostics.writeMs += performance.now() - started;
586
+ }
587
+ }
588
+ });
589
+ await runMappedMemoryLoop({
590
+ reflectionText: params.reflectionText,
591
+ store: params.deps.store,
592
+ embedder: params.deps.embedder,
593
+ llm: mappedLlm,
594
+ routing: pickLlmRoutingConfig(params.config),
595
+ targetScope,
596
+ sourceAgentId: params.sourceAgentId,
597
+ writerAgentId: params.writerAgentId,
598
+ sessionKey: params.sessionKey,
599
+ sessionId: params.sessionId,
600
+ runAt: params.nowTs,
601
+ usedFallback: params.usedFallback,
602
+ toolErrorSignals: params.toolErrorSignals,
603
+ eventId,
604
+ logger: params.logger
605
+ });
606
+ await appendGovernanceEntries(params, eventId);
607
+ if (params.sessionKey && layered.slices.derived.length > 0 && !isSessionBoundaryReflectionAction(params.command)) setReflectionDerivedCacheEntry(params.derivedCache, `${params.sourceAgentId}::${params.sessionKey}`, {
608
+ updatedAt: params.nowTs,
609
+ derived: layered.slices.derived,
610
+ derivedSources: layered.derivedSources
611
+ });
612
+ } finally {
613
+ if (params.sourceAgentId === "main") params.clearAllSliceCache();
614
+ else params.clearSliceCacheForAgent(params.sourceAgentId);
615
+ }
616
+ }
617
+ async function appendGovernanceEntries(params, eventId) {
618
+ const governance = extractReflectionLearningGovernanceCandidates(params.reflectionText);
619
+ if (governance.length === 0) return;
620
+ const baseDir = getSnoStationMemDataDir();
621
+ for (const entry of governance) try {
622
+ await appendSelfImprovementEntry({
623
+ baseDir,
624
+ type: governanceEntryType(entry.area),
625
+ summary: entry.summary,
626
+ details: entry.details ?? "",
627
+ suggestedAction: entry.suggestedAction ?? "",
628
+ ...entry.area !== void 0 ? { area: entry.area } : {},
629
+ ...entry.priority !== void 0 ? { priority: entry.priority } : {},
630
+ ...entry.status !== void 0 ? { status: entry.status } : {},
631
+ source: `${FIXED_PROTOCOL_VALUE_78}${eventId}`
632
+ });
633
+ } catch (err) {
634
+ checkMemoryOperation();
635
+ diagnosticLog.warn("Reflection learning append failed", { error: err }, {
636
+ event_name: "memory.reflection_command_hooks.reflection.learning.append.failed",
637
+ file: "packages/memory/src/engine/reflection/reflection-command-hooks.ts",
638
+ function: "appendGovernanceEntries",
639
+ site_id: "reflection.reflection-command-hooks.appendGovernanceEntries.805fa046d0"
640
+ });
641
+ }
642
+ }
643
+ //#endregion
644
+ export { createRunMemoryReflection as t };
@@ -0,0 +1,32 @@
1
+ import { t as PluginConfig } from "./plugin-config-schema-C0UUbOmG.js";
2
+ import "./types-CWdhXLxr.js";
3
+ import { n as createErrorSignalTracker } from "./error-signals-D8_3vYu4.js";
4
+ import { n as ReflectionDerivedCache, t as ReflectionDerivedSuppressionCache } from "./derived-suppression-cache-CI0durYx.js";
5
+ import { t as ReflectionDeps } from "./reflection-deps-Ccm2Jf5W.js";
6
+ //#region src/engine/reflection/reflection-command-hooks.d.ts
7
+ declare function createRunMemoryReflection(params: ReflectionCommandParams): (event: {
8
+ sessionKey: string;
9
+ context: Record<string, unknown>;
10
+ action?: string;
11
+ timestamp?: Date | number;
12
+ }) => Promise<void>;
13
+ type ReflectionCommandParams = {
14
+ logger: {
15
+ info(message: string): void;
16
+ warn(message: string): void;
17
+ error(message: string): void;
18
+ debug?(message: string): void;
19
+ };
20
+ config: PluginConfig;
21
+ reflectionCfg: PluginConfig["memoryReflection"];
22
+ deps: ReflectionDeps;
23
+ errorTracker: ReturnType<typeof createErrorSignalTracker>;
24
+ derivedCache: ReflectionDerivedCache;
25
+ derivedSuppressionCache: ReflectionDerivedSuppressionCache;
26
+ derivedKey: (sessionKey: string) => string;
27
+ doPrune: () => void;
28
+ clearSliceCacheForAgent: (agentId: string) => void;
29
+ clearAllSliceCache: () => void;
30
+ };
31
+ //#endregion
32
+ export { createRunMemoryReflection as n, ReflectionCommandParams as t };