hippo-memory 1.43.3 → 1.45.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 (534) hide show
  1. package/README.md +14 -12
  2. package/bin/hippo.js +3 -1
  3. package/dist/api.d.ts +21 -21
  4. package/dist/api.js +69 -42
  5. package/dist/audit-prune.js +4 -1
  6. package/dist/audit.d.ts +1 -1
  7. package/dist/audit.js +9 -0
  8. package/dist/autolearn.d.ts +1 -1
  9. package/dist/autolearn.js +2 -1
  10. package/dist/capture.d.ts +11 -10
  11. package/dist/capture.js +22 -30
  12. package/dist/cli.d.ts +4 -0
  13. package/dist/cli.js +309 -171
  14. package/dist/client.d.ts +4 -21
  15. package/dist/client.js +3 -112
  16. package/dist/config.js +2 -1
  17. package/dist/consolidate.d.ts +3 -0
  18. package/dist/consolidate.js +44 -42
  19. package/dist/dag.d.ts +1 -0
  20. package/dist/dag.js +10 -5
  21. package/dist/dashboard.js +7 -3
  22. package/dist/db.js +16 -24
  23. package/dist/dedupe.d.ts +1 -0
  24. package/dist/dedupe.js +4 -7
  25. package/dist/embedding-provider.d.ts +1 -1
  26. package/dist/embedding-provider.js +3 -2
  27. package/dist/embeddings.js +81 -8
  28. package/dist/extract.d.ts +2 -0
  29. package/dist/extract.js +9 -4
  30. package/dist/goals.js +12 -3
  31. package/dist/mcp/server.js +21 -36
  32. package/dist/memory.d.ts +3 -0
  33. package/dist/memory.js +7 -1
  34. package/dist/physics-state.js +4 -1
  35. package/dist/raw-archive.js +5 -2
  36. package/dist/recall-trace.js +4 -1
  37. package/dist/refine-llm.js +3 -2
  38. package/dist/rerankers/jev.js +3 -2
  39. package/dist/rerankers/llm.js +3 -2
  40. package/dist/search.js +3 -3
  41. package/dist/server.d.ts +5 -0
  42. package/dist/server.js +39 -29
  43. package/dist/shared.js +1 -1
  44. package/dist/stdin.d.ts +12 -0
  45. package/dist/stdin.js +41 -0
  46. package/dist/store.d.ts +18 -11
  47. package/dist/store.js +152 -65
  48. package/dist/version.d.ts +4 -6
  49. package/dist/version.js +4 -7
  50. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  51. package/extensions/openclaw-plugin/package.json +1 -1
  52. package/openclaw.plugin.json +1 -1
  53. package/package.json +8 -5
  54. package/dist/ablation.d.ts.map +0 -1
  55. package/dist/ablation.js.map +0 -1
  56. package/dist/ambient.d.ts.map +0 -1
  57. package/dist/ambient.js.map +0 -1
  58. package/dist/api.d.ts.map +0 -1
  59. package/dist/api.js.map +0 -1
  60. package/dist/audit-prune.d.ts.map +0 -1
  61. package/dist/audit-prune.js.map +0 -1
  62. package/dist/audit.d.ts.map +0 -1
  63. package/dist/audit.js.map +0 -1
  64. package/dist/auth.d.ts.map +0 -1
  65. package/dist/auth.js.map +0 -1
  66. package/dist/autolearn.d.ts.map +0 -1
  67. package/dist/autolearn.js.map +0 -1
  68. package/dist/availability.d.ts.map +0 -1
  69. package/dist/availability.js.map +0 -1
  70. package/dist/benchmarks/e1.3/incident-recall-eval.js +0 -78
  71. package/dist/benchmarks/e1.3/incident-recall-eval.js.map +0 -1
  72. package/dist/benchmarks/e1.3/slack-1000-event-smoke.js +0 -103
  73. package/dist/benchmarks/e1.3/slack-1000-event-smoke.js.map +0 -1
  74. package/dist/capture.d.ts.map +0 -1
  75. package/dist/capture.js.map +0 -1
  76. package/dist/card-detail.d.ts.map +0 -1
  77. package/dist/card-detail.js.map +0 -1
  78. package/dist/card.d.ts.map +0 -1
  79. package/dist/card.js.map +0 -1
  80. package/dist/cli.d.ts.map +0 -1
  81. package/dist/cli.js.map +0 -1
  82. package/dist/client.d.ts.map +0 -1
  83. package/dist/client.js.map +0 -1
  84. package/dist/compare.d.ts.map +0 -1
  85. package/dist/compare.js.map +0 -1
  86. package/dist/config.d.ts.map +0 -1
  87. package/dist/config.js.map +0 -1
  88. package/dist/connectors/github/backfill.d.ts.map +0 -1
  89. package/dist/connectors/github/backfill.js.map +0 -1
  90. package/dist/connectors/github/cli-impl.d.ts.map +0 -1
  91. package/dist/connectors/github/cli-impl.js.map +0 -1
  92. package/dist/connectors/github/deletion.d.ts.map +0 -1
  93. package/dist/connectors/github/deletion.js.map +0 -1
  94. package/dist/connectors/github/dlq.d.ts.map +0 -1
  95. package/dist/connectors/github/dlq.js.map +0 -1
  96. package/dist/connectors/github/idempotency.d.ts.map +0 -1
  97. package/dist/connectors/github/idempotency.js.map +0 -1
  98. package/dist/connectors/github/ingest.d.ts.map +0 -1
  99. package/dist/connectors/github/ingest.js.map +0 -1
  100. package/dist/connectors/github/octokit-client.d.ts.map +0 -1
  101. package/dist/connectors/github/octokit-client.js.map +0 -1
  102. package/dist/connectors/github/ratelimit.d.ts.map +0 -1
  103. package/dist/connectors/github/ratelimit.js.map +0 -1
  104. package/dist/connectors/github/scope.d.ts.map +0 -1
  105. package/dist/connectors/github/scope.js.map +0 -1
  106. package/dist/connectors/github/signature.d.ts.map +0 -1
  107. package/dist/connectors/github/signature.js.map +0 -1
  108. package/dist/connectors/github/tenant-routing.d.ts.map +0 -1
  109. package/dist/connectors/github/tenant-routing.js.map +0 -1
  110. package/dist/connectors/github/transform.d.ts.map +0 -1
  111. package/dist/connectors/github/transform.js.map +0 -1
  112. package/dist/connectors/github/types.d.ts.map +0 -1
  113. package/dist/connectors/github/types.js.map +0 -1
  114. package/dist/connectors/slack/backfill.d.ts.map +0 -1
  115. package/dist/connectors/slack/backfill.js.map +0 -1
  116. package/dist/connectors/slack/deletion.d.ts.map +0 -1
  117. package/dist/connectors/slack/deletion.js.map +0 -1
  118. package/dist/connectors/slack/dlq.d.ts.map +0 -1
  119. package/dist/connectors/slack/dlq.js.map +0 -1
  120. package/dist/connectors/slack/idempotency.d.ts.map +0 -1
  121. package/dist/connectors/slack/idempotency.js.map +0 -1
  122. package/dist/connectors/slack/ingest.d.ts.map +0 -1
  123. package/dist/connectors/slack/ingest.js.map +0 -1
  124. package/dist/connectors/slack/ratelimit.d.ts.map +0 -1
  125. package/dist/connectors/slack/ratelimit.js.map +0 -1
  126. package/dist/connectors/slack/scope.d.ts.map +0 -1
  127. package/dist/connectors/slack/scope.js.map +0 -1
  128. package/dist/connectors/slack/signature.d.ts.map +0 -1
  129. package/dist/connectors/slack/signature.js.map +0 -1
  130. package/dist/connectors/slack/tenant-routing.d.ts.map +0 -1
  131. package/dist/connectors/slack/tenant-routing.js.map +0 -1
  132. package/dist/connectors/slack/transform.d.ts.map +0 -1
  133. package/dist/connectors/slack/transform.js.map +0 -1
  134. package/dist/connectors/slack/types.d.ts.map +0 -1
  135. package/dist/connectors/slack/types.js.map +0 -1
  136. package/dist/connectors/slack/web-client.d.ts.map +0 -1
  137. package/dist/connectors/slack/web-client.js.map +0 -1
  138. package/dist/connectors/slack/workspaces.d.ts.map +0 -1
  139. package/dist/connectors/slack/workspaces.js.map +0 -1
  140. package/dist/consolidate.d.ts.map +0 -1
  141. package/dist/consolidate.js.map +0 -1
  142. package/dist/correction-latency.d.ts.map +0 -1
  143. package/dist/correction-latency.js.map +0 -1
  144. package/dist/customer-notes.d.ts.map +0 -1
  145. package/dist/customer-notes.js.map +0 -1
  146. package/dist/dag.d.ts.map +0 -1
  147. package/dist/dag.js.map +0 -1
  148. package/dist/dashboard.d.ts.map +0 -1
  149. package/dist/dashboard.js.map +0 -1
  150. package/dist/db.d.ts.map +0 -1
  151. package/dist/db.js.map +0 -1
  152. package/dist/decisions.d.ts.map +0 -1
  153. package/dist/decisions.js.map +0 -1
  154. package/dist/dedupe.d.ts.map +0 -1
  155. package/dist/dedupe.js.map +0 -1
  156. package/dist/embedding-provider.d.ts.map +0 -1
  157. package/dist/embedding-provider.js.map +0 -1
  158. package/dist/embeddings.d.ts.map +0 -1
  159. package/dist/embeddings.js.map +0 -1
  160. package/dist/eval-suite.d.ts.map +0 -1
  161. package/dist/eval-suite.js.map +0 -1
  162. package/dist/eval.d.ts.map +0 -1
  163. package/dist/eval.js.map +0 -1
  164. package/dist/extensions/openclaw-plugin/index.js.map +0 -1
  165. package/dist/extract.d.ts.map +0 -1
  166. package/dist/extract.js.map +0 -1
  167. package/dist/forward-claim-detector.d.ts.map +0 -1
  168. package/dist/forward-claim-detector.js.map +0 -1
  169. package/dist/goals.d.ts.map +0 -1
  170. package/dist/goals.js.map +0 -1
  171. package/dist/graph-extract.d.ts.map +0 -1
  172. package/dist/graph-extract.js.map +0 -1
  173. package/dist/graph-recall.d.ts.map +0 -1
  174. package/dist/graph-recall.js.map +0 -1
  175. package/dist/graph-stream.d.ts.map +0 -1
  176. package/dist/graph-stream.js.map +0 -1
  177. package/dist/graph-view.d.ts.map +0 -1
  178. package/dist/graph-view.js.map +0 -1
  179. package/dist/graph.d.ts.map +0 -1
  180. package/dist/graph.js.map +0 -1
  181. package/dist/handoff.d.ts.map +0 -1
  182. package/dist/handoff.js.map +0 -1
  183. package/dist/hooks.d.ts.map +0 -1
  184. package/dist/hooks.js.map +0 -1
  185. package/dist/importers.d.ts.map +0 -1
  186. package/dist/importers.js.map +0 -1
  187. package/dist/incidents.d.ts.map +0 -1
  188. package/dist/incidents.js.map +0 -1
  189. package/dist/index.d.ts.map +0 -1
  190. package/dist/index.js.map +0 -1
  191. package/dist/invalidation.d.ts.map +0 -1
  192. package/dist/invalidation.js.map +0 -1
  193. package/dist/mcp/framing.d.ts.map +0 -1
  194. package/dist/mcp/framing.js.map +0 -1
  195. package/dist/mcp/server.d.ts.map +0 -1
  196. package/dist/mcp/server.js.map +0 -1
  197. package/dist/memory-value-weights.d.ts.map +0 -1
  198. package/dist/memory-value-weights.js.map +0 -1
  199. package/dist/memory-value.d.ts.map +0 -1
  200. package/dist/memory-value.js.map +0 -1
  201. package/dist/memory.d.ts.map +0 -1
  202. package/dist/memory.js.map +0 -1
  203. package/dist/multihop.d.ts.map +0 -1
  204. package/dist/multihop.js.map +0 -1
  205. package/dist/owner-validation.d.ts.map +0 -1
  206. package/dist/owner-validation.js.map +0 -1
  207. package/dist/path-context.d.ts.map +0 -1
  208. package/dist/path-context.js.map +0 -1
  209. package/dist/physics-config.d.ts.map +0 -1
  210. package/dist/physics-config.js.map +0 -1
  211. package/dist/physics-state.d.ts.map +0 -1
  212. package/dist/physics-state.js.map +0 -1
  213. package/dist/physics.d.ts.map +0 -1
  214. package/dist/physics.js.map +0 -1
  215. package/dist/policies.d.ts.map +0 -1
  216. package/dist/policies.js.map +0 -1
  217. package/dist/postinstall.d.ts.map +0 -1
  218. package/dist/postinstall.js.map +0 -1
  219. package/dist/predictions.d.ts.map +0 -1
  220. package/dist/predictions.js.map +0 -1
  221. package/dist/processes.d.ts.map +0 -1
  222. package/dist/processes.js.map +0 -1
  223. package/dist/project-briefs.d.ts.map +0 -1
  224. package/dist/project-briefs.js.map +0 -1
  225. package/dist/project-identity.d.ts.map +0 -1
  226. package/dist/project-identity.js.map +0 -1
  227. package/dist/provenance-coverage.d.ts.map +0 -1
  228. package/dist/provenance-coverage.js.map +0 -1
  229. package/dist/rate-limit.d.ts.map +0 -1
  230. package/dist/rate-limit.js.map +0 -1
  231. package/dist/raw-archive-mirror-cleanup.d.ts.map +0 -1
  232. package/dist/raw-archive-mirror-cleanup.js.map +0 -1
  233. package/dist/raw-archive.d.ts.map +0 -1
  234. package/dist/raw-archive.js.map +0 -1
  235. package/dist/recall-history.d.ts.map +0 -1
  236. package/dist/recall-history.js.map +0 -1
  237. package/dist/recall-scope.d.ts.map +0 -1
  238. package/dist/recall-scope.js.map +0 -1
  239. package/dist/recall-trace.d.ts.map +0 -1
  240. package/dist/recall-trace.js.map +0 -1
  241. package/dist/refine-llm.d.ts.map +0 -1
  242. package/dist/refine-llm.js.map +0 -1
  243. package/dist/reject-flow.d.ts.map +0 -1
  244. package/dist/reject-flow.js.map +0 -1
  245. package/dist/rejection.d.ts.map +0 -1
  246. package/dist/rejection.js.map +0 -1
  247. package/dist/replay.d.ts.map +0 -1
  248. package/dist/replay.js.map +0 -1
  249. package/dist/rerankers/cross-encoder.d.ts.map +0 -1
  250. package/dist/rerankers/cross-encoder.js.map +0 -1
  251. package/dist/rerankers/index.d.ts.map +0 -1
  252. package/dist/rerankers/index.js.map +0 -1
  253. package/dist/rerankers/jev.d.ts.map +0 -1
  254. package/dist/rerankers/jev.js.map +0 -1
  255. package/dist/rerankers/llm.d.ts.map +0 -1
  256. package/dist/rerankers/llm.js.map +0 -1
  257. package/dist/rerankers/types.d.ts.map +0 -1
  258. package/dist/rerankers/types.js.map +0 -1
  259. package/dist/rrf.d.ts.map +0 -1
  260. package/dist/rrf.js.map +0 -1
  261. package/dist/salience.d.ts.map +0 -1
  262. package/dist/salience.js.map +0 -1
  263. package/dist/scheduler.d.ts.map +0 -1
  264. package/dist/scheduler.js.map +0 -1
  265. package/dist/scope.d.ts.map +0 -1
  266. package/dist/scope.js.map +0 -1
  267. package/dist/search.d.ts.map +0 -1
  268. package/dist/search.js.map +0 -1
  269. package/dist/secret-detect.d.ts.map +0 -1
  270. package/dist/secret-detect.js.map +0 -1
  271. package/dist/server-detect.d.ts.map +0 -1
  272. package/dist/server-detect.js.map +0 -1
  273. package/dist/server.d.ts.map +0 -1
  274. package/dist/server.js.map +0 -1
  275. package/dist/shared.d.ts.map +0 -1
  276. package/dist/shared.js.map +0 -1
  277. package/dist/skills.d.ts.map +0 -1
  278. package/dist/skills.js.map +0 -1
  279. package/dist/sleep-redact.d.ts +0 -58
  280. package/dist/sleep-redact.d.ts.map +0 -1
  281. package/dist/sleep-redact.js +0 -80
  282. package/dist/sleep-redact.js.map +0 -1
  283. package/dist/src/ablation.js +0 -138
  284. package/dist/src/ablation.js.map +0 -1
  285. package/dist/src/ambient.js +0 -148
  286. package/dist/src/ambient.js.map +0 -1
  287. package/dist/src/api.js +0 -2109
  288. package/dist/src/api.js.map +0 -1
  289. package/dist/src/audit-prune.js +0 -106
  290. package/dist/src/audit-prune.js.map +0 -1
  291. package/dist/src/audit.js +0 -213
  292. package/dist/src/audit.js.map +0 -1
  293. package/dist/src/auth.js +0 -97
  294. package/dist/src/auth.js.map +0 -1
  295. package/dist/src/autolearn.js +0 -174
  296. package/dist/src/autolearn.js.map +0 -1
  297. package/dist/src/availability.js +0 -94
  298. package/dist/src/availability.js.map +0 -1
  299. package/dist/src/capture.js +0 -1354
  300. package/dist/src/capture.js.map +0 -1
  301. package/dist/src/card-detail.js +0 -15
  302. package/dist/src/card-detail.js.map +0 -1
  303. package/dist/src/card.js +0 -19
  304. package/dist/src/card.js.map +0 -1
  305. package/dist/src/cli.js +0 -9328
  306. package/dist/src/cli.js.map +0 -1
  307. package/dist/src/client.js +0 -237
  308. package/dist/src/client.js.map +0 -1
  309. package/dist/src/compare.js +0 -122
  310. package/dist/src/compare.js.map +0 -1
  311. package/dist/src/config.js +0 -135
  312. package/dist/src/config.js.map +0 -1
  313. package/dist/src/connectors/github/backfill.js +0 -281
  314. package/dist/src/connectors/github/backfill.js.map +0 -1
  315. package/dist/src/connectors/github/cli-impl.js +0 -234
  316. package/dist/src/connectors/github/cli-impl.js.map +0 -1
  317. package/dist/src/connectors/github/deletion.js +0 -85
  318. package/dist/src/connectors/github/deletion.js.map +0 -1
  319. package/dist/src/connectors/github/dlq.js +0 -190
  320. package/dist/src/connectors/github/dlq.js.map +0 -1
  321. package/dist/src/connectors/github/idempotency.js +0 -27
  322. package/dist/src/connectors/github/idempotency.js.map +0 -1
  323. package/dist/src/connectors/github/ingest.js +0 -156
  324. package/dist/src/connectors/github/ingest.js.map +0 -1
  325. package/dist/src/connectors/github/octokit-client.js +0 -70
  326. package/dist/src/connectors/github/octokit-client.js.map +0 -1
  327. package/dist/src/connectors/github/ratelimit.js +0 -31
  328. package/dist/src/connectors/github/ratelimit.js.map +0 -1
  329. package/dist/src/connectors/github/scope.js +0 -13
  330. package/dist/src/connectors/github/scope.js.map +0 -1
  331. package/dist/src/connectors/github/signature.js +0 -81
  332. package/dist/src/connectors/github/signature.js.map +0 -1
  333. package/dist/src/connectors/github/tenant-routing.js +0 -69
  334. package/dist/src/connectors/github/tenant-routing.js.map +0 -1
  335. package/dist/src/connectors/github/transform.js +0 -103
  336. package/dist/src/connectors/github/transform.js.map +0 -1
  337. package/dist/src/connectors/github/types.js +0 -100
  338. package/dist/src/connectors/github/types.js.map +0 -1
  339. package/dist/src/connectors/slack/backfill.js +0 -78
  340. package/dist/src/connectors/slack/backfill.js.map +0 -1
  341. package/dist/src/connectors/slack/deletion.js +0 -59
  342. package/dist/src/connectors/slack/deletion.js.map +0 -1
  343. package/dist/src/connectors/slack/dlq.js +0 -224
  344. package/dist/src/connectors/slack/dlq.js.map +0 -1
  345. package/dist/src/connectors/slack/idempotency.js +0 -31
  346. package/dist/src/connectors/slack/idempotency.js.map +0 -1
  347. package/dist/src/connectors/slack/ingest.js +0 -109
  348. package/dist/src/connectors/slack/ingest.js.map +0 -1
  349. package/dist/src/connectors/slack/ratelimit.js +0 -18
  350. package/dist/src/connectors/slack/ratelimit.js.map +0 -1
  351. package/dist/src/connectors/slack/scope.js +0 -13
  352. package/dist/src/connectors/slack/scope.js.map +0 -1
  353. package/dist/src/connectors/slack/signature.js +0 -27
  354. package/dist/src/connectors/slack/signature.js.map +0 -1
  355. package/dist/src/connectors/slack/tenant-routing.js +0 -41
  356. package/dist/src/connectors/slack/tenant-routing.js.map +0 -1
  357. package/dist/src/connectors/slack/transform.js +0 -47
  358. package/dist/src/connectors/slack/transform.js.map +0 -1
  359. package/dist/src/connectors/slack/types.js +0 -35
  360. package/dist/src/connectors/slack/types.js.map +0 -1
  361. package/dist/src/connectors/slack/web-client.js +0 -43
  362. package/dist/src/connectors/slack/web-client.js.map +0 -1
  363. package/dist/src/connectors/slack/workspaces.js +0 -62
  364. package/dist/src/connectors/slack/workspaces.js.map +0 -1
  365. package/dist/src/consolidate.js +0 -978
  366. package/dist/src/consolidate.js.map +0 -1
  367. package/dist/src/correction-latency.js +0 -74
  368. package/dist/src/correction-latency.js.map +0 -1
  369. package/dist/src/customer-notes.js +0 -325
  370. package/dist/src/customer-notes.js.map +0 -1
  371. package/dist/src/dag.js +0 -352
  372. package/dist/src/dag.js.map +0 -1
  373. package/dist/src/dashboard.js +0 -258
  374. package/dist/src/dashboard.js.map +0 -1
  375. package/dist/src/db.js +0 -2728
  376. package/dist/src/db.js.map +0 -1
  377. package/dist/src/decisions.js +0 -304
  378. package/dist/src/decisions.js.map +0 -1
  379. package/dist/src/dedupe.js +0 -141
  380. package/dist/src/dedupe.js.map +0 -1
  381. package/dist/src/embedding-provider.js +0 -314
  382. package/dist/src/embedding-provider.js.map +0 -1
  383. package/dist/src/embeddings.js +0 -543
  384. package/dist/src/embeddings.js.map +0 -1
  385. package/dist/src/eval-suite.js +0 -294
  386. package/dist/src/eval-suite.js.map +0 -1
  387. package/dist/src/eval.js +0 -187
  388. package/dist/src/eval.js.map +0 -1
  389. package/dist/src/extract.js +0 -117
  390. package/dist/src/extract.js.map +0 -1
  391. package/dist/src/forward-claim-detector.js +0 -117
  392. package/dist/src/forward-claim-detector.js.map +0 -1
  393. package/dist/src/goals.js +0 -390
  394. package/dist/src/goals.js.map +0 -1
  395. package/dist/src/graph-extract.js +0 -314
  396. package/dist/src/graph-extract.js.map +0 -1
  397. package/dist/src/graph-recall.js +0 -277
  398. package/dist/src/graph-recall.js.map +0 -1
  399. package/dist/src/graph-stream.js +0 -176
  400. package/dist/src/graph-stream.js.map +0 -1
  401. package/dist/src/graph-view.js +0 -310
  402. package/dist/src/graph-view.js.map +0 -1
  403. package/dist/src/graph.js +0 -762
  404. package/dist/src/graph.js.map +0 -1
  405. package/dist/src/handoff.js +0 -65
  406. package/dist/src/handoff.js.map +0 -1
  407. package/dist/src/hooks.js +0 -926
  408. package/dist/src/hooks.js.map +0 -1
  409. package/dist/src/importers.js +0 -881
  410. package/dist/src/importers.js.map +0 -1
  411. package/dist/src/incidents.js +0 -336
  412. package/dist/src/incidents.js.map +0 -1
  413. package/dist/src/index.js +0 -32
  414. package/dist/src/index.js.map +0 -1
  415. package/dist/src/invalidation.js +0 -129
  416. package/dist/src/invalidation.js.map +0 -1
  417. package/dist/src/mcp/framing.js +0 -45
  418. package/dist/src/mcp/framing.js.map +0 -1
  419. package/dist/src/mcp/server.js +0 -1298
  420. package/dist/src/mcp/server.js.map +0 -1
  421. package/dist/src/memory-value-weights.js +0 -31
  422. package/dist/src/memory-value-weights.js.map +0 -1
  423. package/dist/src/memory-value.js +0 -261
  424. package/dist/src/memory-value.js.map +0 -1
  425. package/dist/src/memory.js +0 -425
  426. package/dist/src/memory.js.map +0 -1
  427. package/dist/src/multihop.js +0 -35
  428. package/dist/src/multihop.js.map +0 -1
  429. package/dist/src/owner-validation.js +0 -56
  430. package/dist/src/owner-validation.js.map +0 -1
  431. package/dist/src/path-context.js +0 -48
  432. package/dist/src/path-context.js.map +0 -1
  433. package/dist/src/physics-config.js +0 -26
  434. package/dist/src/physics-config.js.map +0 -1
  435. package/dist/src/physics-state.js +0 -169
  436. package/dist/src/physics-state.js.map +0 -1
  437. package/dist/src/physics.js +0 -378
  438. package/dist/src/physics.js.map +0 -1
  439. package/dist/src/policies.js +0 -414
  440. package/dist/src/policies.js.map +0 -1
  441. package/dist/src/postinstall.js +0 -101
  442. package/dist/src/postinstall.js.map +0 -1
  443. package/dist/src/predictions.js +0 -629
  444. package/dist/src/predictions.js.map +0 -1
  445. package/dist/src/processes.js +0 -349
  446. package/dist/src/processes.js.map +0 -1
  447. package/dist/src/project-briefs.js +0 -492
  448. package/dist/src/project-briefs.js.map +0 -1
  449. package/dist/src/project-identity.js +0 -200
  450. package/dist/src/project-identity.js.map +0 -1
  451. package/dist/src/provenance-coverage.js +0 -23
  452. package/dist/src/provenance-coverage.js.map +0 -1
  453. package/dist/src/rate-limit.js +0 -60
  454. package/dist/src/rate-limit.js.map +0 -1
  455. package/dist/src/raw-archive-mirror-cleanup.js +0 -55
  456. package/dist/src/raw-archive-mirror-cleanup.js.map +0 -1
  457. package/dist/src/raw-archive.js +0 -88
  458. package/dist/src/raw-archive.js.map +0 -1
  459. package/dist/src/recall-history.js +0 -235
  460. package/dist/src/recall-history.js.map +0 -1
  461. package/dist/src/recall-scope.js +0 -89
  462. package/dist/src/recall-scope.js.map +0 -1
  463. package/dist/src/recall-trace.js +0 -183
  464. package/dist/src/recall-trace.js.map +0 -1
  465. package/dist/src/refine-llm.js +0 -156
  466. package/dist/src/refine-llm.js.map +0 -1
  467. package/dist/src/reject-flow.js +0 -209
  468. package/dist/src/reject-flow.js.map +0 -1
  469. package/dist/src/rejection.js +0 -160
  470. package/dist/src/rejection.js.map +0 -1
  471. package/dist/src/replay.js +0 -122
  472. package/dist/src/replay.js.map +0 -1
  473. package/dist/src/rerankers/cross-encoder.js +0 -137
  474. package/dist/src/rerankers/cross-encoder.js.map +0 -1
  475. package/dist/src/rerankers/index.js +0 -20
  476. package/dist/src/rerankers/index.js.map +0 -1
  477. package/dist/src/rerankers/jev.js +0 -119
  478. package/dist/src/rerankers/jev.js.map +0 -1
  479. package/dist/src/rerankers/llm.js +0 -80
  480. package/dist/src/rerankers/llm.js.map +0 -1
  481. package/dist/src/rerankers/types.js +0 -2
  482. package/dist/src/rerankers/types.js.map +0 -1
  483. package/dist/src/rrf.js +0 -61
  484. package/dist/src/rrf.js.map +0 -1
  485. package/dist/src/salience.js +0 -74
  486. package/dist/src/salience.js.map +0 -1
  487. package/dist/src/scheduler.js +0 -77
  488. package/dist/src/scheduler.js.map +0 -1
  489. package/dist/src/scope.js +0 -35
  490. package/dist/src/scope.js.map +0 -1
  491. package/dist/src/search.js +0 -1003
  492. package/dist/src/search.js.map +0 -1
  493. package/dist/src/secret-detect.js +0 -95
  494. package/dist/src/secret-detect.js.map +0 -1
  495. package/dist/src/server-detect.js +0 -231
  496. package/dist/src/server-detect.js.map +0 -1
  497. package/dist/src/server.js +0 -3255
  498. package/dist/src/server.js.map +0 -1
  499. package/dist/src/shared.js +0 -502
  500. package/dist/src/shared.js.map +0 -1
  501. package/dist/src/skills.js +0 -346
  502. package/dist/src/skills.js.map +0 -1
  503. package/dist/src/sleep-redact.js +0 -80
  504. package/dist/src/sleep-redact.js.map +0 -1
  505. package/dist/src/sso.js +0 -22
  506. package/dist/src/sso.js.map +0 -1
  507. package/dist/src/store.js +0 -3743
  508. package/dist/src/store.js.map +0 -1
  509. package/dist/src/tenant.js +0 -17
  510. package/dist/src/tenant.js.map +0 -1
  511. package/dist/src/trace.js +0 -72
  512. package/dist/src/trace.js.map +0 -1
  513. package/dist/src/version.js +0 -40
  514. package/dist/src/version.js.map +0 -1
  515. package/dist/src/working-memory.js +0 -157
  516. package/dist/src/working-memory.js.map +0 -1
  517. package/dist/src/yaml.js +0 -107
  518. package/dist/src/yaml.js.map +0 -1
  519. package/dist/sso.d.ts +0 -13
  520. package/dist/sso.d.ts.map +0 -1
  521. package/dist/sso.js +0 -22
  522. package/dist/sso.js.map +0 -1
  523. package/dist/store.d.ts.map +0 -1
  524. package/dist/store.js.map +0 -1
  525. package/dist/tenant.d.ts.map +0 -1
  526. package/dist/tenant.js.map +0 -1
  527. package/dist/trace.d.ts.map +0 -1
  528. package/dist/trace.js.map +0 -1
  529. package/dist/version.d.ts.map +0 -1
  530. package/dist/version.js.map +0 -1
  531. package/dist/working-memory.d.ts.map +0 -1
  532. package/dist/working-memory.js.map +0 -1
  533. package/dist/yaml.d.ts.map +0 -1
  534. package/dist/yaml.js.map +0 -1
package/dist/server.js CHANGED
@@ -22,7 +22,7 @@ export function __resetSessionRecallHistoryHttp() {
22
22
  import { PACKAGE_VERSION } from './version.js';
23
23
  import { validateApiKey } from './auth.js';
24
24
  import { createRateLimiter } from './rate-limit.js';
25
- import { remember, recall, RecallContractError, drillDown, assemble, forget, promote, supersede, archiveRaw, authCreate, authList, authRevoke, auditList, outcome, outcomeForLastRecall, getContext, sleep, adminActor, } from './api.js';
25
+ import { remember, retrieve, RecallContractError, ForbiddenError, drillDown, assemble, forget, promote, supersede, archiveRaw, authCreate, authList, authRevoke, auditList, outcome, outcomeForLastRecall, getContext, sleep, adminActor, } from './api.js';
26
26
  import { buildGraphModel } from './graph-view.js';
27
27
  import { MAX_ENTITY_NAME_LEN } from './graph.js';
28
28
  import { savePrediction, closePrediction, loadPredictionById, loadPredictionsByClass, loadOpenPredictions, computePredictionBaserate, VALID_CLOSURE_STATES, } from './predictions.js';
@@ -289,10 +289,13 @@ async function parseJsonBody(req) {
289
289
  * - /unknown/i → 404 (auth_revoke on unknown key_id)
290
290
  * - /already superseded/i → 409 (chain conflict)
291
291
  * - /not raw/i → 400 (archive_raw on non-raw row)
292
- * Everything else maps to 400 (bad input).
292
+ * ForbiddenError maps to 403; everything else to 400 (bad input).
293
293
  */
294
294
  function mapApiError(err) {
295
295
  const message = err instanceof Error ? err.message : String(err);
296
+ if (err instanceof ForbiddenError) {
297
+ return { status: 403, message };
298
+ }
296
299
  const lower = message.toLowerCase();
297
300
  if (/not found/.test(lower) || /^unknown /.test(lower)) {
298
301
  return { status: 404, message };
@@ -354,6 +357,25 @@ export function isLoopback(remoteAddress) {
354
357
  return true;
355
358
  return false;
356
359
  }
360
+ // Any other Host on a loopback socket is DNS rebinding: a hostile page resolved to 127.0.0.1.
361
+ export const LOOPBACK_HOST_HEADER = /^(localhost|127\.0\.0\.1|\[::1\])(:\d+)?$/i;
362
+ /** A browser request sent by another site. Non-browser clients send neither header and pass. */
363
+ export function isCrossSite(req) {
364
+ const site = req.headers['sec-fetch-site'];
365
+ if (site !== undefined && site !== 'same-origin' && site !== 'none')
366
+ return true;
367
+ const origin = req.headers.origin;
368
+ return origin !== undefined && origin !== `http://${req.headers.host}`;
369
+ }
370
+ // A browser on this machine is loopback too, so the no-key fallback also needs a local Host and a same-site caller.
371
+ function assertLocalCaller(req) {
372
+ if (!isLoopback(req.socket.remoteAddress))
373
+ throw new HttpError(401, 'auth required');
374
+ const host = req.headers.host;
375
+ if ((host !== undefined && !LOOPBACK_HOST_HEADER.test(host)) || isCrossSite(req)) {
376
+ throw new HttpError(403, 'cross-site or non-local request refused; send an API key');
377
+ }
378
+ }
357
379
  function readAuthHeader(req) {
358
380
  const raw = req.headers['authorization'];
359
381
  if (raw === undefined)
@@ -455,9 +477,7 @@ function buildContextWithAuth(req, hippoRoot) {
455
477
  if (process.env.HIPPO_REQUIRE_AUTH === '1') {
456
478
  throw new HttpError(401, 'auth required');
457
479
  }
458
- if (!isLoopback(req.socket.remoteAddress)) {
459
- throw new HttpError(401, 'auth required');
460
- }
480
+ assertLocalCaller(req);
461
481
  // v1.12.0: loopback fallback is process-local, treat as admin.
462
482
  return {
463
483
  hippoRoot,
@@ -492,9 +512,7 @@ function requireAuth(req, hippoRoot) {
492
512
  if (process.env.HIPPO_REQUIRE_AUTH === '1') {
493
513
  throw new HttpError(401, 'auth required');
494
514
  }
495
- if (!isLoopback(req.socket.remoteAddress)) {
496
- throw new HttpError(401, 'auth required');
497
- }
515
+ assertLocalCaller(req);
498
516
  }
499
517
  function getString(obj, key) {
500
518
  const v = obj[key];
@@ -632,10 +650,7 @@ async function handleRequest(req, res, opts, startedAt, limiter) {
632
650
  throw new HttpError(400, 'q is required');
633
651
  }
634
652
  const limitRaw = query.get('limit');
635
- const limit = limitRaw === null ? undefined : Number(limitRaw);
636
- if (limit !== undefined && (!Number.isFinite(limit) || limit <= 0)) {
637
- throw new HttpError(400, 'limit must be a positive number');
638
- }
653
+ const limit = limitRaw === null ? undefined : parseListLimit(limitRaw);
639
654
  const mode = query.get('mode');
640
655
  if (mode !== null && mode !== 'bm25' && mode !== 'hybrid' && mode !== 'physics') {
641
656
  throw new HttpError(400, "mode must be 'bm25', 'hybrid', or 'physics'");
@@ -671,11 +686,12 @@ async function handleRequest(req, res, opts, startedAt, limiter) {
671
686
  const summarizeOverflow = summarizeOverflowRaw === null
672
687
  ? undefined
673
688
  : (summarizeOverflowRaw === '1' || summarizeOverflowRaw === 'true');
674
- // v1.7.2 T4: forward as Number(...) — NaN, 0, negative all reach
675
- // recall() which throws RecallContractError with code='invalid_scorer_window'.
676
- // No transport-side validation; recall() owns the contract.
689
+ // recall() owns the shape rule (NaN, 0 and negatives throw invalid_scorer_window); the transport caps remote cost.
677
690
  const scorerWindowRaw = query.get('scorer_window');
678
691
  const scorerWindow = scorerWindowRaw === null ? undefined : Number(scorerWindowRaw);
692
+ if (scorerWindow !== undefined && scorerWindow > 1000) {
693
+ throw new HttpError(400, 'scorer_window must be <= 1000');
694
+ }
679
695
  // v1.7.4: session_id for the dlPFC goal-stack boost. 256-char cap mirrors
680
696
  // fresh_tail_session_id (above). Trim then drop if empty so api.recall
681
697
  // sees undefined when the param is omitted or whitespace-only.
@@ -757,7 +773,7 @@ async function handleRequest(req, res, opts, startedAt, limiter) {
757
773
  recallExtra.recallHistory = httpRecallHistory;
758
774
  if (explain)
759
775
  recallExtra.explain = explain;
760
- const result = recall(ctx, {
776
+ const result = await retrieve(ctx, {
761
777
  query: q,
762
778
  limit,
763
779
  mode: mode ?? undefined,
@@ -1038,7 +1054,8 @@ async function handleRequest(req, res, opts, startedAt, limiter) {
1038
1054
  // Tenant scope (Episode A follow-up tracked in TODOS.md): api.sleep operates
1039
1055
  // on the WHOLE hippoRoot (cross-tenant by design, matching CLI cmdSleep).
1040
1056
  // The loopback-only guard is the trust boundary today. Future non-loopback
1041
- // serving needs an admin-role gate before exposing this route.
1057
+ // serving must also zero the cross-tenant counters for other tenants
1058
+ // (D1 in docs/decisions/2026-05-24-blocked-items.md).
1042
1059
  if (method === 'POST' && path === '/v1/sleep') {
1043
1060
  // Defensive per-request loopback guard. Uses the canonical isLoopback()
1044
1061
  // helper above so any future extension (additional mapped/IPv6 forms,
@@ -1084,11 +1101,7 @@ async function handleRequest(req, res, opts, startedAt, limiter) {
1084
1101
  }
1085
1102
  // v1.12.3: optional body.role mirrors the --role CLI flag. Validated
1086
1103
  // strictly — anything other than 'admin'|'member' is a 400 (no silent
1087
- // fallback to admin). Required note: admin Bearer can mint a member
1088
- // key for the same tenant; member Bearer minting an admin key is NOT
1089
- // blocked here today (auth_create is currently unaudited per the A5 v2
1090
- // note in authCreate doc). The HTTP layer trusts the buildContextWithAuth
1091
- // role check at admin-gated routes; mint surface remains permissive.
1104
+ // fallback to admin). authCreate refuses a member caller with a 403.
1092
1105
  const roleRaw = body['role'];
1093
1106
  let role;
1094
1107
  if (roleRaw !== undefined) {
@@ -1128,10 +1141,9 @@ async function handleRequest(req, res, opts, startedAt, limiter) {
1128
1141
  sendJson(res, 200, result);
1129
1142
  return;
1130
1143
  }
1131
- // DELETE /v1/auth/keys/:keyId — revoke. authRevoke throws "Unknown key_id"
1132
- // for missing OR cross-tenant keys (no info leak), which mapApiError
1133
- // converts to 404. We return 200 with the result body rather than 204 to
1134
- // surface revokedAt to the caller.
1144
+ // DELETE /v1/auth/keys/:keyId — revoke. Missing or cross-tenant keys are 404
1145
+ // (no info leak); a member key targeting any key but its own is 403.
1146
+ // 200 with the body rather than 204 so the caller sees revokedAt.
1135
1147
  const keyMatch = matchPath('/v1/auth/keys/:keyId', path);
1136
1148
  if (method === 'DELETE' && keyMatch) {
1137
1149
  validateIdSegment(keyMatch.keyId, 'key id');
@@ -3228,9 +3240,7 @@ export async function serve(opts) {
3228
3240
  server.close(() => resolve());
3229
3241
  });
3230
3242
  };
3231
- // Skip signal handlers under vitest so each test run does not register a
3232
- // stray SIGTERM/SIGINT listener that survives until the runner exits.
3233
- if (!process.env.VITEST) {
3243
+ if (opts.handleSignals) {
3234
3244
  let shuttingDown = false;
3235
3245
  const gracefulShutdown = async (signal) => {
3236
3246
  if (shuttingDown)
package/dist/shared.js CHANGED
@@ -153,7 +153,7 @@ export async function searchBothHybrid(query, localRoot, globalRoot, options = {
153
153
  if (!fs.existsSync(root))
154
154
  return [];
155
155
  return recallScope
156
- ? loadRecallSearchEntries(root, query, searchWindow, tenantId, recallScope.requested, recallScope.additive ? 'additive' : 'exact')
156
+ ? loadRecallSearchEntries(root, query, searchWindow, tenantId, recallScope.requested, recallScope.additive ? 'additive' : 'exact', Boolean(includeSuperseded) || Boolean(asOf))
157
157
  : loadSearchEntries(root, query, searchWindow, tenantId);
158
158
  };
159
159
  let localEntries = loadEntries(localRoot);
@@ -0,0 +1,12 @@
1
+ /** `timedOut` means the window closed with stdin still open, so absent
2
+ * `text` is "unknown", not "none", and present `text` may be truncated.
3
+ * Treating absence as a manual run is only safe when it is false. */
4
+ export interface BoundedStdin {
5
+ text?: string;
6
+ timedOut: boolean;
7
+ }
8
+ /** Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of
9
+ * idle (default 1000ms, or `HIPPO_STDIN_WAIT_MS`), refreshed on each chunk
10
+ * so a slow but real write is not cut off, and capped at `waitMs * 10`. */
11
+ export declare function readStdinBounded(waitMs?: number): Promise<BoundedStdin>;
12
+ //# sourceMappingURL=stdin.d.ts.map
package/dist/stdin.js ADDED
@@ -0,0 +1,41 @@
1
+ function defaultWaitMs() {
2
+ const parsed = Number.parseInt(process.env.HIPPO_STDIN_WAIT_MS ?? '', 10);
3
+ return parsed > 0 ? parsed : 1000;
4
+ }
5
+ /** Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of
6
+ * idle (default 1000ms, or `HIPPO_STDIN_WAIT_MS`), refreshed on each chunk
7
+ * so a slow but real write is not cut off, and capped at `waitMs * 10`. */
8
+ export function readStdinBounded(waitMs = defaultWaitMs()) {
9
+ let stdin;
10
+ try {
11
+ stdin = process.stdin;
12
+ }
13
+ catch {
14
+ return Promise.resolve({ timedOut: false });
15
+ }
16
+ if (stdin.isTTY)
17
+ return Promise.resolve({ timedOut: false });
18
+ return new Promise((resolve) => {
19
+ const chunks = [];
20
+ const finish = (timedOut) => {
21
+ clearTimeout(timer);
22
+ clearTimeout(hardCap);
23
+ stdin.off('data', onData);
24
+ stdin.off('end', done);
25
+ stdin.off('error', done);
26
+ stdin.pause();
27
+ stdin.unref?.();
28
+ resolve({ text: chunks.length ? Buffer.concat(chunks).toString('utf8') : undefined, timedOut });
29
+ };
30
+ const done = () => finish(false);
31
+ const onData = (c) => { chunks.push(c); timer.refresh(); };
32
+ const timer = setTimeout(() => finish(true), waitMs);
33
+ // The idle timer refreshes per chunk, so a host that dribbles bytes
34
+ // forever without ending would never resolve without this ceiling.
35
+ const hardCap = setTimeout(() => finish(true), waitMs * 10);
36
+ stdin.on('data', onData);
37
+ stdin.once('end', done);
38
+ stdin.once('error', done);
39
+ });
40
+ }
41
+ //# sourceMappingURL=stdin.js.map
package/dist/store.d.ts CHANGED
@@ -203,9 +203,7 @@ export declare function buildIndexFromDb(db: ReturnType<typeof openHippoDb>): Hi
203
203
  * `buildIndexFromDb`'s query.
204
204
  */
205
205
  export declare function writeIndexMirror(hippoRoot: string, index: HippoIndex): void;
206
- /**
207
- * Load the current derived index from SQLite and refresh the mirror file.
208
- */
206
+ /** Load the derived index from SQLite. Read-only: writers refresh index.json, so readers never race on it. */
209
207
  export declare function loadIndex(hippoRoot: string): HippoIndex;
210
208
  /**
211
209
  * Persist mutable index metadata. Entry rows themselves are derived from SQLite.
@@ -298,6 +296,9 @@ export declare function readEntry(hippoRoot: string, id: string, tenantId?: stri
298
296
  * to fetch parent summaries for a set of overflowed leaves.
299
297
  */
300
298
  export declare function loadEntriesByIds(hippoRoot: string, ids: readonly string[], tenantId?: string): MemoryEntry[];
299
+ /** Strengthen what a read returned: update only the four retrieval columns on the live row, never a stale copy.
300
+ * Best effort: a failure logs and never fails the read. Returns the ids found in this store. */
301
+ export declare function strengthenRetrieved(hippoRoot: string, ids: readonly string[], tenantId?: string): Set<string>;
301
302
  /**
302
303
  * All `kind='raw'` rows for a given session, tenant-scoped, returned
303
304
  * oldest-first. Used by `api.assemble` to walk a session's chronological
@@ -375,12 +376,14 @@ export declare function loadChildrenOf(hippoRoot: string, parentId: string, tena
375
376
  * removed) and `resolveConflict` (`conflict_resolve` row per resolution).
376
377
  * Default keeps `deleteEntry` byte-identical to its pre-split behavior.
377
378
  *
378
- * Returns `{tenantId, dagParentId}` for the removed row, or `null` if no row
379
- * with `id` existed.
379
+ * Returns `{tenantId, dagParentId}` for the removed row, or `null` if no row with `id`
380
+ * existed or `automatic` refused it (pinned or raw at DELETE time, so a late pin wins).
380
381
  */
381
382
  export declare function deleteEntryCore(db: ReturnType<typeof openHippoDb>, id: string, opts?: {
382
383
  actor?: string;
383
384
  suppressForgetAudit?: boolean;
385
+ reason?: string;
386
+ automatic?: boolean;
384
387
  }): {
385
388
  tenantId: string;
386
389
  dagParentId: string | null;
@@ -398,12 +401,14 @@ export declare function deleteEntryCore(db: ReturnType<typeof openHippoDb>, id:
398
401
  */
399
402
  export declare function deleteEntry(hippoRoot: string, id: string, opts?: {
400
403
  actor?: string;
404
+ reason?: string;
405
+ automatic?: boolean;
401
406
  }): boolean;
402
- /**
403
- * Batch-write and batch-delete entries in a single transaction.
404
- * Used by consolidation to avoid N open/close cycles.
405
- */
406
- export declare function batchWriteAndDelete(hippoRoot: string, toWrite: MemoryEntry[], toDeleteIds: string[]): void;
407
+ /** Consolidation's flush, one transaction. With `snapshot` (rows as the caller loaded them), a write keeps only
408
+ * the fields the caller changed, takes the rest from the live row, and never resurrects a row that is gone. */
409
+ export declare function batchWriteAndDelete(hippoRoot: string, toWrite: MemoryEntry[], toDeleteIds: string[], opts?: {
410
+ snapshot?: ReadonlyMap<string, MemoryEntry>;
411
+ }): string[];
407
412
  /**
408
413
  * Load all entries from SQLite.
409
414
  *
@@ -445,7 +450,7 @@ export declare function loadSearchEntries(hippoRoot: string, query: string, limi
445
450
  * mode (its `tenantId` option is optional); `loadSearchRows` already treats
446
451
  * undefined as "no tenant filter" for legacy callers.
447
452
  */
448
- export declare function loadRecallSearchEntries(hippoRoot: string, query: string, limit?: number, tenantId?: string, requestedScope?: string, explicitScopeMode?: 'exact' | 'additive'): MemoryEntry[];
453
+ export declare function loadRecallSearchEntries(hippoRoot: string, query: string, limit?: number, tenantId?: string, requestedScope?: string, explicitScopeMode?: 'exact' | 'additive', includeSuperseded?: boolean): MemoryEntry[];
449
454
  /**
450
455
  * Rebuild mirrors from SQLite, importing any legacy markdown files not already present.
451
456
  */
@@ -462,6 +467,8 @@ export declare function appendConsolidationRun(hippoRoot: string, run: {
462
467
  merged: number;
463
468
  removed: number;
464
469
  }): void;
470
+ /** Rows a tenant created since the last sleep (runs are host-wide), looking back at most 24 hours. */
471
+ export declare function countCreatedSinceLastSleep(hippoRoot: string, tenantId: string, now?: Date): number;
465
472
  /**
466
473
  * Session decay context: provides the data needed for session-based and adaptive decay.
467
474
  */