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,502 +0,0 @@
1
- /**
2
- * Cross-agent shared memory for Hippo.
3
- * Global store is shared across all projects.
4
- * Resolution: $HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo/
5
- * Local .hippo/ stores are per-project.
6
- */
7
- import * as fs from 'fs';
8
- import * as path from 'path';
9
- import { generateId } from './memory.js';
10
- import { initStore, loadAllEntries, loadIndex, loadSearchEntries, loadRecallSearchEntries, writeEntry, readEntry, } from './store.js';
11
- import { passesScopeFilterForRecall, passesCliRecallScopeFilter } from './recall-scope.js';
12
- import { search, hybridSearch } from './search.js';
13
- import { evalNow } from './ablation.js';
14
- import { deriveOriginProject, classifyOriginProject, resolveGlobalRootDir } from './project-identity.js';
15
- import { detectSecret } from './secret-detect.js';
16
- import { RejectedValueError } from './rejection.js';
17
- import { embedMemory, embedAll } from './embeddings.js';
18
- /**
19
- * Returns the path to the global Hippo store.
20
- * Resolution order: $HIPPO_HOME > $XDG_DATA_HOME/hippo > ~/.hippo/
21
- */
22
- export function getGlobalRoot() {
23
- // Single source of truth lives in project-identity.ts (leaf) so db.ts
24
- // migrations can resolve the same path without a shared.ts import cycle.
25
- return resolveGlobalRootDir();
26
- }
27
- /**
28
- * Ensure the global store exists.
29
- */
30
- export function initGlobal() {
31
- const globalRoot = getGlobalRoot();
32
- if (!fs.existsSync(globalRoot)) {
33
- initStore(globalRoot);
34
- }
35
- else {
36
- // Ensure subdirectories exist in case partially initialized
37
- initStore(globalRoot);
38
- }
39
- }
40
- /**
41
- * Copy a local memory entry to the global store.
42
- * Assigns a new ID (prefixed with 'g_') to avoid collisions.
43
- * Returns the new global entry.
44
- */
45
- export function promoteToGlobal(localRoot, id, opts) {
46
- const entry = readEntry(localRoot, id, opts?.tenantId);
47
- if (!entry)
48
- throw new Error(`Memory not found: ${id}`);
49
- // v39 S4 producer veto: promote is a producer path to the global store
50
- // exactly like shareMemory - same hard rule (codex gating review P2).
51
- const promoteSecret = detectSecret(entry);
52
- if (promoteSecret.flagged) {
53
- throw new Error(`Refusing to promote ${id} to the global store: content matches secret material (${promoteSecret.reason}). ` +
54
- `Secrets stay in their owning project's store.`);
55
- }
56
- initGlobal();
57
- const globalRoot = getGlobalRoot();
58
- // Mint a new ID for the global store. origin_project rides along from the
59
- // local entry's write-time stamp via the spread; back-stop it for pre-v39
60
- // local rows so a promoted copy never lands NULL in the global store.
61
- const globalEntry = {
62
- ...entry,
63
- id: generateId('g'),
64
- source: `promoted:${localRoot}`,
65
- origin_project: entry.origin_project ?? deriveOriginProject(path.dirname(path.resolve(localRoot))),
66
- };
67
- writeEntry(globalRoot, globalEntry, { actor: opts?.actor });
68
- // Fire-and-forget: embedMemory's own availability gate (embeddings.ts:438)
69
- // already no-ops when embeddings are unavailable/disabled, so a pre-guard
70
- // here would be redundant (capture.ts:598 pre-guards instead; both
71
- // contracts are correct, see docs/plans/2026-07-18-global-row-embeddings.md).
72
- void embedMemory(globalRoot, globalEntry).catch(() => { });
73
- return globalEntry;
74
- }
75
- /**
76
- * Search across both local and global stores, merging results.
77
- * Local results are boosted by 1.2x to prefer project-specific context.
78
- * Returns results sorted by adjusted score, within combined token budget.
79
- */
80
- export function searchBoth(query, localRoot, globalRoot, options = {}) {
81
- const { budget = 4000, now = evalNow(), minResults, tenantId } = options;
82
- const effectiveMin = minResults ?? 1;
83
- const localEntries = fs.existsSync(localRoot) ? loadSearchEntries(localRoot, query, undefined, tenantId) : [];
84
- const globalEntries = fs.existsSync(globalRoot) ? loadSearchEntries(globalRoot, query, undefined, tenantId) : [];
85
- if (localEntries.length === 0 && globalEntries.length === 0)
86
- return [];
87
- // Search each store with full budget, then blend
88
- const localResults = search(query, localEntries, { budget, now, minResults });
89
- const globalResults = search(query, globalEntries, { budget, now, minResults });
90
- // Tag global results. Local memories get a configurable priority bump.
91
- const syncLocalBump = 1.2;
92
- const tagged = [
93
- ...localResults.map((r) => ({
94
- ...r,
95
- isGlobal: false,
96
- score: r.score * syncLocalBump,
97
- breakdown: r.breakdown
98
- ? { ...r.breakdown, sourceBump: syncLocalBump, final: r.breakdown.final * syncLocalBump }
99
- : undefined,
100
- })),
101
- ...globalResults.map((r) => ({ ...r, isGlobal: true })),
102
- ];
103
- // Remove duplicates by content (local/global IDs differ after promote/share)
104
- const seen = new Set();
105
- const deduped = tagged.filter((r) => {
106
- const key = r.entry.content.slice(0, 200).toLowerCase();
107
- if (seen.has(key))
108
- return false;
109
- seen.add(key);
110
- return true;
111
- });
112
- // T2 note: PLAIN stable score sort on purpose -- local/global inputs are
113
- // each deterministically ordered (content tail applied in the underlying
114
- // search), stability inherits that, and an exact post-bump tie keeps the
115
- // LOCAL result ahead of the global one (the concat order), preserving the
116
- // pre-T2 semantics.
117
- deduped.sort((a, b) => b.score - a.score);
118
- // Apply combined token budget (guarantee at least minResults items)
119
- const results = [];
120
- let usedTokens = 0;
121
- for (let i = 0; i < deduped.length; i++) {
122
- if (results.length >= effectiveMin && usedTokens + deduped[i].tokens > budget)
123
- continue;
124
- usedTokens += deduped[i].tokens;
125
- results.push(deduped[i]);
126
- }
127
- return results;
128
- }
129
- /**
130
- * Hybrid search across both local and global stores, using embeddings when available.
131
- * Async version of searchBoth that calls hybridSearch instead of search.
132
- */
133
- export async function searchBothHybrid(query, localRoot, globalRoot, options = {}) {
134
- const { budget = 4000, now = evalNow(), embeddingWeight, explain, mmr, mmrLambda, localBump = 1.2, minResults, scope, includeSuperseded, asOf, tenantId, summaryDeboost, summaryFreshness, entryFilter, recallScope } = options;
135
- // When an admission filter is active, lift the per-store candidate cap
136
- // (default 200): excluded rows matching the query could otherwise fill the
137
- // window before any admitted row is even loaded (codex gating round 6).
138
- // Only ambient-context query mode sets entryFilter, and that path is
139
- // interactive - never the per-turn pinned-only hook - so ranking the full
140
- // match set is acceptable.
141
- // 5000 = 25x the default 200-row window: large enough that exclusion
142
- // crowding is a non-issue on real stores, bounded so a common query term
143
- // on a 100k-row store cannot stall an interactive call by ranking every
144
- // match (post-merge adversarial review, 2026-07-02).
145
- const searchWindow = entryFilter ? 5000 : undefined;
146
- // v1.25.0 recall mode: push the scope predicate into SQL exactly like
147
- // api.recall (loadRecallSearchEntries), so quarantine/private rows never
148
- // enter the candidate set, never shadow admitted duplicates in the dedupe
149
- // pass, and never consume budget. The JS post-filter below is the
150
- // regex-only `<source>:private:*` half plus defense-in-depth on exact
151
- // match, mirroring api.ts's recall load.
152
- const loadEntries = (root) => {
153
- if (!fs.existsSync(root))
154
- return [];
155
- return recallScope
156
- ? loadRecallSearchEntries(root, query, searchWindow, tenantId, recallScope.requested, recallScope.additive ? 'additive' : 'exact')
157
- : loadSearchEntries(root, query, searchWindow, tenantId);
158
- };
159
- let localEntries = loadEntries(localRoot);
160
- let globalEntries = loadEntries(globalRoot);
161
- if (recallScope) {
162
- const passes = (e) => recallScope.additive
163
- ? passesCliRecallScopeFilter(e.scope ?? null, recallScope.requested)
164
- : passesScopeFilterForRecall(e.scope ?? null, recallScope.requested);
165
- localEntries = localEntries.filter(passes);
166
- globalEntries = globalEntries.filter(passes);
167
- }
168
- if (entryFilter) {
169
- localEntries = localEntries.filter(entryFilter);
170
- globalEntries = globalEntries.filter(entryFilter);
171
- }
172
- if (localEntries.length === 0 && globalEntries.length === 0)
173
- return [];
174
- const localResults = await hybridSearch(query, localEntries, {
175
- budget, now, hippoRoot: localRoot, embeddingWeight, explain, mmr, mmrLambda, minResults, scope, includeSuperseded, asOf, summaryDeboost, summaryFreshness,
176
- });
177
- const globalResults = await hybridSearch(query, globalEntries, {
178
- budget, now, hippoRoot: globalRoot, embeddingWeight, explain, mmr, mmrLambda, minResults, scope, includeSuperseded, asOf, summaryDeboost, summaryFreshness,
179
- });
180
- // Tag global results. Local memories get a configurable priority bump.
181
- const tagged = [
182
- ...localResults.map((r) => ({
183
- ...r,
184
- isGlobal: false,
185
- score: r.score * localBump,
186
- breakdown: r.breakdown
187
- ? { ...r.breakdown, sourceBump: localBump, final: r.breakdown.final * localBump }
188
- : undefined,
189
- })),
190
- ...globalResults.map((r) => ({ ...r, isGlobal: true })),
191
- ];
192
- // Remove duplicates by content (local/global IDs differ after promote/share)
193
- const seen = new Set();
194
- const deduped = tagged.filter((r) => {
195
- const key = r.entry.content.slice(0, 200).toLowerCase();
196
- if (seen.has(key))
197
- return false;
198
- seen.add(key);
199
- return true;
200
- });
201
- // T2 note: PLAIN stable score sort on purpose -- see searchBoth above;
202
- // same rationale (deterministic inputs + stability; local-first on ties).
203
- deduped.sort((a, b) => b.score - a.score);
204
- // Apply combined token budget (guarantee at least minResults items)
205
- const effectiveMinHybrid = minResults ?? 1;
206
- const results = [];
207
- let usedTokens = 0;
208
- for (let i = 0; i < deduped.length; i++) {
209
- if (results.length >= effectiveMinHybrid && usedTokens + deduped[i].tokens > budget)
210
- continue;
211
- usedTokens += deduped[i].tokens;
212
- results.push(deduped[i]);
213
- }
214
- return results;
215
- }
216
- // ---------------------------------------------------------------------------
217
- // Multi-agent shared memory
218
- // ---------------------------------------------------------------------------
219
- /** Tags that indicate project-specific memories (poor transfer candidates) */
220
- const PROJECT_SPECIFIC_TAGS = new Set([
221
- 'file-path', 'config', 'deploy', 'cron', 'url', 'auth',
222
- 'field-names', 'column-names', 'api-key', 'endpoint',
223
- ]);
224
- /** Tags that indicate transferable memories (good transfer candidates) */
225
- const TRANSFERABLE_TAGS = new Set([
226
- 'error', 'platform', 'windows', 'encoding', 'python', 'shell',
227
- 'powershell', 'quant', 'backtest', 'pattern', 'rule', 'gotcha',
228
- 'sub-agent', 'review', 'best-practice',
229
- ]);
230
- /**
231
- * Estimate how well a memory would transfer to other projects.
232
- * Returns 0..1 where >0.5 = good candidate for sharing.
233
- */
234
- export function transferScore(entry) {
235
- let score = 0.5; // neutral default
236
- // Boost for transferable tags
237
- const transferableCount = entry.tags.filter((t) => TRANSFERABLE_TAGS.has(t)).length;
238
- score += transferableCount * 0.1;
239
- // Penalize for project-specific tags
240
- const specificCount = entry.tags.filter((t) => PROJECT_SPECIFIC_TAGS.has(t)).length;
241
- score -= specificCount * 0.15;
242
- // High-retrieval memories are more likely to be universally useful
243
- if (entry.retrieval_count >= 3)
244
- score += 0.1;
245
- // Pinned memories are important to their owner
246
- if (entry.pinned)
247
- score += 0.1;
248
- // Error-tagged memories often encode universal lessons
249
- if (entry.emotional_valence === 'negative' || entry.emotional_valence === 'critical')
250
- score += 0.05;
251
- return Math.min(1, Math.max(0, score));
252
- }
253
- /**
254
- * Share a memory to the global store with attribution.
255
- * Enriches the source field with project path and timestamp.
256
- * Returns the new global entry, or null if transfer score is too low.
257
- */
258
- export function shareMemory(localRoot, id, options = {}) {
259
- // tenantId is OPTIONAL for backward compat — autoShare's internal call at
260
- // :370 passes only `{ force: true }` in a single-tenant context. MCP/REST
261
- // hosts MUST pass tenantId so a Bearer for tenant A cannot share tenant
262
- // B's memory to global. readEntry returns null on cross-tenant lookups
263
- // when tenantId is provided.
264
- const entry = readEntry(localRoot, id, options.tenantId);
265
- if (!entry)
266
- throw new Error(`Memory not found: ${id}`);
267
- // v39 S4 producer veto: secrets never go to the global store, not even
268
- // with --force. Explicit and loud - a silent null would read as "low
269
- // transfer score" and invite retries.
270
- const secret = detectSecret(entry);
271
- if (secret.flagged) {
272
- throw new Error(`Refusing to share ${id} to the global store: content matches secret material (${secret.reason}). ` +
273
- `Secrets stay in their owning project's store.`);
274
- }
275
- const score = transferScore(entry);
276
- if (score < 0.3 && !options.force)
277
- return null;
278
- initGlobal();
279
- const globalRoot = getGlobalRoot();
280
- // v39: canonical origin comes from the entry's own stamp (write-time,
281
- // store-location-derived); the localRoot parent basename is only a
282
- // fallback for pre-v39 rows and keeps the legacy source format intact.
283
- const fallbackName = path.basename(path.resolve(localRoot, '..'));
284
- const originName = entry.origin_project ?? deriveOriginProject(path.dirname(path.resolve(localRoot)));
285
- const globalEntry = {
286
- ...entry,
287
- id: generateId('g'),
288
- source: `shared:${originName === '' ? fallbackName : originName}:${new Date().toISOString()}`,
289
- origin_project: originName,
290
- };
291
- writeEntry(globalRoot, globalEntry);
292
- // Single-row producer: embed here unless the caller opts out. autoShare
293
- // sets skipEmbed so it can batch its whole run through one embedAll() at
294
- // the end instead of N serialized full-index rewrites (embedMemory rewrites
295
- // the whole index JSON per call). Same redundant-pre-guard reasoning as
296
- // promoteToGlobal above.
297
- if (!options.skipEmbed) {
298
- void embedMemory(globalRoot, globalEntry).catch(() => { });
299
- }
300
- return globalEntry;
301
- }
302
- /**
303
- * List all projects that have contributed memories to the global store.
304
- * Parses the source field for 'shared:<project>:' or 'promoted:<path>' patterns.
305
- *
306
- * D4 v1.12.10: `tenantId` is now optional. When provided, the global entries
307
- * are filtered to that tenant before aggregation — matches every other
308
- * read path's default-safe behaviour. When undefined, host-wide (back-compat
309
- * for legacy callers like CLI standalone + dashboard internal use). Operators
310
- * who genuinely want cross-tenant peer discovery can pass undefined or
311
- * use direct SQL.
312
- */
313
- export function listPeers(globalRoot, tenantId) {
314
- const root = globalRoot ?? getGlobalRoot();
315
- if (!fs.existsSync(root))
316
- return [];
317
- // D4: tenant-scoped by default when tenantId provided. Host-wide when
318
- // undefined (preserves back-compat).
319
- const allEntries = loadAllEntries(root);
320
- const entries = tenantId !== undefined
321
- ? allEntries.filter((e) => e.tenantId === tenantId)
322
- : allEntries;
323
- const peerMap = new Map();
324
- for (const entry of entries) {
325
- let project = 'unknown';
326
- if (entry.source.startsWith('shared:')) {
327
- const parts = entry.source.split(':');
328
- project = parts[1] || 'unknown';
329
- }
330
- else if (entry.source.startsWith('promoted:')) {
331
- const promotedPath = entry.source.slice('promoted:'.length);
332
- project = path.basename(path.resolve(promotedPath, '..'));
333
- }
334
- else if (entry.source === 'cli-global') {
335
- project = 'global-cli';
336
- }
337
- const existing = peerMap.get(project);
338
- if (!existing) {
339
- peerMap.set(project, { count: 1, latest: entry.created });
340
- }
341
- else {
342
- existing.count++;
343
- if (entry.created > existing.latest)
344
- existing.latest = entry.created;
345
- }
346
- }
347
- return Array.from(peerMap.entries())
348
- .map(([project, data]) => ({ project, ...data }))
349
- .sort((a, b) => b.count - a.count);
350
- }
351
- /**
352
- * Auto-share: find local memories with high transfer scores that aren't already global.
353
- * Returns the list of shared entries.
354
- *
355
- * L9: `options.tenantId` is opt-in. When provided, the LOCAL-entries read is
356
- * scoped to that tenant. When undefined, the local read is host-wide (current
357
- * behaviour). The GLOBAL-entries read is always unioned — the global root IS
358
- * the cross-tenant aggregate by design. The only intentional unscoped
359
- * internal caller as of v1.12.1 is `api.sleep` (`src/api.ts:2041`), which
360
- * passes options without tenantId because `sleep` is host-wide by intent;
361
- * see `src/api.ts:2073-2077` for the cross-tenant dedup rationale.
362
- *
363
- * v1.25.0: `options.stats` is an opt-in out-param. When provided,
364
- * `stats.secretSkipped` is incremented once per row that passed every OTHER
365
- * admission gate (transfer score, not-already-global) and was withheld SOLELY
366
- * by the secret veto — i.e. it counts shares actually prevented, not secret
367
- * rows merely present. Filled identically under `dryRun`.
368
- *
369
- * AT1: `stats.rejectedSkipped` (optional) is incremented once per candidate
370
- * refused by the GLOBAL store's rejection tombstone (RejectedValueError from
371
- * shareMemory -> writeEntry). Unlike secretSkipped, this can only be
372
- * detected by attempting the write — `dryRun` returns candidates before the
373
- * write loop runs, so `rejectedSkipped` stays at its initial value under
374
- * `dryRun` (candidates that WOULD be refused are not distinguished in the
375
- * dry-run preview).
376
- */
377
- export function autoShare(localRoot, options = {}) {
378
- const { minScore = 0.6, dryRun = false } = options;
379
- const localEntries = loadAllEntries(localRoot, options.tenantId);
380
- initGlobal();
381
- const globalRoot = getGlobalRoot();
382
- // L9: host-wide read. The global store IS the union across all tenants;
383
- // per-tenant filtering on the global root would defeat the purpose.
384
- const globalEntries = loadAllEntries(globalRoot);
385
- // Build set of global content hashes to avoid duplicates
386
- const globalContentSet = new Set(globalEntries.map((e) => e.content.toLowerCase().trim().slice(0, 200)));
387
- const candidates = localEntries.filter((entry) => {
388
- const score = transferScore(entry);
389
- if (score < minScore)
390
- return false;
391
- // Skip if already shared (approximate content match)
392
- const contentKey = entry.content.toLowerCase().trim().slice(0, 200);
393
- if (globalContentSet.has(contentKey))
394
- return false;
395
- // v39 S4 producer veto: secret rows never auto-share, regardless of
396
- // transfer score. (shareMemory would throw; filtering here keeps the
397
- // sleep pipeline fail-safe.) Checked LAST (v1.25.0) so the stats counter
398
- // only counts rows the veto actually withheld — a row failing the score
399
- // or dedupe gates was never going to share, secret or not.
400
- if (detectSecret(entry).flagged) {
401
- if (options.stats)
402
- options.stats.secretSkipped++;
403
- return false;
404
- }
405
- return true;
406
- });
407
- if (dryRun)
408
- return candidates;
409
- const shared = [];
410
- // AT1 containment (docs/plans/2026-08-15-at1-rejected-value-tombstone.md
411
- // plan §3 — sync/promote/share copy paths must not let ONE rejected
412
- // candidate kill the batch): shareMemory -> writeEntry hits the LIVE guard
413
- // against the GLOBAL store's tombstones. A matching candidate throws
414
- // RejectedValueError, which (uncaught) would abort this whole loop and,
415
- // via api.ts's sleep pipeline, the entire autoShare sleep phase. Mirrors
416
- // syncGlobalToLocal's per-item catch just above in this file. writeEntry's
417
- // own catch already writes the reject_refusal audit before rethrowing
418
- // (plan §3) — do not double-audit here, just count and continue.
419
- let rejectedSkipped = 0;
420
- for (const entry of candidates) {
421
- try {
422
- // skipEmbed: batching invariant, this is a batch producer, so it embeds
423
- // once via embedAll() below rather than once per row inside shareMemory.
424
- const result = shareMemory(localRoot, entry.id, { force: true, skipEmbed: true });
425
- if (result)
426
- shared.push(result);
427
- }
428
- catch (err) {
429
- if (err instanceof RejectedValueError) {
430
- rejectedSkipped++;
431
- if (options.stats)
432
- options.stats.rejectedSkipped = (options.stats.rejectedSkipped ?? 0) + 1;
433
- continue;
434
- }
435
- throw err;
436
- }
437
- }
438
- if (rejectedSkipped > 0) {
439
- console.error(`autoShare: skipped ${rejectedSkipped} candidate(s) refused by the global store's rejection tombstone`);
440
- }
441
- if (shared.length > 0) {
442
- void embedAll(globalRoot).catch(() => { });
443
- }
444
- return shared;
445
- }
446
- /**
447
- * Copy all global memories into the local store.
448
- * Skips entries that already exist locally (by ID or by near-identical content).
449
- * Returns the count of newly copied entries.
450
- */
451
- export function syncGlobalToLocal(localRoot, globalRoot, opts = {}) {
452
- if (!fs.existsSync(globalRoot))
453
- return 0;
454
- // L9: host-wide read. syncGlobalToLocal copies the global union into a
455
- // tenant-scoped local store; writeEntry on each row carries the tenant if
456
- // the local-root context provides one.
457
- const globalEntries = loadAllEntries(globalRoot);
458
- const localIndex = loadIndex(localRoot);
459
- // v39 (codex P1-4): syncing down must not re-import what ambient context
460
- // excludes - other-project rows are skipped by default and secret rows
461
- // are never copied. origin_project is preserved on the copy (writeEntry
462
- // only stamps when the field is missing).
463
- const currentName = deriveOriginProject(path.dirname(path.resolve(localRoot)));
464
- let count = 0;
465
- // AT1 (plan §3 containment, the roadmap threat this whole feature targets
466
- // — a locally-rejected value must not silently resurrect via sync down
467
- // from global): per-item catch, no signature change (bare number return;
468
- // see the syncGlobalToLocal callers in cli.ts + tests). Counted locally
469
- // and printed as one summary line, same pattern as learnFromMemoryMd.
470
- let rejected = 0;
471
- for (const entry of globalEntries) {
472
- // Skip if already present by ID
473
- if (localIndex.entries[entry.id])
474
- continue;
475
- if (detectSecret(entry).flagged)
476
- continue;
477
- if (!opts.includeCrossProject &&
478
- classifyOriginProject(entry.origin_project, currentName) === 'cross-project')
479
- continue;
480
- try {
481
- writeEntry(localRoot, entry);
482
- }
483
- catch (err) {
484
- if (err instanceof RejectedValueError) {
485
- rejected++;
486
- continue;
487
- }
488
- throw err;
489
- }
490
- count++;
491
- }
492
- if (rejected > 0) {
493
- console.error(`syncGlobalToLocal: skipped ${rejected} rejected value(s) (run \`hippo unreject\` on the local store to allow).`);
494
- }
495
- // Batch producer: one embedAll() on the destination rather than an
496
- // embedMemory() per copied row (same batching invariant as autoShare).
497
- if (count > 0) {
498
- void embedAll(localRoot).catch(() => { });
499
- }
500
- return count;
501
- }
502
- //# sourceMappingURL=shared.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/shared.ts"],"names":[],"mappings":"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"}