abmind 0.0.1 → 0.1.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 (533) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/LICENSE +190 -0
  3. package/README.md +191 -0
  4. package/dist/cli/abmind-backfill.d.ts +3 -0
  5. package/dist/cli/abmind-backfill.d.ts.map +1 -0
  6. package/dist/cli/abmind-backfill.js +64 -0
  7. package/dist/cli/abmind-backfill.js.map +1 -0
  8. package/dist/cli/abmind-backup.d.ts +5 -0
  9. package/dist/cli/abmind-backup.d.ts.map +1 -0
  10. package/dist/cli/abmind-backup.js +44 -0
  11. package/dist/cli/abmind-backup.js.map +1 -0
  12. package/dist/cli/abmind-bundle.d.ts +7 -0
  13. package/dist/cli/abmind-bundle.d.ts.map +1 -0
  14. package/dist/cli/abmind-bundle.js +17 -0
  15. package/dist/cli/abmind-bundle.js.map +1 -0
  16. package/dist/cli/abmind-edit.d.ts +10 -0
  17. package/dist/cli/abmind-edit.d.ts.map +1 -0
  18. package/dist/cli/abmind-edit.js +160 -0
  19. package/dist/cli/abmind-edit.js.map +1 -0
  20. package/dist/cli/abmind-embed.d.ts +3 -0
  21. package/dist/cli/abmind-embed.d.ts.map +1 -0
  22. package/dist/cli/abmind-embed.js +83 -0
  23. package/dist/cli/abmind-embed.js.map +1 -0
  24. package/dist/cli/abmind-expand.d.ts +6 -0
  25. package/dist/cli/abmind-expand.d.ts.map +1 -0
  26. package/dist/cli/abmind-expand.js +100 -0
  27. package/dist/cli/abmind-expand.js.map +1 -0
  28. package/dist/cli/abmind-hook-doctor.d.ts +8 -0
  29. package/dist/cli/abmind-hook-doctor.d.ts.map +1 -0
  30. package/dist/cli/abmind-hook-doctor.js +73 -0
  31. package/dist/cli/abmind-hook-doctor.js.map +1 -0
  32. package/dist/cli/abmind-hook-recall.d.ts +16 -0
  33. package/dist/cli/abmind-hook-recall.d.ts.map +1 -0
  34. package/dist/cli/abmind-hook-recall.js +123 -0
  35. package/dist/cli/abmind-hook-recall.js.map +1 -0
  36. package/dist/cli/abmind-hook-store.d.ts +17 -0
  37. package/dist/cli/abmind-hook-store.d.ts.map +1 -0
  38. package/dist/cli/abmind-hook-store.js +115 -0
  39. package/dist/cli/abmind-hook-store.js.map +1 -0
  40. package/dist/cli/abmind-hook-wakeup.d.ts +12 -0
  41. package/dist/cli/abmind-hook-wakeup.d.ts.map +1 -0
  42. package/dist/cli/abmind-hook-wakeup.js +143 -0
  43. package/dist/cli/abmind-hook-wakeup.js.map +1 -0
  44. package/dist/cli/abmind-ingest.d.ts +7 -0
  45. package/dist/cli/abmind-ingest.d.ts.map +1 -0
  46. package/dist/cli/abmind-ingest.js +96 -0
  47. package/dist/cli/abmind-ingest.js.map +1 -0
  48. package/dist/cli/abmind-install.d.ts +10 -0
  49. package/dist/cli/abmind-install.d.ts.map +1 -0
  50. package/dist/cli/abmind-install.js +240 -0
  51. package/dist/cli/abmind-install.js.map +1 -0
  52. package/dist/cli/abmind-mcp.d.ts +3 -0
  53. package/dist/cli/abmind-mcp.d.ts.map +1 -0
  54. package/dist/cli/abmind-mcp.js +26 -0
  55. package/dist/cli/abmind-mcp.js.map +1 -0
  56. package/dist/cli/abmind-memory-stats.d.ts +3 -0
  57. package/dist/cli/abmind-memory-stats.d.ts.map +1 -0
  58. package/dist/cli/abmind-memory-stats.js +45 -0
  59. package/dist/cli/abmind-memory-stats.js.map +1 -0
  60. package/dist/cli/abmind-migrate-openclaw.d.ts +12 -0
  61. package/dist/cli/abmind-migrate-openclaw.d.ts.map +1 -0
  62. package/dist/cli/abmind-migrate-openclaw.js +247 -0
  63. package/dist/cli/abmind-migrate-openclaw.js.map +1 -0
  64. package/dist/cli/abmind-recall.d.ts +8 -0
  65. package/dist/cli/abmind-recall.d.ts.map +1 -0
  66. package/dist/cli/abmind-recall.js +94 -0
  67. package/dist/cli/abmind-recall.js.map +1 -0
  68. package/dist/cli/abmind-reset.d.ts +11 -0
  69. package/dist/cli/abmind-reset.d.ts.map +1 -0
  70. package/dist/cli/abmind-reset.js +143 -0
  71. package/dist/cli/abmind-reset.js.map +1 -0
  72. package/dist/cli/abmind-restore.d.ts +5 -0
  73. package/dist/cli/abmind-restore.d.ts.map +1 -0
  74. package/dist/cli/abmind-restore.js +64 -0
  75. package/dist/cli/abmind-restore.js.map +1 -0
  76. package/dist/cli/abmind-retro-extract.d.ts +15 -0
  77. package/dist/cli/abmind-retro-extract.d.ts.map +1 -0
  78. package/dist/cli/abmind-retro-extract.js +113 -0
  79. package/dist/cli/abmind-retro-extract.js.map +1 -0
  80. package/dist/cli/abmind-rollback.d.ts +8 -0
  81. package/dist/cli/abmind-rollback.d.ts.map +1 -0
  82. package/dist/cli/abmind-rollback.js +76 -0
  83. package/dist/cli/abmind-rollback.js.map +1 -0
  84. package/dist/cli/abmind-secrets.d.ts +12 -0
  85. package/dist/cli/abmind-secrets.d.ts.map +1 -0
  86. package/dist/cli/abmind-secrets.js +83 -0
  87. package/dist/cli/abmind-secrets.js.map +1 -0
  88. package/dist/cli/abmind-sleep-apply.d.ts +3 -0
  89. package/dist/cli/abmind-sleep-apply.d.ts.map +1 -0
  90. package/dist/cli/abmind-sleep-apply.js +50 -0
  91. package/dist/cli/abmind-sleep-apply.js.map +1 -0
  92. package/dist/cli/abmind-sleep-report.d.ts +3 -0
  93. package/dist/cli/abmind-sleep-report.d.ts.map +1 -0
  94. package/dist/cli/abmind-sleep-report.js +40 -0
  95. package/dist/cli/abmind-sleep-report.js.map +1 -0
  96. package/dist/cli/abmind-sleep-state.d.ts +3 -0
  97. package/dist/cli/abmind-sleep-state.d.ts.map +1 -0
  98. package/dist/cli/abmind-sleep-state.js +33 -0
  99. package/dist/cli/abmind-sleep-state.js.map +1 -0
  100. package/dist/cli/abmind-sleep.d.ts +14 -0
  101. package/dist/cli/abmind-sleep.d.ts.map +1 -0
  102. package/dist/cli/abmind-sleep.js +186 -0
  103. package/dist/cli/abmind-sleep.js.map +1 -0
  104. package/dist/cli/abmind-status-runtime.d.ts +9 -0
  105. package/dist/cli/abmind-status-runtime.d.ts.map +1 -0
  106. package/dist/cli/abmind-status-runtime.js +132 -0
  107. package/dist/cli/abmind-status-runtime.js.map +1 -0
  108. package/dist/cli/abmind-status.d.ts +3 -0
  109. package/dist/cli/abmind-status.d.ts.map +1 -0
  110. package/dist/cli/abmind-status.js +45 -0
  111. package/dist/cli/abmind-status.js.map +1 -0
  112. package/dist/cli/abmind-store.d.ts +54 -0
  113. package/dist/cli/abmind-store.d.ts.map +1 -0
  114. package/dist/cli/abmind-store.js +251 -0
  115. package/dist/cli/abmind-store.js.map +1 -0
  116. package/dist/cli/abmind-update.d.ts +11 -0
  117. package/dist/cli/abmind-update.d.ts.map +1 -0
  118. package/dist/cli/abmind-update.js +160 -0
  119. package/dist/cli/abmind-update.js.map +1 -0
  120. package/dist/cli/abmind-wakeup.d.ts +3 -0
  121. package/dist/cli/abmind-wakeup.d.ts.map +1 -0
  122. package/dist/cli/abmind-wakeup.js +36 -0
  123. package/dist/cli/abmind-wakeup.js.map +1 -0
  124. package/dist/cli/abmind.d.ts +10 -0
  125. package/dist/cli/abmind.d.ts.map +1 -0
  126. package/dist/cli/abmind.js +100 -0
  127. package/dist/cli/abmind.js.map +1 -0
  128. package/dist/src/abm-v2-vocab.d.ts +10 -0
  129. package/dist/src/abm-v2-vocab.d.ts.map +1 -0
  130. package/dist/src/abm-v2-vocab.js +66 -0
  131. package/dist/src/abm-v2-vocab.js.map +1 -0
  132. package/dist/src/adapters/openclaw.d.ts +66 -0
  133. package/dist/src/adapters/openclaw.d.ts.map +1 -0
  134. package/dist/src/adapters/openclaw.js +97 -0
  135. package/dist/src/adapters/openclaw.js.map +1 -0
  136. package/dist/src/backend-factory.d.ts +9 -0
  137. package/dist/src/backend-factory.d.ts.map +1 -0
  138. package/dist/src/backend-factory.js +23 -0
  139. package/dist/src/backend-factory.js.map +1 -0
  140. package/dist/src/backup.d.ts +19 -0
  141. package/dist/src/backup.d.ts.map +1 -0
  142. package/dist/src/backup.js +191 -0
  143. package/dist/src/backup.js.map +1 -0
  144. package/dist/src/brain-patterns.d.ts +20 -0
  145. package/dist/src/brain-patterns.d.ts.map +1 -0
  146. package/dist/src/brain-patterns.js +72 -0
  147. package/dist/src/brain-patterns.js.map +1 -0
  148. package/dist/src/cli-entry.d.ts +10 -0
  149. package/dist/src/cli-entry.d.ts.map +1 -0
  150. package/dist/src/cli-entry.js +29 -0
  151. package/dist/src/cli-entry.js.map +1 -0
  152. package/dist/src/cli-flags.d.ts +29 -0
  153. package/dist/src/cli-flags.d.ts.map +1 -0
  154. package/dist/src/cli-flags.js +72 -0
  155. package/dist/src/cli-flags.js.map +1 -0
  156. package/dist/src/cli-runner-raw.d.ts +21 -0
  157. package/dist/src/cli-runner-raw.d.ts.map +1 -0
  158. package/dist/src/cli-runner-raw.js +41 -0
  159. package/dist/src/cli-runner-raw.js.map +1 -0
  160. package/dist/src/cli-runner.d.ts +26 -0
  161. package/dist/src/cli-runner.d.ts.map +1 -0
  162. package/dist/src/cli-runner.js +51 -0
  163. package/dist/src/cli-runner.js.map +1 -0
  164. package/dist/src/consolidation-search.d.ts +17 -0
  165. package/dist/src/consolidation-search.d.ts.map +1 -0
  166. package/dist/src/consolidation-search.js +83 -0
  167. package/dist/src/consolidation-search.js.map +1 -0
  168. package/dist/src/context-engine.d.ts +89 -0
  169. package/dist/src/context-engine.d.ts.map +1 -0
  170. package/dist/src/context-engine.js +216 -0
  171. package/dist/src/context-engine.js.map +1 -0
  172. package/dist/src/context-tier-renderer.d.ts +79 -0
  173. package/dist/src/context-tier-renderer.d.ts.map +1 -0
  174. package/dist/src/context-tier-renderer.js +223 -0
  175. package/dist/src/context-tier-renderer.js.map +1 -0
  176. package/dist/src/contradiction-checker.d.ts +16 -0
  177. package/dist/src/contradiction-checker.d.ts.map +1 -0
  178. package/dist/src/contradiction-checker.js +40 -0
  179. package/dist/src/contradiction-checker.js.map +1 -0
  180. package/dist/src/crypto.d.ts +15 -0
  181. package/dist/src/crypto.d.ts.map +1 -0
  182. package/dist/src/crypto.js +86 -0
  183. package/dist/src/crypto.js.map +1 -0
  184. package/dist/src/deploy-lib/cleanup.d.ts +38 -0
  185. package/dist/src/deploy-lib/cleanup.d.ts.map +1 -0
  186. package/dist/src/deploy-lib/cleanup.js +71 -0
  187. package/dist/src/deploy-lib/cleanup.js.map +1 -0
  188. package/dist/src/deploy-lib/index.d.ts +20 -0
  189. package/dist/src/deploy-lib/index.d.ts.map +1 -0
  190. package/dist/src/deploy-lib/index.js +20 -0
  191. package/dist/src/deploy-lib/index.js.map +1 -0
  192. package/dist/src/deploy-lib/lock.d.ts +37 -0
  193. package/dist/src/deploy-lib/lock.d.ts.map +1 -0
  194. package/dist/src/deploy-lib/lock.js +107 -0
  195. package/dist/src/deploy-lib/lock.js.map +1 -0
  196. package/dist/src/deploy-lib/manifest.d.ts +42 -0
  197. package/dist/src/deploy-lib/manifest.d.ts.map +1 -0
  198. package/dist/src/deploy-lib/manifest.js +38 -0
  199. package/dist/src/deploy-lib/manifest.js.map +1 -0
  200. package/dist/src/deploy-lib/paths.d.ts +29 -0
  201. package/dist/src/deploy-lib/paths.d.ts.map +1 -0
  202. package/dist/src/deploy-lib/paths.js +40 -0
  203. package/dist/src/deploy-lib/paths.js.map +1 -0
  204. package/dist/src/deploy-lib/releases.d.ts +52 -0
  205. package/dist/src/deploy-lib/releases.d.ts.map +1 -0
  206. package/dist/src/deploy-lib/releases.js +119 -0
  207. package/dist/src/deploy-lib/releases.js.map +1 -0
  208. package/dist/src/deploy-lib/safe-copy.d.ts +16 -0
  209. package/dist/src/deploy-lib/safe-copy.d.ts.map +1 -0
  210. package/dist/src/deploy-lib/safe-copy.js +32 -0
  211. package/dist/src/deploy-lib/safe-copy.js.map +1 -0
  212. package/dist/src/embedding-health.d.ts +12 -0
  213. package/dist/src/embedding-health.d.ts.map +1 -0
  214. package/dist/src/embedding-health.js +18 -0
  215. package/dist/src/embedding-health.js.map +1 -0
  216. package/dist/src/embedding-provider.d.ts +48 -0
  217. package/dist/src/embedding-provider.d.ts.map +1 -0
  218. package/dist/src/embedding-provider.js +145 -0
  219. package/dist/src/embedding-provider.js.map +1 -0
  220. package/dist/src/embedding-quantize.d.ts +11 -0
  221. package/dist/src/embedding-quantize.d.ts.map +1 -0
  222. package/dist/src/embedding-quantize.js +38 -0
  223. package/dist/src/embedding-quantize.js.map +1 -0
  224. package/dist/src/emotion-arc.d.ts +17 -0
  225. package/dist/src/emotion-arc.d.ts.map +1 -0
  226. package/dist/src/emotion-arc.js +62 -0
  227. package/dist/src/emotion-arc.js.map +1 -0
  228. package/dist/src/emotion-tagger.d.ts +8 -0
  229. package/dist/src/emotion-tagger.d.ts.map +1 -0
  230. package/dist/src/emotion-tagger.js +45 -0
  231. package/dist/src/emotion-tagger.js.map +1 -0
  232. package/dist/src/emotion-utils.d.ts +13 -0
  233. package/dist/src/emotion-utils.d.ts.map +1 -0
  234. package/dist/src/emotion-utils.js +76 -0
  235. package/dist/src/emotion-utils.js.map +1 -0
  236. package/dist/src/entity-graph.d.ts +33 -0
  237. package/dist/src/entity-graph.d.ts.map +1 -0
  238. package/dist/src/entity-graph.js +42 -0
  239. package/dist/src/entity-graph.js.map +1 -0
  240. package/dist/src/env-schema.d.ts +46 -0
  241. package/dist/src/env-schema.d.ts.map +1 -0
  242. package/dist/src/env-schema.js +93 -0
  243. package/dist/src/env-schema.js.map +1 -0
  244. package/dist/src/hook-helpers.d.ts +16 -0
  245. package/dist/src/hook-helpers.d.ts.map +1 -0
  246. package/dist/src/hook-helpers.js +64 -0
  247. package/dist/src/hook-helpers.js.map +1 -0
  248. package/dist/src/imemory-system.d.ts +138 -0
  249. package/dist/src/imemory-system.d.ts.map +1 -0
  250. package/dist/src/imemory-system.js +40 -0
  251. package/dist/src/imemory-system.js.map +1 -0
  252. package/dist/src/importance-flagger.d.ts +8 -0
  253. package/dist/src/importance-flagger.d.ts.map +1 -0
  254. package/dist/src/importance-flagger.js +24 -0
  255. package/dist/src/importance-flagger.js.map +1 -0
  256. package/dist/src/index.d.ts +79 -0
  257. package/dist/src/index.d.ts.map +1 -0
  258. package/dist/src/index.js +79 -0
  259. package/dist/src/index.js.map +1 -0
  260. package/dist/src/ingest-pipeline.d.ts +32 -0
  261. package/dist/src/ingest-pipeline.d.ts.map +1 -0
  262. package/dist/src/ingest-pipeline.js +58 -0
  263. package/dist/src/ingest-pipeline.js.map +1 -0
  264. package/dist/src/injection-scanner.d.ts +16 -0
  265. package/dist/src/injection-scanner.d.ts.map +1 -0
  266. package/dist/src/injection-scanner.js +182 -0
  267. package/dist/src/injection-scanner.js.map +1 -0
  268. package/dist/src/local-time.d.ts +12 -0
  269. package/dist/src/local-time.d.ts.map +1 -0
  270. package/dist/src/local-time.js +23 -0
  271. package/dist/src/local-time.js.map +1 -0
  272. package/dist/src/maintenance-service.d.ts +46 -0
  273. package/dist/src/maintenance-service.d.ts.map +1 -0
  274. package/dist/src/maintenance-service.js +280 -0
  275. package/dist/src/maintenance-service.js.map +1 -0
  276. package/dist/src/mcp-server.d.ts +6 -0
  277. package/dist/src/mcp-server.d.ts.map +1 -0
  278. package/dist/src/mcp-server.js +50 -0
  279. package/dist/src/mcp-server.js.map +1 -0
  280. package/dist/src/media-sanitizer.d.ts +11 -0
  281. package/dist/src/media-sanitizer.d.ts.map +1 -0
  282. package/dist/src/media-sanitizer.js +56 -0
  283. package/dist/src/media-sanitizer.js.map +1 -0
  284. package/dist/src/mem-config-env.d.ts +18 -0
  285. package/dist/src/mem-config-env.d.ts.map +1 -0
  286. package/dist/src/mem-config-env.js +43 -0
  287. package/dist/src/mem-config-env.js.map +1 -0
  288. package/dist/src/mem-env.d.ts +5 -0
  289. package/dist/src/mem-env.d.ts.map +1 -0
  290. package/dist/src/mem-env.js +19 -0
  291. package/dist/src/mem-env.js.map +1 -0
  292. package/dist/src/mem-logger.d.ts +20 -0
  293. package/dist/src/mem-logger.d.ts.map +1 -0
  294. package/dist/src/mem-logger.js +24 -0
  295. package/dist/src/mem-logger.js.map +1 -0
  296. package/dist/src/mem-paths.d.ts +20 -0
  297. package/dist/src/mem-paths.d.ts.map +1 -0
  298. package/dist/src/mem-paths.js +43 -0
  299. package/dist/src/mem-paths.js.map +1 -0
  300. package/dist/src/mem-types.d.ts +157 -0
  301. package/dist/src/mem-types.d.ts.map +1 -0
  302. package/dist/src/mem-types.js +2 -0
  303. package/dist/src/mem-types.js.map +1 -0
  304. package/dist/src/memory-backend.d.ts +65 -0
  305. package/dist/src/memory-backend.d.ts.map +1 -0
  306. package/dist/src/memory-backend.js +43 -0
  307. package/dist/src/memory-backend.js.map +1 -0
  308. package/dist/src/memory-compressor.d.ts +17 -0
  309. package/dist/src/memory-compressor.d.ts.map +1 -0
  310. package/dist/src/memory-compressor.js +147 -0
  311. package/dist/src/memory-compressor.js.map +1 -0
  312. package/dist/src/memory-config.d.ts +30 -0
  313. package/dist/src/memory-config.d.ts.map +1 -0
  314. package/dist/src/memory-config.js +62 -0
  315. package/dist/src/memory-config.js.map +1 -0
  316. package/dist/src/memory-db.d.ts +7 -0
  317. package/dist/src/memory-db.d.ts.map +1 -0
  318. package/dist/src/memory-db.js +173 -0
  319. package/dist/src/memory-db.js.map +1 -0
  320. package/dist/src/memory-editor.d.ts +32 -0
  321. package/dist/src/memory-editor.d.ts.map +1 -0
  322. package/dist/src/memory-editor.js +339 -0
  323. package/dist/src/memory-editor.js.map +1 -0
  324. package/dist/src/memory-index.d.ts +91 -0
  325. package/dist/src/memory-index.d.ts.map +1 -0
  326. package/dist/src/memory-index.js +310 -0
  327. package/dist/src/memory-index.js.map +1 -0
  328. package/dist/src/memory-ipc-client.d.ts +22 -0
  329. package/dist/src/memory-ipc-client.d.ts.map +1 -0
  330. package/dist/src/memory-ipc-client.js +75 -0
  331. package/dist/src/memory-ipc-client.js.map +1 -0
  332. package/dist/src/memory-ipc-server.d.ts +17 -0
  333. package/dist/src/memory-ipc-server.d.ts.map +1 -0
  334. package/dist/src/memory-ipc-server.js +86 -0
  335. package/dist/src/memory-ipc-server.js.map +1 -0
  336. package/dist/src/memory-manager.d.ts +155 -0
  337. package/dist/src/memory-manager.d.ts.map +1 -0
  338. package/dist/src/memory-manager.js +463 -0
  339. package/dist/src/memory-manager.js.map +1 -0
  340. package/dist/src/memory-renderer.d.ts +15 -0
  341. package/dist/src/memory-renderer.d.ts.map +1 -0
  342. package/dist/src/memory-renderer.js +126 -0
  343. package/dist/src/memory-renderer.js.map +1 -0
  344. package/dist/src/message-store.d.ts +42 -0
  345. package/dist/src/message-store.d.ts.map +1 -0
  346. package/dist/src/message-store.js +145 -0
  347. package/dist/src/message-store.js.map +1 -0
  348. package/dist/src/mmr.d.ts +17 -0
  349. package/dist/src/mmr.d.ts.map +1 -0
  350. package/dist/src/mmr.js +48 -0
  351. package/dist/src/mmr.js.map +1 -0
  352. package/dist/src/ollama-embed.d.ts +46 -0
  353. package/dist/src/ollama-embed.d.ts.map +1 -0
  354. package/dist/src/ollama-embed.js +139 -0
  355. package/dist/src/ollama-embed.js.map +1 -0
  356. package/dist/src/openclaw-plugin/engine.d.ts +87 -0
  357. package/dist/src/openclaw-plugin/engine.d.ts.map +1 -0
  358. package/dist/src/openclaw-plugin/engine.js +121 -0
  359. package/dist/src/openclaw-plugin/engine.js.map +1 -0
  360. package/dist/src/openclaw-plugin/hooks.d.ts +41 -0
  361. package/dist/src/openclaw-plugin/hooks.d.ts.map +1 -0
  362. package/dist/src/openclaw-plugin/hooks.js +155 -0
  363. package/dist/src/openclaw-plugin/hooks.js.map +1 -0
  364. package/dist/src/openclaw-plugin/index.d.ts +20 -0
  365. package/dist/src/openclaw-plugin/index.d.ts.map +1 -0
  366. package/dist/src/openclaw-plugin/index.js +151 -0
  367. package/dist/src/openclaw-plugin/index.js.map +1 -0
  368. package/dist/src/openclaw-plugin/message-adapter.d.ts +13 -0
  369. package/dist/src/openclaw-plugin/message-adapter.d.ts.map +1 -0
  370. package/dist/src/openclaw-plugin/message-adapter.js +49 -0
  371. package/dist/src/openclaw-plugin/message-adapter.js.map +1 -0
  372. package/dist/src/openclaw-plugin/prompt-builder.d.ts +17 -0
  373. package/dist/src/openclaw-plugin/prompt-builder.d.ts.map +1 -0
  374. package/dist/src/openclaw-plugin/prompt-builder.js +22 -0
  375. package/dist/src/openclaw-plugin/prompt-builder.js.map +1 -0
  376. package/dist/src/openclaw-plugin/public-artifacts.d.ts +20 -0
  377. package/dist/src/openclaw-plugin/public-artifacts.d.ts.map +1 -0
  378. package/dist/src/openclaw-plugin/public-artifacts.js +59 -0
  379. package/dist/src/openclaw-plugin/public-artifacts.js.map +1 -0
  380. package/dist/src/openclaw-plugin/runtime-adapter.d.ts +26 -0
  381. package/dist/src/openclaw-plugin/runtime-adapter.d.ts.map +1 -0
  382. package/dist/src/openclaw-plugin/runtime-adapter.js +161 -0
  383. package/dist/src/openclaw-plugin/runtime-adapter.js.map +1 -0
  384. package/dist/src/openclaw-plugin/session-mapper.d.ts +11 -0
  385. package/dist/src/openclaw-plugin/session-mapper.d.ts.map +1 -0
  386. package/dist/src/openclaw-plugin/session-mapper.js +17 -0
  387. package/dist/src/openclaw-plugin/session-mapper.js.map +1 -0
  388. package/dist/src/openclaw-plugin/tools.d.ts +32 -0
  389. package/dist/src/openclaw-plugin/tools.d.ts.map +1 -0
  390. package/dist/src/openclaw-plugin/tools.js +131 -0
  391. package/dist/src/openclaw-plugin/tools.js.map +1 -0
  392. package/dist/src/openclaw-plugin/types.d.ts +35 -0
  393. package/dist/src/openclaw-plugin/types.d.ts.map +1 -0
  394. package/dist/src/openclaw-plugin/types.js +2 -0
  395. package/dist/src/openclaw-plugin/types.js.map +1 -0
  396. package/dist/src/query-tokenizer.d.ts +33 -0
  397. package/dist/src/query-tokenizer.d.ts.map +1 -0
  398. package/dist/src/query-tokenizer.js +84 -0
  399. package/dist/src/query-tokenizer.js.map +1 -0
  400. package/dist/src/recall-benchmark.d.ts +13 -0
  401. package/dist/src/recall-benchmark.d.ts.map +1 -0
  402. package/dist/src/recall-benchmark.js +256 -0
  403. package/dist/src/recall-benchmark.js.map +1 -0
  404. package/dist/src/recall-engine.d.ts +81 -0
  405. package/dist/src/recall-engine.d.ts.map +1 -0
  406. package/dist/src/recall-engine.js +387 -0
  407. package/dist/src/recall-engine.js.map +1 -0
  408. package/dist/src/redact-secrets.d.ts +20 -0
  409. package/dist/src/redact-secrets.d.ts.map +1 -0
  410. package/dist/src/redact-secrets.js +42 -0
  411. package/dist/src/redact-secrets.js.map +1 -0
  412. package/dist/src/runtime-store.d.ts +47 -0
  413. package/dist/src/runtime-store.d.ts.map +1 -0
  414. package/dist/src/runtime-store.js +78 -0
  415. package/dist/src/runtime-store.js.map +1 -0
  416. package/dist/src/session-context.d.ts +10 -0
  417. package/dist/src/session-context.d.ts.map +1 -0
  418. package/dist/src/session-context.js +83 -0
  419. package/dist/src/session-context.js.map +1 -0
  420. package/dist/src/session-memory.d.ts +8 -0
  421. package/dist/src/session-memory.d.ts.map +1 -0
  422. package/dist/src/session-memory.js +45 -0
  423. package/dist/src/session-memory.js.map +1 -0
  424. package/dist/src/signature-generator.d.ts +15 -0
  425. package/dist/src/signature-generator.d.ts.map +1 -0
  426. package/dist/src/signature-generator.js +78 -0
  427. package/dist/src/signature-generator.js.map +1 -0
  428. package/dist/src/sleep/basic.d.ts +48 -0
  429. package/dist/src/sleep/basic.d.ts.map +1 -0
  430. package/dist/src/sleep/basic.js +147 -0
  431. package/dist/src/sleep/basic.js.map +1 -0
  432. package/dist/src/sleep/levels.d.ts +20 -0
  433. package/dist/src/sleep/levels.d.ts.map +1 -0
  434. package/dist/src/sleep/levels.js +11 -0
  435. package/dist/src/sleep/levels.js.map +1 -0
  436. package/dist/src/sleep/native.d.ts +41 -0
  437. package/dist/src/sleep/native.d.ts.map +1 -0
  438. package/dist/src/sleep/native.js +112 -0
  439. package/dist/src/sleep/native.js.map +1 -0
  440. package/dist/src/sleep/orchestrator.d.ts +64 -0
  441. package/dist/src/sleep/orchestrator.d.ts.map +1 -0
  442. package/dist/src/sleep/orchestrator.js +960 -0
  443. package/dist/src/sleep/orchestrator.js.map +1 -0
  444. package/dist/src/sleep/runtime.d.ts +15 -0
  445. package/dist/src/sleep/runtime.d.ts.map +1 -0
  446. package/dist/src/sleep/runtime.js +2 -0
  447. package/dist/src/sleep/runtime.js.map +1 -0
  448. package/dist/src/sleep/sleep-daily-summary.d.ts +64 -0
  449. package/dist/src/sleep/sleep-daily-summary.d.ts.map +1 -0
  450. package/dist/src/sleep/sleep-daily-summary.js +273 -0
  451. package/dist/src/sleep/sleep-daily-summary.js.map +1 -0
  452. package/dist/src/sleep/sleep-extract-daily.d.ts +12 -0
  453. package/dist/src/sleep/sleep-extract-daily.d.ts.map +1 -0
  454. package/dist/src/sleep/sleep-extract-daily.js +55 -0
  455. package/dist/src/sleep/sleep-extract-daily.js.map +1 -0
  456. package/dist/src/sleep/sleep-prompt-loader.d.ts +27 -0
  457. package/dist/src/sleep/sleep-prompt-loader.d.ts.map +1 -0
  458. package/dist/src/sleep/sleep-prompt-loader.js +116 -0
  459. package/dist/src/sleep/sleep-prompt-loader.js.map +1 -0
  460. package/dist/src/sleep/test-harness.d.ts +67 -0
  461. package/dist/src/sleep/test-harness.d.ts.map +1 -0
  462. package/dist/src/sleep/test-harness.js +121 -0
  463. package/dist/src/sleep/test-harness.js.map +1 -0
  464. package/dist/src/sleep/trigger.d.ts +3 -0
  465. package/dist/src/sleep/trigger.d.ts.map +1 -0
  466. package/dist/src/sleep/trigger.js +66 -0
  467. package/dist/src/sleep/trigger.js.map +1 -0
  468. package/dist/src/sleep-data-access.d.ts +54 -0
  469. package/dist/src/sleep-data-access.d.ts.map +1 -0
  470. package/dist/src/sleep-data-access.js +176 -0
  471. package/dist/src/sleep-data-access.js.map +1 -0
  472. package/dist/src/sleep-pipeline.d.ts +9 -0
  473. package/dist/src/sleep-pipeline.d.ts.map +1 -0
  474. package/dist/src/sleep-pipeline.js +8 -0
  475. package/dist/src/sleep-pipeline.js.map +1 -0
  476. package/dist/src/sleep-state-gatherer.d.ts +74 -0
  477. package/dist/src/sleep-state-gatherer.d.ts.map +1 -0
  478. package/dist/src/sleep-state-gatherer.js +275 -0
  479. package/dist/src/sleep-state-gatherer.js.map +1 -0
  480. package/dist/src/sqlite-backend.d.ts +23 -0
  481. package/dist/src/sqlite-backend.d.ts.map +1 -0
  482. package/dist/src/sqlite-backend.js +48 -0
  483. package/dist/src/sqlite-backend.js.map +1 -0
  484. package/dist/src/test-helpers.d.ts +3 -0
  485. package/dist/src/test-helpers.d.ts.map +1 -0
  486. package/dist/src/test-helpers.js +5 -0
  487. package/dist/src/test-helpers.js.map +1 -0
  488. package/dist/src/tier-llm-refinement.d.ts +35 -0
  489. package/dist/src/tier-llm-refinement.d.ts.map +1 -0
  490. package/dist/src/tier-llm-refinement.js +131 -0
  491. package/dist/src/tier-llm-refinement.js.map +1 -0
  492. package/dist/src/timeline-builder.d.ts +45 -0
  493. package/dist/src/timeline-builder.d.ts.map +1 -0
  494. package/dist/src/timeline-builder.js +147 -0
  495. package/dist/src/timeline-builder.js.map +1 -0
  496. package/dist/src/trigram-search.d.ts +28 -0
  497. package/dist/src/trigram-search.d.ts.map +1 -0
  498. package/dist/src/trigram-search.js +192 -0
  499. package/dist/src/trigram-search.js.map +1 -0
  500. package/dist/src/turn-classifier.d.ts +29 -0
  501. package/dist/src/turn-classifier.d.ts.map +1 -0
  502. package/dist/src/turn-classifier.js +186 -0
  503. package/dist/src/turn-classifier.js.map +1 -0
  504. package/dist/src/user-utils.d.ts +6 -0
  505. package/dist/src/user-utils.d.ts.map +1 -0
  506. package/dist/src/user-utils.js +27 -0
  507. package/dist/src/user-utils.js.map +1 -0
  508. package/dist/src/wake-up-builder.d.ts +12 -0
  509. package/dist/src/wake-up-builder.d.ts.map +1 -0
  510. package/dist/src/wake-up-builder.js +45 -0
  511. package/dist/src/wake-up-builder.js.map +1 -0
  512. package/dist/src/wake-up-renderer.d.ts +29 -0
  513. package/dist/src/wake-up-renderer.d.ts.map +1 -0
  514. package/dist/src/wake-up-renderer.js +182 -0
  515. package/dist/src/wake-up-renderer.js.map +1 -0
  516. package/openclaw.plugin.json +72 -0
  517. package/package.json +92 -5
  518. package/prompts/sleep/01-gc-noise.md +28 -0
  519. package/prompts/sleep/02-daily-summary.md +3 -0
  520. package/prompts/sleep/03-extract-from-daily.md +3 -0
  521. package/prompts/sleep/04-retrospective.md +30 -0
  522. package/prompts/sleep/06-feedback.md +17 -0
  523. package/prompts/sleep/07-topic-assignment.md +23 -0
  524. package/prompts/sleep/08-core-promotion.md +26 -0
  525. package/prompts/sleep/09-merge.md +19 -0
  526. package/prompts/sleep/10-translation.md +17 -0
  527. package/prompts/sleep/11-skill-review.md +12 -0
  528. package/prompts/sleep/12-core-knowledge.md +14 -0
  529. package/prompts/sleep/13-consolidation.md +11 -0
  530. package/prompts/sleep/14-emotion-context.md +17 -0
  531. package/prompts/sleep/15-contradiction-and-graph.md +48 -0
  532. package/prompts/sleep/16-rem-synthesis.md +31 -0
  533. package/prompts/sleep/basic.md +12 -0
@@ -0,0 +1,35 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { ContextEngine as AbmindCtxEngine } from "../context-engine.js";
3
+ import type { MemoryManager } from "../memory-manager.js";
4
+ import type { MemoryConfig } from "../memory-config.js";
5
+ export interface AbmindPluginConfig {
6
+ abmlVersion: string;
7
+ compactionThreshold: number;
8
+ sleepEnabled: boolean;
9
+ stateDir?: string;
10
+ /** Inject top-relevant memories into context before every agent turn. Default false. */
11
+ autoRecall: boolean;
12
+ /** Capture user messages for later memory extraction. Default false. */
13
+ autoCapture: boolean;
14
+ /** Max memories injected per turn when autoRecall is enabled. Default 3, range 1-10. */
15
+ autoRecallMaxResults: number;
16
+ /** Minimum relevance score for a memory to be injected. Default 0.3. */
17
+ autoRecallMinScore: number;
18
+ }
19
+ export type CompleteFn = (system: string, user: string, maxTokens: number) => Promise<string>;
20
+ /**
21
+ * All per-instance state for one abmind plugin registration.
22
+ * Stored in runtime-store.ts under the plugin's id so multiple instances
23
+ * coexist without shared mutable state.
24
+ */
25
+ export interface AbmindPluginRuntime {
26
+ readonly pluginId: string;
27
+ readonly contextEngine: AbmindCtxEngine;
28
+ readonly memory: MemoryManager;
29
+ readonly db: Database.Database;
30
+ readonly completeFn: CompleteFn;
31
+ readonly config: AbmindPluginConfig;
32
+ readonly memoryConfig: MemoryConfig;
33
+ readonly ready?: Promise<void>;
34
+ }
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/openclaw-plugin/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,UAAU,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wEAAwE;IACxE,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9F;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/openclaw-plugin/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * query-tokenizer — extract English-looking tokens from a raw user prompt.
3
+ *
4
+ * Used by abmind-hook-recall to bridge the "raw user input" → "translated
5
+ * English query" gap. The recall pipeline's Sf stage runs three parallel
6
+ * queries (porter FTS on content_en, trigram on content_en, trigram on
7
+ * content_original). The hook feeds:
8
+ * - `translated` ← extractEnglishTokens(prompt) (Sf EN path + Se embedding)
9
+ * - `original` ← raw prompt (Sf original-trigram path)
10
+ *
11
+ * Heuristic, deliberately simple. No language detection, no Unicode magic,
12
+ * no Hungarian-specific rules. The goal is to surface tokens that are
13
+ * likely in content_en — empirically: proper nouns + English-cognate
14
+ * technical terms. Everything else goes through `original`.
15
+ *
16
+ * See abproject/docs/plans/abmind-hook-recall-translation.md for the
17
+ * design rationale.
18
+ */
19
+ /**
20
+ * Extract tokens from a prompt that are likely to appear in English-indexed
21
+ * memory content. Returns an empty array if nothing qualifies — callers
22
+ * should fall back to raw-prompt behavior in that case.
23
+ *
24
+ * Rules:
25
+ * - Split on whitespace + punctuation
26
+ * - Keep ASCII-only tokens (rejects Hungarian-specific chars: áéíóöőúüű)
27
+ * - Keep tokens of length ≥ 3
28
+ * - Proper nouns (capitalized, matches PROPER_NOUN_RE) always kept, case preserved
29
+ * - Non-proper-noun tokens lowercased then stopword-filtered
30
+ * - Deduplicated, order preserved from first occurrence
31
+ */
32
+ export declare function extractEnglishTokens(prompt: string): string[];
33
+ //# sourceMappingURL=query-tokenizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tokenizer.d.ts","sourceRoot":"","sources":["../../src/query-tokenizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAuBH;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAkC7D"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * query-tokenizer — extract English-looking tokens from a raw user prompt.
3
+ *
4
+ * Used by abmind-hook-recall to bridge the "raw user input" → "translated
5
+ * English query" gap. The recall pipeline's Sf stage runs three parallel
6
+ * queries (porter FTS on content_en, trigram on content_en, trigram on
7
+ * content_original). The hook feeds:
8
+ * - `translated` ← extractEnglishTokens(prompt) (Sf EN path + Se embedding)
9
+ * - `original` ← raw prompt (Sf original-trigram path)
10
+ *
11
+ * Heuristic, deliberately simple. No language detection, no Unicode magic,
12
+ * no Hungarian-specific rules. The goal is to surface tokens that are
13
+ * likely in content_en — empirically: proper nouns + English-cognate
14
+ * technical terms. Everything else goes through `original`.
15
+ *
16
+ * See abproject/docs/plans/abmind-hook-recall-translation.md for the
17
+ * design rationale.
18
+ */
19
+ const STOPWORDS = new Set([
20
+ // Articles, conjunctions, common prepositions
21
+ "the", "and", "for", "but", "nor", "yet", "with", "from", "into", "onto",
22
+ "about", "above", "below", "under", "over", "between", "through", "during",
23
+ // Common verbs that rarely disambiguate recall
24
+ "are", "was", "were", "been", "being", "have", "has", "had", "does", "did",
25
+ "can", "could", "would", "should", "will", "shall", "may", "might", "must",
26
+ // Pronouns
27
+ "this", "that", "these", "those", "there", "here", "what", "which",
28
+ "who", "whom", "whose", "when", "where", "why", "how",
29
+ "you", "your", "yours", "they", "them", "their", "theirs",
30
+ // Misc fillers
31
+ "just", "only", "also", "even", "than", "then", "too", "very",
32
+ "some", "any", "all", "none", "few", "many", "much", "most", "more", "less",
33
+ "like", "such", "other", "another", "each", "every", "both", "either",
34
+ ]);
35
+ const PROPER_NOUN_RE = /^[A-Z][a-zA-Z0-9]+$/;
36
+ const ASCII_TOKEN_RE = /^[a-zA-Z][a-zA-Z0-9_-]*$/;
37
+ const MIN_LEN = 3;
38
+ /**
39
+ * Extract tokens from a prompt that are likely to appear in English-indexed
40
+ * memory content. Returns an empty array if nothing qualifies — callers
41
+ * should fall back to raw-prompt behavior in that case.
42
+ *
43
+ * Rules:
44
+ * - Split on whitespace + punctuation
45
+ * - Keep ASCII-only tokens (rejects Hungarian-specific chars: áéíóöőúüű)
46
+ * - Keep tokens of length ≥ 3
47
+ * - Proper nouns (capitalized, matches PROPER_NOUN_RE) always kept, case preserved
48
+ * - Non-proper-noun tokens lowercased then stopword-filtered
49
+ * - Deduplicated, order preserved from first occurrence
50
+ */
51
+ export function extractEnglishTokens(prompt) {
52
+ if (!prompt || typeof prompt !== "string")
53
+ return [];
54
+ // Split on anything that isn't an ASCII word char or Unicode letter.
55
+ // We want to let the regex see diacritics so we can then reject them
56
+ // in the ASCII test — splitting on them would merge Hungarian words.
57
+ const rawTokens = prompt.split(/[^\p{L}\p{N}_-]+/u).filter(t => t.length > 0);
58
+ const seen = new Set();
59
+ const out = [];
60
+ for (const raw of rawTokens) {
61
+ if (raw.length < MIN_LEN)
62
+ continue;
63
+ // Proper noun path — case sensitive check, kept as-is.
64
+ if (PROPER_NOUN_RE.test(raw)) {
65
+ if (!seen.has(raw)) {
66
+ seen.add(raw);
67
+ out.push(raw);
68
+ }
69
+ continue;
70
+ }
71
+ // Regular token path — must be pure ASCII letters/digits.
72
+ if (!ASCII_TOKEN_RE.test(raw))
73
+ continue;
74
+ const lower = raw.toLowerCase();
75
+ if (STOPWORDS.has(lower))
76
+ continue;
77
+ if (!seen.has(lower)) {
78
+ seen.add(lower);
79
+ out.push(lower);
80
+ }
81
+ }
82
+ return out;
83
+ }
84
+ //# sourceMappingURL=query-tokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tokenizer.js","sourceRoot":"","sources":["../../src/query-tokenizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * recall-benchmark — measures recall pipeline efficacy.
3
+ *
4
+ * Runs a set of test queries against the live memory.db, captures per-stage
5
+ * hits, timing, and unique contribution. Outputs JSON + human-readable summary.
6
+ *
7
+ * Usage:
8
+ * npx tsx src/memory/recall-benchmark.ts
9
+ * npx tsx src/memory/recall-benchmark.ts --queries path/to/queries.json
10
+ * npx tsx src/memory/recall-benchmark.ts --snapshot (dump golden set template)
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=recall-benchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall-benchmark.d.ts","sourceRoot":"","sources":["../../src/recall-benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,256 @@
1
+ /**
2
+ * recall-benchmark — measures recall pipeline efficacy.
3
+ *
4
+ * Runs a set of test queries against the live memory.db, captures per-stage
5
+ * hits, timing, and unique contribution. Outputs JSON + human-readable summary.
6
+ *
7
+ * Usage:
8
+ * npx tsx src/memory/recall-benchmark.ts
9
+ * npx tsx src/memory/recall-benchmark.ts --queries path/to/queries.json
10
+ * npx tsx src/memory/recall-benchmark.ts --snapshot (dump golden set template)
11
+ */
12
+ import Database from "better-sqlite3";
13
+ import { join } from "node:path";
14
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
15
+ import { MemoryIndex } from "./memory-index.js";
16
+ import { recallSearch } from "./recall-engine.js";
17
+ import { abmindHome } from "./mem-paths.js";
18
+ // ── Default queries ─────────────────────────────────────────────────────────
19
+ const DEFAULT_QUERIES = [
20
+ // Personal facts
21
+ { label: "user name", keywords: ["user", "name"] },
22
+ { label: "user language", keywords: ["Hungarian", "English", "language"], original: "magyar" },
23
+ { label: "user environment", keywords: ["WSL", "environment"], original: "környezet" },
24
+ { label: "user preferences", keywords: ["pizza", "cheese"], original: "sajt" },
25
+ { label: "user communication style", keywords: ["frustration", "meta-commentary"] },
26
+ // Technical facts
27
+ { label: "deploy commands", keywords: ["deploy", "scripts"] },
28
+ { label: "heartbeat interval", keywords: ["heartbeat", "interval"] },
29
+ { label: "whisper STT", keywords: ["whisper", "voice", "transcription"] },
30
+ { label: "FTS5 Hungarian", keywords: ["FTS5", "Hungarian", "agglutination"] },
31
+ { label: "recall pipeline stages", keywords: ["recall", "pipeline", "stages"] },
32
+ // Decisions
33
+ { label: "prompt file security", keywords: ["prompt", "security", "moved"] },
34
+ { label: "classification system", keywords: ["NATO", "classification", "SECRET"] },
35
+ { label: "emotion scoring", keywords: ["emotion", "scoring", "under-detecting"] },
36
+ { label: "mnt/c forbidden", keywords: ["mnt", "forbidden", "Windows"] },
37
+ { label: "A2A memory policy", keywords: ["A2A", "memory", "tool"] },
38
+ // Events
39
+ { label: "Twitter access", keywords: ["Twitter", "X.com", "cookie"] },
40
+ { label: "daily AI news cron", keywords: ["AI", "news", "cron", "daily"] },
41
+ { label: "vision capability", keywords: ["vision", "image", "Telegram"] },
42
+ { label: "refactor deployment", keywords: ["refactor", "deployed", "preparation"] },
43
+ { label: "Spain trip", keywords: ["Fuengirola", "Spain", "Easter"] },
44
+ // Lessons
45
+ { label: "pivot on failures", keywords: ["pivot", "failures", "Browsie"] },
46
+ { label: "search before bluffing", keywords: ["search", "bluffing", "szerda"] },
47
+ { label: "lead with content", keywords: ["lead", "content", "narration"] },
48
+ { label: "never claim unavailable", keywords: ["unavailable", "tool", "bash"] },
49
+ { label: "translation fix policy", keywords: ["translation", "fix", "edit"] },
50
+ // Cross-cutting
51
+ { label: "Molty", keywords: ["Molty", "OpenClaw", "Mac"] },
52
+ { label: "Browsie agent", keywords: ["Browsie", "browser", "subagent"] },
53
+ { label: "cron monitoring", keywords: ["cron", "monitoring", "lastExit"] },
54
+ { label: "self-healing", keywords: ["self-healing", "heartbeat", "errors"] },
55
+ { label: "entity recall", keywords: ["entity", "entities", "tagged"] },
56
+ // Bilingual — S2 tests (original-language queries)
57
+ { label: "HU: password/jelszó", keywords: ["password"], original: "jelszó" },
58
+ { label: "HU: authorization/engedély", keywords: ["authorization"], original: "engedélyezési" },
59
+ { label: "HU: Home Assistant/eszközök", keywords: ["Home Assistant"], original: "eszközök" },
60
+ { label: "HU: Mac environment", keywords: ["Mac"], original: "környezet" },
61
+ { label: "HU: memory test", keywords: ["memory test"], original: "memória teszt" },
62
+ // Edge cases — vague queries
63
+ { label: "vague: what happened Tuesday", keywords: ["Tuesday"] },
64
+ { label: "vague: email", keywords: ["email"] },
65
+ { label: "vague: bug", keywords: ["bug"] },
66
+ // Edge cases — Hungarian only (no English keyword)
67
+ { label: "Hungarian: szundi", keywords: ["szundi"], original: "szundi" },
68
+ { label: "Hungarian: kedd", keywords: ["kedd"], original: "kedd" },
69
+ // Negative — should return few/no results
70
+ { label: "negative: quantum computing", keywords: ["quantum", "computing", "qubit"] },
71
+ { label: "negative: kubernetes", keywords: ["kubernetes", "k8s", "pod"] },
72
+ ];
73
+ // ── Helpers ──────────────────────────────────────────────────────────────────
74
+ function buildDeps(dbPath) {
75
+ const db = new Database(dbPath, { readonly: true });
76
+ // Register custom SQL functions needed by recall-engine
77
+ db.function("strip_emojis", (text) => {
78
+ if (typeof text !== "string")
79
+ return text;
80
+ return text.replace(/[\p{Emoji_Presentation}\p{Extended_Pictographic}]/gu, "").replace(/ {2,}/g, " ").trim();
81
+ });
82
+ db.function("strip_diacritics", (text) => {
83
+ if (typeof text !== "string")
84
+ return text;
85
+ return text.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase();
86
+ });
87
+ const index = new MemoryIndex(db);
88
+ const home = abmindHome();
89
+ return {
90
+ db,
91
+ index,
92
+ memoryDir: join(home, "memory"),
93
+ };
94
+ }
95
+ function uniqueContribution(stageHits, allPriorHits) {
96
+ let unique = 0;
97
+ for (const h of stageHits) {
98
+ const key = h.content.slice(0, 80);
99
+ if (!allPriorHits.has(key)) {
100
+ unique++;
101
+ allPriorHits.add(key);
102
+ }
103
+ }
104
+ return unique;
105
+ }
106
+ function computePrecision(_results, relevantIds, extractedIds) {
107
+ const relevant = new Set(relevantIds);
108
+ const top10 = extractedIds.slice(0, 10);
109
+ const hits = top10.filter(id => relevant.has(id)).length;
110
+ const p10 = top10.length > 0 ? hits / top10.length : 0;
111
+ const r10 = relevant.size > 0 ? hits / relevant.size : 0;
112
+ const firstRelevant = top10.findIndex(id => relevant.has(id));
113
+ const mrr = firstRelevant >= 0 ? 1 / (firstRelevant + 1) : 0;
114
+ return { p10, r10, mrr };
115
+ }
116
+ // ── Main ────────────────────────────────────────────────────────────────────
117
+ async function main() {
118
+ const args = process.argv.slice(2);
119
+ const dbPath = join(abmindHome(), "memory", "memory.db");
120
+ if (!existsSync(dbPath)) {
121
+ console.error(`DB not found: ${dbPath}`);
122
+ process.exit(1);
123
+ }
124
+ // Load queries
125
+ let queries = DEFAULT_QUERIES;
126
+ const queriesFlag = args.indexOf("--queries");
127
+ if (queriesFlag >= 0 && args[queriesFlag + 1]) {
128
+ queries = JSON.parse(readFileSync(args[queriesFlag + 1], "utf-8"));
129
+ }
130
+ // Snapshot mode: dump golden set template
131
+ if (args.includes("--snapshot")) {
132
+ const deps = buildDeps(dbPath);
133
+ const db = deps.db;
134
+ const memories = db.prepare("SELECT id, SUBSTR(content_en, 1, 150) as preview FROM extracted_memories ORDER BY id").all();
135
+ const template = queries.map(q => ({ ...q, relevantIds: [], _memories: "see below" }));
136
+ const out = { queries: template, memories };
137
+ const outPath = join(abmindHome(), "memory", "recall-golden-set.json");
138
+ writeFileSync(outPath, JSON.stringify(out, null, 2));
139
+ console.log(`Golden set template written to ${outPath}`);
140
+ console.log(`${memories.length} memories, ${queries.length} queries`);
141
+ console.log("Fill in relevantIds[] for each query, then run: npx tsx src/memory/recall-benchmark.ts --queries ${outPath}");
142
+ db.close();
143
+ return;
144
+ }
145
+ const deps = buildDeps(dbPath);
146
+ const db = deps.db;
147
+ const memoryCount = db.prepare("SELECT COUNT(*) as c FROM extracted_memories").get().c;
148
+ const messageCount = db.prepare("SELECT COUNT(*) as c FROM messages").get().c;
149
+ // Detect the primary userId (most memories)
150
+ const primaryChatId = db.prepare("SELECT user_id, COUNT(*) as cnt FROM extracted_memories GROUP BY user_id ORDER BY cnt DESC LIMIT 1").get()?.user_id ?? process.env["ABMIND_USER_ID"];
151
+ if (!primaryChatId) {
152
+ console.error("No memories found and ABMIND_USER_ID not set");
153
+ db.close();
154
+ process.exit(1);
155
+ }
156
+ console.log(`\nRecall Benchmark — ${memoryCount} memories, ${messageCount} messages, ${queries.length} queries (userId=${primaryChatId})\n`);
157
+ const stageStats = {};
158
+ const queryResults = [];
159
+ const hasGolden = queries.some(q => q.relevantIds && q.relevantIds.length > 0);
160
+ const precisionResults = [];
161
+ for (const q of queries) {
162
+ const params = {
163
+ translated: q.keywords,
164
+ original: q.original,
165
+ userId: primaryChatId,
166
+ limit: 10,
167
+ trackRecalls: false,
168
+ };
169
+ const result = await recallSearch(deps, params);
170
+ const seen = new Set();
171
+ const stageBreakdown = {};
172
+ // Process stages in pipeline order
173
+ for (const [stageName, stageResult] of Object.entries(result.stages)) {
174
+ const uniq = uniqueContribution(stageResult.hits, seen);
175
+ stageBreakdown[stageName] = { hits: stageResult.hits.length, uniqueHits: uniq, ms: stageResult.ms };
176
+ if (!stageStats[stageName])
177
+ stageStats[stageName] = { totalHits: 0, uniqueHits: 0, totalMs: 0, queriesWithHits: 0 };
178
+ stageStats[stageName].totalHits += stageResult.hits.length;
179
+ stageStats[stageName].uniqueHits += uniq;
180
+ stageStats[stageName].totalMs += stageResult.ms;
181
+ if (stageResult.hits.length > 0)
182
+ stageStats[stageName].queriesWithHits++;
183
+ }
184
+ const qr = {
185
+ label: q.label,
186
+ keywords: q.keywords,
187
+ totalResults: result.results.length,
188
+ shortCircuitAfter: result.shortCircuitAfter,
189
+ extractedIds: result.extractedIds,
190
+ stages: stageBreakdown,
191
+ topResults: result.results.slice(0, 5).map(r => ({
192
+ content: r.content.slice(0, 120),
193
+ source: r.source,
194
+ score: Math.round(r.score * 1000) / 1000,
195
+ })),
196
+ };
197
+ queryResults.push(qr);
198
+ // Precision if golden labels exist
199
+ if (q.relevantIds && q.relevantIds.length > 0) {
200
+ const p = computePrecision(result.results, q.relevantIds, result.extractedIds);
201
+ precisionResults.push({ label: q.label, ...p });
202
+ }
203
+ // Console progress
204
+ const stageHits = Object.entries(stageBreakdown)
205
+ .filter(([, v]) => v.hits > 0)
206
+ .map(([k, v]) => `${k}:${v.hits}(${v.uniqueHits}u)`)
207
+ .join(" ");
208
+ console.log(` ${q.label.padEnd(35)} → ${result.results.length} results [${stageHits}]${result.shortCircuitAfter ? ` sc:${result.shortCircuitAfter}` : ""}`);
209
+ }
210
+ // Dead stages
211
+ const deadStages = Object.entries(stageStats)
212
+ .filter(([, s]) => s.uniqueHits === 0)
213
+ .map(([name]) => name);
214
+ // Build report
215
+ const report = {
216
+ timestamp: new Date().toISOString(),
217
+ dbPath,
218
+ memoryCount,
219
+ messageCount,
220
+ queryCount: queries.length,
221
+ stageStats,
222
+ deadStages,
223
+ queries: queryResults,
224
+ };
225
+ if (hasGolden && precisionResults.length > 0) {
226
+ const meanP = precisionResults.reduce((s, p) => s + p.p10, 0) / precisionResults.length;
227
+ report.precision = { mean: meanP, perQuery: precisionResults };
228
+ }
229
+ // Write report
230
+ const outDir = join(abmindHome(), "memory", "benchmarks");
231
+ mkdirSync(outDir, { recursive: true });
232
+ const outPath = join(outDir, `recall-${new Date().toISOString().slice(0, 19).replace(/:/g, "")}.json`);
233
+ writeFileSync(outPath, JSON.stringify(report, null, 2));
234
+ // Summary
235
+ console.log("\n── Stage Summary ──────────────────────────────────────────────");
236
+ console.log("Stage".padEnd(8), "Hits".padStart(6), "Unique".padStart(8), "Avg ms".padStart(8), "Queries".padStart(9));
237
+ for (const [name, s] of Object.entries(stageStats).sort(([a], [b]) => a.localeCompare(b))) {
238
+ const avgMs = queries.length > 0 ? Math.round(s.totalMs / queries.length) : 0;
239
+ const marker = s.uniqueHits === 0 ? " ← DEAD" : "";
240
+ console.log(name.padEnd(8), String(s.totalHits).padStart(6), String(s.uniqueHits).padStart(8), String(avgMs).padStart(8), `${s.queriesWithHits}/${queries.length}`.padStart(9), marker);
241
+ }
242
+ if (deadStages.length > 0) {
243
+ console.log(`\n⚠️ Dead stages (zero unique hits across all queries): ${deadStages.join(", ")}`);
244
+ }
245
+ if (report.precision) {
246
+ console.log(`\n── Precision (golden labels) ──────────────────────────────────`);
247
+ console.log(`Mean P@10: ${(report.precision.mean * 100).toFixed(1)}%`);
248
+ for (const p of report.precision.perQuery) {
249
+ console.log(` ${p.label.padEnd(35)} P@10=${(p.p10 * 100).toFixed(0)}% R@10=${(p.r10 * 100).toFixed(0)}% MRR=${p.mrr.toFixed(2)}`);
250
+ }
251
+ }
252
+ console.log(`\nReport saved: ${outPath}`);
253
+ db.close();
254
+ }
255
+ main().catch(err => { console.error(err); process.exit(1); });
256
+ //# sourceMappingURL=recall-benchmark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall-benchmark.js","sourceRoot":"","sources":["../../src/recall-benchmark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * recall-engine — simplified recall pipeline (v2).
3
+ *
4
+ * Stages:
5
+ * Sf: Three-query fuzzy search (porter FTS5 + trigram content_en + trigram content_original)
6
+ * Ss: Signature Hamming distance (semantic approximate, no ollama, cap 5, threshold 0.65)
7
+ * Se: Embedding cosine similarity (async, optional — needs ollama)
8
+ * S6: Consolidation file search (daily/weekly/quarterly .md)
9
+ *
10
+ * Priority ordering: Sf → Se → Ss → S6. Dedup by memory ID. MMR reranking (λ=0.7).
11
+ * If Sf fills the limit, Ss and Se are skipped for performance.
12
+ * S6 always runs (different data source).
13
+ * No S7 fallback — return empty on zero results.
14
+ */
15
+ import type Database from "better-sqlite3";
16
+ import type { MemoryIndex } from "./memory-index.js";
17
+ export type RecallHit = {
18
+ id?: number;
19
+ content: string;
20
+ date: string;
21
+ source: string;
22
+ score: number;
23
+ source_ids?: string;
24
+ contentOriginal?: string;
25
+ memoryType?: string;
26
+ trust?: number;
27
+ integrity?: number;
28
+ credibility?: number;
29
+ classification?: number;
30
+ timelineContext?: string;
31
+ interferenceWarning?: string;
32
+ topic?: string;
33
+ emotionTags?: string;
34
+ importanceFlags?: string;
35
+ confidence?: number;
36
+ createdAt?: number;
37
+ };
38
+ export type StageResult = {
39
+ hits: RecallHit[];
40
+ ms: number;
41
+ };
42
+ export type RecallResult = {
43
+ results: RecallHit[];
44
+ stages: Record<string, StageResult>;
45
+ shortCircuitAfter: string | null;
46
+ extractedIds: number[];
47
+ };
48
+ export type RecallContext = {
49
+ hour?: number;
50
+ dayOfWeek?: number;
51
+ topic?: string;
52
+ };
53
+ export type RecallParams = {
54
+ translated: string[];
55
+ original?: string;
56
+ userId: string;
57
+ limit?: number;
58
+ maxClassification?: number;
59
+ timeStart?: number;
60
+ timeEnd?: number;
61
+ stages?: string[];
62
+ shortCircuitThreshold?: number;
63
+ topic?: string;
64
+ tier?: "core" | "general";
65
+ emotion?: string;
66
+ includeExpired?: boolean;
67
+ resolution?: "signal" | "compact" | "standard" | "full";
68
+ currentContext?: RecallContext;
69
+ /** Set false for readonly DB connections (e.g. benchmarks). Default true. */
70
+ trackRecalls?: boolean;
71
+ };
72
+ export type RecallDeps = {
73
+ db: Database.Database;
74
+ index: MemoryIndex;
75
+ memoryDir: string;
76
+ /** Optional — when provided, Se stage uses it instead of loading a fresh ollama client (#173). */
77
+ embeddingProvider?: import("./embedding-provider.js").IEmbeddingProvider;
78
+ };
79
+ export declare function applyContextBoost(results: RecallHit[], ctx: RecallContext): RecallHit[];
80
+ export declare function recallSearch(deps: RecallDeps, params: RecallParams): Promise<RecallResult>;
81
+ //# sourceMappingURL=recall-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall-engine.d.ts","sourceRoot":"","sources":["../../src/recall-engine.ts"],"names":[],"mappings":"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"}