abmind 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) 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 +145 -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 +31 -0
  389. package/dist/src/openclaw-plugin/tools.d.ts.map +1 -0
  390. package/dist/src/openclaw-plugin/tools.js +127 -0
  391. package/dist/src/openclaw-plugin/tools.js.map +1 -0
  392. package/dist/src/openclaw-plugin/types.d.ts +34 -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/package.json +87 -5
  517. package/prompts/sleep/01-gc-noise.md +28 -0
  518. package/prompts/sleep/02-daily-summary.md +3 -0
  519. package/prompts/sleep/03-extract-from-daily.md +3 -0
  520. package/prompts/sleep/04-retrospective.md +30 -0
  521. package/prompts/sleep/06-feedback.md +17 -0
  522. package/prompts/sleep/07-topic-assignment.md +23 -0
  523. package/prompts/sleep/08-core-promotion.md +26 -0
  524. package/prompts/sleep/09-merge.md +19 -0
  525. package/prompts/sleep/10-translation.md +17 -0
  526. package/prompts/sleep/11-skill-review.md +12 -0
  527. package/prompts/sleep/12-core-knowledge.md +14 -0
  528. package/prompts/sleep/13-consolidation.md +11 -0
  529. package/prompts/sleep/14-emotion-context.md +17 -0
  530. package/prompts/sleep/15-contradiction-and-graph.md +48 -0
  531. package/prompts/sleep/16-rem-synthesis.md +31 -0
  532. package/prompts/sleep/basic.md +12 -0
@@ -0,0 +1,87 @@
1
+ /**
2
+ * AbmindOpenClawEngine — implements the ContextEngine interface for OpenClaw.
3
+ *
4
+ * Holds a reference to its AbmindPluginRuntime (registered in runtime-store under
5
+ * the plugin's id). All state is per-instance: no process.env reads, no module-
6
+ * level mutables. Multiple engines can coexist in one process.
7
+ */
8
+ import type { AbmindPluginRuntime } from "./types.js";
9
+ export declare class AbmindOpenClawEngine {
10
+ private readonly runtime;
11
+ readonly info: {
12
+ id: string;
13
+ name: string;
14
+ version: string;
15
+ ownsCompaction: boolean;
16
+ turnMaintenanceMode: "background";
17
+ };
18
+ constructor(runtime: AbmindPluginRuntime);
19
+ ingest(params: {
20
+ sessionId: string;
21
+ sessionKey?: string;
22
+ message: any;
23
+ isHeartbeat?: boolean;
24
+ }): Promise<{
25
+ ingested: boolean;
26
+ }>;
27
+ assemble(params: {
28
+ sessionId: string;
29
+ sessionKey?: string;
30
+ messages?: any[];
31
+ tokenBudget?: number;
32
+ prompt?: string;
33
+ }): Promise<{
34
+ messages: {
35
+ role: "user" | "assistant" | "toolResult";
36
+ content: string;
37
+ }[];
38
+ estimatedTokens: number;
39
+ systemPromptAddition: string | undefined;
40
+ }>;
41
+ compact(params: {
42
+ sessionId: string;
43
+ sessionKey?: string;
44
+ tokenBudget?: number;
45
+ force?: boolean;
46
+ }): Promise<{
47
+ ok: boolean;
48
+ compacted: boolean;
49
+ reason: string;
50
+ result?: undefined;
51
+ } | {
52
+ ok: boolean;
53
+ compacted: boolean;
54
+ result: {
55
+ summary: string;
56
+ firstKeptEntryId: string;
57
+ tokensBefore: number;
58
+ tokensAfter: number;
59
+ };
60
+ reason?: undefined;
61
+ }>;
62
+ bootstrap(): Promise<{
63
+ bootstrapped: boolean;
64
+ reason: string;
65
+ }>;
66
+ maintain(): Promise<{
67
+ changed: boolean;
68
+ bytesFreed: number;
69
+ rewrittenEntries: number;
70
+ }>;
71
+ afterTurn(params: {
72
+ sessionId: string;
73
+ sessionKey?: string;
74
+ tokenBudget?: number;
75
+ }): Promise<void>;
76
+ ingestBatch(params: {
77
+ sessionId: string;
78
+ sessionKey?: string;
79
+ messages: any[];
80
+ }): Promise<{
81
+ ingestedCount: number;
82
+ }>;
83
+ prepareSubagentSpawn(): Promise<undefined>;
84
+ onSubagentEnded(): Promise<void>;
85
+ dispose(): Promise<void>;
86
+ }
87
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/openclaw-plugin/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAKtD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C,QAAQ,CAAC,IAAI;;;;;;MAMX;gBAEU,OAAO,EAAE,mBAAmB;IAMlC,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE;;;IAQ9F,QAAQ,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;IA0BpH,OAAO,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;;;;;;;;;;;;;;;;IAwCjG,SAAS;;;;IACT,QAAQ;;;;;IAER,SAAS,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAwBlF,WAAW,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;KAAE;;;IAS/E,oBAAoB;IACpB,eAAe;IAEf,OAAO;CAId"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * AbmindOpenClawEngine — implements the ContextEngine interface for OpenClaw.
3
+ *
4
+ * Holds a reference to its AbmindPluginRuntime (registered in runtime-store under
5
+ * the plugin's id). All state is per-instance: no process.env reads, no module-
6
+ * level mutables. Multiple engines can coexist in one process.
7
+ */
8
+ import { removeRuntime } from "../runtime-store.js";
9
+ import { toMessage, toAssistantRole } from "./message-adapter.js";
10
+ import { toChatId } from "./session-mapper.js";
11
+ import { renderForContext } from "../context-tier-renderer.js";
12
+ export class AbmindOpenClawEngine {
13
+ runtime;
14
+ info = {
15
+ id: "abmind",
16
+ name: "abmind Memory + Context Engine",
17
+ version: "1.0.0",
18
+ ownsCompaction: true,
19
+ turnMaintenanceMode: "background",
20
+ };
21
+ constructor(runtime) {
22
+ this.runtime = runtime;
23
+ }
24
+ // ── Required methods ─────────────────────────────────────────────────────
25
+ async ingest(params) {
26
+ if (params.isHeartbeat)
27
+ return { ingested: false };
28
+ const chatId = toChatId(params.sessionKey ?? params.sessionId);
29
+ const msg = toMessage(params.message, chatId);
30
+ this.runtime.memory.recordMessage(msg);
31
+ return { ingested: true };
32
+ }
33
+ async assemble(params) {
34
+ const chatId = toChatId(params.sessionKey ?? params.sessionId);
35
+ // Use #348 three-tier assembly (respects CONTEXT_TIER_ENABLED)
36
+ const tiered = renderForContext(this.runtime.contextEngine.getDb(), this.runtime.contextEngine, chatId);
37
+ // Extract summary content for systemPromptAddition (OpenClaw convention)
38
+ // tiered.messages has head summaries first (framed) — collect them separately
39
+ const snapshot = this.runtime.contextEngine.buildContext(chatId);
40
+ const systemPromptAddition = snapshot.summaries.length > 0
41
+ ? snapshot.summaries.map(s => s.content).join("\n\n---\n\n")
42
+ : undefined;
43
+ // For OpenClaw, messages is everything EXCEPT head summaries (those go in systemPromptAddition)
44
+ const headCount = tiered.tierBreakdown.headCount;
45
+ const messages = tiered.messages.slice(headCount).map(m => ({
46
+ role: toAssistantRole(m.role),
47
+ content: m.content,
48
+ }));
49
+ return {
50
+ messages,
51
+ estimatedTokens: tiered.estimatedTokens,
52
+ systemPromptAddition,
53
+ };
54
+ }
55
+ async compact(params) {
56
+ const chatId = toChatId(params.sessionKey ?? params.sessionId);
57
+ const budget = params.tokenBudget ?? 200000;
58
+ const chunk = this.runtime.contextEngine.getCompactionChunk(chatId, budget);
59
+ if (!chunk)
60
+ return { ok: true, compacted: false, reason: "nothing_to_compact" };
61
+ const serialized = chunk.messages
62
+ .filter(m => (m.classification ?? 1) < 3)
63
+ .map(m => `[${m.role}] ${m.content}`)
64
+ .join("\n");
65
+ const summaryBudget = Math.max(2000, Math.min(Math.floor(chunk.chunkTokens * 0.2), 12000));
66
+ const summary = await this.runtime.completeFn("You are a summarization agent. Create a concise context checkpoint. Do NOT respond to questions — only output the summary.", `Summarize:\n${serialized}\n\nTarget ~${summaryBudget} tokens. Be concrete.`, summaryBudget);
67
+ if (!summary) {
68
+ return { ok: true, compacted: false, reason: "summarization_failed" };
69
+ }
70
+ const tokenEstimate = Math.ceil(summary.length / 4);
71
+ this.runtime.contextEngine.persistSummary(chatId, summary, tokenEstimate, chunk.sourceStart, chunk.sourceEnd, chunk.classification);
72
+ return {
73
+ ok: true,
74
+ compacted: true,
75
+ result: {
76
+ summary,
77
+ firstKeptEntryId: String(chunk.sourceEnd + 1),
78
+ tokensBefore: chunk.totalTokens,
79
+ tokensAfter: chunk.totalTokens - chunk.chunkTokens + tokenEstimate,
80
+ },
81
+ };
82
+ }
83
+ // ── Optional methods (no-ops for v1) ─────────────────────────────────────
84
+ async bootstrap() { return { bootstrapped: false, reason: "use 'abmind migrate-openclaw <dir>' CLI for one-time session import" }; }
85
+ async maintain() { return { changed: false, bytesFreed: 0, rewrittenEntries: 0 }; }
86
+ async afterTurn(params) {
87
+ const chatId = toChatId(params.sessionKey ?? params.sessionId);
88
+ const budget = params.tokenBudget ?? 200000;
89
+ const snapshot = this.runtime.contextEngine.buildContext(chatId);
90
+ if (snapshot.estimatedTokens > budget * 0.5 && snapshot.messages.length > 12) {
91
+ const chunk = this.runtime.contextEngine.getCompactionChunk(chatId, budget);
92
+ if (chunk) {
93
+ const serialized = chunk.messages
94
+ .filter(m => (m.classification ?? 1) < 3)
95
+ .map(m => `[${m.role}] ${m.content}`)
96
+ .join("\n");
97
+ const summaryBudget = Math.max(2000, Math.min(Math.floor(chunk.chunkTokens * 0.2), 12000));
98
+ const summary = await this.runtime.completeFn("You are a summarization agent. Create a concise context checkpoint.", `Summarize:\n${serialized}\n\nTarget ~${summaryBudget} tokens. Be concrete.`, summaryBudget);
99
+ if (summary) {
100
+ this.runtime.contextEngine.persistSummary(chatId, summary, Math.ceil(summary.length / 4), chunk.sourceStart, chunk.sourceEnd, chunk.classification);
101
+ }
102
+ }
103
+ }
104
+ }
105
+ async ingestBatch(params) {
106
+ let count = 0;
107
+ for (const msg of params.messages) {
108
+ const result = await this.ingest({ sessionId: params.sessionId, sessionKey: params.sessionKey, message: msg });
109
+ if (result.ingested)
110
+ count++;
111
+ }
112
+ return { ingestedCount: count };
113
+ }
114
+ async prepareSubagentSpawn() { return undefined; }
115
+ async onSubagentEnded() { }
116
+ async dispose() {
117
+ this.runtime.db.close();
118
+ removeRuntime(this.runtime.pluginId);
119
+ }
120
+ }
121
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/openclaw-plugin/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * hooks.ts — lifecycle hook builders for autoRecall + autoCapture.
3
+ *
4
+ * Both hooks are opt-in via plugin config (default false). When enabled, they
5
+ * are wired to OpenClaw's hook API in the plugin's register() function.
6
+ *
7
+ * - autoRecall: on "before_agent_start", search memories matching the user
8
+ * prompt and inject top-N results into the agent's context. Closes the
9
+ * gap where memory-lancedb's auto-recall beats abmind on default behavior.
10
+ *
11
+ * - autoCapture: on "agent_end", record the user message for later memory
12
+ * extraction by the sleep pipeline. User messages ONLY (not assistant
13
+ * output) — matches lossless-claw's self-poisoning mitigation.
14
+ *
15
+ * OpenClaw event payload types are `any` (option b.1). Handler contract is
16
+ * validated by OpenClaw at registration, not compile time.
17
+ */
18
+ interface AutoRecallDeps {
19
+ pluginId: string;
20
+ maxResults: number;
21
+ minScore: number;
22
+ }
23
+ /**
24
+ * Build a `before_agent_start` handler that injects top-relevant memories
25
+ * into the agent's context for each user prompt.
26
+ *
27
+ * Handler reads the user prompt from the event, runs abmind recall, and
28
+ * returns additional context lines to inject. Empty result = no injection.
29
+ */
30
+ export declare function buildAutoRecallHook(deps: AutoRecallDeps): (event: any) => Promise<any>;
31
+ interface AutoCaptureDeps {
32
+ pluginId: string;
33
+ }
34
+ /**
35
+ * Build an `agent_end` handler that records user messages from the completed
36
+ * turn into abmind's messages table. Assistant output is NOT captured
37
+ * (self-poisoning mitigation).
38
+ */
39
+ export declare function buildAutoCaptureHook(deps: AutoCaptureDeps): (event: any) => Promise<void>;
40
+ export {};
41
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/openclaw-plugin/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AAEH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAmCtF;AAED,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AAEH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAyBzF"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * hooks.ts — lifecycle hook builders for autoRecall + autoCapture.
3
+ *
4
+ * Both hooks are opt-in via plugin config (default false). When enabled, they
5
+ * are wired to OpenClaw's hook API in the plugin's register() function.
6
+ *
7
+ * - autoRecall: on "before_agent_start", search memories matching the user
8
+ * prompt and inject top-N results into the agent's context. Closes the
9
+ * gap where memory-lancedb's auto-recall beats abmind on default behavior.
10
+ *
11
+ * - autoCapture: on "agent_end", record the user message for later memory
12
+ * extraction by the sleep pipeline. User messages ONLY (not assistant
13
+ * output) — matches lossless-claw's self-poisoning mitigation.
14
+ *
15
+ * OpenClaw event payload types are `any` (option b.1). Handler contract is
16
+ * validated by OpenClaw at registration, not compile time.
17
+ */
18
+ import { getRuntime } from "../runtime-store.js";
19
+ /**
20
+ * Build a `before_agent_start` handler that injects top-relevant memories
21
+ * into the agent's context for each user prompt.
22
+ *
23
+ * Handler reads the user prompt from the event, runs abmind recall, and
24
+ * returns additional context lines to inject. Empty result = no injection.
25
+ */
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ export function buildAutoRecallHook(deps) {
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ return async function autoRecallHandler(event) {
30
+ const runtime = getRuntime(deps.pluginId);
31
+ const prompt = extractPromptFromEvent(event);
32
+ if (!prompt)
33
+ return {}; // No prompt to key off — silent no-op
34
+ try {
35
+ const result = await runtime.memory.recallSearch({
36
+ translated: [prompt],
37
+ userId: extractUserId(event) ?? "default",
38
+ limit: deps.maxResults,
39
+ maxClassification: 2,
40
+ });
41
+ const hits = result.results.filter((h) => (h.score ?? 0) >= deps.minScore);
42
+ if (hits.length === 0)
43
+ return {};
44
+ const lines = [
45
+ `[Relevant memory — abmind auto-recall, ${hits.length} hit${hits.length > 1 ? "s" : ""}]`,
46
+ ...hits.map((h, i) => {
47
+ const idx = i + 1;
48
+ const date = h.date ? ` (${h.date})` : "";
49
+ const type = h.memoryType ? `[${h.memoryType}] ` : "";
50
+ return `${idx}. ${type}${h.content}${date}`;
51
+ }),
52
+ ];
53
+ // OpenClaw's hook result shape varies; we return { context: string[] }
54
+ // as a conservative pattern. Runtime validates.
55
+ return { context: lines };
56
+ }
57
+ catch {
58
+ // Recall failure is non-fatal — don't break the turn. Hook must return
59
+ // an empty/neutral value, never throw.
60
+ return {};
61
+ }
62
+ };
63
+ }
64
+ /**
65
+ * Build an `agent_end` handler that records user messages from the completed
66
+ * turn into abmind's messages table. Assistant output is NOT captured
67
+ * (self-poisoning mitigation).
68
+ */
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ export function buildAutoCaptureHook(deps) {
71
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
72
+ return async function autoCaptureHandler(event) {
73
+ const runtime = getRuntime(deps.pluginId);
74
+ const userMessages = extractUserMessages(event);
75
+ if (userMessages.length === 0)
76
+ return;
77
+ const userId = extractUserId(event) ?? "default";
78
+ const sessionId = extractSessionId(event) ?? "default";
79
+ const baseTimestamp = Date.now();
80
+ try {
81
+ for (let i = 0; i < userMessages.length; i++) {
82
+ runtime.memory.recordMessage({
83
+ role: "user",
84
+ content: userMessages[i],
85
+ timestamp: baseTimestamp + i, // preserve ordering within the turn
86
+ userId,
87
+ sessionId,
88
+ });
89
+ }
90
+ }
91
+ catch {
92
+ // Capture failure is non-fatal — don't break the turn.
93
+ }
94
+ };
95
+ }
96
+ // ── Event shape extraction ────────────────────────────────────────────────
97
+ // OpenClaw event payloads are not typed at our boundary. These helpers try
98
+ // common shapes (user prompt, messages array) and fall back gracefully.
99
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
100
+ function extractPromptFromEvent(event) {
101
+ if (!event || typeof event !== "object")
102
+ return null;
103
+ // Most common: event.prompt or event.userPrompt
104
+ if (typeof event.prompt === "string")
105
+ return event.prompt;
106
+ if (typeof event.userPrompt === "string")
107
+ return event.userPrompt;
108
+ // Alternative: event.messages is an array, last user message wins
109
+ if (Array.isArray(event.messages)) {
110
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
111
+ for (let i = event.messages.length - 1; i >= 0; i--) {
112
+ const m = event.messages[i];
113
+ if (m?.role === "user" && typeof m.content === "string")
114
+ return m.content;
115
+ }
116
+ }
117
+ return null;
118
+ }
119
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
120
+ function extractUserMessages(event) {
121
+ if (!event || typeof event !== "object")
122
+ return [];
123
+ if (!Array.isArray(event.messages))
124
+ return [];
125
+ const results = [];
126
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
127
+ for (const m of event.messages) {
128
+ if (m?.role === "user" && typeof m.content === "string")
129
+ results.push(m.content);
130
+ }
131
+ return results;
132
+ }
133
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
134
+ function extractUserId(event) {
135
+ if (!event || typeof event !== "object")
136
+ return null;
137
+ if (typeof event.userId === "string")
138
+ return event.userId;
139
+ if (typeof event.agentId === "string")
140
+ return event.agentId;
141
+ if (typeof event.sessionKey === "string")
142
+ return event.sessionKey;
143
+ return null;
144
+ }
145
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
146
+ function extractSessionId(event) {
147
+ if (!event || typeof event !== "object")
148
+ return null;
149
+ if (typeof event.sessionId === "string")
150
+ return event.sessionId;
151
+ if (typeof event.sessionKey === "string")
152
+ return event.sessionKey;
153
+ return null;
154
+ }
155
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/openclaw-plugin/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * OpenClaw ContextEngine plugin for abmind.
3
+ * Drop-in replacement for lossless-claw.
4
+ *
5
+ * Per-instance isolation: config is constructed from plugin input (no process.env
6
+ * mutation) and the runtime is registered under a pluginId so multiple instances
7
+ * in the same process don't collide. See runtime-store.ts for the pattern.
8
+ */
9
+ import type { AbmindPluginConfig } from "./types.js";
10
+ declare const _default: {
11
+ id: string;
12
+ name: string;
13
+ description: string;
14
+ configSchema: {
15
+ parse(value: unknown): AbmindPluginConfig;
16
+ };
17
+ register(api: any): void;
18
+ };
19
+ export default _default;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openclaw-plugin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,OAAO,KAAK,EAAE,kBAAkB,EAAuB,MAAM,YAAY,CAAC;;;;;;qBA8BzD,OAAO,GAAG,kBAAkB;;kBAe7B,GAAG;;AArBnB,wBA6GE"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * OpenClaw ContextEngine plugin for abmind.
3
+ * Drop-in replacement for lossless-claw.
4
+ *
5
+ * Per-instance isolation: config is constructed from plugin input (no process.env
6
+ * mutation) and the runtime is registered under a pluginId so multiple instances
7
+ * in the same process don't collide. See runtime-store.ts for the pattern.
8
+ */
9
+ import { homedir } from "node:os";
10
+ import { join } from "node:path";
11
+ import { ContextEngine } from "../context-engine.js";
12
+ import { initializeDatabase } from "../memory-db.js";
13
+ import { MemoryManager } from "../memory-manager.js";
14
+ import { MEMORY_CONFIG_DEFAULTS } from "../memory-config.js";
15
+ import { registerRuntime, removeRuntime, hasRuntime } from "../runtime-store.js";
16
+ import { AbmindOpenClawEngine } from "./engine.js";
17
+ import { createAbmindRecallTool, createAbmindStoreTool } from "./tools.js";
18
+ import { createMemoryPluginRuntime } from "./runtime-adapter.js";
19
+ import { buildPromptSection } from "./prompt-builder.js";
20
+ import { buildListArtifacts } from "./public-artifacts.js";
21
+ import { buildAutoRecallHook, buildAutoCaptureHook } from "./hooks.js";
22
+ /**
23
+ * Construct a plugin-local MemoryConfig from plugin input and defaults.
24
+ * Does NOT read or mutate process.env — all relevant values come from pluginConfig
25
+ * or documented defaults. Multi-instance safe.
26
+ */
27
+ function buildPluginMemoryConfig(stateDir) {
28
+ const memoryDir = join(stateDir, "memory");
29
+ return {
30
+ ...MEMORY_CONFIG_DEFAULTS,
31
+ memoryDir,
32
+ };
33
+ }
34
+ function resolveStateDir(configured) {
35
+ if (configured)
36
+ return configured;
37
+ // Fall back to env / home ONLY as a read (never a write). Host controls
38
+ // the env; we respect it for legacy setups but don't mutate it.
39
+ const envHome = process.env.ABMIND_HOME;
40
+ if (envHome)
41
+ return envHome;
42
+ return join(homedir(), ".abmind");
43
+ }
44
+ export default {
45
+ id: "abmind",
46
+ name: "abmind Memory + Context Engine",
47
+ description: "Long-term memory, context compaction, sleep cycles, recall",
48
+ configSchema: {
49
+ parse(value) {
50
+ const raw = (value && typeof value === "object" && !Array.isArray(value)) ? value : {};
51
+ return {
52
+ abmlVersion: raw.abmlVersion ?? "plain",
53
+ compactionThreshold: raw.compactionThreshold ?? 0.5,
54
+ sleepEnabled: raw.sleepEnabled ?? true,
55
+ stateDir: raw.stateDir ?? undefined,
56
+ autoRecall: raw.autoRecall ?? false,
57
+ autoCapture: raw.autoCapture ?? false,
58
+ autoRecallMaxResults: Math.min(Math.max(raw.autoRecallMaxResults ?? 3, 1), 10),
59
+ autoRecallMinScore: Math.min(Math.max(raw.autoRecallMinScore ?? 0.3, 0), 1),
60
+ };
61
+ },
62
+ },
63
+ register(api) {
64
+ const pluginId = api.pluginId ?? "abmind";
65
+ const config = api.config?.plugins?.entries?.abmind?.config ?? {};
66
+ const parsed = this.configSchema.parse(config);
67
+ const stateDir = resolveStateDir(parsed.stateDir);
68
+ const memoryConfig = buildPluginMemoryConfig(stateDir);
69
+ const dbPath = join(memoryConfig.memoryDir, "memory.db");
70
+ const db = initializeDatabase(dbPath);
71
+ const contextEngine = new ContextEngine(db);
72
+ const memory = new MemoryManager(memoryConfig);
73
+ // LLM complete function — dynamic import so pi-ai stays optional.
74
+ const completeFn = async (system, user, maxTokens) => {
75
+ try {
76
+ const piAiModule = "@mariozechner/pi-ai";
77
+ const piAi = await import(piAiModule);
78
+ if (typeof piAi.completeSimple !== "function")
79
+ return "";
80
+ const result = await piAi.completeSimple({
81
+ messages: [{ role: "user", content: user }],
82
+ system,
83
+ maxTokens,
84
+ });
85
+ const content = result?.content;
86
+ if (Array.isArray(content)) {
87
+ const text = content.find((b) => b.type === "text");
88
+ return text?.text ?? "";
89
+ }
90
+ return "";
91
+ }
92
+ catch {
93
+ return "";
94
+ }
95
+ };
96
+ // Register runtime under pluginId so multi-instance deployments don't
97
+ // collide. If this pluginId is already registered (hot-reload, re-init),
98
+ // dispose the previous registration first.
99
+ if (hasRuntime(pluginId)) {
100
+ removeRuntime(pluginId);
101
+ }
102
+ const runtime = {
103
+ pluginId,
104
+ contextEngine,
105
+ memory,
106
+ db,
107
+ completeFn,
108
+ config: parsed,
109
+ memoryConfig,
110
+ };
111
+ registerRuntime(pluginId, runtime);
112
+ const engine = new AbmindOpenClawEngine(runtime);
113
+ api.registerContextEngine("abmind", () => engine);
114
+ // ── Memory-capability registration (#201) ──────────────────────────────
115
+ if (typeof api.registerMemoryCapability === "function") {
116
+ api.registerMemoryCapability({
117
+ promptBuilder: buildPromptSection,
118
+ flushPlanResolver: () => null, // abmind sleep runs independently; null = no-op
119
+ runtime: createMemoryPluginRuntime(pluginId),
120
+ publicArtifacts: { listArtifacts: buildListArtifacts(pluginId) },
121
+ });
122
+ }
123
+ // ── Agent tools (#347, #359) ──────────────────────────────────────────
124
+ if (typeof api.registerTool === "function") {
125
+ api.registerTool((ctx) => createAbmindRecallTool(pluginId, ctx.sessionKey));
126
+ api.registerTool((ctx) => createAbmindStoreTool(pluginId, ctx.sessionKey));
127
+ }
128
+ else {
129
+ // eslint-disable-next-line no-console
130
+ console.warn("[abmind] api.registerTool unavailable — tool registration skipped (ContextEngine still active)");
131
+ }
132
+ // ── Lifecycle hooks (autoRecall + autoCapture) ─────────────────────────
133
+ if (parsed.autoRecall && typeof api.on === "function") {
134
+ api.on("before_agent_start", buildAutoRecallHook({
135
+ pluginId,
136
+ maxResults: parsed.autoRecallMaxResults,
137
+ minScore: parsed.autoRecallMinScore,
138
+ }));
139
+ }
140
+ if (parsed.autoCapture && typeof api.on === "function") {
141
+ api.on("agent_end", buildAutoCaptureHook({ pluginId }));
142
+ }
143
+ },
144
+ };
145
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/openclaw-plugin/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * message-adapter.ts — Translate between OpenClaw AgentMessage and abmind MessageRecord.
3
+ */
4
+ import type { MessageRecord } from "../mem-types.js";
5
+ /**
6
+ * Convert an OpenClaw AgentMessage to abmind MessageRecord.
7
+ */
8
+ export declare function toMessage(agentMessage: any, chatId: string): MessageRecord;
9
+ /**
10
+ * Map abmind role to OpenClaw AgentMessage role.
11
+ */
12
+ export declare function toAssistantRole(role: string): "user" | "assistant" | "toolResult";
13
+ //# sourceMappingURL=message-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-adapter.d.ts","sourceRoot":"","sources":["../../../src/openclaw-plugin/message-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;GAEG;AACH,wBAAgB,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CA4B1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,YAAY,CAIjF"}