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,186 @@
1
+ /**
2
+ * turn-classifier.ts — Heuristic classifier for conversation turns.
3
+ *
4
+ * Runs at turn write time. Derives type/topic/emotion hints for later
5
+ * middle-tier rendering (#348). Pure function, no LLM, no I/O.
6
+ *
7
+ * Hint values are nullable on the messages row — missing hints mean
8
+ * "classifier hadn't run for this turn" (historical messages, or
9
+ * classifier disabled). Renderer falls back to defaults.
10
+ */
11
+ // Memory-type single-letter codes (matches memory-renderer v1 TYPE_CODE)
12
+ const TYPE_FACT = "F";
13
+ const TYPE_DECISION = "D";
14
+ const TYPE_PREFERENCE = "P";
15
+ const TYPE_LESSON = "L";
16
+ const TYPE_EVENT = "E";
17
+ const TYPE_TECHNICAL = "T";
18
+ const TYPE_QUESTION = "Q";
19
+ const TYPE_OBSERVATION = "O";
20
+ // Topic vocabulary — keep in sync with memory extraction topics
21
+ const TOPIC_VOCAB = [
22
+ "coding", "personal", "memory", "security", "relationships",
23
+ "money", "finance", "health", "work", "family", "travel",
24
+ "food", "music", "sports", "politics", "general",
25
+ ];
26
+ // Emotion vocabulary — short codes (6 chars max)
27
+ const EMOTION_VOCAB = {
28
+ // joy / positive
29
+ happy: "joy", joy: "joy", great: "joy", awesome: "joy", excellent: "joy",
30
+ love: "love", loving: "love",
31
+ // sad / negative
32
+ sad: "sad", unhappy: "sad", depressed: "sad",
33
+ angry: "anger", furious: "anger", rage: "anger", mad: "anger",
34
+ frustrated: "frust", frustrating: "frust", annoyed: "frust", annoying: "frust",
35
+ anxious: "anx", worried: "anx", anxiety: "anx", stressed: "anx",
36
+ afraid: "fear", fear: "fear", scared: "fear", terrified: "fear",
37
+ // cognitive
38
+ confused: "doubt", doubt: "doubt", uncertain: "doubt", unsure: "doubt",
39
+ convinced: "convict", certain: "convict", sure: "convict",
40
+ // personal
41
+ tired: "exhaust", exhausted: "exhaust", drained: "exhaust",
42
+ excited: "joy", thrilled: "joy",
43
+ grief: "grief", mourning: "grief", lost: "grief",
44
+ hope: "hope", hopeful: "hope",
45
+ proud: "pride", proudly: "pride",
46
+ };
47
+ // Decision markers (verbs/phrases that indicate a choice or commitment)
48
+ const DECISION_MARKERS = [
49
+ /\b(decided|decide|chose|choosing|chosen|will go with|going with|let'?s (go|do|use))\b/i,
50
+ /\b(i'?ll|we'?ll) (use|go|do|try|take)\b/i,
51
+ /\b(plan to|gonna|going to)\b/i,
52
+ ];
53
+ // Preference markers
54
+ const PREFERENCE_MARKERS = [
55
+ /\bi (prefer|like|love|hate|dislike|enjoy|avoid|always|never|usually|rarely)\b/i,
56
+ /\bmy (favorite|preference)\b/i,
57
+ ];
58
+ // Lesson markers (realization, learning, "issue again")
59
+ const LESSON_MARKERS = [
60
+ /\b(learned|realized|turns out|issue again|keep getting|keeps happening|again\b.*broke)\b/i,
61
+ /\b(note to self|remember to|lesson|takeaway)\b/i,
62
+ ];
63
+ // Technical markers (code, file paths, commands)
64
+ const TECHNICAL_MARKERS = [
65
+ /```/, // code block
66
+ /\/[\w-]+\/[\w.-]+/, // path-like
67
+ /\b[A-Z]{2,}\d*\b.*\b(error|bug|fix|issue)\b/i, // ERROR_CODE bug
68
+ /\b(npm|git|curl|sql|fts5?|api|regex)\b/i,
69
+ /\.\w{2,4}\b.*\b(file|module|script)\b/i,
70
+ ];
71
+ // Event markers (happened, deadline, date)
72
+ const EVENT_MARKERS = [
73
+ /\b(happened|scheduled|deadline|tomorrow|yesterday|last week|next week)\b/i,
74
+ /\bon (monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b/i,
75
+ ];
76
+ // Question interrogatives
77
+ const INTERROGATIVES = /\b(what|how|why|when|where|who|which|can you|could you|would you|should i)\b/i;
78
+ /**
79
+ * Classify a single conversation turn. Pure function.
80
+ *
81
+ * @param role "user" or "assistant"
82
+ * @param content Raw message text
83
+ * @returns Hints (nullable — returns null when no rule matches)
84
+ */
85
+ export function classifyTurn(role, content) {
86
+ const roleLC = role.toLowerCase();
87
+ const text = content;
88
+ return {
89
+ typeHint: classifyType(roleLC, text),
90
+ topicHint: classifyTopic(text),
91
+ emotionHint: classifyEmotion(text),
92
+ };
93
+ }
94
+ function classifyType(role, text) {
95
+ // Question: ends with ? AND has interrogative word (not just rhetorical)
96
+ if (text.trimEnd().endsWith("?") && INTERROGATIVES.test(text)) {
97
+ return TYPE_QUESTION;
98
+ }
99
+ // Lesson / realization — explicit markers are strong signal, check BEFORE technical
100
+ // (e.g. "Note to self: always back up first" is a lesson, not technical)
101
+ for (const re of LESSON_MARKERS) {
102
+ if (re.test(text))
103
+ return TYPE_LESSON;
104
+ }
105
+ // Technical: code blocks, commands, paths
106
+ for (const re of TECHNICAL_MARKERS) {
107
+ if (re.test(text))
108
+ return TYPE_TECHNICAL;
109
+ }
110
+ // Decision markers
111
+ for (const re of DECISION_MARKERS) {
112
+ if (re.test(text))
113
+ return TYPE_DECISION;
114
+ }
115
+ // Preference (user-only; assistant wouldn't normally state user preferences this way)
116
+ if (role === "user") {
117
+ for (const re of PREFERENCE_MARKERS) {
118
+ if (re.test(text))
119
+ return TYPE_PREFERENCE;
120
+ }
121
+ }
122
+ // Event
123
+ for (const re of EVENT_MARKERS) {
124
+ if (re.test(text))
125
+ return TYPE_EVENT;
126
+ }
127
+ // Defaults: assistant → fact, user → observation
128
+ return role === "assistant" ? TYPE_FACT : TYPE_OBSERVATION;
129
+ }
130
+ function classifyTopic(text) {
131
+ // Simple vocab match — lowercase text, check each known topic keyword
132
+ const lower = text.toLowerCase();
133
+ // Coding indicators (broader than just "coding" word)
134
+ if (/\b(code|bug|fix|api|sql|regex|npm|git|function|variable|typescript|javascript|python|rust|database)\b/.test(lower)) {
135
+ return "coding";
136
+ }
137
+ // Money / finance
138
+ if (/\b(money|salary|price|pricing|cost|budget|expense|invoice|tax|revenue)\b/.test(lower)) {
139
+ return "finance";
140
+ }
141
+ // Health
142
+ if (/\b(health|doctor|sick|illness|medication|exercise|sleep|tired)\b/.test(lower)) {
143
+ return "health";
144
+ }
145
+ // Security
146
+ if (/\b(password|security|auth|encryption|vulnerability|breach|token)\b/.test(lower)) {
147
+ return "security";
148
+ }
149
+ // Personal (family, relationships, feelings)
150
+ if (/\b(family|mom|dad|wife|husband|kid|friend|date|relationship)\b/.test(lower)) {
151
+ return "personal";
152
+ }
153
+ // Memory (meta)
154
+ if (/\b(memory|memories|remember|forget|recall|forgot)\b/.test(lower)) {
155
+ return "memory";
156
+ }
157
+ // Work
158
+ if (/\b(work|meeting|project|deadline|colleague|boss|office)\b/.test(lower)) {
159
+ return "work";
160
+ }
161
+ return null; // renderer will use "general"
162
+ }
163
+ function classifyEmotion(text) {
164
+ const lower = text.toLowerCase();
165
+ // Word-boundary match against vocabulary
166
+ const words = lower.match(/\b\w+\b/g) ?? [];
167
+ for (const word of words) {
168
+ const emo = EMOTION_VOCAB[word];
169
+ if (emo)
170
+ return emo;
171
+ }
172
+ return null;
173
+ }
174
+ /** Full type name from single-letter code. Used by renderer. */
175
+ export function typeCodeToFull(code) {
176
+ if (!code)
177
+ return "fact";
178
+ const map = {
179
+ F: "fact", D: "decision", P: "preference", E: "event",
180
+ L: "lesson", T: "technical", Q: "question", O: "observation",
181
+ };
182
+ return map[code] ?? "fact";
183
+ }
184
+ /** Export topic vocabulary for tests / validation. */
185
+ export { TOPIC_VOCAB };
186
+ //# sourceMappingURL=turn-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-classifier.js","sourceRoot":"","sources":["../../src/turn-classifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Load master userId from users.json.
3
+ * Falls back to "master" if file missing or no master found.
4
+ */
5
+ export declare function loadMasterUserId(configDir?: string): string;
6
+ //# sourceMappingURL=user-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-utils.d.ts","sourceRoot":"","sources":["../../src/user-utils.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAe3D"}
@@ -0,0 +1,27 @@
1
+ import { getAbmindEnv } from "./env-schema.js";
2
+ /** User utilities — resolve master userId from users.json. */
3
+ import { readFileSync, existsSync } from "node:fs";
4
+ import { join } from "node:path";
5
+ /**
6
+ * Load master userId from users.json.
7
+ * Falls back to "master" if file missing or no master found.
8
+ */
9
+ export function loadMasterUserId(configDir) {
10
+ const paths = [
11
+ configDir ? join(configDir, "users.json") : null,
12
+ join(getAbmindEnv().abmindHome, "config", "users.json"),
13
+ ].filter(Boolean);
14
+ for (const p of paths) {
15
+ if (!existsSync(p))
16
+ continue;
17
+ try {
18
+ const data = JSON.parse(readFileSync(p, "utf-8"));
19
+ const master = data.users?.find((u) => u.role === "master");
20
+ if (master?.userId)
21
+ return master.userId;
22
+ }
23
+ catch { /* invalid json */ }
24
+ }
25
+ return "master";
26
+ }
27
+ //# sourceMappingURL=user-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-utils.js","sourceRoot":"","sources":["../../src/user-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,8DAA8D;AAE9D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAkB;IACjD,MAAM,KAAK,GAAG;QACZ,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QAChD,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC;KACxD,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;IAE9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,SAAS;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAC9E,IAAI,MAAM,EAAE,MAAM;gBAAE,OAAO,MAAM,CAAC,MAAM,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * wake-up-builder.ts — Build session-start memory context.
3
+ * Lean injection: current time + flashback (random emotional memory).
4
+ * Everything else surfaces through active recall (#203) on demand.
5
+ */
6
+ import type Database from "better-sqlite3";
7
+ /**
8
+ * Build wake-up context: current time + one flashback.
9
+ * Returns empty string if DB unavailable or no emotional memories exist.
10
+ */
11
+ export declare function buildWakeUp(db: Database.Database | null): string;
12
+ //# sourceMappingURL=wake-up-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wake-up-builder.d.ts","sourceRoot":"","sources":["../../src/wake-up-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAmChE"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * wake-up-builder.ts — Build session-start memory context.
3
+ * Lean injection: current time + flashback (random emotional memory).
4
+ * Everything else surfaces through active recall (#203) on demand.
5
+ */
6
+ import { renderMemory } from "./memory-renderer.js";
7
+ import { localDateTime } from "./local-time.js";
8
+ const DAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
9
+ /**
10
+ * Build wake-up context: current time + one flashback.
11
+ * Returns empty string if DB unavailable or no emotional memories exist.
12
+ */
13
+ export function buildWakeUp(db) {
14
+ if (!db)
15
+ return "";
16
+ const parts = [];
17
+ // 1. Current time
18
+ const now = new Date();
19
+ parts.push(`[Current time: ${localDateTime(now)} (${DAYS[now.getDay()]})]`);
20
+ // 2. Flashback — random emotional memory weighted by intensity × recency
21
+ try {
22
+ const row = db.prepare(`SELECT content_en, emotion_tags, importance_flags, topic, memory_type, confidence, created_at
23
+ FROM extracted_memories
24
+ WHERE ABS(emotion_score) >= 3
25
+ AND valid_to IS NULL
26
+ AND content_en IS NOT NULL
27
+ ORDER BY RANDOM() * ABS(emotion_score) / sqrt(1.0 + (julianday('now') - julianday(created_at / 1000, 'unixepoch')) / 180.0) DESC
28
+ LIMIT 1`).get();
29
+ if (row) {
30
+ const rendered = renderMemory({
31
+ content_en: row.content_en,
32
+ topic: row.topic ?? undefined,
33
+ emotion_tags: row.emotion_tags ?? undefined,
34
+ importance_flags: row.importance_flags ?? undefined,
35
+ memory_type: row.memory_type ?? undefined,
36
+ confidence: row.confidence ?? undefined,
37
+ createdAt: row.created_at,
38
+ });
39
+ parts.push(`[Flashback] ${rendered}`);
40
+ }
41
+ }
42
+ catch { /* no emotional memories or DB error */ }
43
+ return parts.join("\n\n");
44
+ }
45
+ //# sourceMappingURL=wake-up-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wake-up-builder.js","sourceRoot":"","sources":["../../src/wake-up-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAE5F;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAA4B;IACtD,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,kBAAkB;IAClB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,kBAAkB,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IAE5E,yEAAyE;IACzE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB;;;;;;eAMS,CACV,CAAC,GAAG,EAAuM,CAAC;QAE7M,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,QAAQ,GAAG,YAAY,CAAC;gBAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;gBAC7B,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;gBAC3C,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,IAAI,SAAS;gBACnD,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;gBACzC,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;gBACvC,SAAS,EAAE,GAAG,CAAC,UAAU;aAC1B,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,uCAAuC,CAAC,CAAC;IAEnD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * wake-up-renderer.ts — Compression Level 2 rendering for wake-up context.
3
+ * Entity header + topic grouping + elide defaults.
4
+ * Operates on stored ABM-L, produces ultra-compact output.
5
+ */
6
+ export type CompressionLevel = "signal" | "full" | "compact" | "ultra";
7
+ /** Pick compression level based on token budget. */
8
+ export declare function pickLevel(budgetTokens: number): CompressionLevel;
9
+ interface MemoryEntry {
10
+ content_compressed: string;
11
+ topic: string;
12
+ emotion_arc?: string | null;
13
+ }
14
+ /**
15
+ * Render core memories for wake-up context at the given compression level.
16
+ */
17
+ export declare function renderWakeUp(entries: ReadonlyArray<MemoryEntry>, level: CompressionLevel): string;
18
+ /**
19
+ * Compress a daily summary to ABM-L bullet points.
20
+ * Input: raw markdown daily. Output: compact ABM-L lines.
21
+ */
22
+ export declare function compressDailySummary(markdown: string, date: string): string;
23
+ /**
24
+ * Generate compressed SOUL for ultra-small context windows (<32K).
25
+ * Extracts only rules and facts from full SOUL.md.
26
+ */
27
+ export declare function compressSoul(fullSoul: string): string;
28
+ export {};
29
+ //# sourceMappingURL=wake-up-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wake-up-renderer.d.ts","sourceRoot":"","sources":["../../src/wake-up-renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvE,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,CAKhE;AAED,UAAU,WAAW;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAwED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAWjG;AA0BD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAsB3E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BrD"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * wake-up-renderer.ts — Compression Level 2 rendering for wake-up context.
3
+ * Entity header + topic grouping + elide defaults.
4
+ * Operates on stored ABM-L, produces ultra-compact output.
5
+ */
6
+ /** Pick compression level based on token budget. */
7
+ export function pickLevel(budgetTokens) {
8
+ if (budgetTokens > 5000)
9
+ return "full";
10
+ if (budgetTokens > 500)
11
+ return "compact";
12
+ if (budgetTokens > 100)
13
+ return "ultra";
14
+ return "signal";
15
+ }
16
+ /** Build entity header from recurring @references. */
17
+ function buildEntityHeader(entries) {
18
+ const counts = new Map();
19
+ for (const e of entries) {
20
+ const refs = e.content_compressed.match(/@[\w-]+/g) ?? [];
21
+ for (const ref of refs) {
22
+ counts.set(ref, (counts.get(ref) ?? 0) + 1);
23
+ }
24
+ }
25
+ // Only alias entities that appear 3+ times
26
+ const replace = new Map();
27
+ const aliases = [];
28
+ for (const [ref, count] of [...counts.entries()].sort((a, b) => b[1] - a[1])) {
29
+ if (count < 3)
30
+ break;
31
+ const name = ref.slice(1); // remove @
32
+ const code = name.slice(0, 2).toUpperCase();
33
+ replace.set(ref, code);
34
+ aliases.push(`${code}=${name}`);
35
+ }
36
+ return {
37
+ header: aliases.length > 0 ? `@: ${aliases.join(", ")}` : "",
38
+ replace,
39
+ };
40
+ }
41
+ /** Extract prefix fields from ABM-L string. */
42
+ function parsePrefix(abml) {
43
+ const m = abml.match(/^\[([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^\]]*)\]\s*(.*)/s);
44
+ if (!m)
45
+ return { flags: "", topic: "", emotion: "", confidence: "", date: "", body: abml };
46
+ return { flags: m[1], topic: m[2], emotion: m[3], confidence: m[4], date: m[5], body: m[6] };
47
+ }
48
+ /** Render entries at "compact" level: topic grouping, elide defaults, entity codes. */
49
+ function renderCompact(entries, entityReplace) {
50
+ const byTopic = new Map();
51
+ for (const e of entries) {
52
+ const parsed = parsePrefix(e.content_compressed);
53
+ if (!byTopic.has(e.topic))
54
+ byTopic.set(e.topic, { arc: e.emotion_arc ?? "", lines: [] });
55
+ // Elide: date (unless <7d), confidence (unless != 3), neutral emotion
56
+ let prefix = `[${parsed.flags}`;
57
+ if (parsed.emotion && parsed.emotion !== "—")
58
+ prefix += `|${parsed.emotion}`;
59
+ if (parsed.confidence && parsed.confidence !== "3")
60
+ prefix += `|${parsed.confidence}`;
61
+ prefix += "]";
62
+ // Apply entity short codes
63
+ let body = parsed.body;
64
+ for (const [ref, code] of entityReplace) {
65
+ body = body.replace(new RegExp(ref.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), code);
66
+ }
67
+ byTopic.get(e.topic).lines.push(`${prefix} ${body}`);
68
+ }
69
+ const parts = [];
70
+ for (const [topic, { arc, lines }] of byTopic) {
71
+ parts.push(`## ${topic}${arc ? " " + arc : ""}`);
72
+ for (const line of lines)
73
+ parts.push(line);
74
+ }
75
+ return parts.join("\n");
76
+ }
77
+ /** Render entries at "full" level: no compression tricks, just the stored ABM-L. */
78
+ function renderFull(entries) {
79
+ return entries.map(e => e.content_compressed).join("\n");
80
+ }
81
+ /**
82
+ * Render core memories for wake-up context at the given compression level.
83
+ */
84
+ export function renderWakeUp(entries, level) {
85
+ if (entries.length === 0)
86
+ return "";
87
+ if (level === "signal")
88
+ return renderSignal(entries);
89
+ if (level === "full")
90
+ return `[CORE MEMORY — ${entries.length} entries]\n${renderFull(entries)}`;
91
+ // compact and ultra both use topic grouping + entity header
92
+ const { header, replace } = buildEntityHeader(entries);
93
+ const body = renderCompact(entries, replace);
94
+ const headerLine = header ? header + "\n" : "";
95
+ return `[CORE MEMORY — ${entries.length} entries]\n${headerLine}${body}`;
96
+ }
97
+ /** Render L0 signal level: structured tag cloud. ~50 tokens for entire memory. */
98
+ function renderSignal(entries) {
99
+ const topics = new Map();
100
+ for (const e of entries) {
101
+ if (!topics.has(e.topic))
102
+ topics.set(e.topic, { types: new Map(), entities: new Set() });
103
+ const t = topics.get(e.topic);
104
+ const parsed = parsePrefix(e.content_compressed);
105
+ const flag = parsed.flags.charAt(0) || "F";
106
+ t.types.set(flag, (t.types.get(flag) ?? 0) + 1);
107
+ const refs = e.content_compressed.match(/@[\w-]+/g) ?? [];
108
+ for (const ref of refs)
109
+ t.entities.add(ref);
110
+ }
111
+ const lines = [`[MEMORY MAP — ${entries.length} entries]`];
112
+ for (const [topic, { types, entities }] of [...topics.entries()].sort((a, b) => b[1].types.size - a[1].types.size)) {
113
+ const count = [...types.values()].reduce((a, b) => a + b, 0);
114
+ const entityStr = [...entities].slice(0, 4).join(" ");
115
+ const typeStr = [...types.entries()].map(([f, c]) => `${f}:${c}`).join(" ");
116
+ lines.push(`${topic}(${count}): ${entityStr} — ${typeStr}`);
117
+ }
118
+ return lines.join("\n");
119
+ }
120
+ /**
121
+ * Compress a daily summary to ABM-L bullet points.
122
+ * Input: raw markdown daily. Output: compact ABM-L lines.
123
+ */
124
+ export function compressDailySummary(markdown, date) {
125
+ const lines = markdown.split("\n").filter(l => l.trim() && !l.startsWith("#"));
126
+ const bullets = [];
127
+ for (const line of lines) {
128
+ const trimmed = line.replace(/^[-*]\s*/, "").trim();
129
+ if (trimmed.length < 10)
130
+ continue;
131
+ // Abbreviate
132
+ const compressed = trimmed
133
+ .replace(/\bTelegram\b/g, "TG")
134
+ .replace(/\bDiscord\b/g, "DC")
135
+ .replace(/\bauthentication\b/gi, "auth")
136
+ .replace(/\bconfiguration\b/gi, "config")
137
+ .replace(/\b(the|a|an|was|were|been|being|also|very|really|just|quite|basically|essentially)\b/gi, "")
138
+ .replace(/\s{2,}/g, " ")
139
+ .trim();
140
+ if (compressed.length > 5)
141
+ bullets.push(compressed);
142
+ }
143
+ if (bullets.length === 0)
144
+ return "";
145
+ // Cap at ~10 most important lines
146
+ return `## ${date}\n${bullets.slice(0, 10).map(b => `- ${b}`).join("\n")}`;
147
+ }
148
+ /**
149
+ * Generate compressed SOUL for ultra-small context windows (<32K).
150
+ * Extracts only rules and facts from full SOUL.md.
151
+ */
152
+ export function compressSoul(fullSoul) {
153
+ const lines = fullSoul.split("\n");
154
+ const sections = [];
155
+ let currentSection = "";
156
+ let collecting = false;
157
+ for (const line of lines) {
158
+ if (line.startsWith("## ")) {
159
+ currentSection = line.replace("## ", "").trim().toLowerCase();
160
+ collecting = true;
161
+ sections.push(`## ${currentSection}`);
162
+ continue;
163
+ }
164
+ if (!collecting)
165
+ continue;
166
+ const trimmed = line.trim();
167
+ if (!trimmed)
168
+ continue;
169
+ // Keep only lines that are rules (start with - or contain "must", "never", "always", "don't")
170
+ if (trimmed.startsWith("-") || /\b(must|never|always|don't|do not|MUST)\b/.test(trimmed)) {
171
+ // Compress the line
172
+ const compressed = trimmed
173
+ .replace(/\b(the|a|an|is|are|was|were|been|being|also|very|really|just|quite)\b/gi, "")
174
+ .replace(/\s{2,}/g, " ")
175
+ .trim();
176
+ if (compressed.length > 5)
177
+ sections.push(compressed);
178
+ }
179
+ }
180
+ return sections.join("\n");
181
+ }
182
+ //# sourceMappingURL=wake-up-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wake-up-renderer.js","sourceRoot":"","sources":["../../src/wake-up-renderer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,89 @@
1
1
  {
2
- "name": "abmind",
3
- "version": "0.0.1",
4
- "description": "AI agent memory system — SQLite, FTS5, embeddings, recall, emotional arcs",
5
- "license": "MIT",
6
- "keywords": ["ai", "agent", "memory", "llm", "sqlite"]
2
+ "name": "abmind",
3
+ "version": "0.1.0",
4
+ "description": "Standalone AI agent memory system — SQLite, FTS5, embeddings, 4-layer recall, sleep maintenance",
5
+ "keywords": [
6
+ "ai",
7
+ "agent",
8
+ "memory",
9
+ "llm",
10
+ "sqlite",
11
+ "fts5",
12
+ "embeddings",
13
+ "recall",
14
+ "sleep",
15
+ "consolidation"
16
+ ],
17
+ "homepage": "https://github.com/aksika/abmind",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/aksika/abmind.git"
21
+ },
22
+ "bugs": {
23
+ "url": "https://github.com/aksika/abmind/issues"
24
+ },
25
+ "author": "aksika <aksikatwo@gmail.com>",
26
+ "license": "Apache-2.0",
27
+ "type": "module",
28
+ "main": "./dist/src/index.js",
29
+ "types": "./dist/src/index.d.ts",
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/src/index.d.ts",
33
+ "default": "./dist/src/index.js"
34
+ },
35
+ "./deploy-lib": {
36
+ "types": "./dist/src/deploy-lib/index.d.ts",
37
+ "default": "./dist/src/deploy-lib/index.js"
38
+ },
39
+ "./package.json": "./package.json"
40
+ },
41
+ "bin": {
42
+ "abmind": "dist/cli/abmind.js"
43
+ },
44
+ "files": [
45
+ "dist/",
46
+ "prompts/",
47
+ "README.md",
48
+ "LICENSE",
49
+ "CHANGELOG.md"
50
+ ],
51
+ "publishConfig": {
52
+ "access": "public"
53
+ },
54
+ "scripts": {
55
+ "build": "tsc",
56
+ "prepare": "tsc",
57
+ "test": "vitest run --dir src",
58
+ "test:watch": "vitest --dir src",
59
+ "typecheck": "tsc --noEmit"
60
+ },
61
+ "dependencies": {
62
+ "@modelcontextprotocol/sdk": "^1.29.0",
63
+ "better-sqlite3": "^11.10.0"
64
+ },
65
+ "peerDependencies": {
66
+ "@sinclair/typebox": ">=0.32.0"
67
+ },
68
+ "peerDependenciesMeta": {
69
+ "@sinclair/typebox": {
70
+ "optional": true
71
+ }
72
+ },
73
+ "devDependencies": {
74
+ "@sinclair/typebox": "^0.34.49",
75
+ "@types/better-sqlite3": "^7.6.13",
76
+ "@types/node": "^22.19.17",
77
+ "fast-check": "^3.23.2",
78
+ "typescript": "^5.9.3",
79
+ "vitest": "^3.2.4"
80
+ },
81
+ "openclaw": {
82
+ "extensions": [
83
+ "./dist/src/openclaw-plugin/index.js"
84
+ ]
85
+ },
86
+ "optionalDependencies": {
87
+ "sqlite-vec": "0.1.9"
88
+ }
7
89
  }