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
@@ -1,543 +0,0 @@
1
- /**
2
- * Optional embedding-based semantic search for Hippo.
3
- * Uses @huggingface/transformers (local, zero API keys, ~22MB model).
4
- * Falls back silently if the library is not installed.
5
- */
6
- import * as fs from 'fs';
7
- import * as path from 'path';
8
- import { createRequire } from 'module';
9
- import { loadAllEntries } from './store.js';
10
- import { openHippoDb, closeHippoDb, getMeta, setMeta } from './db.js';
11
- import { initializeParticle, savePhysicsState, loadPhysicsState, resetAllPhysicsState } from './physics-state.js';
12
- import { loadConfig } from './config.js';
13
- import { resolveEmbeddingProvider } from './embedding-provider.js';
14
- // Use createRequire for synchronous module resolution check in ESM
15
- const _require = createRequire(import.meta.url);
16
- // Cached availability check
17
- let _embeddingAvailable = null;
18
- // Lazy-loaded pipeline (expensive to initialize)
19
- const _pipelineInstances = new Map();
20
- const _pipelineLoading = new Map();
21
- export const DEFAULT_EMBEDDING_MODEL = 'Xenova/all-MiniLM-L6-v2';
22
- export const EMBEDDING_MODEL_META_KEY = 'embedding_model';
23
- /**
24
- * Bump whenever `embeddingInputText`'s composition changes in a way that
25
- * changes the resulting vectors for existing entries. Folded into the stored
26
- * index identity (see `embeddingIndexIdentity`) so a text-format change is
27
- * treated exactly like an embedding-model change: the next embed-touching
28
- * operation detects the mismatch and reindexes automatically. Format 2 =
29
- * `path:*` tags excluded (see `embeddingInputText`); format 1 (implicit, no
30
- * suffix) = `${content} ${tags.join(' ')}` including path tags.
31
- */
32
- export const EMBED_TEXT_FORMAT = 2;
33
- /**
34
- * The stored-index identity for a given embedding provider id: folds
35
- * `EMBED_TEXT_FORMAT` into the provider id so index-identity comparisons
36
- * automatically invalidate on either a model change OR a text-format change.
37
- * This is the ONE choke point both `embeddingModelRequiresReindex` (compare
38
- * side) and `saveStoredEmbeddingModel` (save side) go through — they MUST
39
- * version identically, or every call reindexes in a loop (or none ever do).
40
- */
41
- export function embeddingIndexIdentity(providerId) {
42
- return `${providerId}#t${EMBED_TEXT_FORMAT}`;
43
- }
44
- /**
45
- * Build the text embedded for a memory entry: content plus its tags, joined
46
- * by a space and trimmed — the same shape as the legacy
47
- * `` `${e.content} ${e.tags.join(' ')}`.trim() `` composition, minus `path:*`
48
- * tags.
49
- *
50
- * `path:*` tags are excluded because they are auto-derived from
51
- * `process.cwd()` (see `extractPathTags` in cli.ts) and carry every path
52
- * component of the store's location, INCLUDING the store directory name
53
- * itself. That means identical content embeds to a DIFFERENT vector
54
- * depending on WHERE the store happens to live — e.g. a fresh benchmark run
55
- * under `tempfile.mkdtemp()` gets a new directory name (hence new path
56
- * tokens, hence a new vector) every single run, even with byte-identical
57
- * content ingested in byte-identical order. This was diagnosed as the
58
- * DOMINANT root cause of cross-fresh-ingest recall-rank variance measured on
59
- * LoCoMo (mean evidence-recall@5 stdev 0.0175 across 4 fresh re-ingests of
60
- * identical data; see `benchmarks/LOCOMO_INVESTIGATION.md`, "Determinism
61
- * characterization"). It is a real product defect beyond benchmarks too:
62
- * retrieval semantics should not depend on a project directory's name.
63
- *
64
- * Only `path:*` is excluded. Other tags (`conv:`, `session:`, `speaker:`,
65
- * `dia:`, `error`, `scope:`, etc.) remain embedded — they carry semantic
66
- * meaning. Path relevance at recall time is already handled explicitly by
67
- * the v39 scope-isolation layer (`origin_project`, `pathOverlapScore`), so
68
- * embedding-level path tokens are redundant with a dedicated mechanism
69
- * rather than a feature.
70
- */
71
- export function embeddingInputText(entry) {
72
- const tags = entry.tags.filter((t) => !t.startsWith('path:'));
73
- return `${entry.content} ${tags.join(' ')}`.trim();
74
- }
75
- /**
76
- * Per-model pooling dispatch for Transformers.js's feature-extraction
77
- * pipeline. BGE family models were trained with CLS pooling (per BAAI's
78
- * official inference code in `FlagEmbedding`); MiniLM and most sentence-
79
- * transformers models use mean pooling. Unknown model ids default to mean
80
- * — that is the safe choice because most third-party models adopt the
81
- * sentence-transformers convention, and the alternative ('cls') silently
82
- * degrades vector quality for mean-pooling models.
83
- */
84
- export function poolingFor(model) {
85
- return /\bbge\b/i.test(model) ? 'cls' : 'mean';
86
- }
87
- export function prefixFor(model, role) {
88
- if (!role)
89
- return '';
90
- if (/\be5\b/i.test(model)) {
91
- return role === 'query' ? 'query: ' : 'passage: ';
92
- }
93
- return '';
94
- }
95
- // Use Function constructor to bypass TypeScript static module resolution
96
- // for optional peer dependencies that may not be installed.
97
- // SAFETY: `import(s)` always resolves to a module namespace object (or rejects);
98
- // Promise<object> names that honestly without claiming a specific module shape.
99
- const _dynImport = new Function('s', 'return import(s)');
100
- /**
101
- * Check (synchronously) if @xenova/transformers or @huggingface/transformers is installed.
102
- */
103
- export function isEmbeddingAvailable() {
104
- if (_embeddingAvailable !== null)
105
- return _embeddingAvailable;
106
- try {
107
- _require.resolve('@xenova/transformers');
108
- _embeddingAvailable = true;
109
- return true;
110
- }
111
- catch {
112
- // fall through
113
- }
114
- try {
115
- _require.resolve('@huggingface/transformers');
116
- _embeddingAvailable = true;
117
- return true;
118
- }
119
- catch {
120
- // fall through
121
- }
122
- _embeddingAvailable = false;
123
- return false;
124
- }
125
- /**
126
- * Pick exactly one Transformers.js implementation before importing either.
127
- *
128
- * Importing both packages in one process loads incompatible native
129
- * onnxruntime-node versions (Xenova v2 uses ORT 1.14; Hugging Face v4 uses a
130
- * current ORT). Their finalizers can double-free an InferenceSession on exit.
131
- * Prefer the maintained package shipped by Hippo, with Xenova retained only as
132
- * a compatibility fallback for users who installed it themselves.
133
- */
134
- function resolveTransformersPackage() {
135
- try {
136
- _require.resolve('@huggingface/transformers');
137
- return '@huggingface/transformers';
138
- }
139
- catch {
140
- // fall through
141
- }
142
- try {
143
- _require.resolve('@xenova/transformers');
144
- return '@xenova/transformers';
145
- }
146
- catch {
147
- return null;
148
- }
149
- }
150
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
151
- async function loadPipeline(model) {
152
- if (_pipelineInstances.has(model))
153
- return _pipelineInstances.get(model);
154
- if (_pipelineLoading.has(model))
155
- return _pipelineLoading.get(model);
156
- const loading = (async () => {
157
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
158
- const pkg = resolveTransformersPackage();
159
- if (!pkg)
160
- return null;
161
- let pipelineFn = null;
162
- try {
163
- // SAFETY: the resolved module's shape is untyped by design (optional peer
164
- // dependency); pipelineFn/mod.env are read defensively below and any
165
- // failure to find a usable pipeline falls through to `return null`.
166
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
167
- const mod = await _dynImport(pkg);
168
- if (process.env.HIPPO_MODEL_CACHE) {
169
- if (mod.env) {
170
- mod.env.cacheDir = process.env.HIPPO_MODEL_CACHE;
171
- mod.env.localModelPath = process.env.HIPPO_MODEL_CACHE;
172
- mod.env.allowRemoteModels = false;
173
- }
174
- }
175
- pipelineFn = mod.pipeline ?? mod.default?.pipeline;
176
- }
177
- catch {
178
- return null;
179
- }
180
- if (!pipelineFn)
181
- return null;
182
- // The Qdrant-vendored bundle (used in egress-restricted sandboxes) ships
183
- // only `onnx/model.onnx` (FP32). The HF default ships `model_quantized.onnx`
184
- // too. When pointing at a local cache, pick the variant that's on disk.
185
- const cacheRoot = process.env.HIPPO_MODEL_CACHE?.trim();
186
- const quantized = !cacheRoot
187
- || fs.existsSync(path.join(cacheRoot, model, 'onnx', 'model_quantized.onnx'));
188
- try {
189
- const instance = await pipelineFn('feature-extraction', model, { quantized });
190
- _pipelineInstances.set(model, instance);
191
- return instance;
192
- }
193
- catch {
194
- return null;
195
- }
196
- finally {
197
- _pipelineLoading.delete(model);
198
- }
199
- })();
200
- _pipelineLoading.set(model, loading);
201
- return loading;
202
- }
203
- export function resolveEmbeddingModel(hippoRoot, explicitModel) {
204
- const direct = explicitModel?.trim();
205
- if (direct)
206
- return direct;
207
- try {
208
- const configured = loadConfig(hippoRoot).embeddings.model?.trim();
209
- if (configured)
210
- return configured;
211
- }
212
- catch {
213
- // Fall back to the default model when config cannot be read.
214
- }
215
- return DEFAULT_EMBEDDING_MODEL;
216
- }
217
- function loadStoredEmbeddingModel(hippoRoot) {
218
- try {
219
- const db = openHippoDb(hippoRoot);
220
- try {
221
- const model = getMeta(db, EMBEDDING_MODEL_META_KEY, '').trim();
222
- return model || null;
223
- }
224
- finally {
225
- closeHippoDb(db);
226
- }
227
- }
228
- catch {
229
- return null;
230
- }
231
- }
232
- /**
233
- * Persist the stored-index identity for `model` (see `embeddingIndexIdentity`).
234
- * Versioning happens INSIDE this function, not at call sites, so every caller
235
- * — current and future — gets the identity format for free. Must stay
236
- * consistent with the compare side in `embeddingModelRequiresReindex`.
237
- */
238
- export function saveStoredEmbeddingModel(hippoRoot, model) {
239
- const db = openHippoDb(hippoRoot);
240
- try {
241
- setMeta(db, EMBEDDING_MODEL_META_KEY, embeddingIndexIdentity(model));
242
- }
243
- finally {
244
- closeHippoDb(db);
245
- }
246
- }
247
- export function resolveIndexedEmbeddingModel(hippoRoot, index = loadEmbeddingIndex(hippoRoot)) {
248
- const stored = loadStoredEmbeddingModel(hippoRoot);
249
- if (stored)
250
- return stored;
251
- return Object.keys(index).length > 0 ? DEFAULT_EMBEDDING_MODEL : null;
252
- }
253
- export function embeddingModelRequiresReindex(hippoRoot, model, index = loadEmbeddingIndex(hippoRoot)) {
254
- const stored = resolveIndexedEmbeddingModel(hippoRoot, index);
255
- return stored !== null && stored !== embeddingIndexIdentity(model);
256
- }
257
- async function rebuildEmbeddingIndex(entries, provider) {
258
- const rebuilt = {};
259
- if (entries.length === 0)
260
- return rebuilt;
261
- const texts = entries.map((e) => embeddingInputText(e));
262
- // provider.embed batches internally; on a hard transport/auth failure it
263
- // throws, so the caller aborts WITHOUT saving a partial index (atomic
264
- // reindex: the old index + stored identity are preserved).
265
- const vectors = await provider.embed(texts, 'passage');
266
- for (let i = 0; i < entries.length; i++) {
267
- const vec = vectors[i];
268
- if (vec && vec.length > 0) {
269
- rebuilt[entries[i].id] = vec;
270
- }
271
- }
272
- return rebuilt;
273
- }
274
- function resetPhysicsFromIndex(hippoRoot, entries, index) {
275
- try {
276
- const db = openHippoDb(hippoRoot);
277
- try {
278
- resetAllPhysicsState(db, entries, index);
279
- }
280
- finally {
281
- closeHippoDb(db);
282
- }
283
- }
284
- catch {
285
- // Physics reset is best-effort; retrieval will still fall back gracefully.
286
- }
287
- }
288
- /**
289
- * Get an embedding vector for a piece of text.
290
- * Returns an empty array if transformers is not available or fails.
291
- *
292
- * Pass `role: 'query'` / `'passage'` to engage asymmetric prefixing for
293
- * model families that require it (currently intfloat/e5-*). Omitting `role`
294
- * keeps the legacy symmetric behavior (no prefix), so BGE / MiniLM callers
295
- * don't need to change.
296
- */
297
- export async function getEmbedding(text, model = DEFAULT_EMBEDDING_MODEL, role) {
298
- if (!isEmbeddingAvailable())
299
- return [];
300
- try {
301
- const pipe = await loadPipeline(model);
302
- if (!pipe)
303
- return [];
304
- const prefix = prefixFor(model, role);
305
- const input = prefix ? `${prefix}${text}` : text;
306
- // SAFETY: pipe() is a Transformers.js feature-extraction pipeline call;
307
- // its untyped output is read defensively below (only `.data`, cast on
308
- // the return line to the documented Float32Array tensor shape).
309
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
310
- const output = await pipe(input, { pooling: poolingFor(model), normalize: true });
311
- // SAFETY: output.data is a Float32Array per the feature-extraction
312
- // pipeline's documented tensor output shape.
313
- return Array.from(output.data);
314
- }
315
- catch {
316
- return [];
317
- }
318
- }
319
- /**
320
- * Cosine similarity between two vectors. Handles unnormalized vectors.
321
- * Returns 0 for empty or mismatched vectors.
322
- */
323
- export function cosineSimilarity(a, b) {
324
- if (a.length === 0 || b.length === 0 || a.length !== b.length)
325
- return 0;
326
- let dot = 0;
327
- let normA = 0;
328
- let normB = 0;
329
- for (let i = 0; i < a.length; i++) {
330
- dot += a[i] * b[i];
331
- normA += a[i] * a[i];
332
- normB += b[i] * b[i];
333
- }
334
- const denom = Math.sqrt(normA) * Math.sqrt(normB);
335
- if (denom < 1e-10)
336
- return 0;
337
- // Clamp to [-1, 1] to handle floating point drift
338
- return Math.min(1, Math.max(-1, dot / denom));
339
- }
340
- const EMBEDDINGS_FILE = 'embeddings.json';
341
- /**
342
- * Load the cached embedding index from disk.
343
- * Returns an empty object if the file doesn't exist or is corrupt.
344
- */
345
- export function loadEmbeddingIndex(hippoRoot) {
346
- const fp = path.join(hippoRoot, EMBEDDINGS_FILE);
347
- if (!fs.existsSync(fp))
348
- return {};
349
- try {
350
- // SAFETY: embeddings.json is written exclusively by saveEmbeddingIndex with
351
- // this exact shape; a corrupt or foreign file is caught by the try/catch
352
- // below and treated as an empty index.
353
- return JSON.parse(fs.readFileSync(fp, 'utf8'));
354
- }
355
- catch {
356
- return {};
357
- }
358
- }
359
- /**
360
- * Save the embedding index to disk.
361
- */
362
- export function saveEmbeddingIndex(hippoRoot, index) {
363
- const fp = path.join(hippoRoot, EMBEDDINGS_FILE);
364
- const tmp = fp + '.tmp';
365
- fs.writeFileSync(tmp, JSON.stringify(index), 'utf8');
366
- try {
367
- fs.renameSync(tmp, fp);
368
- }
369
- catch (err) {
370
- try {
371
- fs.unlinkSync(tmp);
372
- }
373
- catch { /* best-effort cleanup */ }
374
- throw err;
375
- }
376
- }
377
- // Mutex to serialize embedding writes and prevent read-modify-write races
378
- let _embedWriteLock = Promise.resolve();
379
- async function withEmbedLock(fn) {
380
- let resolve;
381
- const next = new Promise(r => { resolve = r; });
382
- const prev = _embedWriteLock;
383
- _embedWriteLock = next;
384
- await prev;
385
- try {
386
- return await fn();
387
- }
388
- finally {
389
- resolve();
390
- }
391
- }
392
- /**
393
- * Embed a single memory entry and cache the result in the embedding index.
394
- */
395
- export async function embedMemory(hippoRoot, entry, model) {
396
- const provider = resolveEmbeddingProvider(hippoRoot, { model });
397
- if (!provider.isAvailable())
398
- return;
399
- return withEmbedLock(async () => {
400
- // embedMemory is best-effort: an embedding failure (API down / bad key / 5xx)
401
- // must not reject the caller's write — `getEmbedding` historically swallowed
402
- // failures and returned []. The explicit `hippo embed` / `embedAll` path is
403
- // where failures surface. On any failure we leave the existing index as-is.
404
- try {
405
- const identity = provider.id;
406
- const existingIndex = loadEmbeddingIndex(hippoRoot);
407
- if (embeddingModelRequiresReindex(hippoRoot, identity, existingIndex)) {
408
- // L9: host-wide rebuild. The embedding index is keyed by entry.id
409
- // (which is tenant-scoped) but the index itself is one per hippoRoot.
410
- // Cross-tenant content equivalence is visible at the vector level.
411
- // Per-tenant indices would be a larger architecture change.
412
- const entries = loadAllEntries(hippoRoot);
413
- const rebuiltIndex = await rebuildEmbeddingIndex(entries, provider);
414
- saveEmbeddingIndex(hippoRoot, rebuiltIndex);
415
- saveStoredEmbeddingModel(hippoRoot, identity);
416
- resetPhysicsFromIndex(hippoRoot, entries, rebuiltIndex);
417
- return;
418
- }
419
- const text = embeddingInputText(entry);
420
- const [vector] = await provider.embed([text], 'passage');
421
- if (!vector || vector.length === 0)
422
- return;
423
- const index = existingIndex;
424
- index[entry.id] = vector;
425
- saveEmbeddingIndex(hippoRoot, index);
426
- saveStoredEmbeddingModel(hippoRoot, identity);
427
- // Initialize physics state for this memory
428
- try {
429
- const db = openHippoDb(hippoRoot);
430
- try {
431
- const existing = loadPhysicsState(db, [entry.id]);
432
- if (!existing.has(entry.id)) {
433
- const particle = initializeParticle(entry, vector);
434
- savePhysicsState(db, [particle]);
435
- }
436
- }
437
- finally {
438
- closeHippoDb(db);
439
- }
440
- }
441
- catch {
442
- // Physics init is best-effort — don't break embedding
443
- }
444
- }
445
- catch {
446
- // Provider failure (API down / bad key). Best-effort: leave the index as-is.
447
- }
448
- });
449
- }
450
- /**
451
- * Embed all entries in hippoRoot that don't already have cached vectors.
452
- * Prunes orphaned embeddings for memories that no longer exist.
453
- * Returns the count of newly embedded entries.
454
- */
455
- export async function embedAll(hippoRoot, model) {
456
- const provider = resolveEmbeddingProvider(hippoRoot, { model });
457
- if (!provider.isAvailable()) {
458
- // A configured (non-disabled) API provider with a missing key is a
459
- // misconfiguration, not a no-op: surface it so programmatic callers of the
460
- // exported embedAll() learn nothing was written. Local-not-installed and an
461
- // explicit enabled=false stay silent no-ops (best-effort / intentional).
462
- const cfg = loadConfig(hippoRoot).embeddings;
463
- if (provider.kind !== 'local' &&
464
- cfg.enabled !== false &&
465
- provider.keyEnv &&
466
- !process.env[provider.keyEnv]?.trim()) {
467
- throw new Error(`Embedding provider '${provider.kind}' is configured but ${provider.keyEnv} is not set.`);
468
- }
469
- return 0;
470
- }
471
- return withEmbedLock(async () => {
472
- const identity = provider.id;
473
- // L9: host-wide by design. embedAll backfills vectors for all tenants'
474
- // entries into the per-host embedding index. Per-tenant filtering would
475
- // produce partial indices and break recall.
476
- const entries = loadAllEntries(hippoRoot);
477
- const index = loadEmbeddingIndex(hippoRoot);
478
- if (embeddingModelRequiresReindex(hippoRoot, identity, index)) {
479
- const rebuiltIndex = await rebuildEmbeddingIndex(entries, provider);
480
- saveEmbeddingIndex(hippoRoot, rebuiltIndex);
481
- saveStoredEmbeddingModel(hippoRoot, identity);
482
- resetPhysicsFromIndex(hippoRoot, entries, rebuiltIndex);
483
- return Object.keys(rebuiltIndex).length;
484
- }
485
- let dirty = false;
486
- // Prune orphaned embeddings for deleted memories
487
- const activeIds = new Set(entries.map((e) => e.id));
488
- for (const id of Object.keys(index)) {
489
- if (!activeIds.has(id)) {
490
- delete index[id];
491
- dirty = true;
492
- }
493
- }
494
- // Embed entries without a cached vector in save-checkpointed chunks.
495
- // provider.embed batches internally (one HTTP request per batchSize for API
496
- // providers; sequential for local). A `[]` row means that single item could
497
- // not be embedded and is left for a later run (resumable). On a hard provider
498
- // failure mid-backfill we persist the chunks already embedded this run rather
499
- // than discarding paid progress, then stop and resume on the next run.
500
- const pending = entries.filter((e) => !index[e.id]);
501
- let count = 0;
502
- // Initialized to `undefined` (not a known-evidence literal like `null`) so
503
- // it stays a plain `unknown` binding for the arbitrary caught value below;
504
- // falsy either way, so `if (backfillError)` behaves identically.
505
- let backfillError = undefined;
506
- const SAVE_CHUNK = 64;
507
- for (let i = 0; i < pending.length; i += SAVE_CHUNK) {
508
- const chunk = pending.slice(i, i + SAVE_CHUNK);
509
- let vectors;
510
- try {
511
- vectors = await provider.embed(chunk.map((e) => embeddingInputText(e)), 'passage');
512
- }
513
- catch (err) {
514
- // Preserve the chunks already saved this run, then surface the failure
515
- // below so the explicit `hippo embed` path never reports a false success.
516
- backfillError = err;
517
- break;
518
- }
519
- let chunkDirty = false;
520
- for (let j = 0; j < chunk.length; j++) {
521
- const vec = vectors[j];
522
- if (vec && vec.length > 0) {
523
- index[chunk[j].id] = vec;
524
- count++;
525
- dirty = true;
526
- chunkDirty = true;
527
- }
528
- }
529
- if (chunkDirty)
530
- saveEmbeddingIndex(hippoRoot, index);
531
- }
532
- if (dirty) {
533
- saveEmbeddingIndex(hippoRoot, index);
534
- }
535
- saveStoredEmbeddingModel(hippoRoot, identity);
536
- // Partial progress is now persisted; surface a hard backfill failure so the
537
- // explicit embed path reports it (best-effort callers go via embedMemory).
538
- if (backfillError)
539
- throw backfillError;
540
- return count;
541
- });
542
- }
543
- //# sourceMappingURL=embeddings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/embeddings.ts"],"names":[],"mappings":"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"}