hippo-memory 1.44.0 → 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 (528) hide show
  1. package/README.md +12 -10
  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.d.ts +1 -1
  6. package/dist/audit.js +9 -0
  7. package/dist/autolearn.d.ts +1 -1
  8. package/dist/autolearn.js +2 -1
  9. package/dist/cli.d.ts +3 -0
  10. package/dist/cli.js +151 -72
  11. package/dist/client.d.ts +4 -21
  12. package/dist/client.js +3 -112
  13. package/dist/config.js +2 -1
  14. package/dist/consolidate.d.ts +3 -0
  15. package/dist/consolidate.js +44 -42
  16. package/dist/dag.d.ts +1 -0
  17. package/dist/dag.js +10 -5
  18. package/dist/dashboard.js +7 -3
  19. package/dist/db.js +12 -23
  20. package/dist/dedupe.d.ts +1 -0
  21. package/dist/dedupe.js +4 -7
  22. package/dist/embedding-provider.js +2 -1
  23. package/dist/embeddings.js +81 -8
  24. package/dist/extract.d.ts +2 -0
  25. package/dist/extract.js +9 -4
  26. package/dist/mcp/server.js +21 -36
  27. package/dist/memory.d.ts +3 -0
  28. package/dist/memory.js +7 -1
  29. package/dist/refine-llm.js +3 -2
  30. package/dist/rerankers/jev.js +3 -2
  31. package/dist/rerankers/llm.js +3 -2
  32. package/dist/search.js +3 -3
  33. package/dist/server.d.ts +5 -0
  34. package/dist/server.js +39 -29
  35. package/dist/shared.js +1 -1
  36. package/dist/store.d.ts +18 -11
  37. package/dist/store.js +144 -63
  38. package/dist/version.d.ts +4 -6
  39. package/dist/version.js +4 -7
  40. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  41. package/extensions/openclaw-plugin/package.json +1 -1
  42. package/openclaw.plugin.json +1 -1
  43. package/package.json +6 -3
  44. package/dist/ablation.d.ts.map +0 -1
  45. package/dist/ablation.js.map +0 -1
  46. package/dist/ambient.d.ts.map +0 -1
  47. package/dist/ambient.js.map +0 -1
  48. package/dist/api.d.ts.map +0 -1
  49. package/dist/api.js.map +0 -1
  50. package/dist/audit-prune.d.ts.map +0 -1
  51. package/dist/audit-prune.js.map +0 -1
  52. package/dist/audit.d.ts.map +0 -1
  53. package/dist/audit.js.map +0 -1
  54. package/dist/auth.d.ts.map +0 -1
  55. package/dist/auth.js.map +0 -1
  56. package/dist/autolearn.d.ts.map +0 -1
  57. package/dist/autolearn.js.map +0 -1
  58. package/dist/availability.d.ts.map +0 -1
  59. package/dist/availability.js.map +0 -1
  60. package/dist/benchmarks/e1.3/incident-recall-eval.js +0 -78
  61. package/dist/benchmarks/e1.3/incident-recall-eval.js.map +0 -1
  62. package/dist/benchmarks/e1.3/slack-1000-event-smoke.js +0 -103
  63. package/dist/benchmarks/e1.3/slack-1000-event-smoke.js.map +0 -1
  64. package/dist/capture.d.ts.map +0 -1
  65. package/dist/capture.js.map +0 -1
  66. package/dist/card-detail.d.ts.map +0 -1
  67. package/dist/card-detail.js.map +0 -1
  68. package/dist/card.d.ts.map +0 -1
  69. package/dist/card.js.map +0 -1
  70. package/dist/cli.d.ts.map +0 -1
  71. package/dist/cli.js.map +0 -1
  72. package/dist/client.d.ts.map +0 -1
  73. package/dist/client.js.map +0 -1
  74. package/dist/compare.d.ts.map +0 -1
  75. package/dist/compare.js.map +0 -1
  76. package/dist/config.d.ts.map +0 -1
  77. package/dist/config.js.map +0 -1
  78. package/dist/connectors/github/backfill.d.ts.map +0 -1
  79. package/dist/connectors/github/backfill.js.map +0 -1
  80. package/dist/connectors/github/cli-impl.d.ts.map +0 -1
  81. package/dist/connectors/github/cli-impl.js.map +0 -1
  82. package/dist/connectors/github/deletion.d.ts.map +0 -1
  83. package/dist/connectors/github/deletion.js.map +0 -1
  84. package/dist/connectors/github/dlq.d.ts.map +0 -1
  85. package/dist/connectors/github/dlq.js.map +0 -1
  86. package/dist/connectors/github/idempotency.d.ts.map +0 -1
  87. package/dist/connectors/github/idempotency.js.map +0 -1
  88. package/dist/connectors/github/ingest.d.ts.map +0 -1
  89. package/dist/connectors/github/ingest.js.map +0 -1
  90. package/dist/connectors/github/octokit-client.d.ts.map +0 -1
  91. package/dist/connectors/github/octokit-client.js.map +0 -1
  92. package/dist/connectors/github/ratelimit.d.ts.map +0 -1
  93. package/dist/connectors/github/ratelimit.js.map +0 -1
  94. package/dist/connectors/github/scope.d.ts.map +0 -1
  95. package/dist/connectors/github/scope.js.map +0 -1
  96. package/dist/connectors/github/signature.d.ts.map +0 -1
  97. package/dist/connectors/github/signature.js.map +0 -1
  98. package/dist/connectors/github/tenant-routing.d.ts.map +0 -1
  99. package/dist/connectors/github/tenant-routing.js.map +0 -1
  100. package/dist/connectors/github/transform.d.ts.map +0 -1
  101. package/dist/connectors/github/transform.js.map +0 -1
  102. package/dist/connectors/github/types.d.ts.map +0 -1
  103. package/dist/connectors/github/types.js.map +0 -1
  104. package/dist/connectors/slack/backfill.d.ts.map +0 -1
  105. package/dist/connectors/slack/backfill.js.map +0 -1
  106. package/dist/connectors/slack/deletion.d.ts.map +0 -1
  107. package/dist/connectors/slack/deletion.js.map +0 -1
  108. package/dist/connectors/slack/dlq.d.ts.map +0 -1
  109. package/dist/connectors/slack/dlq.js.map +0 -1
  110. package/dist/connectors/slack/idempotency.d.ts.map +0 -1
  111. package/dist/connectors/slack/idempotency.js.map +0 -1
  112. package/dist/connectors/slack/ingest.d.ts.map +0 -1
  113. package/dist/connectors/slack/ingest.js.map +0 -1
  114. package/dist/connectors/slack/ratelimit.d.ts.map +0 -1
  115. package/dist/connectors/slack/ratelimit.js.map +0 -1
  116. package/dist/connectors/slack/scope.d.ts.map +0 -1
  117. package/dist/connectors/slack/scope.js.map +0 -1
  118. package/dist/connectors/slack/signature.d.ts.map +0 -1
  119. package/dist/connectors/slack/signature.js.map +0 -1
  120. package/dist/connectors/slack/tenant-routing.d.ts.map +0 -1
  121. package/dist/connectors/slack/tenant-routing.js.map +0 -1
  122. package/dist/connectors/slack/transform.d.ts.map +0 -1
  123. package/dist/connectors/slack/transform.js.map +0 -1
  124. package/dist/connectors/slack/types.d.ts.map +0 -1
  125. package/dist/connectors/slack/types.js.map +0 -1
  126. package/dist/connectors/slack/web-client.d.ts.map +0 -1
  127. package/dist/connectors/slack/web-client.js.map +0 -1
  128. package/dist/connectors/slack/workspaces.d.ts.map +0 -1
  129. package/dist/connectors/slack/workspaces.js.map +0 -1
  130. package/dist/consolidate.d.ts.map +0 -1
  131. package/dist/consolidate.js.map +0 -1
  132. package/dist/correction-latency.d.ts.map +0 -1
  133. package/dist/correction-latency.js.map +0 -1
  134. package/dist/customer-notes.d.ts.map +0 -1
  135. package/dist/customer-notes.js.map +0 -1
  136. package/dist/dag.d.ts.map +0 -1
  137. package/dist/dag.js.map +0 -1
  138. package/dist/dashboard.d.ts.map +0 -1
  139. package/dist/dashboard.js.map +0 -1
  140. package/dist/db.d.ts.map +0 -1
  141. package/dist/db.js.map +0 -1
  142. package/dist/decisions.d.ts.map +0 -1
  143. package/dist/decisions.js.map +0 -1
  144. package/dist/dedupe.d.ts.map +0 -1
  145. package/dist/dedupe.js.map +0 -1
  146. package/dist/embedding-provider.d.ts.map +0 -1
  147. package/dist/embedding-provider.js.map +0 -1
  148. package/dist/embeddings.d.ts.map +0 -1
  149. package/dist/embeddings.js.map +0 -1
  150. package/dist/eval-suite.d.ts.map +0 -1
  151. package/dist/eval-suite.js.map +0 -1
  152. package/dist/eval.d.ts.map +0 -1
  153. package/dist/eval.js.map +0 -1
  154. package/dist/extensions/openclaw-plugin/index.js.map +0 -1
  155. package/dist/extract.d.ts.map +0 -1
  156. package/dist/extract.js.map +0 -1
  157. package/dist/forward-claim-detector.d.ts.map +0 -1
  158. package/dist/forward-claim-detector.js.map +0 -1
  159. package/dist/goals.d.ts.map +0 -1
  160. package/dist/goals.js.map +0 -1
  161. package/dist/graph-extract.d.ts.map +0 -1
  162. package/dist/graph-extract.js.map +0 -1
  163. package/dist/graph-recall.d.ts.map +0 -1
  164. package/dist/graph-recall.js.map +0 -1
  165. package/dist/graph-stream.d.ts.map +0 -1
  166. package/dist/graph-stream.js.map +0 -1
  167. package/dist/graph-view.d.ts.map +0 -1
  168. package/dist/graph-view.js.map +0 -1
  169. package/dist/graph.d.ts.map +0 -1
  170. package/dist/graph.js.map +0 -1
  171. package/dist/handoff.d.ts.map +0 -1
  172. package/dist/handoff.js.map +0 -1
  173. package/dist/hooks.d.ts.map +0 -1
  174. package/dist/hooks.js.map +0 -1
  175. package/dist/importers.d.ts.map +0 -1
  176. package/dist/importers.js.map +0 -1
  177. package/dist/incidents.d.ts.map +0 -1
  178. package/dist/incidents.js.map +0 -1
  179. package/dist/index.d.ts.map +0 -1
  180. package/dist/index.js.map +0 -1
  181. package/dist/invalidation.d.ts.map +0 -1
  182. package/dist/invalidation.js.map +0 -1
  183. package/dist/mcp/framing.d.ts.map +0 -1
  184. package/dist/mcp/framing.js.map +0 -1
  185. package/dist/mcp/server.d.ts.map +0 -1
  186. package/dist/mcp/server.js.map +0 -1
  187. package/dist/memory-value-weights.d.ts.map +0 -1
  188. package/dist/memory-value-weights.js.map +0 -1
  189. package/dist/memory-value.d.ts.map +0 -1
  190. package/dist/memory-value.js.map +0 -1
  191. package/dist/memory.d.ts.map +0 -1
  192. package/dist/memory.js.map +0 -1
  193. package/dist/multihop.d.ts.map +0 -1
  194. package/dist/multihop.js.map +0 -1
  195. package/dist/owner-validation.d.ts.map +0 -1
  196. package/dist/owner-validation.js.map +0 -1
  197. package/dist/path-context.d.ts.map +0 -1
  198. package/dist/path-context.js.map +0 -1
  199. package/dist/physics-config.d.ts.map +0 -1
  200. package/dist/physics-config.js.map +0 -1
  201. package/dist/physics-state.d.ts.map +0 -1
  202. package/dist/physics-state.js.map +0 -1
  203. package/dist/physics.d.ts.map +0 -1
  204. package/dist/physics.js.map +0 -1
  205. package/dist/policies.d.ts.map +0 -1
  206. package/dist/policies.js.map +0 -1
  207. package/dist/postinstall.d.ts.map +0 -1
  208. package/dist/postinstall.js.map +0 -1
  209. package/dist/predictions.d.ts.map +0 -1
  210. package/dist/predictions.js.map +0 -1
  211. package/dist/processes.d.ts.map +0 -1
  212. package/dist/processes.js.map +0 -1
  213. package/dist/project-briefs.d.ts.map +0 -1
  214. package/dist/project-briefs.js.map +0 -1
  215. package/dist/project-identity.d.ts.map +0 -1
  216. package/dist/project-identity.js.map +0 -1
  217. package/dist/provenance-coverage.d.ts.map +0 -1
  218. package/dist/provenance-coverage.js.map +0 -1
  219. package/dist/rate-limit.d.ts.map +0 -1
  220. package/dist/rate-limit.js.map +0 -1
  221. package/dist/raw-archive-mirror-cleanup.d.ts.map +0 -1
  222. package/dist/raw-archive-mirror-cleanup.js.map +0 -1
  223. package/dist/raw-archive.d.ts.map +0 -1
  224. package/dist/raw-archive.js.map +0 -1
  225. package/dist/recall-history.d.ts.map +0 -1
  226. package/dist/recall-history.js.map +0 -1
  227. package/dist/recall-scope.d.ts.map +0 -1
  228. package/dist/recall-scope.js.map +0 -1
  229. package/dist/recall-trace.d.ts.map +0 -1
  230. package/dist/recall-trace.js.map +0 -1
  231. package/dist/refine-llm.d.ts.map +0 -1
  232. package/dist/refine-llm.js.map +0 -1
  233. package/dist/reject-flow.d.ts.map +0 -1
  234. package/dist/reject-flow.js.map +0 -1
  235. package/dist/rejection.d.ts.map +0 -1
  236. package/dist/rejection.js.map +0 -1
  237. package/dist/replay.d.ts.map +0 -1
  238. package/dist/replay.js.map +0 -1
  239. package/dist/rerankers/cross-encoder.d.ts.map +0 -1
  240. package/dist/rerankers/cross-encoder.js.map +0 -1
  241. package/dist/rerankers/index.d.ts.map +0 -1
  242. package/dist/rerankers/index.js.map +0 -1
  243. package/dist/rerankers/jev.d.ts.map +0 -1
  244. package/dist/rerankers/jev.js.map +0 -1
  245. package/dist/rerankers/llm.d.ts.map +0 -1
  246. package/dist/rerankers/llm.js.map +0 -1
  247. package/dist/rerankers/types.d.ts.map +0 -1
  248. package/dist/rerankers/types.js.map +0 -1
  249. package/dist/rrf.d.ts.map +0 -1
  250. package/dist/rrf.js.map +0 -1
  251. package/dist/salience.d.ts.map +0 -1
  252. package/dist/salience.js.map +0 -1
  253. package/dist/scheduler.d.ts.map +0 -1
  254. package/dist/scheduler.js.map +0 -1
  255. package/dist/scope.d.ts.map +0 -1
  256. package/dist/scope.js.map +0 -1
  257. package/dist/search.d.ts.map +0 -1
  258. package/dist/search.js.map +0 -1
  259. package/dist/secret-detect.d.ts.map +0 -1
  260. package/dist/secret-detect.js.map +0 -1
  261. package/dist/server-detect.d.ts.map +0 -1
  262. package/dist/server-detect.js.map +0 -1
  263. package/dist/server.d.ts.map +0 -1
  264. package/dist/server.js.map +0 -1
  265. package/dist/shared.d.ts.map +0 -1
  266. package/dist/shared.js.map +0 -1
  267. package/dist/skills.d.ts.map +0 -1
  268. package/dist/skills.js.map +0 -1
  269. package/dist/sleep-redact.d.ts +0 -58
  270. package/dist/sleep-redact.d.ts.map +0 -1
  271. package/dist/sleep-redact.js +0 -80
  272. package/dist/sleep-redact.js.map +0 -1
  273. package/dist/src/ablation.js +0 -138
  274. package/dist/src/ablation.js.map +0 -1
  275. package/dist/src/ambient.js +0 -148
  276. package/dist/src/ambient.js.map +0 -1
  277. package/dist/src/api.js +0 -2109
  278. package/dist/src/api.js.map +0 -1
  279. package/dist/src/audit-prune.js +0 -109
  280. package/dist/src/audit-prune.js.map +0 -1
  281. package/dist/src/audit.js +0 -213
  282. package/dist/src/audit.js.map +0 -1
  283. package/dist/src/auth.js +0 -97
  284. package/dist/src/auth.js.map +0 -1
  285. package/dist/src/autolearn.js +0 -174
  286. package/dist/src/autolearn.js.map +0 -1
  287. package/dist/src/availability.js +0 -94
  288. package/dist/src/availability.js.map +0 -1
  289. package/dist/src/capture.js +0 -1346
  290. package/dist/src/capture.js.map +0 -1
  291. package/dist/src/card-detail.js +0 -15
  292. package/dist/src/card-detail.js.map +0 -1
  293. package/dist/src/card.js +0 -19
  294. package/dist/src/card.js.map +0 -1
  295. package/dist/src/cli.js +0 -9387
  296. package/dist/src/cli.js.map +0 -1
  297. package/dist/src/client.js +0 -237
  298. package/dist/src/client.js.map +0 -1
  299. package/dist/src/compare.js +0 -122
  300. package/dist/src/compare.js.map +0 -1
  301. package/dist/src/config.js +0 -135
  302. package/dist/src/config.js.map +0 -1
  303. package/dist/src/connectors/github/backfill.js +0 -281
  304. package/dist/src/connectors/github/backfill.js.map +0 -1
  305. package/dist/src/connectors/github/cli-impl.js +0 -234
  306. package/dist/src/connectors/github/cli-impl.js.map +0 -1
  307. package/dist/src/connectors/github/deletion.js +0 -85
  308. package/dist/src/connectors/github/deletion.js.map +0 -1
  309. package/dist/src/connectors/github/dlq.js +0 -190
  310. package/dist/src/connectors/github/dlq.js.map +0 -1
  311. package/dist/src/connectors/github/idempotency.js +0 -27
  312. package/dist/src/connectors/github/idempotency.js.map +0 -1
  313. package/dist/src/connectors/github/ingest.js +0 -156
  314. package/dist/src/connectors/github/ingest.js.map +0 -1
  315. package/dist/src/connectors/github/octokit-client.js +0 -70
  316. package/dist/src/connectors/github/octokit-client.js.map +0 -1
  317. package/dist/src/connectors/github/ratelimit.js +0 -31
  318. package/dist/src/connectors/github/ratelimit.js.map +0 -1
  319. package/dist/src/connectors/github/scope.js +0 -13
  320. package/dist/src/connectors/github/scope.js.map +0 -1
  321. package/dist/src/connectors/github/signature.js +0 -81
  322. package/dist/src/connectors/github/signature.js.map +0 -1
  323. package/dist/src/connectors/github/tenant-routing.js +0 -69
  324. package/dist/src/connectors/github/tenant-routing.js.map +0 -1
  325. package/dist/src/connectors/github/transform.js +0 -103
  326. package/dist/src/connectors/github/transform.js.map +0 -1
  327. package/dist/src/connectors/github/types.js +0 -100
  328. package/dist/src/connectors/github/types.js.map +0 -1
  329. package/dist/src/connectors/slack/backfill.js +0 -78
  330. package/dist/src/connectors/slack/backfill.js.map +0 -1
  331. package/dist/src/connectors/slack/deletion.js +0 -59
  332. package/dist/src/connectors/slack/deletion.js.map +0 -1
  333. package/dist/src/connectors/slack/dlq.js +0 -224
  334. package/dist/src/connectors/slack/dlq.js.map +0 -1
  335. package/dist/src/connectors/slack/idempotency.js +0 -31
  336. package/dist/src/connectors/slack/idempotency.js.map +0 -1
  337. package/dist/src/connectors/slack/ingest.js +0 -109
  338. package/dist/src/connectors/slack/ingest.js.map +0 -1
  339. package/dist/src/connectors/slack/ratelimit.js +0 -18
  340. package/dist/src/connectors/slack/ratelimit.js.map +0 -1
  341. package/dist/src/connectors/slack/scope.js +0 -13
  342. package/dist/src/connectors/slack/scope.js.map +0 -1
  343. package/dist/src/connectors/slack/signature.js +0 -27
  344. package/dist/src/connectors/slack/signature.js.map +0 -1
  345. package/dist/src/connectors/slack/tenant-routing.js +0 -41
  346. package/dist/src/connectors/slack/tenant-routing.js.map +0 -1
  347. package/dist/src/connectors/slack/transform.js +0 -47
  348. package/dist/src/connectors/slack/transform.js.map +0 -1
  349. package/dist/src/connectors/slack/types.js +0 -35
  350. package/dist/src/connectors/slack/types.js.map +0 -1
  351. package/dist/src/connectors/slack/web-client.js +0 -43
  352. package/dist/src/connectors/slack/web-client.js.map +0 -1
  353. package/dist/src/connectors/slack/workspaces.js +0 -62
  354. package/dist/src/connectors/slack/workspaces.js.map +0 -1
  355. package/dist/src/consolidate.js +0 -978
  356. package/dist/src/consolidate.js.map +0 -1
  357. package/dist/src/correction-latency.js +0 -74
  358. package/dist/src/correction-latency.js.map +0 -1
  359. package/dist/src/customer-notes.js +0 -325
  360. package/dist/src/customer-notes.js.map +0 -1
  361. package/dist/src/dag.js +0 -352
  362. package/dist/src/dag.js.map +0 -1
  363. package/dist/src/dashboard.js +0 -258
  364. package/dist/src/dashboard.js.map +0 -1
  365. package/dist/src/db.js +0 -2731
  366. package/dist/src/db.js.map +0 -1
  367. package/dist/src/decisions.js +0 -304
  368. package/dist/src/decisions.js.map +0 -1
  369. package/dist/src/dedupe.js +0 -141
  370. package/dist/src/dedupe.js.map +0 -1
  371. package/dist/src/embedding-provider.js +0 -314
  372. package/dist/src/embedding-provider.js.map +0 -1
  373. package/dist/src/embeddings.js +0 -543
  374. package/dist/src/embeddings.js.map +0 -1
  375. package/dist/src/eval-suite.js +0 -294
  376. package/dist/src/eval-suite.js.map +0 -1
  377. package/dist/src/eval.js +0 -187
  378. package/dist/src/eval.js.map +0 -1
  379. package/dist/src/extract.js +0 -117
  380. package/dist/src/extract.js.map +0 -1
  381. package/dist/src/forward-claim-detector.js +0 -117
  382. package/dist/src/forward-claim-detector.js.map +0 -1
  383. package/dist/src/goals.js +0 -399
  384. package/dist/src/goals.js.map +0 -1
  385. package/dist/src/graph-extract.js +0 -314
  386. package/dist/src/graph-extract.js.map +0 -1
  387. package/dist/src/graph-recall.js +0 -277
  388. package/dist/src/graph-recall.js.map +0 -1
  389. package/dist/src/graph-stream.js +0 -176
  390. package/dist/src/graph-stream.js.map +0 -1
  391. package/dist/src/graph-view.js +0 -310
  392. package/dist/src/graph-view.js.map +0 -1
  393. package/dist/src/graph.js +0 -762
  394. package/dist/src/graph.js.map +0 -1
  395. package/dist/src/handoff.js +0 -65
  396. package/dist/src/handoff.js.map +0 -1
  397. package/dist/src/hooks.js +0 -926
  398. package/dist/src/hooks.js.map +0 -1
  399. package/dist/src/importers.js +0 -881
  400. package/dist/src/importers.js.map +0 -1
  401. package/dist/src/incidents.js +0 -336
  402. package/dist/src/incidents.js.map +0 -1
  403. package/dist/src/index.js +0 -32
  404. package/dist/src/index.js.map +0 -1
  405. package/dist/src/invalidation.js +0 -129
  406. package/dist/src/invalidation.js.map +0 -1
  407. package/dist/src/mcp/framing.js +0 -45
  408. package/dist/src/mcp/framing.js.map +0 -1
  409. package/dist/src/mcp/server.js +0 -1298
  410. package/dist/src/mcp/server.js.map +0 -1
  411. package/dist/src/memory-value-weights.js +0 -31
  412. package/dist/src/memory-value-weights.js.map +0 -1
  413. package/dist/src/memory-value.js +0 -261
  414. package/dist/src/memory-value.js.map +0 -1
  415. package/dist/src/memory.js +0 -425
  416. package/dist/src/memory.js.map +0 -1
  417. package/dist/src/multihop.js +0 -35
  418. package/dist/src/multihop.js.map +0 -1
  419. package/dist/src/owner-validation.js +0 -56
  420. package/dist/src/owner-validation.js.map +0 -1
  421. package/dist/src/path-context.js +0 -48
  422. package/dist/src/path-context.js.map +0 -1
  423. package/dist/src/physics-config.js +0 -26
  424. package/dist/src/physics-config.js.map +0 -1
  425. package/dist/src/physics-state.js +0 -172
  426. package/dist/src/physics-state.js.map +0 -1
  427. package/dist/src/physics.js +0 -378
  428. package/dist/src/physics.js.map +0 -1
  429. package/dist/src/policies.js +0 -414
  430. package/dist/src/policies.js.map +0 -1
  431. package/dist/src/postinstall.js +0 -101
  432. package/dist/src/postinstall.js.map +0 -1
  433. package/dist/src/predictions.js +0 -629
  434. package/dist/src/predictions.js.map +0 -1
  435. package/dist/src/processes.js +0 -349
  436. package/dist/src/processes.js.map +0 -1
  437. package/dist/src/project-briefs.js +0 -492
  438. package/dist/src/project-briefs.js.map +0 -1
  439. package/dist/src/project-identity.js +0 -200
  440. package/dist/src/project-identity.js.map +0 -1
  441. package/dist/src/provenance-coverage.js +0 -23
  442. package/dist/src/provenance-coverage.js.map +0 -1
  443. package/dist/src/rate-limit.js +0 -60
  444. package/dist/src/rate-limit.js.map +0 -1
  445. package/dist/src/raw-archive-mirror-cleanup.js +0 -55
  446. package/dist/src/raw-archive-mirror-cleanup.js.map +0 -1
  447. package/dist/src/raw-archive.js +0 -91
  448. package/dist/src/raw-archive.js.map +0 -1
  449. package/dist/src/recall-history.js +0 -235
  450. package/dist/src/recall-history.js.map +0 -1
  451. package/dist/src/recall-scope.js +0 -89
  452. package/dist/src/recall-scope.js.map +0 -1
  453. package/dist/src/recall-trace.js +0 -186
  454. package/dist/src/recall-trace.js.map +0 -1
  455. package/dist/src/refine-llm.js +0 -156
  456. package/dist/src/refine-llm.js.map +0 -1
  457. package/dist/src/reject-flow.js +0 -209
  458. package/dist/src/reject-flow.js.map +0 -1
  459. package/dist/src/rejection.js +0 -160
  460. package/dist/src/rejection.js.map +0 -1
  461. package/dist/src/replay.js +0 -122
  462. package/dist/src/replay.js.map +0 -1
  463. package/dist/src/rerankers/cross-encoder.js +0 -137
  464. package/dist/src/rerankers/cross-encoder.js.map +0 -1
  465. package/dist/src/rerankers/index.js +0 -20
  466. package/dist/src/rerankers/index.js.map +0 -1
  467. package/dist/src/rerankers/jev.js +0 -119
  468. package/dist/src/rerankers/jev.js.map +0 -1
  469. package/dist/src/rerankers/llm.js +0 -80
  470. package/dist/src/rerankers/llm.js.map +0 -1
  471. package/dist/src/rerankers/types.js +0 -2
  472. package/dist/src/rerankers/types.js.map +0 -1
  473. package/dist/src/rrf.js +0 -61
  474. package/dist/src/rrf.js.map +0 -1
  475. package/dist/src/salience.js +0 -74
  476. package/dist/src/salience.js.map +0 -1
  477. package/dist/src/scheduler.js +0 -77
  478. package/dist/src/scheduler.js.map +0 -1
  479. package/dist/src/scope.js +0 -35
  480. package/dist/src/scope.js.map +0 -1
  481. package/dist/src/search.js +0 -1003
  482. package/dist/src/search.js.map +0 -1
  483. package/dist/src/secret-detect.js +0 -95
  484. package/dist/src/secret-detect.js.map +0 -1
  485. package/dist/src/server-detect.js +0 -231
  486. package/dist/src/server-detect.js.map +0 -1
  487. package/dist/src/server.js +0 -3255
  488. package/dist/src/server.js.map +0 -1
  489. package/dist/src/shared.js +0 -502
  490. package/dist/src/shared.js.map +0 -1
  491. package/dist/src/skills.js +0 -346
  492. package/dist/src/skills.js.map +0 -1
  493. package/dist/src/sleep-redact.js +0 -80
  494. package/dist/src/sleep-redact.js.map +0 -1
  495. package/dist/src/sso.js +0 -22
  496. package/dist/src/sso.js.map +0 -1
  497. package/dist/src/stdin.js +0 -41
  498. package/dist/src/stdin.js.map +0 -1
  499. package/dist/src/store.js +0 -3749
  500. package/dist/src/store.js.map +0 -1
  501. package/dist/src/tenant.js +0 -17
  502. package/dist/src/tenant.js.map +0 -1
  503. package/dist/src/trace.js +0 -72
  504. package/dist/src/trace.js.map +0 -1
  505. package/dist/src/version.js +0 -40
  506. package/dist/src/version.js.map +0 -1
  507. package/dist/src/working-memory.js +0 -157
  508. package/dist/src/working-memory.js.map +0 -1
  509. package/dist/src/yaml.js +0 -107
  510. package/dist/src/yaml.js.map +0 -1
  511. package/dist/sso.d.ts +0 -13
  512. package/dist/sso.d.ts.map +0 -1
  513. package/dist/sso.js +0 -22
  514. package/dist/sso.js.map +0 -1
  515. package/dist/stdin.d.ts.map +0 -1
  516. package/dist/stdin.js.map +0 -1
  517. package/dist/store.d.ts.map +0 -1
  518. package/dist/store.js.map +0 -1
  519. package/dist/tenant.d.ts.map +0 -1
  520. package/dist/tenant.js.map +0 -1
  521. package/dist/trace.d.ts.map +0 -1
  522. package/dist/trace.js.map +0 -1
  523. package/dist/version.d.ts.map +0 -1
  524. package/dist/version.js.map +0 -1
  525. package/dist/working-memory.d.ts.map +0 -1
  526. package/dist/working-memory.js.map +0 -1
  527. package/dist/yaml.d.ts.map +0 -1
  528. package/dist/yaml.js.map +0 -1
@@ -1,237 +0,0 @@
1
- /**
2
- * HTTP client wrapper for `hippo serve`.
3
- *
4
- * Mirrors the function signatures in src/api.ts so the CLI can route through
5
- * either path uniformly. Each function takes (serverUrl, apiKey?, ...) and
6
- * returns the same shape that api.ts would.
7
- *
8
- * Errors from the server (4xx/5xx) are mapped back into thrown Errors with
9
- * the server's `error` message preserved verbatim so existing CLI handlers
10
- * that match on substrings (e.g. "not found", "already superseded") still
11
- * work unchanged.
12
- *
13
- * Network errors (ECONNREFUSED on a stale pidfile, etc.) propagate as the
14
- * native fetch failure so the caller can detect them and self-heal.
15
- */
16
- function buildHeaders(apiKey, withBody) {
17
- const headers = {};
18
- if (withBody)
19
- headers['content-type'] = 'application/json';
20
- if (apiKey)
21
- headers['authorization'] = `Bearer ${apiKey}`;
22
- return headers;
23
- }
24
- function isNonEmptyString(value) {
25
- return typeof value === 'string' && value.length > 0;
26
- }
27
- /** An error the server answered with, not one the transport raised. The
28
- * refused-connection classifier sniffs message text, and a server message
29
- * quotes the caller's own id or content back verbatim. */
30
- export class HttpResponseError extends Error {
31
- status;
32
- constructor(message, status) {
33
- super(message);
34
- this.status = status;
35
- this.name = 'HttpResponseError';
36
- }
37
- }
38
- /**
39
- * Throw an Error matching the server's error message. Keeps message strings
40
- * intact so cli.ts handlers can match on the same substrings ("not found",
41
- * "already superseded", "Unknown key_id") whether the call went through
42
- * api.ts or client.ts.
43
- */
44
- async function throwForStatus(res) {
45
- let message = `${res.status} ${res.statusText}`;
46
- try {
47
- const body = await res.json();
48
- if (body && isNonEmptyString(body.error)) {
49
- message = body.error;
50
- }
51
- }
52
- catch {
53
- // body wasn't JSON; fall back to status line.
54
- }
55
- throw new HttpResponseError(message, res.status);
56
- }
57
- export async function remember(serverUrl, apiKey, opts) {
58
- const res = await fetch(`${serverUrl}/v1/memories`, {
59
- method: 'POST',
60
- headers: buildHeaders(apiKey, true),
61
- body: JSON.stringify(opts),
62
- });
63
- if (!res.ok)
64
- await throwForStatus(res);
65
- const result = await res.json();
66
- return result;
67
- }
68
- export async function recall(serverUrl, apiKey, opts) {
69
- const params = new URLSearchParams();
70
- params.set('q', opts.query);
71
- if (opts.limit !== undefined)
72
- params.set('limit', String(opts.limit));
73
- if (opts.mode !== undefined)
74
- params.set('mode', opts.mode);
75
- if (opts.scope !== undefined && opts.scope !== '')
76
- params.set('scope', opts.scope);
77
- if (opts.includeContinuity)
78
- params.set('include_continuity', '1');
79
- // v1.7.2 T4 — RecallOpts parity sweep. Pre-v1.7.2 the thin-client only
80
- // serialized the five fields above; the HTTP server already accepted
81
- // fresh_tail_count, fresh_tail_session_id, summarize_overflow. Adding
82
- // scorer_window alone would have perpetuated the drift. Serializing all
83
- // four together. Validation lives in api.recall(); transport just
84
- // forwards.
85
- if (opts.freshTailCount !== undefined)
86
- params.set('fresh_tail_count', String(opts.freshTailCount));
87
- if (opts.freshTailSessionId !== undefined && opts.freshTailSessionId !== '')
88
- params.set('fresh_tail_session_id', opts.freshTailSessionId);
89
- if (opts.summarizeOverflow !== undefined)
90
- params.set('summarize_overflow', opts.summarizeOverflow ? '1' : '0');
91
- if (opts.scorerWindow !== undefined)
92
- params.set('scorer_window', String(opts.scorerWindow));
93
- // v1.7.4 sessionId for dlPFC goal-stack boost + v0.33 / J1 sessionId
94
- // for per-session anchoring ring. Pre-v0.33 the thin-client silently
95
- // dropped opts.sessionId, so HTTP-routed SDK callers got no goal
96
- // boost and (post-J1) the HTTP ring logged recall_anchor_skipped_no_session.
97
- // Codex round-3 P2 catch: align serialization with the RecallOpts type.
98
- // Note: opts.recallHistory is intentionally NOT serialized — it is an
99
- // in-process snapshot only; the HTTP server maintains its own ring per
100
- // sessionId, so passing recallHistory over the wire would be a no-op
101
- // at best and a tenant-leak risk at worst.
102
- if (opts.sessionId !== undefined && opts.sessionId !== '') {
103
- params.set('session_id', opts.sessionId);
104
- }
105
- const res = await fetch(`${serverUrl}/v1/memories?${params.toString()}`, {
106
- method: 'GET',
107
- headers: buildHeaders(apiKey, false),
108
- });
109
- if (!res.ok)
110
- await throwForStatus(res);
111
- const result = await res.json();
112
- return result;
113
- }
114
- export async function forget(serverUrl, apiKey, id) {
115
- const res = await fetch(`${serverUrl}/v1/memories/${encodeURIComponent(id)}`, {
116
- method: 'DELETE',
117
- headers: buildHeaders(apiKey, false),
118
- });
119
- if (!res.ok)
120
- await throwForStatus(res);
121
- const result = await res.json();
122
- return result;
123
- }
124
- export async function promote(serverUrl, apiKey, id) {
125
- const res = await fetch(`${serverUrl}/v1/memories/${encodeURIComponent(id)}/promote`, {
126
- method: 'POST',
127
- headers: buildHeaders(apiKey, false),
128
- });
129
- if (!res.ok)
130
- await throwForStatus(res);
131
- const result = await res.json();
132
- return result;
133
- }
134
- export async function supersede(serverUrl, apiKey, oldId, newContent) {
135
- const res = await fetch(`${serverUrl}/v1/memories/${encodeURIComponent(oldId)}/supersede`, {
136
- method: 'POST',
137
- headers: buildHeaders(apiKey, true),
138
- body: JSON.stringify({ content: newContent }),
139
- });
140
- if (!res.ok)
141
- await throwForStatus(res);
142
- const result = await res.json();
143
- return result;
144
- }
145
- export async function archiveRaw(serverUrl, apiKey, id, reason) {
146
- const res = await fetch(`${serverUrl}/v1/memories/${encodeURIComponent(id)}/archive`, {
147
- method: 'POST',
148
- headers: buildHeaders(apiKey, true),
149
- body: JSON.stringify({ reason }),
150
- });
151
- if (!res.ok)
152
- await throwForStatus(res);
153
- const result = await res.json();
154
- return result;
155
- }
156
- export async function authCreate(serverUrl, apiKey, opts) {
157
- const res = await fetch(`${serverUrl}/v1/auth/keys`, {
158
- method: 'POST',
159
- headers: buildHeaders(apiKey, true),
160
- body: JSON.stringify(opts),
161
- });
162
- if (!res.ok)
163
- await throwForStatus(res);
164
- const result = await res.json();
165
- return result;
166
- }
167
- export async function authList(serverUrl, apiKey, opts) {
168
- const params = new URLSearchParams();
169
- params.set('active', opts.active ? 'true' : 'false');
170
- const res = await fetch(`${serverUrl}/v1/auth/keys?${params.toString()}`, {
171
- method: 'GET',
172
- headers: buildHeaders(apiKey, false),
173
- });
174
- if (!res.ok)
175
- await throwForStatus(res);
176
- const result = await res.json();
177
- return result;
178
- }
179
- export async function authRevoke(serverUrl, apiKey, keyId) {
180
- const res = await fetch(`${serverUrl}/v1/auth/keys/${encodeURIComponent(keyId)}`, {
181
- method: 'DELETE',
182
- headers: buildHeaders(apiKey, false),
183
- });
184
- if (!res.ok)
185
- await throwForStatus(res);
186
- const result = await res.json();
187
- return result;
188
- }
189
- export async function auditList(serverUrl, apiKey, opts) {
190
- const params = new URLSearchParams();
191
- if (opts.op !== undefined)
192
- params.set('op', opts.op);
193
- if (opts.since !== undefined)
194
- params.set('since', opts.since);
195
- if (opts.limit !== undefined)
196
- params.set('limit', String(opts.limit));
197
- const qs = params.toString();
198
- const url = qs.length > 0 ? `${serverUrl}/v1/audit?${qs}` : `${serverUrl}/v1/audit`;
199
- const res = await fetch(url, {
200
- method: 'GET',
201
- headers: buildHeaders(apiKey, false),
202
- });
203
- if (!res.ok)
204
- await throwForStatus(res);
205
- const result = await res.json();
206
- return result;
207
- }
208
- function hasObjectCause(e) {
209
- // Node's fs/net system errors (ECONNREFUSED, ECONNRESET) attach the syscall
210
- // code on a non-null object `cause`; the strict-equality checks below
211
- // validate the code value before it is used for anything.
212
- return typeof e.cause === 'object' && e.cause !== null;
213
- }
214
- export function classifyTransportFailure(err) {
215
- if (!(err instanceof Error))
216
- return 'none';
217
- // The server answered, so the transport worked, whatever the message says.
218
- if (err instanceof HttpResponseError)
219
- return 'none';
220
- const message = err.message.toLowerCase();
221
- const code = hasObjectCause(err) ? err.cause.code : undefined;
222
- // Connect-phase failures: no request bytes ever left the client, so a stale
223
- // pidfile can be healed and the call replayed on the direct path.
224
- if (code === 'ECONNREFUSED' || code === 'ENOTFOUND' || code === 'EAI_AGAIN')
225
- return 'never-sent';
226
- if (message.includes('econnrefused'))
227
- return 'never-sent';
228
- // The socket died mid-exchange. Node fetch surfaces this as a bare
229
- // 'fetch failed' with the syscall code on the cause, so check both shapes.
230
- if (code === 'ECONNRESET' || code === 'ECONNABORTED' || code === 'EPIPE' || code === 'UND_ERR_SOCKET') {
231
- return 'delivery-unknown';
232
- }
233
- if (message.includes('socket hang up') || message.includes('fetch failed'))
234
- return 'delivery-unknown';
235
- return 'none';
236
- }
237
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH,SAAS,YAAY,CAAC,MAA0B,EAAE,QAAiB;IACjE,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,QAAQ;QAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;IAC3D,IAAI,MAAM;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,EAAE,CAAC;IAC1D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;2DAE2D;AAC3D,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACJ;IAAtC,YAAY,OAAe,EAAW,MAAc;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QADqB,WAAM,GAAN,MAAM,CAAQ;QAElD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;;GAKG;AACH,KAAK,UAAU,cAAc,CAAC,GAAa;IACzC,IAAI,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,IAAI,GAAuB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IACD,MAAM,IAAI,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,SAAiB,EACjB,MAA0B,EAC1B,IAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,cAAc,EAAE;QAClD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAmB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,SAAiB,EACjB,MAA0B,EAC1B,IAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnF,IAAI,IAAI,CAAC,iBAAiB;QAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAClE,uEAAuE;IACvE,qEAAqE;IACrE,sEAAsE;IACtE,wEAAwE;IACxE,kEAAkE;IAClE,YAAY;IACZ,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACnG,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,KAAK,EAAE;QACzE,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;QACtC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5F,qEAAqE;IACrE,qEAAqE;IACrE,iEAAiE;IACjE,6EAA6E;IAC7E,wEAAwE;IACxE,sEAAsE;IACtE,uEAAuE;IACvE,qEAAqE;IACrE,2CAA2C;IAC3C,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,gBAAgB,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE;QACvE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAiB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,SAAiB,EACjB,MAA0B,EAC1B,EAAU;IAEV,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,gBAAgB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5E,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAA6B,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,SAAiB,EACjB,MAA0B,EAC1B,EAAU;IAEV,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,gBAAgB,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE;QACpF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAqD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAClF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,MAA0B,EAC1B,KAAa,EACb,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,gBAAgB,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE;QACzF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;KAC9C,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAA+C,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC5E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,MAA0B,EAC1B,EAAU,EACV,MAAc;IAEd,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,gBAAgB,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE;QACpF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAqC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,MAA0B,EAC1B,IAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,eAAe,EAAE;QACnD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAqB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,SAAiB,EACjB,MAA0B,EAC1B,IAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,iBAAiB,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE;QACxE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAqB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,MAA0B,EAC1B,KAAa;IAEb,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE;QAChF,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAoC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,MAA0B,EAC1B,IAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,WAAW,CAAC;IACpF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,MAAM,GAAiB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC;AAYD,SAAS,cAAc,CAAC,CAAQ;IAC9B,4EAA4E;IAC5E,sEAAsE;IACtE,0DAA0D;IAC1D,OAAO,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAY;IACnD,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,2EAA2E;IAC3E,IAAI,GAAG,YAAY,iBAAiB;QAAE,OAAO,MAAM,CAAC;IACpD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,4EAA4E;IAC5E,kEAAkE;IAClE,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,YAAY,CAAC;IACjG,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,YAAY,CAAC;IAC1D,mEAAmE;IACnE,2EAA2E;IAC3E,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACtG,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACtG,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,122 +0,0 @@
1
- /**
2
- * Deterministic tie-break comparators for recall ranking.
3
- *
4
- * A true LEAF module: imports NOTHING from any sort-site module (search.ts,
5
- * physics.ts, api.ts, cli.ts, shared.ts, goals.ts, graph-recall.ts,
6
- * multihop.ts, rerankers/*). Every comparator here takes a structural param
7
- * type instead of an imported one, on purpose — a type-only import back to
8
- * search.ts would still create the search.ts <-> physics.ts ESM import
9
- * cycle this module exists to avoid (r2 critic HIGH,
10
- * docs/plans/2026-07-09-recall-determinism.md T2).
11
- *
12
- * Mirrors the deliberate-determinism comment style already established in
13
- * graph-stream.ts:88, :165-168, :233-236 — a sort with a documented,
14
- * reproducible tiebreak instead of leaving ties to array/scan order.
15
- */
16
- /**
17
- * content asc -> layer rank asc -> distinct tag count desc -> sorted tags asc
18
- * -> source asc -> id asc (all string compares are UTF-16 code-unit order).
19
- *
20
- * `content` is the cross-ingest-stable key: identical text ingested into two
21
- * independently-created stores (different directory name, different insert
22
- * order of everything else on disk) sorts identically. The metadata keys make
23
- * byte-identical twins order by what they carry instead of by `id`
24
- * (`crypto.randomUUID()`), which is per-instance random: before v1.38.1 the
25
- * dedupe survivor of two twins that differed only in tags or source was
26
- * whichever id sorted first, and a semantic/episodic pair always kept the
27
- * episodic copy because `mem_` sorts before `sem_`. `id` stays the terminal
28
- * key so the order is total within one store.
29
- *
30
- * Layer rank puts semantic first: semantic rows are consolidation output, so
31
- * keeping that copy preserves the promotion instead of demoting the memory.
32
- * Unknown or missing layers rank last and then compare as raw strings.
33
- * Tags prefer the copy with more distinct labels (fewer labels are lost on
34
- * dedupe); source is an arbitrary but stable key.
35
- *
36
- * Plain `<`/`>`, NOT `localeCompare`: `localeCompare` is locale- and
37
- * ICU-version-dependent (a determinism leak in its own right) and needlessly
38
- * slow for a tiebreak that only needs a total order. The metadata keys are
39
- * only computed on a content tie, which is rare post-T1 (path-tag embedding
40
- * fix), so the per-compare Set/sort cost never lands on the hot path.
41
- */
42
- export function compareEntryIdentity(a, b) {
43
- return (compareStrings(a.content, b.content) ||
44
- layerRank(a.layer) - layerRank(b.layer) ||
45
- compareStrings(a.layer ?? '', b.layer ?? '') ||
46
- compareTags(a.tags, b.tags) ||
47
- compareStrings(a.source ?? '', b.source ?? '') ||
48
- compareStrings(a.id, b.id));
49
- }
50
- const LAYER_RANK = new Map([
51
- ['semantic', 0],
52
- ['episodic', 1],
53
- ['trace', 2],
54
- ['buffer', 3],
55
- ]);
56
- function layerRank(layer) {
57
- return LAYER_RANK.get(layer ?? '') ?? LAYER_RANK.size;
58
- }
59
- function compareStrings(a, b) {
60
- return a < b ? -1 : a > b ? 1 : 0;
61
- }
62
- function compareTags(a, b) {
63
- const ua = [...new Set(a ?? [])].sort();
64
- const ub = [...new Set(b ?? [])].sort();
65
- if (ua.length !== ub.length)
66
- return ub.length - ua.length;
67
- // element-wise, not a joined string: a separator inside a tag would collide
68
- for (let i = 0; i < ua.length; i++) {
69
- const c = compareStrings(ua[i], ub[i]);
70
- if (c !== 0)
71
- return c;
72
- }
73
- return 0;
74
- }
75
- /**
76
- * score descending -> `compareEntryIdentity`. The shared ordering rule for
77
- * every score-primary recall sort site (search.ts, shared.ts, goals.ts,
78
- * api.ts, cli.ts, graph-recall.ts, multihop.ts, rerankers/cross-encoder.ts).
79
- * Sites delegate wholesale to this (via a thin arrow where the element
80
- * shape's score field is named something other than `score`, e.g.
81
- * `rerankScore`) rather than reimplementing `b.score - a.score` locally, so
82
- * the tiebreak can't silently drift between call sites.
83
- */
84
- export function compareScoredResults(a, b) {
85
- const d = b.score - a.score;
86
- return d !== 0 ? d : compareEntryIdentity(a.entry, b.entry);
87
- }
88
- /**
89
- * Build a score-desc -> tie-key comparator for the physics layer.
90
- *
91
- * `ScoredPhysicsResult` (physics.ts) carries `{ memoryId, baseScore,
92
- * clusterAmplification, finalScore }` -- NO `entry`/`content` in scope at
93
- * that layer, so `compareEntryIdentity` cannot apply directly (plan T2
94
- * shape (c)). With only the default memoryId key this is PER-INSTANCE-ONLY
95
- * determinism; callers that need CROSS-INGEST stability supply `tieKeyOf`
96
- * mapping the result to its memory CONTENT (codex review finding: the
97
- * baseScore tie order selects the cluster_top_k amplification set, which
98
- * MUTATES scores before the downstream content-aware merge sort runs -- so
99
- * the tie key must be content-stable at THIS layer, not just downstream).
100
- *
101
- * A factory (not a fixed-field comparator) because physics.ts re-sorts the
102
- * same result array by two different score fields in sequence (`baseScore`
103
- * for top-K selection, then `finalScore` after cluster amplification) — one
104
- * shared tiebreak rule, parameterised by which field is primary this pass.
105
- */
106
- export function comparePhysicsResultsBy(scoreOf, tieKeyOf) {
107
- return (a, b) => {
108
- const d = scoreOf(b) - scoreOf(a);
109
- if (d !== 0)
110
- return d;
111
- const ai = tieKeyOf ? tieKeyOf(a) : a.memoryId;
112
- const bi = tieKeyOf ? tieKeyOf(b) : b.memoryId;
113
- if (ai < bi)
114
- return -1;
115
- if (ai > bi)
116
- return 1;
117
- // Tie-key collision (e.g. duplicate content): fall through to memoryId
118
- // so the comparator still yields a total order within one store.
119
- return a.memoryId < b.memoryId ? -1 : a.memoryId > b.memoryId ? 1 : 0;
120
- };
121
- }
122
- //# sourceMappingURL=compare.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/compare.ts"],"names":[],"mappings":"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"}
@@ -1,135 +0,0 @@
1
- /**
2
- * Config support for Hippo: reads .hippo/config.json with sane defaults.
3
- */
4
- import * as fs from 'fs';
5
- import * as path from 'path';
6
- import { DEFAULT_PHYSICS_CONFIG, mergePhysicsConfig } from './physics-config.js';
7
- const DEFAULT_CONFIG = {
8
- defaultHalfLifeDays: 7,
9
- defaultBudget: 4000,
10
- defaultContextBudget: 3000,
11
- decayBasis: 'adaptive',
12
- autoLearnOnSleep: true,
13
- autoShareOnSleep: true,
14
- autoSleep: {
15
- enabled: true,
16
- threshold: 50,
17
- },
18
- embeddings: {
19
- enabled: 'auto',
20
- model: 'Xenova/all-MiniLM-L6-v2',
21
- hybridWeight: 0.6,
22
- provider: 'local',
23
- },
24
- global: {
25
- enabled: true,
26
- },
27
- gitLearnPatterns: [
28
- 'fix', 'revert', 'bug', 'error', 'hotfix', 'bugfix',
29
- 'refactor', 'perf', 'chore', 'breaking', 'deprecate',
30
- ],
31
- physics: { ...DEFAULT_PHYSICS_CONFIG },
32
- mmr: {
33
- enabled: true,
34
- lambda: 0.7,
35
- },
36
- search: {
37
- localBump: 1.2,
38
- },
39
- replay: {
40
- count: 5,
41
- },
42
- autoTraceCapture: true,
43
- autoTraceWindowDays: 7,
44
- pinnedInject: {
45
- enabled: true,
46
- budget: 1500,
47
- },
48
- contextProjectIsolation: true,
49
- extraction: {
50
- enabled: 'auto',
51
- model: 'claude-sonnet-4-6',
52
- },
53
- multihop: {
54
- enabled: false,
55
- },
56
- salience: {
57
- enabled: false,
58
- recentWindow: 20,
59
- overlapThreshold: 0.6,
60
- minContentLength: 5,
61
- maxRepeatErrors: 4,
62
- },
63
- ambient: {
64
- enabled: true,
65
- },
66
- memoryValue: {
67
- enabled: false,
68
- },
69
- };
70
- function isMemoryValueConfig(value) {
71
- return typeof value === 'object' && value !== null && !Array.isArray(value);
72
- }
73
- export function loadConfig(hippoRoot) {
74
- const configPath = path.join(hippoRoot, 'config.json');
75
- if (!fs.existsSync(configPath))
76
- return { ...DEFAULT_CONFIG };
77
- try {
78
- const raw = JSON.parse(fs.readFileSync(configPath, 'utf8'));
79
- const basis = raw.decayBasis;
80
- const validBasis = basis === 'clock' || basis === 'session' || basis === 'adaptive';
81
- // Review-round F6: {...DEFAULT_CONFIG.memoryValue, ...raw.memoryValue}
82
- // silently no-ops when raw.memoryValue is a non-object (e.g. the user
83
- // wrote {"memoryValue": true}) — spreading a boolean/primitive/array
84
- // contributes no enumerable own properties, so `enabled` stays at the
85
- // default `false` with zero indication anything was wrong. This
86
- // feature's whole point is "never silently off": warn loudly and fall
87
- // back to defaults instead of merging garbage.
88
- const memoryValueRaw = raw.memoryValue;
89
- const validMemoryValueConfig = memoryValueRaw === undefined || isMemoryValueConfig(memoryValueRaw);
90
- if (!validMemoryValueConfig) {
91
- console.error(`Warning: config.json's "memoryValue" must be an object like {"enabled": true} ` +
92
- `(got ${JSON.stringify(memoryValueRaw)}) - using defaults.`);
93
- }
94
- const memoryValueOverride = memoryValueRaw !== undefined && isMemoryValueConfig(memoryValueRaw) ? memoryValueRaw : {};
95
- return {
96
- defaultHalfLifeDays: raw.defaultHalfLifeDays ?? DEFAULT_CONFIG.defaultHalfLifeDays,
97
- defaultBudget: raw.defaultBudget ?? DEFAULT_CONFIG.defaultBudget,
98
- defaultContextBudget: raw.defaultContextBudget ?? DEFAULT_CONFIG.defaultContextBudget,
99
- decayBasis: validBasis ? basis : DEFAULT_CONFIG.decayBasis,
100
- autoLearnOnSleep: raw.autoLearnOnSleep ?? DEFAULT_CONFIG.autoLearnOnSleep,
101
- autoShareOnSleep: raw.autoShareOnSleep ?? DEFAULT_CONFIG.autoShareOnSleep,
102
- autoSleep: { ...DEFAULT_CONFIG.autoSleep, ...(raw.autoSleep ?? {}) },
103
- embeddings: { ...DEFAULT_CONFIG.embeddings, ...(raw.embeddings ?? {}) },
104
- global: { ...DEFAULT_CONFIG.global, ...(raw.global ?? {}) },
105
- gitLearnPatterns: raw.gitLearnPatterns ?? DEFAULT_CONFIG.gitLearnPatterns,
106
- physics: mergePhysicsConfig(raw.physics),
107
- mmr: { ...DEFAULT_CONFIG.mmr, ...(raw.mmr ?? {}) },
108
- search: { ...DEFAULT_CONFIG.search, ...(raw.search ?? {}) },
109
- replay: { ...DEFAULT_CONFIG.replay, ...(raw.replay ?? {}) },
110
- autoTraceCapture: raw.autoTraceCapture ?? DEFAULT_CONFIG.autoTraceCapture,
111
- autoTraceWindowDays: raw.autoTraceWindowDays ?? DEFAULT_CONFIG.autoTraceWindowDays,
112
- pinnedInject: { ...DEFAULT_CONFIG.pinnedInject, ...(raw.pinnedInject ?? {}) },
113
- contextProjectIsolation: raw.contextProjectIsolation ?? DEFAULT_CONFIG.contextProjectIsolation,
114
- extraction: { ...DEFAULT_CONFIG.extraction, ...(raw.extraction ?? {}) },
115
- multihop: { ...DEFAULT_CONFIG.multihop, ...(raw.multihop ?? {}) },
116
- salience: { ...DEFAULT_CONFIG.salience, ...(raw.salience ?? {}) },
117
- ambient: { ...DEFAULT_CONFIG.ambient, ...(raw.ambient ?? {}) },
118
- memoryValue: {
119
- ...DEFAULT_CONFIG.memoryValue,
120
- ...memoryValueOverride,
121
- },
122
- };
123
- }
124
- catch (err) {
125
- if (fs.existsSync(configPath)) {
126
- console.error(`Warning: failed to parse ${configPath}: ${err instanceof Error ? err.message : err}`);
127
- }
128
- return { ...DEFAULT_CONFIG };
129
- }
130
- }
131
- export function saveConfig(hippoRoot, config) {
132
- const configPath = path.join(hippoRoot, 'config.json');
133
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');
134
- }
135
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}