hippo-memory 2.0.0 → 2.1.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 (965) hide show
  1. package/dist/agent-memories/apply.d.ts +7 -5
  2. package/dist/agent-memories/apply.js +66 -39
  3. package/dist/agent-memories/claude-code.d.ts +8 -2
  4. package/dist/agent-memories/claude-code.js +26 -7
  5. package/dist/agent-memories/copilot.js +2 -1
  6. package/dist/agent-memories/files.js +2 -1
  7. package/dist/agent-memories/legacy.d.ts +6 -3
  8. package/dist/agent-memories/legacy.js +35 -14
  9. package/dist/agent-memories/markdown.d.ts +3 -1
  10. package/dist/agent-memories/markdown.js +3 -1
  11. package/dist/agent-memories/openclaw.js +5 -2
  12. package/dist/agent-memories/plan.js +11 -1
  13. package/dist/agent-memories/project-folds.js +2 -1
  14. package/dist/agent-memories/report.d.ts +4 -1
  15. package/dist/agent-memories/report.js +43 -9
  16. package/dist/agent-memories/source.d.ts +8 -2
  17. package/dist/agent-memories/source.js +11 -3
  18. package/dist/agent-memories/sync.d.ts +7 -2
  19. package/dist/agent-memories/sync.js +141 -101
  20. package/dist/api/assemble.d.ts +6 -4
  21. package/dist/api/assemble.js +11 -6
  22. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  23. package/dist/api/{audit.js → auth/audit.js} +11 -11
  24. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
  25. package/dist/api/{auth.js → auth/auth.js} +46 -29
  26. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  27. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
  28. package/dist/api/auth/session-owners.d.ts +10 -0
  29. package/dist/api/auth/session-owners.js +35 -0
  30. package/dist/api/availability.d.ts +3 -1
  31. package/dist/api/availability.js +3 -1
  32. package/dist/api/busy.d.ts +2 -0
  33. package/dist/api/busy.js +2 -0
  34. package/dist/api/cli-surface.d.ts +6 -0
  35. package/dist/api/cli-surface.js +6 -0
  36. package/dist/api/config-of.d.ts +5 -0
  37. package/dist/api/config-of.js +6 -0
  38. package/dist/api/context-auto.d.ts +4 -1
  39. package/dist/api/context-auto.js +10 -2
  40. package/dist/api/context-render.js +14 -7
  41. package/dist/api/context-select.d.ts +4 -1
  42. package/dist/api/context-select.js +23 -14
  43. package/dist/api/context-types.d.ts +38 -12
  44. package/dist/api/context.d.ts +8 -5
  45. package/dist/api/context.js +112 -57
  46. package/dist/api/continuity.d.ts +24 -21
  47. package/dist/api/continuity.js +18 -20
  48. package/dist/api/correction-latency.d.ts +3 -1
  49. package/dist/api/correction-latency.js +3 -1
  50. package/dist/api/error-reply.d.ts +4 -1
  51. package/dist/api/error-reply.js +12 -3
  52. package/dist/api/index.d.ts +39 -23
  53. package/dist/api/index.js +21 -23
  54. package/dist/api/instruction-detect.d.ts +4 -1
  55. package/dist/api/instruction-detect.js +75 -20
  56. package/dist/api/ledger-db.d.ts +15 -11
  57. package/dist/api/ledger-db.js +21 -23
  58. package/dist/api/memories/conflicts.d.ts +33 -0
  59. package/dist/api/memories/conflicts.js +67 -0
  60. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  61. package/dist/api/{forget.js → memories/forget.js} +22 -15
  62. package/dist/api/memories/memories.d.ts +27 -0
  63. package/dist/api/{memories.js → memories/memories.js} +16 -21
  64. package/dist/api/memories/outcome.d.ts +22 -0
  65. package/dist/api/{outcome.js → memories/outcome.js} +14 -8
  66. package/dist/api/memories/promote.d.ts +40 -0
  67. package/dist/api/{promote.js → memories/promote.js} +35 -22
  68. package/dist/api/memories/refine.d.ts +10 -0
  69. package/dist/api/memories/refine.js +12 -0
  70. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
  71. package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
  72. package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
  73. package/dist/api/{remember.js → memories/remember.js} +42 -26
  74. package/dist/api/objects/cards.d.ts +39 -0
  75. package/dist/api/{cards.js → objects/cards.js} +12 -14
  76. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  77. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
  78. package/dist/api/objects/goals.d.ts +18 -0
  79. package/dist/api/{goals.js → objects/goals.js} +12 -12
  80. package/dist/api/objects/graph.d.ts +11 -0
  81. package/dist/api/objects/graph.js +16 -0
  82. package/dist/api/objects/objects.d.ts +9 -0
  83. package/dist/api/{objects.js → objects/objects.js} +2 -4
  84. package/dist/api/objects/predictions.d.ts +11 -0
  85. package/dist/api/{predictions.js → objects/predictions.js} +7 -6
  86. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  87. package/dist/api/{projects.js → objects/projects.js} +8 -4
  88. package/dist/api/pilot-arm.d.ts +8 -4
  89. package/dist/api/pilot-arm.js +5 -4
  90. package/dist/api/prompt-hook.d.ts +32 -19
  91. package/dist/api/prompt-hook.js +65 -44
  92. package/dist/api/provenance-coverage.d.ts +3 -1
  93. package/dist/api/provenance-coverage.js +3 -1
  94. package/dist/api/recall/finish.d.ts +185 -0
  95. package/dist/api/recall/finish.js +301 -0
  96. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  97. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
  98. package/dist/api/recall/recall.d.ts +6 -0
  99. package/dist/api/{recall.js → recall/recall.js} +101 -60
  100. package/dist/api/recall/render.d.ts +39 -0
  101. package/dist/api/recall/render.js +60 -0
  102. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  103. package/dist/api/recall/request.js +261 -0
  104. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  105. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  106. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
  107. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  108. package/dist/api/session-end.d.ts +16 -12
  109. package/dist/api/session-end.js +46 -30
  110. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  111. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  112. package/dist/api/sleep/dormant.d.ts +25 -0
  113. package/dist/api/sleep/dormant.js +64 -0
  114. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  115. package/dist/api/sleep/learn.js +138 -0
  116. package/dist/api/sleep/sleep-run.d.ts +38 -0
  117. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
  118. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  119. package/dist/api/sleep/sleep.js +9 -0
  120. package/dist/api/status.d.ts +3 -1
  121. package/dist/api/status.js +3 -1
  122. package/dist/api/store-init.d.ts +4 -1
  123. package/dist/api/store-init.js +4 -1
  124. package/dist/api/tokens.d.ts +10 -9
  125. package/dist/api/tokens.js +9 -10
  126. package/dist/api/types.d.ts +28 -7
  127. package/dist/api/types.js +13 -4
  128. package/dist/capture/caller-session.d.ts +8 -2
  129. package/dist/capture/caller-session.js +16 -6
  130. package/dist/capture/capture-error.d.ts +3 -1
  131. package/dist/capture/capture-error.js +3 -1
  132. package/dist/capture/codex-patch.js +7 -2
  133. package/dist/capture/command.d.ts +4 -2
  134. package/dist/capture/command.js +33 -14
  135. package/dist/capture/compact-resume-caller.js +15 -8
  136. package/dist/capture/compact.d.ts +8 -5
  137. package/dist/capture/compact.js +34 -23
  138. package/dist/capture/compaction-items-caller.js +9 -3
  139. package/dist/capture/compaction-record.d.ts +4 -3
  140. package/dist/capture/compaction-record.js +20 -12
  141. package/dist/capture/compaction-spool.d.ts +15 -4
  142. package/dist/capture/compaction-spool.js +64 -17
  143. package/dist/capture/copilot-transcript.d.ts +11 -3
  144. package/dist/capture/copilot-transcript.js +16 -6
  145. package/dist/capture/extract.js +20 -8
  146. package/dist/capture/failure-caller.js +23 -12
  147. package/dist/capture/failure-reading.d.ts +10 -3
  148. package/dist/capture/failure-reading.js +24 -7
  149. package/dist/capture/pre-compact-caller.js +11 -4
  150. package/dist/capture/session-digest.d.ts +15 -4
  151. package/dist/capture/session-digest.js +39 -13
  152. package/dist/capture/session-end-caller.d.ts +4 -1
  153. package/dist/capture/session-end-caller.js +20 -8
  154. package/dist/capture/session-texts.d.ts +6 -2
  155. package/dist/capture/session-texts.js +22 -7
  156. package/dist/capture/session-worker.d.ts +4 -2
  157. package/dist/capture/session-worker.js +45 -17
  158. package/dist/capture/transcript.d.ts +13 -4
  159. package/dist/capture/transcript.js +32 -10
  160. package/dist/capture/working-state.d.ts +13 -4
  161. package/dist/capture/working-state.js +50 -56
  162. package/dist/cli/api-context.d.ts +14 -2
  163. package/dist/cli/api-context.js +45 -2
  164. package/dist/cli/audit.js +23 -23
  165. package/dist/cli/auth.js +19 -27
  166. package/dist/cli/briefs.d.ts +1 -1
  167. package/dist/cli/briefs.js +20 -15
  168. package/dist/cli/card.d.ts +1 -1
  169. package/dist/cli/card.js +56 -73
  170. package/dist/cli/client.d.ts +12 -4
  171. package/dist/cli/client.js +43 -13
  172. package/dist/cli/compact-resume-payload.d.ts +4 -1
  173. package/dist/cli/compact-resume-payload.js +12 -5
  174. package/dist/cli/context.js +42 -17
  175. package/dist/cli/continuity.d.ts +5 -5
  176. package/dist/cli/continuity.js +90 -107
  177. package/dist/cli/curate.d.ts +4 -3
  178. package/dist/cli/curate.js +46 -68
  179. package/dist/cli/dag.d.ts +1 -1
  180. package/dist/cli/dag.js +14 -17
  181. package/dist/cli/decisions.js +27 -26
  182. package/dist/cli/eval.js +16 -21
  183. package/dist/cli/exit.d.ts +4 -1
  184. package/dist/cli/exit.js +10 -2
  185. package/dist/cli/explain.js +12 -11
  186. package/dist/cli/flag-values.d.ts +1 -1
  187. package/dist/cli/flag-values.js +9 -18
  188. package/dist/cli/github.d.ts +6 -0
  189. package/dist/cli/github.js +25 -13
  190. package/dist/cli/goals.d.ts +1 -1
  191. package/dist/cli/goals.js +39 -56
  192. package/dist/cli/graph.d.ts +1 -1
  193. package/dist/cli/graph.js +15 -11
  194. package/dist/cli/hook-runtime.d.ts +31 -9
  195. package/dist/cli/hook-runtime.js +40 -15
  196. package/dist/cli/incidents.d.ts +1 -1
  197. package/dist/cli/incidents.js +25 -25
  198. package/dist/cli/init.js +26 -11
  199. package/dist/cli/install-steps.d.ts +12 -3
  200. package/dist/cli/install-steps.js +42 -18
  201. package/dist/cli/last-sleep.d.ts +4 -1
  202. package/dist/cli/last-sleep.js +9 -4
  203. package/dist/cli/maintenance.d.ts +1 -1
  204. package/dist/cli/maintenance.js +11 -12
  205. package/dist/cli/notes.d.ts +1 -1
  206. package/dist/cli/notes.js +8 -5
  207. package/dist/cli/object-verbs.d.ts +4 -4
  208. package/dist/cli/object-verbs.js +10 -13
  209. package/dist/cli/open-browser.js +11 -2
  210. package/dist/cli/playbooks.d.ts +3 -3
  211. package/dist/cli/playbooks.js +40 -32
  212. package/dist/cli/predictions.js +15 -19
  213. package/dist/cli/print.js +4 -2
  214. package/dist/cli/projects.js +21 -11
  215. package/dist/cli/quality-repair-once.js +5 -4
  216. package/dist/cli/recall.js +129 -93
  217. package/dist/cli/refine-llm.d.ts +15 -4
  218. package/dist/cli/refine-llm.js +16 -7
  219. package/dist/cli/remember.js +46 -50
  220. package/dist/cli/scheduler.d.ts +4 -1
  221. package/dist/cli/scheduler.js +9 -5
  222. package/dist/cli/serve.js +22 -17
  223. package/dist/cli/session-hooks.d.ts +2 -2
  224. package/dist/cli/session-hooks.js +87 -50
  225. package/dist/cli/setup.js +54 -32
  226. package/dist/cli/shared.d.ts +3 -1
  227. package/dist/cli/shared.js +24 -9
  228. package/dist/cli/slack.js +15 -24
  229. package/dist/cli/sleep-render.d.ts +3 -1
  230. package/dist/cli/sleep-render.js +8 -5
  231. package/dist/cli/sleep.js +14 -6
  232. package/dist/cli/status.d.ts +4 -4
  233. package/dist/cli/status.js +32 -27
  234. package/dist/cli/stdin.d.ts +10 -3
  235. package/dist/cli/stdin.js +10 -3
  236. package/dist/cli/transfer.d.ts +1 -1
  237. package/dist/cli/transfer.js +71 -75
  238. package/dist/cli/verbs/memory.js +8 -6
  239. package/dist/cli/verbs/objects.js +10 -4
  240. package/dist/cli/versioned-verbs.d.ts +8 -7
  241. package/dist/cli/versioned-verbs.js +31 -21
  242. package/dist/cli.js +13 -16
  243. package/dist/connectors/dlq.d.ts +6 -6
  244. package/dist/connectors/dlq.js +12 -8
  245. package/dist/connectors/github/backfill.d.ts +4 -4
  246. package/dist/connectors/github/backfill.js +6 -4
  247. package/dist/connectors/github/deletion.d.ts +6 -4
  248. package/dist/connectors/github/deletion.js +5 -5
  249. package/dist/connectors/github/dlq.d.ts +8 -6
  250. package/dist/connectors/github/dlq.js +11 -5
  251. package/dist/connectors/github/ingest.d.ts +2 -2
  252. package/dist/connectors/github/ingest.js +9 -6
  253. package/dist/connectors/github/octokit-client.d.ts +3 -1
  254. package/dist/connectors/github/octokit-client.js +7 -2
  255. package/dist/connectors/github/ratelimit.d.ts +6 -2
  256. package/dist/connectors/github/ratelimit.js +6 -2
  257. package/dist/connectors/github/signature.d.ts +14 -3
  258. package/dist/connectors/github/signature.js +17 -3
  259. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  260. package/dist/connectors/github/tenant-routing.js +6 -6
  261. package/dist/connectors/github/transform.js +50 -67
  262. package/dist/connectors/github/types.d.ts +10 -3
  263. package/dist/connectors/github/types.js +6 -2
  264. package/dist/connectors/github/webhook.d.ts +5 -5
  265. package/dist/connectors/github/webhook.js +34 -23
  266. package/dist/connectors/ingest.d.ts +5 -3
  267. package/dist/connectors/ingest.js +3 -4
  268. package/dist/connectors/slack/backfill.d.ts +5 -5
  269. package/dist/connectors/slack/backfill.js +3 -3
  270. package/dist/connectors/slack/deletion.d.ts +4 -4
  271. package/dist/connectors/slack/deletion.js +6 -6
  272. package/dist/connectors/slack/dlq.d.ts +4 -4
  273. package/dist/connectors/slack/dlq.js +6 -6
  274. package/dist/connectors/slack/ingest.d.ts +6 -4
  275. package/dist/connectors/slack/ingest.js +5 -5
  276. package/dist/connectors/slack/signature.d.ts +4 -1
  277. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  278. package/dist/connectors/slack/tenant-routing.js +6 -6
  279. package/dist/connectors/slack/transform.d.ts +6 -2
  280. package/dist/connectors/slack/transform.js +6 -2
  281. package/dist/connectors/slack/types.d.ts +3 -1
  282. package/dist/connectors/slack/web-client.js +8 -3
  283. package/dist/connectors/slack/webhook.d.ts +5 -5
  284. package/dist/connectors/slack/webhook.js +19 -11
  285. package/dist/connectors/slack/workspaces.d.ts +7 -3
  286. package/dist/connectors/slack/workspaces.js +7 -3
  287. package/dist/connectors/store.d.ts +8 -0
  288. package/dist/connectors/store.js +2 -0
  289. package/dist/consolidate/conflicts.js +23 -9
  290. package/dist/consolidate/dag-summary.js +2 -1
  291. package/dist/consolidate/dag.d.ts +10 -5
  292. package/dist/consolidate/dag.js +37 -36
  293. package/dist/consolidate/decay.js +19 -6
  294. package/dist/consolidate/dedupe.d.ts +14 -5
  295. package/dist/consolidate/dedupe.js +27 -16
  296. package/dist/consolidate/flush-units.d.ts +4 -1
  297. package/dist/consolidate/flush-units.js +4 -1
  298. package/dist/consolidate/half-life-migration.d.ts +18 -8
  299. package/dist/consolidate/half-life-migration.js +48 -18
  300. package/dist/consolidate/llm-passes.js +27 -11
  301. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  302. package/dist/consolidate/memory-value-weights.js +6 -2
  303. package/dist/consolidate/memory-value.d.ts +30 -10
  304. package/dist/consolidate/memory-value.js +36 -13
  305. package/dist/consolidate/merge.d.ts +4 -1
  306. package/dist/consolidate/merge.js +42 -32
  307. package/dist/consolidate/overlap-index.d.ts +8 -2
  308. package/dist/consolidate/overlap-index.js +11 -4
  309. package/dist/consolidate/physics-pass.d.ts +3 -1
  310. package/dist/consolidate/physics-pass.js +10 -7
  311. package/dist/consolidate/replay.d.ts +11 -4
  312. package/dist/consolidate/replay.js +19 -7
  313. package/dist/consolidate/run.d.ts +13 -5
  314. package/dist/consolidate/run.js +4 -4
  315. package/dist/consolidate/sleep.d.ts +14 -6
  316. package/dist/consolidate/sleep.js +41 -38
  317. package/dist/consolidate/trace.d.ts +7 -2
  318. package/dist/consolidate/trace.js +7 -2
  319. package/dist/consolidate/traces.js +26 -29
  320. package/dist/core/ablation.d.ts +9 -3
  321. package/dist/core/ablation.js +14 -4
  322. package/dist/core/active-scope.d.ts +3 -1
  323. package/dist/core/active-scope.js +3 -1
  324. package/dist/core/agent-memory-tools.d.ts +2 -0
  325. package/dist/core/agent-memory-tools.js +2 -0
  326. package/dist/core/ambient.d.ts +4 -3
  327. package/dist/core/ambient.js +8 -6
  328. package/dist/core/api-errors.d.ts +9 -3
  329. package/dist/core/api-errors.js +9 -3
  330. package/dist/core/capture-contract.d.ts +4 -1
  331. package/dist/core/capture-contract.js +27 -8
  332. package/dist/core/compare.d.ts +24 -8
  333. package/dist/core/compare.js +24 -8
  334. package/dist/core/config.d.ts +18 -9
  335. package/dist/core/config.js +24 -14
  336. package/dist/core/cosine.d.ts +4 -1
  337. package/dist/core/cosine.js +4 -1
  338. package/dist/core/handoff.d.ts +7 -2
  339. package/dist/core/handoff.js +4 -1
  340. package/dist/core/markdown.js +21 -16
  341. package/dist/core/memory-audit.js +14 -3
  342. package/dist/core/memory-quality.d.ts +12 -3
  343. package/dist/core/memory-quality.js +57 -21
  344. package/dist/core/memory.d.ts +84 -27
  345. package/dist/core/memory.js +73 -29
  346. package/dist/core/merged-row.d.ts +8 -2
  347. package/dist/core/merged-row.js +10 -3
  348. package/dist/core/package-root.d.ts +3 -1
  349. package/dist/core/package-root.js +3 -1
  350. package/dist/core/particle-refresh.d.ts +8 -0
  351. package/dist/core/particle-refresh.js +22 -0
  352. package/dist/core/physics-config.d.ts +4 -1
  353. package/dist/core/physics-config.js +6 -2
  354. package/dist/core/physics.d.ts +37 -11
  355. package/dist/core/physics.js +55 -20
  356. package/dist/core/project-identity.d.ts +34 -17
  357. package/dist/core/project-identity.js +33 -17
  358. package/dist/core/project-remote.d.ts +8 -4
  359. package/dist/core/project-remote.js +31 -14
  360. package/dist/core/recall-scope.d.ts +33 -11
  361. package/dist/core/recall-scope.js +42 -15
  362. package/dist/core/rejection-digest.d.ts +7 -0
  363. package/dist/core/rejection-digest.js +13 -0
  364. package/dist/core/salience.d.ts +3 -1
  365. package/dist/core/salience.js +10 -4
  366. package/dist/core/search-types.d.ts +15 -2
  367. package/dist/core/search-types.js +11 -0
  368. package/dist/dashboard/dashboard-actions.js +13 -2
  369. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  370. package/dist/dashboard/dashboard-snapshot.js +4 -4
  371. package/dist/dashboard/dashboard.js +6 -3
  372. package/dist/db/backup.js +2 -2
  373. package/dist/db/busy.d.ts +10 -3
  374. package/dist/db/busy.js +27 -5
  375. package/dist/db/connect.d.ts +10 -3
  376. package/dist/db/connect.js +8 -3
  377. package/dist/db/continuity.d.ts +1 -1
  378. package/dist/db/continuity.js +27 -11
  379. package/dist/db/meta.d.ts +4 -1
  380. package/dist/db/meta.js +4 -1
  381. package/dist/db/migrate.d.ts +10 -5
  382. package/dist/db/migrate.js +26 -13
  383. package/dist/db/migrations/index.d.ts +1 -1
  384. package/dist/db/migrations/index.js +3 -1
  385. package/dist/db/migrations/types.d.ts +2 -1
  386. package/dist/db/migrations/v12.js +2 -1
  387. package/dist/db/migrations/v14.js +2 -1
  388. package/dist/db/migrations/v15.js +4 -2
  389. package/dist/db/migrations/v16.js +6 -3
  390. package/dist/db/migrations/v17.js +2 -1
  391. package/dist/db/migrations/v19.js +4 -2
  392. package/dist/db/migrations/v20.js +2 -1
  393. package/dist/db/migrations/v22.js +12 -6
  394. package/dist/db/migrations/v23.js +6 -3
  395. package/dist/db/migrations/v24.js +6 -3
  396. package/dist/db/migrations/v25.js +4 -2
  397. package/dist/db/migrations/v26.js +4 -2
  398. package/dist/db/migrations/v27.js +6 -3
  399. package/dist/db/migrations/v28.js +4 -2
  400. package/dist/db/migrations/v29.js +4 -2
  401. package/dist/db/migrations/v30.js +6 -3
  402. package/dist/db/migrations/v31.js +4 -2
  403. package/dist/db/migrations/v32.js +6 -3
  404. package/dist/db/migrations/v33.js +4 -2
  405. package/dist/db/migrations/v34.js +2 -1
  406. package/dist/db/migrations/v35.js +2 -1
  407. package/dist/db/migrations/v36.js +2 -1
  408. package/dist/db/migrations/v37.js +10 -5
  409. package/dist/db/migrations/v38.js +10 -5
  410. package/dist/db/migrations/v39.js +14 -6
  411. package/dist/db/migrations/v40.js +4 -2
  412. package/dist/db/migrations/v41.js +4 -2
  413. package/dist/db/migrations/v42.js +2 -1
  414. package/dist/db/migrations/v44.js +4 -2
  415. package/dist/db/migrations/v45.js +4 -2
  416. package/dist/db/migrations/v49.js +2 -1
  417. package/dist/db/migrations/v50.js +4 -2
  418. package/dist/db/migrations/v51.js +4 -2
  419. package/dist/db/migrations/v52.js +2 -1
  420. package/dist/db/migrations/v53.js +8 -4
  421. package/dist/db/migrations/v54.js +2 -1
  422. package/dist/db/migrations/v55.js +4 -2
  423. package/dist/db/migrations/v56.d.ts +3 -0
  424. package/dist/db/migrations/v56.js +28 -0
  425. package/dist/db/open.d.ts +24 -12
  426. package/dist/db/open.js +25 -13
  427. package/dist/db/physics-state.d.ts +8 -4
  428. package/dist/db/physics-state.js +13 -20
  429. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  430. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  431. package/dist/db/request-stores.d.ts +19 -5
  432. package/dist/db/request-stores.js +14 -5
  433. package/dist/db/tables.d.ts +2 -1
  434. package/dist/db/tables.js +12 -4
  435. package/dist/db/vector-store.d.ts +13 -4
  436. package/dist/db/vector-store.js +34 -14
  437. package/dist/db/wal-checkpointer.d.ts +2 -1
  438. package/dist/db/wal-checkpointer.js +19 -7
  439. package/dist/doctor.d.ts +4 -1
  440. package/dist/doctor.js +121 -39
  441. package/dist/embeddings/local.d.ts +8 -4
  442. package/dist/embeddings/local.js +9 -5
  443. package/dist/embeddings/provider.d.ts +19 -10
  444. package/dist/embeddings/provider.js +31 -17
  445. package/dist/embeddings/transformers.d.ts +16 -4
  446. package/dist/embeddings/transformers.js +32 -15
  447. package/dist/entry/json-hooks.d.ts +1 -1
  448. package/dist/entry/json-hooks.js +1 -1
  449. package/dist/entry/project-identity.js +2 -1
  450. package/dist/entry/session-text.d.ts +1 -1
  451. package/dist/entry/session-text.js +1 -1
  452. package/dist/entry/sqlite-handles.d.ts +10 -0
  453. package/dist/entry/sqlite-handles.js +9 -0
  454. package/dist/entry/store-kit.d.ts +19 -6
  455. package/dist/entry/store-kit.js +6 -4
  456. package/dist/eval/eval-stats.d.ts +27 -8
  457. package/dist/eval/eval-stats.js +17 -5
  458. package/dist/eval/eval-suite.d.ts +3 -1
  459. package/dist/eval/eval-suite.js +409 -187
  460. package/dist/eval/eval.d.ts +8 -2
  461. package/dist/eval/eval.js +8 -2
  462. package/dist/eval/judgment.js +16 -6
  463. package/dist/graph/delta.d.ts +9 -42
  464. package/dist/graph/delta.js +17 -11
  465. package/dist/graph/extract.d.ts +10 -7
  466. package/dist/graph/extract.js +57 -25
  467. package/dist/graph/recall.d.ts +12 -4
  468. package/dist/graph/recall.js +30 -13
  469. package/dist/graph/stream.d.ts +18 -6
  470. package/dist/graph/stream.js +32 -10
  471. package/dist/graph/view.d.ts +19 -6
  472. package/dist/graph/view.js +42 -17
  473. package/dist/hooks/codex-session.js +2 -2
  474. package/dist/hooks/codex-wrapper.d.ts +3 -1
  475. package/dist/hooks/codex-wrapper.js +9 -4
  476. package/dist/hooks/copilot.d.ts +19 -5
  477. package/dist/hooks/copilot.js +54 -15
  478. package/dist/hooks/hook-blocks.d.ts +4 -1
  479. package/dist/hooks/hook-blocks.js +8 -3
  480. package/dist/hooks/json-hooks.d.ts +9 -5
  481. package/dist/hooks/json-hooks.js +69 -34
  482. package/dist/hooks/opencode.js +15 -5
  483. package/dist/hooks/shared.d.ts +27 -8
  484. package/dist/hooks/shared.js +57 -16
  485. package/dist/importers/core.d.ts +12 -4
  486. package/dist/importers/core.js +8 -7
  487. package/dist/importers/markdown-parse.d.ts +15 -5
  488. package/dist/importers/markdown-parse.js +16 -7
  489. package/dist/importers/markdown.js +6 -9
  490. package/dist/importers/sources.js +10 -23
  491. package/dist/importers/vault.d.ts +2 -2
  492. package/dist/importers/vault.js +43 -27
  493. package/dist/index.d.ts +32 -6
  494. package/dist/index.js +25 -7
  495. package/dist/learn/autolearn.d.ts +17 -6
  496. package/dist/learn/autolearn.js +53 -24
  497. package/dist/learn/churn-git.d.ts +4 -1
  498. package/dist/learn/churn-git.js +29 -5
  499. package/dist/learn/extract.d.ts +4 -1
  500. package/dist/learn/extract.js +16 -9
  501. package/dist/learn/forward-claim-detector.d.ts +17 -5
  502. package/dist/learn/forward-claim-detector.js +34 -15
  503. package/dist/learn/invalidation.d.ts +12 -7
  504. package/dist/learn/invalidation.js +56 -27
  505. package/dist/learn/roots.d.ts +3 -0
  506. package/dist/learn/roots.js +5 -0
  507. package/dist/mcp/admin-tools.d.ts +5 -5
  508. package/dist/mcp/admin-tools.js +28 -23
  509. package/dist/mcp/format.d.ts +1 -1
  510. package/dist/mcp/format.js +4 -2
  511. package/dist/mcp/framing.d.ts +3 -1
  512. package/dist/mcp/framing.js +20 -8
  513. package/dist/mcp/memory-tools.d.ts +3 -3
  514. package/dist/mcp/memory-tools.js +18 -14
  515. package/dist/mcp/protocol.d.ts +32 -16
  516. package/dist/mcp/protocol.js +12 -9
  517. package/dist/mcp/recall-tools.d.ts +3 -3
  518. package/dist/mcp/recall-tools.js +62 -74
  519. package/dist/mcp/request.d.ts +7 -5
  520. package/dist/mcp/request.js +57 -74
  521. package/dist/mcp/server.d.ts +3 -1
  522. package/dist/mcp/server.js +8 -3
  523. package/dist/mcp/session-state.d.ts +1 -1
  524. package/dist/mcp/session-state.js +4 -3
  525. package/dist/mcp/shared-gate.d.ts +3 -2
  526. package/dist/mcp/shared-gate.js +3 -2
  527. package/dist/mcp/stdio.d.ts +6 -3
  528. package/dist/mcp/stdio.js +52 -21
  529. package/dist/mcp/tool-args.d.ts +4 -1
  530. package/dist/mcp/tool-args.js +8 -3
  531. package/dist/mcp/tools.js +76 -32
  532. package/dist/objects/customer-notes.d.ts +12 -10
  533. package/dist/objects/customer-notes.js +21 -15
  534. package/dist/objects/decisions.d.ts +18 -10
  535. package/dist/objects/decisions.js +23 -17
  536. package/dist/objects/descriptor.js +2 -1
  537. package/dist/objects/fields.d.ts +4 -1
  538. package/dist/objects/fields.js +6 -2
  539. package/dist/objects/incidents.d.ts +14 -16
  540. package/dist/objects/incidents.js +29 -30
  541. package/dist/objects/lifecycle.d.ts +0 -4
  542. package/dist/objects/lifecycle.js +21 -24
  543. package/dist/objects/policies.d.ts +12 -16
  544. package/dist/objects/policies.js +17 -21
  545. package/dist/objects/processes.d.ts +16 -10
  546. package/dist/objects/processes.js +20 -15
  547. package/dist/objects/project-briefs.d.ts +13 -14
  548. package/dist/objects/project-briefs.js +33 -39
  549. package/dist/objects/skills.d.ts +10 -12
  550. package/dist/objects/skills.js +17 -22
  551. package/dist/postinstall.js +15 -7
  552. package/dist/predictions/planning-fallacy.d.ts +19 -6
  553. package/dist/predictions/planning-fallacy.js +4 -2
  554. package/dist/rerankers/clef.d.ts +8 -2
  555. package/dist/rerankers/clef.js +14 -9
  556. package/dist/rerankers/cross-encoder.d.ts +2 -1
  557. package/dist/rerankers/cross-encoder.js +9 -6
  558. package/dist/rerankers/index.js +2 -1
  559. package/dist/rerankers/jev.js +2 -1
  560. package/dist/rerankers/llm.d.ts +6 -2
  561. package/dist/rerankers/llm.js +8 -3
  562. package/dist/rerankers/remote.d.ts +3 -1
  563. package/dist/rerankers/remote.js +5 -2
  564. package/dist/rerankers/types.d.ts +6 -2
  565. package/dist/search/bm25-search.d.ts +3 -1
  566. package/dist/search/bm25-search.js +15 -2
  567. package/dist/search/boosts.js +4 -3
  568. package/dist/search/embed-memories.d.ts +10 -5
  569. package/dist/search/embed-memories.js +62 -36
  570. package/dist/search/engine.d.ts +4 -1
  571. package/dist/search/engine.js +6 -2
  572. package/dist/search/goal-boost.d.ts +10 -3
  573. package/dist/search/goal-boost.js +13 -6
  574. package/dist/search/hybrid-score.d.ts +4 -1
  575. package/dist/search/hybrid-score.js +4 -1
  576. package/dist/search/hybrid.d.ts +23 -8
  577. package/dist/search/hybrid.js +12 -7
  578. package/dist/search/multihop.js +14 -13
  579. package/dist/search/path-context.d.ts +10 -3
  580. package/dist/search/path-context.js +10 -3
  581. package/dist/search/physics-search.d.ts +9 -4
  582. package/dist/search/physics-search.js +38 -14
  583. package/dist/search/rerank.d.ts +2 -1
  584. package/dist/search/rerank.js +2 -1
  585. package/dist/search/rrf.d.ts +14 -5
  586. package/dist/search/rrf.js +11 -4
  587. package/dist/search/vector.d.ts +8 -2
  588. package/dist/search/vector.js +9 -3
  589. package/dist/server/auth.d.ts +18 -14
  590. package/dist/server/auth.js +69 -38
  591. package/dist/server/boot.d.ts +3 -1
  592. package/dist/server/boot.js +95 -56
  593. package/dist/server/client-ip.d.ts +11 -4
  594. package/dist/server/client-ip.js +27 -10
  595. package/dist/server/cursor.d.ts +10 -3
  596. package/dist/server/cursor.js +10 -3
  597. package/dist/server/deadline.d.ts +5 -2
  598. package/dist/server/deadline.js +10 -3
  599. package/dist/server/key-check-bounds.js +12 -4
  600. package/dist/server/lifecycle.d.ts +4 -1
  601. package/dist/server/lifecycle.js +10 -4
  602. package/dist/server/mcp-http.d.ts +2 -1
  603. package/dist/server/mcp-http.js +37 -22
  604. package/dist/server/rate-limit.d.ts +17 -5
  605. package/dist/server/rate-limit.js +55 -26
  606. package/dist/server/ready.js +7 -4
  607. package/dist/server/request.d.ts +15 -4
  608. package/dist/server/request.js +42 -15
  609. package/dist/server/route-checks.d.ts +4 -1
  610. package/dist/server/route-checks.js +8 -3
  611. package/dist/server/route-table.d.ts +8 -6
  612. package/dist/server/route-table.js +547 -93
  613. package/dist/server/routes/admin.d.ts +7 -7
  614. package/dist/server/routes/admin.js +36 -15
  615. package/dist/server/routes/customer-notes.d.ts +5 -5
  616. package/dist/server/routes/customer-notes.js +5 -4
  617. package/dist/server/routes/decisions.d.ts +5 -5
  618. package/dist/server/routes/decisions.js +12 -6
  619. package/dist/server/routes/incidents.d.ts +5 -5
  620. package/dist/server/routes/incidents.js +10 -4
  621. package/dist/server/routes/memories.d.ts +8 -8
  622. package/dist/server/routes/memories.js +12 -19
  623. package/dist/server/routes/object-routes.d.ts +8 -5
  624. package/dist/server/routes/object-routes.js +4 -2
  625. package/dist/server/routes/policies.d.ts +6 -6
  626. package/dist/server/routes/policies.js +11 -4
  627. package/dist/server/routes/predictions.d.ts +5 -5
  628. package/dist/server/routes/predictions.js +9 -4
  629. package/dist/server/routes/processes.d.ts +5 -5
  630. package/dist/server/routes/processes.js +15 -6
  631. package/dist/server/routes/project-briefs.d.ts +6 -6
  632. package/dist/server/routes/project-briefs.js +3 -2
  633. package/dist/server/routes/recall.d.ts +3 -3
  634. package/dist/server/routes/recall.js +21 -10
  635. package/dist/server/routes/skills.d.ts +6 -6
  636. package/dist/server/routes/skills.js +12 -4
  637. package/dist/server/server-detect.d.ts +24 -8
  638. package/dist/server/server-detect.js +57 -22
  639. package/dist/server/sleep-child.js +16 -10
  640. package/dist/server/sleep-offload.d.ts +8 -5
  641. package/dist/server/sleep-offload.js +41 -19
  642. package/dist/server/tls.d.ts +4 -1
  643. package/dist/server/tls.js +13 -5
  644. package/dist/server/types.d.ts +38 -26
  645. package/dist/server/validation.d.ts +4 -1
  646. package/dist/server/validation.js +22 -9
  647. package/dist/server.d.ts +15 -10
  648. package/dist/server.js +32 -12
  649. package/dist/sharing/global-store.d.ts +5 -10
  650. package/dist/sharing/global-store.js +8 -43
  651. package/dist/sharing/global-sync.d.ts +3 -1
  652. package/dist/sharing/global-sync.js +16 -6
  653. package/dist/sharing/project-merge.d.ts +25 -7
  654. package/dist/sharing/project-merge.js +49 -17
  655. package/dist/sharing/search-both.d.ts +8 -4
  656. package/dist/sharing/search-both.js +19 -12
  657. package/dist/sharing/share.d.ts +8 -4
  658. package/dist/sharing/share.js +39 -15
  659. package/dist/store/ambient.js +9 -5
  660. package/dist/store/audit-event.d.ts +2 -2
  661. package/dist/store/audit-event.js +8 -3
  662. package/dist/store/audit.d.ts +6 -3
  663. package/dist/store/audit.js +16 -6
  664. package/dist/store/auth.d.ts +4 -2
  665. package/dist/store/auth.js +63 -20
  666. package/dist/store/busy.d.ts +9 -0
  667. package/dist/store/busy.js +16 -0
  668. package/dist/store/candidates.d.ts +12 -5
  669. package/dist/store/candidates.js +75 -36
  670. package/dist/store/capture-write.d.ts +2 -1
  671. package/dist/store/capture-write.js +2 -1
  672. package/dist/store/card-detail.d.ts +4 -4
  673. package/dist/store/card-detail.js +15 -8
  674. package/dist/store/cards.d.ts +24 -10
  675. package/dist/store/cards.js +93 -60
  676. package/dist/store/compaction-caller.d.ts +2 -1
  677. package/dist/store/compaction-caller.js +2 -1
  678. package/dist/store/compactions-record.d.ts +14 -8
  679. package/dist/store/compactions-record.js +95 -32
  680. package/dist/store/compactions.js +35 -15
  681. package/dist/store/conflicts.d.ts +9 -4
  682. package/dist/store/conflicts.js +100 -45
  683. package/dist/store/connectors/dlq.d.ts +17 -5
  684. package/dist/store/connectors/dlq.js +56 -5
  685. package/dist/store/connectors/event-log.d.ts +111 -2
  686. package/dist/store/connectors/event-log.js +2 -1
  687. package/dist/store/connectors/github.d.ts +6 -3
  688. package/dist/store/connectors/github.js +24 -40
  689. package/dist/store/connectors/slack.d.ts +2 -1
  690. package/dist/store/connectors/slack.js +25 -37
  691. package/dist/store/dashboard-reads.d.ts +7 -3
  692. package/dist/store/dashboard-reads.js +32 -11
  693. package/dist/store/delete-and-batch.d.ts +17 -11
  694. package/dist/store/delete-and-batch.js +67 -26
  695. package/dist/store/delivery-recorder.d.ts +8 -5
  696. package/dist/store/delivery-recorder.js +70 -32
  697. package/dist/store/descendant-page.d.ts +2 -1
  698. package/dist/store/descendant-page.js +24 -9
  699. package/dist/store/diagnostics.d.ts +2 -1
  700. package/dist/store/diagnostics.js +2 -1
  701. package/dist/store/doctor-reads.d.ts +2 -1
  702. package/dist/store/doctor-reads.js +13 -5
  703. package/dist/store/dormant.d.ts +19 -11
  704. package/dist/store/dormant.js +40 -18
  705. package/dist/store/embeddings/index.d.ts +13 -9
  706. package/dist/store/embeddings/index.js +19 -12
  707. package/dist/store/entry-reads.d.ts +49 -20
  708. package/dist/store/entry-reads.js +181 -66
  709. package/dist/store/entry-row.d.ts +10 -6
  710. package/dist/store/entry-row.js +17 -12
  711. package/dist/store/entry-writes.d.ts +22 -10
  712. package/dist/store/entry-writes.js +41 -14
  713. package/dist/store/failure-log-at.js +1 -1
  714. package/dist/store/failure-log.d.ts +4 -2
  715. package/dist/store/failure-log.js +13 -6
  716. package/dist/store/gated-write.d.ts +3 -3
  717. package/dist/store/gated-write.js +3 -3
  718. package/dist/store/goals.d.ts +5 -4
  719. package/dist/store/goals.js +8 -10
  720. package/dist/store/graph-apply.d.ts +21 -0
  721. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  722. package/dist/store/graph-queue.d.ts +9 -6
  723. package/dist/store/graph-queue.js +15 -10
  724. package/dist/store/graph-reads.d.ts +16 -11
  725. package/dist/store/graph-reads.js +24 -15
  726. package/dist/store/graph-rows.d.ts +41 -3
  727. package/dist/store/graph-rows.js +10 -7
  728. package/dist/store/graph-view-rows.js +14 -7
  729. package/dist/store/graph-writes.d.ts +16 -10
  730. package/dist/store/graph-writes.js +59 -36
  731. package/dist/store/handoffs.d.ts +4 -4
  732. package/dist/store/handoffs.js +40 -19
  733. package/dist/store/index-and-stats.d.ts +2 -2
  734. package/dist/store/index-and-stats.js +6 -5
  735. package/dist/store/index.d.ts +3 -1
  736. package/dist/store/index.js +1 -0
  737. package/dist/store/key-audit.d.ts +2 -1
  738. package/dist/store/key-audit.js +2 -1
  739. package/dist/store/key-writes.d.ts +2 -1
  740. package/dist/store/key-writes.js +9 -2
  741. package/dist/store/ledger-turn.d.ts +4 -1
  742. package/dist/store/ledger-turn.js +7 -2
  743. package/dist/store/mirrors.d.ts +11 -4
  744. package/dist/store/mirrors.js +88 -16
  745. package/dist/store/narrow.d.ts +6 -0
  746. package/dist/store/narrow.js +11 -0
  747. package/dist/store/open.d.ts +4 -2
  748. package/dist/store/open.js +18 -9
  749. package/dist/store/pilot-arm.d.ts +2 -1
  750. package/dist/store/pilot-arm.js +18 -6
  751. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  752. package/dist/store/planning-fallacy-evidence.js +8 -5
  753. package/dist/store/port/agent-import.d.ts +62 -0
  754. package/dist/store/port/agent-import.js +2 -0
  755. package/dist/store/port/consolidation.d.ts +129 -0
  756. package/dist/store/port/consolidation.js +2 -0
  757. package/dist/store/port/learning.d.ts +19 -0
  758. package/dist/store/port/learning.js +2 -0
  759. package/dist/store/port/local-files.d.ts +18 -0
  760. package/dist/store/port/local-files.js +2 -0
  761. package/dist/store/port/promotion.d.ts +20 -0
  762. package/dist/store/port/promotion.js +3 -0
  763. package/dist/store/port-groups.d.ts +160 -0
  764. package/dist/store/port-groups.js +2 -0
  765. package/dist/store/port.d.ts +215 -229
  766. package/dist/store/port.js +3 -9
  767. package/dist/store/predictions.d.ts +14 -10
  768. package/dist/store/predictions.js +37 -17
  769. package/dist/store/project-tags.d.ts +4 -1
  770. package/dist/store/project-tags.js +16 -5
  771. package/dist/store/quality-repair.d.ts +8 -4
  772. package/dist/store/quality-repair.js +53 -20
  773. package/dist/store/quarantine.d.ts +1 -0
  774. package/dist/store/quarantine.js +23 -9
  775. package/dist/store/raw-archive.d.ts +5 -4
  776. package/dist/store/raw-archive.js +11 -10
  777. package/dist/store/recall-trace.d.ts +22 -17
  778. package/dist/store/recall-trace.js +126 -63
  779. package/dist/store/rejected-values.d.ts +15 -10
  780. package/dist/store/rejected-values.js +33 -12
  781. package/dist/store/rejection.d.ts +12 -11
  782. package/dist/store/rejection.js +18 -19
  783. package/dist/store/report-reads.d.ts +2 -1
  784. package/dist/store/report-reads.js +2 -1
  785. package/dist/store/rows.d.ts +7 -5
  786. package/dist/store/rows.js +18 -11
  787. package/dist/store/rule-sql.d.ts +6 -4
  788. package/dist/store/rule-sql.js +16 -9
  789. package/dist/store/search-rows.d.ts +14 -9
  790. package/dist/store/search-rows.js +48 -23
  791. package/dist/store/sessions.d.ts +12 -10
  792. package/dist/store/sessions.js +40 -21
  793. package/dist/store/set-aside.d.ts +2 -2
  794. package/dist/store/set-aside.js +18 -5
  795. package/dist/store/sqlite/agent-import.d.ts +3 -0
  796. package/dist/store/sqlite/agent-import.js +77 -0
  797. package/dist/store/sqlite/cards-group.d.ts +6 -0
  798. package/dist/store/sqlite/cards-group.js +37 -0
  799. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  800. package/dist/store/sqlite/conflicts-group.js +18 -0
  801. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  802. package/dist/store/sqlite/connector-events-group.js +17 -6
  803. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  804. package/dist/store/sqlite/connector-writes-group.js +9 -4
  805. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  806. package/dist/store/sqlite/consolidation-group.js +64 -0
  807. package/dist/store/sqlite/dag-reads-group.js +1 -1
  808. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  809. package/dist/store/sqlite/dormant-group.js +29 -0
  810. package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
  811. package/dist/store/sqlite/entry-writes-group.js +37 -14
  812. package/dist/store/sqlite/error-codec.d.ts +4 -2
  813. package/dist/store/sqlite/error-codec.js +32 -10
  814. package/dist/store/sqlite/executor-counts.js +2 -1
  815. package/dist/store/sqlite/executor.d.ts +8 -3
  816. package/dist/store/sqlite/executor.js +56 -18
  817. package/dist/store/sqlite/global-promote.d.ts +5 -0
  818. package/dist/store/sqlite/global-promote.js +48 -0
  819. package/dist/store/sqlite/goals-group.d.ts +6 -0
  820. package/dist/store/sqlite/goals-group.js +23 -0
  821. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  822. package/dist/store/sqlite/graph-reads-group.js +2 -1
  823. package/dist/store/sqlite/held-connection.d.ts +7 -1
  824. package/dist/store/sqlite/held-connection.js +34 -7
  825. package/dist/store/sqlite/last-recall-group.d.ts +4 -2
  826. package/dist/store/sqlite/last-recall-group.js +9 -4
  827. package/dist/store/sqlite/learning-group.d.ts +4 -0
  828. package/dist/store/sqlite/learning-group.js +17 -0
  829. package/dist/store/sqlite/maintenance-groups.js +2 -1
  830. package/dist/store/sqlite/object-rows.d.ts +6 -3
  831. package/dist/store/sqlite/object-rows.js +34 -5
  832. package/dist/store/sqlite/objects-group.d.ts +5 -4
  833. package/dist/store/sqlite/objects-group.js +84 -33
  834. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  835. package/dist/store/sqlite/predictions-group.js +4 -2
  836. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  837. package/dist/store/sqlite/promotion-group.js +10 -0
  838. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  839. package/dist/store/sqlite/quarantine-group.js +4 -2
  840. package/dist/store/sqlite/reports-group.d.ts +6 -0
  841. package/dist/store/sqlite/reports-group.js +33 -0
  842. package/dist/store/sqlite/request-scope.d.ts +6 -0
  843. package/dist/store/sqlite/request-scope.js +18 -0
  844. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  845. package/dist/store/sqlite/sessions-group.js +46 -0
  846. package/dist/store/sqlite/store.d.ts +22 -11
  847. package/dist/store/sqlite/store.js +84 -11
  848. package/dist/store/sqlite/vector-pack.js +2 -1
  849. package/dist/store/sqlite/vector-reads-group.js +2 -1
  850. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  851. package/dist/store/sqlite/worker-jobs.js +19 -7
  852. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  853. package/dist/store/sqlite/worker-ops.js +6 -3
  854. package/dist/store/sqlite/worker-store.d.ts +4 -3
  855. package/dist/store/sqlite/worker-store.js +24 -14
  856. package/dist/store/summaries.d.ts +19 -12
  857. package/dist/store/summaries.js +36 -21
  858. package/dist/store/summary-dirty.d.ts +2 -1
  859. package/dist/store/summary-dirty.js +2 -1
  860. package/dist/store/tenant.d.ts +3 -2
  861. package/dist/store/tenant.js +5 -4
  862. package/dist/store/token-ledger-rows.js +6 -3
  863. package/dist/store/token-ledger.d.ts +19 -13
  864. package/dist/store/token-ledger.js +27 -14
  865. package/dist/store/tombstone-checks.d.ts +4 -1
  866. package/dist/store/tombstone-checks.js +10 -1
  867. package/dist/store/usage-reports.js +2 -1
  868. package/dist/store/vector-index.d.ts +8 -5
  869. package/dist/store/vector-index.js +24 -10
  870. package/dist/store/working-memory.d.ts +6 -4
  871. package/dist/store/working-memory.js +14 -9
  872. package/dist/support-bundle.js +10 -5
  873. package/dist/trust/quarantine.d.ts +1 -2
  874. package/dist/trust/quarantine.js +1 -5
  875. package/dist/trust/reject-flow.d.ts +12 -3
  876. package/dist/trust/reject-flow.js +12 -4
  877. package/dist/util/anthropic-messages.d.ts +4 -1
  878. package/dist/util/anthropic-messages.js +14 -5
  879. package/dist/util/atomic-write.d.ts +4 -2
  880. package/dist/util/atomic-write.js +25 -14
  881. package/dist/util/compaction-items.d.ts +4 -1
  882. package/dist/util/compaction-items.js +8 -2
  883. package/dist/util/crash-handlers.d.ts +7 -2
  884. package/dist/util/crash-handlers.js +13 -4
  885. package/dist/util/env.d.ts +16 -4
  886. package/dist/util/env.js +78 -25
  887. package/dist/util/home-path.js +12 -6
  888. package/dist/util/hook-payload.d.ts +3 -1
  889. package/dist/util/hook-payload.js +3 -1
  890. package/dist/util/http-retry.d.ts +12 -6
  891. package/dist/util/http-retry.js +16 -6
  892. package/dist/util/http-util.d.ts +20 -5
  893. package/dist/util/http-util.js +28 -9
  894. package/dist/util/json.d.ts +4 -1
  895. package/dist/util/json.js +4 -1
  896. package/dist/util/keyset.js +2 -1
  897. package/dist/util/limits.js +4 -2
  898. package/dist/util/log.d.ts +13 -5
  899. package/dist/util/log.js +29 -6
  900. package/dist/util/net.d.ts +5 -0
  901. package/dist/util/net.js +19 -0
  902. package/dist/util/real-path.d.ts +2 -1
  903. package/dist/util/real-path.js +4 -3
  904. package/dist/util/request-scope.d.ts +11 -3
  905. package/dist/util/request-scope.js +13 -4
  906. package/dist/util/same-text.d.ts +10 -3
  907. package/dist/util/same-text.js +10 -3
  908. package/dist/util/secret-detect.d.ts +24 -7
  909. package/dist/util/secret-detect.js +49 -14
  910. package/dist/util/spawn-argv.d.ts +3 -1
  911. package/dist/util/spawn-argv.js +13 -4
  912. package/dist/util/sqlite-blocked.d.ts +15 -4
  913. package/dist/util/sqlite-blocked.js +19 -6
  914. package/dist/util/stored-json.d.ts +4 -1
  915. package/dist/util/stored-json.js +6 -2
  916. package/dist/util/stream-tee.d.ts +2 -1
  917. package/dist/util/stream-tee.js +8 -5
  918. package/dist/util/transcript-tail.d.ts +4 -1
  919. package/dist/util/transcript-tail.js +4 -1
  920. package/dist/util/version.d.ts +8 -3
  921. package/dist/util/version.js +8 -3
  922. package/dist/util/write-budget.d.ts +7 -2
  923. package/dist/util/write-budget.js +5 -2
  924. package/dist/util/yaml.d.ts +4 -1
  925. package/dist/util/yaml.js +4 -1
  926. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  927. package/extensions/openclaw-plugin/package.json +1 -1
  928. package/openclaw.plugin.json +1 -1
  929. package/package.json +2 -1
  930. package/scripts/postinstall.cjs +3 -1
  931. package/dist/api/cards.d.ts +0 -42
  932. package/dist/api/conflicts.d.ts +0 -28
  933. package/dist/api/conflicts.js +0 -61
  934. package/dist/api/dormant.d.ts +0 -14
  935. package/dist/api/dormant.js +0 -58
  936. package/dist/api/goals.d.ts +0 -18
  937. package/dist/api/graph.d.ts +0 -8
  938. package/dist/api/graph.js +0 -8
  939. package/dist/api/learn.js +0 -125
  940. package/dist/api/memories.d.ts +0 -25
  941. package/dist/api/objects.d.ts +0 -9
  942. package/dist/api/outcome.d.ts +0 -19
  943. package/dist/api/predictions.d.ts +0 -11
  944. package/dist/api/promote.d.ts +0 -36
  945. package/dist/api/recall-core.d.ts +0 -4
  946. package/dist/api/recall-core.js +0 -125
  947. package/dist/api/recall-finish.d.ts +0 -53
  948. package/dist/api/recall-finish.js +0 -30
  949. package/dist/api/recall-history.d.ts +0 -64
  950. package/dist/api/recall-history.js +0 -159
  951. package/dist/api/recall-record.d.ts +0 -43
  952. package/dist/api/recall-record.js +0 -78
  953. package/dist/api/recall-request.js +0 -121
  954. package/dist/api/recall.d.ts +0 -6
  955. package/dist/api/refine.d.ts +0 -7
  956. package/dist/api/refine.js +0 -10
  957. package/dist/api/session-owners.d.ts +0 -4
  958. package/dist/api/session-owners.js +0 -17
  959. package/dist/api/sleep-run.d.ts +0 -26
  960. package/dist/api/sleep.js +0 -11
  961. package/dist/graph/write.d.ts +0 -14
  962. package/dist/store/sqlite/busy.d.ts +0 -3
  963. package/dist/store/sqlite/busy.js +0 -8
  964. package/dist/store/sqlite/local.d.ts +0 -4
  965. package/dist/store/sqlite/local.js +0 -8
@@ -10,17 +10,23 @@ import * as client from './client.js';
10
10
  import { detectServer, removePidfileIfOwned } from '../server/server-detect.js';
11
11
  import { learn, CLI_LEARN } from '../api/index.js';
12
12
  import { cliApiContext } from './api-context.js';
13
- import { errorMessage, log } from '../util/log.js';
13
+ import { errorMessage, log, errorFields } from '../util/log.js';
14
14
  import { printError } from './output.js';
15
15
  export function requireInit(hippoRoot) {
16
16
  if (!isInitialized(hippoRoot)) {
17
- printError(`No hippo store at ${hippoRoot} (searched ${process.cwd()} and its parents up to your home directory). Run \`hippo init\` first.`);
17
+ printError(`No hippo store at ${hippoRoot} (searched ${process.cwd()} and its parents up to your home directory). Run ` +
18
+ `\`hippo init\` first.`);
18
19
  process.exit(1);
19
20
  }
20
21
  }
21
22
  /** Runs detectChurnStale against every store this repo's memories can live in. */
22
23
  export function runChurnStaleForRepo(hippoRoot, tenantId, dryRun) {
23
- const repoRoot = execFileSync('git', ['rev-parse', '--show-toplevel'], { cwd: process.cwd(), encoding: 'utf8', timeout: 10_000, windowsHide: true }).trim();
24
+ const repoRoot = execFileSync('git', ['rev-parse', '--show-toplevel'], {
25
+ cwd: process.cwd(),
26
+ encoding: 'utf8',
27
+ timeout: 10_000,
28
+ windowsHide: true,
29
+ }).trim();
24
30
  const { name: projectName, legacyName } = resolveProjectIdentity(process.cwd());
25
31
  const globalRoot = getGlobalRoot();
26
32
  const roots = globalRoot !== hippoRoot && isInitialized(globalRoot) ? [hippoRoot, globalRoot] : [hippoRoot];
@@ -31,11 +37,16 @@ export function runChurnStaleForRepo(hippoRoot, tenantId, dryRun) {
31
37
  }
32
38
  catch (err) {
33
39
  const message = errorMessage(err);
34
- return { root, result: { checked: 0, marked: 0, alreadyMarked: 0, skippedPinned: [], dryRun, preview: [], error: message } };
40
+ return {
41
+ root,
42
+ result: { checked: 0, marked: 0, alreadyMarked: 0, skippedPinned: [], dryRun, preview: [], error: message },
43
+ };
35
44
  }
36
45
  });
37
46
  }
38
- /** With HIPPO_REQUIRE_SERVER set, throw rather than fall back to direct DB mode, which would mask a misconfiguration and discard HIPPO_API_KEY.
47
+ /**
48
+ * With HIPPO_REQUIRE_SERVER set, throw rather than fall back to direct DB mode, which would mask a misconfiguration and
49
+ * discard HIPPO_API_KEY.
39
50
  * Guards only the routed writes (remember, forget, archive, promote). */
40
51
  function failIfServerRequired(reason) {
41
52
  if (envRequireServer()) {
@@ -43,7 +54,9 @@ function failIfServerRequired(reason) {
43
54
  `Start \`hippo serve\`, or unset HIPPO_REQUIRE_SERVER to allow direct-mode fallback.`);
44
55
  }
45
56
  }
46
- /** Run an HTTP-routed command if a `hippo serve` is detected: true if it ran, false on no server or a stale pidfile (removed if it names the dead server).
57
+ /**
58
+ * Run an HTTP-routed command if a `hippo serve` is detected: true if it ran, false on no server or a stale pidfile
59
+ * (removed if it names the dead server).
47
60
  * With HIPPO_REQUIRE_SERVER set both fallbacks throw; a stale pidfile must self-heal, not crash. */
48
61
  export async function runViaServerIfAvailable(hippoRoot, httpFn) {
49
62
  const info = await detectServer(hippoRoot);
@@ -60,16 +73,18 @@ export async function runViaServerIfAvailable(hippoRoot, httpFn) {
60
73
  const failure = err instanceof Error ? client.classifyTransportFailure(err) : 'none';
61
74
  if (failure === 'never-sent') {
62
75
  failIfServerRequired('the server pidfile was stale (connection refused)');
63
- log.warn('stale server pidfile detected, falling back to direct mode');
76
+ log.warn('stale server pidfile detected, falling back to direct mode', errorFields(err));
64
77
  // Clear the pidfile only if it still names the dead server we just
65
78
  // probed — a newer server may have rewritten it (removePidfileIfOwned).
66
79
  removePidfileIfOwned(hippoRoot, { pid: info.pid, startedAt: info.started_at });
67
80
  return false;
68
81
  }
69
82
  if (failure === 'delivery-unknown') {
70
- // Every caller is a non-idempotent write, so replaying on the direct path would store a row the server may already have committed;
83
+ // Every caller is a non-idempotent write, so replaying on the direct path would store a row the server may
84
+ // already have committed;
71
85
  // leave the pidfile alone: the next command's connect-phase failure heals it.
72
- printError(`hippo: the connection to ${info.url} dropped or timed out mid-request, so the write may already have been applied. ` +
86
+ printError(`hippo: the connection to ${info.url} dropped or timed out mid-request, so the write may already have been ` +
87
+ `applied. ` +
73
88
  'Not retrying locally. Check with `hippo recall` before running this again.');
74
89
  process.exit(1);
75
90
  }
package/dist/cli/slack.js CHANGED
@@ -9,7 +9,8 @@ import { addWorkspace as addSlackWorkspace, listWorkspaces as listSlackWorkspace
9
9
  import { printError } from './output.js';
10
10
  import { printSlackBackfillUsage, printSlackWorkspacesUsage } from './usage.js';
11
11
  import { stringFlag } from './flag-values.js';
12
- import { CliExit } from './exit.js';
12
+ import { cliApiContext } from './api-context.js';
13
+ import { CliExit, fail } from './exit.js';
13
14
  // Slack subcommands (`hippo slack backfill` / `hippo slack dlq list`)
14
15
  function cmdSlackBackfill(hippoRoot, tenantId, flags) {
15
16
  const channel = stringFlag(flags, 'channel');
@@ -23,15 +24,12 @@ function cmdSlackBackfill(hippoRoot, tenantId, flags) {
23
24
  printError('SLACK_BOT_TOKEN is not set. Backfill requires a Slack bot token with channels:history scope.');
24
25
  throw new CliExit(2);
25
26
  }
26
- // --since is advisory in V1: the slack_cursors row drives resume, so the backfill loop always continues where it left off (keeps idempotency clean).
27
+ // --since is advisory in V1: the slack_cursors row drives resume, so the backfill loop always continues where it left
28
+ // off (keeps idempotency clean).
27
29
  const sinceIso = stringFlag(flags, 'since');
28
30
  void sinceIso;
29
31
  const fetcher = slackHistoryFetcher(token);
30
- const ctx = {
31
- hippoRoot,
32
- tenantId,
33
- actor: api.adminActor('cli:slack-backfill'),
34
- };
32
+ const ctx = { ...cliApiContext(hippoRoot, tenantId), actor: api.adminActor('cli:slack-backfill') };
35
33
  backfillChannel(ctx, {
36
34
  teamId: envSlackTeamId() ?? 'T_UNKNOWN',
37
35
  channel: { id: channel, is_private: false },
@@ -51,25 +49,22 @@ function cmdSlackDlqList(hippoRoot, tenantId, _flags) {
51
49
  console.log(`${it.id}\t${it.receivedAt}\t${it.error}`);
52
50
  }
53
51
  }
54
- async function cmdSlackDlqReplay(hippoRoot, args, flags) {
52
+ async function cmdSlackDlqReplay(hippoRoot, tenantId, args, flags) {
55
53
  const idArg = args[2];
56
54
  if (!idArg) {
57
- printError('Usage: hippo slack dlq replay <id> [--force]');
58
- throw new CliExit(1);
55
+ fail('Usage: hippo slack dlq replay <id> [--force]');
59
56
  }
60
57
  const id = Number(idArg);
61
58
  if (!Number.isFinite(id) || !Number.isInteger(id) || id < 1) {
62
- printError(`replay: invalid id ${idArg}`);
63
- throw new CliExit(1);
59
+ fail(`replay: invalid id ${idArg}`);
64
60
  }
65
61
  const force = flags.force === true;
66
- const result = await replayDlqEntry({ hippoRoot }, id, {
62
+ const result = await replayDlqEntry(cliApiContext(hippoRoot, tenantId), id, {
67
63
  force,
68
64
  signingSecret: envSlackSigningSecret(),
69
65
  });
70
66
  if (!result.ok) {
71
- printError(`replay failed: status=${result.status} retry_count=${result.retryCount}${result.reason ? ` reason=${result.reason}` : ''}`);
72
- throw new CliExit(1);
67
+ fail(`replay failed: status=${result.status} retry_count=${result.retryCount}${result.reason ? ` reason=${result.reason}` : ''}`);
73
68
  }
74
69
  console.log(`replay ok: status=${result.status} memory_id=${result.memoryId ?? '(none)'} retry_count=${result.retryCount}`);
75
70
  }
@@ -77,8 +72,7 @@ function cmdSlackWorkspacesAdd(hippoRoot, flags) {
77
72
  const teamId = (stringFlag(flags, 'team') ?? '').trim();
78
73
  const tenantId = (stringFlag(flags, 'tenant') ?? '').trim();
79
74
  if (!teamId || !tenantId) {
80
- printError('Usage: hippo slack workspaces add --team <T> --tenant <t>');
81
- throw new CliExit(1);
75
+ fail('Usage: hippo slack workspaces add --team <T> --tenant <t>');
82
76
  }
83
77
  const ws = addSlackWorkspace(hippoRoot, { teamId, tenantId });
84
78
  console.log(`added: ${ws.teamId} -> ${ws.tenantId} (${ws.addedAt})`);
@@ -96,13 +90,11 @@ function cmdSlackWorkspacesList(hippoRoot) {
96
90
  function cmdSlackWorkspacesRemove(hippoRoot, flags) {
97
91
  const teamId = (stringFlag(flags, 'team') ?? '').trim();
98
92
  if (!teamId) {
99
- printError('Usage: hippo slack workspaces remove --team <T>');
100
- throw new CliExit(1);
93
+ fail('Usage: hippo slack workspaces remove --team <T>');
101
94
  }
102
95
  const removed = removeSlackWorkspace(hippoRoot, teamId);
103
96
  if (!removed) {
104
- printError(`no workspace registered for team ${teamId}`);
105
- throw new CliExit(1);
97
+ fail(`no workspace registered for team ${teamId}`);
106
98
  }
107
99
  console.log(`removed: ${teamId}`);
108
100
  }
@@ -117,7 +109,7 @@ export async function handleSlack({ hippoRoot, tenantId, args, flags }) {
117
109
  return;
118
110
  }
119
111
  if (sub === 'dlq' && args[1] === 'replay') {
120
- await cmdSlackDlqReplay(hippoRoot, args, flags);
112
+ await cmdSlackDlqReplay(hippoRoot, tenantId, args, flags);
121
113
  return;
122
114
  }
123
115
  if (sub === 'workspaces') {
@@ -137,7 +129,6 @@ export async function handleSlack({ hippoRoot, tenantId, args, flags }) {
137
129
  printSlackWorkspacesUsage();
138
130
  throw new CliExit(1);
139
131
  }
140
- printError('Usage: hippo slack <backfill|dlq list|dlq replay <id> [--force]|workspaces add|workspaces list|workspaces remove> [...]');
141
- throw new CliExit(1);
132
+ fail('Usage: hippo slack <backfill|dlq list|dlq replay <id> [--force]|workspaces add|workspaces list|workspaces remove> [...]');
142
133
  }
143
134
  //# sourceMappingURL=slack.js.map
@@ -1,4 +1,6 @@
1
1
  import type * as api from '../api/index.js';
2
- /** The lines `hippo sleep` prints for an api.sleep result; pure, so the snapshot tests read them without a console spy. */
2
+ /**
3
+ * The lines `hippo sleep` prints for an api.sleep result; pure, so the snapshot tests read them without a console spy.
4
+ */
3
5
  export declare function sleepResultLines(result: api.SleepResult): string[];
4
6
  //# sourceMappingURL=sleep-render.d.ts.map
@@ -1,6 +1,8 @@
1
1
  // The text `hippo sleep` prints for an api.sleep result, kept pure so tests read the lines directly.
2
2
  import { renderAmbientSummary } from '../core/ambient.js';
3
- /** The lines `hippo sleep` prints for an api.sleep result; pure, so the snapshot tests read them without a console spy. */
3
+ /**
4
+ * The lines `hippo sleep` prints for an api.sleep result; pure, so the snapshot tests read them without a console spy.
5
+ */
4
6
  export function sleepResultLines(result) {
5
7
  return [...sleepCountLines(result), ...(result.dryRun ? ['\n(dry run - nothing ' +
6
8
  'written)'] : []), ...sleepDedupeAndAuditLines(result), ...sleepShareAndGraphLines(result)];
@@ -31,12 +33,12 @@ function sleepDedupeAndAuditLines(result) {
31
33
  parts.push(`${epiDups} duplicate episodic lessons`);
32
34
  if (crossDups > 0)
33
35
  parts.push(`${crossDups} cross-layer duplicates`);
34
- lines.push(`\n${result.dryRun ? 'Would ' +
35
- 'dedupe' : 'Deduped'} ${removed} duplicates (${parts.join(', ')}). ${result.dryRun ? 'Would keep' : 'Kept'} stronger copies.`);
36
+ lines.push(`\n${result.dryRun ? 'Would ' + 'dedupe' : 'Deduped'} ${removed} duplicates (${parts.join(', ')}). ${result.dryRun ? 'Would keep' : 'Kept'} stronger copies.`);
36
37
  }
37
38
  if (result.audit) {
38
39
  if (result.audit.errorsRemoved > 0) {
39
- lines.push(`\nAudit: ${result.dryRun ? 'would remove' : 'removed'} ${result.audit.errorsRemoved} junk memories (too short/empty).`);
40
+ lines.push(`\nAudit: ${result.dryRun ? 'would remove' : 'removed'} ${result.audit.errorsRemoved} junk memories (too ` +
41
+ `short/empty).`);
40
42
  }
41
43
  if (result.audit.warningCount > 0) {
42
44
  lines.push(`Audit: ${result.audit.warningCount} low-quality memories detected (run \`hippo audit\` for details).`);
@@ -51,7 +53,8 @@ function sleepShareAndGraphLines(result) {
51
53
  }
52
54
  if (result.secretSkipped !== undefined && result.secretSkipped > 0) {
53
55
  // The secret veto is never silent.
54
- lines.push(`\nAuto-share: withheld ${result.secretSkipped} secret-flagged ${result.secretSkipped === 1 ? 'memory' : 'memories'} (secret veto).`);
56
+ lines.push(`\nAuto-share: withheld ${result.secretSkipped} secret-flagged ` +
57
+ `${result.secretSkipped === 1 ? 'memory' : 'memories'} (secret veto).`);
55
58
  }
56
59
  if (result.ambient)
57
60
  lines.push(`\n${renderAmbientSummary(result.ambient)}`);
package/dist/cli/sleep.js CHANGED
@@ -17,7 +17,8 @@ import { repairQualityOnceAt } from './quality-repair-once.js';
17
17
  import { printError } from './output.js';
18
18
  /** Runs `hippo sleep`; with `--log-file` it also tees its output to that file. */
19
19
  export async function cmdSleep(hippoRoot, tenantId, flags) {
20
- // Tee stdout/stderr to a log file when --log-file is set; the SessionEnd hook uses it so the SessionStart hook can re-display the output.
20
+ // Tee stdout/stderr to a log file when --log-file is set; the SessionEnd hook uses it so the SessionStart hook can
21
+ // re-display the output.
21
22
  const logFile = stringFlag(flags, 'log-file') ?? null;
22
23
  let restoreStdout = null;
23
24
  if (logFile) {
@@ -61,7 +62,9 @@ function repairProjectTagsOnce(hippoRoot, tenantId) {
61
62
  const parts = [
62
63
  r.copies.length > 0 ? `set aside ${r.copies.length} misfiled note imports` : '',
63
64
  r.folds.length > 0 ? `folded ${r.folds.map((f) => `${f.from} into ${f.into}`).join(', ')}` : '',
64
- r.toProject.length + r.setAside.length > 0 ? `re-tagged ${r.toProject.length + r.setAside.length} merged memories` : '',
65
+ r.toProject.length + r.setAside.length > 0
66
+ ? `re-tagged ${r.toProject.length + r.setAside.length} merged memories`
67
+ : '',
65
68
  ].filter((p) => p !== '');
66
69
  console.log(`Repaired project tags once after the upgrade: ${parts.join('; ')} (backup: ${r.backup}).`);
67
70
  }
@@ -69,13 +72,13 @@ function repairProjectTagsOnce(hippoRoot, tenantId) {
69
72
  log.warn(`project tag repair skipped, retried next sleep: ${errorMessage(err)}`);
70
73
  }
71
74
  }
72
- async function cmdSleepCore(hippoRoot, tenantId, flags) {
73
- requireInit(hippoRoot);
75
+ async function learnBeforeSleep(hippoRoot, tenantId, flags) {
74
76
  // Phase 1: Auto-learn from git and every coding agent's own memories (CLI-only, uses process.cwd() / os.homedir()).
75
77
  // Stays in cli.ts; api.sleep covers Phase 2-6 only.
76
78
  const learn = !flags['no-learn'] && !skipLearnOnSharedStore(hippoRoot);
77
79
  if (learn && flags['dry-run']) {
78
- console.log("Dry run: skipped learning from git commits and coding agents' own memories (`hippo import --agents --dry-run` previews those).");
80
+ console.log("Dry run: skipped learning from git commits and coding agents' own memories (`hippo import --agents --dry-run` " +
81
+ "previews those).");
79
82
  }
80
83
  else if (learn) {
81
84
  const config = loadConfig(hippoRoot);
@@ -95,11 +98,16 @@ async function cmdSleepCore(hippoRoot, tenantId, flags) {
95
98
  }
96
99
  printAgentImport(importForStore(hippoRoot, { machine: currentMachine() }), '');
97
100
  }
101
+ }
102
+ async function cmdSleepCore(hippoRoot, tenantId, flags) {
103
+ requireInit(hippoRoot);
104
+ await learnBeforeSleep(hippoRoot, tenantId, flags);
98
105
  // Finishes compactions a killed or busy post-compact hook left; never throws, and a dry run writes nothing.
99
106
  if (!flags['dry-run']) {
100
107
  const finished = replayCompactionsAt(hippoRoot, (message) => log.warn(`compaction replay: ${message}`));
101
- if (finished > 0)
108
+ if (finished > 0) {
102
109
  console.log(`Finished saving ${finished} compaction${finished === 1 ? '' : 's'} left over from earlier sessions.`);
110
+ }
103
111
  repairProjectTagsOnce(hippoRoot, tenantId);
104
112
  await repairQualityOnceAt(hippoRoot, tenantId);
105
113
  }
@@ -2,11 +2,11 @@ import { type PhysicsParticle } from '../core/physics.js';
2
2
  import { type CommandContext } from './flag-values.js';
3
3
  export declare function handleStatus({ hippoRoot, tenantId }: CommandContext): void;
4
4
  export declare function physicsEnergyText(particles: PhysicsParticle[], gMemory: number): string;
5
- /** `hippo tokens [--days <n>] [--json] [--global]`: the token ledger per surface, tokens saved by skipped unchanged blocks, and re-read hook tokens.
6
- * Counts are estimates (characters / 4), the same estimate every budget uses. */
7
- export declare function handleTokens({ hippoRoot, tenantId, flags }: CommandContext): void;
5
+ /** `hippo tokens [--days <n>] [--json] [--global]`: the token ledger per surface, tokens saved by skipped unchanged
6
+ * blocks, and re-read hook tokens. Counts are estimates (characters / 4), the same estimate every budget uses. */
7
+ export declare function handleTokens({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
8
8
  /** `hippo failures [--days <n>] [--json] [--global]`: failed tool calls by outcome, and repeats across sessions. */
9
- export declare function handleFailures({ hippoRoot, tenantId, flags }: CommandContext): void;
9
+ export declare function handleFailures({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
10
10
  export declare function handleCorrectionLatency({ hippoRoot, tenantId, flags }: CommandContext): void;
11
11
  export declare function handleProvenance({ hippoRoot, tenantId, flags }: CommandContext): void;
12
12
  export declare function handleDoctor({ flags }: CommandContext): void;
@@ -15,10 +15,10 @@ import { PACKAGE_VERSION } from '../util/version.js';
15
15
  import { FAILURE_LOG_RETENTION_DAYS } from '../store/failure-log.js';
16
16
  import { getGlobalRoot } from '../sharing/global-store.js';
17
17
  import * as api from '../api/index.js';
18
- import { getMemory } from '../api/memories.js';
18
+ import { getMemory } from '../api/memories/memories.js';
19
19
  import { correctionLatencyReport, embeddingReindexNeeded, provenanceCoverageReport, storeStatus, storedParticles, vectorSummary, } from '../api/status.js';
20
20
  import { cliApiContext } from './api-context.js';
21
- import { errorMessage, log } from '../util/log.js';
21
+ import { errorMessage, log, errorFields } from '../util/log.js';
22
22
  import { printError } from './output.js';
23
23
  import { parseCountFlag, stringFlagOrExit, flagIsTrue } from './flag-values.js';
24
24
  import { requireInit, resolveAuthRoot } from './shared.js';
@@ -26,11 +26,12 @@ import { fmt } from './print.js';
26
26
  import { isJsonObject } from '../util/json.js';
27
27
  import { hookStoreRoot } from './hook-runtime.js';
28
28
  import { DAY_MS, HOUR_MS, MINUTE_MS } from '../util/time.js';
29
- import { CliExit } from './exit.js';
29
+ import { CliExit, fail } from './exit.js';
30
+ const AT_RISK_BELOW = 0.2;
30
31
  export function handleStatus({ hippoRoot, tenantId }) {
31
32
  requireInit(hippoRoot);
32
33
  const ctx = cliApiContext(hippoRoot, tenantId);
33
- const { stats, counts } = storeStatus(ctx, evalNow(), 0.2);
34
+ const { stats, counts } = storeStatus(ctx, evalNow(), AT_RISK_BELOW);
34
35
  const { byLayer, byConfidence, pinned, atRisk, agedOut, avgStrength } = counts;
35
36
  console.log('Hippo Status');
36
37
  console.log('---------------------------');
@@ -40,7 +41,7 @@ export function handleStatus({ hippoRoot, tenantId }) {
40
41
  console.log(` Semantic: ${byLayer[Layer.Semantic]}`);
41
42
  console.log(` Trace: ${byLayer[Layer.Trace]}`);
42
43
  console.log(`Pinned: ${pinned}`);
43
- console.log(`At risk (<0.2): ${atRisk}`);
44
+ console.log(`At risk (<${AT_RISK_BELOW}): ${atRisk}`);
44
45
  console.log(`Open conflicts: ${counts.openConflicts}`);
45
46
  console.log(`Avg strength: ${fmt(avgStrength)}`);
46
47
  console.log('');
@@ -130,7 +131,7 @@ function printPhysicsStatus(ctx) {
130
131
  }
131
132
  catch (err) {
132
133
  // The physics table may not exist yet, so status prints without that line.
133
- log.debug(`physics status skipped: ${errorMessage(err)}`);
134
+ log.debug(`physics status skipped: ${errorMessage(err)}`, errorFields(err));
134
135
  }
135
136
  }
136
137
  export function physicsEnergyText(particles, gMemory) {
@@ -143,8 +144,7 @@ async function cmdInspect(hippoRoot, tenantId, id) {
143
144
  requireInit(hippoRoot);
144
145
  const entry = await getMemory(cliApiContext(hippoRoot, tenantId), id);
145
146
  if (!entry) {
146
- printError(`Memory not found: ${id}`);
147
- throw new CliExit(1);
147
+ fail(`Memory not found: ${id}`);
148
148
  }
149
149
  const now = evalNow();
150
150
  const currentStrength = calculateStrength(entry, now, { ablation: strengthAblation() });
@@ -156,7 +156,8 @@ async function cmdInspect(hippoRoot, tenantId, id) {
156
156
  console.log(`Memory: ${entry.id}`);
157
157
  console.log('---------------------------');
158
158
  console.log(`Layer: ${entry.layer}`);
159
- console.log(`Confidence: ${entry.confidence}${effectiveConfidence !== entry.confidence ? ` (effective: ${effectiveConfidence})` : ''}`);
159
+ const effective = effectiveConfidence !== entry.confidence ? ` (effective: ${effectiveConfidence})` : '';
160
+ console.log(`Confidence: ${entry.confidence}${effective}`);
160
161
  console.log(`Created: ${entry.created} (${fmt(ageDays, 1)}d ago)`);
161
162
  console.log(`Last retrieved: ${entry.last_retrieved} (${fmt(daysSince, 1)}d ago)`);
162
163
  console.log(`Retrieval count: ${entry.retrieval_count}`);
@@ -181,13 +182,13 @@ async function cmdInspect(hippoRoot, tenantId, id) {
181
182
  console.log('-'.repeat(40));
182
183
  console.log(entry.content);
183
184
  }
184
- /** `hippo tokens [--days <n>] [--json] [--global]`: the token ledger per surface, tokens saved by skipped unchanged blocks, and re-read hook tokens.
185
- * Counts are estimates (characters / 4), the same estimate every budget uses. */
186
- export function handleTokens({ hippoRoot, tenantId, flags }) {
185
+ /** `hippo tokens [--days <n>] [--json] [--global]`: the token ledger per surface, tokens saved by skipped unchanged
186
+ * blocks, and re-read hook tokens. Counts are estimates (characters / 4), the same estimate every budget uses. */
187
+ export async function handleTokens({ hippoRoot, tenantId, flags }) {
187
188
  const root = resolveAuthRoot(hippoRoot, flags);
188
189
  const ctx = cliApiContext(root, tenantId);
189
190
  const days = parseCountFlag(flags['days']);
190
- const summary = api.tokenSummary(ctx, { days: days > 0 ? days : undefined });
191
+ const summary = await api.tokenSummary(ctx, { days: days > 0 ? days : undefined });
191
192
  if (flags['json']) {
192
193
  console.log(JSON.stringify(summary, null, 2));
193
194
  return;
@@ -198,11 +199,13 @@ export function handleTokens({ hippoRoot, tenantId, flags }) {
198
199
  return;
199
200
  }
200
201
  console.log(`Memory text handed to agents, last ${windowDays} days (estimated tokens, characters / 4)\n`);
201
- console.log(` ${'surface'.padEnd(14)}${'sent'.padStart(8)}${'tokens'.padStart(12)}${'skipped'.padStart(10)}${'saved'.padStart(12)}`
202
+ console.log(` ${'surface'.padEnd(14)}${'sent'.padStart(8)}${'tokens'.padStart(12)}${'skipped'.padStart(10)}` +
203
+ `${'saved'.padStart(12)}`
202
204
  + `${'re-read'.padStart(12)}`);
203
205
  for (const row of summary.surfaces) {
204
206
  console.log(` ${row.surface.padEnd(14)}${String(row.injected).padStart(8)}${String(row.tokens).padStart(12)}`
205
- + `${String(row.skipped).padStart(10)}${String(row.tokensAvoided).padStart(12)}${String(row.tokensReread).padStart(12)}`);
207
+ + `${String(row.skipped).padStart(10)}${String(row.tokensAvoided).padStart(12)}`
208
+ + `${String(row.tokensReread).padStart(12)}`);
206
209
  }
207
210
  console.log('');
208
211
  console.log(` Total sent: ${summary.totalTokens} tokens. Saved by skipping unchanged blocks: ${summary.totalTokensAvoided}.`);
@@ -211,17 +214,18 @@ export function handleTokens({ hippoRoot, tenantId, flags }) {
211
214
  if (summary.meanTokensPerSession > 0) {
212
215
  console.log(` Mean per session (rows with a session id): ${summary.meanTokensPerSession} tokens.`);
213
216
  }
214
- console.log(' Re-reads are counted for hook and compact-resume blocks when a session ends; other surfaces, and open or crashed sessions, show sent only.');
217
+ console.log(' Re-reads are counted for hook and compact-resume blocks when a session ends; ' +
218
+ 'other surfaces, and open or crashed sessions, show sent only.');
215
219
  console.log(" Re-reads usually bill at the provider's cached-input rate, a fraction of the full input price.");
216
220
  }
217
221
  /** `hippo failures [--days <n>] [--json] [--global]`: failed tool calls by outcome, and repeats across sessions. */
218
- export function handleFailures({ hippoRoot, tenantId, flags }) {
222
+ export async function handleFailures({ hippoRoot, tenantId, flags }) {
219
223
  // The store the capture-error hook writes to; a report never creates one.
220
224
  const root = flags['global'] ? getGlobalRoot() : hookStoreRoot(hippoRoot);
221
225
  requireInit(root);
222
226
  const ctx = cliApiContext(root, tenantId);
223
227
  const days = parseCountFlag(flags['days']);
224
- const summary = api.failureSummary(ctx, { days: days > 0 ? days : undefined });
228
+ const summary = await api.failureSummary(ctx, { days: days > 0 ? days : undefined });
225
229
  if (flags['json']) {
226
230
  console.log(JSON.stringify(summary, null, 2));
227
231
  return;
@@ -305,8 +309,9 @@ export function handleProvenance({ hippoRoot, tenantId, flags }) {
305
309
  }
306
310
  }
307
311
  export function handleDoctor({ flags }) {
312
+ const pkgPath = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json');
308
313
  // SAFETY: package.json always carries a string "version" (checked at release by check-manifest-versions).
309
- const pkg = JSON.parse(fs.readFileSync(path.join(path.dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json'), 'utf-8'));
314
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
310
315
  const report = runDoctor({ version: pkg.version });
311
316
  console.log(flags['json'] ? JSON.stringify(report, null, 2) : formatDoctor(report));
312
317
  if (!report.ok)
@@ -315,8 +320,7 @@ export function handleDoctor({ flags }) {
315
320
  export function handleSupportBundle({ flags }) {
316
321
  const outFlag = stringFlagOrExit(flags, 'out');
317
322
  if (outFlag === '') {
318
- printError('--out requires a file path.');
319
- throw new CliExit(1);
323
+ fail('--out requires a file path.');
320
324
  }
321
325
  const includeLogs = flagIsTrue(flags, 'include-logs');
322
326
  const home = envHomeDir() || os.homedir();
@@ -340,16 +344,17 @@ export function handleSupportBundle({ flags }) {
340
344
  const kb = Math.round(Buffer.byteLength(json) / 1024);
341
345
  console.log(`Wrote ${file} (${kb} KB).`);
342
346
  console.log(includeLogs
343
- ? `It holds versions, doctor checks, config with secrets removed, store counts, and the last ${TAIL_MAX_LINES} lines of ` +
344
- 'each hippo log with known secret shapes removed. Those log lines can quote memory text. Read it before you attach it to a ticket.'
345
- : 'It holds versions, doctor checks, config with secrets removed, store counts and log file names. It never holds memory text. Read it before you ' +
346
- 'attach it to a ticket.');
347
+ ? `It holds versions, doctor checks, config with secrets removed, store counts, ` +
348
+ `and the last ${TAIL_MAX_LINES} lines of ` +
349
+ 'each hippo log with known secret shapes removed. Those log lines can quote memory text. ' +
350
+ 'Read it before you attach it to a ticket.'
351
+ : 'It holds versions, doctor checks, config with secrets removed, store counts and log file names. ' +
352
+ 'It never holds memory text. Read it before you attach it to a ticket.');
347
353
  }
348
354
  export async function handleInspect({ hippoRoot, tenantId, args }) {
349
355
  const id = args[0];
350
356
  if (!id) {
351
- printError('Please provide a memory ID.');
352
- throw new CliExit(1);
357
+ fail('Please provide a memory ID.');
353
358
  }
354
359
  await cmdInspect(hippoRoot, tenantId, id);
355
360
  }
@@ -1,15 +1,22 @@
1
- /** `timedOut` means the window closed with stdin still open, so absent `text` is "unknown", not "none", and present `text` may be truncated;
1
+ /**
2
+ * `timedOut` means the window closed with stdin still open, so absent `text` is "unknown", not "none", and present
3
+ * `text` may be truncated;
2
4
  * treating absence as a manual run is only safe when it is false. */
3
5
  export interface BoundedStdin {
4
6
  text?: string;
5
7
  timedOut: boolean;
6
8
  }
7
- /** Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of idle (default 1000ms, or `HIPPO_STDIN_WAIT_MS`),
9
+ /**
10
+ * Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of idle (default 1000ms, or
11
+ * `HIPPO_STDIN_WAIT_MS`),
8
12
  * refreshed on each chunk so a slow real write is not cut off, capped at `waitMs * 10`. */
9
13
  export declare function readStdinBounded(waitMs?: number): Promise<BoundedStdin>;
10
14
  /** A hook payload with Copilot's camelCase fields copied to the snake_case keys hippo reads. The camelCase keys stay,
11
15
  * so the sessionStart reply can follow the sender's casing; text that needs no change comes back exactly as sent. */
12
16
  export declare function normaliseHookPayload(text: string | undefined): string | undefined;
13
- /** The stdin read every hook verb uses: {@link readStdinBounded}, with the payload passed through {@link normaliseHookPayload}. */
17
+ /**
18
+ * The stdin read every hook verb uses: {@link readStdinBounded}, with the payload passed through {@link
19
+ * normaliseHookPayload}.
20
+ */
14
21
  export declare function readHookStdin(waitMs?: number): Promise<BoundedStdin>;
15
22
  //# sourceMappingURL=stdin.d.ts.map
package/dist/cli/stdin.js CHANGED
@@ -4,7 +4,9 @@ const DEFAULT_STDIN_WAIT_MS = 1000;
4
4
  function defaultWaitMs() {
5
5
  return envStdinWaitMs() ?? DEFAULT_STDIN_WAIT_MS;
6
6
  }
7
- /** Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of idle (default 1000ms, or `HIPPO_STDIN_WAIT_MS`),
7
+ /**
8
+ * Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of idle (default 1000ms, or
9
+ * `HIPPO_STDIN_WAIT_MS`),
8
10
  * refreshed on each chunk so a slow real write is not cut off, capped at `waitMs * 10`. */
9
11
  export function readStdinBounded(waitMs = defaultWaitMs()) {
10
12
  let stdin;
@@ -48,7 +50,9 @@ const CAMEL_TO_SNAKE = [
48
50
  ['hookEventName', 'hook_event_name'],
49
51
  ['customInstructions', 'custom_instructions'],
50
52
  ];
51
- /** Copilot sends `toolArgs` as the model's raw JSON string; Claude Code and VS Code send `tool_input` already parsed. */
53
+ /**
54
+ * Copilot sends `toolArgs` as the model's raw JSON string; Claude Code and VS Code send `tool_input` already parsed.
55
+ */
52
56
  function parsedToolArgs(value) {
53
57
  if (!isJsonString(value))
54
58
  return value;
@@ -95,7 +99,10 @@ export function normaliseHookPayload(text) {
95
99
  const added = snakeCaseFields(payload);
96
100
  return Object.keys(added).length === 0 ? text : JSON.stringify({ ...payload, ...added });
97
101
  }
98
- /** The stdin read every hook verb uses: {@link readStdinBounded}, with the payload passed through {@link normaliseHookPayload}. */
102
+ /**
103
+ * The stdin read every hook verb uses: {@link readStdinBounded}, with the payload passed through {@link
104
+ * normaliseHookPayload}.
105
+ */
99
106
  export async function readHookStdin(waitMs) {
100
107
  const read = await readStdinBounded(waitMs);
101
108
  return { text: normaliseHookPayload(read.text), timedOut: read.timedOut };
@@ -6,5 +6,5 @@ export declare function handleWatch({ hippoRoot, tenantId, args, flags }: Comman
6
6
  export declare function handlePromote({ hippoRoot, tenantId, args }: CommandContext): Promise<void>;
7
7
  export declare function handleShare({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
8
8
  export declare function handlePeers({ tenantId, flags }: CommandContext): void;
9
- export declare function handleExport({ hippoRoot, tenantId, args, flags }: CommandContext): void;
9
+ export declare function handleExport({ hippoRoot, tenantId, args, flags }: CommandContext): Promise<void>;
10
10
  //# sourceMappingURL=transfer.d.ts.map