hippo-memory 1.70.0 → 1.72.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 (855) hide show
  1. package/README.md +2 -2
  2. package/dist/agent-memories/apply.d.ts +0 -11
  3. package/dist/agent-memories/apply.js +6 -21
  4. package/dist/agent-memories/claude-code.d.ts +4 -2
  5. package/dist/agent-memories/claude-code.js +15 -6
  6. package/dist/agent-memories/codex.js +1 -1
  7. package/dist/agent-memories/copilot.d.ts +1 -3
  8. package/dist/agent-memories/copilot.js +1 -17
  9. package/dist/agent-memories/files.js +23 -12
  10. package/dist/agent-memories/markdown.d.ts +1 -3
  11. package/dist/agent-memories/markdown.js +1 -3
  12. package/dist/agent-memories/project-folds.d.ts +10 -0
  13. package/dist/agent-memories/project-folds.js +34 -0
  14. package/dist/agent-memories/report.js +2 -1
  15. package/dist/agent-memories/sync.d.ts +4 -2
  16. package/dist/agent-memories/sync.js +18 -11
  17. package/dist/api/assemble.d.ts +7 -44
  18. package/dist/api/assemble.js +3 -23
  19. package/dist/api/audit.d.ts +33 -1
  20. package/dist/api/audit.js +48 -1
  21. package/dist/api/auth.d.ts +20 -26
  22. package/dist/api/auth.js +43 -29
  23. package/dist/api/auto-sleep.d.ts +5 -2
  24. package/dist/api/auto-sleep.js +9 -5
  25. package/dist/api/availability.d.ts +2 -15
  26. package/dist/api/availability.js +4 -18
  27. package/dist/api/cards.d.ts +42 -0
  28. package/dist/api/cards.js +52 -0
  29. package/dist/api/conflicts.d.ts +28 -0
  30. package/dist/api/conflicts.js +61 -0
  31. package/dist/api/context-render.js +4 -3
  32. package/dist/api/context-select.js +12 -15
  33. package/dist/api/context-types.d.ts +10 -35
  34. package/dist/api/context.d.ts +5 -22
  35. package/dist/api/context.js +38 -46
  36. package/dist/api/continuity.d.ts +47 -0
  37. package/dist/api/continuity.js +66 -0
  38. package/dist/{cli → api}/correction-latency.d.ts +2 -14
  39. package/dist/{cli → api}/correction-latency.js +2 -14
  40. package/dist/api/dormant.d.ts +5 -21
  41. package/dist/api/dormant.js +11 -28
  42. package/dist/api/drill-down.d.ts +7 -46
  43. package/dist/api/drill-down.js +6 -27
  44. package/dist/api/embeddings.d.ts +17 -0
  45. package/dist/api/embeddings.js +28 -0
  46. package/dist/api/error-reply.d.ts +8 -0
  47. package/dist/api/error-reply.js +21 -0
  48. package/dist/api/forget.d.ts +11 -26
  49. package/dist/api/forget.js +23 -35
  50. package/dist/api/goals.d.ts +1 -1
  51. package/dist/api/goals.js +5 -9
  52. package/dist/api/graph.d.ts +8 -0
  53. package/dist/api/graph.js +7 -0
  54. package/dist/api/index.d.ts +6 -2
  55. package/dist/api/index.js +6 -2
  56. package/dist/api/instruction-detect.js +21 -6
  57. package/dist/api/learn.d.ts +4 -0
  58. package/dist/api/learn.js +53 -27
  59. package/dist/api/ledger-db.d.ts +2 -5
  60. package/dist/api/ledger-db.js +5 -35
  61. package/dist/api/memories.d.ts +23 -0
  62. package/dist/api/memories.js +46 -0
  63. package/dist/api/objects.d.ts +9 -0
  64. package/dist/api/objects.js +11 -0
  65. package/dist/api/on-store.js +5 -3
  66. package/dist/api/outcome.js +1 -1
  67. package/dist/api/pilot-arm.d.ts +1 -11
  68. package/dist/api/pilot-arm.js +5 -45
  69. package/dist/api/predictions.d.ts +11 -0
  70. package/dist/api/predictions.js +24 -0
  71. package/dist/api/projects.d.ts +21 -0
  72. package/dist/api/projects.js +24 -0
  73. package/dist/api/promote.d.ts +13 -17
  74. package/dist/api/promote.js +12 -20
  75. package/dist/api/prompt-hook.d.ts +19 -6
  76. package/dist/api/prompt-hook.js +54 -13
  77. package/dist/api/provenance-coverage.d.ts +14 -0
  78. package/dist/{cli → api}/provenance-coverage.js +2 -6
  79. package/dist/api/recall-cli.d.ts +58 -0
  80. package/dist/api/recall-cli.js +103 -0
  81. package/dist/api/recall-core.js +17 -9
  82. package/dist/api/recall-finish.d.ts +53 -0
  83. package/dist/api/recall-finish.js +30 -0
  84. package/dist/api/recall-history.d.ts +17 -84
  85. package/dist/api/recall-history.js +15 -88
  86. package/dist/api/recall-pipeline.d.ts +2 -3
  87. package/dist/api/recall-pipeline.js +21 -15
  88. package/dist/api/recall-request.js +1 -1
  89. package/dist/api/recall-types.d.ts +64 -304
  90. package/dist/api/recall.d.ts +3 -34
  91. package/dist/api/recall.js +63 -89
  92. package/dist/api/refine.d.ts +7 -0
  93. package/dist/api/refine.js +10 -0
  94. package/dist/api/remember-local.d.ts +57 -0
  95. package/dist/api/remember-local.js +90 -0
  96. package/dist/api/remember.d.ts +20 -2
  97. package/dist/api/remember.js +16 -3
  98. package/dist/api/session-end.d.ts +22 -0
  99. package/dist/api/session-end.js +101 -0
  100. package/dist/api/sleep-run.d.ts +2 -4
  101. package/dist/api/sleep-run.js +28 -28
  102. package/dist/api/sleep.d.ts +9 -28
  103. package/dist/api/status.d.ts +24 -0
  104. package/dist/api/status.js +40 -0
  105. package/dist/api/store-init.d.ts +4 -0
  106. package/dist/api/store-init.js +9 -0
  107. package/dist/api/tokens.d.ts +3 -10
  108. package/dist/api/tokens.js +4 -11
  109. package/dist/api/types.d.ts +8 -29
  110. package/dist/api/types.js +10 -23
  111. package/dist/capture/caller-session.d.ts +0 -3
  112. package/dist/capture/caller-session.js +1 -12
  113. package/dist/capture/capture-error.d.ts +2 -2
  114. package/dist/capture/capture-error.js +23 -18
  115. package/dist/capture/codex-patch.js +3 -1
  116. package/dist/capture/command.d.ts +4 -12
  117. package/dist/capture/command.js +39 -114
  118. package/dist/capture/compact.d.ts +4 -15
  119. package/dist/capture/compact.js +26 -30
  120. package/dist/capture/compaction-items-caller.js +11 -20
  121. package/dist/capture/compaction-record.d.ts +7 -93
  122. package/dist/capture/compaction-record.js +34 -399
  123. package/dist/capture/compaction-spool.d.ts +5 -3
  124. package/dist/capture/compaction-spool.js +21 -7
  125. package/dist/capture/copilot-transcript.d.ts +2 -1
  126. package/dist/capture/copilot-transcript.js +2 -1
  127. package/dist/capture/extract.d.ts +5 -2
  128. package/dist/capture/extract.js +4 -3
  129. package/dist/capture/failure-caller.d.ts +1 -1
  130. package/dist/capture/failure-caller.js +21 -16
  131. package/dist/capture/failure-reading.d.ts +2 -1
  132. package/dist/capture/failure-reading.js +7 -9
  133. package/dist/capture/pre-compact-caller.js +5 -4
  134. package/dist/capture/session-digest.d.ts +1 -1
  135. package/dist/capture/session-digest.js +17 -10
  136. package/dist/capture/session-end-caller.js +2 -1
  137. package/dist/capture/session-worker.js +3 -4
  138. package/dist/capture/transcript.d.ts +4 -11
  139. package/dist/capture/transcript.js +10 -21
  140. package/dist/capture/working-state.d.ts +4 -2
  141. package/dist/capture/working-state.js +4 -2
  142. package/dist/cli/api-context.d.ts +3 -0
  143. package/dist/cli/api-context.js +6 -0
  144. package/dist/cli/audit-prune.d.ts +1 -59
  145. package/dist/cli/audit-prune.js +2 -61
  146. package/dist/cli/audit.d.ts +1 -1
  147. package/dist/cli/audit.js +42 -43
  148. package/dist/cli/auth.d.ts +2 -2
  149. package/dist/cli/auth.js +61 -44
  150. package/dist/cli/briefs.d.ts +1 -4
  151. package/dist/cli/briefs.js +42 -301
  152. package/dist/cli/card.d.ts +2 -2
  153. package/dist/cli/card.js +63 -56
  154. package/dist/cli/client.d.ts +12 -27
  155. package/dist/cli/client.js +41 -44
  156. package/dist/cli/compact-resume-payload.js +4 -3
  157. package/dist/cli/context.d.ts +2 -3
  158. package/dist/cli/context.js +22 -18
  159. package/dist/cli/continuity.d.ts +6 -6
  160. package/dist/cli/continuity.js +81 -86
  161. package/dist/cli/curate.d.ts +13 -17
  162. package/dist/cli/curate.js +88 -116
  163. package/dist/cli/dag.d.ts +4 -4
  164. package/dist/cli/dag.js +55 -34
  165. package/dist/cli/decisions.d.ts +2 -4
  166. package/dist/cli/decisions.js +18 -309
  167. package/dist/cli/eval.d.ts +1 -1
  168. package/dist/cli/eval.js +27 -26
  169. package/dist/cli/exit.d.ts +6 -0
  170. package/dist/cli/exit.js +11 -0
  171. package/dist/cli/explain.d.ts +2 -3
  172. package/dist/cli/explain.js +25 -27
  173. package/dist/cli/flag-values.d.ts +6 -1
  174. package/dist/cli/flag-values.js +42 -15
  175. package/dist/cli/flags.d.ts +0 -288
  176. package/dist/cli/flags.js +3 -138
  177. package/dist/cli/github.d.ts +14 -0
  178. package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
  179. package/dist/cli/goals.d.ts +2 -2
  180. package/dist/cli/goals.js +46 -50
  181. package/dist/cli/graph.d.ts +3 -0
  182. package/dist/cli/graph.js +83 -0
  183. package/dist/cli/hook-runtime.d.ts +12 -32
  184. package/dist/cli/hook-runtime.js +21 -64
  185. package/dist/cli/incidents.d.ts +3 -0
  186. package/dist/cli/incidents.js +112 -0
  187. package/dist/cli/init.d.ts +2 -2
  188. package/dist/cli/init.js +33 -30
  189. package/dist/cli/install-steps.d.ts +2 -1
  190. package/dist/cli/install-steps.js +13 -14
  191. package/dist/cli/last-sleep.d.ts +2 -1
  192. package/dist/cli/last-sleep.js +4 -1
  193. package/dist/cli/lenient-id.d.ts +2 -0
  194. package/dist/cli/lenient-id.js +13 -0
  195. package/dist/cli/maintenance.d.ts +5 -5
  196. package/dist/cli/maintenance.js +37 -43
  197. package/dist/cli/notes.d.ts +2 -0
  198. package/dist/cli/notes.js +41 -0
  199. package/dist/cli/object-verbs.js +4 -3
  200. package/dist/cli/open-browser.d.ts +14 -0
  201. package/dist/cli/open-browser.js +26 -0
  202. package/dist/cli/owner-validation.d.ts +5 -28
  203. package/dist/cli/owner-validation.js +5 -28
  204. package/dist/cli/playbooks.d.ts +3 -4
  205. package/dist/cli/playbooks.js +131 -300
  206. package/dist/cli/predictions.d.ts +3 -0
  207. package/dist/cli/predictions.js +175 -0
  208. package/dist/cli/print.d.ts +2 -5
  209. package/dist/cli/print.js +3 -5
  210. package/dist/cli/projects.d.ts +2 -2
  211. package/dist/cli/projects.js +31 -25
  212. package/dist/cli/quality-repair-once.d.ts +1 -1
  213. package/dist/cli/quality-repair-once.js +7 -6
  214. package/dist/cli/recall.d.ts +2 -4
  215. package/dist/cli/recall.js +67 -137
  216. package/dist/cli/refine-llm.d.ts +5 -31
  217. package/dist/cli/refine-llm.js +23 -50
  218. package/dist/cli/remember.d.ts +3 -3
  219. package/dist/cli/remember.js +134 -192
  220. package/dist/cli/scheduler.d.ts +2 -17
  221. package/dist/cli/scheduler.js +14 -19
  222. package/dist/cli/serve.js +23 -14
  223. package/dist/cli/session-hooks.d.ts +11 -19
  224. package/dist/cli/session-hooks.js +143 -214
  225. package/dist/cli/setup.d.ts +4 -4
  226. package/dist/cli/setup.js +35 -30
  227. package/dist/cli/shared.d.ts +7 -25
  228. package/dist/cli/shared.js +17 -60
  229. package/dist/cli/slack.d.ts +2 -2
  230. package/dist/cli/slack.js +19 -23
  231. package/dist/cli/sleep-render.js +6 -3
  232. package/dist/cli/sleep.d.ts +3 -2
  233. package/dist/cli/sleep.js +17 -49
  234. package/dist/cli/status.d.ts +11 -14
  235. package/dist/cli/status.js +74 -120
  236. package/dist/cli/stdin.d.ts +4 -6
  237. package/dist/cli/stdin.js +2 -3
  238. package/dist/cli/transfer.d.ts +9 -9
  239. package/dist/cli/transfer.js +87 -108
  240. package/dist/cli/usage.d.ts +0 -79
  241. package/dist/cli/usage.js +1 -689
  242. package/dist/cli/verb-row.d.ts +32 -0
  243. package/dist/cli/verb-row.js +6 -0
  244. package/dist/cli/verbs/health.d.ts +27 -0
  245. package/dist/cli/verbs/health.js +232 -0
  246. package/dist/cli/verbs/memory.d.ts +16 -0
  247. package/dist/cli/verbs/memory.js +244 -0
  248. package/dist/cli/verbs/objects.d.ts +20 -0
  249. package/dist/cli/verbs/objects.js +254 -0
  250. package/dist/cli/verbs/sessions.d.ts +31 -0
  251. package/dist/cli/verbs/sessions.js +312 -0
  252. package/dist/cli/verbs.d.ts +81 -0
  253. package/dist/cli/verbs.js +7 -0
  254. package/dist/cli/versioned-verbs.d.ts +51 -0
  255. package/dist/cli/versioned-verbs.js +79 -0
  256. package/dist/cli.d.ts +1 -654
  257. package/dist/cli.js +44 -510
  258. package/dist/connectors/dlq.d.ts +39 -3
  259. package/dist/connectors/dlq.js +37 -3
  260. package/dist/connectors/github/backfill.d.ts +5 -25
  261. package/dist/connectors/github/backfill.js +26 -52
  262. package/dist/connectors/github/deletion.d.ts +4 -18
  263. package/dist/connectors/github/deletion.js +2 -15
  264. package/dist/connectors/github/dlq.d.ts +8 -33
  265. package/dist/connectors/github/dlq.js +34 -93
  266. package/dist/connectors/github/ingest.d.ts +4 -12
  267. package/dist/connectors/github/ingest.js +5 -36
  268. package/dist/connectors/github/octokit-client.d.ts +4 -16
  269. package/dist/connectors/github/octokit-client.js +27 -24
  270. package/dist/connectors/github/ratelimit.d.ts +3 -14
  271. package/dist/connectors/github/ratelimit.js +3 -14
  272. package/dist/connectors/github/scope.d.ts +3 -5
  273. package/dist/connectors/github/scope.js +3 -5
  274. package/dist/connectors/github/signature.d.ts +4 -26
  275. package/dist/connectors/github/signature.js +4 -26
  276. package/dist/connectors/github/tenant-routing.d.ts +2 -24
  277. package/dist/connectors/github/tenant-routing.js +4 -26
  278. package/dist/connectors/github/transform.js +2 -16
  279. package/dist/connectors/github/types.d.ts +3 -15
  280. package/dist/connectors/github/types.js +2 -9
  281. package/dist/connectors/github/webhook.d.ts +3 -16
  282. package/dist/connectors/github/webhook.js +38 -23
  283. package/dist/connectors/ingest.d.ts +10 -0
  284. package/dist/connectors/ingest.js +28 -0
  285. package/dist/connectors/slack/backfill.d.ts +4 -17
  286. package/dist/connectors/slack/backfill.js +4 -13
  287. package/dist/connectors/slack/dlq.d.ts +2 -19
  288. package/dist/connectors/slack/dlq.js +51 -90
  289. package/dist/connectors/slack/ingest.d.ts +4 -9
  290. package/dist/connectors/slack/ingest.js +4 -30
  291. package/dist/connectors/slack/scope.d.ts +2 -8
  292. package/dist/connectors/slack/scope.js +2 -8
  293. package/dist/connectors/slack/signature.d.ts +1 -6
  294. package/dist/connectors/slack/tenant-routing.d.ts +2 -19
  295. package/dist/connectors/slack/tenant-routing.js +2 -21
  296. package/dist/connectors/slack/transform.d.ts +2 -18
  297. package/dist/connectors/slack/transform.js +2 -18
  298. package/dist/connectors/slack/types.d.ts +3 -9
  299. package/dist/connectors/slack/types.js +2 -4
  300. package/dist/connectors/slack/web-client.js +33 -27
  301. package/dist/connectors/slack/webhook.d.ts +3 -19
  302. package/dist/connectors/slack/webhook.js +6 -26
  303. package/dist/connectors/slack/workspaces.d.ts +4 -24
  304. package/dist/connectors/slack/workspaces.js +4 -24
  305. package/dist/consolidate/conflicts.js +7 -15
  306. package/dist/consolidate/dag-summary.d.ts +8 -0
  307. package/dist/consolidate/dag-summary.js +41 -0
  308. package/dist/consolidate/dag.d.ts +5 -28
  309. package/dist/consolidate/dag.js +29 -84
  310. package/dist/consolidate/decay.js +7 -19
  311. package/dist/consolidate/dedupe.d.ts +13 -52
  312. package/dist/consolidate/dedupe.js +18 -74
  313. package/dist/consolidate/flush-units.d.ts +3 -4
  314. package/dist/consolidate/flush-units.js +3 -3
  315. package/dist/consolidate/half-life-migration.d.ts +3 -26
  316. package/dist/consolidate/half-life-migration.js +11 -28
  317. package/dist/consolidate/llm-passes.js +49 -40
  318. package/dist/consolidate/memory-value-weights.d.ts +2 -13
  319. package/dist/consolidate/memory-value-weights.js +2 -13
  320. package/dist/consolidate/memory-value.d.ts +11 -84
  321. package/dist/consolidate/memory-value.js +18 -105
  322. package/dist/consolidate/merge.js +12 -33
  323. package/dist/consolidate/physics-pass.d.ts +6 -1
  324. package/dist/consolidate/physics-pass.js +27 -9
  325. package/dist/consolidate/replay.d.ts +6 -38
  326. package/dist/consolidate/replay.js +25 -56
  327. package/dist/consolidate/run.js +1 -1
  328. package/dist/consolidate/sleep.d.ts +1 -8
  329. package/dist/consolidate/sleep.js +13 -22
  330. package/dist/consolidate/trace.d.ts +3 -18
  331. package/dist/consolidate/trace.js +3 -18
  332. package/dist/consolidate/traces.js +9 -25
  333. package/dist/core/ablation.d.ts +14 -91
  334. package/dist/core/ablation.js +16 -91
  335. package/dist/core/active-scope.d.ts +7 -0
  336. package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
  337. package/dist/core/ambient.d.ts +5 -8
  338. package/dist/core/ambient.js +40 -26
  339. package/dist/core/api-errors.d.ts +16 -0
  340. package/dist/core/api-errors.js +20 -0
  341. package/dist/core/capture-contract.d.ts +4 -2
  342. package/dist/core/capture-contract.js +4 -2
  343. package/dist/core/card.d.ts +4 -1
  344. package/dist/core/card.js +11 -1
  345. package/dist/core/compaction-timing.d.ts +7 -0
  346. package/dist/core/compaction-timing.js +9 -0
  347. package/dist/core/compare.d.ts +11 -67
  348. package/dist/core/compare.js +9 -63
  349. package/dist/core/config.d.ts +10 -24
  350. package/dist/core/config.js +20 -16
  351. package/dist/core/cosine.d.ts +3 -0
  352. package/dist/core/cosine.js +19 -0
  353. package/dist/core/handoff.d.ts +1 -7
  354. package/dist/core/handoff.js +1 -7
  355. package/dist/core/markdown.d.ts +6 -0
  356. package/dist/{store → core}/markdown.js +23 -22
  357. package/dist/core/memory-audit.d.ts +17 -0
  358. package/dist/core/memory-audit.js +54 -0
  359. package/dist/core/memory-quality.js +1 -1
  360. package/dist/core/memory.d.ts +51 -168
  361. package/dist/core/memory.js +76 -239
  362. package/dist/{consolidate → core}/merged-row.d.ts +1 -1
  363. package/dist/{consolidate → core}/merged-row.js +3 -2
  364. package/dist/core/package-root.d.ts +3 -0
  365. package/dist/core/package-root.js +5 -0
  366. package/dist/core/physics-config.d.ts +1 -4
  367. package/dist/core/physics-config.js +3 -8
  368. package/dist/core/physics.d.ts +15 -61
  369. package/dist/core/physics.js +65 -138
  370. package/dist/core/prediction.d.ts +3 -0
  371. package/dist/core/prediction.js +6 -0
  372. package/dist/core/project-identity.d.ts +20 -58
  373. package/dist/core/project-identity.js +27 -39
  374. package/dist/core/project-remote.js +13 -2
  375. package/dist/core/raw-append-only.d.ts +5 -0
  376. package/dist/core/raw-append-only.js +7 -0
  377. package/dist/core/recall-scope.d.ts +69 -0
  378. package/dist/core/recall-scope.js +138 -0
  379. package/dist/core/salience.d.ts +1 -7
  380. package/dist/core/salience.js +1 -7
  381. package/dist/dashboard/dashboard-actions.js +2 -2
  382. package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
  383. package/dist/dashboard/dashboard-snapshot.js +11 -2
  384. package/dist/dashboard/dashboard-types.d.ts +2 -1
  385. package/dist/dashboard/dashboard.d.ts +1 -0
  386. package/dist/dashboard/dashboard.js +50 -4
  387. package/dist/db/busy.d.ts +3 -8
  388. package/dist/db/busy.js +37 -33
  389. package/dist/db/connect.js +7 -8
  390. package/dist/db/index.d.ts +3 -3
  391. package/dist/db/index.js +3 -3
  392. package/dist/db/migrate.js +3 -3
  393. package/dist/db/migrations/index.d.ts +1 -1
  394. package/dist/db/migrations/index.js +3 -1
  395. package/dist/db/migrations/types.d.ts +2 -5
  396. package/dist/db/migrations/v14.js +2 -3
  397. package/dist/db/migrations/v15.js +2 -8
  398. package/dist/db/migrations/v16.js +2 -3
  399. package/dist/db/migrations/v17.js +2 -3
  400. package/dist/db/migrations/v19.js +2 -5
  401. package/dist/db/migrations/v20.js +2 -7
  402. package/dist/db/migrations/v22.js +4 -17
  403. package/dist/db/migrations/v23.js +3 -14
  404. package/dist/db/migrations/v24.js +2 -4
  405. package/dist/db/migrations/v25.js +3 -8
  406. package/dist/db/migrations/v26.js +2 -13
  407. package/dist/db/migrations/v27.js +3 -11
  408. package/dist/db/migrations/v28.js +2 -14
  409. package/dist/db/migrations/v29.js +4 -18
  410. package/dist/db/migrations/v30.js +4 -16
  411. package/dist/db/migrations/v31.js +2 -15
  412. package/dist/db/migrations/v32.js +4 -22
  413. package/dist/db/migrations/v33.js +2 -15
  414. package/dist/db/migrations/v34.js +2 -11
  415. package/dist/db/migrations/v35.js +2 -11
  416. package/dist/db/migrations/v36.js +2 -11
  417. package/dist/db/migrations/v37.js +8 -33
  418. package/dist/db/migrations/v38.js +5 -38
  419. package/dist/db/migrations/v39.js +9 -20
  420. package/dist/db/migrations/v40.js +2 -9
  421. package/dist/db/migrations/v41.js +2 -24
  422. package/dist/db/migrations/v43.js +1 -1
  423. package/dist/db/migrations/v44.js +2 -8
  424. package/dist/db/migrations/v45.js +2 -7
  425. package/dist/db/migrations/v47.js +2 -3
  426. package/dist/db/migrations/v51.js +1 -1
  427. package/dist/db/migrations/v55.d.ts +3 -0
  428. package/dist/db/migrations/v55.js +17 -0
  429. package/dist/db/open.d.ts +2 -2
  430. package/dist/db/open.js +21 -9
  431. package/dist/db/physics-state.d.ts +6 -22
  432. package/dist/db/physics-state.js +28 -39
  433. package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
  434. package/dist/db/raw-archive-mirror-cleanup.js +2 -17
  435. package/dist/db/tables.d.ts +2 -0
  436. package/dist/db/tables.js +6 -2
  437. package/dist/db/vector-store.d.ts +2 -0
  438. package/dist/db/vector-store.js +25 -5
  439. package/dist/db/wal-checkpointer.js +2 -1
  440. package/dist/doctor.js +85 -27
  441. package/dist/embeddings/local.d.ts +62 -0
  442. package/dist/embeddings/local.js +146 -0
  443. package/dist/embeddings/provider.d.ts +43 -0
  444. package/dist/{store/embeddings → embeddings}/provider.js +58 -83
  445. package/dist/embeddings/transformers.d.ts +26 -0
  446. package/dist/embeddings/transformers.js +89 -0
  447. package/dist/entry/session-text.d.ts +1 -1
  448. package/dist/entry/session-text.js +3 -2
  449. package/dist/eval/eval-stats.d.ts +15 -53
  450. package/dist/eval/eval-stats.js +12 -42
  451. package/dist/eval/eval-suite.d.ts +2 -13
  452. package/dist/eval/eval-suite.js +91 -45
  453. package/dist/eval/eval.d.ts +6 -24
  454. package/dist/eval/eval.js +8 -35
  455. package/dist/eval/judgment.d.ts +0 -3
  456. package/dist/eval/judgment.js +30 -15
  457. package/dist/extensions/openclaw-plugin/index.js +1 -1
  458. package/dist/graph/extract.d.ts +5 -27
  459. package/dist/graph/extract.js +10 -36
  460. package/dist/graph/recall.d.ts +7 -20
  461. package/dist/graph/recall.js +15 -77
  462. package/dist/graph/stream.d.ts +7 -39
  463. package/dist/graph/stream.js +11 -34
  464. package/dist/graph/view.d.ts +9 -35
  465. package/dist/graph/view.js +24 -44
  466. package/dist/graph/write.d.ts +1 -1
  467. package/dist/graph/write.js +9 -9
  468. package/dist/hooks/codex-session.js +3 -2
  469. package/dist/hooks/codex-wrapper.js +4 -3
  470. package/dist/hooks/copilot.js +2 -1
  471. package/dist/hooks/hook-blocks.d.ts +6 -2
  472. package/dist/hooks/hook-blocks.js +37 -124
  473. package/dist/hooks/json-hooks.d.ts +4 -36
  474. package/dist/hooks/json-hooks.js +22 -59
  475. package/dist/hooks/opencode.d.ts +0 -38
  476. package/dist/hooks/opencode.js +17 -81
  477. package/dist/hooks/shared.d.ts +6 -21
  478. package/dist/hooks/shared.js +31 -33
  479. package/dist/importers/core.d.ts +12 -37
  480. package/dist/importers/core.js +10 -28
  481. package/dist/importers/markdown-parse.d.ts +8 -22
  482. package/dist/importers/markdown-parse.js +8 -25
  483. package/dist/importers/markdown.js +3 -12
  484. package/dist/importers/sources.js +12 -39
  485. package/dist/importers/vault.d.ts +2 -8
  486. package/dist/importers/vault.js +31 -85
  487. package/dist/index.d.ts +8 -3
  488. package/dist/index.js +8 -3
  489. package/dist/learn/autolearn.d.ts +23 -42
  490. package/dist/learn/autolearn.js +45 -52
  491. package/dist/learn/churn-git.js +13 -4
  492. package/dist/learn/extract.d.ts +3 -2
  493. package/dist/learn/extract.js +8 -8
  494. package/dist/learn/forward-claim-detector.d.ts +6 -30
  495. package/dist/learn/forward-claim-detector.js +18 -68
  496. package/dist/learn/invalidation.d.ts +6 -18
  497. package/dist/learn/invalidation.js +18 -31
  498. package/dist/mcp/admin-tools.d.ts +2 -2
  499. package/dist/mcp/admin-tools.js +30 -53
  500. package/dist/mcp/format.js +3 -2
  501. package/dist/mcp/framing.d.ts +1 -0
  502. package/dist/mcp/framing.js +1 -1
  503. package/dist/mcp/memory-tools.js +7 -10
  504. package/dist/mcp/protocol.d.ts +15 -29
  505. package/dist/mcp/protocol.js +26 -16
  506. package/dist/mcp/recall-tools.js +14 -11
  507. package/dist/mcp/request.d.ts +3 -11
  508. package/dist/mcp/request.js +12 -27
  509. package/dist/mcp/server.d.ts +3 -9
  510. package/dist/mcp/server.js +5 -16
  511. package/dist/mcp/session-state.d.ts +1 -1
  512. package/dist/mcp/session-state.js +5 -11
  513. package/dist/mcp/stdio.d.ts +2 -6
  514. package/dist/mcp/stdio.js +68 -16
  515. package/dist/mcp/tool-args.js +2 -1
  516. package/dist/mcp/tools.js +47 -22
  517. package/dist/objects/customer-notes.d.ts +9 -44
  518. package/dist/objects/customer-notes.js +7 -48
  519. package/dist/objects/decisions.d.ts +14 -52
  520. package/dist/objects/decisions.js +15 -53
  521. package/dist/objects/descriptor.d.ts +1 -1
  522. package/dist/objects/incidents.d.ts +9 -40
  523. package/dist/objects/incidents.js +7 -41
  524. package/dist/objects/lifecycle.d.ts +1 -1
  525. package/dist/objects/lifecycle.js +2 -1
  526. package/dist/objects/policies.d.ts +13 -91
  527. package/dist/objects/policies.js +13 -99
  528. package/dist/objects/processes.d.ts +9 -54
  529. package/dist/objects/processes.js +7 -61
  530. package/dist/objects/project-briefs.d.ts +13 -57
  531. package/dist/objects/project-briefs.js +16 -78
  532. package/dist/objects/skills.d.ts +9 -44
  533. package/dist/objects/skills.js +8 -54
  534. package/dist/postinstall.js +7 -20
  535. package/dist/predictions/planning-fallacy.d.ts +11 -34
  536. package/dist/rerankers/clef.js +6 -37
  537. package/dist/rerankers/cross-encoder.d.ts +31 -2
  538. package/dist/rerankers/cross-encoder.js +65 -101
  539. package/dist/rerankers/index.js +5 -4
  540. package/dist/rerankers/jev.js +11 -10
  541. package/dist/rerankers/llm.d.ts +2 -11
  542. package/dist/rerankers/llm.js +14 -14
  543. package/dist/rerankers/outage-warning.d.ts +5 -2
  544. package/dist/rerankers/outage-warning.js +7 -4
  545. package/dist/rerankers/remote.d.ts +1 -0
  546. package/dist/rerankers/remote.js +2 -0
  547. package/dist/rerankers/types.d.ts +2 -14
  548. package/dist/search/bm25-search.js +1 -1
  549. package/dist/search/boosts.d.ts +0 -2
  550. package/dist/search/boosts.js +3 -3
  551. package/dist/search/embed-memories.d.ts +9 -0
  552. package/dist/search/embed-memories.js +377 -0
  553. package/dist/search/goal-boost.d.ts +23 -0
  554. package/dist/search/goal-boost.js +93 -0
  555. package/dist/search/hybrid.d.ts +11 -2
  556. package/dist/search/hybrid.js +9 -4
  557. package/dist/search/multihop.js +2 -3
  558. package/dist/search/path-context.d.ts +5 -18
  559. package/dist/search/path-context.js +5 -18
  560. package/dist/search/physics-search.d.ts +6 -3
  561. package/dist/search/physics-search.js +29 -19
  562. package/dist/search/rerank.js +1 -1
  563. package/dist/search/rrf.d.ts +7 -35
  564. package/dist/search/rrf.js +5 -30
  565. package/dist/search/vector.d.ts +13 -4
  566. package/dist/search/vector.js +40 -13
  567. package/dist/server/auth.d.ts +11 -28
  568. package/dist/server/auth.js +49 -32
  569. package/dist/server/boot.d.ts +2 -21
  570. package/dist/server/boot.js +69 -161
  571. package/dist/server/client-ip.d.ts +3 -21
  572. package/dist/server/client-ip.js +8 -30
  573. package/dist/server/deadline.d.ts +0 -2
  574. package/dist/server/deadline.js +1 -7
  575. package/dist/server/defaults.d.ts +4 -0
  576. package/dist/server/defaults.js +5 -0
  577. package/dist/server/key-check-bounds.d.ts +2 -1
  578. package/dist/server/lifecycle.d.ts +5 -4
  579. package/dist/server/lifecycle.js +19 -4
  580. package/dist/server/mcp-http.js +24 -53
  581. package/dist/server/rate-limit.d.ts +5 -18
  582. package/dist/server/rate-limit.js +4 -13
  583. package/dist/server/request.d.ts +4 -8
  584. package/dist/server/request.js +16 -19
  585. package/dist/server/route-checks.d.ts +7 -0
  586. package/dist/server/route-checks.js +42 -0
  587. package/dist/server/route-table.d.ts +9 -8
  588. package/dist/server/route-table.js +127 -139
  589. package/dist/server/routes/admin.d.ts +8 -8
  590. package/dist/server/routes/admin.js +35 -49
  591. package/dist/server/routes/customer-notes.d.ts +6 -6
  592. package/dist/server/routes/customer-notes.js +8 -14
  593. package/dist/server/routes/decisions.d.ts +6 -6
  594. package/dist/server/routes/decisions.js +12 -21
  595. package/dist/server/routes/incidents.d.ts +6 -6
  596. package/dist/server/routes/incidents.js +14 -25
  597. package/dist/server/routes/memories.d.ts +9 -9
  598. package/dist/server/routes/memories.js +20 -63
  599. package/dist/server/routes/object-routes.d.ts +6 -11
  600. package/dist/server/routes/object-routes.js +11 -22
  601. package/dist/server/routes/policies.d.ts +7 -7
  602. package/dist/server/routes/policies.js +12 -22
  603. package/dist/server/routes/predictions.d.ts +6 -6
  604. package/dist/server/routes/predictions.js +22 -38
  605. package/dist/server/routes/processes.d.ts +6 -6
  606. package/dist/server/routes/processes.js +17 -28
  607. package/dist/server/routes/project-briefs.d.ts +7 -7
  608. package/dist/server/routes/project-briefs.js +11 -20
  609. package/dist/server/routes/recall.d.ts +5 -5
  610. package/dist/server/routes/recall.js +16 -45
  611. package/dist/server/routes/skills.d.ts +7 -7
  612. package/dist/server/routes/skills.js +10 -22
  613. package/dist/server/server-detect.d.ts +15 -53
  614. package/dist/server/server-detect.js +55 -96
  615. package/dist/server/sleep-child.js +26 -7
  616. package/dist/server/sleep-offload.d.ts +11 -5
  617. package/dist/server/sleep-offload.js +21 -12
  618. package/dist/server/types.d.ts +32 -18
  619. package/dist/server/validation.d.ts +3 -2
  620. package/dist/server/validation.js +15 -33
  621. package/dist/server.d.ts +7 -6
  622. package/dist/server.js +8 -6
  623. package/dist/sharing/global-store.d.ts +19 -0
  624. package/dist/sharing/global-store.js +75 -0
  625. package/dist/sharing/global-sync.d.ts +6 -0
  626. package/dist/sharing/global-sync.js +73 -0
  627. package/dist/sharing/project-merge.d.ts +11 -19
  628. package/dist/sharing/project-merge.js +63 -125
  629. package/dist/sharing/search-both.d.ts +60 -0
  630. package/dist/sharing/search-both.js +138 -0
  631. package/dist/sharing/share.d.ts +40 -0
  632. package/dist/sharing/share.js +229 -0
  633. package/dist/store/ambient.js +9 -15
  634. package/dist/store/audit-event.d.ts +5 -13
  635. package/dist/store/audit-event.js +4 -12
  636. package/dist/store/audit.d.ts +2 -21
  637. package/dist/store/audit.js +8 -67
  638. package/dist/store/auth.d.ts +10 -8
  639. package/dist/store/auth.js +17 -12
  640. package/dist/store/candidates.d.ts +23 -5
  641. package/dist/store/candidates.js +119 -71
  642. package/dist/store/capture-write.d.ts +17 -0
  643. package/dist/store/capture-write.js +35 -0
  644. package/dist/store/card-detail.d.ts +2 -1
  645. package/dist/store/card-detail.js +2 -1
  646. package/dist/store/cards.d.ts +14 -9
  647. package/dist/store/cards.js +72 -126
  648. package/dist/store/compaction-caller.d.ts +18 -0
  649. package/dist/store/compaction-caller.js +29 -0
  650. package/dist/store/compactions-record.d.ts +115 -0
  651. package/dist/store/compactions-record.js +417 -0
  652. package/dist/store/compactions.js +6 -4
  653. package/dist/store/conflicts.d.ts +4 -21
  654. package/dist/store/conflicts.js +76 -152
  655. package/dist/store/connectors/dlq.d.ts +10 -0
  656. package/dist/store/connectors/dlq.js +32 -0
  657. package/dist/store/connectors/github.d.ts +14 -16
  658. package/dist/store/connectors/github.js +34 -57
  659. package/dist/store/connectors/slack.d.ts +2 -11
  660. package/dist/store/connectors/slack.js +18 -47
  661. package/dist/store/dashboard-reads.js +11 -14
  662. package/dist/store/delete-and-batch.d.ts +17 -31
  663. package/dist/store/delete-and-batch.js +84 -67
  664. package/dist/store/delivery-recorder.d.ts +15 -4
  665. package/dist/store/delivery-recorder.js +34 -17
  666. package/dist/store/descendant-page.js +6 -3
  667. package/dist/store/diagnostics.js +6 -13
  668. package/dist/store/dormant.d.ts +8 -30
  669. package/dist/store/dormant.js +18 -57
  670. package/dist/store/embeddings/index.d.ts +11 -90
  671. package/dist/store/embeddings/index.js +18 -523
  672. package/dist/store/entry-reads.d.ts +34 -61
  673. package/dist/store/entry-reads.js +111 -136
  674. package/dist/store/entry-row.d.ts +6 -35
  675. package/dist/store/entry-row.js +9 -37
  676. package/dist/store/entry-writes.d.ts +12 -18
  677. package/dist/store/entry-writes.js +46 -44
  678. package/dist/store/failure-log-at.d.ts +8 -0
  679. package/dist/store/failure-log-at.js +16 -0
  680. package/dist/store/failure-log.d.ts +2 -2
  681. package/dist/store/failure-log.js +5 -3
  682. package/dist/{trust → store}/gated-write.d.ts +3 -1
  683. package/dist/{trust → store}/gated-write.js +7 -5
  684. package/dist/store/goals.d.ts +3 -40
  685. package/dist/store/goals.js +41 -178
  686. package/dist/store/graph-queue.d.ts +6 -22
  687. package/dist/store/graph-queue.js +14 -45
  688. package/dist/store/graph-reads.d.ts +11 -35
  689. package/dist/store/graph-reads.js +24 -60
  690. package/dist/store/graph-rows.d.ts +3 -6
  691. package/dist/store/graph-rows.js +6 -9
  692. package/dist/store/graph-view-rows.d.ts +2 -1
  693. package/dist/store/graph-view-rows.js +2 -1
  694. package/dist/store/graph-writes.d.ts +10 -35
  695. package/dist/store/graph-writes.js +59 -106
  696. package/dist/store/half-life.d.ts +2 -1
  697. package/dist/store/half-life.js +14 -16
  698. package/dist/store/handoffs.d.ts +6 -12
  699. package/dist/store/handoffs.js +22 -40
  700. package/dist/store/index-and-stats.d.ts +6 -19
  701. package/dist/store/index-and-stats.js +36 -84
  702. package/dist/store/key-writes.js +1 -1
  703. package/dist/store/ledger-turn.d.ts +9 -0
  704. package/dist/store/ledger-turn.js +38 -0
  705. package/dist/store/mirrors.d.ts +2 -6
  706. package/dist/store/mirrors.js +24 -29
  707. package/dist/store/open.d.ts +0 -4
  708. package/dist/store/open.js +42 -62
  709. package/dist/store/pilot-arm.d.ts +12 -0
  710. package/dist/store/pilot-arm.js +42 -0
  711. package/dist/store/planning-fallacy-evidence.d.ts +2 -30
  712. package/dist/store/planning-fallacy-evidence.js +8 -37
  713. package/dist/store/port.d.ts +91 -82
  714. package/dist/store/port.js +8 -0
  715. package/dist/store/predictions.d.ts +12 -53
  716. package/dist/store/predictions.js +41 -125
  717. package/dist/store/project-tags.d.ts +62 -0
  718. package/dist/store/project-tags.js +67 -0
  719. package/dist/{cli → store}/quality-repair.js +15 -31
  720. package/dist/store/quarantine.js +2 -1
  721. package/dist/store/raw-archive.d.ts +4 -16
  722. package/dist/store/raw-archive.js +14 -29
  723. package/dist/store/recall-trace.d.ts +12 -77
  724. package/dist/store/recall-trace.js +37 -97
  725. package/dist/store/rejected-values.js +9 -20
  726. package/dist/store/rejection-probe.d.ts +4 -0
  727. package/dist/store/rejection-probe.js +19 -0
  728. package/dist/store/rejection.d.ts +10 -73
  729. package/dist/store/rejection.js +12 -84
  730. package/dist/store/report-reads.d.ts +6 -0
  731. package/dist/store/report-reads.js +29 -0
  732. package/dist/store/rows.d.ts +9 -19
  733. package/dist/store/rows.js +36 -34
  734. package/dist/store/rule-sql.d.ts +14 -0
  735. package/dist/store/rule-sql.js +56 -0
  736. package/dist/store/search-rows.d.ts +7 -38
  737. package/dist/store/search-rows.js +23 -54
  738. package/dist/store/sessions.d.ts +10 -47
  739. package/dist/store/sessions.js +21 -75
  740. package/dist/store/set-aside.d.ts +14 -0
  741. package/dist/store/set-aside.js +23 -0
  742. package/dist/store/sqlite/busy.d.ts +3 -0
  743. package/dist/store/sqlite/busy.js +8 -0
  744. package/dist/store/sqlite/connector-events-group.js +5 -8
  745. package/dist/store/sqlite/connector-writes-group.js +3 -3
  746. package/dist/store/sqlite/entry-writes-group.js +4 -4
  747. package/dist/store/sqlite/error-codec.js +8 -5
  748. package/dist/store/sqlite/executor.d.ts +2 -1
  749. package/dist/store/sqlite/executor.js +12 -5
  750. package/dist/store/sqlite/graph-reads-group.js +1 -1
  751. package/dist/store/sqlite/held-connection.d.ts +9 -0
  752. package/dist/store/sqlite/held-connection.js +41 -0
  753. package/dist/store/sqlite/local.d.ts +3 -3
  754. package/dist/store/sqlite/local.js +1 -0
  755. package/dist/store/sqlite/object-rows.d.ts +1 -1
  756. package/dist/store/sqlite/object-rows.js +6 -3
  757. package/dist/store/sqlite/objects-group.d.ts +1 -1
  758. package/dist/store/sqlite/objects-group.js +5 -3
  759. package/dist/store/sqlite/quarantine-group.js +2 -2
  760. package/dist/store/sqlite/store.d.ts +1 -4
  761. package/dist/store/sqlite/store.js +16 -15
  762. package/dist/store/sqlite/vector-reads-group.js +2 -2
  763. package/dist/store/sqlite/worker-jobs.js +1 -1
  764. package/dist/store/sqlite/worker-ops.d.ts +13 -2
  765. package/dist/store/sqlite/worker-ops.js +13 -2
  766. package/dist/store/sqlite/worker-store.js +5 -2
  767. package/dist/store/summaries.d.ts +11 -63
  768. package/dist/store/summaries.js +37 -148
  769. package/dist/store/summary-dirty.js +1 -1
  770. package/dist/store/tenant-lookup.d.ts +6 -1
  771. package/dist/store/tenant-lookup.js +7 -0
  772. package/dist/store/tenant.d.ts +2 -16
  773. package/dist/store/tenant.js +4 -19
  774. package/dist/store/token-ledger.d.ts +13 -50
  775. package/dist/store/token-ledger.js +19 -85
  776. package/dist/store/usage-reports.js +5 -13
  777. package/dist/store/vector-index.d.ts +46 -0
  778. package/dist/store/vector-index.js +171 -0
  779. package/dist/store/working-memory.d.ts +6 -25
  780. package/dist/store/working-memory.js +18 -52
  781. package/dist/support-bundle.js +9 -8
  782. package/dist/trust/reject-flow.js +3 -5
  783. package/dist/util/agent-homes.d.ts +15 -0
  784. package/dist/util/agent-homes.js +34 -0
  785. package/dist/util/anthropic-messages.d.ts +3 -0
  786. package/dist/util/anthropic-messages.js +35 -6
  787. package/dist/util/atomic-write.d.ts +2 -1
  788. package/dist/util/atomic-write.js +35 -4
  789. package/dist/util/capped-json.d.ts +6 -0
  790. package/dist/util/capped-json.js +46 -0
  791. package/dist/util/chunked.d.ts +3 -0
  792. package/dist/util/chunked.js +10 -0
  793. package/dist/util/crash-handlers.d.ts +8 -1
  794. package/dist/util/crash-handlers.js +52 -10
  795. package/dist/util/ellipsize.d.ts +3 -0
  796. package/dist/util/ellipsize.js +5 -0
  797. package/dist/util/env.d.ts +14 -6
  798. package/dist/util/env.js +15 -7
  799. package/dist/util/format.d.ts +3 -0
  800. package/dist/util/format.js +6 -0
  801. package/dist/util/home-path.d.ts +2 -1
  802. package/dist/util/home-path.js +4 -2
  803. package/dist/util/hook-payload.d.ts +8 -0
  804. package/dist/util/hook-payload.js +37 -0
  805. package/dist/util/http-retry.d.ts +9 -1
  806. package/dist/util/http-retry.js +67 -8
  807. package/dist/util/http-util.d.ts +0 -8
  808. package/dist/util/http-util.js +10 -21
  809. package/dist/util/limits.d.ts +7 -0
  810. package/dist/util/limits.js +14 -0
  811. package/dist/util/log.d.ts +7 -2
  812. package/dist/util/log.js +34 -9
  813. package/dist/util/request-scope.d.ts +5 -2
  814. package/dist/util/request-scope.js +13 -7
  815. package/dist/util/secret-detect.d.ts +5 -30
  816. package/dist/util/secret-detect.js +19 -40
  817. package/dist/util/sqlite-blocked.d.ts +2 -0
  818. package/dist/util/sqlite-blocked.js +5 -0
  819. package/dist/util/stored-json.d.ts +1 -1
  820. package/dist/util/stored-json.js +1 -1
  821. package/dist/util/stream-tee.d.ts +3 -0
  822. package/dist/util/stream-tee.js +35 -0
  823. package/dist/util/time.d.ts +4 -0
  824. package/dist/util/time.js +4 -0
  825. package/dist/util/token-text.d.ts +1 -4
  826. package/dist/util/token-text.js +1 -4
  827. package/dist/util/transcript-tail.d.ts +2 -0
  828. package/dist/util/transcript-tail.js +24 -23
  829. package/dist/util/version.d.ts +5 -20
  830. package/dist/util/version.js +5 -20
  831. package/dist/{store → util}/yaml.d.ts +1 -5
  832. package/dist/{store → util}/yaml.js +2 -6
  833. package/extensions/openclaw-plugin/index.ts +1 -1
  834. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  835. package/extensions/openclaw-plugin/package.json +1 -1
  836. package/openclaw.plugin.json +1 -1
  837. package/package.json +2 -2
  838. package/dist/cli/provenance-coverage.d.ts +0 -18
  839. package/dist/connectors/github/cli-impl.d.ts +0 -25
  840. package/dist/sharing/scope.d.ts +0 -14
  841. package/dist/sharing/shared.d.ts +0 -187
  842. package/dist/sharing/shared.js +0 -563
  843. package/dist/store/embeddings/local.d.ts +0 -15
  844. package/dist/store/embeddings/local.js +0 -192
  845. package/dist/store/embeddings/provider.d.ts +0 -77
  846. package/dist/store/markdown.d.ts +0 -10
  847. package/dist/store/recall-scope.d.ts +0 -138
  848. package/dist/store/recall-scope.js +0 -216
  849. package/dist/store/vector-writes.d.ts +0 -13
  850. package/dist/store/vector-writes.js +0 -89
  851. /package/dist/{store → core}/object-types.d.ts +0 -0
  852. /package/dist/{store → core}/object-types.js +0 -0
  853. /package/dist/{cli → store}/quality-repair.d.ts +0 -0
  854. /package/dist/{capture → util}/compaction-items.d.ts +0 -0
  855. /package/dist/{capture → util}/compaction-items.js +0 -0
@@ -1,12 +1,5 @@
1
- /**
2
- * Graph observability and visualization, READ-ONLY over the entity/relation
3
- * graph.
4
- *
5
- * This module only READS the graph (through the store's graph reads) and renders
6
- * view-models; it issues no INSERT/UPDATE/DELETE, so `scripts/check-graph-writes.mjs`
7
- * stays green. Used by the CLI (`hippo graph show` / `hippo graph view`) and the
8
- * HTTP `GET /v1/graph` route, which all build the same `GraphModel`.
9
- */
1
+ /** Graph observability and visualization, READ-ONLY over the entity/relation graph (no writes, so `scripts/check-graph-writes.mjs` stays green).
2
+ * Shared by `hippo graph show|view` and the HTTP `GET /v1/graph` route, which all build the same `GraphModel`. */
10
3
  import type { GraphRows } from '../store/port.js';
11
4
  import type { EntityType, RelationType } from '../store/graph-rows.js';
12
5
  export interface GraphNode {
@@ -28,12 +21,8 @@ export interface GraphModel {
28
21
  }
29
22
  /** Default bound for the CLI viewer / show so an unbounded set is never laid out. */
30
23
  export declare const DEFAULT_VIEW_LIMIT = 500;
31
- /**
32
- * Build the view-model from the graph (reads only). With `opts.entity`, returns a
33
- * focus subgraph: every entity whose name === entity, plus their 1-hop neighbours,
34
- * plus the edges among that union. Dangling edges (an endpoint outside the node
35
- * set) are always dropped.
36
- */
24
+ /** Build the view-model (reads only); with `opts.entity`, a focus subgraph of the entities named so plus their 1-hop neighbours.
25
+ * Dangling edges (an endpoint outside the node set) are always dropped. */
37
26
  export declare function buildGraphModel(hippoRoot: string, tenantId: string, opts?: {
38
27
  entity?: string;
39
28
  limit?: number;
@@ -41,12 +30,8 @@ export declare function buildGraphModel(hippoRoot: string, tenantId: string, opt
41
30
  }): GraphModel;
42
31
  /** The reply model of the rows a store read: an edge with an endpoint outside the node set is dropped. */
43
32
  export declare function graphModelOf({ entities, relations, truncated }: GraphRows): GraphModel;
44
- /**
45
- * Deterministic Fruchterman-Reingold-style force layout. Seeded circular init +
46
- * fixed iterations, NO `Math.random`, so the same model always yields the same
47
- * positions (testable, stable output). Non-finite coordinates from a degenerate
48
- * step are clamped to the viewport centre; all positions are clamped in-bounds.
49
- */
33
+ /** Deterministic Fruchterman-Reingold-style force layout: seeded circular init, fixed iterations, no `Math.random`, so one model gives the same positions.
34
+ * Non-finite coordinates are clamped to the viewport centre and all positions to the bounds. */
50
35
  export declare function layoutGraph(model: GraphModel, opts?: {
51
36
  width?: number;
52
37
  height?: number;
@@ -57,20 +42,9 @@ export declare function layoutGraph(model: GraphModel, opts?: {
57
42
  }>;
58
43
  /** HTML-escape for SVG text / title / markup content (XSS guard). */
59
44
  export declare function escapeHtml(s: string): string;
60
- /**
61
- * Render the model as a SELF-CONTAINED, dependency-free, offline interactive HTML
62
- * node-link diagram. Positions are computed server-side (deterministic). User
63
- * strings are escaped per sink: SVG `<text>`/`<title>` via `escapeHtml`; the model
64
- * is inlined in a `<script type="application/json">` block with `<`/`>`/`&`
65
- * unicode-escaped so a `</script>` inside an entity name cannot break out (the
66
- * client `JSON.parse`s it back and never `innerHTML`s a user string).
67
- */
45
+ /** Render the model as a self-contained, offline interactive HTML node-link diagram with server-side deterministic positions.
46
+ * The model is inlined as `<script type="application/json">` with `<`, `>`, `&` unicode-escaped so a `</script>` in an entity name cannot break out. */
68
47
  export declare function renderGraphHtml(model: GraphModel): string;
69
- /**
70
- * Render the model as a JSON Canvas (jsoncanvas.org) document — `nodes[]` of
71
- * type `text` positioned by the same deterministic layout, `edges[]` linking
72
- * them by id. Opens natively in Obsidian. Pure JSON; entity names live in the
73
- * `text` field (Obsidian renders/sanitizes them).
74
- */
48
+ /** Render the model as a JSON Canvas (jsoncanvas.org) document: `text` nodes at the same deterministic layout positions, `edges[]` linking them by id. */
75
49
  export declare function renderGraphCanvas(model: GraphModel): string;
76
50
  //# sourceMappingURL=view.d.ts.map
@@ -1,24 +1,13 @@
1
- /**
2
- * Graph observability and visualization, READ-ONLY over the entity/relation
3
- * graph.
4
- *
5
- * This module only READS the graph (through the store's graph reads) and renders
6
- * view-models; it issues no INSERT/UPDATE/DELETE, so `scripts/check-graph-writes.mjs`
7
- * stays green. Used by the CLI (`hippo graph show` / `hippo graph view`) and the
8
- * HTTP `GET /v1/graph` route, which all build the same `GraphModel`.
9
- */
1
+ /** Graph observability and visualization, READ-ONLY over the entity/relation graph (no writes, so `scripts/check-graph-writes.mjs` stays green).
2
+ * Shared by `hippo graph show|view` and the HTTP `GET /v1/graph` route, which all build the same `GraphModel`. */
10
3
  import { withGraphReadSnapshot } from '../store/graph-reads.js';
11
4
  import { graphViewRows } from '../store/graph-view-rows.js';
12
5
  const DEFAULT_LAYOUT_ITERATIONS = 300;
13
6
  const NODE_LABEL_MAX_CHARS = 22;
14
7
  /** Default bound for the CLI viewer / show so an unbounded set is never laid out. */
15
8
  export const DEFAULT_VIEW_LIMIT = 500;
16
- /**
17
- * Build the view-model from the graph (reads only). With `opts.entity`, returns a
18
- * focus subgraph: every entity whose name === entity, plus their 1-hop neighbours,
19
- * plus the edges among that union. Dangling edges (an endpoint outside the node
20
- * set) are always dropped.
21
- */
9
+ /** Build the view-model (reads only); with `opts.entity`, a focus subgraph of the entities named so plus their 1-hop neighbours.
10
+ * Dangling edges (an endpoint outside the node set) are always dropped. */
22
11
  export function buildGraphModel(hippoRoot, tenantId, opts = {}) {
23
12
  const limit = opts.limit ?? DEFAULT_VIEW_LIMIT;
24
13
  // One read snapshot, so a concurrent graph rebuild cannot make the model mix old entity ids with new relation ids.
@@ -105,12 +94,8 @@ function applyDisplacement(nodes, pos, disp, temp, width, height) {
105
94
  p.y = Math.max(20, Math.min(height - 20, ny));
106
95
  });
107
96
  }
108
- /**
109
- * Deterministic Fruchterman-Reingold-style force layout. Seeded circular init +
110
- * fixed iterations, NO `Math.random`, so the same model always yields the same
111
- * positions (testable, stable output). Non-finite coordinates from a degenerate
112
- * step are clamped to the viewport centre; all positions are clamped in-bounds.
113
- */
97
+ /** Deterministic Fruchterman-Reingold-style force layout: seeded circular init, fixed iterations, no `Math.random`, so one model gives the same positions.
98
+ * Non-finite coordinates are clamped to the viewport centre and all positions to the bounds. */
114
99
  export function layoutGraph(model, opts = {}) {
115
100
  const width = opts.width ?? LAYOUT_W;
116
101
  const height = opts.height ?? LAYOUT_H;
@@ -150,10 +135,8 @@ const NODE_COLORS = {
150
135
  person: '#3b82f6',
151
136
  system: '#64748b',
152
137
  };
153
- // Client script: pan (drag bg), zoom (wheel), click-to-highlight a node's edges +
154
- // neighbours. Reads the inlined model via JSON.parse (never innerHTML), so user
155
- // strings never reach an HTML sink here. No template literals / `${}` so it nests
156
- // safely inside this module's own template strings.
138
+ // Client script: pan, zoom, click-to-highlight. It reads the inlined model via JSON.parse (never innerHTML)
139
+ // and uses no template literals or `${}`, so it nests in this module's template strings.
157
140
  const CLIENT_JS = [
158
141
  "(function(){",
159
142
  " var svg=document.getElementById('g');",
@@ -163,15 +146,23 @@ const CLIENT_JS = [
163
146
  " var panning=false,sx=0,sy=0;",
164
147
  " svg.addEventListener('mousedown',function(e){if(e.target.closest('.node'))return;panning=true;sx=e.clientX;sy=e.clientY;});",
165
148
  " window.addEventListener('mouseup',function(){panning=false;});",
166
- " window.addEventListener('mousemove',function(e){if(!panning)return;var r=svg.getBoundingClientRect();var k=view.w/r.width;view.x-=(e.clientX-sx)*k;view.y-=(e.clientY-sy)*k;sx=e.clientX;sy=e.clientY;apply();});",
167
- " svg.addEventListener('wheel',function(e){e.preventDefault();var r=svg.getBoundingClientRect();var mx=view.x+(e.clientX-r.left)/r.width*view.w;var my=view.y+(e.clientY-r.top)/r.height*view.h;var f=e.deltaY<0?0.9:1.1;view.x=mx-(mx-view.x)*f;view.y=my-(my-view.y)*f;view.w*=f;view.h*=f;apply();},{passive:false});",
168
- " var data={};try{data=JSON.parse(document.getElementById('graph-data').textContent);}catch(_){}",
149
+ " window.addEventListener('mousemove',function(e){if(!panning)return;var r=svg.getBoundingClientRect();var " +
150
+ "k=view.w/r.width;view.x-=(e.clientX-sx)*k;view.y-=(e.clientY-sy)*k;sx=e.clientX;sy=e.clientY;apply();});",
151
+ " svg.addEventListener('wheel',function(e){e.preventDefault();var r=svg.getBoundingClientRect();var mx=view.x+(e.clientX-r.left)/r.width*view.w;var " +
152
+ "my=view.y+(e.clientY-r.top)/r.height*view.h;var " +
153
+ "f=e.deltaY<0?0.9:1.1;view.x=mx-(mx-view.x)*f;view.y=my-(my-view.y)*f;view.w*=f;view.h*=f;apply();},{passive:false});",
154
+ " var data={};try{data=JSON.parse(document.getElementById('graph-data').textContent);}",
155
+ " catch(e){console.error('hippo graph: embedded model is not valid JSON',e);}",
169
156
  " var adj={};(data.edges||[]).forEach(function(e){(adj[e.from]=adj[e.from]||[]).push(e.to);(adj[e.to]=adj[e.to]||[]).push(e.from);});",
170
157
  " var active=null;",
171
- " document.querySelectorAll('.node').forEach(function(g){g.addEventListener('click',function(ev){ev.stopPropagation();var id=g.getAttribute('data-id');if(active===id){clearHi();active=null;return;}active=id;highlight(id);});});",
158
+ " document.querySelectorAll('.node').forEach(function(g){g.addEventListener('click',function(ev){ev.stopPropagation();var " +
159
+ "id=g.getAttribute('data-id');if(active===id){clearHi();active=null;return;}active=id;highlight(id);});});",
172
160
  " svg.addEventListener('click',function(){clearHi();active=null;});",
173
161
  " function clearHi(){svg.classList.remove('focused');document.querySelectorAll('.hi').forEach(function(el){el.classList.remove('hi');});}",
174
- " function highlight(id){clearHi();svg.classList.add('focused');var keep={};keep[id]=1;(adj[id]||[]).forEach(function(n){keep[n]=1;});document.querySelectorAll('.node').forEach(function(g){if(keep[g.getAttribute('data-id')])g.classList.add('hi');});document.querySelectorAll('.edge').forEach(function(l){if(l.getAttribute('data-from')===id||l.getAttribute('data-to')===id)l.classList.add('hi');});}",
162
+ " function highlight(id){clearHi();svg.classList.add('focused');var " +
163
+ "keep={};keep[id]=1;(adj[id]||[]).forEach(function(n){keep[n]=1;});document.querySelectorAll('.node').forEach(" +
164
+ "function(g){if(keep[g.getAttribute('data-id')])g.classList.add('hi');});document.querySelectorAll('.edge').forEach(" +
165
+ "function(l){if(l.getAttribute('data-from')===id||l.getAttribute('data-to')===id)l.classList.add('hi');});}",
175
166
  "})();",
176
167
  ].join("\n");
177
168
  const STYLE = [
@@ -231,14 +222,8 @@ function renderLegend(model) {
231
222
  .map((t) => `<span style="color:${nodeColor(t)}">●</span> ${escapeHtml(t)}`)
232
223
  .join(' ');
233
224
  }
234
- /**
235
- * Render the model as a SELF-CONTAINED, dependency-free, offline interactive HTML
236
- * node-link diagram. Positions are computed server-side (deterministic). User
237
- * strings are escaped per sink: SVG `<text>`/`<title>` via `escapeHtml`; the model
238
- * is inlined in a `<script type="application/json">` block with `<`/`>`/`&`
239
- * unicode-escaped so a `</script>` inside an entity name cannot break out (the
240
- * client `JSON.parse`s it back and never `innerHTML`s a user string).
241
- */
225
+ /** Render the model as a self-contained, offline interactive HTML node-link diagram with server-side deterministic positions.
226
+ * The model is inlined as `<script type="application/json">` with `<`, `>`, `&` unicode-escaped so a `</script>` in an entity name cannot break out. */
242
227
  export function renderGraphHtml(model) {
243
228
  const pos = layoutGraph(model);
244
229
  const edgeSvg = renderEdgeSvg(model, pos);
@@ -262,12 +247,7 @@ export function renderGraphHtml(model) {
262
247
  '</body></html>',
263
248
  ].join('\n');
264
249
  }
265
- /**
266
- * Render the model as a JSON Canvas (jsoncanvas.org) document — `nodes[]` of
267
- * type `text` positioned by the same deterministic layout, `edges[]` linking
268
- * them by id. Opens natively in Obsidian. Pure JSON; entity names live in the
269
- * `text` field (Obsidian renders/sanitizes them).
270
- */
250
+ /** Render the model as a JSON Canvas (jsoncanvas.org) document: `text` nodes at the same deterministic layout positions, `edges[]` linking them by id. */
271
251
  export function renderGraphCanvas(model) {
272
252
  const pos = layoutGraph(model, { width: 2400, height: 1600 });
273
253
  const nodes = model.nodes.map((node) => {
@@ -6,7 +6,7 @@ export interface ApplyGraphOpsResult {
6
6
  }
7
7
  /** Applies `ops` from index `opts.from` on the caller's open transaction and stops at the first op boundary past `opts.holdMs`.
8
8
  * Returns where the next chunk starts and how many ops were skipped as stale. */
9
- export declare function applyGraphOps(db: DatabaseSyncLike, hippoRoot: string, tenantId: string, ops: readonly GraphOp[], opts: {
9
+ export declare function applyGraphOps(db: DatabaseSyncLike, tenantId: string, ops: readonly GraphOp[], opts: {
10
10
  readonly from: number;
11
11
  readonly holdMs: number;
12
12
  readonly clock?: () => number;
@@ -1,19 +1,19 @@
1
1
  // Applies a rebuild's op list on the caller's transaction. The statements and the consolidated-source guard sit in the store's graph writers.
2
2
  import { assertTenantId } from '../store/tenant.js';
3
3
  import { clock } from '../util/write-budget.js';
4
- import { deleteEntityRow, deleteRelationRow, entityIdBySource, insertEntity, insertRelation, objectInForce, relationPresent, updateEntity } from '../store/graph-writes.js';
5
- function insertDesiredRelation(db, hippoRoot, tenantId, rel) {
4
+ import { deleteEntityRow, deleteRelationRow, entityIdBySource, insertEntityRow, insertRelationRow, objectInForce, relationPresent, updateEntityRow } from '../store/graph-writes.js';
5
+ function insertDesiredRelation(db, tenantId, rel) {
6
6
  const fromEntityId = entityIdBySource(db, tenantId, rel.from.entityType, rel.from.sourceObject);
7
7
  const toEntityId = entityIdBySource(db, tenantId, rel.to.entityType, rel.to.sourceObject);
8
8
  if (fromEntityId === undefined || toEntityId === undefined || !objectInForce(db, tenantId, rel.sourceObject))
9
9
  return false;
10
10
  if (relationPresent(db, tenantId, fromEntityId, toEntityId, rel.relType))
11
11
  return false;
12
- insertRelation(hippoRoot, tenantId, { fromEntityId, toEntityId, relType: rel.relType, memoryId: rel.memoryId, sourceObject: rel.sourceObject }, db);
12
+ insertRelationRow(db, tenantId, { fromEntityId, toEntityId, relType: rel.relType, memoryId: rel.memoryId, sourceObject: rel.sourceObject });
13
13
  return true;
14
14
  }
15
15
  /** Applies one op; false when a writer since the diff made it stale, which the next run's diff repairs. */
16
- function applyGraphOp(db, hippoRoot, tenantId, op) {
16
+ function applyGraphOp(db, tenantId, op) {
17
17
  switch (op.op) {
18
18
  case 'deleteEntity':
19
19
  deleteEntityRow(db, tenantId, op.id);
@@ -24,27 +24,27 @@ function applyGraphOp(db, hippoRoot, tenantId, op) {
24
24
  case 'updateEntity':
25
25
  if (!objectInForce(db, tenantId, op.entity.sourceObject))
26
26
  return false;
27
- return updateEntity(hippoRoot, tenantId, op.id, op.entity, db) !== null;
27
+ return updateEntityRow(db, tenantId, op.id, op.entity) !== null;
28
28
  case 'insertEntity':
29
29
  // A mirrorless object closed since the load is never enqueued again, so a stale insert would stay for good.
30
30
  if (!objectInForce(db, tenantId, op.entity.sourceObject) || entityIdBySource(db, tenantId, op.entity.entityType, op.entity.sourceObject) !== undefined)
31
31
  return false;
32
- insertEntity(hippoRoot, tenantId, op.entity, db);
32
+ insertEntityRow(db, tenantId, op.entity);
33
33
  return true;
34
34
  case 'insertRelation':
35
- return insertDesiredRelation(db, hippoRoot, tenantId, op.relation);
35
+ return insertDesiredRelation(db, tenantId, op.relation);
36
36
  }
37
37
  }
38
38
  /** Applies `ops` from index `opts.from` on the caller's open transaction and stops at the first op boundary past `opts.holdMs`.
39
39
  * Returns where the next chunk starts and how many ops were skipped as stale. */
40
- export function applyGraphOps(db, hippoRoot, tenantId, ops, opts) {
40
+ export function applyGraphOps(db, tenantId, ops, opts) {
41
41
  assertTenantId('applyGraphOps', tenantId);
42
42
  const now = opts.clock ?? clock;
43
43
  const begunAt = now();
44
44
  let next = opts.from;
45
45
  let skipped = 0;
46
46
  while (next < ops.length) {
47
- if (!applyGraphOp(db, hippoRoot, tenantId, ops[next]))
47
+ if (!applyGraphOp(db, tenantId, ops[next]))
48
48
  skipped += 1;
49
49
  next += 1;
50
50
  if (now() - begunAt >= opts.holdMs)
@@ -1,6 +1,7 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import { isJsonString } from '../util/json.js';
4
+ import { errorMessage, log } from '../util/log.js';
4
5
  function collectFiles(dir) {
5
6
  if (!fs.existsSync(dir))
6
7
  return [];
@@ -42,8 +43,8 @@ function readCodexSessionIdsFromHistoryDelta(historyPath, startOffsetBytes) {
42
43
  ordered.push(sessionId);
43
44
  }
44
45
  }
45
- catch {
46
- // ignore malformed JSONL lines
46
+ catch (err) {
47
+ log.warn(`codex history ${historyPath}: skipped a malformed JSONL line (${errorMessage(err)})`);
47
48
  }
48
49
  }
49
50
  return ordered;
@@ -1,9 +1,10 @@
1
1
  import { envPath } from '../util/env.js';
2
2
  import * as fs from 'fs';
3
3
  import * as path from 'path';
4
- import { fileURLToPath } from 'url';
4
+ import { PACKAGE_ROOT } from '../core/package-root.js';
5
5
  import { errorMessage, log } from '../util/log.js';
6
- import { HIPPO_CODEX_WRAPPER_MARKER, homeDir, codexHomeDir, ensureDir } from './shared.js';
6
+ import { HIPPO_CODEX_WRAPPER_MARKER, ensureDir } from './shared.js';
7
+ import { homeDir, codexHomeDir } from '../util/agent-homes.js';
7
8
  import { isJsonString } from '../util/json.js';
8
9
  import { writeFileAtomic } from '../util/atomic-write.js';
9
10
  export function resolveCodexWrapperPaths() {
@@ -68,7 +69,7 @@ function isCodexWrapperMetadataValid(metadata) {
68
69
  isHippoCodexWrapperFile(metadata.commandPath));
69
70
  }
70
71
  function resolveHippoCliPath() {
71
- return fileURLToPath(new URL('../bin/hippo.js', import.meta.url));
72
+ return path.join(PACKAGE_ROOT, 'bin', 'hippo.js');
72
73
  }
73
74
  function quoteForShell(value) {
74
75
  return `"${value.replace(/(["\\$`])/g, '\\$1')}"`;
@@ -77,7 +77,8 @@ function hippoCommand() {
77
77
  export const COPILOT_CLI_MCP = { key: 'mcpServers', server: () => ({ type: 'local', command: hippoCommand(), args: ['mcp'], env: {}, tools: ['*'] }) };
78
78
  /** VS Code's mcp.json keeps stdio servers under "servers"; it has no "mcpServers" key. */
79
79
  export const VSCODE_MCP = { key: 'servers', server: () => ({ type: 'stdio', command: hippoCommand(), args: ['mcp'] }) };
80
- /** Only a server hippo wrote counts as hippo's: another command, other args, or any key or value setup does not write (an env you added) makes it the user's. */
80
+ /** Only a server hippo wrote counts as hippo's: another command, other args, or
81
+ * any key or value setup does not write (an env you added) makes it the user's. */
81
82
  function isHipposServer(entry, host) {
82
83
  if (!isJsonObjectLiteral(entry) || !('command' in entry) || !('args' in entry))
83
84
  return false;
@@ -2,11 +2,15 @@ export declare const HOOK_MARKERS: {
2
2
  start: string;
3
3
  end: string;
4
4
  };
5
- export declare const HOOKS: Record<string, {
5
+ export interface HookSpec {
6
6
  file: string;
7
7
  content: string;
8
8
  description: string;
9
- }>;
9
+ }
10
+ export interface HookTable {
11
+ [agent: string]: HookSpec;
12
+ }
13
+ export declare const HOOKS: HookTable;
10
14
  /** The first hippo block in `text` and the agent whose current or shipped text it is; `owner` is undefined for an edited block. */
11
15
  export declare function hippoBlock(text: string): {
12
16
  start: number;
@@ -5,71 +5,22 @@ export const HOOK_MARKERS = {
5
5
  start: '<!-- hippo:start -->',
6
6
  end: '<!-- hippo:end -->',
7
7
  };
8
- export const HOOKS = {
9
- 'claude-code': {
10
- file: 'CLAUDE.md',
11
- description: 'Claude Code',
12
- content: `
13
- ## Project Memory (Hippo)
14
-
15
- Pinned rules and recent writes auto-inject at every prompt via the installed
16
- UserPromptSubmit hook; never re-run that part manually. At the START of a
17
- task (not per prompt), additionally load task-specific context: git-aware
18
- recall over the full store that per-prompt injection does not cover. Also
19
- run it if the hook is not installed:
20
- \`\`\`bash
21
- hippo context --auto --budget 1500
22
- \`\`\`
23
-
24
- When you find out why something failed, record it right then, while you
25
- work, never as a closing step:
26
- \`\`\`bash
27
- hippo remember "<what went wrong and why>" --error
28
- \`\`\`
29
-
30
- The installed hooks store failed tool calls and capture the session when it
31
- ends, so there is nothing to run before you finish.
32
- `.trim(),
33
- },
34
- 'codex': {
35
- file: 'AGENTS.md',
36
- description: 'OpenAI Codex',
37
- content: `
38
- ## Project Memory (Hippo)
39
-
40
- At the start of every task, run:
41
- \`\`\`bash
42
- hippo context --auto --budget 1500
43
- \`\`\`
44
- Read the output before writing any code.
45
-
46
- On errors or unexpected behaviour, record it right then, while you work,
47
- never as a closing step:
48
- \`\`\`bash
49
- hippo remember "<description of what went wrong>" --error
50
- \`\`\`
51
-
52
- When you learn something that should outlive this session (a decision and
53
- its reason, a user preference, a lesson), record it right then, while you
54
- work, never as a closing step. Leave out secrets and personal details:
55
- \`\`\`bash
56
- hippo remember "<what you learned and why>"
57
- \`\`\`
58
-
59
- When Hippo's Codex wrapper is installed, session-end capture runs automatically.
60
- If the wrapper is not installed, capture a brief summary manually:
8
+ // Shared by the agents that differ only in the noun, an optional recall paragraph and an optional footer.
9
+ const PI_FOOTER = 'For full integration, copy the hippo-memory Pi extension to `~/.pi/agent/extensions/hippo-memory/`.';
10
+ function agentsBlock(noun, opts = {}) {
11
+ const recall = opts.recall
12
+ ? `
13
+ When stuck or repeating yourself, check if this happened before:
61
14
  \`\`\`bash
62
- hippo capture --stdin <<< '<decisions, errors, lessons: 2-5 bullets>'
15
+ hippo recall "<what's going wrong>" --budget 2000
63
16
  \`\`\`
64
- `.trim(),
65
- },
66
- 'cursor': {
67
- file: 'AGENTS.md',
68
- description: 'Cursor',
69
- content: `
17
+ `
18
+ : '';
19
+ const footer = opts.footer ? `\n${opts.footer}\n` : '';
20
+ return `
70
21
  ## Project Memory (Hippo)
71
22
 
72
- At the start of every task, run:
23
+ At the start of every ${noun}, run:
73
24
  \`\`\`bash
74
25
  hippo context --auto --budget 1500
75
26
  \`\`\`
@@ -87,47 +38,42 @@ work, never as a closing step. Leave out secrets and personal details:
87
38
  \`\`\`bash
88
39
  hippo remember "<what you learned and why>"
89
40
  \`\`\`
90
-
41
+ ${recall}
91
42
  When ending a session, capture a brief summary:
92
43
  \`\`\`bash
93
44
  hippo capture --stdin <<< '<decisions, errors, lessons: 2-5 bullets>'
94
45
  \`\`\`
95
- `.trim(),
96
- },
97
- 'openclaw': {
98
- file: 'AGENTS.md',
99
- description: 'OpenClaw',
46
+ ${footer}`.trim();
47
+ }
48
+ export const HOOKS = {
49
+ 'claude-code': {
50
+ file: 'CLAUDE.md',
51
+ description: 'Claude Code',
100
52
  content: `
101
53
  ## Project Memory (Hippo)
102
54
 
103
- At the start of every session, run:
55
+ Pinned rules and recent writes auto-inject at every prompt via the installed
56
+ UserPromptSubmit hook; never re-run that part manually. At the START of a
57
+ task (not per prompt), additionally load task-specific context: git-aware
58
+ recall over the full store that per-prompt injection does not cover. Also
59
+ run it if the hook is not installed:
104
60
  \`\`\`bash
105
61
  hippo context --auto --budget 1500
106
62
  \`\`\`
107
- Read the output before writing any code.
108
63
 
109
- On errors or unexpected behaviour, record it right then, while you work,
110
- never as a closing step:
111
- \`\`\`bash
112
- hippo remember "<description of what went wrong>" --error
113
- \`\`\`
114
-
115
- When you learn something that should outlive this session (a decision and
116
- its reason, a user preference, a lesson), record it right then, while you
117
- work, never as a closing step. Leave out secrets and personal details:
64
+ When you find out why something failed, record it right then, while you
65
+ work, never as a closing step:
118
66
  \`\`\`bash
119
- hippo remember "<what you learned and why>"
67
+ hippo remember "<what went wrong and why>" --error
120
68
  \`\`\`
121
69
 
122
- When ending a session, capture a brief summary:
123
- \`\`\`bash
124
- hippo capture --stdin <<< '<decisions, errors, lessons: 2-5 bullets>'
125
- \`\`\`
70
+ The installed hooks store failed tool calls and capture the session when it
71
+ ends, so there is nothing to run before you finish.
126
72
  `.trim(),
127
73
  },
128
- 'opencode': {
74
+ 'codex': {
129
75
  file: 'AGENTS.md',
130
- description: 'OpenCode',
76
+ description: 'OpenAI Codex',
131
77
  content: `
132
78
  ## Project Memory (Hippo)
133
79
 
@@ -150,50 +96,17 @@ work, never as a closing step. Leave out secrets and personal details:
150
96
  hippo remember "<what you learned and why>"
151
97
  \`\`\`
152
98
 
153
- When stuck or repeating yourself, check if this happened before:
154
- \`\`\`bash
155
- hippo recall "<what's going wrong>" --budget 2000
156
- \`\`\`
157
-
158
- When ending a session, capture a brief summary:
159
- \`\`\`bash
160
- hippo capture --stdin <<< '<decisions, errors, lessons: 2-5 bullets>'
161
- \`\`\`
162
- `.trim(),
163
- },
164
- 'pi': {
165
- file: 'AGENTS.md',
166
- description: 'Pi',
167
- content: `
168
- ## Project Memory (Hippo)
169
-
170
- At the start of every session, run:
171
- \`\`\`bash
172
- hippo context --auto --budget 1500
173
- \`\`\`
174
- Read the output before writing any code.
175
-
176
- On errors or unexpected behaviour, record it right then, while you work,
177
- never as a closing step:
178
- \`\`\`bash
179
- hippo remember "<description of what went wrong>" --error
180
- \`\`\`
181
-
182
- When you learn something that should outlive this session (a decision and
183
- its reason, a user preference, a lesson), record it right then, while you
184
- work, never as a closing step. Leave out secrets and personal details:
185
- \`\`\`bash
186
- hippo remember "<what you learned and why>"
187
- \`\`\`
188
-
189
- When ending a session, capture a brief summary:
99
+ When Hippo's Codex wrapper is installed, session-end capture runs automatically.
100
+ If the wrapper is not installed, capture a brief summary manually:
190
101
  \`\`\`bash
191
102
  hippo capture --stdin <<< '<decisions, errors, lessons: 2-5 bullets>'
192
103
  \`\`\`
193
-
194
- For full integration, copy the hippo-memory Pi extension to \`~/.pi/agent/extensions/hippo-memory/\`.
195
104
  `.trim(),
196
105
  },
106
+ 'cursor': { file: 'AGENTS.md', description: 'Cursor', content: agentsBlock('task') },
107
+ 'openclaw': { file: 'AGENTS.md', description: 'OpenClaw', content: agentsBlock('session') },
108
+ 'opencode': { file: 'AGENTS.md', description: 'OpenCode', content: agentsBlock('task', { recall: true }) },
109
+ 'pi': { file: 'AGENTS.md', description: 'Pi', content: agentsBlock('session', { footer: PI_FOOTER }) },
197
110
  };
198
111
  // sha256 of each trimmed block an earlier hippo wrote, so init refreshes only blocks nobody edited. Add the old hash when a block changes.
199
112
  const SHIPPED_HOOK_HASHES = new Map([
@@ -1,38 +1,5 @@
1
- /**
2
- * Hook install/uninstall for AI coding tools.
3
- *
4
- * Two integration models live in this file:
5
- *
6
- * 1. JSON-hook install (Claude Code only). Writes a `hooks` block into the
7
- * tool's settings.json with two entries:
8
- * - SessionEnd: `hippo session-end --log-file <path>` - spawns a detached
9
- * child that runs `hippo sleep` then `hippo capture --last-session` in
10
- * sequence, writing both outputs to the log file. The parent returns in
11
- * <100ms so the TUI teardown can't kill the child before it finishes.
12
- * - SessionStart: `hippo last-sleep --path <path>` - prints the log
13
- * written by the previous session's detached worker on stderr and
14
- * clears it. Stdout carries only a `systemMessage` problems line,
15
- * because Claude Code shows that to the user, not the model.
16
- * Earlier Claude Code forms are detected and migrated automatically:
17
- * - < 0.20.2: `Stop` hook firing `hippo sleep` on every assistant turn.
18
- * - < 0.21.0: bare `hippo sleep` in SessionEnd, no `--log-file`.
19
- * - 0.22.x: separate sleep + capture SessionEnd entries.
20
- * PreCompact and PostCompact entries go in too: the first records the compaction and
21
- * asks the summariser for a "Memories for hippo" list, the second saves that list.
22
- * Codex's hooks.json gets only two groups (per-prompt memory and
23
- * compact-resume); see installCodexHooks. Copilot gets a file of its own; see installCopilotHooks.
24
- *
25
- * 2. Plugin install (OpenCode only). OpenCode does NOT share Claude Code's
26
- * JSON-hook schema — its config has `additionalProperties: false` and no
27
- * `hooks` key, so a JSON-hook install breaks opencode launch. Hippo
28
- * installs a TypeScript plugin at
29
- * `~/.config/opencode/plugins/hippo.ts` subscribing to opencode's
30
- * `session.idle` (→ `hippo session-end`) and `session.created` (→
31
- * `hippo last-sleep`) events. See OPENCODE_PLUGIN_SOURCE below for the
32
- * plugin file content + design rationale; see installOpencodePlugin for
33
- * the installer + the migration that removes any pre-existing broken
34
- * `hooks` block from opencode.json.
35
- */
1
+ /** Hook install/uninstall for AI coding tools. Claude Code gets a JSON `hooks` block in settings.json; older forms are migrated automatically.
2
+ * OpenCode rejects the JSON-hook schema (no `hooks` key), so it gets a TS plugin (OPENCODE_PLUGIN_SOURCE); see installCodexHooks, installCopilotHooks. */
36
3
  import { type JsonHookTarget } from './shared.js';
37
4
  import { type JsonValue } from '../util/json.js';
38
5
  /** A target's hook settings file, the log its SessionEnd hook writes, and the tool's display name. */
@@ -71,6 +38,7 @@ export declare function installJsonHooks(target: JsonHookTarget): InstallResult;
71
38
  export declare function writeSettingsFile(file: string, settings: JsonValue): void;
72
39
  /** Removes hippo's own hook handlers from `target`'s settings file and keeps every other handler; true when the file changed. */
73
40
  export declare function uninstallJsonHooks(target: JsonHookTarget): boolean;
74
- /** Whether uninstall can edit settings.json; `invalidJson` marks a file that exists but is not JSON hippo can edit, which `uninstallJsonHooks` reports only as false. */
41
+ /** Whether uninstall can edit settings.json; `invalidJson` marks a file that exists
42
+ * but is not JSON hippo can edit, which `uninstallJsonHooks` reports only as false. */
75
43
  export declare function checkUninstallable(target: JsonHookTarget): Pick<InstallResult, 'settingsPath' | 'invalidJson'>;
76
44
  //# sourceMappingURL=json-hooks.d.ts.map