@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,469 @@
1
+ import "./internal/config/index.js";
2
+ import { redactSecrets } from "./internal/engine/security/redact.js";
3
+ import { i as memoryOperationSignal, n as memoryFileWrite, t as checkMemoryOperation } from "./operation-cancellation-CTKWwNHk.js";
4
+ import { n as RESOURCES_BY_LOCALE } from "./all-resources-BQK2ugjB.js";
5
+ import { t as resolveLocale } from "./resolver-Dy-hnjCR.js";
6
+ import { a as sha256Hex } from "./error-signals-lMH2uAdV.js";
7
+ import { chunk, countTokens } from "@snoai/chunking";
8
+ import { createLogger } from "@snoai/utils/logger";
9
+ import { basename, dirname, join } from "node:path";
10
+ import { appendFile, link, mkdir, readFile, readdir, stat, unlink, writeFile } from "node:fs/promises";
11
+ import { randomUUID } from "node:crypto";
12
+ import "node:fs";
13
+ import "node:readline";
14
+ //#region src/engine/operations/session-summary-storage.ts
15
+ const diagnosticLog$1 = createLogger("sno-station-mem:session-summary-storage");
16
+ /** Implements sort file names by mtime desc as the local session summary storage operation. */
17
+ async function sortFileNamesByMtimeDesc(dir, fileNames) {
18
+ return (await Promise.all(fileNames.map(async (name) => {
19
+ try {
20
+ return {
21
+ name,
22
+ mtimeMs: (await stat(join(dir, name))).mtimeMs
23
+ };
24
+ } catch (error) {
25
+ if (!(error instanceof Error && "code" in error && error.code === "ENOENT")) diagnosticLog$1.warn("Session file metadata unavailable", { error }, {
26
+ event_name: "memory.session.file.stat.failed",
27
+ file: "packages/memory/src/engine/operations/session-summary-storage.ts",
28
+ function: "sortFileNamesByMtimeDesc",
29
+ site_id: "memory.session.file.stat.failed"
30
+ });
31
+ return null;
32
+ }
33
+ }))).filter((x) => x !== null).sort((a, b) => b.mtimeMs - a.mtimeMs || b.name.localeCompare(a.name)).map((x) => x.name);
34
+ }
35
+ /** Implements sanitize file token as the local session summary storage operation. */
36
+ function sanitizeFileToken(value, fallback) {
37
+ return value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 32) || fallback;
38
+ }
39
+ /** Extracts text content from raw inputs while tolerating partial data. */
40
+ function extractTextContent(content) {
41
+ if (typeof content === "string") return content;
42
+ if (!Array.isArray(content)) return null;
43
+ const parts = [];
44
+ for (const item of content) {
45
+ if (!item || typeof item !== "object") continue;
46
+ const record = item;
47
+ if (record.type === "text" && typeof record.text === "string") parts.push(record.text);
48
+ }
49
+ return parts.length > 0 ? parts.join("\n") : null;
50
+ }
51
+ //#endregion
52
+ //#region src/engine/reflection/reflection-prompt-input.ts
53
+ function prepareReflectionPromptInputs(conversation, maxInputChars) {
54
+ const trimmed = conversation.trim();
55
+ if (!trimmed) return [];
56
+ const maxTokens = Math.max(1, Math.floor(maxInputChars / 3));
57
+ if (countTokens(trimmed) <= maxTokens) return [trimmed];
58
+ return chunk(trimmed, {
59
+ contentType: "conversation",
60
+ targetTokens: maxTokens,
61
+ maxTokens
62
+ }).map((draft) => draft.chunkText);
63
+ }
64
+ //#endregion
65
+ //#region src/engine/reflection/transient-generation-retry.ts
66
+ const TRANSIENT_POLICIES = {
67
+ transportReset: [
68
+ /unexpected eof/i,
69
+ /\beconnreset\b/i,
70
+ /\beconnaborted\b/i,
71
+ /\bepipe\b/i,
72
+ /connection reset/i,
73
+ /socket hang up/i,
74
+ /socket (?:closed|disconnected)/i,
75
+ /connection (?:closed|aborted|dropped)/i,
76
+ /early close/i,
77
+ /stream (?:ended|closed) unexpectedly/i,
78
+ /\bund_err_(?:socket|headers_timeout|body_timeout)\b/i
79
+ ],
80
+ timeout: [
81
+ /\betimedout\b/i,
82
+ /\btimed out\b/i,
83
+ /\btimeout\b/i
84
+ ],
85
+ upstreamUnavailable: [
86
+ /temporar(?:y|ily).*unavailable/i,
87
+ /upstream.*unavailable/i,
88
+ /service unavailable/i,
89
+ /bad gateway/i,
90
+ /gateway timeout/i,
91
+ /\b(?:http|status)\s*(?:502|503|504)\b/i
92
+ ],
93
+ network: [/network error/i, /fetch failed/i]
94
+ };
95
+ const NON_RETRY_POLICIES = {
96
+ auth: [
97
+ /\b401\b/i,
98
+ /\bunauthorized\b/i,
99
+ /invalid api key/i,
100
+ /invalid[_ -]?token/i,
101
+ /\bauth(?:entication)?_?unavailable\b/i
102
+ ],
103
+ billingOrQuota: [
104
+ /insufficient (?:credit|credits|balance)/i,
105
+ /\bbilling\b/i,
106
+ /\bquota exceeded\b/i,
107
+ /payment required/i
108
+ ],
109
+ modelOrContext: [
110
+ /model .*not found/i,
111
+ /no such model/i,
112
+ /unknown model/i,
113
+ /context length/i,
114
+ /context window/i,
115
+ /request too large/i,
116
+ /payload too large/i,
117
+ /too many tokens/i,
118
+ /token limit/i,
119
+ /prompt too long/i
120
+ ],
121
+ sessionOrPolicy: [
122
+ /session expired/i,
123
+ /invalid session/i,
124
+ /refusal/i,
125
+ /content policy/i,
126
+ /safety policy/i,
127
+ /content filter/i,
128
+ /disallowed/i
129
+ ]
130
+ };
131
+ /** Implements default sleep as the local reflection retry policy operation. */
132
+ const DEFAULT_SLEEP = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
133
+ const CLIP_MAX_LEN = 260;
134
+ const BASE_DELAY_MS = 1e3;
135
+ const JITTER_RANGE_MS = 2e3;
136
+ /** Converts error message into the transport shape expected by reflection retry policy. */
137
+ function toErrorMessage(error) {
138
+ if (error instanceof Error) return `${error.name}: ${error.message}`.trim() || "Error";
139
+ if (typeof error === "string") return error;
140
+ try {
141
+ return JSON.stringify(error);
142
+ } catch {
143
+ return String(error);
144
+ }
145
+ }
146
+ /** Implements clip single line as the local reflection retry policy operation. */
147
+ function clipSingleLine(text, maxLen = CLIP_MAX_LEN) {
148
+ const oneLine = text.replace(/\s+/g, " ").trim();
149
+ if (oneLine.length <= maxLen) return oneLine;
150
+ return `${oneLine.slice(0, maxLen - 3)}...`;
151
+ }
152
+ function readErrorFacts(error) {
153
+ const message = toErrorMessage(error);
154
+ return {
155
+ message,
156
+ normalizedError: clipSingleLine(message),
157
+ transientCategory: matchPolicyCategory(TRANSIENT_POLICIES, message),
158
+ nonRetryCategory: matchPolicyCategory(NON_RETRY_POLICIES, message)
159
+ };
160
+ }
161
+ function matchPolicyCategory(policies, message) {
162
+ for (const [category, patterns] of Object.entries(policies)) if (patterns.some((pattern) => pattern.test(message))) return category;
163
+ return null;
164
+ }
165
+ function isRetryScope(scope) {
166
+ return scope === "reflection" || scope === "distiller";
167
+ }
168
+ function logRetryExhausted(params, retryError) {
169
+ params.onLog?.("warn", `memory-${params.scope}: retry exhausted (${params.runner}). error=${clipSingleLine(toErrorMessage(retryError))}`);
170
+ }
171
+ function readUsefulOutputChars(params) {
172
+ return params.usefulOutputChars?.() ?? 0;
173
+ }
174
+ /** Implements classify reflection retry as the local reflection retry policy operation. */
175
+ function classifyReflectionRetry(input) {
176
+ const facts = readErrorFacts(input.error);
177
+ const { normalizedError } = facts;
178
+ if (!input.inReflectionScope) return {
179
+ retryable: false,
180
+ reason: "not_reflection_scope",
181
+ normalizedError
182
+ };
183
+ if (input.retryCount > 0) return {
184
+ retryable: false,
185
+ reason: "retry_already_used",
186
+ normalizedError
187
+ };
188
+ if (input.usefulOutputChars > 0) return {
189
+ retryable: false,
190
+ reason: "useful_output_present",
191
+ normalizedError
192
+ };
193
+ if (facts.nonRetryCategory !== null) return {
194
+ retryable: false,
195
+ reason: "non_retry_error",
196
+ normalizedError
197
+ };
198
+ if (facts.transientCategory !== null) return {
199
+ retryable: true,
200
+ reason: "transient_upstream_failure",
201
+ normalizedError
202
+ };
203
+ return {
204
+ retryable: false,
205
+ reason: "non_transient_error",
206
+ normalizedError
207
+ };
208
+ }
209
+ /** Computes reflection retry delay ms as a side-effect-free reflection retry policy value. */
210
+ function computeReflectionRetryDelayMs(random = Math.random) {
211
+ const raw = random();
212
+ return BASE_DELAY_MS + Math.floor((Number.isFinite(raw) ? Math.min(1, Math.max(0, raw)) : 0) * JITTER_RANGE_MS);
213
+ }
214
+ /**
215
+ * Implements run with reflection transient retry once as the local reflection retry policy
216
+ * operation.
217
+ */
218
+ async function runWithReflectionTransientRetryOnce(params) {
219
+ try {
220
+ return await params.execute();
221
+ } catch (error) {
222
+ const decision = classifyReflectionRetry({
223
+ inReflectionScope: isRetryScope(params.scope),
224
+ retryCount: params.retryState.count,
225
+ usefulOutputChars: readUsefulOutputChars(params),
226
+ error
227
+ });
228
+ if (!decision.retryable) throw error;
229
+ const delayMs = computeReflectionRetryDelayMs(params.random);
230
+ params.retryState.count += 1;
231
+ params.onLog?.("warn", `memory-${params.scope}: transient upstream failure detected (${params.runner}); retrying once in ${delayMs}ms (${decision.reason}). error=${decision.normalizedError}`);
232
+ await (params.sleep ?? DEFAULT_SLEEP)(delayMs);
233
+ try {
234
+ const result = await params.execute();
235
+ params.onLog?.("info", `memory-${params.scope}: retry succeeded (${params.runner})`);
236
+ return result;
237
+ } catch (retryError) {
238
+ logRetryExhausted(params, retryError);
239
+ throw retryError;
240
+ }
241
+ }
242
+ }
243
+ //#endregion
244
+ //#region src/engine/reflection/daily-log-generator.ts
245
+ /** @file daily-log-generator.ts
246
+ * @purpose Runs reflection analysis and writes durable improvement-oriented records.
247
+ * @boundary LLM prompts, reflection stores, retry handling, and learning extraction.
248
+ * @see strategy-hook-runner.ts, memory-entry-projector.ts, learning-file-maintenance.ts.
249
+ */
250
+ const diagnosticLog = createLogger("sno-station-mem:daily-log-generator");
251
+ const REFLECTION_FALLBACK_MARKER = "(fallback) Reflection generation failed; storing minimal pointer only.";
252
+ const USER_SKIP_MARKERS = [
253
+ "<relevant-memories>",
254
+ "UNTRUSTED DATA",
255
+ "END UNTRUSTED DATA"
256
+ ];
257
+ /**
258
+ * Tests whether should skip reflection message without mutating reflection capture policy state.
259
+ */
260
+ function shouldSkipReflectionMessage(role, text) {
261
+ const trimmed = text.trim();
262
+ if (!trimmed) return true;
263
+ if (trimmed.startsWith("/")) return true;
264
+ if (role === "user" && USER_SKIP_MARKERS.some((m) => trimmed.includes(m))) return true;
265
+ return false;
266
+ }
267
+ /**
268
+ * Reads session conversation for reflection and applies reflection capture policy fallback
269
+ * behavior for missing data.
270
+ */
271
+ async function readSessionConversationForReflection(filePath, messageCount) {
272
+ try {
273
+ const lines = (await readFile(filePath, {
274
+ encoding: "utf8",
275
+ signal: memoryOperationSignal()
276
+ })).trim().split("\n");
277
+ const messages = [];
278
+ for (const line of lines) try {
279
+ const entry = JSON.parse(line);
280
+ const value = entry.type === "message" ? entry.message : entry.type === "response_item" ? entry.payload : entry.type === "user" || entry.type === "assistant" ? entry.message : void 0;
281
+ if (!value || typeof value !== "object") continue;
282
+ const msg = value;
283
+ if (entry.type === "response_item" && msg.type !== "message") continue;
284
+ const role = entry.type === "user" || entry.type === "assistant" ? entry.type : typeof msg.role === "string" ? msg.role : "";
285
+ if (role !== "user" && role !== "assistant") continue;
286
+ const text = extractTextContent(entry.type === "response_item" && Array.isArray(msg.content) ? msg.content.map((part) => part && typeof part === "object" && "type" in part && (part.type === "input_text" || part.type === "output_text") ? {
287
+ type: "text",
288
+ text: "text" in part ? part.text : void 0
289
+ } : part) : msg.content);
290
+ if (!text || shouldSkipReflectionMessage(role, text)) continue;
291
+ messages.push(`${role}: ${redactSecrets(text)}`);
292
+ } catch {}
293
+ if (messages.length === 0) return null;
294
+ return messages.join("\n");
295
+ } catch {
296
+ return null;
297
+ }
298
+ }
299
+ /**
300
+ * Reads session conversation with reset fallback and applies reflection capture policy fallback
301
+ * behavior for missing data.
302
+ */
303
+ async function readSessionConversationWithResetFallback(sessionFilePath, messageCount) {
304
+ const primary = await readSessionConversationForReflection(sessionFilePath, messageCount);
305
+ if (primary) return primary;
306
+ try {
307
+ const dir = dirname(sessionFilePath);
308
+ const resetPrefix = `${basename(sessionFilePath)}.reset.`;
309
+ const latest = (await sortFileNamesByMtimeDesc(dir, (await readdir(dir)).filter((name) => name.startsWith(resetPrefix))))[0];
310
+ if (latest) return await readSessionConversationForReflection(join(dir, latest), messageCount);
311
+ } catch {}
312
+ return primary;
313
+ }
314
+ /**
315
+ * Assembles reflection prompt from validated inputs for deterministic reflection capture policy.
316
+ *
317
+ * Locale-aware: resolves the conversation's locale and dispatches to the
318
+ * matching `i18n/res/<locale>/reflection-prompts.ts` builder.
319
+ */
320
+ function buildReflectionPrompt(conversation, maxInputChars, toolErrorSignals = []) {
321
+ const locale = resolveLocale({ text: conversation });
322
+ return RESOURCES_BY_LOCALE[locale].reflectionPrompts.buildReflectionPrompt(conversation, maxInputChars, toolErrorSignals);
323
+ }
324
+ /**
325
+ * Assembles reflection fallback text from validated inputs for deterministic reflection capture
326
+ * policy.
327
+ *
328
+ * Locale-aware: optional `conversation` text seeds locale resolution; absent
329
+ * input defaults to the system default locale.
330
+ */
331
+ function buildReflectionFallbackText(conversation = "") {
332
+ const locale = resolveLocale({ text: conversation });
333
+ return RESOURCES_BY_LOCALE[locale].reflectionPrompts.buildReflectionFallbackText();
334
+ }
335
+ /** Implements generate reflection text as the local reflection capture policy operation. */
336
+ async function generateReflectionText(params) {
337
+ const promptInputs = prepareReflectionPromptInputs(params.conversation, params.maxInputChars);
338
+ if (promptInputs.length === 0) return {
339
+ text: buildReflectionFallbackText(params.conversation),
340
+ usedFallback: true,
341
+ promptHash: sha256Hex(""),
342
+ error: "empty reflection input"
343
+ };
344
+ const prompts = [];
345
+ const outputs = [];
346
+ /** Implements on retry log as the local reflection capture policy operation. */
347
+ const onRetryLog = (level, message) => {
348
+ if (level === "warn") diagnosticLog.warn("Reflection generation retry reported", { error: message }, {
349
+ event_name: "memory.daily_log_generator.reflection.generation.retry.reported",
350
+ file: "packages/memory/src/engine/reflection/daily-log-generator.ts",
351
+ function: "onRetryLog",
352
+ site_id: "reflection.daily-log-generator.onRetryLog.b52810f5af"
353
+ });
354
+ else diagnosticLog.info("Reflection generation retry reported", { error: message }, {
355
+ event_name: "memory.daily_log_generator.reflection.generation.retry.reported",
356
+ file: "packages/memory/src/engine/reflection/daily-log-generator.ts",
357
+ function: "onRetryLog",
358
+ site_id: "reflection.daily-log-generator.onRetryLog.977c99d43c"
359
+ });
360
+ };
361
+ for (const promptInput of promptInputs) {
362
+ const prompt = buildReflectionPrompt(promptInput, params.maxInputChars, params.toolErrorSignals ?? []);
363
+ prompts.push(prompt);
364
+ const promptHash = sha256Hex(prompts.join("\n\n--- chunk ---\n\n"));
365
+ const retryState = { count: 0 };
366
+ try {
367
+ const text = await runWithReflectionTransientRetryOnce({
368
+ scope: "reflection",
369
+ runner: "embedded",
370
+ retryState,
371
+ onLog: onRetryLog,
372
+ /** Executes the registered command after SDK argument validation and shared safety checks. */
373
+ execute: async () => params.generate(prompt, params.timeoutMs)
374
+ });
375
+ if (text && text.trim().length > 0) {
376
+ outputs.push(text.trim());
377
+ continue;
378
+ }
379
+ } catch (err) {
380
+ const errMsg = err instanceof Error ? `${err.name}: ${err.message}` : String(err);
381
+ diagnosticLog.warn("Reflection generation failed", { error: err }, {
382
+ event_name: "memory.daily_log_generator.reflection.generation.failed",
383
+ file: "packages/memory/src/engine/reflection/daily-log-generator.ts",
384
+ function: "generateReflectionText",
385
+ site_id: "reflection.daily-log-generator.generateReflectionText.c0c554e65c"
386
+ });
387
+ return {
388
+ text: buildReflectionFallbackText(params.conversation),
389
+ usedFallback: true,
390
+ promptHash,
391
+ error: errMsg
392
+ };
393
+ }
394
+ return {
395
+ text: buildReflectionFallbackText(params.conversation),
396
+ usedFallback: true,
397
+ promptHash,
398
+ error: "generate returned empty text"
399
+ };
400
+ }
401
+ return {
402
+ text: outputs.join("\n\n"),
403
+ usedFallback: false,
404
+ promptHash: sha256Hex(prompts.join("\n\n--- chunk ---\n\n"))
405
+ };
406
+ }
407
+ /** Validates daily log file before it enters the reflection capture policy boundary. */
408
+ async function ensureDailyLogFile(dailyPath, dateStr) {
409
+ const temporaryPath = `${dailyPath}.${randomUUID()}.tmp`;
410
+ try {
411
+ await memoryFileWrite(() => writeFile(temporaryPath, `# ${dateStr}\n\n`, {
412
+ encoding: "utf-8",
413
+ flag: "wx"
414
+ }));
415
+ try {
416
+ await link(temporaryPath, dailyPath);
417
+ } catch (error) {
418
+ if (!(error instanceof Error && "code" in error && error.code === "EEXIST")) throw error;
419
+ }
420
+ } finally {
421
+ await unlink(temporaryPath).catch((error) => {
422
+ if (!(error instanceof Error && "code" in error && error.code === "ENOENT")) throw error;
423
+ });
424
+ }
425
+ }
426
+ /**
427
+ * Persists reflection to filesystem through the single reflection capture policy write path.
428
+ */
429
+ async function writeReflectionToFilesystem(params) {
430
+ const date = new Date(params.nowTs);
431
+ const dateStr = date.toISOString().split("T")[0] ?? "";
432
+ const timeHms = date.toISOString().split("T")[1]?.split(".")[0] ?? "";
433
+ const timeCompact = timeHms.replace(/:/g, "");
434
+ const body = `${[
435
+ `# Reflection: ${dateStr} ${timeHms} UTC`,
436
+ "",
437
+ `- Session Key: ${params.sessionKey}`,
438
+ `- Session ID: ${params.sessionId}`,
439
+ `- Command: ${params.command}`,
440
+ `- Error Signatures: ${params.toolErrorSignals.length ? params.toolErrorSignals.map((s) => s.signatureHash).join(", ") : "(none)"}`,
441
+ ""
442
+ ].join("\n")}${params.reflectionText.trim()}\n`;
443
+ const outDir = join(params.workspaceDir, "memory", "reflections", dateStr);
444
+ checkMemoryOperation();
445
+ await mkdir(outDir, { recursive: true });
446
+ const agentToken = sanitizeFileToken(params.agentId, "agent");
447
+ const sessionToken = sanitizeFileToken(params.sessionId, "session");
448
+ for (let attempt = 0; attempt < 10; attempt++) {
449
+ const fileName = `${timeCompact}-${agentToken}-${sessionToken}${attempt === 0 ? "" : `-${Math.random().toString(36).slice(2, 8)}`}.md`;
450
+ const relPath = join("memory", "reflections", dateStr, fileName);
451
+ const absPath = join(params.workspaceDir, relPath);
452
+ try {
453
+ await memoryFileWrite(() => writeFile(absPath, body, {
454
+ encoding: "utf-8",
455
+ flag: "wx"
456
+ }));
457
+ const dailyPath = join(params.workspaceDir, "memory", `${dateStr}.md`);
458
+ await ensureDailyLogFile(dailyPath, dateStr);
459
+ await memoryFileWrite(() => appendFile(dailyPath, `- [${timeHms} UTC] Reflection generated: \`${relPath}\`\n`, "utf-8"));
460
+ return relPath;
461
+ } catch (err) {
462
+ if (err && typeof err === "object" && "code" in err && err.code === "EEXIST") continue;
463
+ throw err;
464
+ }
465
+ }
466
+ throw new Error(`Failed to allocate unique reflection file for ${dateStr} ${timeCompact}`);
467
+ }
468
+ //#endregion
469
+ export { generateReflectionText as a, shouldSkipReflectionMessage as c, ensureDailyLogFile as i, writeReflectionToFilesystem as l, buildReflectionFallbackText as n, readSessionConversationForReflection as o, buildReflectionPrompt as r, readSessionConversationWithResetFallback as s, REFLECTION_FALLBACK_MARKER as t, extractTextContent as u };
@@ -0,0 +1,73 @@
1
+ import { t as ReflectionErrorSignal } from "./error-signals-D8_3vYu4.js";
2
+ //#region src/engine/operations/session-summary-storage.d.ts
3
+ /** Extracts text content from raw inputs while tolerating partial data. */
4
+ declare function extractTextContent(content: unknown): string | null;
5
+ //#endregion
6
+ //#region src/engine/reflection/daily-log-generator.d.ts
7
+ declare const REFLECTION_FALLBACK_MARKER = "(fallback) Reflection generation failed; storing minimal pointer only.";
8
+ /**
9
+ * Tests whether should skip reflection message without mutating reflection capture policy state.
10
+ */
11
+ declare function shouldSkipReflectionMessage(role: string, text: string): boolean;
12
+ /**
13
+ * Reads session conversation for reflection and applies reflection capture policy fallback
14
+ * behavior for missing data.
15
+ */
16
+ declare function readSessionConversationForReflection(filePath: string, messageCount: number): Promise<string | null>;
17
+ /**
18
+ * Reads session conversation with reset fallback and applies reflection capture policy fallback
19
+ * behavior for missing data.
20
+ */
21
+ declare function readSessionConversationWithResetFallback(sessionFilePath: string, messageCount: number): Promise<string | null>;
22
+ /**
23
+ * Assembles reflection prompt from validated inputs for deterministic reflection capture policy.
24
+ *
25
+ * Locale-aware: resolves the conversation's locale and dispatches to the
26
+ * matching `i18n/res/<locale>/reflection-prompts.ts` builder.
27
+ */
28
+ declare function buildReflectionPrompt(conversation: string, maxInputChars: number, toolErrorSignals?: ReflectionErrorSignal[]): string;
29
+ /**
30
+ * Assembles reflection fallback text from validated inputs for deterministic reflection capture
31
+ * policy.
32
+ *
33
+ * Locale-aware: optional `conversation` text seeds locale resolution; absent
34
+ * input defaults to the system default locale.
35
+ */
36
+ declare function buildReflectionFallbackText(conversation?: string): string;
37
+ type ReflectionGenerator = (prompt: string, timeoutMs: number) => Promise<string | null>;
38
+ type ReflectionResult = {
39
+ text: string;
40
+ usedFallback: boolean;
41
+ promptHash: string;
42
+ error?: string;
43
+ };
44
+ /** Implements generate reflection text as the local reflection capture policy operation. */
45
+ declare function generateReflectionText(params: {
46
+ conversation: string;
47
+ maxInputChars: number;
48
+ timeoutMs: number;
49
+ toolErrorSignals?: ReflectionErrorSignal[];
50
+ generate: ReflectionGenerator;
51
+ logger?: {
52
+ info: (msg: string) => void;
53
+ warn: (msg: string) => void;
54
+ };
55
+ }): Promise<ReflectionResult>;
56
+ /** Validates daily log file before it enters the reflection capture policy boundary. */
57
+ declare function ensureDailyLogFile(dailyPath: string, dateStr: string): Promise<void>;
58
+ type WriteReflectionFsParams = {
59
+ workspaceDir: string;
60
+ reflectionText: string;
61
+ sessionKey: string;
62
+ sessionId: string;
63
+ agentId: string;
64
+ command: string;
65
+ toolErrorSignals: ReflectionErrorSignal[];
66
+ nowTs: number;
67
+ };
68
+ /**
69
+ * Persists reflection to filesystem through the single reflection capture policy write path.
70
+ */
71
+ declare function writeReflectionToFilesystem(params: WriteReflectionFsParams): Promise<string>;
72
+ //#endregion
73
+ export { buildReflectionFallbackText as a, generateReflectionText as c, shouldSkipReflectionMessage as d, writeReflectionToFilesystem as f, WriteReflectionFsParams as i, readSessionConversationForReflection as l, ReflectionGenerator as n, buildReflectionPrompt as o, extractTextContent as p, ReflectionResult as r, ensureDailyLogFile as s, REFLECTION_FALLBACK_MARKER as t, readSessionConversationWithResetFallback as u };
@@ -0,0 +1,8 @@
1
+ //#region src/engine/operations/daily-spend-estimator.d.ts
2
+ /**
3
+ * Reads estimated spend today and applies daily spend accounting fallback behavior for missing
4
+ * data.
5
+ */
6
+ declare function readEstimatedSpendToday(stateDir: string): Promise<number>;
7
+ //#endregion
8
+ export { readEstimatedSpendToday as t };
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ //#region src/store/install-manifest.d.ts
3
+ /** Manifest shape, named so the schema can be annotated without restating it. */
4
+ interface InstallManifestShape {
5
+ schemaVersion: 1;
6
+ dataFormatVersion: 1;
7
+ installationId: string;
8
+ createdAt: string;
9
+ dbPath: string;
10
+ }
11
+ /** Schema. No `lastSeenVersion` / `lastSeenAt`. */
12
+ declare const InstallManifestSchema: z.ZodType<InstallManifestShape, unknown>;
13
+ type InstallManifest = z.infer<typeof InstallManifestSchema>;
14
+ //#endregion
15
+ //#region src/store/data-bootstrap.d.ts
16
+ interface BootstrapResult {
17
+ dbPath: string;
18
+ manifest: InstallManifest;
19
+ manifestPath: string;
20
+ dataDir: string;
21
+ }
22
+ /**
23
+ * Branches:
24
+ * 1. manifest exists → read + validate.
25
+ * 2. manifest missing AND data dir contains user data → refuse.
26
+ * 3. manifest missing, dir empty → fresh install.
27
+ */
28
+ declare function bootstrapDataLayout(storePath: string): BootstrapResult;
29
+ //#endregion
30
+ export { bootstrapDataLayout as n, BootstrapResult as t };