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,8 +1,6 @@
1
- /**
2
- * Auto-learn from errors and git history.
3
- * Agents learn from failures without explicit hippo remember calls.
4
- */
5
- import { execSync, execFileSync, spawn } from 'child_process';
1
+ /** Auto-learn from errors and git history.
2
+ * Agents learn from failures without explicit hippo remember calls. */
3
+ import { execFileSync, spawn } from 'child_process';
6
4
  import { createMemory, Layer, DEFAULT_HALF_LIFE_DAYS } from '../core/memory.js';
7
5
  import { loadAllEntries } from '../store/entry-reads.js';
8
6
  import { textOverlap } from '../util/tokenize.js';
@@ -11,7 +9,7 @@ import { redactSecretsStrict } from '../util/secret-detect.js';
11
9
  import { errorMessage, log } from '../util/log.js';
12
10
  const AUTOLEARN_TEXT_CHARS = 500;
13
11
  const AUTOLEARN_TAG_CHARS = 30;
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. */
12
+ /** A memory of a failed command, "Command '<cmd>' failed: <truncated stderr>"; `hippo watch` stores its text and tags through remember. */
15
13
  export function captureError(exitCode, stderr, command, tenantId) {
16
14
  // Truncate to first 500 chars to avoid storing megabytes of build logs
17
15
  const clean = redactSecretsStrict(stderr);
@@ -35,10 +33,8 @@ export function captureError(exitCode, stderr, command, tenantId) {
35
33
  baseHalfLifeDays: DEFAULT_HALF_LIFE_DAYS,
36
34
  });
37
35
  }
38
- /**
39
- * Parse git log output for actionable lessons.
40
- * Looks for fix:, revert:, bug:, error:, hotfix: commit messages.
41
- */
36
+ /** Parse git log output for actionable lessons.
37
+ * Looks for fix:, revert:, bug:, error:, hotfix: commit messages. */
42
38
  export function extractLessons(gitLog, customPatterns) {
43
39
  const lessons = [];
44
40
  const lines = gitLog.split('\n');
@@ -73,18 +69,8 @@ export function extractLessons(gitLog, customPatterns) {
73
69
  // Deduplicate exact matches at extraction time
74
70
  return [...new Set(lessons)];
75
71
  }
76
- /**
77
- * Split parsed lessons into ones worth storing and low-information ones.
78
- *
79
- * `extractLessons` is a published API surface (exported from src/index.ts)
80
- * and does one job: parse a git log into candidate lesson strings. Adding a
81
- * quality check inside it would break that contract and silently change
82
- * what external callers get back. So parsing and admission are separate
83
- * steps: this function is the write-path gate, called by each caller that
84
- * actually stores a lesson, not by the parser itself.
85
- *
86
- * Order is preserved in both output arrays; both hold lessons with secret shapes redacted.
87
- */
72
+ /** Split parsed lessons into ones worth storing and low-information ones; kept out of `extractLessons` so that published parser's output cannot change.
73
+ * Order is preserved in both arrays, and both hold lessons with secret shapes redacted. */
88
74
  export function partitionLessons(lessons) {
89
75
  const kept = [];
90
76
  const dropped = [];
@@ -98,15 +84,8 @@ export function partitionLessons(lessons) {
98
84
  }
99
85
  return { kept, dropped };
100
86
  }
101
- /**
102
- * Check if a substantially similar memory already exists.
103
- * Returns true if overlap > threshold (default 0.7).
104
- *
105
- * `tenantId` is opt-in. Only takes effect when the first argument is a
106
- * root string (string-overload path). When the first argument is a
107
- * pre-loaded MemoryEntry[], the caller has already scoped — tenantId is
108
- * ignored on that path.
109
- */
87
+ /** Check if a substantially similar memory already exists: true if overlap > threshold (default 0.7).
88
+ * `tenantId` applies only on the root-string overload; a pre-loaded MemoryEntry[] is already scoped, so it is ignored there. */
110
89
  export function deduplicateLesson(hippoRootOrEntries, lesson, threshold = 0.7, tenantId) {
111
90
  const entries = Array.isArray(hippoRootOrEntries)
112
91
  ? hippoRootOrEntries
@@ -118,37 +97,53 @@ export function deduplicateLesson(hippoRootOrEntries, lesson, threshold = 0.7, t
118
97
  }
119
98
  return false;
120
99
  }
121
- /**
122
- * Run a command in a shell, streaming stderr live; never pass text the caller did not write.
123
- * Returns: { exitCode, stderr }.
124
- */
125
- export function runWatched(command) {
126
- return new Promise((resolve) => {
100
+ /** The most stderr `runWatched` returns; the terminal still gets all of it. */
101
+ const STDERR_TAIL_BYTES = 64 * 1024;
102
+ /** A transfer command that has not exited in this long is hung on a prompt or a dead remote. */
103
+ export const RUN_WATCHED_DEADLINE_MS = 30 * 60_000;
104
+ /** The command passed its deadline and was killed. */
105
+ export class RunWatchedTimeoutError extends Error {
106
+ deadlineMs;
107
+ stderr;
108
+ constructor(deadlineMs, stderr) {
109
+ super(`the command did not exit within ${deadlineMs} ms and was killed`);
110
+ this.deadlineMs = deadlineMs;
111
+ this.stderr = stderr;
112
+ this.name = 'RunWatchedTimeoutError';
113
+ }
114
+ }
115
+ /** Run a command in a shell, streaming stderr live; never pass text the caller did not write.
116
+ * Returns: { exitCode, stderr } with only the last 64 KiB of stderr; rejects with RunWatchedTimeoutError past `deadlineMs`. */
117
+ export function runWatched(command, deadlineMs = RUN_WATCHED_DEADLINE_MS) {
118
+ return new Promise((resolve, reject) => {
127
119
  // Use shell: true so the command string is handled by the shell as-is
128
120
  const child = spawn(command, { shell: true, stdio: ['inherit', 'inherit', 'pipe'], windowsHide: true });
129
- const stderrChunks = [];
121
+ let tail = Buffer.alloc(0);
130
122
  child.stderr.on('data', (chunk) => {
131
- stderrChunks.push(chunk);
132
- // Also pass through to terminal
123
+ tail = Buffer.concat([tail, chunk]);
124
+ if (tail.length > STDERR_TAIL_BYTES)
125
+ tail = tail.subarray(tail.length - STDERR_TAIL_BYTES);
133
126
  process.stderr.write(chunk);
134
127
  });
128
+ // SHORTCUT: kills the shell only; on Windows a grandchild can outlive it. A process-tree kill is the upgrade path.
129
+ const timer = setTimeout(() => {
130
+ child.kill('SIGKILL');
131
+ reject(new RunWatchedTimeoutError(deadlineMs, tail.toString('utf8')));
132
+ }, deadlineMs);
135
133
  child.on('close', (code) => {
136
- resolve({
137
- exitCode: code ?? 1,
138
- stderr: Buffer.concat(stderrChunks).toString('utf8'),
139
- });
134
+ clearTimeout(timer);
135
+ resolve({ exitCode: code ?? 1, stderr: tail.toString('utf8') });
140
136
  });
141
137
  child.on('error', (err) => {
138
+ clearTimeout(timer);
142
139
  resolve({ exitCode: 1, stderr: err.message });
143
140
  });
144
141
  });
145
142
  }
146
- /**
147
- * Check whether a directory is a git work tree.
148
- */
143
+ /** Check whether a directory is a git work tree. */
149
144
  export function isGitRepo(cwd) {
150
145
  try {
151
- const raw = execSync('git rev-parse --is-inside-work-tree', {
146
+ const raw = execFileSync('git', ['rev-parse', '--is-inside-work-tree'], {
152
147
  encoding: 'utf8',
153
148
  cwd,
154
149
  timeout: 10000,
@@ -162,10 +157,8 @@ export function isGitRepo(cwd) {
162
157
  return false;
163
158
  }
164
159
  }
165
- /**
166
- * Fetch recent git log lines (subject lines only).
167
- * days: how many days of history to include.
168
- */
160
+ /** Fetch recent git log lines (subject lines only).
161
+ * days: how many days of history to include. */
169
162
  export function fetchGitLog(cwd, days) {
170
163
  try {
171
164
  const raw = execFileSync('git', [
@@ -3,12 +3,13 @@ import { execFileSync } from 'child_process';
3
3
  import * as fs from 'fs';
4
4
  import * as os from 'os';
5
5
  import * as path from 'path';
6
- import { DAY_MS } from '../util/time.js';
6
+ import { DAY_MS, MINUTE_MS } from '../util/time.js';
7
7
  import { errorMessage } from '../util/log.js';
8
+ import { isJsonObject, isJsonString } from '../util/json.js';
8
9
  // A `git log --name-status` dump can run to tens of MB; default 1MB pipe would truncate it.
9
10
  const GIT_MAX_BUFFER = 64 * 1024 * 1024;
10
11
  // Longer than the 10 s of one-line git reads because a full log dump on a large repo is slow, yet bounded so a wedged git cannot stall sleep.
11
- const GIT_TIMEOUT_MS = 60_000;
12
+ const GIT_TIMEOUT_MS = MINUTE_MS;
12
13
  /** A real git failure (not git grep's expected exit-1-no-match). Callers abort the whole run on this. */
13
14
  export class GitReadError extends Error {
14
15
  }
@@ -93,9 +94,17 @@ export function packageScriptsAt(repoRoot, rev) {
93
94
  return {};
94
95
  const raw = runGit(['show', `${rev}:package.json`], repoRoot);
95
96
  try {
96
- // SAFETY: optional chaining makes a `null` or scalar package.json read as "no scripts".
97
97
  const parsed = JSON.parse(raw);
98
- return parsed?.scripts ?? {};
98
+ const scripts = isJsonObject(parsed) ? parsed.scripts : undefined;
99
+ if (!isJsonObject(scripts))
100
+ return {};
101
+ const out = {};
102
+ for (const [name, command] of Object.entries(scripts)) {
103
+ if (!isJsonString(command))
104
+ return {};
105
+ out[name] = command;
106
+ }
107
+ return out;
99
108
  }
100
109
  catch (err) {
101
110
  if (err instanceof SyntaxError)
@@ -1,4 +1,5 @@
1
1
  import { MemoryEntry, EmotionalValence } from '../core/memory.js';
2
+ import { type AnthropicMessageFailure } from '../util/anthropic-messages.js';
2
3
  export interface ExtractedFact {
3
4
  content: string;
4
5
  tags: string[];
@@ -8,8 +9,8 @@ export interface ExtractOptions {
8
9
  apiKey: string;
9
10
  model?: string;
10
11
  fetcher?: typeof fetch;
11
- /** Told why a call produced nothing, so callers can surface it instead of guessing. */
12
- onError?: (msg: string) => void;
12
+ /** Told why a call produced nothing, so callers can surface it instead of guessing; `failure` is set when the API call itself failed. */
13
+ onError?: (msg: string, failure?: AnthropicMessageFailure) => void;
13
14
  }
14
15
  export declare function extractFacts(text: string, opts: ExtractOptions): Promise<ExtractedFact[]>;
15
16
  export declare function storeExtractedFacts(hippoRoot: string, source: MemoryEntry, facts: ExtractedFact[]): MemoryEntry[];
@@ -1,20 +1,22 @@
1
1
  import { Layer, createMemory } from '../core/memory.js';
2
2
  import { writeEntry } from '../store/entry-writes.js';
3
3
  import { loadConfig } from '../core/config.js';
4
- import { RejectedValueError } from '../store/rejection.js';
4
+ import { RejectedValueError } from '../core/api-errors.js';
5
5
  import { redactSecretsStrict } from '../util/secret-detect.js';
6
6
  import { describeMessageFailure, sendAnthropicMessage } from '../util/anthropic-messages.js';
7
- import { neverAutoShareTags } from '../sharing/shared.js';
7
+ import { neverAutoShareTags } from '../sharing/share.js';
8
8
  import { errorMessage, log } from '../util/log.js';
9
9
  import { isJsonString } from '../util/json.js';
10
10
  import { certainDefect } from '../core/memory-quality.js';
11
- const EXTRACTION_PROMPT = `You are extracting factual statements from a conversation or memory entry. Extract 1-8 standalone factual statements that would be useful to remember later.
11
+ const EXTRACTION_PROMPT = `You are extracting factual statements from a conversation or memory entry. ` +
12
+ `Extract 1-8 standalone factual statements that would be useful to remember later.
12
13
 
13
14
  Rules:
14
15
  - Each fact must be a complete, standalone sentence
15
16
  - Include the speaker's name in every fact (e.g. "Alice prefers..." not "She prefers...")
16
17
  - Preserve specific details: names, numbers, dates, paths, IDs
17
- - Return a JSON array of objects with: content (string), tags (array of "speaker:X" and "topic:Y" strings), valence ("neutral", "positive", "negative", or "critical")
18
+ - Return a JSON array of objects with: content (string), tags (array of "speaker:X" and "topic:Y" strings), ` +
19
+ `valence ("neutral", "positive", "negative", or "critical")
18
20
  - Return an empty array [] for small talk with no extractable facts
19
21
  - Output ONLY the JSON array, no preamble or explanation
20
22
 
@@ -31,7 +33,7 @@ export async function extractFacts(text, opts) {
31
33
  fetcher: opts.fetcher,
32
34
  });
33
35
  if (!reply.ok) {
34
- opts.onError?.(describeMessageFailure(reply.failure));
36
+ opts.onError?.(describeMessageFailure(reply.failure), reply.failure);
35
37
  return [];
36
38
  }
37
39
  try {
@@ -86,9 +88,7 @@ export function storeExtractedFacts(hippoRoot, source, facts) {
86
88
  continue;
87
89
  }
88
90
  const entry = buildExtractedEntry(fact, source, inheritedTags, baseHalfLifeDays);
89
- // A refusal is per-VALUE: one rejected fact must not
90
- // drop the rest of this batch. writeEntry has already audited the
91
- // refusal (reject_refusal) before rethrowing, so skip-and-count here.
91
+ // A refusal is per-VALUE: one rejected fact must not drop the rest of the batch; writeEntry already audited it (reject_refusal), so skip and count.
92
92
  try {
93
93
  writeEntry(hippoRoot, entry);
94
94
  }
@@ -1,36 +1,12 @@
1
- /**
2
- * Forward-claim detector: pure-function regex set + token extraction.
3
- *
4
- * No DB. No state. No dependencies beyond stdlib regex + String.
5
- *
6
- * The detector's job is to decide whether a recall query carries a
7
- * forward-prediction phrase ("will take ~3 days", "ship by Friday",
8
- * "ETA in 2 weeks"). Calibration is intentionally HIGH-PRECISION /
9
- * LOW-RECALL: better to fire on 20% of real forward-claims than 80% with
10
- * 40% noise. Cry-wolf failure dominates planning-fallacy hint UX (Lovallo-
11
- * Kahneman 2003 inside-vs-outside view).
12
- *
13
- * Iteration signal: the `recall_autodebias_hint_no_class_match` audit op
14
- * (emitted by recall when a phrase matches but no class
15
- * resolves) is the telemetry channel for deciding whether to add an
16
- * embedding-based detector.
17
- */
1
+ /** Forward-claim detector: a pure regex set plus token extraction deciding whether a recall query carries a forward-prediction phrase.
2
+ * Calibration is HIGH-PRECISION / LOW-RECALL, since cry-wolf noise dominates hint UX; `recall_autodebias_hint_no_class_match` audits are the telemetry. */
18
3
  export interface ForwardClaimMatch {
19
- /** The regex match snippet, e.g. "will take" or "~3 days". Surfaced
20
- * to the calling agent in `PlanningFallacyHint.detectedPhrase` so they
21
- * see WHY the hint appeared. */
4
+ /** The regex match snippet (e.g. "will take"), surfaced in `PlanningFallacyHint.detectedPhrase` so the agent sees WHY the hint appeared. */
22
5
  phrase: string;
23
- /** Lower-cased non-stop-word tokens (len >= 3, alpha or alphanumeric)
24
- * extracted from the FULL query, NOT just the match. Used by the
25
- * orchestrator's class resolver to score overlap with class_tag tokens. */
6
+ /** Lower-cased non-stop-word tokens (len >= 3) from the FULL query, not just the match; the class resolver scores them against class_tag tokens. */
26
7
  classQueryTokens: string[];
27
8
  }
28
- /**
29
- * Detect whether a recall query carries a forward-prediction phrase.
30
- *
31
- * @returns first-match phrase + extracted class-resolution tokens when
32
- * any pattern matches; null otherwise. Token extraction runs only on a
33
- * match — non-forward queries pay zero work beyond the regex gate.
34
- */
9
+ /** Detect whether a recall query carries a forward-prediction phrase; returns the first-match phrase plus class-resolution tokens, else null.
10
+ * Token extraction runs only on a match, so non-forward queries pay nothing beyond the regex gate. */
35
11
  export declare function detectForwardClaim(queryText: string): ForwardClaimMatch | null;
36
12
  //# sourceMappingURL=forward-claim-detector.d.ts.map
@@ -1,91 +1,43 @@
1
- /**
2
- * Forward-claim detector: pure-function regex set + token extraction.
3
- *
4
- * No DB. No state. No dependencies beyond stdlib regex + String.
5
- *
6
- * The detector's job is to decide whether a recall query carries a
7
- * forward-prediction phrase ("will take ~3 days", "ship by Friday",
8
- * "ETA in 2 weeks"). Calibration is intentionally HIGH-PRECISION /
9
- * LOW-RECALL: better to fire on 20% of real forward-claims than 80% with
10
- * 40% noise. Cry-wolf failure dominates planning-fallacy hint UX (Lovallo-
11
- * Kahneman 2003 inside-vs-outside view).
12
- *
13
- * Iteration signal: the `recall_autodebias_hint_no_class_match` audit op
14
- * (emitted by recall when a phrase matches but no class
15
- * resolves) is the telemetry channel for deciding whether to add an
16
- * embedding-based detector.
17
- */
18
- /**
19
- * Each pattern is intentionally narrow:
20
- * adding a pattern should require evidence from the
21
- * `recall_autodebias_hint_no_class_match` audit channel that real forward-
22
- * claims are slipping through, NOT speculative "this might match more".
23
- *
24
- * Word boundaries (`\b`) are mandatory: prevent `~5 days` inside
25
- * `~5 days_ago` from matching, and prevent `ETA` substring matches inside
26
- * a longer token (e.g. `BETAtesting`).
27
- */
28
- // Reused fragment for ALL duration-suffix patterns. Requires a digit + unit
29
- // so 'will take ownership' / 'ship in Docker' (no time component) don't
30
- // match: verb-only patterns fire on everyday non-estimate queries that share a class-token.
31
- // Accepts `<N> unit` (3 days), `a/an unit` (a week — implicit 1), and
32
- // `one unit` so natural English forward-claims aren't lost.
1
+ /** Forward-claim detector: a pure regex set plus token extraction deciding whether a recall query carries a forward-prediction phrase.
2
+ * Calibration is HIGH-PRECISION / LOW-RECALL, since cry-wolf noise dominates hint UX; `recall_autodebias_hint_no_class_match` audits are the telemetry. */
3
+ /** Each pattern is deliberately narrow (add one only on audit evidence); word boundaries are mandatory so `ETA` never matches inside `BETAtesting`. */
4
+ // Shared duration suffix: needs a digit + unit (`<N> unit`, `a/an unit`, `one unit`) so 'will take ownership' and 'ship in Docker' do not match.
33
5
  const DURATION_TAIL = String.raw `(?:about|around|~|≈)?\s*(?:\d+|a|an|one)\s*(?:day|week|month|hour|hr|min(?:ute)?|sec(?:ond)?)s?\b`;
34
6
  const FORWARD_CLAIM_PATTERNS = [
35
- // Verb + duration tail. Old pattern `/\b(?:will|should...) take\b/i`
36
- // matched `who will take ownership of auth?` because there was no
37
- // quantifier requirement. Now requires `<verb> take <N> <unit>`.
7
+ // Verb + duration tail: requires `<verb> take <N> <unit>`, because a bare `will take` matched `who will take ownership of auth?`.
38
8
  new RegExp(String.raw `\b(?:will|should|gonna|going\s+to)\s+take\s+${DURATION_TAIL}`, 'i'),
39
- // Ship + by/in + duration-or-day. Old pattern `/\bship(?:ping)?\s+(?:by|in)\b/i`
40
- // matched `how does this ship in Docker?`. Now requires either a
41
- // duration tail OR a literal day-of-week reference.
42
- new RegExp(String.raw `\bship(?:ping|s)?\s+(?:by|in)\s+(?:(?:about|around)\s+)?(?:next\s+)?(?:${DURATION_TAIL}|(?:monday|tuesday|wednesday|thursday|friday|saturday|sunday))\b`, 'i'),
9
+ // Ship + by/in + duration-or-day: a bare `ship in` matched `how does this ship in Docker?`, so a duration tail or literal day-of-week is required.
10
+ new RegExp(String.raw `\bship(?:ping|s)?\s+(?:by|in)\s+(?:(?:about|around)\s+)?(?:next\s+)?` +
11
+ String.raw `(?:${DURATION_TAIL}|(?:monday|tuesday|wednesday|thursday|friday|saturday|sunday))\b`, 'i'),
43
12
  /\bestimate(?:d)?\s+(?:at\s+)?(?:~|≈|about|around)?\s*\d+/i,
44
13
  /\b(?:by|in|within)\s+(?:about|around|~)?\s*\d+\s*(?:day|week|month|hour)s?\b/i,
45
14
  /\bETA\s*(?:is|:)?\s*\d+/i,
46
15
  /\b(?:by|before)\s+next\s+(?:week|month|sprint|monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b/i,
47
- // Standalone tilde duration: '~3 days for migration', 'estimate ~3 days'.
48
- // Lookbehind asserts start-of-string OR whitespace before the tilde
49
- // because \b before ~ requires a word char immediately preceding (~ is
50
- // not a word character), so /\b~/ would only match in 'foo~3 days'
51
- // (malformed) and silently miss the legitimate cases.
16
+ // Standalone tilde duration ('~3 days for migration'): the lookbehind asserts start-of-string or whitespace because `\b` before `~` needs a word char
17
+ // and /\b~/ would only match 'foo~3 days', silently missing the real cases.
52
18
  /(?<=^|\s)~\s*\d+\s*(?:day|week|month|hour)s?\b/i,
53
19
  // Should + verb + duration tail. Same tightening as the leading 'will
54
20
  // take' rule: 'should ship by EOD' must include a quantifier.
55
- new RegExp(String.raw `\bshould\s+(?:be|ship|finish|complete|land)\s+(?:by|in|within)\s+(?:(?:about|around)\s+)?(?:next\s+)?(?:${DURATION_TAIL}|(?:monday|tuesday|wednesday|thursday|friday|saturday|sunday))\b`, 'i'),
21
+ new RegExp(String.raw `\bshould\s+(?:be|ship|finish|complete|land)\s+(?:by|in|within)\s+(?:(?:about|around)\s+)?(?:next\s+)?` +
22
+ String.raw `(?:${DURATION_TAIL}|(?:monday|tuesday|wednesday|thursday|friday|saturday|sunday))\b`, 'i'),
56
23
  ];
57
- /**
58
- * Pronouns + function words + modal verbs the regex set already gates on.
59
- * Dropped before class-resolution so the overlap signal comes from
60
- * domain tokens ("migration", "auth", "refactor") rather than connectives.
61
- */
24
+ /** Pronouns, function words and modal verbs the regex set already gates on; dropped before class resolution so overlap comes from domain tokens. */
62
25
  const STOP_WORDS = new Set([
63
26
  'the', 'a', 'an', 'and', 'or', 'but', 'for', 'to', 'in', 'on', 'at', 'of',
64
27
  'by', 'with', 'my', 'your', 'our', 'their', 'its', 'it', 'this', 'that',
65
28
  'these', 'those', 'will', 'should', 'can', 'i', 'we', 'they', 'he', 'she',
66
29
  'is', 'be', 'was', 'are', 'were', 'has', 'have', 'had', 'do', 'does', 'did',
67
30
  'from', 'as', 'so', 'than', 'then',
68
- // Verbs that appear inside FORWARD_CLAIM_PATTERNS themselves — they're
69
- // signal for the regex gate but NOT signal for class resolution (you
70
- // wouldn't name a prediction class "take" or "ship"). Listing here so
71
- // they don't pollute the classQueryTokens overlap score.
31
+ // Verbs inside FORWARD_CLAIM_PATTERNS gate the regex but are no signal for class resolution; listing them keeps them out of the classQueryTokens overlap.
72
32
  'take', 'taken', 'takes', 'ship', 'ships', 'finish', 'complete', 'land',
73
33
  'eta', 'estimate', 'estimated', 'next', 'about', 'around',
74
- // Duration units appear in every forward-claim phrase by design (the
75
- // regex set REQUIRES a `<N> <unit>` quantifier after the verb). Letting
76
- // them through to class resolution lets a class tag containing 'days'
77
- // win or tie on the unit token instead of the domain token.
34
+ // Every forward-claim phrase contains a duration unit by design; letting it through would let a class tag containing 'days' win or tie on the unit.
78
35
  'day', 'days', 'week', 'weeks', 'month', 'months',
79
36
  'hour', 'hours', 'hr', 'hrs',
80
37
  'min', 'mins', 'minute', 'minutes', 'sec', 'secs', 'second', 'seconds',
81
38
  ]);
82
- /**
83
- * Detect whether a recall query carries a forward-prediction phrase.
84
- *
85
- * @returns first-match phrase + extracted class-resolution tokens when
86
- * any pattern matches; null otherwise. Token extraction runs only on a
87
- * match — non-forward queries pay zero work beyond the regex gate.
88
- */
39
+ /** Detect whether a recall query carries a forward-prediction phrase; returns the first-match phrase plus class-resolution tokens, else null.
40
+ * Token extraction runs only on a match, so non-forward queries pay nothing beyond the regex gate. */
89
41
  export function detectForwardClaim(queryText) {
90
42
  if (!queryText)
91
43
  return null;
@@ -103,9 +55,7 @@ function extractClassQueryTokens(queryText) {
103
55
  .toLowerCase()
104
56
  // Strip everything that's not alphanum or whitespace or hyphen / underscore.
105
57
  .replace(/[^a-z0-9\s_-]/g, ' ')
106
- // Split on whitespace AND hyphen AND underscore so `migration-effort`
107
- // produces ['migration', 'effort'] — matching the class-tag split
108
- // pattern in resolveClassFromTokens (split on /[-_\s]+/).
58
+ // Split on whitespace, hyphen and underscore so `migration-effort` yields ['migration', 'effort'], matching the class-tag split in resolveClassFromTokens.
109
59
  .split(/[\s_-]+/)
110
60
  .filter((t) => t.length >= 3 && !STOP_WORDS.has(t) && !/^\d+$/.test(t));
111
61
  }
@@ -20,24 +20,11 @@ export interface InvalidationOptions {
20
20
  /** Consider ONLY this memory id (no content/tag matching). */
21
21
  onlyId?: string;
22
22
  }
23
- /**
24
- * Extract what was replaced/removed from a commit message.
25
- * Returns null if the commit isn't a breaking/migration change.
26
- */
23
+ /** Extract what was replaced/removed from a commit message.
24
+ * Returns null if the commit isn't a breaking/migration change. */
27
25
  export declare function extractInvalidationTarget(message: string): InvalidationTarget | null;
28
- /**
29
- * Find memories that reference the invalidated pattern and weaken them.
30
- * - Halves half_life_days
31
- * - Sets confidence to 'stale'
32
- * - Adds 'invalidated' tag
33
- * - Skips pinned memories (reported in skippedPinned)
34
- *
35
- * Tag matching is EXACT (2026-06-09 incident): the FULL pattern must equal a
36
- * tag. Token-level matching applies to content only, so a pattern that merely
37
- * CONTAINS a common tag word ("hippo") can no longer mass-weaken every memory
38
- * carrying that tag. Both callers (the CLI `invalidate` command and the
39
- * auto-learn-from-git path) inherit this contract.
40
- */
26
+ /** Find memories that reference the invalidated pattern and weaken them (halve half_life_days, confidence 'stale', add 'invalidated' tag; pinned are skipped).
27
+ * Tag matching is EXACT: the FULL pattern must equal a tag, so a pattern merely containing a common tag word cannot mass-weaken every memory with that tag. */
41
28
  export declare function invalidateMatching(hippoRoot: string, target: InvalidationTarget, tenantId?: string, options?: InvalidationOptions): InvalidationResult;
42
29
  /** invalidateMatching for a batch: matches against `live`, the caller's list of the tenant's rows, and keeps it current.
43
30
  * Each match is read again before it is weakened, so a row another writer changed since the list was read is never written back stale. */
@@ -73,6 +60,7 @@ export interface ChurnStaleResult {
73
60
  preview: ChurnStalePreviewRow[];
74
61
  error?: string;
75
62
  }
76
- /** Flags memories whose named file/symbol/script changed or disappeared since storage (or last confirmation); only adds/removes CHURN_STALE_TAG, never confidence/half-life/strength. */
63
+ /** Flags memories whose named file/symbol/script changed or disappeared since storage (or last
64
+ * confirmation); only adds/removes CHURN_STALE_TAG, never confidence/half-life/strength. */
77
65
  export declare function detectChurnStale(hippoRoot: string, repoRoot: string, opts: DetectChurnStaleOptions): ChurnStaleResult;
78
66
  //# sourceMappingURL=invalidation.d.ts.map
@@ -1,13 +1,12 @@
1
- import { addTagToEntries, writeEntriesSeparately } from '../store/entry-writes.js';
1
+ import { addTagToEntries, writeEntriesTogether } from '../store/entry-writes.js';
2
2
  import { confirmedOutcomeTimes } from '../store/audit.js';
3
- import { chunked, loadAllEntries, loadEntriesByIds } from '../store/entry-reads.js';
3
+ import { loadAllEntries, loadEntriesByIds, loadEntriesMentioning, readEntry } from '../store/entry-reads.js';
4
+ import { chunked } from '../util/chunked.js';
4
5
  import { CHURN_STALE_TAG } from '../core/memory.js';
5
6
  import { GitReadError, gitLsFilesAtHead, fetchChurnWindowLog, gitGrepPresence, resolveCommitBefore, packageScriptsAt, } from './churn-git.js';
6
7
  const HEADLINE_CHARS = 60;
7
- /**
8
- * Extract what was replaced/removed from a commit message.
9
- * Returns null if the commit isn't a breaking/migration change.
10
- */
8
+ /** Extract what was replaced/removed from a commit message.
9
+ * Returns null if the commit isn't a breaking/migration change. */
11
10
  export function extractInvalidationTarget(message) {
12
11
  // Strip conventional commit prefix (e.g., "feat(scope): ")
13
12
  const body = message.replace(/^[a-z]+(\([^)]*\))?:\s*/i, '').trim();
@@ -44,27 +43,16 @@ export function extractInvalidationTarget(message) {
44
43
  }
45
44
  return null;
46
45
  }
47
- /**
48
- * Find memories that reference the invalidated pattern and weaken them.
49
- * - Halves half_life_days
50
- * - Sets confidence to 'stale'
51
- * - Adds 'invalidated' tag
52
- * - Skips pinned memories (reported in skippedPinned)
53
- *
54
- * Tag matching is EXACT (2026-06-09 incident): the FULL pattern must equal a
55
- * tag. Token-level matching applies to content only, so a pattern that merely
56
- * CONTAINS a common tag word ("hippo") can no longer mass-weaken every memory
57
- * carrying that tag. Both callers (the CLI `invalidate` command and the
58
- * auto-learn-from-git path) inherit this contract.
59
- */
46
+ /** Find memories that reference the invalidated pattern and weaken them (halve half_life_days, confidence 'stale', add 'invalidated' tag; pinned are skipped).
47
+ * Tag matching is EXACT: the FULL pattern must equal a tag, so a pattern merely containing a common tag word cannot mass-weaken every memory with that tag. */
60
48
  export function invalidateMatching(hippoRoot, target, tenantId, options) {
61
- // L9: tenantId opt-in. When provided, only this tenant's memories are
62
- // considered for weakening. When undefined, behaves as it did pre-1.12.1
63
- // (host-wide invalidation across all tenants in the store).
64
- // options.onlyId resolves by FILTERING this tenant-scoped list — never a
65
- // direct id lookup — so an id from another tenant is invisible here.
66
- const { result, weakened } = weakenMatches(loadAllEntries(hippoRoot, tenantId), target, options);
67
- writeEntriesSeparately(hippoRoot, weakened);
49
+ // tenantId opt-in: when set, only that tenant's memories are weakened; undefined is host-wide.
50
+ // The onlyId read is tenant-scoped too, so another tenant's id is invisible here.
51
+ const entries = options?.onlyId === undefined
52
+ ? loadEntriesMentioning(hippoRoot, invalidationTokenize(target.from), target.from.toLowerCase().trim(), tenantId)
53
+ : [readEntry(hippoRoot, options.onlyId, tenantId)].filter((entry) => entry !== null);
54
+ const { result, weakened } = weakenMatches(entries, target, options);
55
+ writeEntriesTogether(hippoRoot, weakened);
68
56
  return result;
69
57
  }
70
58
  /** invalidateMatching for a batch: matches against `live`, the caller's list of the tenant's rows, and keeps it current.
@@ -75,7 +63,7 @@ export function invalidateMatchingAmong(hippoRoot, live, target, tenantId) {
75
63
  // loadEntriesByIds reads at most 500 ids a call.
76
64
  const fresh = new Map(chunked(ids, 500).flatMap((chunk) => loadEntriesByIds(hippoRoot, chunk, tenantId)).map((entry) => [entry.id, entry]));
77
65
  const { result, weakened } = weakenMatches(ids.flatMap((id) => fresh.get(id) ?? []), target);
78
- writeEntriesSeparately(hippoRoot, weakened);
66
+ writeEntriesTogether(hippoRoot, weakened);
79
67
  const byId = new Map(weakened.map((entry) => [entry.id, entry]));
80
68
  for (let i = 0; i < live.length; i++)
81
69
  live[i] = byId.get(live[i].id) ?? live[i];
@@ -381,7 +369,8 @@ function recordChurnEvidence(git, candidates, anchorOf, result) {
381
369
  }
382
370
  return toTag;
383
371
  }
384
- /** Flags memories whose named file/symbol/script changed or disappeared since storage (or last confirmation); only adds/removes CHURN_STALE_TAG, never confidence/half-life/strength. */
372
+ /** Flags memories whose named file/symbol/script changed or disappeared since storage (or last
373
+ * confirmation); only adds/removes CHURN_STALE_TAG, never confidence/half-life/strength. */
385
374
  export function detectChurnStale(hippoRoot, repoRoot, opts) {
386
375
  const dryRun = opts.dryRun === true;
387
376
  if (!opts.projectName)
@@ -408,9 +397,7 @@ export function detectChurnStale(hippoRoot, repoRoot, opts) {
408
397
  const result = { checked: 0, marked: 0, alreadyMarked: 0, skippedPinned, dryRun, preview: [] };
409
398
  try {
410
399
  const git = loadChurnGitView(repoRoot, opts.legacyName ?? opts.projectName, candidates, anchorOf, needs);
411
- // Collected here, written only after every candidate's evidence is
412
- // computed: a GitReadError thrown mid-loop must never leave an earlier
413
- // candidate tagged while a later one aborts the run untagged.
400
+ // Collected here and written only after every candidate's evidence is computed, so a GitReadError mid-loop cannot leave an earlier candidate tagged.
414
401
  const toTag = recordChurnEvidence(git, candidates, anchorOf, result);
415
402
  if (!dryRun && toTag.length > 0)
416
403
  tagChurnStale(hippoRoot, opts.tenantId, toTag, confirmedAt);
@@ -1,8 +1,8 @@
1
1
  import { type ToolCall } from './protocol.js';
2
2
  export declare function runPredictBaserateTool({ args, ctx, hippoRoot, tenantId }: ToolCall): Promise<string>;
3
- export declare function runStatusTool({ hippoRoot, config, tenantId }: ToolCall): string;
3
+ export declare function runStatusTool({ ctx, hippoRoot, config, tenantId }: ToolCall): string;
4
4
  export declare function runConflictsTool(call: ToolCall): string;
5
5
  export declare function runResolveTool({ args, ctx, hippoRoot, tenantId }: ToolCall): string;
6
- export declare function runShareTool({ args, ctx, hippoRoot, tenantId }: ToolCall): string;
6
+ export declare function runShareTool({ args, ctx, hippoRoot, tenantId }: ToolCall): Promise<string>;
7
7
  export declare function runPeersTool({ tenantId }: ToolCall): string;
8
8
  //# sourceMappingURL=admin-tools.d.ts.map