hippo-memory 2.0.0 → 2.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 (965) hide show
  1. package/dist/agent-memories/apply.d.ts +7 -5
  2. package/dist/agent-memories/apply.js +66 -39
  3. package/dist/agent-memories/claude-code.d.ts +8 -2
  4. package/dist/agent-memories/claude-code.js +26 -7
  5. package/dist/agent-memories/copilot.js +2 -1
  6. package/dist/agent-memories/files.js +2 -1
  7. package/dist/agent-memories/legacy.d.ts +6 -3
  8. package/dist/agent-memories/legacy.js +35 -14
  9. package/dist/agent-memories/markdown.d.ts +3 -1
  10. package/dist/agent-memories/markdown.js +3 -1
  11. package/dist/agent-memories/openclaw.js +5 -2
  12. package/dist/agent-memories/plan.js +11 -1
  13. package/dist/agent-memories/project-folds.js +2 -1
  14. package/dist/agent-memories/report.d.ts +4 -1
  15. package/dist/agent-memories/report.js +43 -9
  16. package/dist/agent-memories/source.d.ts +8 -2
  17. package/dist/agent-memories/source.js +11 -3
  18. package/dist/agent-memories/sync.d.ts +7 -2
  19. package/dist/agent-memories/sync.js +141 -101
  20. package/dist/api/assemble.d.ts +6 -4
  21. package/dist/api/assemble.js +11 -6
  22. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  23. package/dist/api/{audit.js → auth/audit.js} +11 -11
  24. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
  25. package/dist/api/{auth.js → auth/auth.js} +46 -29
  26. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  27. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
  28. package/dist/api/auth/session-owners.d.ts +10 -0
  29. package/dist/api/auth/session-owners.js +35 -0
  30. package/dist/api/availability.d.ts +3 -1
  31. package/dist/api/availability.js +3 -1
  32. package/dist/api/busy.d.ts +2 -0
  33. package/dist/api/busy.js +2 -0
  34. package/dist/api/cli-surface.d.ts +6 -0
  35. package/dist/api/cli-surface.js +6 -0
  36. package/dist/api/config-of.d.ts +5 -0
  37. package/dist/api/config-of.js +6 -0
  38. package/dist/api/context-auto.d.ts +4 -1
  39. package/dist/api/context-auto.js +10 -2
  40. package/dist/api/context-render.js +14 -7
  41. package/dist/api/context-select.d.ts +4 -1
  42. package/dist/api/context-select.js +23 -14
  43. package/dist/api/context-types.d.ts +38 -12
  44. package/dist/api/context.d.ts +8 -5
  45. package/dist/api/context.js +112 -57
  46. package/dist/api/continuity.d.ts +24 -21
  47. package/dist/api/continuity.js +18 -20
  48. package/dist/api/correction-latency.d.ts +3 -1
  49. package/dist/api/correction-latency.js +3 -1
  50. package/dist/api/error-reply.d.ts +4 -1
  51. package/dist/api/error-reply.js +12 -3
  52. package/dist/api/index.d.ts +39 -23
  53. package/dist/api/index.js +21 -23
  54. package/dist/api/instruction-detect.d.ts +4 -1
  55. package/dist/api/instruction-detect.js +75 -20
  56. package/dist/api/ledger-db.d.ts +15 -11
  57. package/dist/api/ledger-db.js +21 -23
  58. package/dist/api/memories/conflicts.d.ts +33 -0
  59. package/dist/api/memories/conflicts.js +67 -0
  60. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  61. package/dist/api/{forget.js → memories/forget.js} +22 -15
  62. package/dist/api/memories/memories.d.ts +27 -0
  63. package/dist/api/{memories.js → memories/memories.js} +16 -21
  64. package/dist/api/memories/outcome.d.ts +22 -0
  65. package/dist/api/{outcome.js → memories/outcome.js} +14 -8
  66. package/dist/api/memories/promote.d.ts +40 -0
  67. package/dist/api/{promote.js → memories/promote.js} +35 -22
  68. package/dist/api/memories/refine.d.ts +10 -0
  69. package/dist/api/memories/refine.js +12 -0
  70. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
  71. package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
  72. package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
  73. package/dist/api/{remember.js → memories/remember.js} +42 -26
  74. package/dist/api/objects/cards.d.ts +39 -0
  75. package/dist/api/{cards.js → objects/cards.js} +12 -14
  76. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  77. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
  78. package/dist/api/objects/goals.d.ts +18 -0
  79. package/dist/api/{goals.js → objects/goals.js} +12 -12
  80. package/dist/api/objects/graph.d.ts +11 -0
  81. package/dist/api/objects/graph.js +16 -0
  82. package/dist/api/objects/objects.d.ts +9 -0
  83. package/dist/api/{objects.js → objects/objects.js} +2 -4
  84. package/dist/api/objects/predictions.d.ts +11 -0
  85. package/dist/api/{predictions.js → objects/predictions.js} +7 -6
  86. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  87. package/dist/api/{projects.js → objects/projects.js} +8 -4
  88. package/dist/api/pilot-arm.d.ts +8 -4
  89. package/dist/api/pilot-arm.js +5 -4
  90. package/dist/api/prompt-hook.d.ts +32 -19
  91. package/dist/api/prompt-hook.js +65 -44
  92. package/dist/api/provenance-coverage.d.ts +3 -1
  93. package/dist/api/provenance-coverage.js +3 -1
  94. package/dist/api/recall/finish.d.ts +185 -0
  95. package/dist/api/recall/finish.js +301 -0
  96. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  97. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
  98. package/dist/api/recall/recall.d.ts +6 -0
  99. package/dist/api/{recall.js → recall/recall.js} +101 -60
  100. package/dist/api/recall/render.d.ts +39 -0
  101. package/dist/api/recall/render.js +60 -0
  102. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  103. package/dist/api/recall/request.js +261 -0
  104. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  105. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  106. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
  107. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  108. package/dist/api/session-end.d.ts +16 -12
  109. package/dist/api/session-end.js +46 -30
  110. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  111. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  112. package/dist/api/sleep/dormant.d.ts +25 -0
  113. package/dist/api/sleep/dormant.js +64 -0
  114. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  115. package/dist/api/sleep/learn.js +138 -0
  116. package/dist/api/sleep/sleep-run.d.ts +38 -0
  117. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
  118. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  119. package/dist/api/sleep/sleep.js +9 -0
  120. package/dist/api/status.d.ts +3 -1
  121. package/dist/api/status.js +3 -1
  122. package/dist/api/store-init.d.ts +4 -1
  123. package/dist/api/store-init.js +4 -1
  124. package/dist/api/tokens.d.ts +10 -9
  125. package/dist/api/tokens.js +9 -10
  126. package/dist/api/types.d.ts +28 -7
  127. package/dist/api/types.js +13 -4
  128. package/dist/capture/caller-session.d.ts +8 -2
  129. package/dist/capture/caller-session.js +16 -6
  130. package/dist/capture/capture-error.d.ts +3 -1
  131. package/dist/capture/capture-error.js +3 -1
  132. package/dist/capture/codex-patch.js +7 -2
  133. package/dist/capture/command.d.ts +4 -2
  134. package/dist/capture/command.js +33 -14
  135. package/dist/capture/compact-resume-caller.js +15 -8
  136. package/dist/capture/compact.d.ts +8 -5
  137. package/dist/capture/compact.js +34 -23
  138. package/dist/capture/compaction-items-caller.js +9 -3
  139. package/dist/capture/compaction-record.d.ts +4 -3
  140. package/dist/capture/compaction-record.js +20 -12
  141. package/dist/capture/compaction-spool.d.ts +15 -4
  142. package/dist/capture/compaction-spool.js +64 -17
  143. package/dist/capture/copilot-transcript.d.ts +11 -3
  144. package/dist/capture/copilot-transcript.js +16 -6
  145. package/dist/capture/extract.js +20 -8
  146. package/dist/capture/failure-caller.js +23 -12
  147. package/dist/capture/failure-reading.d.ts +10 -3
  148. package/dist/capture/failure-reading.js +24 -7
  149. package/dist/capture/pre-compact-caller.js +11 -4
  150. package/dist/capture/session-digest.d.ts +15 -4
  151. package/dist/capture/session-digest.js +39 -13
  152. package/dist/capture/session-end-caller.d.ts +4 -1
  153. package/dist/capture/session-end-caller.js +20 -8
  154. package/dist/capture/session-texts.d.ts +6 -2
  155. package/dist/capture/session-texts.js +22 -7
  156. package/dist/capture/session-worker.d.ts +4 -2
  157. package/dist/capture/session-worker.js +45 -17
  158. package/dist/capture/transcript.d.ts +13 -4
  159. package/dist/capture/transcript.js +32 -10
  160. package/dist/capture/working-state.d.ts +13 -4
  161. package/dist/capture/working-state.js +50 -56
  162. package/dist/cli/api-context.d.ts +14 -2
  163. package/dist/cli/api-context.js +45 -2
  164. package/dist/cli/audit.js +23 -23
  165. package/dist/cli/auth.js +19 -27
  166. package/dist/cli/briefs.d.ts +1 -1
  167. package/dist/cli/briefs.js +20 -15
  168. package/dist/cli/card.d.ts +1 -1
  169. package/dist/cli/card.js +56 -73
  170. package/dist/cli/client.d.ts +12 -4
  171. package/dist/cli/client.js +43 -13
  172. package/dist/cli/compact-resume-payload.d.ts +4 -1
  173. package/dist/cli/compact-resume-payload.js +12 -5
  174. package/dist/cli/context.js +42 -17
  175. package/dist/cli/continuity.d.ts +5 -5
  176. package/dist/cli/continuity.js +90 -107
  177. package/dist/cli/curate.d.ts +4 -3
  178. package/dist/cli/curate.js +46 -68
  179. package/dist/cli/dag.d.ts +1 -1
  180. package/dist/cli/dag.js +14 -17
  181. package/dist/cli/decisions.js +27 -26
  182. package/dist/cli/eval.js +16 -21
  183. package/dist/cli/exit.d.ts +4 -1
  184. package/dist/cli/exit.js +10 -2
  185. package/dist/cli/explain.js +12 -11
  186. package/dist/cli/flag-values.d.ts +1 -1
  187. package/dist/cli/flag-values.js +9 -18
  188. package/dist/cli/github.d.ts +6 -0
  189. package/dist/cli/github.js +25 -13
  190. package/dist/cli/goals.d.ts +1 -1
  191. package/dist/cli/goals.js +39 -56
  192. package/dist/cli/graph.d.ts +1 -1
  193. package/dist/cli/graph.js +15 -11
  194. package/dist/cli/hook-runtime.d.ts +31 -9
  195. package/dist/cli/hook-runtime.js +40 -15
  196. package/dist/cli/incidents.d.ts +1 -1
  197. package/dist/cli/incidents.js +25 -25
  198. package/dist/cli/init.js +26 -11
  199. package/dist/cli/install-steps.d.ts +12 -3
  200. package/dist/cli/install-steps.js +42 -18
  201. package/dist/cli/last-sleep.d.ts +4 -1
  202. package/dist/cli/last-sleep.js +9 -4
  203. package/dist/cli/maintenance.d.ts +1 -1
  204. package/dist/cli/maintenance.js +11 -12
  205. package/dist/cli/notes.d.ts +1 -1
  206. package/dist/cli/notes.js +8 -5
  207. package/dist/cli/object-verbs.d.ts +4 -4
  208. package/dist/cli/object-verbs.js +10 -13
  209. package/dist/cli/open-browser.js +11 -2
  210. package/dist/cli/playbooks.d.ts +3 -3
  211. package/dist/cli/playbooks.js +40 -32
  212. package/dist/cli/predictions.js +15 -19
  213. package/dist/cli/print.js +4 -2
  214. package/dist/cli/projects.js +21 -11
  215. package/dist/cli/quality-repair-once.js +5 -4
  216. package/dist/cli/recall.js +129 -93
  217. package/dist/cli/refine-llm.d.ts +15 -4
  218. package/dist/cli/refine-llm.js +16 -7
  219. package/dist/cli/remember.js +46 -50
  220. package/dist/cli/scheduler.d.ts +4 -1
  221. package/dist/cli/scheduler.js +9 -5
  222. package/dist/cli/serve.js +22 -17
  223. package/dist/cli/session-hooks.d.ts +2 -2
  224. package/dist/cli/session-hooks.js +87 -50
  225. package/dist/cli/setup.js +54 -32
  226. package/dist/cli/shared.d.ts +3 -1
  227. package/dist/cli/shared.js +24 -9
  228. package/dist/cli/slack.js +15 -24
  229. package/dist/cli/sleep-render.d.ts +3 -1
  230. package/dist/cli/sleep-render.js +8 -5
  231. package/dist/cli/sleep.js +14 -6
  232. package/dist/cli/status.d.ts +4 -4
  233. package/dist/cli/status.js +32 -27
  234. package/dist/cli/stdin.d.ts +10 -3
  235. package/dist/cli/stdin.js +10 -3
  236. package/dist/cli/transfer.d.ts +1 -1
  237. package/dist/cli/transfer.js +71 -75
  238. package/dist/cli/verbs/memory.js +8 -6
  239. package/dist/cli/verbs/objects.js +10 -4
  240. package/dist/cli/versioned-verbs.d.ts +8 -7
  241. package/dist/cli/versioned-verbs.js +31 -21
  242. package/dist/cli.js +13 -16
  243. package/dist/connectors/dlq.d.ts +6 -6
  244. package/dist/connectors/dlq.js +12 -8
  245. package/dist/connectors/github/backfill.d.ts +4 -4
  246. package/dist/connectors/github/backfill.js +6 -4
  247. package/dist/connectors/github/deletion.d.ts +6 -4
  248. package/dist/connectors/github/deletion.js +5 -5
  249. package/dist/connectors/github/dlq.d.ts +8 -6
  250. package/dist/connectors/github/dlq.js +11 -5
  251. package/dist/connectors/github/ingest.d.ts +2 -2
  252. package/dist/connectors/github/ingest.js +9 -6
  253. package/dist/connectors/github/octokit-client.d.ts +3 -1
  254. package/dist/connectors/github/octokit-client.js +7 -2
  255. package/dist/connectors/github/ratelimit.d.ts +6 -2
  256. package/dist/connectors/github/ratelimit.js +6 -2
  257. package/dist/connectors/github/signature.d.ts +14 -3
  258. package/dist/connectors/github/signature.js +17 -3
  259. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  260. package/dist/connectors/github/tenant-routing.js +6 -6
  261. package/dist/connectors/github/transform.js +50 -67
  262. package/dist/connectors/github/types.d.ts +10 -3
  263. package/dist/connectors/github/types.js +6 -2
  264. package/dist/connectors/github/webhook.d.ts +5 -5
  265. package/dist/connectors/github/webhook.js +34 -23
  266. package/dist/connectors/ingest.d.ts +5 -3
  267. package/dist/connectors/ingest.js +3 -4
  268. package/dist/connectors/slack/backfill.d.ts +5 -5
  269. package/dist/connectors/slack/backfill.js +3 -3
  270. package/dist/connectors/slack/deletion.d.ts +4 -4
  271. package/dist/connectors/slack/deletion.js +6 -6
  272. package/dist/connectors/slack/dlq.d.ts +4 -4
  273. package/dist/connectors/slack/dlq.js +6 -6
  274. package/dist/connectors/slack/ingest.d.ts +6 -4
  275. package/dist/connectors/slack/ingest.js +5 -5
  276. package/dist/connectors/slack/signature.d.ts +4 -1
  277. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  278. package/dist/connectors/slack/tenant-routing.js +6 -6
  279. package/dist/connectors/slack/transform.d.ts +6 -2
  280. package/dist/connectors/slack/transform.js +6 -2
  281. package/dist/connectors/slack/types.d.ts +3 -1
  282. package/dist/connectors/slack/web-client.js +8 -3
  283. package/dist/connectors/slack/webhook.d.ts +5 -5
  284. package/dist/connectors/slack/webhook.js +19 -11
  285. package/dist/connectors/slack/workspaces.d.ts +7 -3
  286. package/dist/connectors/slack/workspaces.js +7 -3
  287. package/dist/connectors/store.d.ts +8 -0
  288. package/dist/connectors/store.js +2 -0
  289. package/dist/consolidate/conflicts.js +23 -9
  290. package/dist/consolidate/dag-summary.js +2 -1
  291. package/dist/consolidate/dag.d.ts +10 -5
  292. package/dist/consolidate/dag.js +37 -36
  293. package/dist/consolidate/decay.js +19 -6
  294. package/dist/consolidate/dedupe.d.ts +14 -5
  295. package/dist/consolidate/dedupe.js +27 -16
  296. package/dist/consolidate/flush-units.d.ts +4 -1
  297. package/dist/consolidate/flush-units.js +4 -1
  298. package/dist/consolidate/half-life-migration.d.ts +18 -8
  299. package/dist/consolidate/half-life-migration.js +48 -18
  300. package/dist/consolidate/llm-passes.js +27 -11
  301. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  302. package/dist/consolidate/memory-value-weights.js +6 -2
  303. package/dist/consolidate/memory-value.d.ts +30 -10
  304. package/dist/consolidate/memory-value.js +36 -13
  305. package/dist/consolidate/merge.d.ts +4 -1
  306. package/dist/consolidate/merge.js +42 -32
  307. package/dist/consolidate/overlap-index.d.ts +8 -2
  308. package/dist/consolidate/overlap-index.js +11 -4
  309. package/dist/consolidate/physics-pass.d.ts +3 -1
  310. package/dist/consolidate/physics-pass.js +10 -7
  311. package/dist/consolidate/replay.d.ts +11 -4
  312. package/dist/consolidate/replay.js +19 -7
  313. package/dist/consolidate/run.d.ts +13 -5
  314. package/dist/consolidate/run.js +4 -4
  315. package/dist/consolidate/sleep.d.ts +14 -6
  316. package/dist/consolidate/sleep.js +41 -38
  317. package/dist/consolidate/trace.d.ts +7 -2
  318. package/dist/consolidate/trace.js +7 -2
  319. package/dist/consolidate/traces.js +26 -29
  320. package/dist/core/ablation.d.ts +9 -3
  321. package/dist/core/ablation.js +14 -4
  322. package/dist/core/active-scope.d.ts +3 -1
  323. package/dist/core/active-scope.js +3 -1
  324. package/dist/core/agent-memory-tools.d.ts +2 -0
  325. package/dist/core/agent-memory-tools.js +2 -0
  326. package/dist/core/ambient.d.ts +4 -3
  327. package/dist/core/ambient.js +8 -6
  328. package/dist/core/api-errors.d.ts +9 -3
  329. package/dist/core/api-errors.js +9 -3
  330. package/dist/core/capture-contract.d.ts +4 -1
  331. package/dist/core/capture-contract.js +27 -8
  332. package/dist/core/compare.d.ts +24 -8
  333. package/dist/core/compare.js +24 -8
  334. package/dist/core/config.d.ts +18 -9
  335. package/dist/core/config.js +24 -14
  336. package/dist/core/cosine.d.ts +4 -1
  337. package/dist/core/cosine.js +4 -1
  338. package/dist/core/handoff.d.ts +7 -2
  339. package/dist/core/handoff.js +4 -1
  340. package/dist/core/markdown.js +21 -16
  341. package/dist/core/memory-audit.js +14 -3
  342. package/dist/core/memory-quality.d.ts +12 -3
  343. package/dist/core/memory-quality.js +57 -21
  344. package/dist/core/memory.d.ts +84 -27
  345. package/dist/core/memory.js +73 -29
  346. package/dist/core/merged-row.d.ts +8 -2
  347. package/dist/core/merged-row.js +10 -3
  348. package/dist/core/package-root.d.ts +3 -1
  349. package/dist/core/package-root.js +3 -1
  350. package/dist/core/particle-refresh.d.ts +8 -0
  351. package/dist/core/particle-refresh.js +22 -0
  352. package/dist/core/physics-config.d.ts +4 -1
  353. package/dist/core/physics-config.js +6 -2
  354. package/dist/core/physics.d.ts +37 -11
  355. package/dist/core/physics.js +55 -20
  356. package/dist/core/project-identity.d.ts +34 -17
  357. package/dist/core/project-identity.js +33 -17
  358. package/dist/core/project-remote.d.ts +8 -4
  359. package/dist/core/project-remote.js +31 -14
  360. package/dist/core/recall-scope.d.ts +33 -11
  361. package/dist/core/recall-scope.js +42 -15
  362. package/dist/core/rejection-digest.d.ts +7 -0
  363. package/dist/core/rejection-digest.js +13 -0
  364. package/dist/core/salience.d.ts +3 -1
  365. package/dist/core/salience.js +10 -4
  366. package/dist/core/search-types.d.ts +15 -2
  367. package/dist/core/search-types.js +11 -0
  368. package/dist/dashboard/dashboard-actions.js +13 -2
  369. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  370. package/dist/dashboard/dashboard-snapshot.js +4 -4
  371. package/dist/dashboard/dashboard.js +6 -3
  372. package/dist/db/backup.js +2 -2
  373. package/dist/db/busy.d.ts +10 -3
  374. package/dist/db/busy.js +27 -5
  375. package/dist/db/connect.d.ts +10 -3
  376. package/dist/db/connect.js +8 -3
  377. package/dist/db/continuity.d.ts +1 -1
  378. package/dist/db/continuity.js +27 -11
  379. package/dist/db/meta.d.ts +4 -1
  380. package/dist/db/meta.js +4 -1
  381. package/dist/db/migrate.d.ts +10 -5
  382. package/dist/db/migrate.js +26 -13
  383. package/dist/db/migrations/index.d.ts +1 -1
  384. package/dist/db/migrations/index.js +3 -1
  385. package/dist/db/migrations/types.d.ts +2 -1
  386. package/dist/db/migrations/v12.js +2 -1
  387. package/dist/db/migrations/v14.js +2 -1
  388. package/dist/db/migrations/v15.js +4 -2
  389. package/dist/db/migrations/v16.js +6 -3
  390. package/dist/db/migrations/v17.js +2 -1
  391. package/dist/db/migrations/v19.js +4 -2
  392. package/dist/db/migrations/v20.js +2 -1
  393. package/dist/db/migrations/v22.js +12 -6
  394. package/dist/db/migrations/v23.js +6 -3
  395. package/dist/db/migrations/v24.js +6 -3
  396. package/dist/db/migrations/v25.js +4 -2
  397. package/dist/db/migrations/v26.js +4 -2
  398. package/dist/db/migrations/v27.js +6 -3
  399. package/dist/db/migrations/v28.js +4 -2
  400. package/dist/db/migrations/v29.js +4 -2
  401. package/dist/db/migrations/v30.js +6 -3
  402. package/dist/db/migrations/v31.js +4 -2
  403. package/dist/db/migrations/v32.js +6 -3
  404. package/dist/db/migrations/v33.js +4 -2
  405. package/dist/db/migrations/v34.js +2 -1
  406. package/dist/db/migrations/v35.js +2 -1
  407. package/dist/db/migrations/v36.js +2 -1
  408. package/dist/db/migrations/v37.js +10 -5
  409. package/dist/db/migrations/v38.js +10 -5
  410. package/dist/db/migrations/v39.js +14 -6
  411. package/dist/db/migrations/v40.js +4 -2
  412. package/dist/db/migrations/v41.js +4 -2
  413. package/dist/db/migrations/v42.js +2 -1
  414. package/dist/db/migrations/v44.js +4 -2
  415. package/dist/db/migrations/v45.js +4 -2
  416. package/dist/db/migrations/v49.js +2 -1
  417. package/dist/db/migrations/v50.js +4 -2
  418. package/dist/db/migrations/v51.js +4 -2
  419. package/dist/db/migrations/v52.js +2 -1
  420. package/dist/db/migrations/v53.js +8 -4
  421. package/dist/db/migrations/v54.js +2 -1
  422. package/dist/db/migrations/v55.js +4 -2
  423. package/dist/db/migrations/v56.d.ts +3 -0
  424. package/dist/db/migrations/v56.js +28 -0
  425. package/dist/db/open.d.ts +24 -12
  426. package/dist/db/open.js +25 -13
  427. package/dist/db/physics-state.d.ts +8 -4
  428. package/dist/db/physics-state.js +13 -20
  429. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  430. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  431. package/dist/db/request-stores.d.ts +19 -5
  432. package/dist/db/request-stores.js +14 -5
  433. package/dist/db/tables.d.ts +2 -1
  434. package/dist/db/tables.js +12 -4
  435. package/dist/db/vector-store.d.ts +13 -4
  436. package/dist/db/vector-store.js +34 -14
  437. package/dist/db/wal-checkpointer.d.ts +2 -1
  438. package/dist/db/wal-checkpointer.js +19 -7
  439. package/dist/doctor.d.ts +4 -1
  440. package/dist/doctor.js +121 -39
  441. package/dist/embeddings/local.d.ts +8 -4
  442. package/dist/embeddings/local.js +9 -5
  443. package/dist/embeddings/provider.d.ts +19 -10
  444. package/dist/embeddings/provider.js +31 -17
  445. package/dist/embeddings/transformers.d.ts +16 -4
  446. package/dist/embeddings/transformers.js +32 -15
  447. package/dist/entry/json-hooks.d.ts +1 -1
  448. package/dist/entry/json-hooks.js +1 -1
  449. package/dist/entry/project-identity.js +2 -1
  450. package/dist/entry/session-text.d.ts +1 -1
  451. package/dist/entry/session-text.js +1 -1
  452. package/dist/entry/sqlite-handles.d.ts +10 -0
  453. package/dist/entry/sqlite-handles.js +9 -0
  454. package/dist/entry/store-kit.d.ts +19 -6
  455. package/dist/entry/store-kit.js +6 -4
  456. package/dist/eval/eval-stats.d.ts +27 -8
  457. package/dist/eval/eval-stats.js +17 -5
  458. package/dist/eval/eval-suite.d.ts +3 -1
  459. package/dist/eval/eval-suite.js +409 -187
  460. package/dist/eval/eval.d.ts +8 -2
  461. package/dist/eval/eval.js +8 -2
  462. package/dist/eval/judgment.js +16 -6
  463. package/dist/graph/delta.d.ts +9 -42
  464. package/dist/graph/delta.js +17 -11
  465. package/dist/graph/extract.d.ts +10 -7
  466. package/dist/graph/extract.js +57 -25
  467. package/dist/graph/recall.d.ts +12 -4
  468. package/dist/graph/recall.js +30 -13
  469. package/dist/graph/stream.d.ts +18 -6
  470. package/dist/graph/stream.js +32 -10
  471. package/dist/graph/view.d.ts +19 -6
  472. package/dist/graph/view.js +42 -17
  473. package/dist/hooks/codex-session.js +2 -2
  474. package/dist/hooks/codex-wrapper.d.ts +3 -1
  475. package/dist/hooks/codex-wrapper.js +9 -4
  476. package/dist/hooks/copilot.d.ts +19 -5
  477. package/dist/hooks/copilot.js +54 -15
  478. package/dist/hooks/hook-blocks.d.ts +4 -1
  479. package/dist/hooks/hook-blocks.js +8 -3
  480. package/dist/hooks/json-hooks.d.ts +9 -5
  481. package/dist/hooks/json-hooks.js +69 -34
  482. package/dist/hooks/opencode.js +15 -5
  483. package/dist/hooks/shared.d.ts +27 -8
  484. package/dist/hooks/shared.js +57 -16
  485. package/dist/importers/core.d.ts +12 -4
  486. package/dist/importers/core.js +8 -7
  487. package/dist/importers/markdown-parse.d.ts +15 -5
  488. package/dist/importers/markdown-parse.js +16 -7
  489. package/dist/importers/markdown.js +6 -9
  490. package/dist/importers/sources.js +10 -23
  491. package/dist/importers/vault.d.ts +2 -2
  492. package/dist/importers/vault.js +43 -27
  493. package/dist/index.d.ts +32 -6
  494. package/dist/index.js +25 -7
  495. package/dist/learn/autolearn.d.ts +17 -6
  496. package/dist/learn/autolearn.js +53 -24
  497. package/dist/learn/churn-git.d.ts +4 -1
  498. package/dist/learn/churn-git.js +29 -5
  499. package/dist/learn/extract.d.ts +4 -1
  500. package/dist/learn/extract.js +16 -9
  501. package/dist/learn/forward-claim-detector.d.ts +17 -5
  502. package/dist/learn/forward-claim-detector.js +34 -15
  503. package/dist/learn/invalidation.d.ts +12 -7
  504. package/dist/learn/invalidation.js +56 -27
  505. package/dist/learn/roots.d.ts +3 -0
  506. package/dist/learn/roots.js +5 -0
  507. package/dist/mcp/admin-tools.d.ts +5 -5
  508. package/dist/mcp/admin-tools.js +28 -23
  509. package/dist/mcp/format.d.ts +1 -1
  510. package/dist/mcp/format.js +4 -2
  511. package/dist/mcp/framing.d.ts +3 -1
  512. package/dist/mcp/framing.js +20 -8
  513. package/dist/mcp/memory-tools.d.ts +3 -3
  514. package/dist/mcp/memory-tools.js +18 -14
  515. package/dist/mcp/protocol.d.ts +32 -16
  516. package/dist/mcp/protocol.js +12 -9
  517. package/dist/mcp/recall-tools.d.ts +3 -3
  518. package/dist/mcp/recall-tools.js +62 -74
  519. package/dist/mcp/request.d.ts +7 -5
  520. package/dist/mcp/request.js +57 -74
  521. package/dist/mcp/server.d.ts +3 -1
  522. package/dist/mcp/server.js +8 -3
  523. package/dist/mcp/session-state.d.ts +1 -1
  524. package/dist/mcp/session-state.js +4 -3
  525. package/dist/mcp/shared-gate.d.ts +3 -2
  526. package/dist/mcp/shared-gate.js +3 -2
  527. package/dist/mcp/stdio.d.ts +6 -3
  528. package/dist/mcp/stdio.js +52 -21
  529. package/dist/mcp/tool-args.d.ts +4 -1
  530. package/dist/mcp/tool-args.js +8 -3
  531. package/dist/mcp/tools.js +76 -32
  532. package/dist/objects/customer-notes.d.ts +12 -10
  533. package/dist/objects/customer-notes.js +21 -15
  534. package/dist/objects/decisions.d.ts +18 -10
  535. package/dist/objects/decisions.js +23 -17
  536. package/dist/objects/descriptor.js +2 -1
  537. package/dist/objects/fields.d.ts +4 -1
  538. package/dist/objects/fields.js +6 -2
  539. package/dist/objects/incidents.d.ts +14 -16
  540. package/dist/objects/incidents.js +29 -30
  541. package/dist/objects/lifecycle.d.ts +0 -4
  542. package/dist/objects/lifecycle.js +21 -24
  543. package/dist/objects/policies.d.ts +12 -16
  544. package/dist/objects/policies.js +17 -21
  545. package/dist/objects/processes.d.ts +16 -10
  546. package/dist/objects/processes.js +20 -15
  547. package/dist/objects/project-briefs.d.ts +13 -14
  548. package/dist/objects/project-briefs.js +33 -39
  549. package/dist/objects/skills.d.ts +10 -12
  550. package/dist/objects/skills.js +17 -22
  551. package/dist/postinstall.js +15 -7
  552. package/dist/predictions/planning-fallacy.d.ts +19 -6
  553. package/dist/predictions/planning-fallacy.js +4 -2
  554. package/dist/rerankers/clef.d.ts +8 -2
  555. package/dist/rerankers/clef.js +14 -9
  556. package/dist/rerankers/cross-encoder.d.ts +2 -1
  557. package/dist/rerankers/cross-encoder.js +9 -6
  558. package/dist/rerankers/index.js +2 -1
  559. package/dist/rerankers/jev.js +2 -1
  560. package/dist/rerankers/llm.d.ts +6 -2
  561. package/dist/rerankers/llm.js +8 -3
  562. package/dist/rerankers/remote.d.ts +3 -1
  563. package/dist/rerankers/remote.js +5 -2
  564. package/dist/rerankers/types.d.ts +6 -2
  565. package/dist/search/bm25-search.d.ts +3 -1
  566. package/dist/search/bm25-search.js +15 -2
  567. package/dist/search/boosts.js +4 -3
  568. package/dist/search/embed-memories.d.ts +10 -5
  569. package/dist/search/embed-memories.js +62 -36
  570. package/dist/search/engine.d.ts +4 -1
  571. package/dist/search/engine.js +6 -2
  572. package/dist/search/goal-boost.d.ts +10 -3
  573. package/dist/search/goal-boost.js +13 -6
  574. package/dist/search/hybrid-score.d.ts +4 -1
  575. package/dist/search/hybrid-score.js +4 -1
  576. package/dist/search/hybrid.d.ts +23 -8
  577. package/dist/search/hybrid.js +12 -7
  578. package/dist/search/multihop.js +14 -13
  579. package/dist/search/path-context.d.ts +10 -3
  580. package/dist/search/path-context.js +10 -3
  581. package/dist/search/physics-search.d.ts +9 -4
  582. package/dist/search/physics-search.js +38 -14
  583. package/dist/search/rerank.d.ts +2 -1
  584. package/dist/search/rerank.js +2 -1
  585. package/dist/search/rrf.d.ts +14 -5
  586. package/dist/search/rrf.js +11 -4
  587. package/dist/search/vector.d.ts +8 -2
  588. package/dist/search/vector.js +9 -3
  589. package/dist/server/auth.d.ts +18 -14
  590. package/dist/server/auth.js +69 -38
  591. package/dist/server/boot.d.ts +3 -1
  592. package/dist/server/boot.js +95 -56
  593. package/dist/server/client-ip.d.ts +11 -4
  594. package/dist/server/client-ip.js +27 -10
  595. package/dist/server/cursor.d.ts +10 -3
  596. package/dist/server/cursor.js +10 -3
  597. package/dist/server/deadline.d.ts +5 -2
  598. package/dist/server/deadline.js +10 -3
  599. package/dist/server/key-check-bounds.js +12 -4
  600. package/dist/server/lifecycle.d.ts +4 -1
  601. package/dist/server/lifecycle.js +10 -4
  602. package/dist/server/mcp-http.d.ts +2 -1
  603. package/dist/server/mcp-http.js +37 -22
  604. package/dist/server/rate-limit.d.ts +17 -5
  605. package/dist/server/rate-limit.js +55 -26
  606. package/dist/server/ready.js +7 -4
  607. package/dist/server/request.d.ts +15 -4
  608. package/dist/server/request.js +42 -15
  609. package/dist/server/route-checks.d.ts +4 -1
  610. package/dist/server/route-checks.js +8 -3
  611. package/dist/server/route-table.d.ts +8 -6
  612. package/dist/server/route-table.js +547 -93
  613. package/dist/server/routes/admin.d.ts +7 -7
  614. package/dist/server/routes/admin.js +36 -15
  615. package/dist/server/routes/customer-notes.d.ts +5 -5
  616. package/dist/server/routes/customer-notes.js +5 -4
  617. package/dist/server/routes/decisions.d.ts +5 -5
  618. package/dist/server/routes/decisions.js +12 -6
  619. package/dist/server/routes/incidents.d.ts +5 -5
  620. package/dist/server/routes/incidents.js +10 -4
  621. package/dist/server/routes/memories.d.ts +8 -8
  622. package/dist/server/routes/memories.js +12 -19
  623. package/dist/server/routes/object-routes.d.ts +8 -5
  624. package/dist/server/routes/object-routes.js +4 -2
  625. package/dist/server/routes/policies.d.ts +6 -6
  626. package/dist/server/routes/policies.js +11 -4
  627. package/dist/server/routes/predictions.d.ts +5 -5
  628. package/dist/server/routes/predictions.js +9 -4
  629. package/dist/server/routes/processes.d.ts +5 -5
  630. package/dist/server/routes/processes.js +15 -6
  631. package/dist/server/routes/project-briefs.d.ts +6 -6
  632. package/dist/server/routes/project-briefs.js +3 -2
  633. package/dist/server/routes/recall.d.ts +3 -3
  634. package/dist/server/routes/recall.js +21 -10
  635. package/dist/server/routes/skills.d.ts +6 -6
  636. package/dist/server/routes/skills.js +12 -4
  637. package/dist/server/server-detect.d.ts +24 -8
  638. package/dist/server/server-detect.js +57 -22
  639. package/dist/server/sleep-child.js +16 -10
  640. package/dist/server/sleep-offload.d.ts +8 -5
  641. package/dist/server/sleep-offload.js +41 -19
  642. package/dist/server/tls.d.ts +4 -1
  643. package/dist/server/tls.js +13 -5
  644. package/dist/server/types.d.ts +38 -26
  645. package/dist/server/validation.d.ts +4 -1
  646. package/dist/server/validation.js +22 -9
  647. package/dist/server.d.ts +15 -10
  648. package/dist/server.js +32 -12
  649. package/dist/sharing/global-store.d.ts +5 -10
  650. package/dist/sharing/global-store.js +8 -43
  651. package/dist/sharing/global-sync.d.ts +3 -1
  652. package/dist/sharing/global-sync.js +16 -6
  653. package/dist/sharing/project-merge.d.ts +25 -7
  654. package/dist/sharing/project-merge.js +49 -17
  655. package/dist/sharing/search-both.d.ts +8 -4
  656. package/dist/sharing/search-both.js +19 -12
  657. package/dist/sharing/share.d.ts +8 -4
  658. package/dist/sharing/share.js +39 -15
  659. package/dist/store/ambient.js +9 -5
  660. package/dist/store/audit-event.d.ts +2 -2
  661. package/dist/store/audit-event.js +8 -3
  662. package/dist/store/audit.d.ts +6 -3
  663. package/dist/store/audit.js +16 -6
  664. package/dist/store/auth.d.ts +4 -2
  665. package/dist/store/auth.js +63 -20
  666. package/dist/store/busy.d.ts +9 -0
  667. package/dist/store/busy.js +16 -0
  668. package/dist/store/candidates.d.ts +12 -5
  669. package/dist/store/candidates.js +75 -36
  670. package/dist/store/capture-write.d.ts +2 -1
  671. package/dist/store/capture-write.js +2 -1
  672. package/dist/store/card-detail.d.ts +4 -4
  673. package/dist/store/card-detail.js +15 -8
  674. package/dist/store/cards.d.ts +24 -10
  675. package/dist/store/cards.js +93 -60
  676. package/dist/store/compaction-caller.d.ts +2 -1
  677. package/dist/store/compaction-caller.js +2 -1
  678. package/dist/store/compactions-record.d.ts +14 -8
  679. package/dist/store/compactions-record.js +95 -32
  680. package/dist/store/compactions.js +35 -15
  681. package/dist/store/conflicts.d.ts +9 -4
  682. package/dist/store/conflicts.js +100 -45
  683. package/dist/store/connectors/dlq.d.ts +17 -5
  684. package/dist/store/connectors/dlq.js +56 -5
  685. package/dist/store/connectors/event-log.d.ts +111 -2
  686. package/dist/store/connectors/event-log.js +2 -1
  687. package/dist/store/connectors/github.d.ts +6 -3
  688. package/dist/store/connectors/github.js +24 -40
  689. package/dist/store/connectors/slack.d.ts +2 -1
  690. package/dist/store/connectors/slack.js +25 -37
  691. package/dist/store/dashboard-reads.d.ts +7 -3
  692. package/dist/store/dashboard-reads.js +32 -11
  693. package/dist/store/delete-and-batch.d.ts +17 -11
  694. package/dist/store/delete-and-batch.js +67 -26
  695. package/dist/store/delivery-recorder.d.ts +8 -5
  696. package/dist/store/delivery-recorder.js +70 -32
  697. package/dist/store/descendant-page.d.ts +2 -1
  698. package/dist/store/descendant-page.js +24 -9
  699. package/dist/store/diagnostics.d.ts +2 -1
  700. package/dist/store/diagnostics.js +2 -1
  701. package/dist/store/doctor-reads.d.ts +2 -1
  702. package/dist/store/doctor-reads.js +13 -5
  703. package/dist/store/dormant.d.ts +19 -11
  704. package/dist/store/dormant.js +40 -18
  705. package/dist/store/embeddings/index.d.ts +13 -9
  706. package/dist/store/embeddings/index.js +19 -12
  707. package/dist/store/entry-reads.d.ts +49 -20
  708. package/dist/store/entry-reads.js +181 -66
  709. package/dist/store/entry-row.d.ts +10 -6
  710. package/dist/store/entry-row.js +17 -12
  711. package/dist/store/entry-writes.d.ts +22 -10
  712. package/dist/store/entry-writes.js +41 -14
  713. package/dist/store/failure-log-at.js +1 -1
  714. package/dist/store/failure-log.d.ts +4 -2
  715. package/dist/store/failure-log.js +13 -6
  716. package/dist/store/gated-write.d.ts +3 -3
  717. package/dist/store/gated-write.js +3 -3
  718. package/dist/store/goals.d.ts +5 -4
  719. package/dist/store/goals.js +8 -10
  720. package/dist/store/graph-apply.d.ts +21 -0
  721. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  722. package/dist/store/graph-queue.d.ts +9 -6
  723. package/dist/store/graph-queue.js +15 -10
  724. package/dist/store/graph-reads.d.ts +16 -11
  725. package/dist/store/graph-reads.js +24 -15
  726. package/dist/store/graph-rows.d.ts +41 -3
  727. package/dist/store/graph-rows.js +10 -7
  728. package/dist/store/graph-view-rows.js +14 -7
  729. package/dist/store/graph-writes.d.ts +16 -10
  730. package/dist/store/graph-writes.js +59 -36
  731. package/dist/store/handoffs.d.ts +4 -4
  732. package/dist/store/handoffs.js +40 -19
  733. package/dist/store/index-and-stats.d.ts +2 -2
  734. package/dist/store/index-and-stats.js +6 -5
  735. package/dist/store/index.d.ts +3 -1
  736. package/dist/store/index.js +1 -0
  737. package/dist/store/key-audit.d.ts +2 -1
  738. package/dist/store/key-audit.js +2 -1
  739. package/dist/store/key-writes.d.ts +2 -1
  740. package/dist/store/key-writes.js +9 -2
  741. package/dist/store/ledger-turn.d.ts +4 -1
  742. package/dist/store/ledger-turn.js +7 -2
  743. package/dist/store/mirrors.d.ts +11 -4
  744. package/dist/store/mirrors.js +88 -16
  745. package/dist/store/narrow.d.ts +6 -0
  746. package/dist/store/narrow.js +11 -0
  747. package/dist/store/open.d.ts +4 -2
  748. package/dist/store/open.js +18 -9
  749. package/dist/store/pilot-arm.d.ts +2 -1
  750. package/dist/store/pilot-arm.js +18 -6
  751. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  752. package/dist/store/planning-fallacy-evidence.js +8 -5
  753. package/dist/store/port/agent-import.d.ts +62 -0
  754. package/dist/store/port/agent-import.js +2 -0
  755. package/dist/store/port/consolidation.d.ts +129 -0
  756. package/dist/store/port/consolidation.js +2 -0
  757. package/dist/store/port/learning.d.ts +19 -0
  758. package/dist/store/port/learning.js +2 -0
  759. package/dist/store/port/local-files.d.ts +18 -0
  760. package/dist/store/port/local-files.js +2 -0
  761. package/dist/store/port/promotion.d.ts +20 -0
  762. package/dist/store/port/promotion.js +3 -0
  763. package/dist/store/port-groups.d.ts +160 -0
  764. package/dist/store/port-groups.js +2 -0
  765. package/dist/store/port.d.ts +215 -229
  766. package/dist/store/port.js +3 -9
  767. package/dist/store/predictions.d.ts +14 -10
  768. package/dist/store/predictions.js +37 -17
  769. package/dist/store/project-tags.d.ts +4 -1
  770. package/dist/store/project-tags.js +16 -5
  771. package/dist/store/quality-repair.d.ts +8 -4
  772. package/dist/store/quality-repair.js +53 -20
  773. package/dist/store/quarantine.d.ts +1 -0
  774. package/dist/store/quarantine.js +23 -9
  775. package/dist/store/raw-archive.d.ts +5 -4
  776. package/dist/store/raw-archive.js +11 -10
  777. package/dist/store/recall-trace.d.ts +22 -17
  778. package/dist/store/recall-trace.js +126 -63
  779. package/dist/store/rejected-values.d.ts +15 -10
  780. package/dist/store/rejected-values.js +33 -12
  781. package/dist/store/rejection.d.ts +12 -11
  782. package/dist/store/rejection.js +18 -19
  783. package/dist/store/report-reads.d.ts +2 -1
  784. package/dist/store/report-reads.js +2 -1
  785. package/dist/store/rows.d.ts +7 -5
  786. package/dist/store/rows.js +18 -11
  787. package/dist/store/rule-sql.d.ts +6 -4
  788. package/dist/store/rule-sql.js +16 -9
  789. package/dist/store/search-rows.d.ts +14 -9
  790. package/dist/store/search-rows.js +48 -23
  791. package/dist/store/sessions.d.ts +12 -10
  792. package/dist/store/sessions.js +40 -21
  793. package/dist/store/set-aside.d.ts +2 -2
  794. package/dist/store/set-aside.js +18 -5
  795. package/dist/store/sqlite/agent-import.d.ts +3 -0
  796. package/dist/store/sqlite/agent-import.js +77 -0
  797. package/dist/store/sqlite/cards-group.d.ts +6 -0
  798. package/dist/store/sqlite/cards-group.js +37 -0
  799. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  800. package/dist/store/sqlite/conflicts-group.js +18 -0
  801. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  802. package/dist/store/sqlite/connector-events-group.js +17 -6
  803. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  804. package/dist/store/sqlite/connector-writes-group.js +9 -4
  805. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  806. package/dist/store/sqlite/consolidation-group.js +64 -0
  807. package/dist/store/sqlite/dag-reads-group.js +1 -1
  808. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  809. package/dist/store/sqlite/dormant-group.js +29 -0
  810. package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
  811. package/dist/store/sqlite/entry-writes-group.js +37 -14
  812. package/dist/store/sqlite/error-codec.d.ts +4 -2
  813. package/dist/store/sqlite/error-codec.js +32 -10
  814. package/dist/store/sqlite/executor-counts.js +2 -1
  815. package/dist/store/sqlite/executor.d.ts +8 -3
  816. package/dist/store/sqlite/executor.js +56 -18
  817. package/dist/store/sqlite/global-promote.d.ts +5 -0
  818. package/dist/store/sqlite/global-promote.js +48 -0
  819. package/dist/store/sqlite/goals-group.d.ts +6 -0
  820. package/dist/store/sqlite/goals-group.js +23 -0
  821. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  822. package/dist/store/sqlite/graph-reads-group.js +2 -1
  823. package/dist/store/sqlite/held-connection.d.ts +7 -1
  824. package/dist/store/sqlite/held-connection.js +34 -7
  825. package/dist/store/sqlite/last-recall-group.d.ts +4 -2
  826. package/dist/store/sqlite/last-recall-group.js +9 -4
  827. package/dist/store/sqlite/learning-group.d.ts +4 -0
  828. package/dist/store/sqlite/learning-group.js +17 -0
  829. package/dist/store/sqlite/maintenance-groups.js +2 -1
  830. package/dist/store/sqlite/object-rows.d.ts +6 -3
  831. package/dist/store/sqlite/object-rows.js +34 -5
  832. package/dist/store/sqlite/objects-group.d.ts +5 -4
  833. package/dist/store/sqlite/objects-group.js +84 -33
  834. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  835. package/dist/store/sqlite/predictions-group.js +4 -2
  836. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  837. package/dist/store/sqlite/promotion-group.js +10 -0
  838. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  839. package/dist/store/sqlite/quarantine-group.js +4 -2
  840. package/dist/store/sqlite/reports-group.d.ts +6 -0
  841. package/dist/store/sqlite/reports-group.js +33 -0
  842. package/dist/store/sqlite/request-scope.d.ts +6 -0
  843. package/dist/store/sqlite/request-scope.js +18 -0
  844. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  845. package/dist/store/sqlite/sessions-group.js +46 -0
  846. package/dist/store/sqlite/store.d.ts +22 -11
  847. package/dist/store/sqlite/store.js +84 -11
  848. package/dist/store/sqlite/vector-pack.js +2 -1
  849. package/dist/store/sqlite/vector-reads-group.js +2 -1
  850. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  851. package/dist/store/sqlite/worker-jobs.js +19 -7
  852. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  853. package/dist/store/sqlite/worker-ops.js +6 -3
  854. package/dist/store/sqlite/worker-store.d.ts +4 -3
  855. package/dist/store/sqlite/worker-store.js +24 -14
  856. package/dist/store/summaries.d.ts +19 -12
  857. package/dist/store/summaries.js +36 -21
  858. package/dist/store/summary-dirty.d.ts +2 -1
  859. package/dist/store/summary-dirty.js +2 -1
  860. package/dist/store/tenant.d.ts +3 -2
  861. package/dist/store/tenant.js +5 -4
  862. package/dist/store/token-ledger-rows.js +6 -3
  863. package/dist/store/token-ledger.d.ts +19 -13
  864. package/dist/store/token-ledger.js +27 -14
  865. package/dist/store/tombstone-checks.d.ts +4 -1
  866. package/dist/store/tombstone-checks.js +10 -1
  867. package/dist/store/usage-reports.js +2 -1
  868. package/dist/store/vector-index.d.ts +8 -5
  869. package/dist/store/vector-index.js +24 -10
  870. package/dist/store/working-memory.d.ts +6 -4
  871. package/dist/store/working-memory.js +14 -9
  872. package/dist/support-bundle.js +10 -5
  873. package/dist/trust/quarantine.d.ts +1 -2
  874. package/dist/trust/quarantine.js +1 -5
  875. package/dist/trust/reject-flow.d.ts +12 -3
  876. package/dist/trust/reject-flow.js +12 -4
  877. package/dist/util/anthropic-messages.d.ts +4 -1
  878. package/dist/util/anthropic-messages.js +14 -5
  879. package/dist/util/atomic-write.d.ts +4 -2
  880. package/dist/util/atomic-write.js +25 -14
  881. package/dist/util/compaction-items.d.ts +4 -1
  882. package/dist/util/compaction-items.js +8 -2
  883. package/dist/util/crash-handlers.d.ts +7 -2
  884. package/dist/util/crash-handlers.js +13 -4
  885. package/dist/util/env.d.ts +16 -4
  886. package/dist/util/env.js +78 -25
  887. package/dist/util/home-path.js +12 -6
  888. package/dist/util/hook-payload.d.ts +3 -1
  889. package/dist/util/hook-payload.js +3 -1
  890. package/dist/util/http-retry.d.ts +12 -6
  891. package/dist/util/http-retry.js +16 -6
  892. package/dist/util/http-util.d.ts +20 -5
  893. package/dist/util/http-util.js +28 -9
  894. package/dist/util/json.d.ts +4 -1
  895. package/dist/util/json.js +4 -1
  896. package/dist/util/keyset.js +2 -1
  897. package/dist/util/limits.js +4 -2
  898. package/dist/util/log.d.ts +13 -5
  899. package/dist/util/log.js +29 -6
  900. package/dist/util/net.d.ts +5 -0
  901. package/dist/util/net.js +19 -0
  902. package/dist/util/real-path.d.ts +2 -1
  903. package/dist/util/real-path.js +4 -3
  904. package/dist/util/request-scope.d.ts +11 -3
  905. package/dist/util/request-scope.js +13 -4
  906. package/dist/util/same-text.d.ts +10 -3
  907. package/dist/util/same-text.js +10 -3
  908. package/dist/util/secret-detect.d.ts +24 -7
  909. package/dist/util/secret-detect.js +49 -14
  910. package/dist/util/spawn-argv.d.ts +3 -1
  911. package/dist/util/spawn-argv.js +13 -4
  912. package/dist/util/sqlite-blocked.d.ts +15 -4
  913. package/dist/util/sqlite-blocked.js +19 -6
  914. package/dist/util/stored-json.d.ts +4 -1
  915. package/dist/util/stored-json.js +6 -2
  916. package/dist/util/stream-tee.d.ts +2 -1
  917. package/dist/util/stream-tee.js +8 -5
  918. package/dist/util/transcript-tail.d.ts +4 -1
  919. package/dist/util/transcript-tail.js +4 -1
  920. package/dist/util/version.d.ts +8 -3
  921. package/dist/util/version.js +8 -3
  922. package/dist/util/write-budget.d.ts +7 -2
  923. package/dist/util/write-budget.js +5 -2
  924. package/dist/util/yaml.d.ts +4 -1
  925. package/dist/util/yaml.js +4 -1
  926. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  927. package/extensions/openclaw-plugin/package.json +1 -1
  928. package/openclaw.plugin.json +1 -1
  929. package/package.json +2 -1
  930. package/scripts/postinstall.cjs +3 -1
  931. package/dist/api/cards.d.ts +0 -42
  932. package/dist/api/conflicts.d.ts +0 -28
  933. package/dist/api/conflicts.js +0 -61
  934. package/dist/api/dormant.d.ts +0 -14
  935. package/dist/api/dormant.js +0 -58
  936. package/dist/api/goals.d.ts +0 -18
  937. package/dist/api/graph.d.ts +0 -8
  938. package/dist/api/graph.js +0 -8
  939. package/dist/api/learn.js +0 -125
  940. package/dist/api/memories.d.ts +0 -25
  941. package/dist/api/objects.d.ts +0 -9
  942. package/dist/api/outcome.d.ts +0 -19
  943. package/dist/api/predictions.d.ts +0 -11
  944. package/dist/api/promote.d.ts +0 -36
  945. package/dist/api/recall-core.d.ts +0 -4
  946. package/dist/api/recall-core.js +0 -125
  947. package/dist/api/recall-finish.d.ts +0 -53
  948. package/dist/api/recall-finish.js +0 -30
  949. package/dist/api/recall-history.d.ts +0 -64
  950. package/dist/api/recall-history.js +0 -159
  951. package/dist/api/recall-record.d.ts +0 -43
  952. package/dist/api/recall-record.js +0 -78
  953. package/dist/api/recall-request.js +0 -121
  954. package/dist/api/recall.d.ts +0 -6
  955. package/dist/api/refine.d.ts +0 -7
  956. package/dist/api/refine.js +0 -10
  957. package/dist/api/session-owners.d.ts +0 -4
  958. package/dist/api/session-owners.js +0 -17
  959. package/dist/api/sleep-run.d.ts +0 -26
  960. package/dist/api/sleep.js +0 -11
  961. package/dist/graph/write.d.ts +0 -14
  962. package/dist/store/sqlite/busy.d.ts +0 -3
  963. package/dist/store/sqlite/busy.js +0 -8
  964. package/dist/store/sqlite/local.d.ts +0 -4
  965. package/dist/store/sqlite/local.js +0 -8
@@ -1,11 +1,10 @@
1
- import { type DatabaseSyncLike } from '../db/index.js';
2
1
  import { type MemoryEntry } from '../core/memory.js';
2
+ import type { ImportTarget } from '../store/port/agent-import.js';
3
3
  import { type Tally } from './report.js';
4
- import type { AgentMemoryTool } from '../core/agent-memory-tools.js';
4
+ import { type AgentMemoryTool } from '../core/agent-memory-tools.js';
5
5
  import type { Container } from './types.js';
6
6
  export interface StoreSession {
7
- readonly db: DatabaseSyncLike;
8
- readonly hippoRoot: string;
7
+ readonly target: ImportTarget;
9
8
  readonly tenantId: string;
10
9
  readonly baseHalfLifeDays: number;
11
10
  /** Stamped on written rows; undefined lets the store stamp its own project. */
@@ -23,7 +22,10 @@ export interface ContainerWork {
23
22
  readonly adopt: ReadonlyMap<string, readonly MemoryEntry[]>;
24
23
  /** Legacy rows a new row of the key supersedes, by key (second round). */
25
24
  readonly replace: ReadonlyMap<string, readonly MemoryEntry[]>;
26
- /** This container's prefixes under the project's earlier names; their rows move here, so a new id imports nothing twice. */
25
+ /**
26
+ * This container's prefixes under the project's earlier names; their rows move here, so a new id imports nothing
27
+ * twice.
28
+ */
27
29
  readonly legacyPrefixes: readonly string[];
28
30
  }
29
31
  export interface ContainerOutcome {
@@ -1,28 +1,19 @@
1
- // One container's sync in one transaction on the caller's handle: lookup, plan, then every write (plan designs 6 to 8).
2
- import { appendAuditEvent } from '../store/audit.js';
3
- import { withTrialScope, withWriteScope } from '../db/index.js';
4
- import { deleteDormantRow, dormantSnapshotsBySourcePrefix, readDormantSnapshot, replaceDormantEntry } from '../store/dormant.js';
5
- import { gatedWrite } from '../store/gated-write.js';
1
+ // One container's sync in one transaction on the target store: lookup, plan, then every write (plan designs 6 to 8).
6
2
  import { strengthAblation } from '../core/ablation.js';
7
3
  import { Layer, calculateStrength, createMemory } from '../core/memory.js';
8
- import { findRejectedValue, rejectionDigest } from '../store/rejection.js';
9
4
  import { redactSecretsStrict } from '../util/secret-detect.js';
10
- import { stampOriginProject } from '../store/entry-row.js';
11
- import { renameEntrySourceAndOriginAt, renameEntrySourceAt, setEntryTagsInTx, supersedeEntryAt } from '../store/entry-writes.js';
12
- import { SYNC_ACTOR, setAsideRow } from '../store/set-aside.js';
13
- import { entryIdTakenAt, selectLiveEntriesBySourcePrefix } from '../store/entry-reads.js';
14
- import { markSummaryDirtyInTx } from '../store/summary-dirty.js';
15
5
  import { itemHash } from './keys.js';
16
6
  import { planContainer } from './plan.js';
17
7
  import { emptyTally } from './report.js';
18
8
  import { MIN_ITEM_CHARS, itemSource, splitSource, storedText } from './source.js';
9
+ import { SYNC_ACTOR } from '../core/agent-memory-tools.js';
19
10
  /** Throws SQLITE_BUSY when another writer holds the store past its busy timeout; nothing is written then. */
20
11
  export function syncContainer(s, work) {
21
- const run = () => new ContainerRun(s, work).run();
22
- return s.dryRun ? withTrialScope(s.db, 'sync_container', run) : withWriteScope(s.db, 'sync_container', run);
12
+ return s.target.inContainer('sync_container', s.dryRun, (tx) => new ContainerRun(s, tx, work).run());
23
13
  }
24
14
  class ContainerRun {
25
15
  s;
16
+ tx;
26
17
  w;
27
18
  tally = emptyTally();
28
19
  mirror = [];
@@ -30,8 +21,9 @@ class ContainerRun {
30
21
  rows = new Map();
31
22
  items = new Map();
32
23
  tag;
33
- constructor(s, w) {
24
+ constructor(s, tx, w) {
34
25
  this.s = s;
26
+ this.tx = tx;
35
27
  this.w = w;
36
28
  this.tag = w.tool.tag;
37
29
  for (const item of w.container.items)
@@ -41,14 +33,18 @@ class ContainerRun {
41
33
  this.adoptLegacy();
42
34
  for (const old of this.w.legacyPrefixes)
43
35
  this.adoptPrefix(old);
44
- const live = selectLiveEntriesBySourcePrefix(this.s.db, this.s.tenantId, this.w.prefix);
36
+ const live = this.tx.liveBySourcePrefix(this.s.tenantId, this.w.prefix);
45
37
  for (const row of [...live, ...[...this.w.replace.values()].flat()])
46
38
  this.rows.set(row.id, row);
47
39
  const refusals = this.refusals();
48
40
  const liveRows = live.map((row) => this.liveRow(row));
49
41
  const plan = planContainer({
50
42
  textKeyed: this.w.container.textKeyed,
51
- items: this.w.container.items.map((item) => ({ key: item.key, hash: itemHash(item.text), refused: refusals.has(item.key) })),
43
+ items: this.w.container.items.map((item) => ({
44
+ key: item.key,
45
+ hash: itemHash(item.text),
46
+ refused: refusals.has(item.key),
47
+ })),
52
48
  skipped: this.w.container.skipped,
53
49
  live: liveRows,
54
50
  dormant: this.dormantRows(new Set(liveRows.map((r) => r.key)), refusals),
@@ -84,30 +80,41 @@ class ContainerRun {
84
80
  continue;
85
81
  const source = itemSource(this.w.prefix, key, item.text);
86
82
  for (const row of rows) {
87
- if (renameEntrySourceAt(this.s.db, row.tenant_id, row.id, row.source, source) === 0)
83
+ if (this.tx.renameSource(row.tenant_id, row.id, row.source, source) === 0)
88
84
  continue;
89
85
  this.tally.adopted++;
90
86
  this.mirror.push({ ...row, source });
91
87
  }
92
88
  }
93
89
  }
94
- /** Rows filed under an earlier project name keep their id and history; dormant ones move too, scanned only until this prefix holds live rows. */
90
+ /**
91
+ * Rows filed under an earlier project name keep their id and history; dormant ones move too, scanned only until this
92
+ * prefix holds live rows.
93
+ */
95
94
  adoptPrefix(old) {
96
95
  const origin = this.s.originProject ?? null;
97
96
  let moved = 0;
98
- for (const row of selectLiveEntriesBySourcePrefix(this.s.db, this.s.tenantId, old)) {
97
+ for (const row of this.tx.liveBySourcePrefix(this.s.tenantId, old)) {
99
98
  const source = this.w.prefix + row.source.slice(old.length);
100
- if (renameEntrySourceAndOriginAt(this.s.db, row.tenant_id, row.id, { from: row.source, to: source, origin }) === 0)
99
+ if (this.tx.renameSourceAndOrigin(row.tenant_id, row.id, { from: row.source, to: source, origin }) === 0) {
101
100
  continue;
101
+ }
102
102
  moved++;
103
103
  this.mirror.push({ ...row, source, origin_project: origin ?? row.origin_project });
104
104
  }
105
105
  this.tally.renamed += moved;
106
- if (moved === 0 && (this.w.container.items.length === 0 || selectLiveEntriesBySourcePrefix(this.s.db, this.s.tenantId, this.w.prefix).length > 0))
106
+ if (moved === 0 &&
107
+ (this.w.container.items.length === 0 ||
108
+ this.tx.liveBySourcePrefix(this.s.tenantId, this.w.prefix).length > 0)) {
107
109
  return;
108
- for (const snap of dormantSnapshotsBySourcePrefix(this.s.db, this.s.tenantId, old)) {
110
+ }
111
+ for (const snap of this.tx.dormantBySourcePrefix(this.s.tenantId, old)) {
109
112
  const source = this.w.prefix + snap.entry.source.slice(old.length);
110
- replaceDormantEntry(this.s.db, this.s.tenantId, snap.entry.id, { ...snap.entry, source, origin_project: origin ?? snap.entry.origin_project });
113
+ this.tx.replaceDormant(this.s.tenantId, snap.entry.id, {
114
+ ...snap.entry,
115
+ source,
116
+ origin_project: origin ?? snap.entry.origin_project,
117
+ });
111
118
  }
112
119
  }
113
120
  refusals() {
@@ -126,35 +133,51 @@ class ContainerRun {
126
133
  // Imported rows reach prompts, so the bar is text leaving the machine: Bearer headers and JWTs count too.
127
134
  if (redactSecretsStrict(item.text) !== item.text)
128
135
  return 'secret';
129
- if (findRejectedValue(this.s.db, this.s.tenantId, rejectionDigest(storedText(item.text))) !== null)
136
+ if (this.tx.isRejected(this.s.tenantId, storedText(item.text))) {
130
137
  return 'rejected';
138
+ }
131
139
  return null;
132
140
  }
133
141
  liveRow(row) {
134
- return { id: row.id, ...splitSource(row.source, this.w.prefix), tagged: row.tags.includes(this.tag), created: row.created };
142
+ return {
143
+ id: row.id,
144
+ ...splitSource(row.source, this.w.prefix),
145
+ tagged: row.tags.includes(this.tag),
146
+ created: row.created,
147
+ };
135
148
  }
136
149
  /** Read only when a present key has no live row, which after the first import is rare. */
137
150
  dormantRows(liveKeys, refusals) {
138
151
  const needed = this.w.container.items.some((item) => !refusals.has(item.key) && !liveKeys.has(item.key));
139
152
  if (!needed)
140
153
  return [];
141
- return dormantSnapshotsBySourcePrefix(this.s.db, this.s.tenantId, this.w.prefix)
154
+ return this.tx.dormantBySourcePrefix(this.s.tenantId, this.w.prefix)
142
155
  .filter((snap) => !snap.entry.superseded_by)
143
- .map((snap) => ({ id: snap.entry.id, ...splitSource(snap.entry.source, this.w.prefix), dormantAt: snap.dormantAt }));
156
+ .map((snap) => ({
157
+ id: snap.entry.id,
158
+ ...splitSource(snap.entry.source, this.w.prefix),
159
+ dormantAt: snap.dormantAt,
160
+ }));
144
161
  }
145
162
  retag(row) {
146
163
  const tagged = { ...row, tags: [...row.tags, this.tag] };
147
- setEntryTagsInTx(this.s.db, tagged);
164
+ this.tx.setTags(tagged);
148
165
  this.tally.retagged++;
149
166
  this.mirror.push(tagged);
150
167
  }
151
168
  /** api.supersede's steps on this transaction; false when another writer superseded the row first. */
152
169
  supersede(old, newId) {
153
- if (!supersedeEntryAt(this.s.db, old.tenant_id, old.id, newId))
170
+ if (!this.tx.supersede(old.tenant_id, old.id, newId))
154
171
  return false;
155
172
  if (old.dag_parent_id)
156
- markSummaryDirtyInTx(this.s.db, old.dag_parent_id, old.tenant_id, SYNC_ACTOR);
157
- appendAuditEvent(this.s.db, { tenantId: old.tenant_id, actor: SYNC_ACTOR, op: 'supersede', targetId: old.id, metadata: { newId } });
173
+ this.tx.markSummaryDirty(old.dag_parent_id, old.tenant_id, SYNC_ACTOR);
174
+ this.tx.appendAudit({
175
+ tenantId: old.tenant_id,
176
+ actor: SYNC_ACTOR,
177
+ op: 'supersede',
178
+ targetId: old.id,
179
+ metadata: { newId },
180
+ });
158
181
  this.mirror.push({ ...old, superseded_by: newId });
159
182
  return true;
160
183
  }
@@ -181,10 +204,10 @@ class ContainerRun {
181
204
  ? new Date(Math.min(item.updatedAt, Date.parse(base.created))).toISOString()
182
205
  : base.created;
183
206
  const origin = this.s.originProject === undefined ? {} : { origin_project: this.s.originProject };
184
- return stampOriginProject(this.s.hippoRoot, { ...base, created, valid_from: created, ...origin });
207
+ return this.tx.stampOrigin({ ...base, created, valid_from: created, ...origin });
185
208
  }
186
209
  gated(entry) {
187
- const result = gatedWrite(this.s.db, this.s.hippoRoot, entry, { actor: SYNC_ACTOR, worthCheck: false });
210
+ const result = this.tx.gatedWrite(entry, { actor: SYNC_ACTOR, worthCheck: false });
188
211
  if (result === 'written') {
189
212
  this.mirror.push(entry);
190
213
  return true;
@@ -194,8 +217,8 @@ class ContainerRun {
194
217
  }
195
218
  /** A deleted note came back unchanged: its old row returns with its id and history, under the sync's own audit op. */
196
219
  restore(key, dormantId) {
197
- const snap = readDormantSnapshot(this.s.db, this.s.tenantId, dormantId);
198
- const taken = entryIdTakenAt(this.s.db, dormantId);
220
+ const snap = this.tx.readDormant(this.s.tenantId, dormantId);
221
+ const taken = this.tx.entryIdTaken(dormantId);
199
222
  if (snap === null || taken) {
200
223
  this.write({ key, hash: '', supersedes: [] });
201
224
  return;
@@ -208,10 +231,14 @@ class ContainerRun {
208
231
  tags: [...tags, this.tag],
209
232
  last_retrieved: now.toISOString(),
210
233
  };
211
- if (!this.gated(stampOriginProject(this.s.hippoRoot, { ...revived, strength: calculateStrength(revived, now, { ablation: strengthAblation() }) })))
234
+ if (!this.gated(this.tx.stampOrigin({
235
+ ...revived,
236
+ strength: calculateStrength(revived, now, { ablation: strengthAblation() }),
237
+ }))) {
212
238
  return;
213
- deleteDormantRow(this.s.db, this.s.tenantId, dormantId);
214
- appendAuditEvent(this.s.db, {
239
+ }
240
+ this.tx.deleteDormant(this.s.tenantId, dormantId);
241
+ this.tx.appendAudit({
215
242
  tenantId: this.s.tenantId,
216
243
  actor: SYNC_ACTOR,
217
244
  op: 'agent_memory_restore',
@@ -222,7 +249,7 @@ class ContainerRun {
222
249
  }
223
250
  setAside(row) {
224
251
  const why = this.items.has(splitSource(row.source, this.w.prefix).key) ? 'note-changed' : 'note-gone';
225
- const result = setAsideRow(this.s.db, this.tag, row, why);
252
+ const result = this.tx.setAside(this.tag, row, why);
226
253
  if (result.kind === 'untagged') {
227
254
  this.tally.untagged++;
228
255
  this.mirror.push(result.entry);
@@ -3,10 +3,16 @@ import type { Adapter, AdapterContext, Listing } from './types.js';
3
3
  /** Claude Code's rule: a linked worktree shares its main checkout's folder, or the git folder's when that sits outside
4
4
  * a checkout (a bare repository, or --separate-git-dir); any other checkout, a submodule included, keeps its own. */
5
5
  export declare function claudeCheckoutRoot(top: string, gitDir: string, common: string): string;
6
- /** Claude Code's folder name for a path: non-alphanumerics made '-', and a name over 200 characters cut to 200 plus a base-36 hash of the whole path. */
6
+ /**
7
+ * Claude Code's folder name for a path: non-alphanumerics made '-', and a name over 200 characters cut to 200 plus a
8
+ * base-36 hash of the whole path.
9
+ */
7
10
  export declare function claudeFolderName(root: string): string;
8
11
  export declare const claudeCodeAdapter: Adapter;
9
- /** A session's own notes folder and nothing else, with no git call, so post-compact can read it inside the hook's time limit. */
12
+ /**
13
+ * A session's own notes folder and nothing else, with no git call, so post-compact can read it inside the hook's time
14
+ * limit.
15
+ */
10
16
  export declare function claudeTranscriptListing(ctx: AdapterContext, transcriptPath: string): Listing;
11
17
  /** The project a session folder's notes belong to: the one Claude named the folder
12
18
  * for, the session's start folder, else cwd or a parent; null when none matches. */
@@ -1,4 +1,5 @@
1
- // Claude Code's auto memory: frontmatter `.md` notes in a per-project folder, plus the `autoMemoryDirectory` user folder.
1
+ // Claude Code's auto memory: frontmatter `.md` notes in a per-project folder, plus the `autoMemoryDirectory` user
2
+ // folder.
2
3
  import fs from 'node:fs';
3
4
  import path from 'node:path';
4
5
  import { resolveProjectIdentity } from '../core/project-identity.js';
@@ -13,7 +14,10 @@ import { errorMessage } from '../util/log.js';
13
14
  const NAME_SLUG_MAX_CHARS = 200;
14
15
  // Keeps a pinned name from carrying a separator or `..` out of the projects folder.
15
16
  const PROJECT_DIR_NAME = /^[A-Za-z0-9_-]{1,64}$/;
16
- /** Claude Code's auto memory folder names for a project: its checkout, which subfolders share, or the folder itself outside a repository. */
17
+ /**
18
+ * Claude Code's auto memory folder names for a project: its checkout, which subfolders share, or the folder itself
19
+ * outside a repository.
20
+ */
17
21
  function claudeMemoryFolderNames(projectRoot, platform) {
18
22
  const roots = [projectRoot, realpathOrResolve(projectRoot)];
19
23
  const layout = gitLayout(projectRoot);
@@ -30,7 +34,10 @@ export function claudeCheckoutRoot(top, gitDir, common) {
30
34
  return path.dirname(common);
31
35
  return fs.existsSync(path.join(common, '.git')) ? top : common;
32
36
  }
33
- /** Claude Code's folder name for a path: non-alphanumerics made '-', and a name over 200 characters cut to 200 plus a base-36 hash of the whole path. */
37
+ /**
38
+ * Claude Code's folder name for a path: non-alphanumerics made '-', and a name over 200 characters cut to 200 plus a
39
+ * base-36 hash of the whole path.
40
+ */
34
41
  export function claudeFolderName(root) {
35
42
  const full = path.resolve(root);
36
43
  const name = full.replace(/[^a-zA-Z0-9]/g, '-');
@@ -50,11 +57,19 @@ export const claudeCodeAdapter = {
50
57
  return { tool: 'claude-code', home: config, containers: readFolders(folders, scope, ctx.platform), warnings };
51
58
  },
52
59
  };
53
- /** A session's own notes folder and nothing else, with no git call, so post-compact can read it inside the hook's time limit. */
60
+ /**
61
+ * A session's own notes folder and nothing else, with no git call, so post-compact can read it inside the hook's time
62
+ * limit.
63
+ */
54
64
  export function claudeTranscriptListing(ctx, transcriptPath) {
55
65
  const config = claudeConfigDir(ctx.home, ctx.env);
56
66
  const folder = path.join(path.dirname(transcriptPath), 'memory');
57
- return { tool: 'claude-code', home: config, containers: readFolders([folder], 'project', ctx.platform), warnings: [] };
67
+ return {
68
+ tool: 'claude-code',
69
+ home: config,
70
+ containers: readFolders([folder], 'project', ctx.platform),
71
+ warnings: [],
72
+ };
58
73
  }
59
74
  /** The project a session folder's notes belong to: the one Claude named the folder
60
75
  * for, the session's start folder, else cwd or a parent; null when none matches. */
@@ -71,15 +86,19 @@ export function transcriptNotesProject(transcriptPath, cwd, machine) {
71
86
  for (const from of [start, cwd]) {
72
87
  for (let dir = from === null ? null : path.resolve(from); dir !== null; dir = path.dirname(dir) === dir ? null : path.dirname(dir)) {
73
88
  // A folder gone from disk resolves to its bare name, never the project it was in, so it decides nothing.
74
- if ([dir, realpathOrResolve(dir)].some((d) => fold(claudeFolderName(d)) === folder))
89
+ if ([dir, realpathOrResolve(dir)].some((d) => fold(claudeFolderName(d)) === folder)) {
75
90
  return fs.existsSync(dir) ? resolveProjectIdentity(dir) : null;
91
+ }
76
92
  }
77
93
  }
78
94
  return null;
79
95
  }
80
96
  // Claude writes the cwd on each message line after a few header lines; 64 KB holds the first with room to spare.
81
97
  const START_SCAN_BYTES = 64 * 1024;
82
- /** The cwd on the transcript's first line that has one: the folder Claude named the session folder for, which a folder name alone cannot give back. */
98
+ /**
99
+ * The cwd on the transcript's first line that has one: the folder Claude named the session folder for, which a folder
100
+ * name alone cannot give back.
101
+ */
83
102
  function transcriptStartCwd(transcriptPath) {
84
103
  let fd;
85
104
  try {
@@ -1,4 +1,5 @@
1
- // GitHub Copilot Chat in VS Code: memory-tool files under VS Code's own data folders, one set per product and workspace.
1
+ // GitHub Copilot Chat in VS Code: memory-tool files under VS Code's own data folders, one set per product and
2
+ // workspace.
2
3
  import fs from 'node:fs';
3
4
  import path from 'node:path';
4
5
  import { readTextFile } from './files.js';
@@ -7,7 +7,8 @@ const MAX_DEPTH = 8;
7
7
  /** A file's text, or why it was skipped: empty, too big, holds a NUL byte (not text), or unreadable. */
8
8
  export function readTextFile(file) {
9
9
  try {
10
- // O_NONBLOCK opens a FIFO at once, for the file check to turn away; Windows has no such flag and the OR adds nothing.
10
+ // O_NONBLOCK opens a FIFO at once, for the file check to turn away; Windows has no such flag and the OR adds
11
+ // nothing.
11
12
  const fd = fs.openSync(file, fs.constants.O_RDONLY | fs.constants.O_NONBLOCK);
12
13
  try {
13
14
  return readOpenTextFile(file, fd);
@@ -1,5 +1,5 @@
1
- import type { DatabaseSyncLike } from '../db/index.js';
2
1
  import type { MemoryEntry } from '../core/memory.js';
2
+ import type { ImportTarget } from '../store/port/agent-import.js';
3
3
  import type { Listing } from './types.js';
4
4
  export declare const LEGACY_SOURCE_PREFIX = "claude-memory:";
5
5
  export interface ContainerLegacy {
@@ -12,6 +12,9 @@ export interface LegacyWork {
12
12
  /** Rows about to take a note's key, which stop counting as text another path stored. */
13
13
  readonly adopted: ReadonlySet<string>;
14
14
  }
15
- /** Matched once across all the store's Claude folders, before any container's transaction; each adoption re-checks its row inside one. */
16
- export declare function legacyWork(db: DatabaseSyncLike, tenantId: string, listings: readonly Listing[]): LegacyWork;
15
+ /**
16
+ * Matched once across all the store's Claude folders, before any container's transaction; each adoption re-checks its
17
+ * row inside one.
18
+ */
19
+ export declare function legacyWork(target: ImportTarget, listings: readonly Listing[]): LegacyWork;
17
20
  //# sourceMappingURL=legacy.d.ts.map
@@ -2,40 +2,61 @@
2
2
  import path from 'node:path';
3
3
  import { duplicateKey } from '../util/same-text.js';
4
4
  import { maskEmails } from '../util/secret-detect.js';
5
- import { selectLiveEntriesBySourcePrefix } from '../store/entry-reads.js';
6
5
  import { matchLegacy } from './plan.js';
7
6
  import { MIN_ITEM_CHARS, storedText } from './source.js';
8
7
  export const LEGACY_SOURCE_PREFIX = 'claude-memory:';
9
8
  const LEGACY_TAG = 'claude-code-memory';
10
- /** Matched once across all the store's Claude folders, before any container's transaction; each adoption re-checks its row inside one. */
11
- export function legacyWork(db, tenantId, listings) {
12
- const containers = listings.filter((l) => l.tool === 'claude-code').flatMap((l) => l.containers).filter((c) => c.readable);
13
- const rows = containers.length === 0
14
- ? []
15
- : selectLiveEntriesBySourcePrefix(db, tenantId, LEGACY_SOURCE_PREFIX).filter((r) => r.tags.includes(LEGACY_TAG));
16
- const byContainer = new Map();
17
- if (rows.length === 0)
18
- return { byContainer, adopted: new Set() };
9
+ function legacyTargets(containers) {
19
10
  const refs = [];
20
11
  const targets = [];
21
12
  for (const container of containers) {
22
13
  for (const item of container.items) {
23
14
  if (item.text.trim().length < MIN_ITEM_CHARS)
24
15
  continue;
25
- targets.push({ ref: String(refs.length), file: path.posix.basename(item.key), textKey: duplicateKey(storedText(item.text)) });
16
+ targets.push({
17
+ ref: String(refs.length),
18
+ file: path.posix.basename(item.key),
19
+ textKey: duplicateKey(storedText(item.text)),
20
+ });
26
21
  refs.push({ dir: container.path, key: item.key });
27
22
  }
28
23
  }
24
+ return { refs, targets };
25
+ }
26
+ /**
27
+ * Matched once across all the store's Claude folders, before any container's transaction; each adoption re-checks its
28
+ * row inside one.
29
+ */
30
+ export function legacyWork(target, listings) {
31
+ const containers = listings
32
+ .filter((l) => l.tool === 'claude-code')
33
+ .flatMap((l) => l.containers)
34
+ .filter((c) => c.readable);
35
+ const rows = containers.length === 0
36
+ ? []
37
+ : target.liveBySourcePrefix(LEGACY_SOURCE_PREFIX).filter((r) => r.tags.includes(LEGACY_TAG));
38
+ const byContainer = new Map();
39
+ if (rows.length === 0)
40
+ return { byContainer, adopted: new Set() };
41
+ const { refs, targets } = legacyTargets(containers);
29
42
  const match = matchLegacy(
30
- // The old import kept emails in clear, and targets are masked; without the mask those rows never matched and imported twice.
31
- rows.map((r) => ({ id: r.id, file: r.source.slice(LEGACY_SOURCE_PREFIX.length), textKey: duplicateKey(maskEmails(r.content)) })), targets);
43
+ // The old import kept emails in clear, and targets are masked; without the mask those rows never matched and
44
+ // imported twice.
45
+ rows.map((r) => ({
46
+ id: r.id,
47
+ file: r.source.slice(LEGACY_SOURCE_PREFIX.length),
48
+ textKey: duplicateKey(maskEmails(r.content)),
49
+ })), targets);
32
50
  const byId = new Map(rows.map((r) => [r.id, r]));
33
51
  const add = (pick, ref, id) => {
34
52
  const { dir, key } = refs[Number(ref)];
35
53
  const row = byId.get(id);
36
54
  if (row === undefined)
37
55
  return;
38
- const found = byContainer.get(dir) ?? { adopt: new Map(), replace: new Map() };
56
+ const found = byContainer.get(dir) ?? {
57
+ adopt: new Map(),
58
+ replace: new Map(),
59
+ };
39
60
  byContainer.set(dir, found);
40
61
  found[pick].set(key, [...(found[pick].get(key) ?? []), row]);
41
62
  };
@@ -1,4 +1,6 @@
1
- /** Splits one markdown memory file into items (a top-level bullet or a paragraph), each tagged with its heading. Pure. */
1
+ /**
2
+ * Splits one markdown memory file into items (a top-level bullet or a paragraph), each tagged with its heading. Pure.
3
+ */
2
4
  export interface MarkdownItem {
3
5
  readonly heading: string;
4
6
  readonly headingSlug: string;
@@ -1,4 +1,6 @@
1
- /** Splits one markdown memory file into items (a top-level bullet or a paragraph), each tagged with its heading. Pure. */
1
+ /**
2
+ * Splits one markdown memory file into items (a top-level bullet or a paragraph), each tagged with its heading. Pure.
3
+ */
2
4
  const HEADING = /^#{1,6}\s+/;
3
5
  // Column 0 only: an indented marker is a sub-bullet and stays inside its item.
4
6
  const BULLET = /^(?:[-*+]|\d+[.)]) /;
@@ -11,7 +11,8 @@ export const openclawAdapter = {
11
11
  return { tool: 'openclaw', home, containers: scope === 'user' ? userContainers(home) : [], warnings: [] };
12
12
  },
13
13
  };
14
- // SHORTCUT: agents.defaults.workspace in openclaw.json is not read (the file allows comments, and there is no parser for that here); read it if users ask.
14
+ // SHORTCUT: agents.defaults.workspace in openclaw.json is not read (the file allows comments, and there is no parser
15
+ // for that here); read it if users ask.
15
16
  function workspaceDir(ctx) {
16
17
  const { OPENCLAW_WORKSPACE_DIR: workspace } = ctx.env;
17
18
  return path.resolve(workspace || path.join(stateDir(ctx), 'workspace'));
@@ -29,7 +30,9 @@ function userContainers(workspace) {
29
30
  return [];
30
31
  const read = readTextFile(file);
31
32
  if (!read.ok) {
32
- return [{ scope: 'user', path: file, readable: false, items: [], skipped: [], warnings: [read.reason], textKeyed: true }];
33
+ return [
34
+ { scope: 'user', path: file, readable: false, items: [], skipped: [], warnings: [read.reason], textKeyed: true },
35
+ ];
33
36
  }
34
37
  const stored = splitMarkdownItems(read.text).map(({ heading, headingSlug, text }) => ({
35
38
  headingSlug,
@@ -2,7 +2,17 @@
2
2
  export function planContainer(input) {
3
3
  const live = groupByKey(input.live);
4
4
  const dormant = groupByKey(input.dormant);
5
- const draft = { unchanged: 0, retag: [], collapse: [], writes: [], fresh: [], restores: [], setAside: [], duplicates: 0, refused: 0 };
5
+ const draft = {
6
+ unchanged: 0,
7
+ retag: [],
8
+ collapse: [],
9
+ writes: [],
10
+ fresh: [],
11
+ restores: [],
12
+ setAside: [],
13
+ duplicates: 0,
14
+ refused: 0,
15
+ };
6
16
  for (const item of input.items)
7
17
  planItem(input, item, live.get(item.key) ?? [], dormant.get(item.key) ?? [], draft);
8
18
  const read = new Set([...input.items.map((i) => i.key), ...input.skipped]);
@@ -1,4 +1,5 @@
1
- // Project names folded into others, read from the audit trail: the sync files imports under the surviving name, and `hippo projects` repair agrees.
1
+ // Project names folded into others, read from the audit trail: the sync files imports under the surviving name, and
2
+ // `hippo projects` repair agrees.
2
3
  import { isObjectLike, isStringValue } from '../core/capture-contract.js';
3
4
  function foldOf(value) {
4
5
  if (!isObjectLike(value) || Array.isArray(value))
@@ -48,6 +48,9 @@ export declare function mergeReports(into: ImportReport, from: ImportReport): vo
48
48
  export declare function totalTally(report: ImportReport): Tally;
49
49
  /** `hippo import --agents`: each tool's home, its folders and what moved; in a dry run, what would have. */
50
50
  export declare function detailLines(report: ImportReport, dryRun: boolean): string[];
51
- /** "Imported 12 agent memories (Claude Code 10, Codex 2); 1 replaced, 1 set aside, 1 skipped for a secret.", or null when nothing moved. */
51
+ /**
52
+ * "Imported 12 agent memories (Claude Code 10, Codex 2); 1 replaced, 1 set aside, 1 skipped for a secret.", or null
53
+ * when nothing moved.
54
+ */
52
55
  export declare function summaryLine(report: ImportReport): string | null;
53
56
  //# sourceMappingURL=report.d.ts.map
@@ -2,8 +2,24 @@
2
2
  import { AGENT_MEMORY_TOOLS } from '../core/agent-memory-tools.js';
3
3
  export function emptyTally() {
4
4
  return {
5
- imported: 0, replaced: 0, restored: 0, setAside: 0, untagged: 0, unchanged: 0, adopted: 0, renamed: 0, collapsed: 0, retagged: 0,
6
- handedOver: 0, duplicate: 0, secret: 0, short: 0, rejected: 0, unread: 0, unreadable: 0, busy: 0,
5
+ imported: 0,
6
+ replaced: 0,
7
+ restored: 0,
8
+ setAside: 0,
9
+ untagged: 0,
10
+ unchanged: 0,
11
+ adopted: 0,
12
+ renamed: 0,
13
+ collapsed: 0,
14
+ retagged: 0,
15
+ handedOver: 0,
16
+ duplicate: 0,
17
+ secret: 0,
18
+ short: 0,
19
+ rejected: 0,
20
+ unread: 0,
21
+ unreadable: 0,
22
+ busy: 0,
7
23
  };
8
24
  }
9
25
  const TALLY_FIELDS = Object.keys(emptyTally()).filter(isTallyField);
@@ -46,11 +62,24 @@ export function totalTally(report) {
46
62
  }
47
63
  const plural = (n, one, many) => `${n} ${n === 1 ? one : many}`;
48
64
  const TALLY_WORDS = {
49
- imported: 'new', replaced: 'replaced', restored: 'brought back', setAside: 'set aside', untagged: 'pinned and kept',
50
- unchanged: 'unchanged', adopted: 'taken over from the old Claude import', renamed: 'moved to the project id', collapsed: 'duplicates folded',
65
+ imported: 'new',
66
+ replaced: 'replaced',
67
+ restored: 'brought back',
68
+ setAside: 'set aside',
69
+ untagged: 'pinned and kept',
70
+ unchanged: 'unchanged',
71
+ adopted: 'taken over from the old Claude import',
72
+ renamed: 'moved to the project id',
73
+ collapsed: 'duplicates folded',
51
74
  retagged: 'retagged',
52
- handedOver: 'handed over from the global store', duplicate: 'already stored', secret: 'skipped for a secret', short: 'too short',
53
- rejected: 'skipped as rejected', unread: 'files skipped', unreadable: 'unreadable folders', busy: 'busy folders',
75
+ handedOver: 'handed over from the global store',
76
+ duplicate: 'already stored',
77
+ secret: 'skipped for a secret',
78
+ short: 'too short',
79
+ rejected: 'skipped as rejected',
80
+ unread: 'files skipped',
81
+ unreadable: 'unreadable folders',
82
+ busy: 'busy folders',
54
83
  };
55
84
  /** `hippo import --agents`: each tool's home, its folders and what moved; in a dry run, what would have. */
56
85
  export function detailLines(report, dryRun) {
@@ -64,12 +93,17 @@ export function detailLines(report, dryRun) {
64
93
  const moved = TALLY_FIELDS.filter((f) => t.tally[f] > 0).map((f) => `${t.tally[f]} ${TALLY_WORDS[f]}`);
65
94
  if (moved.length > 0)
66
95
  lines.push(` ${dryRun ? 'would be ' : ''}${moved.join(', ')}`);
67
- if (t.unlisted > 0)
68
- lines.push(` ${plural(t.unlisted, 'kept row sits', 'kept rows sit')} in folders not listed this run (a moved project's old copy)`);
96
+ if (t.unlisted > 0) {
97
+ lines.push(` ${plural(t.unlisted, 'kept row sits', 'kept rows sit')} in folders not listed this run (a moved ` +
98
+ `project's old copy)`);
99
+ }
69
100
  }
70
101
  return lines;
71
102
  }
72
- /** "Imported 12 agent memories (Claude Code 10, Codex 2); 1 replaced, 1 set aside, 1 skipped for a secret.", or null when nothing moved. */
103
+ /**
104
+ * "Imported 12 agent memories (Claude Code 10, Codex 2); 1 replaced, 1 set aside, 1 skipped for a secret.", or null
105
+ * when nothing moved.
106
+ */
73
107
  export function summaryLine(report) {
74
108
  const total = totalTally(report);
75
109
  const parts = [
@@ -2,7 +2,10 @@ import { type ToolId } from '../core/agent-memory-tools.js';
2
2
  import type { Scope } from './types.js';
3
3
  export declare const CONTENT_CAP = 1500;
4
4
  export declare const MIN_ITEM_CHARS = 10;
5
- /** `p-`/`u-` and 12 hex of the real path, so no user path reaches a row; `origin` parts projects sharing a folder in the global store. */
5
+ /**
6
+ * `p-`/`u-` and 12 hex of the real path, so no user path reaches a row; `origin` parts projects sharing a folder in the
7
+ * global store.
8
+ */
6
9
  export declare function containerId(dir: string, scope: Scope, platform: NodeJS.Platform, origin?: string): string;
7
10
  export declare function containerPrefix(tool: ToolId, container: string): string;
8
11
  export declare function itemSource(prefix: string, key: string, text: string): string;
@@ -11,6 +14,9 @@ export declare function splitSource(source: string, prefix: string): {
11
14
  readonly key: string;
12
15
  readonly hash: string;
13
16
  };
14
- /** The text as stored: emails masked as on every capture path, then the old Claude import's cap; the hash still sees the raw note. */
17
+ /**
18
+ * The text as stored: emails masked as on every capture path, then the old Claude import's cap; the hash still sees the
19
+ * raw note.
20
+ */
15
21
  export declare function storedText(text: string): string;
16
22
  //# sourceMappingURL=source.d.ts.map