hippo-memory 1.69.0 → 1.70.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 (860) hide show
  1. package/README.md +5 -2
  2. package/dist/agent-memories/apply.d.ts +3 -3
  3. package/dist/agent-memories/apply.js +16 -31
  4. package/dist/agent-memories/claude-code.d.ts +1 -3
  5. package/dist/agent-memories/claude-code.js +11 -7
  6. package/dist/agent-memories/copilot.js +3 -2
  7. package/dist/agent-memories/files.js +3 -2
  8. package/dist/agent-memories/gemini.js +6 -5
  9. package/dist/agent-memories/keys.js +3 -2
  10. package/dist/agent-memories/legacy.d.ts +2 -2
  11. package/dist/agent-memories/legacy.js +2 -2
  12. package/dist/agent-memories/report.d.ts +1 -1
  13. package/dist/agent-memories/report.js +1 -1
  14. package/dist/agent-memories/source.d.ts +1 -1
  15. package/dist/agent-memories/source.js +6 -5
  16. package/dist/agent-memories/sync.d.ts +1 -1
  17. package/dist/agent-memories/sync.js +24 -33
  18. package/dist/agent-memories/types.d.ts +1 -1
  19. package/dist/api/assemble.d.ts +2 -2
  20. package/dist/api/assemble.js +42 -32
  21. package/dist/api/audit.d.ts +4 -7
  22. package/dist/api/audit.js +6 -20
  23. package/dist/api/auth.d.ts +5 -18
  24. package/dist/api/auth.js +44 -194
  25. package/dist/api/auto-sleep.d.ts +13 -0
  26. package/dist/api/auto-sleep.js +32 -0
  27. package/dist/{availability.d.ts → api/availability.d.ts} +2 -2
  28. package/dist/{availability.js → api/availability.js} +12 -29
  29. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  30. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  31. package/dist/{context-render.js → api/context-render.js} +7 -6
  32. package/dist/api/context-select.d.ts +5 -5
  33. package/dist/api/context-select.js +37 -45
  34. package/dist/api/context-types.d.ts +5 -5
  35. package/dist/api/context.d.ts +2 -4
  36. package/dist/api/context.js +48 -61
  37. package/dist/api/dormant.d.ts +3 -3
  38. package/dist/api/dormant.js +38 -107
  39. package/dist/api/drill-down.d.ts +2 -2
  40. package/dist/api/drill-down.js +37 -65
  41. package/dist/api/forget.d.ts +2 -11
  42. package/dist/api/forget.js +13 -46
  43. package/dist/api/goals.d.ts +1 -1
  44. package/dist/api/goals.js +2 -2
  45. package/dist/api/index.d.ts +26 -0
  46. package/dist/api/index.js +29 -0
  47. package/dist/api/instruction-detect.js +74 -0
  48. package/dist/api/learn.js +63 -55
  49. package/dist/api/ledger-db.d.ts +20 -0
  50. package/dist/api/ledger-db.js +79 -0
  51. package/dist/api/on-store.d.ts +16 -0
  52. package/dist/api/on-store.js +36 -0
  53. package/dist/api/outcome.d.ts +5 -42
  54. package/dist/api/outcome.js +15 -80
  55. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  56. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  57. package/dist/api/promote.d.ts +4 -15
  58. package/dist/api/promote.js +29 -106
  59. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
  60. package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
  61. package/dist/api/quarantine.d.ts +5 -5
  62. package/dist/api/quarantine.js +30 -106
  63. package/dist/api/recall-core.d.ts +4 -0
  64. package/dist/api/recall-core.js +112 -0
  65. package/dist/{recall-history.js → api/recall-history.js} +30 -25
  66. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
  67. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
  68. package/dist/api/recall-record.d.ts +10 -13
  69. package/dist/api/recall-record.js +10 -30
  70. package/dist/api/recall-request.d.ts +2 -2
  71. package/dist/api/recall-request.js +3 -3
  72. package/dist/api/recall-types.d.ts +41 -16
  73. package/dist/api/recall.d.ts +1 -1
  74. package/dist/api/recall.js +39 -37
  75. package/dist/api/remember.d.ts +10 -12
  76. package/dist/api/remember.js +29 -45
  77. package/dist/api/session-owners.d.ts +4 -0
  78. package/dist/api/session-owners.js +17 -0
  79. package/dist/api/sleep-run.d.ts +7 -7
  80. package/dist/api/sleep-run.js +63 -75
  81. package/dist/api/sleep.d.ts +1 -1
  82. package/dist/api/tokens.d.ts +2 -2
  83. package/dist/api/tokens.js +9 -21
  84. package/dist/api/types.d.ts +2 -2
  85. package/dist/api/types.js +1 -1
  86. package/dist/capture/caller-session.d.ts +2 -2
  87. package/dist/capture/caller-session.js +8 -8
  88. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  89. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  90. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  91. package/dist/capture/command.d.ts +1 -1
  92. package/dist/capture/command.js +54 -41
  93. package/dist/capture/compact-resume-caller.d.ts +1 -1
  94. package/dist/capture/compact-resume-caller.js +7 -7
  95. package/dist/capture/compact.d.ts +4 -1
  96. package/dist/capture/compact.js +40 -22
  97. package/dist/capture/compaction-items-caller.d.ts +1 -1
  98. package/dist/capture/compaction-items-caller.js +7 -5
  99. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  100. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  101. package/dist/{compaction-record.js → capture/compaction-record.js} +48 -94
  102. package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
  103. package/dist/capture/copilot-transcript.js +1 -1
  104. package/dist/capture/extract.js +2 -2
  105. package/dist/capture/failure-caller.d.ts +2 -2
  106. package/dist/capture/failure-caller.js +6 -6
  107. package/dist/capture/failure-reading.d.ts +2 -5
  108. package/dist/capture/failure-reading.js +11 -12
  109. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  110. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  111. package/dist/capture/pre-compact-caller.d.ts +1 -1
  112. package/dist/capture/pre-compact-caller.js +2 -2
  113. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +1 -5
  114. package/dist/{session-digest.js → capture/session-digest.js} +17 -23
  115. package/dist/capture/session-end-caller.d.ts +2 -2
  116. package/dist/capture/session-end-caller.js +1 -1
  117. package/dist/capture/session-texts.d.ts +1 -1
  118. package/dist/capture/session-texts.js +5 -5
  119. package/dist/capture/session-worker.js +6 -4
  120. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  121. package/dist/capture/transcript.js +68 -74
  122. package/dist/capture/working-state.d.ts +0 -3
  123. package/dist/capture/working-state.js +7 -7
  124. package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
  125. package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
  126. package/dist/cli/audit.d.ts +2 -2
  127. package/dist/cli/audit.js +77 -72
  128. package/dist/cli/auth.d.ts +2 -1
  129. package/dist/cli/auth.js +18 -20
  130. package/dist/cli/briefs.d.ts +4 -3
  131. package/dist/cli/briefs.js +59 -181
  132. package/dist/cli/card.d.ts +2 -1
  133. package/dist/cli/card.js +25 -23
  134. package/dist/{client.d.ts → cli/client.d.ts} +1 -1
  135. package/dist/{client.js → cli/client.js} +1 -1
  136. package/dist/cli/compact-resume-payload.d.ts +8 -0
  137. package/dist/cli/compact-resume-payload.js +39 -0
  138. package/dist/cli/context.d.ts +2 -13
  139. package/dist/cli/context.js +41 -71
  140. package/dist/cli/continuity.d.ts +6 -5
  141. package/dist/cli/continuity.js +109 -99
  142. package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
  143. package/dist/cli/curate.d.ts +9 -9
  144. package/dist/cli/curate.js +177 -149
  145. package/dist/cli/dag.d.ts +4 -4
  146. package/dist/cli/dag.js +46 -34
  147. package/dist/cli/decisions.d.ts +4 -3
  148. package/dist/cli/decisions.js +108 -218
  149. package/dist/cli/eval.d.ts +1 -3
  150. package/dist/cli/eval.js +43 -31
  151. package/dist/cli/explain.d.ts +1 -1
  152. package/dist/cli/explain.js +35 -19
  153. package/dist/cli/flag-values.d.ts +25 -0
  154. package/dist/cli/flag-values.js +103 -0
  155. package/dist/cli/flags.d.ts +303 -0
  156. package/dist/cli/flags.js +169 -0
  157. package/dist/cli/goals.d.ts +2 -1
  158. package/dist/cli/goals.js +39 -34
  159. package/dist/cli/hook-runtime.d.ts +49 -0
  160. package/dist/cli/hook-runtime.js +155 -0
  161. package/dist/cli/init.d.ts +2 -1
  162. package/dist/cli/init.js +151 -118
  163. package/dist/cli/install-steps.d.ts +7 -0
  164. package/dist/cli/install-steps.js +110 -0
  165. package/dist/cli/last-sleep.d.ts +2 -1
  166. package/dist/cli/last-sleep.js +9 -7
  167. package/dist/cli/maintenance.d.ts +5 -4
  168. package/dist/cli/maintenance.js +31 -27
  169. package/dist/cli/object-verbs.d.ts +40 -0
  170. package/dist/cli/object-verbs.js +65 -0
  171. package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
  172. package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
  173. package/dist/cli/playbooks.d.ts +4 -3
  174. package/dist/cli/playbooks.js +77 -280
  175. package/dist/cli/print.d.ts +18 -0
  176. package/dist/cli/print.js +85 -0
  177. package/dist/cli/projects.d.ts +2 -3
  178. package/dist/cli/projects.js +56 -49
  179. package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
  180. package/dist/cli/quality-repair-once.js +4 -4
  181. package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
  182. package/dist/cli/recall.d.ts +2 -4
  183. package/dist/cli/recall.js +101 -150
  184. package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
  185. package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
  186. package/dist/cli/remember.d.ts +1 -3
  187. package/dist/cli/remember.js +124 -103
  188. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
  189. package/dist/{scheduler.js → cli/scheduler.js} +13 -7
  190. package/dist/cli/serve.d.ts +1 -1
  191. package/dist/cli/serve.js +34 -4
  192. package/dist/cli/session-hooks.d.ts +4 -4
  193. package/dist/cli/session-hooks.js +190 -184
  194. package/dist/cli/setup.d.ts +2 -1
  195. package/dist/cli/setup.js +41 -21
  196. package/dist/cli/shared.d.ts +5 -95
  197. package/dist/cli/shared.js +18 -369
  198. package/dist/cli/slack.d.ts +2 -1
  199. package/dist/cli/slack.js +31 -55
  200. package/dist/cli/sleep-render.d.ts +4 -0
  201. package/dist/cli/sleep-render.js +61 -0
  202. package/dist/cli/sleep.d.ts +2 -8
  203. package/dist/cli/sleep.js +20 -76
  204. package/dist/cli/status.d.ts +3 -3
  205. package/dist/cli/status.js +39 -41
  206. package/dist/{stdin.js → cli/stdin.js} +6 -6
  207. package/dist/cli/transfer.d.ts +4 -4
  208. package/dist/cli/transfer.js +68 -42
  209. package/dist/cli/usage.js +4 -2
  210. package/dist/cli.d.ts +289 -5
  211. package/dist/cli.js +184 -117
  212. package/dist/connectors/dlq.d.ts +44 -0
  213. package/dist/connectors/dlq.js +30 -0
  214. package/dist/connectors/github/backfill.d.ts +1 -1
  215. package/dist/connectors/github/backfill.js +29 -66
  216. package/dist/connectors/github/cli-impl.js +59 -74
  217. package/dist/connectors/github/deletion.d.ts +5 -6
  218. package/dist/connectors/github/deletion.js +18 -52
  219. package/dist/connectors/github/dlq.d.ts +7 -61
  220. package/dist/connectors/github/dlq.js +19 -119
  221. package/dist/connectors/github/ingest.d.ts +2 -31
  222. package/dist/connectors/github/ingest.js +20 -83
  223. package/dist/connectors/github/octokit-client.d.ts +1 -1
  224. package/dist/connectors/github/octokit-client.js +2 -1
  225. package/dist/connectors/github/tenant-routing.d.ts +2 -2
  226. package/dist/connectors/github/tenant-routing.js +10 -36
  227. package/dist/connectors/github/transform.d.ts +1 -1
  228. package/dist/connectors/github/types.d.ts +1 -1
  229. package/dist/connectors/github/types.js +15 -18
  230. package/dist/connectors/github/webhook.d.ts +3 -2
  231. package/dist/connectors/github/webhook.js +84 -87
  232. package/dist/connectors/slack/backfill.d.ts +1 -1
  233. package/dist/connectors/slack/backfill.js +5 -29
  234. package/dist/connectors/slack/deletion.d.ts +4 -7
  235. package/dist/connectors/slack/deletion.js +20 -49
  236. package/dist/connectors/slack/dlq.d.ts +7 -49
  237. package/dist/connectors/slack/dlq.js +25 -118
  238. package/dist/connectors/slack/ingest.d.ts +5 -18
  239. package/dist/connectors/slack/ingest.js +27 -91
  240. package/dist/connectors/slack/signature.js +2 -1
  241. package/dist/connectors/slack/tenant-routing.d.ts +4 -1
  242. package/dist/connectors/slack/tenant-routing.js +13 -14
  243. package/dist/connectors/slack/transform.d.ts +1 -1
  244. package/dist/connectors/slack/types.d.ts +1 -1
  245. package/dist/connectors/slack/types.js +3 -12
  246. package/dist/connectors/slack/web-client.js +2 -2
  247. package/dist/connectors/slack/webhook.d.ts +3 -2
  248. package/dist/connectors/slack/webhook.js +75 -82
  249. package/dist/connectors/slack/workspaces.d.ts +4 -17
  250. package/dist/connectors/slack/workspaces.js +4 -34
  251. package/dist/consolidate/conflicts.d.ts +1 -1
  252. package/dist/consolidate/conflicts.js +4 -4
  253. package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
  254. package/dist/{dag.js → consolidate/dag.js} +60 -81
  255. package/dist/consolidate/decay.d.ts +2 -2
  256. package/dist/consolidate/decay.js +28 -22
  257. package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
  258. package/dist/consolidate/flush-units.d.ts +2 -2
  259. package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
  260. package/dist/consolidate/half-life-migration.js +106 -0
  261. package/dist/consolidate/llm-passes.js +8 -8
  262. package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
  263. package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
  264. package/dist/consolidate/merge.js +57 -54
  265. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  266. package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
  267. package/dist/consolidate/physics-pass.js +46 -46
  268. package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
  269. package/dist/{replay.js → consolidate/replay.js} +2 -2
  270. package/dist/consolidate/run.d.ts +7 -13
  271. package/dist/consolidate/run.js +6 -37
  272. package/dist/consolidate/sleep.d.ts +1 -1
  273. package/dist/consolidate/sleep.js +64 -134
  274. package/dist/{trace.js → consolidate/trace.js} +4 -6
  275. package/dist/consolidate/traces.js +34 -29
  276. package/dist/{ablation.js → core/ablation.js} +1 -1
  277. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  278. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  279. package/dist/{ambient.js → core/ambient.js} +12 -10
  280. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +13 -2
  281. package/dist/{capture-contract.js → core/capture-contract.js} +64 -0
  282. package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
  283. package/dist/{compare.js → core/compare.js} +10 -3
  284. package/dist/{config.d.ts → core/config.d.ts} +6 -6
  285. package/dist/{config.js → core/config.js} +99 -72
  286. package/dist/core/handoff.js +87 -0
  287. package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
  288. package/dist/{memory.d.ts → core/memory.d.ts} +17 -5
  289. package/dist/{memory.js → core/memory.js} +110 -82
  290. package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
  291. package/dist/{physics.js → core/physics.js} +2 -1
  292. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
  293. package/dist/{project-identity.js → core/project-identity.js} +5 -17
  294. package/dist/{project-remote.js → core/project-remote.js} +4 -4
  295. package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
  296. package/dist/{salience.js → core/salience.js} +35 -20
  297. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  298. package/dist/{search/types.js → core/search-types.js} +1 -1
  299. package/dist/core/session-digest-row.d.ts +5 -0
  300. package/dist/core/session-digest-row.js +6 -0
  301. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  302. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +5 -5
  303. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  304. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  305. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +9 -9
  306. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
  307. package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
  308. package/dist/db/backup.js +1 -1
  309. package/dist/db/busy.d.ts +18 -1
  310. package/dist/db/busy.js +74 -9
  311. package/dist/db/connect.d.ts +10 -2
  312. package/dist/db/connect.js +43 -10
  313. package/dist/db/index.d.ts +9 -0
  314. package/dist/db/index.js +8 -0
  315. package/dist/db/meta.d.ts +4 -0
  316. package/dist/db/meta.js +11 -1
  317. package/dist/db/migrate.d.ts +8 -1
  318. package/dist/db/migrate.js +25 -30
  319. package/dist/db/migrations/v08.js +1 -1
  320. package/dist/db/migrations/v14.js +39 -35
  321. package/dist/db/migrations/v16.js +29 -26
  322. package/dist/db/migrations/v18.js +6 -5
  323. package/dist/db/migrations/v20.js +4 -2
  324. package/dist/db/migrations/v22.js +39 -36
  325. package/dist/db/migrations/v24.js +27 -22
  326. package/dist/db/migrations/v29.js +37 -32
  327. package/dist/db/migrations/v31.js +36 -31
  328. package/dist/db/migrations/v35.js +1 -1
  329. package/dist/db/migrations/v39.js +1 -1
  330. package/dist/db/migrations/v40.js +15 -14
  331. package/dist/db/migrations/v43.js +7 -6
  332. package/dist/db/migrations/v44.js +1 -1
  333. package/dist/db/migrations/v45.js +1 -1
  334. package/dist/db/migrations/v46.js +1 -1
  335. package/dist/db/migrations/v47.js +1 -1
  336. package/dist/db/migrations/v48.js +1 -1
  337. package/dist/db/migrations/v49.js +1 -1
  338. package/dist/db/migrations/v50.js +8 -7
  339. package/dist/db/migrations/v52.js +1 -1
  340. package/dist/db/open.d.ts +9 -1
  341. package/dist/db/open.js +21 -4
  342. package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
  343. package/dist/{physics-state.js → db/physics-state.js} +9 -16
  344. package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
  345. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
  346. package/dist/db/request-stores.d.ts +15 -2
  347. package/dist/db/request-stores.js +37 -15
  348. package/dist/db/tables.d.ts +2 -0
  349. package/dist/db/tables.js +6 -0
  350. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +4 -2
  351. package/dist/{vector-store.js → db/vector-store.js} +76 -51
  352. package/dist/db/wal-checkpointer.d.ts +11 -0
  353. package/dist/db/wal-checkpointer.js +92 -0
  354. package/dist/doctor.js +105 -136
  355. package/dist/entry/json-hooks.d.ts +1 -1
  356. package/dist/entry/json-hooks.js +1 -1
  357. package/dist/entry/project-identity.d.ts +1 -1
  358. package/dist/entry/project-identity.js +1 -1
  359. package/dist/entry/session-text.d.ts +3 -3
  360. package/dist/entry/session-text.js +3 -3
  361. package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
  362. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
  363. package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
  364. package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
  365. package/dist/{eval.js → eval/eval.js} +29 -22
  366. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
  367. package/dist/{judgment.js → eval/judgment.js} +4 -9
  368. package/dist/extensions/openclaw-plugin/index.js +1 -2
  369. package/dist/graph/delta.d.ts +3 -2
  370. package/dist/graph/delta.js +9 -23
  371. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +6 -6
  372. package/dist/{graph-extract.js → graph/extract.js} +37 -52
  373. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
  374. package/dist/{graph-recall.js → graph/recall.js} +55 -36
  375. package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
  376. package/dist/{graph-stream.js → graph/stream.js} +9 -7
  377. package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
  378. package/dist/{graph-view.js → graph/view.js} +127 -167
  379. package/dist/graph/write.d.ts +4 -76
  380. package/dist/graph/write.js +13 -397
  381. package/dist/hooks/codex-session.js +1 -1
  382. package/dist/hooks/codex-wrapper.js +14 -15
  383. package/dist/hooks/copilot.d.ts +1 -8
  384. package/dist/hooks/copilot.js +14 -15
  385. package/dist/{cli → hooks}/hook-blocks.js +1 -1
  386. package/dist/hooks/json-hooks.d.ts +1 -1
  387. package/dist/hooks/json-hooks.js +31 -122
  388. package/dist/hooks/opencode.js +35 -27
  389. package/dist/hooks/shared.d.ts +0 -4
  390. package/dist/hooks/shared.js +1 -5
  391. package/dist/importers/core.d.ts +2 -6
  392. package/dist/importers/core.js +41 -39
  393. package/dist/importers/markdown-parse.d.ts +1 -10
  394. package/dist/importers/markdown-parse.js +2 -19
  395. package/dist/importers/markdown.js +2 -1
  396. package/dist/importers/sources.js +50 -46
  397. package/dist/importers/vault.js +71 -92
  398. package/dist/index.d.ts +22 -22
  399. package/dist/index.js +21 -21
  400. package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
  401. package/dist/{autolearn.js → learn/autolearn.js} +13 -11
  402. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  403. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  404. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  405. package/dist/learn/extract.js +125 -0
  406. package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
  407. package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
  408. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
  409. package/dist/{invalidation.js → learn/invalidation.js} +83 -99
  410. package/dist/mcp/admin-tools.d.ts +1 -1
  411. package/dist/mcp/admin-tools.js +37 -60
  412. package/dist/mcp/format.d.ts +5 -5
  413. package/dist/mcp/format.js +7 -6
  414. package/dist/mcp/framing.d.ts +6 -0
  415. package/dist/mcp/framing.js +11 -3
  416. package/dist/mcp/memory-tools.js +7 -27
  417. package/dist/mcp/protocol.d.ts +6 -10
  418. package/dist/mcp/protocol.js +8 -14
  419. package/dist/mcp/recall-tools.d.ts +2 -2
  420. package/dist/mcp/recall-tools.js +68 -50
  421. package/dist/mcp/request.js +62 -60
  422. package/dist/mcp/server.js +1 -1
  423. package/dist/mcp/session-state.d.ts +1 -2
  424. package/dist/mcp/session-state.js +2 -2
  425. package/dist/mcp/shared-gate.js +1 -1
  426. package/dist/mcp/stdio.js +69 -31
  427. package/dist/mcp/tool-args.js +2 -1
  428. package/dist/mcp/tools.js +2 -2
  429. package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
  430. package/dist/objects/customer-notes.js +112 -0
  431. package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
  432. package/dist/objects/decisions.js +101 -0
  433. package/dist/objects/descriptor.d.ts +52 -0
  434. package/dist/objects/descriptor.js +4 -0
  435. package/dist/objects/fields.d.ts +15 -0
  436. package/dist/objects/fields.js +21 -0
  437. package/dist/{incidents.d.ts → objects/incidents.d.ts} +17 -44
  438. package/dist/objects/incidents.js +130 -0
  439. package/dist/objects/lifecycle.d.ts +27 -0
  440. package/dist/objects/lifecycle.js +96 -0
  441. package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
  442. package/dist/objects/policies.js +189 -0
  443. package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
  444. package/dist/objects/processes.js +146 -0
  445. package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
  446. package/dist/objects/project-briefs.js +255 -0
  447. package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
  448. package/dist/objects/skills.js +156 -0
  449. package/dist/postinstall.js +4 -2
  450. package/dist/predictions/planning-fallacy.d.ts +4 -76
  451. package/dist/predictions/planning-fallacy.js +4 -129
  452. package/dist/rerankers/clef.d.ts +2 -6
  453. package/dist/rerankers/clef.js +27 -47
  454. package/dist/rerankers/cross-encoder.d.ts +0 -7
  455. package/dist/rerankers/cross-encoder.js +15 -23
  456. package/dist/rerankers/index.js +8 -7
  457. package/dist/rerankers/jev.d.ts +1 -4
  458. package/dist/rerankers/jev.js +30 -49
  459. package/dist/rerankers/llm.d.ts +2 -4
  460. package/dist/rerankers/llm.js +33 -50
  461. package/dist/rerankers/outage-warning.d.ts +7 -0
  462. package/dist/rerankers/outage-warning.js +31 -0
  463. package/dist/rerankers/remote.d.ts +3 -0
  464. package/dist/rerankers/remote.js +23 -0
  465. package/dist/rerankers/types.d.ts +1 -1
  466. package/dist/search/as-of.d.ts +1 -1
  467. package/dist/search/bm25-search.d.ts +2 -2
  468. package/dist/search/bm25-search.js +7 -7
  469. package/dist/search/bm25.d.ts +1 -1
  470. package/dist/search/bm25.js +1 -1
  471. package/dist/search/boosts.d.ts +5 -1
  472. package/dist/search/boosts.js +34 -13
  473. package/dist/search/breakdown.d.ts +2 -2
  474. package/dist/search/breakdown.js +2 -1
  475. package/dist/search/explain.d.ts +1 -1
  476. package/dist/search/explain.js +3 -2
  477. package/dist/search/finalize.d.ts +2 -2
  478. package/dist/search/finalize.js +4 -3
  479. package/dist/search/fusion.d.ts +1 -1
  480. package/dist/search/fusion.js +3 -3
  481. package/dist/search/hybrid-score.d.ts +2 -2
  482. package/dist/search/hybrid-score.js +1 -1
  483. package/dist/search/hybrid.d.ts +4 -4
  484. package/dist/search/hybrid.js +11 -8
  485. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  486. package/dist/{multihop.js → search/multihop.js} +7 -5
  487. package/dist/{path-context.js → search/path-context.js} +3 -1
  488. package/dist/search/physics-search.d.ts +4 -4
  489. package/dist/search/physics-search.js +15 -15
  490. package/dist/search/rerank.d.ts +3 -3
  491. package/dist/search/rerank.js +4 -3
  492. package/dist/search/temporal.d.ts +1 -1
  493. package/dist/search/temporal.js +5 -2
  494. package/dist/search/vector.d.ts +3 -3
  495. package/dist/search/vector.js +17 -11
  496. package/dist/server/auth.d.ts +1 -1
  497. package/dist/server/auth.js +26 -18
  498. package/dist/server/boot.d.ts +24 -0
  499. package/dist/server/boot.js +465 -0
  500. package/dist/server/client-ip.d.ts +5 -1
  501. package/dist/server/client-ip.js +18 -6
  502. package/dist/server/cursor.d.ts +1 -1
  503. package/dist/server/cursor.js +2 -3
  504. package/dist/server/deadline.d.ts +13 -0
  505. package/dist/server/deadline.js +45 -0
  506. package/dist/server/key-check-bounds.d.ts +8 -0
  507. package/dist/server/key-check-bounds.js +46 -0
  508. package/dist/server/lifecycle.js +1 -1
  509. package/dist/server/mcp-http.d.ts +1 -4
  510. package/dist/server/mcp-http.js +34 -24
  511. package/dist/server/ready.d.ts +7 -0
  512. package/dist/server/ready.js +38 -0
  513. package/dist/server/request.d.ts +10 -4
  514. package/dist/server/request.js +63 -12
  515. package/dist/server/route-table.d.ts +15 -0
  516. package/dist/server/route-table.js +209 -0
  517. package/dist/server/routes/admin.js +13 -8
  518. package/dist/server/routes/customer-notes.d.ts +5 -5
  519. package/dist/server/routes/customer-notes.js +32 -97
  520. package/dist/server/routes/decisions.d.ts +5 -5
  521. package/dist/server/routes/decisions.js +42 -105
  522. package/dist/server/routes/incidents.d.ts +5 -5
  523. package/dist/server/routes/incidents.js +42 -95
  524. package/dist/server/routes/memories.js +12 -14
  525. package/dist/server/routes/object-routes.d.ts +40 -0
  526. package/dist/server/routes/object-routes.js +80 -0
  527. package/dist/server/routes/policies.d.ts +6 -6
  528. package/dist/server/routes/policies.js +40 -124
  529. package/dist/server/routes/predictions.js +29 -45
  530. package/dist/server/routes/processes.d.ts +5 -5
  531. package/dist/server/routes/processes.js +38 -118
  532. package/dist/server/routes/project-briefs.d.ts +6 -6
  533. package/dist/server/routes/project-briefs.js +38 -110
  534. package/dist/server/routes/recall.js +14 -12
  535. package/dist/server/routes/skills.d.ts +6 -6
  536. package/dist/server/routes/skills.js +37 -125
  537. package/dist/{server-detect.js → server/server-detect.js} +1 -1
  538. package/dist/server/sleep-child.d.ts +2 -0
  539. package/dist/server/sleep-child.js +19 -0
  540. package/dist/server/sleep-offload.d.ts +20 -0
  541. package/dist/server/sleep-offload.js +70 -0
  542. package/dist/server/tls.d.ts +6 -0
  543. package/dist/server/tls.js +24 -0
  544. package/dist/server/types.d.ts +27 -8
  545. package/dist/server/validation.d.ts +3 -4
  546. package/dist/server/validation.js +6 -11
  547. package/dist/server.d.ts +39 -61
  548. package/dist/server.js +24 -568
  549. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
  550. package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
  551. package/dist/{scope.js → sharing/scope.js} +1 -1
  552. package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
  553. package/dist/{shared.js → sharing/shared.js} +100 -77
  554. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  555. package/dist/{ambient-store.js → store/ambient.js} +10 -10
  556. package/dist/store/audit-event.d.ts +11 -5
  557. package/dist/store/audit-event.js +5 -4
  558. package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
  559. package/dist/{audit.js → store/audit.js} +91 -6
  560. package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
  561. package/dist/{auth.js → store/auth.js} +100 -92
  562. package/dist/store/candidates.d.ts +23 -12
  563. package/dist/store/candidates.js +87 -35
  564. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
  565. package/dist/{card-detail.js → store/card-detail.js} +1 -1
  566. package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
  567. package/dist/{store-cards.js → store/cards.js} +85 -146
  568. package/dist/store/compactions.d.ts +78 -0
  569. package/dist/store/compactions.js +93 -0
  570. package/dist/store/conflicts.d.ts +22 -5
  571. package/dist/store/conflicts.js +160 -109
  572. package/dist/store/connectors/github.d.ts +84 -0
  573. package/dist/store/connectors/github.js +180 -0
  574. package/dist/store/connectors/slack.d.ts +69 -0
  575. package/dist/store/connectors/slack.js +177 -0
  576. package/dist/store/dashboard-reads.d.ts +27 -0
  577. package/dist/store/dashboard-reads.js +92 -0
  578. package/dist/store/delete-and-batch.d.ts +20 -24
  579. package/dist/store/delete-and-batch.js +64 -40
  580. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
  581. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
  582. package/dist/store/descendant-page.d.ts +12 -0
  583. package/dist/store/descendant-page.js +99 -0
  584. package/dist/store/diagnostics.d.ts +47 -0
  585. package/dist/store/diagnostics.js +51 -0
  586. package/dist/store/doctor-reads.d.ts +16 -0
  587. package/dist/store/doctor-reads.js +19 -0
  588. package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
  589. package/dist/{dormant.js → store/dormant.js} +151 -6
  590. package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
  591. package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
  592. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  593. package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
  594. package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
  595. package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
  596. package/dist/store/entry-reads.d.ts +46 -7
  597. package/dist/store/entry-reads.js +120 -21
  598. package/dist/store/entry-row.d.ts +8 -2
  599. package/dist/store/entry-row.js +28 -8
  600. package/dist/store/entry-writes.d.ts +33 -4
  601. package/dist/store/entry-writes.js +108 -26
  602. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  603. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  604. package/dist/{goals.d.ts → store/goals.d.ts} +6 -46
  605. package/dist/{goals.js → store/goals.js} +45 -94
  606. package/dist/store/graph-queue.d.ts +29 -0
  607. package/dist/store/graph-queue.js +101 -0
  608. package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
  609. package/dist/{graph/read.js → store/graph-reads.js} +63 -115
  610. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
  611. package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
  612. package/dist/store/graph-view-rows.d.ts +12 -0
  613. package/dist/store/graph-view-rows.js +67 -0
  614. package/dist/store/graph-writes.d.ts +58 -0
  615. package/dist/store/graph-writes.js +256 -0
  616. package/dist/store/half-life.d.ts +34 -0
  617. package/dist/store/half-life.js +77 -0
  618. package/dist/store/handoffs.d.ts +1 -1
  619. package/dist/store/handoffs.js +39 -30
  620. package/dist/store/index-and-stats.d.ts +8 -1
  621. package/dist/store/index-and-stats.js +51 -48
  622. package/dist/store/index.d.ts +4 -0
  623. package/dist/store/index.js +3 -0
  624. package/dist/store/key-audit.d.ts +2 -2
  625. package/dist/store/key-audit.js +4 -4
  626. package/dist/store/key-writes.d.ts +12 -5
  627. package/dist/store/key-writes.js +30 -4
  628. package/dist/store/ledger-turn.d.ts +17 -0
  629. package/dist/store/ledger-turn.js +27 -0
  630. package/dist/store/markdown.d.ts +1 -1
  631. package/dist/store/markdown.js +4 -3
  632. package/dist/store/mirrors.d.ts +5 -7
  633. package/dist/store/mirrors.js +39 -25
  634. package/dist/store/object-types.d.ts +189 -0
  635. package/dist/store/object-types.js +4 -0
  636. package/dist/store/open.d.ts +6 -4
  637. package/dist/store/open.js +24 -23
  638. package/dist/store/planning-fallacy-evidence.d.ts +42 -0
  639. package/dist/store/planning-fallacy-evidence.js +81 -0
  640. package/dist/store/port.d.ts +646 -0
  641. package/dist/store/port.js +17 -0
  642. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
  643. package/dist/{predictions/store.js → store/predictions.js} +52 -67
  644. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  645. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  646. package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +3 -1
  647. package/dist/{raw-archive.js → store/raw-archive.js} +6 -2
  648. package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +2 -2
  649. package/dist/{recall-scope.js → store/recall-scope.js} +3 -3
  650. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
  651. package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
  652. package/dist/store/rejected-values.d.ts +55 -0
  653. package/dist/store/rejected-values.js +162 -0
  654. package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
  655. package/dist/{rejection.js → store/rejection.js} +3 -2
  656. package/dist/store/rows.d.ts +2 -3
  657. package/dist/store/rows.js +18 -11
  658. package/dist/store/search-rows.d.ts +15 -4
  659. package/dist/store/search-rows.js +41 -28
  660. package/dist/store/sessions.d.ts +13 -2
  661. package/dist/store/sessions.js +79 -45
  662. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  663. package/dist/store/sqlite/commit-watch.js +29 -0
  664. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  665. package/dist/store/sqlite/connector-events-group.js +50 -0
  666. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  667. package/dist/store/sqlite/connector-writes-group.js +65 -0
  668. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  669. package/dist/store/sqlite/dag-reads-group.js +45 -0
  670. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  671. package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
  672. package/dist/store/sqlite/error-codec.d.ts +17 -0
  673. package/dist/store/sqlite/error-codec.js +59 -0
  674. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  675. package/dist/store/sqlite/executor-counts.js +11 -0
  676. package/dist/store/sqlite/executor.d.ts +28 -0
  677. package/dist/store/sqlite/executor.js +286 -0
  678. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  679. package/dist/store/sqlite/graph-reads-group.js +18 -0
  680. package/dist/store/sqlite/local.d.ts +21 -0
  681. package/dist/store/sqlite/local.js +38 -0
  682. package/dist/store/sqlite/object-rows.d.ts +102 -0
  683. package/dist/store/sqlite/object-rows.js +218 -0
  684. package/dist/store/sqlite/objects-group.d.ts +20 -0
  685. package/dist/store/sqlite/objects-group.js +314 -0
  686. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  687. package/dist/store/sqlite/predictions-group.js +28 -0
  688. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  689. package/dist/store/sqlite/quarantine-group.js +38 -0
  690. package/dist/store/sqlite/store.d.ts +26 -0
  691. package/dist/store/sqlite/store.js +295 -0
  692. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  693. package/dist/store/sqlite/vector-pack.js +46 -0
  694. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  695. package/dist/store/sqlite/vector-reads-group.js +23 -0
  696. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  697. package/dist/store/sqlite/worker-entry.js +8 -0
  698. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  699. package/dist/store/sqlite/worker-jobs.js +116 -0
  700. package/dist/store/sqlite/worker-ops.d.ts +124 -0
  701. package/dist/store/sqlite/worker-ops.js +82 -0
  702. package/dist/store/sqlite/worker-store.d.ts +8 -0
  703. package/dist/store/sqlite/worker-store.js +76 -0
  704. package/dist/store/summaries.d.ts +2 -11
  705. package/dist/store/summaries.js +17 -44
  706. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  707. package/dist/store/tenant-lookup.d.ts +1 -1
  708. package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
  709. package/dist/{tenant.js → store/tenant.js} +1 -1
  710. package/dist/store/token-ledger-rows.d.ts +61 -0
  711. package/dist/store/token-ledger-rows.js +68 -0
  712. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +2 -9
  713. package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
  714. package/dist/store/tombstone-checks.d.ts +12 -0
  715. package/dist/store/tombstone-checks.js +31 -0
  716. package/dist/store/usage-reports.d.ts +7 -0
  717. package/dist/store/usage-reports.js +26 -0
  718. package/dist/store/vector-writes.d.ts +10 -3
  719. package/dist/store/vector-writes.js +35 -5
  720. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
  721. package/dist/{working-memory.js → store/working-memory.js} +39 -41
  722. package/dist/support-bundle.d.ts +1 -1
  723. package/dist/support-bundle.js +13 -33
  724. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  725. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  726. package/dist/trust/quarantine.d.ts +4 -0
  727. package/dist/trust/quarantine.js +8 -0
  728. package/dist/trust/reject-flow.d.ts +23 -0
  729. package/dist/trust/reject-flow.js +67 -0
  730. package/dist/util/anthropic-messages.d.ts +31 -0
  731. package/dist/util/anthropic-messages.js +46 -0
  732. package/dist/util/atomic-write.d.ts +3 -0
  733. package/dist/util/atomic-write.js +107 -0
  734. package/dist/util/crash-handlers.d.ts +5 -0
  735. package/dist/util/crash-handlers.js +30 -0
  736. package/dist/{env.d.ts → util/env.d.ts} +15 -2
  737. package/dist/{env.js → util/env.js} +20 -2
  738. package/dist/util/home-path.js +67 -0
  739. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
  740. package/dist/{http-retry.js → util/http-retry.js} +38 -7
  741. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  742. package/dist/{http-util.js → util/http-util.js} +31 -11
  743. package/dist/util/json.d.ts +17 -0
  744. package/dist/util/json.js +25 -0
  745. package/dist/{log.d.ts → util/log.d.ts} +5 -2
  746. package/dist/{log.js → util/log.js} +12 -3
  747. package/dist/util/real-path.d.ts +3 -0
  748. package/dist/util/real-path.js +15 -0
  749. package/dist/util/request-scope.d.ts +27 -0
  750. package/dist/util/request-scope.js +47 -0
  751. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  752. package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
  753. package/dist/util/stored-json.d.ts +9 -0
  754. package/dist/util/stored-json.js +8 -0
  755. package/dist/util/time.d.ts +2 -0
  756. package/dist/util/time.js +3 -0
  757. package/dist/util/token-text.d.ts +18 -0
  758. package/dist/util/token-text.js +23 -0
  759. package/dist/{version.d.ts → util/version.d.ts} +1 -1
  760. package/dist/{version.js → util/version.js} +1 -1
  761. package/extensions/openclaw-plugin/index.ts +1 -5
  762. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  763. package/extensions/openclaw-plugin/package.json +1 -1
  764. package/openclaw.plugin.json +1 -1
  765. package/package.json +2 -2
  766. package/dist/api.d.ts +0 -26
  767. package/dist/api.js +0 -29
  768. package/dist/connectors/github/idempotency.d.ts +0 -19
  769. package/dist/connectors/github/idempotency.js +0 -27
  770. package/dist/connectors/slack/idempotency.d.ts +0 -17
  771. package/dist/connectors/slack/idempotency.js +0 -31
  772. package/dist/customer-notes.js +0 -336
  773. package/dist/db.d.ts +0 -9
  774. package/dist/db.js +0 -8
  775. package/dist/decisions.js +0 -326
  776. package/dist/extract.js +0 -133
  777. package/dist/graph/rows.d.ts +0 -45
  778. package/dist/graph/types.js +0 -11
  779. package/dist/half-life-migration.js +0 -182
  780. package/dist/handoff.js +0 -68
  781. package/dist/home-path.js +0 -24
  782. package/dist/incidents.js +0 -349
  783. package/dist/instruction-detect.js +0 -27
  784. package/dist/json.d.ts +0 -7
  785. package/dist/json.js +0 -11
  786. package/dist/ledger-db.d.ts +0 -10
  787. package/dist/ledger-db.js +0 -42
  788. package/dist/policies.js +0 -434
  789. package/dist/processes.js +0 -371
  790. package/dist/project-briefs.js +0 -523
  791. package/dist/reject-flow.d.ts +0 -69
  792. package/dist/reject-flow.js +0 -260
  793. package/dist/session-owners.d.ts +0 -7
  794. package/dist/session-owners.js +0 -54
  795. package/dist/skills.js +0 -367
  796. package/dist/store/entry-writes-group.d.ts +0 -9
  797. package/dist/store-port.d.ts +0 -262
  798. package/dist/store-port.js +0 -178
  799. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  800. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  801. /package/dist/{recall-history.d.ts → api/recall-history.d.ts} +0 -0
  802. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  803. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  804. /package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
  805. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  806. /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
  807. /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
  808. /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
  809. /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
  810. /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
  811. /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
  812. /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +0 -0
  813. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  814. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  815. /package/dist/{trace.d.ts → consolidate/trace.d.ts} +0 -0
  816. /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
  817. /package/dist/{ambient.d.ts → core/ambient.d.ts} +0 -0
  818. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  819. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  820. /package/dist/{card.d.ts → core/card.d.ts} +0 -0
  821. /package/dist/{card.js → core/card.js} +0 -0
  822. /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
  823. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  824. /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
  825. /package/dist/{physics-config.js → core/physics-config.js} +0 -0
  826. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  827. /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
  828. /package/dist/{salience.d.ts → core/salience.d.ts} +0 -0
  829. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  830. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  831. /package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +0 -0
  832. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  833. /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
  834. /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
  835. /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
  836. /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
  837. /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
  838. /package/dist/{rrf.js → search/rrf.js} +0 -0
  839. /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
  840. /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
  841. /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
  842. /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
  843. /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
  844. /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
  845. /package/dist/{yaml.js → store/yaml.js} +0 -0
  846. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  847. /package/dist/{escape.js → util/escape.js} +0 -0
  848. /package/dist/{home-path.d.ts → util/home-path.d.ts} +0 -0
  849. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  850. /package/dist/{keyset.js → util/keyset.js} +0 -0
  851. /package/dist/{same-text.js → util/same-text.js} +0 -0
  852. /package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +0 -0
  853. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  854. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  855. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  856. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  857. /package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
  858. /package/dist/{transcript-tail.js → util/transcript-tail.js} +0 -0
  859. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  860. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
@@ -1,14 +1,14 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
- import { importEntries, isJsonPlainObject } from './core.js';
4
- import { parseFrontmatter, collectMarkdownFiles } from './markdown-parse.js';
5
- import { isJsonString } from '../json.js';
3
+ import { importEntries } from './core.js';
4
+ import { splitMarkdownFrontmatter, collectMarkdownFiles } from './markdown-parse.js';
5
+ import { isJsonString, isJsonObject } from '../util/json.js';
6
6
  /** Coerce one imported record (string, `{content|text: ...}` object, or
7
7
  * anything else) into the plain-text memory chunk it represents. */
8
8
  function extractMemoryText(candidate) {
9
9
  if (isJsonString(candidate))
10
10
  return candidate;
11
- if (isJsonPlainObject(candidate)) {
11
+ if (isJsonObject(candidate)) {
12
12
  return String(candidate['content'] ?? candidate['text'] ?? '');
13
13
  }
14
14
  return '';
@@ -28,7 +28,7 @@ function parseChatGPTFile(filePath) {
28
28
  try {
29
29
  const parsed = JSON.parse(raw);
30
30
  // {"memories": [...]} - ChatGPT export format
31
- if (isJsonPlainObject(parsed) && Array.isArray(parsed.memories)) {
31
+ if (isJsonObject(parsed) && Array.isArray(parsed.memories)) {
32
32
  return parsed.memories.map(extractMemoryText).filter(Boolean);
33
33
  }
34
34
  // Array format
@@ -69,51 +69,55 @@ function splitMarkdown(content) {
69
69
  const chunks = [];
70
70
  const lines = content.split('\n');
71
71
  let current = '';
72
- for (const line of lines) {
73
- const trimmed = line.trim();
74
- // Heading: start a new chunk
75
- if (/^#{1,6}\s+/.test(trimmed)) {
76
- if (current.trim())
77
- chunks.push(current.trim());
78
- current = trimmed;
79
- continue;
72
+ for (const line of lines)
73
+ current = appendLine(chunks, current, line);
74
+ if (current.trim())
75
+ chunks.push(current.trim());
76
+ return chunks.filter(Boolean);
77
+ }
78
+ /** Takes one line into the chunk being built, pushing that chunk when the line ends it; returns the chunk still open. */
79
+ function appendLine(chunks, open, line) {
80
+ let current = open;
81
+ const trimmed = line.trim();
82
+ // Heading: start a new chunk
83
+ if (/^#{1,6}\s+/.test(trimmed)) {
84
+ if (current.trim())
85
+ chunks.push(current.trim());
86
+ current = trimmed;
87
+ return current;
88
+ }
89
+ // Bullet point: each bullet is its own chunk (flush previous if not a bullet context)
90
+ if (/^[-*+]\s+/.test(trimmed)) {
91
+ if (current.trim() && !/^[-*+]\s+/.test(current.split('\n')[0])) {
92
+ chunks.push(current.trim());
93
+ current = '';
80
94
  }
81
- // Bullet point: each bullet is its own chunk (flush previous if not a bullet context)
82
- if (/^[-*+]\s+/.test(trimmed)) {
83
- if (current.trim() && !/^[-*+]\s+/.test(current.split('\n')[0])) {
84
- chunks.push(current.trim());
85
- current = '';
86
- }
87
- if (current.trim()) {
88
- chunks.push(current.trim());
89
- current = '';
90
- }
91
- current = trimmed.replace(/^[-*+]\s+/, '').trim();
92
- continue;
95
+ if (current.trim()) {
96
+ chunks.push(current.trim());
97
+ current = '';
93
98
  }
94
- // Numbered list item
95
- if (/^\d+\.\s+/.test(trimmed)) {
96
- if (current.trim()) {
97
- chunks.push(current.trim());
98
- current = '';
99
- }
100
- current = trimmed.replace(/^\d+\.\s+/, '').trim();
101
- continue;
99
+ current = trimmed.replace(/^[-*+]\s+/, '').trim();
100
+ return current;
101
+ }
102
+ // Numbered list item
103
+ if (/^\d+\.\s+/.test(trimmed)) {
104
+ if (current.trim()) {
105
+ chunks.push(current.trim());
106
+ current = '';
102
107
  }
103
- // Empty line
104
- if (!trimmed) {
105
- if (current.trim()) {
106
- chunks.push(current.trim());
107
- current = '';
108
- }
109
- continue;
108
+ current = trimmed.replace(/^\d+\.\s+/, '').trim();
109
+ return current;
110
+ }
111
+ // Empty line
112
+ if (!trimmed) {
113
+ if (current.trim()) {
114
+ chunks.push(current.trim());
115
+ current = '';
110
116
  }
111
- // Regular line: append to current
112
- current = current ? current + ' ' + trimmed : trimmed;
117
+ return current;
113
118
  }
114
- if (current.trim())
115
- chunks.push(current.trim());
116
- return chunks.filter(Boolean);
119
+ // Regular line: append to current
120
+ return current ? current + ' ' + trimmed : trimmed;
117
121
  }
118
122
  /**
119
123
  * Parse CLAUDE.md or Claude memory.json.
@@ -198,7 +202,7 @@ export function importCursor(sourcePath, options) {
198
202
  : [sourcePath];
199
203
  const chunks = files.flatMap((file) => {
200
204
  const raw = fs.readFileSync(file, 'utf8');
201
- return parseCursorFile(CURSOR_RULE_FILE.test(file) ? parseFrontmatter(raw).body : raw);
205
+ return parseCursorFile(CURSOR_RULE_FILE.test(file) ? splitMarkdownFrontmatter(raw).body : raw);
202
206
  });
203
207
  return importEntries(chunks, 'import:cursor', ['imported', 'cursor'], options);
204
208
  }
@@ -1,18 +1,20 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import { createHash } from 'node:crypto';
4
- import { createMemory } from '../memory.js';
5
- import { initStore } from '../store/open.js';
6
- import { remember, archiveRaw, isPrivateScope } from '../api.js';
7
- import { assertClientScope } from '../recall-scope.js';
8
- import { openHippoDb, closeHippoDb } from '../db.js';
9
- import { RejectedValueError, checkRejectionGuard } from '../rejection.js';
10
- import { loadConfig } from '../config.js';
11
- import { vetSecrets } from '../secret-detect.js';
12
- import { log } from '../log.js';
13
- import { parseFrontmatter, frontmatterList, parseWikilinks, collectMarkdownFiles, realpathOrResolve } from './markdown-parse.js';
14
- import { isJsonString } from '../json.js';
15
- import { escapeLike } from '../escape.js';
4
+ import { createMemory } from '../core/memory.js';
5
+ import { loadVaultRawRows } from '../store/entry-reads.js';
6
+ import { remember, archiveRaw, isPrivateScope } from '../api/index.js';
7
+ import { assertClientScope } from '../store/recall-scope.js';
8
+ import { RejectedValueError } from '../store/rejection.js';
9
+ import { rejectionGuardRefuses } from '../store/rejected-values.js';
10
+ import { withRequestStoresSync } from '../db/request-stores.js';
11
+ import { loadConfig } from '../core/config.js';
12
+ import { vetSecrets } from '../util/secret-detect.js';
13
+ import { errorMessage, log } from '../util/log.js';
14
+ import { splitMarkdownFrontmatter, frontmatterList, parseWikilinks, collectMarkdownFiles } from './markdown-parse.js';
15
+ import { realpathOrResolve } from '../util/real-path.js';
16
+ import { isJsonString } from '../util/json.js';
17
+ import { escapeLike } from '../util/escape.js';
16
18
  /**
17
19
  * Import a markdown vault FOLDER as `kind='raw'` memories.
18
20
  *
@@ -23,10 +25,7 @@ import { escapeLike } from '../escape.js';
23
25
  */
24
26
  export function importVault(folderPath, options) {
25
27
  const hippoRoot = options.hippoRoot;
26
- const tenantId = options.tenantId ?? 'default';
27
- const { vaultName, scope } = vaultIdentityOrThrow(options);
28
- const extraTags = options.extraTags ?? [];
29
- const dryRun = options.dryRun ?? false;
28
+ const identity = vaultIdentityOrThrow(options);
30
29
  if (options.global) {
31
30
  // The raw-archive path is tenant-local; global mode would put raw vault rows
32
31
  // in the wrong store. Reject for SDK callers too (the CLI also rejects
@@ -48,6 +47,13 @@ export function importVault(folderPath, options) {
48
47
  if (resolvedFolder === resolvedStore || resolvedFolder.startsWith(resolvedStore + path.sep)) {
49
48
  return { total: 0, imported: 0, skipped: 0, rejected: 0, archived: 0, entries: [] };
50
49
  }
50
+ return syncVaultFolder(folderPath, options, identity);
51
+ }
52
+ function syncVaultFolder(folderPath, options, { vaultName, scope }) {
53
+ const hippoRoot = options.hippoRoot;
54
+ const tenantId = options.tenantId ?? 'default';
55
+ const extraTags = options.extraTags ?? [];
56
+ const dryRun = options.dryRun ?? false;
51
57
  const ctx = {
52
58
  hippoRoot,
53
59
  tenantId,
@@ -60,22 +66,18 @@ export function importVault(folderPath, options) {
60
66
  const tally = { total: 0, imported: 0, skipped: 0, rejected: 0, archived: 0, redacted: 0, entries: [] };
61
67
  const baseHalfLifeDays = loadConfig(hippoRoot).defaultHalfLifeDays;
62
68
  const seen = new Set();
63
- // AT1 P2 fix: dry-run never called remember(), so it never probed
64
- // tombstones — every note that reached the write step counted as
65
- // `imported` even when a real run would refuse it. Probe (read-only) via
66
- // the same guard remember()/writeEntry uses, without ever writing.
67
- const dryRunDb = dryRun ? openHippoDb(hippoRoot) : null;
68
- try {
69
- const run = {
70
- ctx, folderPath, vaultName, scope, extraTags, dryRun, dryRunDb, existing, seen, baseHalfLifeDays, tally,
71
- };
69
+ const run = {
70
+ ctx, folderPath, vaultName, scope, extraTags, dryRun, existing, seen, baseHalfLifeDays, tally,
71
+ };
72
+ const importNotes = () => {
72
73
  for (const relpath of relpaths)
73
74
  importVaultNote(run, relpath);
74
- }
75
- finally {
76
- if (dryRunDb)
77
- closeHippoDb(dryRunDb);
78
- }
75
+ };
76
+ // A dry run probes the rejection guard once per changed note; one scope lets every probe share a handle.
77
+ if (dryRun)
78
+ withRequestStoresSync(importNotes);
79
+ else
80
+ importNotes();
79
81
  // Deletion-sync: any artifactRef present in the Map but NOT seen this run is a
80
82
  // note that vanished from the source folder → archive its raw row. Per-file
81
83
  // archiveRaw (own handle); no outer SAVEPOINT (no cross-file idempotency row
@@ -126,45 +128,28 @@ function vaultIdentityOrThrow(options) {
126
128
  return { vaultName, scope };
127
129
  }
128
130
  function loadVaultRows(hippoRoot, tenantId, vaultName) {
129
- // Load ONCE: every existing raw row for this vault, tenant-scoped. The same
130
- // Map serves both per-file idempotency AND the deletion diff (no second
131
- // query). LIKE-escape the vault name so a `%`/`_` in it can't over-match.
132
- initStore(hippoRoot);
133
- // artifactRef -> ALL its live raw rows. >1 only after a concurrent double-insert
134
- // (the importer is not re-entrant; see the JSDoc). The buckets matter: a later
135
- // changed/deletion pass must archive EVERY matching row, not just the last one
136
- // scanned, or older raw vault content lingers live + searchable (codex P2).
131
+ // One load serves both per-file idempotency and the deletion diff; the vault name is
132
+ // LIKE-escaped so a `%` or `_` in it cannot over-match.
133
+ const rows = loadVaultRawRows(hippoRoot, `vault:${escapeLike(vaultName)}:%`, tenantId);
134
+ // Every live row per artifactRef (more than one only after a concurrent double-insert), because a
135
+ // later changed or deletion pass must archive them all or older raw vault content stays searchable.
137
136
  const existing = new Map();
138
- const db = openHippoDb(hippoRoot);
139
- try {
140
- const likeParam = `vault:${escapeLike(vaultName)}:%`;
141
- // SAFETY: query selects exactly the columns of VaultRow, in the same
142
- // names, from the memories table this module owns.
143
- const rows = db
144
- .prepare(`SELECT id, artifact_ref, tags_json, scope FROM memories
145
- WHERE artifact_ref LIKE ? ESCAPE '\\' AND tenant_id = ? AND kind = 'raw'`)
146
- .all(likeParam, tenantId);
147
- // SQLite LIKE is case-insensitive for ASCII, so the query over-fetches
148
- // (vault 'A' also matches 'vault:a:%'). Filter to the EXACT-case prefix in
149
- // JS so deletion-sync never archives a different-cased vault's rows (codex P2).
150
- const exactPrefix = `vault:${vaultName}:`;
151
- for (const row of rows) {
152
- if (row.artifact_ref && row.artifact_ref.startsWith(exactPrefix)) {
153
- const bucket = existing.get(row.artifact_ref);
154
- if (bucket)
155
- bucket.push(row);
156
- else
157
- existing.set(row.artifact_ref, [row]);
158
- }
137
+ // LIKE folds ASCII case (vault 'A' also matches 'vault:a:%'), so the exact-case prefix is checked
138
+ // here; without it deletion-sync would archive a different-cased vault's rows.
139
+ const exactPrefix = `vault:${vaultName}:`;
140
+ for (const row of rows) {
141
+ if (row.artifact_ref && row.artifact_ref.startsWith(exactPrefix)) {
142
+ const bucket = existing.get(row.artifact_ref);
143
+ if (bucket)
144
+ bucket.push(row);
145
+ else
146
+ existing.set(row.artifact_ref, [row]);
159
147
  }
160
148
  }
161
- finally {
162
- closeHippoDb(db);
163
- }
164
149
  return existing;
165
150
  }
166
151
  function importVaultNote(run, relpath) {
167
- const { ctx, tally } = run;
152
+ const { tally } = run;
168
153
  tally.total++;
169
154
  const artifactRef = `vault:${run.vaultName}:${relpath}`;
170
155
  run.seen.add(artifactRef);
@@ -180,7 +165,7 @@ function importVaultNote(run, relpath) {
180
165
  // insert). The idempotency decision happens below, AFTER the full tag set is
181
166
  // built, so it can compare the complete envelope rather than a subset.
182
167
  const priors = run.existing.get(artifactRef) ?? [];
183
- const { fm, body } = parseFrontmatter(rawFileContent);
168
+ const { fm, body } = splitMarkdownFrontmatter(rawFileContent);
184
169
  // Empty / frontmatter-only note: nothing storable (createMemory enforces a
185
170
  // min content length). The note's CONTENT was deleted at source, so this is a
186
171
  // content-deletion: archive any prior row(s) - the old body must not stay live
@@ -200,6 +185,10 @@ function importVaultNote(run, relpath) {
200
185
  tally.skipped++;
201
186
  return;
202
187
  }
188
+ writeChangedNote(run, artifactRef, priors, body, tags);
189
+ }
190
+ function writeChangedNote(run, artifactRef, priors, body, tags) {
191
+ const { ctx, tally } = run;
203
192
  // Changed file → archive EVERY old raw row for this ref (normally one; >1
204
193
  // only after a concurrent double-insert), then append the new one. NEVER
205
194
  // supersede (would yield kind='distilled'). archiveRaw commits + closes its
@@ -232,10 +221,9 @@ function readVaultNote(run, relpath) {
232
221
  try {
233
222
  return fs.readFileSync(path.join(run.folderPath, relpath), 'utf8');
234
223
  }
235
- catch {
236
- // File vanished between enumeration and read (TOCTOU), or a transient
237
- // IO/permission error. Skip this one file rather than aborting the whole
238
- // import (incl. the deletion-sync pass); an idempotent re-run picks it up.
224
+ catch (err) {
225
+ // One unreadable note (gone since the listing, or a transient IO error) must not abort the import; a re-run picks it up.
226
+ log.debug(`vault note skipped: ${relpath}: ${errorMessage(err)}`);
239
227
  run.tally.skipped++;
240
228
  return null;
241
229
  }
@@ -286,30 +274,21 @@ function vaultEnvelopeUnchanged(priors, tags, scope) {
286
274
  }
287
275
  /** Returns false when the rejection guard refuses the note; any other error propagates. */
288
276
  function storeVaultNote(run, echo, content, tags, artifactRef) {
277
+ // A dry run writes nothing; it asks the guard remember() uses, so its `rejected` count matches what a real run would refuse.
278
+ if (run.dryRun)
279
+ return !rejectionGuardRefuses(run.ctx.hippoRoot, run.ctx.tenantId, echo.id, echo.content);
289
280
  try {
290
- // dryRun preview: count what WOULD import, but make no writes (codex P2).
291
- if (!run.dryRun) {
292
- // AT1 (plan §3 containment): a rejected note must not abort the rest
293
- // of the vault scan (deletion-sync pass included). The priors above
294
- // are already archived by this point — same self-heal story as any
295
- // other crash between archiveRaw and remember() (comment above): a
296
- // re-run with the file still rejected hits the same refusal again,
297
- // loud each time via the rejected count.
298
- const result = remember(run.ctx, {
299
- content,
300
- kind: 'raw',
301
- artifactRef,
302
- owner: 'agent:vault-import',
303
- scope: run.scope ?? undefined,
304
- tags,
305
- });
306
- echo.id = result.id;
307
- }
308
- else if (run.dryRunDb) {
309
- // AT1 P2 fix: probe the tombstone without writing so the preview's
310
- // `rejected` count matches what a real run would refuse.
311
- checkRejectionGuard(run.dryRunDb, run.ctx.tenantId, echo.id, echo.content);
312
- }
281
+ // A rejected note must not stop the scan or the deletion sync. Its priors are archived by now, so a rerun meets
282
+ // the same refusal and counts it again.
283
+ const result = remember(run.ctx, {
284
+ content,
285
+ kind: 'raw',
286
+ artifactRef,
287
+ owner: 'agent:vault-import',
288
+ scope: run.scope ?? undefined,
289
+ tags,
290
+ });
291
+ echo.id = result.id;
313
292
  return true;
314
293
  }
315
294
  catch (err) {
@@ -329,7 +308,7 @@ function parseJsonArrayLoose(value) {
329
308
  return Array.isArray(parsed) ? parsed.filter(isJsonString) : [];
330
309
  }
331
310
  catch (err) {
332
- log.debug(`import: unreadable tags_json read as no tags: ${err instanceof Error ? err.message : String(err)}`);
311
+ log.debug(`import: unreadable tags_json read as no tags: ${errorMessage(err)}`);
333
312
  return [];
334
313
  }
335
314
  }
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Hippo public API - re-exports for programmatic use.
3
3
  */
4
- import { type CreateMemoryOptions, type MemoryEntry } from './memory.js';
5
- export { MemoryEntry, Layer, EmotionalValence, ConfidenceLevel, DecayOptions, calculateStrength, resolveConfidence, confidenceFacets, type ConfidenceFacets, applyOutcome, generateId, computeSchemaFit } from './memory.js';
4
+ import { type CreateMemoryOptions, type MemoryEntry } from './core/memory.js';
5
+ export { MemoryEntry, Layer, EmotionalValence, ConfidenceLevel, DecayOptions, calculateStrength, resolveConfidence, confidenceFacets, type ConfidenceFacets, applyOutcome, generateId, computeSchemaFit } from './core/memory.js';
6
6
  /** Published signature, so `baseHalfLifeDays` stays optional here; hippo's own writers use the strict one in memory.ts. */
7
7
  export declare function createMemory(content: string, options?: Partial<CreateMemoryOptions>): MemoryEntry;
8
8
  export { search } from './search/bm25-search.js';
@@ -10,12 +10,12 @@ export { hybridSearch } from './search/hybrid.js';
10
10
  export { physicsSearch } from './search/physics-search.js';
11
11
  export { explainMatch, MatchExplanation } from './search/explain.js';
12
12
  export { detectTemporalDirection, temporalBoost, computeTemporalRange } from './search/temporal.js';
13
- export { SearchResult } from './search/types.js';
14
- export { estimateTokens } from './token-ledger.js';
15
- export { tokenize, textOverlap } from './tokenize.js';
16
- export { markRetrieved } from './memory.js';
17
- export { multihopSearch } from './multihop.js';
18
- export { graphExpandRecall, MAX_HOPS, DEFAULT_MAX_NEIGHBORS, type GraphExpandOpts } from './graph-recall.js';
13
+ export { SearchResult } from './core/search-types.js';
14
+ export { estimateTokens } from './util/token-text.js';
15
+ export { tokenize, textOverlap } from './util/tokenize.js';
16
+ export { markRetrieved } from './core/memory.js';
17
+ export { multihopSearch } from './search/multihop.js';
18
+ export { graphExpandRecall, MAX_HOPS, DEFAULT_MAX_NEIGHBORS, type GraphExpandOpts } from './graph/recall.js';
19
19
  export { initStore } from './store/open.js';
20
20
  export { writeEntry } from './store/entry-writes.js';
21
21
  export { loadAllEntries, readEntry } from './store/entry-reads.js';
@@ -25,25 +25,25 @@ export { loadIndex, rebuildIndex, loadSessionDecayContext, SessionDecayContext }
25
25
  export { saveActiveTaskSnapshot, loadActiveTaskSnapshot, loadFreshActiveTaskSnapshot, SNAPSHOT_AMBIENT_MAX_AGE_MS, closeTaskSnapshotsForSession, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, type ContinuityKey, } from './store/sessions.js';
26
26
  export { listMemoryConflicts, replaceDetectedConflicts, resolveConflict } from './store/conflicts.js';
27
27
  export { saveSessionHandoff, loadLatestHandoff, loadHandoffById, stampHandoffOutcome, writeSessionEndHandoff, } from './store/handoffs.js';
28
- export { createCard, loadCard, listCards, loadCardDeps, loadCardRuns, loadCardComments, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, loadLatestHandoffForCard, } from './store-cards.js';
29
- export { SessionHandoff, HandoffOutcome, HandoffEvidence, isHandoffOutcome } from './handoff.js';
30
- export { Card, CardStatus, CardRun, CardComment, CardTransitions, isCardStatus, CARD_TRANSITIONS, CARD_LEASE_MS } from './card.js';
28
+ export { createCard, loadCard, listCards, loadCardDeps, loadCardRuns, loadCardComments, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, loadLatestHandoffForCard, } from './store/cards.js';
29
+ export { SessionHandoff, HandoffOutcome, HandoffEvidence, isHandoffOutcome } from './core/handoff.js';
30
+ export { Card, CardStatus, CardRun, CardComment, CardTransitions, isCardStatus, CARD_TRANSITIONS, CARD_LEASE_MS } from './core/card.js';
31
31
  export { consolidate } from './consolidate/sleep.js';
32
32
  export { ConsolidationResult } from './consolidate/run.js';
33
33
  export { sleep, type SleepOpts, type SleepResult } from './api/sleep.js';
34
- export { strengthBucket } from './dedupe.js';
35
- export { isEmbeddingAvailable, getEmbedding } from './local-embedding.js';
36
- export { cosineSimilarity, loadEmbeddingIndex, saveEmbeddingIndex, embedMemory, embedAll, } from './embeddings.js';
37
- export { captureError, extractLessons, partitionLessons, deduplicateLesson, runWatched, fetchGitLog, } from './autolearn.js';
38
- export { getGlobalRoot, initGlobal, promoteToGlobal, searchBoth, searchBothHybrid, syncGlobalToLocal, HybridSearchOptions, transferScore, shareMemory, listPeers, autoShare, } from './shared.js';
39
- export { wmPush, wmRead, wmClear, wmFlush, WorkingMemoryItem, WM_MAX_ENTRIES, } from './working-memory.js';
34
+ export { strengthBucket } from './consolidate/dedupe.js';
35
+ export { isEmbeddingAvailable, getEmbedding } from './store/embeddings/local.js';
36
+ export { cosineSimilarity, loadEmbeddingIndex, saveEmbeddingIndex, embedMemory, embedAll, } from './store/embeddings/index.js';
37
+ export { captureError, extractLessons, partitionLessons, deduplicateLesson, runWatched, fetchGitLog, } from './learn/autolearn.js';
38
+ export { getGlobalRoot, initGlobal, promoteToGlobal, searchBoth, searchBothHybrid, syncGlobalToLocal, HybridSearchOptions, transferScore, shareMemory, listPeers, autoShare, } from './sharing/shared.js';
39
+ export { wmPush, wmRead, wmClear, wmFlush, WorkingMemoryItem, WM_MAX_ENTRIES, } from './store/working-memory.js';
40
40
  export { importChatGPT, importClaude, importCursor, importGenericFile, } from './importers/sources.js';
41
41
  export { importMarkdown } from './importers/markdown.js';
42
42
  export { importVault } from './importers/vault.js';
43
43
  export { importEntries, ImportResult, ImportOptions } from './importers/core.js';
44
- export { runFeatureEval, formatResult, resultToBaseline, detectRegressions, buildSyntheticCorpus, } from './eval-suite.js';
45
- export { computeSalience, SalienceDecision, SalienceResult, SalienceOptions, } from './salience.js';
46
- export { computeAmbientState, renderAmbientSummary, formatAmbientVector, AmbientState, } from './ambient.js';
47
- export { appendAuditEvent, queryAuditEvents, listAuditEventsAfter, AUDIT_OPS, type AuditEvent, type AuditOp, type QueryAuditOpts, type ListAuditAfterOpts, } from './audit.js';
48
- export { openHippoDb, openHippoDbReadOnly, closeHippoDb, type DatabaseSyncLike } from './db.js';
44
+ export { runFeatureEval, formatResult, resultToBaseline, detectRegressions, buildSyntheticCorpus, } from './eval/eval-suite.js';
45
+ export { computeSalience, SalienceDecision, SalienceResult, SalienceOptions, } from './core/salience.js';
46
+ export { computeAmbientState, renderAmbientSummary, formatAmbientVector, AmbientState, } from './core/ambient.js';
47
+ export { appendAuditEvent, queryAuditEvents, listAuditEventsAfter, AUDIT_OPS, type AuditEvent, type AuditOp, type QueryAuditOpts, type ListAuditAfterOpts, } from './store/audit.js';
48
+ export { openHippoDb, openHippoDbReadOnly, closeHippoDb, type DatabaseSyncLike } from './db/index.js';
49
49
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Hippo public API - re-exports for programmatic use.
3
3
  */
4
- import { createMemory as createStoreMemory, DEFAULT_HALF_LIFE_DAYS } from './memory.js';
5
- export { Layer, calculateStrength, resolveConfidence, confidenceFacets, applyOutcome, generateId, computeSchemaFit } from './memory.js';
4
+ import { createMemory as createStoreMemory, DEFAULT_HALF_LIFE_DAYS } from './core/memory.js';
5
+ export { Layer, calculateStrength, resolveConfidence, confidenceFacets, applyOutcome, generateId, computeSchemaFit } from './core/memory.js';
6
6
  /** Published signature, so `baseHalfLifeDays` stays optional here; hippo's own writers use the strict one in memory.ts. */
7
7
  export function createMemory(content, options = {}) {
8
8
  return createStoreMemory(content, { ...options, baseHalfLifeDays: options.baseHalfLifeDays ?? DEFAULT_HALF_LIFE_DAYS });
@@ -12,11 +12,11 @@ export { hybridSearch } from './search/hybrid.js';
12
12
  export { physicsSearch } from './search/physics-search.js';
13
13
  export { explainMatch } from './search/explain.js';
14
14
  export { detectTemporalDirection, temporalBoost, computeTemporalRange } from './search/temporal.js';
15
- export { estimateTokens } from './token-ledger.js';
16
- export { tokenize, textOverlap } from './tokenize.js';
17
- export { markRetrieved } from './memory.js';
18
- export { multihopSearch } from './multihop.js';
19
- export { graphExpandRecall, MAX_HOPS, DEFAULT_MAX_NEIGHBORS } from './graph-recall.js';
15
+ export { estimateTokens } from './util/token-text.js';
16
+ export { tokenize, textOverlap } from './util/tokenize.js';
17
+ export { markRetrieved } from './core/memory.js';
18
+ export { multihopSearch } from './search/multihop.js';
19
+ export { graphExpandRecall, MAX_HOPS, DEFAULT_MAX_NEIGHBORS } from './graph/recall.js';
20
20
  export { initStore } from './store/open.js';
21
21
  export { writeEntry } from './store/entry-writes.js';
22
22
  export { loadAllEntries, readEntry } from './store/entry-reads.js';
@@ -26,35 +26,35 @@ export { loadIndex, rebuildIndex, loadSessionDecayContext } from './store/index-
26
26
  export { saveActiveTaskSnapshot, loadActiveTaskSnapshot, loadFreshActiveTaskSnapshot, SNAPSHOT_AMBIENT_MAX_AGE_MS, closeTaskSnapshotsForSession, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, } from './store/sessions.js';
27
27
  export { listMemoryConflicts, replaceDetectedConflicts, resolveConflict } from './store/conflicts.js';
28
28
  export { saveSessionHandoff, loadLatestHandoff, loadHandoffById, stampHandoffOutcome, writeSessionEndHandoff, } from './store/handoffs.js';
29
- export { createCard, loadCard, listCards, loadCardDeps, loadCardRuns, loadCardComments, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, loadLatestHandoffForCard, } from './store-cards.js';
29
+ export { createCard, loadCard, listCards, loadCardDeps, loadCardRuns, loadCardComments, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, loadLatestHandoffForCard, } from './store/cards.js';
30
30
  // Feature 5: Session handoff
31
- export { isHandoffOutcome } from './handoff.js';
31
+ export { isHandoffOutcome } from './core/handoff.js';
32
32
  // W2a: work-queue cards
33
- export { isCardStatus, CARD_TRANSITIONS, CARD_LEASE_MS } from './card.js';
33
+ export { isCardStatus, CARD_TRANSITIONS, CARD_LEASE_MS } from './core/card.js';
34
34
  export { consolidate } from './consolidate/sleep.js';
35
35
  export { sleep } from './api/sleep.js';
36
36
  // Announced public in CHANGELOG 1.26.3 but never re-exported; the rest of dedupe.js stays internal.
37
- export { strengthBucket } from './dedupe.js';
37
+ export { strengthBucket } from './consolidate/dedupe.js';
38
38
  // Feature 1: Embedding search
39
- export { isEmbeddingAvailable, getEmbedding } from './local-embedding.js';
40
- export { cosineSimilarity, loadEmbeddingIndex, saveEmbeddingIndex, embedMemory, embedAll, } from './embeddings.js';
39
+ export { isEmbeddingAvailable, getEmbedding } from './store/embeddings/local.js';
40
+ export { cosineSimilarity, loadEmbeddingIndex, saveEmbeddingIndex, embedMemory, embedAll, } from './store/embeddings/index.js';
41
41
  // Feature 2: Auto-learn from errors
42
- export { captureError, extractLessons, partitionLessons, deduplicateLesson, runWatched, fetchGitLog, } from './autolearn.js';
42
+ export { captureError, extractLessons, partitionLessons, deduplicateLesson, runWatched, fetchGitLog, } from './learn/autolearn.js';
43
43
  // Feature 3: Cross-agent shared memory
44
- export { getGlobalRoot, initGlobal, promoteToGlobal, searchBoth, searchBothHybrid, syncGlobalToLocal, transferScore, shareMemory, listPeers, autoShare, } from './shared.js';
44
+ export { getGlobalRoot, initGlobal, promoteToGlobal, searchBoth, searchBothHybrid, syncGlobalToLocal, transferScore, shareMemory, listPeers, autoShare, } from './sharing/shared.js';
45
45
  // Feature 5: Working memory
46
- export { wmPush, wmRead, wmClear, wmFlush, WM_MAX_ENTRIES, } from './working-memory.js';
46
+ export { wmPush, wmRead, wmClear, wmFlush, WM_MAX_ENTRIES, } from './store/working-memory.js';
47
47
  // Feature 4: Memory importers
48
48
  export { importChatGPT, importClaude, importCursor, importGenericFile, } from './importers/sources.js';
49
49
  export { importMarkdown } from './importers/markdown.js';
50
50
  export { importVault } from './importers/vault.js';
51
51
  export { importEntries } from './importers/core.js';
52
52
  // Feature eval suite
53
- export { runFeatureEval, formatResult, resultToBaseline, detectRegressions, buildSyntheticCorpus, } from './eval-suite.js';
53
+ export { runFeatureEval, formatResult, resultToBaseline, detectRegressions, buildSyntheticCorpus, } from './eval/eval-suite.js';
54
54
  // Pineal gland: salience gate
55
- export { computeSalience, } from './salience.js';
55
+ export { computeSalience, } from './core/salience.js';
56
56
  // Pineal gland: ambient state vector
57
- export { computeAmbientState, renderAmbientSummary, formatAmbientVector, } from './ambient.js';
58
- export { appendAuditEvent, queryAuditEvents, listAuditEventsAfter, AUDIT_OPS, } from './audit.js';
59
- export { openHippoDb, openHippoDbReadOnly, closeHippoDb } from './db.js';
57
+ export { computeAmbientState, renderAmbientSummary, formatAmbientVector, } from './core/ambient.js';
58
+ export { appendAuditEvent, queryAuditEvents, listAuditEventsAfter, AUDIT_OPS, } from './store/audit.js';
59
+ export { openHippoDb, openHippoDbReadOnly, closeHippoDb } from './db/index.js';
60
60
  //# sourceMappingURL=index.js.map
@@ -2,7 +2,7 @@
2
2
  * Auto-learn from errors and git history.
3
3
  * Agents learn from failures without explicit hippo remember calls.
4
4
  */
5
- import { MemoryEntry } from './memory.js';
5
+ import { MemoryEntry } from '../core/memory.js';
6
6
  /** A memory of a failed command, "Command '<cmd>' failed: <truncated stderr>"; no store is in reach, so `hippo watch` re-derives its half-life from the store's config. */
7
7
  export declare function captureError(exitCode: number, stderr: string, command: string, tenantId?: string): MemoryEntry;
8
8
  /**
@@ -37,7 +37,7 @@ export declare function partitionLessons(lessons: string[]): {
37
37
  */
38
38
  export declare function deduplicateLesson(hippoRootOrEntries: string | MemoryEntry[], lesson: string, threshold?: number, tenantId?: string): boolean;
39
39
  /**
40
- * Run a command, streaming stdout/stderr to the terminal in real time.
40
+ * Run a command in a shell, streaming stderr live; never pass text the caller did not write.
41
41
  * Returns: { exitCode, stderr }.
42
42
  */
43
43
  export declare function runWatched(command: string): Promise<{
@@ -3,18 +3,20 @@
3
3
  * Agents learn from failures without explicit hippo remember calls.
4
4
  */
5
5
  import { execSync, execFileSync, spawn } from 'child_process';
6
- import { createMemory, Layer, DEFAULT_HALF_LIFE_DAYS } from './memory.js';
7
- import { loadAllEntries } from './store/entry-reads.js';
8
- import { textOverlap } from './tokenize.js';
9
- import { assessAutomaticMemory } from './memory-quality.js';
10
- import { redactSecretsStrict } from './secret-detect.js';
11
- import { log } from './log.js';
6
+ import { createMemory, Layer, DEFAULT_HALF_LIFE_DAYS } from '../core/memory.js';
7
+ import { loadAllEntries } from '../store/entry-reads.js';
8
+ import { textOverlap } from '../util/tokenize.js';
9
+ import { assessAutomaticMemory } from '../core/memory-quality.js';
10
+ import { redactSecretsStrict } from '../util/secret-detect.js';
11
+ import { errorMessage, log } from '../util/log.js';
12
+ const AUTOLEARN_TEXT_CHARS = 500;
13
+ const AUTOLEARN_TAG_CHARS = 30;
12
14
  /** A memory of a failed command, "Command '<cmd>' failed: <truncated stderr>"; no store is in reach, so `hippo watch` re-derives its half-life from the store's config. */
13
15
  export function captureError(exitCode, stderr, command, tenantId) {
14
16
  // Truncate to first 500 chars to avoid storing megabytes of build logs
15
17
  const clean = redactSecretsStrict(stderr);
16
18
  const wasTruncated = clean.length > 500;
17
- const truncated = clean.slice(0, 500).trim();
19
+ const truncated = clean.slice(0, AUTOLEARN_TEXT_CHARS).trim();
18
20
  const suffix = wasTruncated ? ' [truncated]' : '';
19
21
  // Strip leading env var assignments (KEY=val or key=val) before the actual command name
20
22
  const safeCmd = redactSecretsStrict(command.replace(/^([A-Za-z_][A-Za-z0-9_]*=\S+\s+)+/, '').trim()) || '(redacted)';
@@ -23,7 +25,7 @@ export function captureError(exitCode, stderr, command, tenantId) {
23
25
  const cmdBase = safeCmd.split(/\s+/)[0].replace(/[^a-zA-Z0-9-]/g, '');
24
26
  const tags = ['error', 'autolearn'];
25
27
  if (cmdBase)
26
- tags.push(cmdBase.toLowerCase().slice(0, 30));
28
+ tags.push(cmdBase.toLowerCase().slice(0, AUTOLEARN_TAG_CHARS));
27
29
  return createMemory(content, {
28
30
  layer: Layer.Episodic,
29
31
  tags,
@@ -117,7 +119,7 @@ export function deduplicateLesson(hippoRootOrEntries, lesson, threshold = 0.7, t
117
119
  return false;
118
120
  }
119
121
  /**
120
- * Run a command, streaming stdout/stderr to the terminal in real time.
122
+ * Run a command in a shell, streaming stderr live; never pass text the caller did not write.
121
123
  * Returns: { exitCode, stderr }.
122
124
  */
123
125
  export function runWatched(command) {
@@ -156,7 +158,7 @@ export function isGitRepo(cwd) {
156
158
  return raw.trim() === 'true';
157
159
  }
158
160
  catch (err) {
159
- log.debug(`autolearn: not a git repo: ${err instanceof Error ? err.message : String(err)}`);
161
+ log.debug(`autolearn: not a git repo: ${errorMessage(err)}`);
160
162
  return false;
161
163
  }
162
164
  }
@@ -172,7 +174,7 @@ export function fetchGitLog(cwd, days) {
172
174
  return raw;
173
175
  }
174
176
  catch (err) {
175
- log.debug(`autolearn: git log unavailable: ${err instanceof Error ? err.message : String(err)}`);
177
+ log.debug(`autolearn: git log unavailable: ${errorMessage(err)}`);
176
178
  return '';
177
179
  }
178
180
  }
@@ -1,4 +1,4 @@
1
- /** Git subprocess helpers for churn-staleness (src/invalidation.ts). */
1
+ /** Git subprocess helpers for churn-staleness (src/learn/invalidation.ts). */
2
2
  /** A real git failure (not git grep's expected exit-1-no-match). Callers abort the whole run on this. */
3
3
  export declare class GitReadError extends Error {
4
4
  }