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,117 +0,0 @@
1
- import { Layer, createMemory } from './memory.js';
2
- import { writeEntry } from './store.js';
3
- import { RejectedValueError } from './rejection.js';
4
- function isJsonString(value) {
5
- return typeof value === 'string';
6
- }
7
- const EXTRACTION_PROMPT = `You are extracting factual statements from a conversation or memory entry. Extract 1-8 standalone factual statements that would be useful to remember later.
8
-
9
- Rules:
10
- - Each fact must be a complete, standalone sentence
11
- - Include the speaker's name in every fact (e.g. "Alice prefers..." not "She prefers...")
12
- - Preserve specific details: names, numbers, dates, paths, IDs
13
- - Return a JSON array of objects with: content (string), tags (array of "speaker:X" and "topic:Y" strings), valence ("neutral", "positive", "negative", or "critical")
14
- - Return an empty array [] for small talk with no extractable facts
15
- - Output ONLY the JSON array, no preamble or explanation
16
-
17
- Input text:
18
- `;
19
- export async function extractFacts(text, opts) {
20
- const model = opts.model ?? 'claude-sonnet-4-6';
21
- const fetchFn = opts.fetcher ?? fetch;
22
- let res;
23
- try {
24
- res = await fetchFn('https://api.anthropic.com/v1/messages', {
25
- method: 'POST',
26
- headers: {
27
- 'content-type': 'application/json',
28
- 'x-api-key': opts.apiKey,
29
- 'anthropic-version': '2023-06-01',
30
- },
31
- body: JSON.stringify({
32
- model,
33
- max_tokens: 1200,
34
- messages: [{ role: 'user', content: EXTRACTION_PROMPT + text }],
35
- }),
36
- });
37
- }
38
- catch {
39
- return [];
40
- }
41
- if (!res.ok)
42
- return [];
43
- try {
44
- const data = await res.json();
45
- const raw = data.content?.[0]?.text?.trim() ?? '';
46
- if (!raw)
47
- return [];
48
- const parsed = JSON.parse(raw);
49
- if (!Array.isArray(parsed))
50
- return [];
51
- const validValences = new Set(['neutral', 'positive', 'negative', 'critical']);
52
- const facts = [];
53
- for (const item of parsed) {
54
- if (facts.length >= 8)
55
- break;
56
- if (!item ||
57
- !isJsonString(item.content) ||
58
- item.content.length < 3)
59
- continue;
60
- const itemTags = item.tags;
61
- const tags = Array.isArray(itemTags)
62
- ? itemTags.filter((t) => isJsonString(t))
63
- : [];
64
- // SAFETY: validValences.has(item.valence) above confirms item.valence is one of the four literal strings of EmotionalValence.
65
- const valence = validValences.has(item.valence)
66
- ? item.valence
67
- : 'neutral';
68
- facts.push({ content: item.content, tags, valence });
69
- }
70
- return facts;
71
- }
72
- catch {
73
- return [];
74
- }
75
- }
76
- const INHERITABLE_PREFIXES = ['conv:', 'session:', 'scope:', 'path:'];
77
- export function storeExtractedFacts(hippoRoot, source, facts) {
78
- const inheritedTags = source.tags.filter((t) => INHERITABLE_PREFIXES.some((p) => t.startsWith(p)));
79
- const entries = [];
80
- let rejected = 0;
81
- for (const fact of facts) {
82
- const tags = ['extracted', ...inheritedTags, ...fact.tags];
83
- const entry = createMemory(fact.content, {
84
- layer: Layer.Semantic,
85
- tags,
86
- emotional_valence: fact.valence,
87
- confidence: 'inferred',
88
- source: source.source,
89
- extracted_from: source.id,
90
- // T1 executor check (2026-08-15 hardening pass): same defect as the
91
- // consolidate.ts merge/trace passes — createMemory with no tenantId
92
- // option stamps 'default' (memory.ts:535) regardless of the source
93
- // entry's own tenant. Thread it through so extracted facts land in
94
- // the same tenant as the episodic memory they were extracted from.
95
- tenantId: source.tenantId,
96
- });
97
- // AT1 containment: a refusal is per-VALUE — one rejected fact must not
98
- // drop the rest of this batch. writeEntry has already audited the
99
- // refusal (reject_refusal) before rethrowing, so skip-and-count here.
100
- try {
101
- writeEntry(hippoRoot, entry);
102
- }
103
- catch (err) {
104
- if (err instanceof RejectedValueError) {
105
- rejected++;
106
- continue;
107
- }
108
- throw err;
109
- }
110
- entries.push(entry);
111
- }
112
- if (rejected > 0) {
113
- console.error(`storeExtractedFacts: skipped ${rejected} rejected value(s)`);
114
- }
115
- return entries;
116
- }
117
- //# sourceMappingURL=extract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/extract.ts"],"names":[],"mappings":"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"}
@@ -1,117 +0,0 @@
1
- /**
2
- * J3.2 forward-claim detector — pure-function regex set + token extraction.
3
- *
4
- * No DB. No state. No dependencies beyond stdlib regex + String.
5
- *
6
- * The detector's job is to decide whether a recall query carries a
7
- * forward-prediction phrase ("will take ~3 days", "ship by Friday",
8
- * "ETA in 2 weeks"). Calibration is intentionally HIGH-PRECISION /
9
- * LOW-RECALL: better to fire on 20% of real forward-claims than 80% with
10
- * 40% noise. Cry-wolf failure dominates planning-fallacy hint UX (Lovallo-
11
- * Kahneman 2003 inside-vs-outside view).
12
- *
13
- * Iteration signal: the `recall_autodebias_hint_no_class_match` audit op
14
- * (emitted by computePlanningFallacyHint when a phrase matches but no class
15
- * resolves) is the telemetry channel for deciding whether to add an
16
- * embedding-based detector in J3.3.
17
- *
18
- * Plan: docs/plans/2026-05-26-j32-auto-injection.md (Task 1).
19
- */
20
- /**
21
- * Patterns ship-locked at v1.13.x. Each pattern is intentionally narrow —
22
- * adding a pattern should require evidence from the
23
- * `recall_autodebias_hint_no_class_match` audit channel that real forward-
24
- * claims are slipping through, NOT speculative "this might match more".
25
- *
26
- * Word boundaries (`\b`) are mandatory: prevent `~5 days` inside
27
- * `~5 days_ago` from matching, and prevent `ETA` substring matches inside
28
- * a longer token (e.g. `BETAtesting`).
29
- */
30
- // Reused fragment for ALL duration-suffix patterns. Requires a digit + unit
31
- // so 'will take ownership' / 'ship in Docker' (no time component) don't
32
- // match. Codex round 2 P2: patterns that allowed verb-only matches fired
33
- // on every-day non-estimate queries that happened to share a class-token.
34
- // Accepts `<N> unit` (3 days), `a/an unit` (a week — implicit 1), and
35
- // `one unit` so natural English forward-claims aren't lost.
36
- const DURATION_TAIL = String.raw `(?:about|around|~|≈)?\s*(?:\d+|a|an|one)\s*(?:day|week|month|hour|hr|min(?:ute)?|sec(?:ond)?)s?\b`;
37
- const FORWARD_CLAIM_PATTERNS = [
38
- // Verb + duration tail. Old pattern `/\b(?:will|should...) take\b/i`
39
- // matched `who will take ownership of auth?` because there was no
40
- // quantifier requirement. Now requires `<verb> take <N> <unit>`.
41
- new RegExp(String.raw `\b(?:will|should|gonna|going\s+to)\s+take\s+${DURATION_TAIL}`, 'i'),
42
- // Ship + by/in + duration-or-day. Old pattern `/\bship(?:ping)?\s+(?:by|in)\b/i`
43
- // matched `how does this ship in Docker?`. Now requires either a
44
- // duration tail OR a literal day-of-week reference.
45
- new RegExp(String.raw `\bship(?:ping|s)?\s+(?:by|in)\s+(?:(?:about|around)\s+)?(?:next\s+)?(?:${DURATION_TAIL}|(?:monday|tuesday|wednesday|thursday|friday|saturday|sunday))\b`, 'i'),
46
- /\bestimate(?:d)?\s+(?:at\s+)?(?:~|≈|about|around)?\s*\d+/i,
47
- /\b(?:by|in|within)\s+(?:about|around|~)?\s*\d+\s*(?:day|week|month|hour)s?\b/i,
48
- /\bETA\s*(?:is|:)?\s*\d+/i,
49
- /\b(?:by|before)\s+next\s+(?:week|month|sprint|monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b/i,
50
- // Standalone tilde duration: '~3 days for migration', 'estimate ~3 days'.
51
- // Lookbehind asserts start-of-string OR whitespace before the tilde
52
- // because \b before ~ requires a word char immediately preceding (~ is
53
- // not a word character), so /\b~/ would only match in 'foo~3 days'
54
- // (malformed) and silently miss the legitimate cases. Codex review
55
- // round 1 catch.
56
- /(?<=^|\s)~\s*\d+\s*(?:day|week|month|hour)s?\b/i,
57
- // Should + verb + duration tail. Same tightening as the leading 'will
58
- // take' rule: 'should ship by EOD' must include a quantifier.
59
- new RegExp(String.raw `\bshould\s+(?:be|ship|finish|complete|land)\s+(?:by|in|within)\s+(?:(?:about|around)\s+)?(?:next\s+)?(?:${DURATION_TAIL}|(?:monday|tuesday|wednesday|thursday|friday|saturday|sunday))\b`, 'i'),
60
- ];
61
- /**
62
- * Pronouns + function words + modal verbs the regex set already gates on.
63
- * Dropped before class-resolution so the overlap signal comes from
64
- * domain tokens ("migration", "auth", "refactor") rather than connectives.
65
- */
66
- const STOP_WORDS = new Set([
67
- 'the', 'a', 'an', 'and', 'or', 'but', 'for', 'to', 'in', 'on', 'at', 'of',
68
- 'by', 'with', 'my', 'your', 'our', 'their', 'its', 'it', 'this', 'that',
69
- 'these', 'those', 'will', 'should', 'can', 'i', 'we', 'they', 'he', 'she',
70
- 'is', 'be', 'was', 'are', 'were', 'has', 'have', 'had', 'do', 'does', 'did',
71
- 'from', 'as', 'so', 'than', 'then',
72
- // Verbs that appear inside FORWARD_CLAIM_PATTERNS themselves — they're
73
- // signal for the regex gate but NOT signal for class resolution (you
74
- // wouldn't name a prediction class "take" or "ship"). Listing here so
75
- // they don't pollute the classQueryTokens overlap score.
76
- 'take', 'taken', 'takes', 'ship', 'ships', 'finish', 'complete', 'land',
77
- 'eta', 'estimate', 'estimated', 'next', 'about', 'around',
78
- // Duration units appear in every forward-claim phrase by design (the
79
- // regex set REQUIRES a `<N> <unit>` quantifier after the verb). Letting
80
- // them through to class resolution lets a class tag containing 'days'
81
- // win or tie on the unit token instead of the domain token. Codex round
82
- // 2 P3 catch.
83
- 'day', 'days', 'week', 'weeks', 'month', 'months',
84
- 'hour', 'hours', 'hr', 'hrs',
85
- 'min', 'mins', 'minute', 'minutes', 'sec', 'secs', 'second', 'seconds',
86
- ]);
87
- /**
88
- * Detect whether a recall query carries a forward-prediction phrase.
89
- *
90
- * @returns first-match phrase + extracted class-resolution tokens when
91
- * any pattern matches; null otherwise. Token extraction runs only on a
92
- * match — non-forward queries pay zero work beyond the regex gate.
93
- */
94
- export function detectForwardClaim(queryText) {
95
- if (!queryText)
96
- return null;
97
- for (const pat of FORWARD_CLAIM_PATTERNS) {
98
- const m = queryText.match(pat);
99
- if (m) {
100
- const tokens = extractClassQueryTokens(queryText);
101
- return { phrase: m[0], classQueryTokens: tokens };
102
- }
103
- }
104
- return null;
105
- }
106
- function extractClassQueryTokens(queryText) {
107
- return queryText
108
- .toLowerCase()
109
- // Strip everything that's not alphanum or whitespace or hyphen / underscore.
110
- .replace(/[^a-z0-9\s_-]/g, ' ')
111
- // Split on whitespace AND hyphen AND underscore so `migration-effort`
112
- // produces ['migration', 'effort'] — matching the class-tag split
113
- // pattern in resolveClassFromTokens (split on /[-_\s]+/).
114
- .split(/[\s_-]+/)
115
- .filter((t) => t.length >= 3 && !STOP_WORDS.has(t) && !/^\d+$/.test(t));
116
- }
117
- //# sourceMappingURL=forward-claim-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forward-claim-detector.js","sourceRoot":"","sources":["../../src/forward-claim-detector.ts"],"names":[],"mappings":"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"}
package/dist/src/goals.js DELETED
@@ -1,390 +0,0 @@
1
- // src/goals.ts
2
- import { randomUUID } from 'node:crypto';
3
- import { openHippoDb, closeHippoDb } from './db.js';
4
- export const MAX_ACTIVE_GOAL_DEPTH = 3;
5
- export const MAX_FINAL_MULTIPLIER = 3.0;
6
- export function rowToGoal(row) {
7
- return {
8
- id: row.id,
9
- sessionId: row.session_id,
10
- tenantId: row.tenant_id,
11
- goalName: row.goal_name,
12
- level: row.level,
13
- parentGoalId: row.parent_goal_id ?? undefined,
14
- status: row.status,
15
- successCondition: row.success_condition ?? undefined,
16
- retrievalPolicyId: row.retrieval_policy_id ?? undefined,
17
- createdAt: row.created_at,
18
- completedAt: row.completed_at ?? undefined,
19
- outcomeScore: row.outcome_score ?? undefined,
20
- };
21
- }
22
- export function pushGoal(hippoRoot, opts) {
23
- const db = openHippoDb(hippoRoot);
24
- try {
25
- return pushGoalWithDb(db, opts);
26
- }
27
- finally {
28
- closeHippoDb(db);
29
- }
30
- }
31
- /**
32
- * v1.7.4 — depth-cap enforcer extracted from pushGoalWithDb and resumeGoal.
33
- * If the (tenant, session) has >= MAX_ACTIVE_GOAL_DEPTH active goals,
34
- * suspend the oldest `overflow` ones.
35
- *
36
- * **Precondition: caller MUST already be inside a `BEGIN IMMEDIATE`
37
- * transaction.** Helper does not open or commit -- name reflects this so it
38
- * is impossible to misread the contract at a call site. Both existing call
39
- * sites (pushGoalWithDb, resumeGoal) wrap in `BEGIN IMMEDIATE` already.
40
- *
41
- * @internal v1.7.4 -- internal goal-stack invariant. Subject to change.
42
- */
43
- export function enforceDepthCapWithinTx(db, tenantId, sessionId) {
44
- // SAFETY: the row comes from the SELECT above, which projects exactly one
45
- // column, `c`, as a COUNT(*).
46
- const activeCount = db.prepare(`
47
- SELECT COUNT(*) AS c
48
- FROM goal_stack
49
- WHERE tenant_id = ? AND session_id = ? AND status = 'active'
50
- `).get(tenantId, sessionId).c;
51
- if (activeCount >= MAX_ACTIVE_GOAL_DEPTH) {
52
- const overflow = activeCount - MAX_ACTIVE_GOAL_DEPTH + 1;
53
- db.prepare(`
54
- UPDATE goal_stack
55
- SET status = 'suspended'
56
- WHERE id IN (
57
- SELECT id FROM goal_stack
58
- WHERE tenant_id = ? AND session_id = ? AND status = 'active'
59
- ORDER BY created_at ASC
60
- LIMIT ?
61
- )
62
- `).run(tenantId, sessionId, overflow);
63
- }
64
- }
65
- export function pushGoalWithDb(db, opts) {
66
- const id = `g_${randomUUID().replace(/-/g, '').slice(0, 16)}`;
67
- const createdAt = new Date().toISOString();
68
- let policyId = null;
69
- db.exec('BEGIN IMMEDIATE');
70
- try {
71
- // Depth cap: count active for (tenant, session); suspend oldest if at cap.
72
- enforceDepthCapWithinTx(db, opts.tenantId, opts.sessionId);
73
- if (opts.parentGoalId) {
74
- // SAFETY: the row comes from the SELECT above, which projects exactly
75
- // the tenant_id and session_id columns of goal_stack.
76
- const parent = db.prepare(`SELECT tenant_id, session_id FROM goal_stack WHERE id = ?`).get(opts.parentGoalId);
77
- if (!parent) {
78
- throw new Error(`parent goal not found: ${opts.parentGoalId}`);
79
- }
80
- if (parent.tenant_id !== opts.tenantId || parent.session_id !== opts.sessionId) {
81
- throw new Error(`parent goal ${opts.parentGoalId} belongs to a different (tenant, session)`);
82
- }
83
- }
84
- // Parent goal_stack row first (FK target).
85
- db.prepare(`
86
- INSERT INTO goal_stack
87
- (id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
88
- success_condition, retrieval_policy_id, created_at)
89
- VALUES (?, ?, ?, ?, ?, ?, 'active', ?, NULL, ?)
90
- `).run(id, opts.sessionId, opts.tenantId, opts.goalName, opts.level ?? 0, opts.parentGoalId ?? null, opts.successCondition ?? null, createdAt);
91
- // Optional policy row, then point goal_stack.retrieval_policy_id at it.
92
- if (opts.policy) {
93
- policyId = `rp_${randomUUID().replace(/-/g, '').slice(0, 16)}`;
94
- db.prepare(`
95
- INSERT INTO retrieval_policy
96
- (id, goal_id, policy_type, weight_schema_fit, weight_recency, weight_outcome, error_priority)
97
- VALUES (?, ?, ?, ?, ?, ?, ?)
98
- `).run(policyId, id, opts.policy.policyType, opts.policy.weightSchemaFit ?? 1.0, opts.policy.weightRecency ?? 1.0, opts.policy.weightOutcome ?? 1.0, opts.policy.errorPriority ?? 1.0);
99
- db.prepare(`UPDATE goal_stack SET retrieval_policy_id = ? WHERE id = ?`).run(policyId, id);
100
- }
101
- db.exec('COMMIT');
102
- }
103
- catch (err) {
104
- db.exec('ROLLBACK');
105
- throw err;
106
- }
107
- return {
108
- id,
109
- sessionId: opts.sessionId,
110
- tenantId: opts.tenantId,
111
- goalName: opts.goalName,
112
- level: opts.level ?? 0,
113
- parentGoalId: opts.parentGoalId,
114
- status: 'active',
115
- successCondition: opts.successCondition,
116
- retrievalPolicyId: policyId ?? undefined,
117
- createdAt,
118
- };
119
- }
120
- export function getActiveGoals(hippoRoot, opts) {
121
- const db = openHippoDb(hippoRoot);
122
- try {
123
- return getActiveGoalsWithDb(db, opts);
124
- }
125
- finally {
126
- closeHippoDb(db);
127
- }
128
- }
129
- export function getActiveGoalsWithDb(db, opts) {
130
- // SAFETY: rows come from the SELECT above, which projects exactly
131
- // GoalRow's columns (in the same order goal_stack defines them).
132
- const rows = db.prepare(`
133
- SELECT id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
134
- success_condition, retrieval_policy_id, created_at, completed_at, outcome_score
135
- FROM goal_stack
136
- WHERE tenant_id = ? AND session_id = ? AND status = 'active'
137
- ORDER BY created_at ASC
138
- `).all(opts.tenantId, opts.sessionId);
139
- return rows.map(rowToGoal);
140
- }
141
- /**
142
- * v1.7.4 -- dlPFC goal-stack boost helper. Applies the multi-goal boost to a
143
- * list of entry-backed scored rows when (tenant, session) has active goals.
144
- * Pre-v1.7.4 this logic lived inline in cmdRecall (src/cli.ts:988-1140);
145
- * lifting here lets api.recall (primary band only) AND MCP physics/hybrid
146
- * call it.
147
- *
148
- * Caller responsibilities:
149
- * - Do NOT call when an explicit `goalTag` is set (caller's gate)
150
- * - Pass entry-backed rows (with `entry.tags`, `entry.id`, optional
151
- * `entry.schema_fit`)
152
- * - Manage the db handle lifecycle (helper neither opens nor closes)
153
- * - Recompute `tokens` after if returned rows are projected to a budgeted
154
- * shape
155
- *
156
- * Side effects:
157
- * - INSERT OR IGNORE into `goal_recall_log` for each (boosted, goal) pair
158
- * - Local memory id filter applied before INSERT (skips global-only ids
159
- * to preserve FK invariant on goal_recall_log.memory_id)
160
- *
161
- * @internal v1.7.4 -- internal recall ranking helper. Subject to change.
162
- */
163
- export function applyGoalStackBoost(db, results, opts) {
164
- const { sessionId, tenantId, limit, trace } = opts;
165
- const active = getActiveGoalsWithDb(db, { sessionId, tenantId });
166
- if (active.length === 0)
167
- return results;
168
- const goalsByTag = new Map(active.map((g) => [g.goalName, g]));
169
- // Load retrieval_policy rows for active goals so per-policy multipliers
170
- // can compose onto the base goal-tag boost. Composed result is hard-capped
171
- // at MAX_FINAL_MULTIPLIER (3.0x) BEFORE applying to score -- even an
172
- // `errorPriority: 9.0` policy cannot exceed 3.0x.
173
- const policiesByGoalId = new Map();
174
- for (const g of active) {
175
- if (!g.retrievalPolicyId)
176
- continue;
177
- // SAFETY: the row comes from the SELECT above, which projects exactly
178
- // these seven retrieval_policy columns.
179
- const row = db.prepare(`
180
- SELECT id, goal_id, policy_type, weight_schema_fit, weight_recency, weight_outcome, error_priority
181
- FROM retrieval_policy WHERE id = ?
182
- `).get(g.retrievalPolicyId);
183
- if (row) {
184
- policiesByGoalId.set(g.id, {
185
- id: row.id,
186
- goalId: row.goal_id,
187
- policyType: row.policy_type,
188
- weightSchemaFit: row.weight_schema_fit,
189
- weightRecency: row.weight_recency,
190
- weightOutcome: row.weight_outcome,
191
- errorPriority: row.error_priority,
192
- });
193
- }
194
- }
195
- // Goal-tag matches per boosted row, keyed by entry id. Kept as a side table
196
- // (rather than a spread-on `_goalMatches` marker property) so `boosted`
197
- // stays exactly R[] end to end, with no cast-tag-then-strip round trip.
198
- const matchesByEntryId = new Map();
199
- const boosted = results
200
- .map((r) => {
201
- const tags = r.entry.tags ?? [];
202
- const matches = tags.filter((t) => goalsByTag.has(t));
203
- if (matches.length === 0)
204
- return r;
205
- // Base 2.0x for first match, +0.5x per additional, capped at 3.0x.
206
- let multiplier = Math.min(2.0 + 0.5 * (matches.length - 1), MAX_FINAL_MULTIPLIER);
207
- // Compose per-policy multipliers per matched tag.
208
- for (const tag of matches) {
209
- const goal = goalsByTag.get(tag);
210
- const policy = policiesByGoalId.get(goal.id);
211
- if (!policy)
212
- continue;
213
- if (policy.policyType === 'error-prioritized' && tags.includes('error')) {
214
- multiplier *= policy.errorPriority;
215
- }
216
- else if (policy.policyType === 'schema-fit-biased') {
217
- // Linearly weight schema_fit in [0,1] up to (weightSchemaFit)x.
218
- // Default 1.0 is a no-op.
219
- multiplier *=
220
- 1.0 +
221
- Math.max(0, policy.weightSchemaFit - 1.0) *
222
- (r.entry.schema_fit ?? 0.5);
223
- }
224
- else if (policy.policyType === 'recency-first') {
225
- multiplier *= policy.weightRecency;
226
- }
227
- else if (policy.policyType === 'hybrid') {
228
- multiplier *= policy.weightOutcome;
229
- }
230
- }
231
- // Hard cap AFTER all composition.
232
- multiplier = Math.min(multiplier, MAX_FINAL_MULTIPLIER);
233
- // A7 recall-trace side-channel: record the goal-boost step BEFORE the
234
- // score is mutated, keyed by entry id. Pure read of r.score here; the
235
- // mutation below is byte-identical to pre-A7.
236
- if (trace) {
237
- trace.set(r.entry.id, {
238
- stage: 'goal-boost',
239
- multiplier,
240
- scoreBefore: r.score,
241
- scoreAfter: r.score * multiplier,
242
- note: matches.join(', '),
243
- });
244
- }
245
- matchesByEntryId.set(r.entry.id, matches);
246
- // SAFETY: spreading a generic-constrained `r: R` widens the result to
247
- // the spread's plain object type; only `score` changes, so the value
248
- // still satisfies R's shape exactly.
249
- return { ...r, score: r.score * multiplier };
250
- })
251
- // T2 note: deliberately a PLAIN stable score sort, no compareEntryIdentity
252
- // tail -- a re-sort of an already deterministically-ordered ranking
253
- // inherits its determinism via sort stability, and ties preserve the
254
- // prior (meaningful) rank instead of reordering by content.
255
- .sort((a, b) => b.score - a.score);
256
- // Filter to local memories only -- global memory IDs aren't in this DB's
257
- // memories table, so the FK on goal_recall_log.memory_id would fail.
258
- // dlPFC depth's outcome propagation is session-scoped to local; boost on
259
- // ranking still applies to global results, just no log row -> no
260
- // propagation.
261
- const topKIds = boosted.slice(0, limit).map((r) => r.entry.id);
262
- const localIds = new Set();
263
- if (topKIds.length > 0) {
264
- const placeholders = topKIds.map(() => '?').join(',');
265
- // SAFETY: rows come from the SELECT above, which projects exactly one
266
- // column, `id`, from memories.
267
- const localRows = db.prepare(`SELECT id FROM memories WHERE id IN (${placeholders})`).all(...topKIds);
268
- for (const row of localRows)
269
- localIds.add(row.id);
270
- }
271
- // Log top-K boosted recalls. INSERT OR IGNORE because
272
- // UNIQUE(memory_id, goal_id) means a re-recall during the same goal life
273
- // is a no-op for outcome attribution.
274
- const recalledAt = new Date().toISOString();
275
- const insertLog = db.prepare(`
276
- INSERT OR IGNORE INTO goal_recall_log
277
- (goal_id, memory_id, tenant_id, session_id, recalled_at, score)
278
- VALUES (?, ?, ?, ?, ?, ?)
279
- `);
280
- for (const r of boosted.slice(0, limit)) {
281
- if (!localIds.has(r.entry.id))
282
- continue; // global -> skip log insert
283
- const matches = matchesByEntryId.get(r.entry.id);
284
- if (!matches || matches.length === 0)
285
- continue;
286
- for (const tag of matches) {
287
- const goal = goalsByTag.get(tag);
288
- if (!goal)
289
- continue;
290
- insertLog.run(goal.id, r.entry.id, tenantId, sessionId, recalledAt, r.score);
291
- }
292
- }
293
- return boosted;
294
- }
295
- const POSITIVE_OUTCOME_THRESHOLD = 0.7;
296
- const NEGATIVE_OUTCOME_THRESHOLD = 0.3;
297
- const STRENGTH_BOOST = 1.10;
298
- const STRENGTH_DECAY = 0.85;
299
- export function completeGoal(hippoRoot, goalId, opts) {
300
- const db = openHippoDb(hippoRoot);
301
- try {
302
- const completedAt = new Date().toISOString();
303
- const score = opts.outcomeScore ?? null;
304
- db.exec('BEGIN IMMEDIATE');
305
- try {
306
- // SAFETY: the row comes from the SELECT above, which projects exactly
307
- // the created_at and status columns of goal_stack.
308
- const goalRow = db.prepare(`SELECT created_at, status FROM goal_stack WHERE id = ?`).get(goalId);
309
- if (!goalRow) {
310
- db.exec('COMMIT');
311
- return;
312
- }
313
- if (goalRow.status === 'completed') {
314
- // Already completed -- second call is a no-op for idempotency.
315
- db.exec('COMMIT');
316
- return;
317
- }
318
- db.prepare(`
319
- UPDATE goal_stack
320
- SET status = 'completed', completed_at = ?, outcome_score = ?
321
- WHERE id = ?
322
- `).run(completedAt, score, goalId);
323
- if (score !== null && !opts.noPropagate) {
324
- let multiplier = 1;
325
- if (score >= POSITIVE_OUTCOME_THRESHOLD)
326
- multiplier = STRENGTH_BOOST;
327
- else if (score < NEGATIVE_OUTCOME_THRESHOLD)
328
- multiplier = STRENGTH_DECAY;
329
- if (multiplier !== 1) {
330
- // Lifespan window: only memories whose recall happened during this
331
- // goal's active life. UNIQUE(memory_id, goal_id) guarantees one
332
- // adjustment per (memory, goal) pair.
333
- db.prepare(`
334
- UPDATE memories
335
- SET strength = MIN(1.0, MAX(0.0, strength * ?))
336
- WHERE id IN (
337
- SELECT memory_id FROM goal_recall_log
338
- WHERE goal_id = ?
339
- AND recalled_at >= ?
340
- AND recalled_at <= ?
341
- )
342
- `).run(multiplier, goalId, goalRow.created_at, completedAt);
343
- }
344
- }
345
- db.exec('COMMIT');
346
- }
347
- catch (err) {
348
- db.exec('ROLLBACK');
349
- throw err;
350
- }
351
- }
352
- finally {
353
- closeHippoDb(db);
354
- }
355
- }
356
- export function suspendGoal(hippoRoot, goalId) {
357
- const db = openHippoDb(hippoRoot);
358
- try {
359
- db.prepare(`UPDATE goal_stack SET status = 'suspended' WHERE id = ? AND status = 'active'`).run(goalId);
360
- }
361
- finally {
362
- closeHippoDb(db);
363
- }
364
- }
365
- export function resumeGoal(hippoRoot, goalId) {
366
- const db = openHippoDb(hippoRoot);
367
- try {
368
- db.exec('BEGIN IMMEDIATE');
369
- try {
370
- // SAFETY: the row comes from the SELECT above, which projects exactly
371
- // the session_id, tenant_id, and status columns of goal_stack.
372
- const row = db.prepare(`SELECT session_id, tenant_id, status FROM goal_stack WHERE id = ?`).get(goalId);
373
- if (!row || row.status !== 'suspended') {
374
- db.exec('COMMIT');
375
- return;
376
- }
377
- enforceDepthCapWithinTx(db, row.tenant_id, row.session_id);
378
- db.prepare(`UPDATE goal_stack SET status = 'active' WHERE id = ?`).run(goalId);
379
- db.exec('COMMIT');
380
- }
381
- catch (err) {
382
- db.exec('ROLLBACK');
383
- throw err;
384
- }
385
- }
386
- finally {
387
- closeHippoDb(db);
388
- }
389
- }
390
- //# sourceMappingURL=goals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"goals.js","sourceRoot":"","sources":["../../src/goals.ts"],"names":[],"mappings":"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"}