hippo-memory 1.71.0 → 2.0.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 (625) hide show
  1. package/README.md +7 -5
  2. package/dist/agent-memories/apply.d.ts +0 -11
  3. package/dist/agent-memories/apply.js +11 -26
  4. package/dist/agent-memories/claude-code.js +1 -1
  5. package/dist/agent-memories/codex.js +1 -1
  6. package/dist/agent-memories/copilot.d.ts +1 -3
  7. package/dist/agent-memories/copilot.js +1 -17
  8. package/dist/agent-memories/project-folds.d.ts +10 -0
  9. package/dist/agent-memories/project-folds.js +34 -0
  10. package/dist/agent-memories/sync.js +8 -6
  11. package/dist/api/assemble.js +3 -2
  12. package/dist/api/audit.d.ts +30 -2
  13. package/dist/api/audit.js +48 -7
  14. package/dist/api/auth.d.ts +11 -9
  15. package/dist/api/auth.js +39 -40
  16. package/dist/api/auto-sleep.d.ts +5 -2
  17. package/dist/api/auto-sleep.js +7 -3
  18. package/dist/api/availability.js +2 -3
  19. package/dist/api/cards.d.ts +42 -0
  20. package/dist/api/cards.js +52 -0
  21. package/dist/api/conflicts.d.ts +28 -0
  22. package/dist/api/conflicts.js +61 -0
  23. package/dist/api/context-auto.js +4 -2
  24. package/dist/api/context-render.js +4 -3
  25. package/dist/api/context-select.js +15 -29
  26. package/dist/api/context.js +29 -18
  27. package/dist/api/continuity.d.ts +47 -0
  28. package/dist/api/continuity.js +66 -0
  29. package/dist/api/dormant.js +4 -2
  30. package/dist/api/drill-down.js +3 -2
  31. package/dist/api/embeddings.d.ts +17 -0
  32. package/dist/api/embeddings.js +28 -0
  33. package/dist/api/error-reply.d.ts +8 -0
  34. package/dist/api/error-reply.js +21 -0
  35. package/dist/api/forget.d.ts +7 -3
  36. package/dist/api/forget.js +24 -14
  37. package/dist/api/goals.d.ts +1 -1
  38. package/dist/api/goals.js +5 -9
  39. package/dist/api/graph.js +2 -1
  40. package/dist/api/index.d.ts +4 -2
  41. package/dist/api/index.js +4 -2
  42. package/dist/api/instruction-detect.js +5 -1
  43. package/dist/api/learn.d.ts +5 -1
  44. package/dist/api/learn.js +71 -44
  45. package/dist/api/ledger-db.d.ts +2 -6
  46. package/dist/api/ledger-db.js +4 -36
  47. package/dist/api/memories.d.ts +21 -1
  48. package/dist/api/memories.js +51 -1
  49. package/dist/api/objects.d.ts +1 -1
  50. package/dist/api/objects.js +2 -1
  51. package/dist/api/outcome.d.ts +5 -5
  52. package/dist/api/outcome.js +17 -16
  53. package/dist/api/pilot-arm.d.ts +1 -11
  54. package/dist/api/pilot-arm.js +5 -45
  55. package/dist/api/predictions.d.ts +3 -1
  56. package/dist/api/predictions.js +8 -1
  57. package/dist/api/projects.d.ts +21 -0
  58. package/dist/api/projects.js +24 -0
  59. package/dist/api/promote.d.ts +3 -3
  60. package/dist/api/promote.js +26 -28
  61. package/dist/api/prompt-hook.d.ts +17 -2
  62. package/dist/api/prompt-hook.js +45 -4
  63. package/dist/api/quarantine.js +2 -1
  64. package/dist/api/recall-cli.d.ts +3 -0
  65. package/dist/api/recall-cli.js +13 -4
  66. package/dist/api/recall-core.js +10 -5
  67. package/dist/api/recall-pipeline.js +23 -24
  68. package/dist/api/recall-request.js +1 -1
  69. package/dist/api/recall-types.d.ts +3 -1
  70. package/dist/api/recall.d.ts +0 -3
  71. package/dist/api/recall.js +51 -73
  72. package/dist/api/remember-local.d.ts +5 -2
  73. package/dist/api/remember-local.js +15 -7
  74. package/dist/api/remember.d.ts +7 -3
  75. package/dist/api/remember.js +19 -16
  76. package/dist/api/session-end.d.ts +46 -0
  77. package/dist/api/session-end.js +131 -0
  78. package/dist/api/sleep-run.d.ts +1 -1
  79. package/dist/api/sleep-run.js +16 -11
  80. package/dist/api/sleep.js +4 -3
  81. package/dist/api/status.d.ts +24 -0
  82. package/dist/api/status.js +40 -0
  83. package/dist/api/store-init.d.ts +4 -0
  84. package/dist/api/store-init.js +9 -0
  85. package/dist/api/tokens.js +2 -2
  86. package/dist/api/types.d.ts +3 -7
  87. package/dist/api/types.js +6 -1
  88. package/dist/capture/caller-session.d.ts +0 -3
  89. package/dist/capture/caller-session.js +1 -12
  90. package/dist/capture/capture-error.d.ts +2 -2
  91. package/dist/capture/capture-error.js +23 -18
  92. package/dist/capture/codex-patch.js +3 -1
  93. package/dist/capture/command.js +36 -95
  94. package/dist/capture/compact.js +10 -5
  95. package/dist/capture/compaction-items-caller.js +11 -20
  96. package/dist/capture/compaction-record.d.ts +7 -93
  97. package/dist/capture/compaction-record.js +29 -426
  98. package/dist/capture/compaction-spool.d.ts +7 -7
  99. package/dist/capture/compaction-spool.js +60 -51
  100. package/dist/capture/copilot-transcript.d.ts +2 -1
  101. package/dist/capture/copilot-transcript.js +2 -1
  102. package/dist/capture/extract.d.ts +5 -2
  103. package/dist/capture/extract.js +4 -3
  104. package/dist/capture/failure-caller.d.ts +1 -1
  105. package/dist/capture/failure-caller.js +21 -16
  106. package/dist/capture/failure-reading.d.ts +2 -1
  107. package/dist/capture/failure-reading.js +7 -9
  108. package/dist/capture/pre-compact-caller.js +5 -4
  109. package/dist/capture/session-digest.js +4 -3
  110. package/dist/capture/session-end-caller.js +3 -2
  111. package/dist/capture/session-worker.js +22 -10
  112. package/dist/capture/transcript.d.ts +2 -1
  113. package/dist/capture/transcript.js +6 -3
  114. package/dist/capture/working-state.d.ts +4 -2
  115. package/dist/capture/working-state.js +4 -2
  116. package/dist/cli/audit-prune.d.ts +0 -25
  117. package/dist/cli/audit-prune.js +1 -27
  118. package/dist/cli/audit.js +20 -20
  119. package/dist/cli/auth.d.ts +1 -1
  120. package/dist/cli/auth.js +16 -17
  121. package/dist/cli/briefs.d.ts +1 -4
  122. package/dist/cli/briefs.js +37 -292
  123. package/dist/cli/card.js +41 -33
  124. package/dist/cli/client.d.ts +6 -2
  125. package/dist/cli/client.js +37 -21
  126. package/dist/cli/compact-resume-payload.js +1 -1
  127. package/dist/cli/context.d.ts +1 -1
  128. package/dist/cli/context.js +13 -13
  129. package/dist/cli/continuity.d.ts +1 -1
  130. package/dist/cli/continuity.js +36 -39
  131. package/dist/cli/curate.d.ts +2 -2
  132. package/dist/cli/curate.js +32 -36
  133. package/dist/cli/dag.d.ts +1 -1
  134. package/dist/cli/dag.js +23 -8
  135. package/dist/cli/decisions.d.ts +0 -2
  136. package/dist/cli/decisions.js +7 -285
  137. package/dist/cli/eval.d.ts +1 -1
  138. package/dist/cli/eval.js +12 -13
  139. package/dist/cli/explain.d.ts +1 -1
  140. package/dist/cli/explain.js +21 -25
  141. package/dist/cli/flag-values.js +16 -6
  142. package/dist/cli/flags.d.ts +0 -289
  143. package/dist/cli/flags.js +3 -138
  144. package/dist/cli/graph.d.ts +3 -0
  145. package/dist/cli/graph.js +83 -0
  146. package/dist/cli/hook-runtime.d.ts +6 -6
  147. package/dist/cli/hook-runtime.js +9 -36
  148. package/dist/cli/incidents.d.ts +3 -0
  149. package/dist/cli/incidents.js +112 -0
  150. package/dist/cli/init.d.ts +1 -1
  151. package/dist/cli/init.js +28 -19
  152. package/dist/cli/install-steps.d.ts +2 -1
  153. package/dist/cli/install-steps.js +11 -3
  154. package/dist/cli/last-sleep.js +1 -1
  155. package/dist/cli/maintenance.d.ts +3 -3
  156. package/dist/cli/maintenance.js +29 -30
  157. package/dist/cli/notes.d.ts +2 -0
  158. package/dist/cli/notes.js +41 -0
  159. package/dist/cli/object-verbs.d.ts +2 -2
  160. package/dist/cli/object-verbs.js +4 -4
  161. package/dist/cli/open-browser.d.ts +14 -0
  162. package/dist/cli/open-browser.js +26 -0
  163. package/dist/cli/playbooks.d.ts +3 -4
  164. package/dist/cli/playbooks.js +126 -290
  165. package/dist/cli/predictions.d.ts +3 -0
  166. package/dist/cli/predictions.js +174 -0
  167. package/dist/cli/print.js +2 -1
  168. package/dist/cli/projects.js +30 -22
  169. package/dist/cli/quality-repair-once.d.ts +1 -1
  170. package/dist/cli/quality-repair-once.js +6 -5
  171. package/dist/cli/recall.js +13 -7
  172. package/dist/cli/refine-llm.js +18 -17
  173. package/dist/cli/remember.js +17 -17
  174. package/dist/cli/scheduler.js +2 -1
  175. package/dist/cli/serve.js +11 -6
  176. package/dist/cli/session-hooks.d.ts +1 -5
  177. package/dist/cli/session-hooks.js +89 -168
  178. package/dist/cli/setup.d.ts +1 -1
  179. package/dist/cli/setup.js +17 -10
  180. package/dist/cli/shared.d.ts +2 -6
  181. package/dist/cli/shared.js +9 -29
  182. package/dist/cli/sleep-render.js +6 -3
  183. package/dist/cli/sleep.js +6 -37
  184. package/dist/cli/status.d.ts +3 -3
  185. package/dist/cli/status.js +32 -35
  186. package/dist/cli/transfer.d.ts +3 -3
  187. package/dist/cli/transfer.js +64 -43
  188. package/dist/cli/usage.d.ts +1 -80
  189. package/dist/cli/usage.js +2 -696
  190. package/dist/cli/verb-row.d.ts +34 -0
  191. package/dist/cli/verb-row.js +6 -0
  192. package/dist/cli/verbs/health.d.ts +27 -0
  193. package/dist/cli/verbs/health.js +234 -0
  194. package/dist/cli/verbs/memory.d.ts +16 -0
  195. package/dist/cli/verbs/memory.js +236 -0
  196. package/dist/cli/verbs/objects.d.ts +20 -0
  197. package/dist/cli/verbs/objects.js +257 -0
  198. package/dist/cli/verbs/sessions.d.ts +31 -0
  199. package/dist/cli/verbs/sessions.js +314 -0
  200. package/dist/cli/verbs.d.ts +81 -0
  201. package/dist/cli/verbs.js +7 -0
  202. package/dist/cli/versioned-verbs.d.ts +51 -0
  203. package/dist/cli/versioned-verbs.js +79 -0
  204. package/dist/cli.d.ts +1 -272
  205. package/dist/cli.js +24 -315
  206. package/dist/connectors/dlq.d.ts +39 -3
  207. package/dist/connectors/dlq.js +39 -4
  208. package/dist/connectors/github/backfill.js +12 -3
  209. package/dist/connectors/github/deletion.js +2 -1
  210. package/dist/connectors/github/dlq.js +31 -73
  211. package/dist/connectors/github/ingest.d.ts +2 -6
  212. package/dist/connectors/github/ingest.js +5 -29
  213. package/dist/connectors/github/tenant-routing.js +2 -1
  214. package/dist/connectors/github/webhook.d.ts +2 -1
  215. package/dist/connectors/github/webhook.js +35 -2
  216. package/dist/connectors/ingest.d.ts +10 -0
  217. package/dist/connectors/ingest.js +29 -0
  218. package/dist/connectors/slack/deletion.js +2 -1
  219. package/dist/connectors/slack/dlq.js +49 -71
  220. package/dist/connectors/slack/ingest.d.ts +2 -6
  221. package/dist/connectors/slack/ingest.js +4 -28
  222. package/dist/connectors/slack/tenant-routing.js +2 -1
  223. package/dist/connectors/slack/webhook.d.ts +2 -1
  224. package/dist/connectors/slack/webhook.js +2 -1
  225. package/dist/consolidate/conflicts.js +2 -2
  226. package/dist/consolidate/dag.js +29 -18
  227. package/dist/consolidate/dedupe.d.ts +7 -0
  228. package/dist/consolidate/dedupe.js +6 -4
  229. package/dist/consolidate/llm-passes.js +45 -19
  230. package/dist/consolidate/memory-value.js +3 -2
  231. package/dist/consolidate/merge.js +8 -8
  232. package/dist/consolidate/physics-pass.d.ts +6 -1
  233. package/dist/consolidate/physics-pass.js +26 -6
  234. package/dist/consolidate/replay.js +11 -4
  235. package/dist/consolidate/sleep.js +9 -6
  236. package/dist/consolidate/traces.js +5 -5
  237. package/dist/core/ablation.d.ts +10 -0
  238. package/dist/core/ablation.js +12 -0
  239. package/dist/{sharing/scope.d.ts → core/active-scope.d.ts} +1 -1
  240. package/dist/{sharing/scope.js → core/active-scope.js} +1 -1
  241. package/dist/core/ambient.d.ts +4 -0
  242. package/dist/core/ambient.js +39 -18
  243. package/dist/core/api-errors.d.ts +16 -0
  244. package/dist/core/api-errors.js +20 -0
  245. package/dist/core/card.js +3 -1
  246. package/dist/core/compaction-timing.d.ts +7 -0
  247. package/dist/core/compaction-timing.js +9 -0
  248. package/dist/core/config.d.ts +1 -1
  249. package/dist/core/config.js +22 -18
  250. package/dist/core/cosine.d.ts +3 -0
  251. package/dist/core/cosine.js +19 -0
  252. package/dist/{store → core}/markdown.d.ts +1 -1
  253. package/dist/{store → core}/markdown.js +4 -4
  254. package/dist/core/memory-audit.d.ts +17 -0
  255. package/dist/core/memory-audit.js +54 -0
  256. package/dist/core/memory.d.ts +14 -8
  257. package/dist/core/memory.js +35 -23
  258. package/dist/{consolidate → core}/merged-row.d.ts +1 -1
  259. package/dist/{consolidate → core}/merged-row.js +1 -1
  260. package/dist/core/physics.d.ts +3 -1
  261. package/dist/core/physics.js +23 -18
  262. package/dist/core/prediction.d.ts +3 -0
  263. package/dist/core/prediction.js +6 -0
  264. package/dist/core/project-identity.d.ts +3 -0
  265. package/dist/core/project-identity.js +12 -2
  266. package/dist/{store → core}/recall-scope.d.ts +1 -10
  267. package/dist/{store → core}/recall-scope.js +2 -19
  268. package/dist/core/search-types.d.ts +1 -1
  269. package/dist/dashboard/dashboard-actions.d.ts +2 -2
  270. package/dist/dashboard/dashboard-actions.js +5 -5
  271. package/dist/dashboard/dashboard-queries.js +2 -7
  272. package/dist/dashboard/dashboard-snapshot.js +1 -3
  273. package/dist/dashboard/dashboard.js +16 -5
  274. package/dist/db/busy.d.ts +2 -7
  275. package/dist/db/busy.js +21 -26
  276. package/dist/db/connect.d.ts +2 -2
  277. package/dist/db/connect.js +7 -7
  278. package/dist/db/index.d.ts +3 -3
  279. package/dist/db/index.js +3 -3
  280. package/dist/db/migrate.js +14 -7
  281. package/dist/db/migrations/index.d.ts +1 -1
  282. package/dist/db/migrations/index.js +3 -1
  283. package/dist/db/migrations/v11.js +1 -0
  284. package/dist/db/migrations/v14.js +1 -0
  285. package/dist/db/migrations/v55.d.ts +3 -0
  286. package/dist/db/migrations/v55.js +17 -0
  287. package/dist/db/open.d.ts +0 -2
  288. package/dist/db/open.js +6 -10
  289. package/dist/db/physics-state.d.ts +0 -4
  290. package/dist/db/physics-state.js +7 -33
  291. package/dist/db/request-stores.d.ts +1 -0
  292. package/dist/db/request-stores.js +2 -1
  293. package/dist/db/tables.d.ts +2 -0
  294. package/dist/db/tables.js +6 -2
  295. package/dist/db/vector-store.js +19 -5
  296. package/dist/db/wal-checkpointer.js +2 -1
  297. package/dist/doctor.d.ts +3 -0
  298. package/dist/doctor.js +18 -15
  299. package/dist/embeddings/local.d.ts +62 -0
  300. package/dist/embeddings/local.js +146 -0
  301. package/dist/{store/embeddings → embeddings}/provider.d.ts +5 -2
  302. package/dist/{store/embeddings → embeddings}/provider.js +19 -25
  303. package/dist/embeddings/transformers.d.ts +26 -0
  304. package/dist/embeddings/transformers.js +89 -0
  305. package/dist/entry/session-text.d.ts +1 -1
  306. package/dist/entry/session-text.js +1 -1
  307. package/dist/entry/store-kit.d.ts +37 -0
  308. package/dist/entry/store-kit.js +25 -0
  309. package/dist/entry/testing.d.ts +6 -0
  310. package/dist/entry/testing.js +7 -0
  311. package/dist/eval/eval-suite.js +17 -11
  312. package/dist/eval/eval.js +1 -1
  313. package/dist/eval/judgment.js +12 -5
  314. package/dist/graph/extract.js +3 -3
  315. package/dist/graph/recall.js +1 -1
  316. package/dist/graph/view.js +13 -5
  317. package/dist/graph/write.d.ts +1 -1
  318. package/dist/graph/write.js +9 -9
  319. package/dist/hooks/codex-session.js +3 -2
  320. package/dist/hooks/codex-wrapper.js +2 -1
  321. package/dist/hooks/json-hooks.js +10 -4
  322. package/dist/hooks/opencode.js +8 -5
  323. package/dist/hooks/shared.d.ts +0 -6
  324. package/dist/hooks/shared.js +4 -15
  325. package/dist/importers/core.js +4 -4
  326. package/dist/importers/sources.js +5 -4
  327. package/dist/importers/vault.d.ts +1 -1
  328. package/dist/importers/vault.js +25 -23
  329. package/dist/index.d.ts +5 -4
  330. package/dist/index.js +4 -3
  331. package/dist/learn/autolearn.d.ts +15 -3
  332. package/dist/learn/autolearn.js +38 -16
  333. package/dist/learn/churn-git.js +13 -4
  334. package/dist/learn/extract.d.ts +3 -2
  335. package/dist/learn/extract.js +7 -5
  336. package/dist/learn/forward-claim-detector.js +4 -2
  337. package/dist/learn/invalidation.d.ts +2 -1
  338. package/dist/learn/invalidation.js +18 -9
  339. package/dist/mcp/admin-tools.d.ts +2 -2
  340. package/dist/mcp/admin-tools.js +27 -48
  341. package/dist/mcp/format.js +3 -2
  342. package/dist/mcp/framing.d.ts +1 -0
  343. package/dist/mcp/framing.js +1 -1
  344. package/dist/mcp/memory-tools.d.ts +1 -1
  345. package/dist/mcp/memory-tools.js +8 -9
  346. package/dist/mcp/protocol.d.ts +11 -7
  347. package/dist/mcp/protocol.js +25 -12
  348. package/dist/mcp/recall-tools.js +12 -9
  349. package/dist/mcp/request.js +22 -20
  350. package/dist/mcp/stdio.js +37 -16
  351. package/dist/mcp/tool-args.js +2 -1
  352. package/dist/mcp/tools.js +44 -21
  353. package/dist/objects/customer-notes.d.ts +2 -2
  354. package/dist/objects/decisions.d.ts +2 -2
  355. package/dist/objects/descriptor.d.ts +1 -1
  356. package/dist/objects/incidents.d.ts +2 -2
  357. package/dist/objects/lifecycle.d.ts +1 -1
  358. package/dist/objects/lifecycle.js +2 -1
  359. package/dist/objects/policies.d.ts +2 -2
  360. package/dist/objects/policies.js +2 -1
  361. package/dist/objects/processes.d.ts +2 -2
  362. package/dist/objects/project-briefs.d.ts +2 -2
  363. package/dist/objects/project-briefs.js +2 -3
  364. package/dist/objects/skills.d.ts +2 -2
  365. package/dist/postinstall.js +1 -1
  366. package/dist/rerankers/clef.js +3 -6
  367. package/dist/rerankers/cross-encoder.d.ts +31 -2
  368. package/dist/rerankers/cross-encoder.js +71 -98
  369. package/dist/rerankers/index.js +5 -4
  370. package/dist/rerankers/jev.js +2 -4
  371. package/dist/rerankers/outage-warning.d.ts +3 -1
  372. package/dist/rerankers/outage-warning.js +5 -3
  373. package/dist/search/bm25-search.js +1 -1
  374. package/dist/search/boosts.js +1 -1
  375. package/dist/search/embed-memories.d.ts +12 -0
  376. package/dist/search/embed-memories.js +389 -0
  377. package/dist/search/engine.d.ts +8 -0
  378. package/dist/search/engine.js +10 -0
  379. package/dist/search/goal-boost.d.ts +1 -1
  380. package/dist/search/goal-boost.js +6 -3
  381. package/dist/search/hybrid.d.ts +9 -2
  382. package/dist/search/hybrid.js +9 -4
  383. package/dist/search/physics-search.d.ts +6 -3
  384. package/dist/search/physics-search.js +22 -15
  385. package/dist/search/rerank.js +1 -1
  386. package/dist/search/vector.d.ts +8 -6
  387. package/dist/search/vector.js +14 -17
  388. package/dist/server/auth.d.ts +3 -1
  389. package/dist/server/auth.js +24 -15
  390. package/dist/server/boot.d.ts +2 -1
  391. package/dist/server/boot.js +34 -84
  392. package/dist/server/client-ip.d.ts +9 -6
  393. package/dist/server/client-ip.js +36 -17
  394. package/dist/server/deadline.d.ts +0 -2
  395. package/dist/server/deadline.js +1 -7
  396. package/dist/server/defaults.d.ts +1 -0
  397. package/dist/server/defaults.js +1 -0
  398. package/dist/server/mcp-http.js +16 -11
  399. package/dist/server/request.js +7 -2
  400. package/dist/server/route-checks.d.ts +7 -0
  401. package/dist/server/route-checks.js +42 -0
  402. package/dist/server/route-table.d.ts +9 -8
  403. package/dist/server/route-table.js +127 -133
  404. package/dist/server/routes/admin.d.ts +8 -8
  405. package/dist/server/routes/admin.js +13 -21
  406. package/dist/server/routes/customer-notes.d.ts +6 -6
  407. package/dist/server/routes/customer-notes.js +1 -2
  408. package/dist/server/routes/decisions.d.ts +6 -6
  409. package/dist/server/routes/decisions.js +2 -4
  410. package/dist/server/routes/incidents.d.ts +6 -6
  411. package/dist/server/routes/incidents.js +2 -5
  412. package/dist/server/routes/memories.d.ts +9 -9
  413. package/dist/server/routes/memories.js +19 -40
  414. package/dist/server/routes/object-routes.d.ts +6 -6
  415. package/dist/server/routes/object-routes.js +4 -7
  416. package/dist/server/routes/policies.d.ts +7 -7
  417. package/dist/server/routes/policies.js +2 -4
  418. package/dist/server/routes/predictions.d.ts +6 -6
  419. package/dist/server/routes/predictions.js +9 -13
  420. package/dist/server/routes/processes.d.ts +6 -6
  421. package/dist/server/routes/processes.js +1 -2
  422. package/dist/server/routes/project-briefs.d.ts +7 -7
  423. package/dist/server/routes/project-briefs.js +2 -4
  424. package/dist/server/routes/recall.d.ts +5 -5
  425. package/dist/server/routes/recall.js +6 -10
  426. package/dist/server/routes/skills.d.ts +7 -7
  427. package/dist/server/routes/skills.js +2 -4
  428. package/dist/server/server-detect.d.ts +7 -1
  429. package/dist/server/server-detect.js +36 -11
  430. package/dist/server/sleep-child.js +26 -7
  431. package/dist/server/sleep-offload.d.ts +11 -5
  432. package/dist/server/sleep-offload.js +17 -11
  433. package/dist/server/tls.d.ts +7 -2
  434. package/dist/server/tls.js +17 -5
  435. package/dist/server/types.d.ts +29 -12
  436. package/dist/server/validation.d.ts +1 -2
  437. package/dist/server/validation.js +6 -11
  438. package/dist/server.d.ts +4 -40
  439. package/dist/server.js +3 -29
  440. package/dist/sharing/global-store.d.ts +4 -5
  441. package/dist/sharing/global-store.js +8 -13
  442. package/dist/sharing/global-sync.js +38 -45
  443. package/dist/sharing/project-merge.d.ts +7 -14
  444. package/dist/sharing/project-merge.js +57 -121
  445. package/dist/sharing/search-both.js +10 -3
  446. package/dist/sharing/share.d.ts +2 -0
  447. package/dist/sharing/share.js +39 -38
  448. package/dist/store/ambient.js +7 -7
  449. package/dist/store/audit-event.d.ts +1 -1
  450. package/dist/store/audit.d.ts +0 -16
  451. package/dist/store/audit.js +4 -55
  452. package/dist/store/auth.d.ts +4 -2
  453. package/dist/store/auth.js +7 -3
  454. package/dist/store/candidates.d.ts +3 -2
  455. package/dist/store/candidates.js +59 -30
  456. package/dist/store/capture-write.d.ts +17 -0
  457. package/dist/store/capture-write.js +35 -0
  458. package/dist/store/cards.js +6 -5
  459. package/dist/store/compaction-caller.d.ts +18 -0
  460. package/dist/store/compaction-caller.js +29 -0
  461. package/dist/store/compactions-record.d.ts +115 -0
  462. package/dist/store/compactions-record.js +418 -0
  463. package/dist/store/compactions.js +6 -4
  464. package/dist/store/conflicts.d.ts +7 -1
  465. package/dist/store/conflicts.js +13 -9
  466. package/dist/store/connectors/dlq.d.ts +10 -0
  467. package/dist/store/connectors/dlq.js +33 -0
  468. package/dist/store/connectors/event-log.d.ts +13 -0
  469. package/dist/store/connectors/event-log.js +24 -0
  470. package/dist/store/connectors/github.d.ts +7 -9
  471. package/dist/store/connectors/github.js +35 -60
  472. package/dist/store/connectors/slack.d.ts +2 -11
  473. package/dist/store/connectors/slack.js +24 -57
  474. package/dist/store/dashboard-reads.js +8 -6
  475. package/dist/store/delete-and-batch.d.ts +6 -0
  476. package/dist/store/delete-and-batch.js +40 -6
  477. package/dist/store/delivery-recorder.d.ts +12 -5
  478. package/dist/store/delivery-recorder.js +13 -11
  479. package/dist/store/descendant-page.js +8 -4
  480. package/dist/store/dormant.d.ts +1 -1
  481. package/dist/store/dormant.js +10 -4
  482. package/dist/store/embeddings/index.d.ts +2 -12
  483. package/dist/store/embeddings/index.js +5 -374
  484. package/dist/store/entry-reads.d.ts +35 -4
  485. package/dist/store/entry-reads.js +86 -19
  486. package/dist/store/entry-row.js +9 -2
  487. package/dist/store/entry-writes.d.ts +15 -12
  488. package/dist/store/entry-writes.js +54 -22
  489. package/dist/store/failure-log-at.d.ts +8 -0
  490. package/dist/store/failure-log-at.js +16 -0
  491. package/dist/store/failure-log.d.ts +2 -2
  492. package/dist/store/failure-log.js +5 -3
  493. package/dist/{trust → store}/gated-write.d.ts +3 -1
  494. package/dist/{trust → store}/gated-write.js +7 -5
  495. package/dist/store/goals.js +22 -19
  496. package/dist/store/graph-reads.js +9 -6
  497. package/dist/store/graph-view-rows.js +2 -1
  498. package/dist/store/graph-writes.d.ts +6 -6
  499. package/dist/store/graph-writes.js +48 -71
  500. package/dist/store/half-life.js +2 -2
  501. package/dist/store/handoffs.d.ts +10 -4
  502. package/dist/store/handoffs.js +10 -9
  503. package/dist/store/index-and-stats.js +2 -2
  504. package/dist/store/index.d.ts +2 -2
  505. package/dist/store/index.js +1 -1
  506. package/dist/store/key-writes.js +1 -1
  507. package/dist/store/ledger-turn.d.ts +9 -0
  508. package/dist/store/ledger-turn.js +38 -0
  509. package/dist/store/mirrors.js +19 -10
  510. package/dist/store/open.d.ts +2 -5
  511. package/dist/store/open.js +42 -54
  512. package/dist/store/pilot-arm.d.ts +12 -0
  513. package/dist/store/pilot-arm.js +42 -0
  514. package/dist/store/port.d.ts +68 -6
  515. package/dist/store/port.js +8 -0
  516. package/dist/store/predictions.d.ts +1 -2
  517. package/dist/store/predictions.js +3 -6
  518. package/dist/store/project-tags.d.ts +62 -0
  519. package/dist/store/project-tags.js +67 -0
  520. package/dist/store/quality-repair.js +1 -1
  521. package/dist/store/quarantine.js +2 -1
  522. package/dist/store/recall-trace.d.ts +2 -0
  523. package/dist/store/recall-trace.js +20 -3
  524. package/dist/store/rejected-values.js +16 -10
  525. package/dist/store/rejection-probe.d.ts +4 -0
  526. package/dist/store/rejection-probe.js +19 -0
  527. package/dist/store/rejection.d.ts +0 -17
  528. package/dist/store/rejection.js +1 -21
  529. package/dist/store/rows.js +2 -2
  530. package/dist/store/rule-sql.d.ts +11 -0
  531. package/dist/store/rule-sql.js +31 -6
  532. package/dist/store/search-rows.d.ts +5 -5
  533. package/dist/store/search-rows.js +18 -16
  534. package/dist/store/sessions.js +4 -2
  535. package/dist/store/set-aside.d.ts +14 -0
  536. package/dist/store/set-aside.js +23 -0
  537. package/dist/store/sqlite/busy.d.ts +3 -0
  538. package/dist/store/sqlite/busy.js +8 -0
  539. package/dist/store/sqlite/connector-events-group.js +4 -7
  540. package/dist/store/sqlite/connector-writes-group.js +6 -4
  541. package/dist/store/sqlite/entry-writes-group.d.ts +3 -3
  542. package/dist/store/sqlite/entry-writes-group.js +3 -3
  543. package/dist/store/sqlite/error-codec.js +4 -3
  544. package/dist/store/sqlite/executor.js +10 -4
  545. package/dist/store/sqlite/graph-reads-group.js +1 -1
  546. package/dist/store/sqlite/held-connection.d.ts +11 -0
  547. package/dist/store/sqlite/held-connection.js +41 -0
  548. package/dist/store/sqlite/last-recall-group.d.ts +13 -0
  549. package/dist/store/sqlite/last-recall-group.js +57 -0
  550. package/dist/store/sqlite/local.d.ts +0 -17
  551. package/dist/store/sqlite/local.js +0 -31
  552. package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
  553. package/dist/store/sqlite/maintenance-groups.js +60 -0
  554. package/dist/store/sqlite/object-rows.d.ts +1 -1
  555. package/dist/store/sqlite/objects-group.d.ts +1 -1
  556. package/dist/store/sqlite/objects-group.js +15 -7
  557. package/dist/store/sqlite/store.d.ts +1 -8
  558. package/dist/store/sqlite/store.js +13 -22
  559. package/dist/store/summaries.d.ts +10 -3
  560. package/dist/store/summaries.js +54 -11
  561. package/dist/store/token-ledger-rows.js +3 -2
  562. package/dist/store/token-ledger.d.ts +0 -7
  563. package/dist/store/token-ledger.js +0 -35
  564. package/dist/store/vector-index.js +8 -4
  565. package/dist/support-bundle.js +2 -3
  566. package/dist/trust/reject-flow.js +2 -2
  567. package/dist/util/agent-homes.d.ts +15 -0
  568. package/dist/util/agent-homes.js +34 -0
  569. package/dist/util/anthropic-messages.d.ts +6 -1
  570. package/dist/util/anthropic-messages.js +26 -7
  571. package/dist/util/atomic-write.d.ts +5 -2
  572. package/dist/util/atomic-write.js +12 -8
  573. package/dist/util/chunked.d.ts +3 -0
  574. package/dist/util/chunked.js +10 -0
  575. package/dist/util/ellipsize.d.ts +3 -0
  576. package/dist/util/ellipsize.js +5 -0
  577. package/dist/util/env.d.ts +12 -2
  578. package/dist/util/env.js +12 -2
  579. package/dist/util/format.d.ts +5 -0
  580. package/dist/util/format.js +10 -0
  581. package/dist/util/hook-payload.d.ts +8 -0
  582. package/dist/util/hook-payload.js +37 -0
  583. package/dist/util/http-retry.d.ts +6 -0
  584. package/dist/util/http-retry.js +43 -5
  585. package/dist/util/http-util.d.ts +0 -8
  586. package/dist/util/http-util.js +10 -21
  587. package/dist/util/limits.d.ts +7 -0
  588. package/dist/util/limits.js +14 -0
  589. package/dist/util/log.d.ts +4 -0
  590. package/dist/util/log.js +9 -0
  591. package/dist/util/request-scope.d.ts +9 -3
  592. package/dist/util/request-scope.js +18 -9
  593. package/dist/util/secret-detect.js +6 -1
  594. package/dist/util/spawn-argv.d.ts +9 -0
  595. package/dist/util/spawn-argv.js +57 -0
  596. package/dist/util/sql.d.ts +3 -0
  597. package/dist/util/sql.js +6 -0
  598. package/dist/util/sqlite-blocked.d.ts +2 -0
  599. package/dist/util/sqlite-blocked.js +5 -0
  600. package/dist/util/stream-tee.d.ts +3 -0
  601. package/dist/util/stream-tee.js +35 -0
  602. package/dist/util/time.d.ts +4 -0
  603. package/dist/util/time.js +4 -0
  604. package/dist/util/vector-codec.d.ts +4 -0
  605. package/dist/util/vector-codec.js +15 -0
  606. package/dist/util/version.d.ts +1 -1
  607. package/dist/util/version.js +1 -1
  608. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  609. package/extensions/openclaw-plugin/package.json +1 -1
  610. package/openclaw.plugin.json +1 -1
  611. package/package.json +4 -2
  612. package/dist/api/on-store.d.ts +0 -16
  613. package/dist/api/on-store.js +0 -38
  614. package/dist/store/embeddings/local.d.ts +0 -15
  615. package/dist/store/embeddings/local.js +0 -175
  616. /package/dist/{cli → api}/correction-latency.d.ts +0 -0
  617. /package/dist/{cli → api}/correction-latency.js +0 -0
  618. /package/dist/{cli → api}/provenance-coverage.d.ts +0 -0
  619. /package/dist/{cli → api}/provenance-coverage.js +0 -0
  620. /package/dist/{store → core}/object-types.d.ts +0 -0
  621. /package/dist/{store → core}/object-types.js +0 -0
  622. /package/dist/{capture → util}/compaction-items.d.ts +0 -0
  623. /package/dist/{capture → util}/compaction-items.js +0 -0
  624. /package/dist/{store → util}/yaml.d.ts +0 -0
  625. /package/dist/{store → util}/yaml.js +0 -0
@@ -0,0 +1,34 @@
1
+ import type { CliFlags, CommandContext } from './flag-values.js';
2
+ import type { VerbFlags } from './flags.js';
3
+ type Handler = (ctx: CommandContext) => void | Promise<void>;
4
+ /** A verb that honours --dry-run in one form only, where every other form writes for real. */
5
+ export interface DryRunForm {
6
+ /** Printed after `hippo <verb>` in the refusal, so an alias names itself. */
7
+ readonly form: string;
8
+ readonly honoured: (args: readonly string[], flags: CliFlags) => boolean;
9
+ }
10
+ /** What a verb declares; its key in the table is its name, and the table's order is the help listing's. */
11
+ export interface VerbRow {
12
+ /** The flags this verb reads; any other flag still parses, and the verb says it ignores it. */
13
+ readonly flags: VerbFlags;
14
+ /** Help blocks, each opening with a newline so the full listing is their concatenation. */
15
+ readonly usage?: readonly string[];
16
+ /** Help blocks the full listing prints after every verb's own; `hippo <verb> --help` prints them last. */
17
+ readonly listedLast?: readonly string[];
18
+ readonly aliases?: readonly string[];
19
+ /** Runs in a request scope, opening each store once; set on api-backed verbs, as hook verbs open their own. */
20
+ readonly scoped?: true;
21
+ /** Routine verbs after which a previously installed codex wrapper is repaired (never first-installed). */
22
+ readonly repairsCodexWrapper?: true;
23
+ /** Deletes or hides memories: an unknown flag stops the run instead of being ignored. */
24
+ readonly destructive?: true;
25
+ /** Unset: --dry-run is honoured exactly when the verb declares it; `false` refuses it even so. */
26
+ readonly dryRun?: false | DryRunForm;
27
+ }
28
+ export interface VerbSpec extends VerbRow {
29
+ readonly run: (ctx: CommandContext) => Promise<void>;
30
+ }
31
+ /** A row whose module loads on its first run; `handler` must be an export of that module taking a CommandContext. */
32
+ export declare function verb<K extends string, M extends Readonly<Record<K, Handler>>>(load: () => Promise<M>, handler: K, row: VerbRow): VerbSpec;
33
+ export {};
34
+ //# sourceMappingURL=verb-row.d.ts.map
@@ -0,0 +1,6 @@
1
+ // The shape of one row of the verb table, and the helper that builds it with a type-checked lazy import.
2
+ /** A row whose module loads on its first run; `handler` must be an export of that module taking a CommandContext. */
3
+ export function verb(load, handler, row) {
4
+ return { ...row, run: async (ctx) => { await (await load())[handler](ctx); } };
5
+ }
6
+ //# sourceMappingURL=verb-row.js.map
@@ -0,0 +1,27 @@
1
+ import { type VerbSpec } from '../verb-row.js';
2
+ export declare const HEALTH_VERBS: {
3
+ status: VerbSpec;
4
+ audit: VerbSpec;
5
+ github: VerbSpec;
6
+ slack: VerbSpec;
7
+ provenance: VerbSpec;
8
+ dag: VerbSpec;
9
+ drill: VerbSpec;
10
+ assemble: VerbSpec;
11
+ 'correction-latency': VerbSpec;
12
+ outcome: VerbSpec;
13
+ conflicts: VerbSpec;
14
+ resolve: VerbSpec;
15
+ reject: VerbSpec;
16
+ rejections: VerbSpec;
17
+ unreject: VerbSpec;
18
+ dormant: VerbSpec;
19
+ projects: VerbSpec;
20
+ quarantine: VerbSpec;
21
+ 'capture-error': VerbSpec;
22
+ doctor: VerbSpec;
23
+ 'support-bundle': VerbSpec;
24
+ tokens: VerbSpec;
25
+ failures: VerbSpec;
26
+ };
27
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1,234 @@
1
+ // Store health, connectors, the summary tree and curation verbs, in `hippo help` order.
2
+ import { TAIL_MAX_LINES } from '../../support-bundle.js';
3
+ import { DEFAULT_ASSEMBLE_BUDGET } from '../../api/assemble.js';
4
+ import { verb } from '../verb-row.js';
5
+ export const HEALTH_VERBS = {
6
+ status: verb(() => import('../status.js'), 'handleStatus', {
7
+ repairsCodexWrapper: true,
8
+ flags: {},
9
+ usage: [`
10
+ status Show memory health stats`],
11
+ }),
12
+ audit: verb(() => import('../audit.js'), 'handleAudit', {
13
+ destructive: true,
14
+ scoped: true,
15
+ flags: {
16
+ switches: ['apply', 'dry-run', 'fix', 'global', 'json'],
17
+ values: ['older-than', 'op', 'since', 'tenant'],
18
+ numbers: ['limit'],
19
+ },
20
+ usage: [`
21
+ audit [--fix] Check memory quality (--fix removes junk)
22
+ audit repair [--apply] Preview repair of memories hippo wrote itself; --apply moves certain
23
+ defects to dormant storage. Sleep and the daily runner apply it once
24
+ per store after an upgrade
25
+ --json Report ids, reasons, protections and schema blockers as JSON
26
+ --global Operate on the global store without changing its schema
27
+ Writes a database backup first; undo with hippo dormant restore <id>,
28
+ which marks the memory verified so repair leaves it alone. Sleep's
29
+ dormant retention still applies; the backup stays until you remove it.`],
30
+ listedLast: [`
31
+ audit <sub> Query the append-only audit log (A5 stub auth)
32
+ audit list List audit events for the active tenant
33
+ --op <op> Filter by op (remember | recall | promote |
34
+ supersede | forget | archive_raw | auth_revoke)
35
+ --since <iso> Lower bound on ts (ISO timestamp)
36
+ --limit <n> Max events (default: 100, max: 10000)
37
+ --json Output as JSON
38
+ --global Operate on the global store`],
39
+ }),
40
+ github: verb(() => import('../github.js'), 'handleGitHub', {
41
+ flags: { switches: ['force'], values: ['max', 'repo', 'since'] },
42
+ usage: [`
43
+ github GitHub connector subcommands (backfill, dlq)
44
+ backfill --repo <owner/name> [--since ISO] [--max <N>]
45
+ Paginated backfill of issues + comments
46
+ dlq list List DLQ entries for the active tenant
47
+ dlq replay <id> [--force]
48
+ Re-ingest a DLQ entry (--force skips sig check)`],
49
+ }),
50
+ slack: verb(() => import('../slack.js'), 'handleSlack', {
51
+ flags: { switches: ['force'], values: ['channel', 'since', 'team', 'tenant'] },
52
+ usage: [`
53
+ slack Slack connector subcommands (backfill, dlq, workspaces)
54
+ backfill --channel <id> [--since ISO]
55
+ Backfill a channel's history (needs SLACK_BOT_TOKEN)
56
+ dlq list List DLQ entries for the active tenant
57
+ dlq replay <id> [--force]
58
+ Re-ingest a DLQ entry (--force skips sig check)
59
+ workspaces <add|list|remove>
60
+ Map Slack workspaces (team ids) to tenants`],
61
+ }),
62
+ provenance: verb(() => import('../status.js'), 'handleProvenance', {
63
+ flags: { switches: ['json', 'strict'] },
64
+ usage: [`
65
+ provenance Provenance coverage gate for kind='raw' rows
66
+ --json Output as JSON
67
+ --strict Exit non-zero when coverage < 100%`],
68
+ }),
69
+ dag: verb(() => import('../dag.js'), 'handleDag', {
70
+ flags: { switches: ['stats'] },
71
+ usage: [`
72
+ dag Show the summary tree: entity profiles, topic summaries, facts
73
+ --stats Count memories per DAG level instead`],
74
+ }),
75
+ drill: verb(() => import('../dag.js'), 'handleDrill', {
76
+ scoped: true,
77
+ flags: { switches: ['json'], values: ['budget', 'depth'], numbers: ['limit'] },
78
+ usage: [`
79
+ drill <summary-id> Walk down a DAG level-2 summary to its children
80
+ --limit N Cap children list (default 50)
81
+ --budget N Token budget for the printed children (≈ chars/4)
82
+ --json Output as JSON`],
83
+ }),
84
+ assemble: verb(() => import('../dag.js'), 'handleAssemble', {
85
+ scoped: true,
86
+ flags: { switches: ['json', 'no-summarize-older'], values: ['budget', 'fresh-tail', 'scope', 'session'] },
87
+ usage: [`
88
+ assemble --session <id> Build a session's chronological context window
89
+ --budget N Token budget for the printed window (default ${DEFAULT_ASSEMBLE_BUDGET})
90
+ --fresh-tail N Recent rows always kept verbatim (default 10)
91
+ --no-summarize-older Disable older-row summary substitution
92
+ --scope <s> Restrict to exact scope (default: deny *:private:*)
93
+ --json Output as JSON`],
94
+ }),
95
+ 'correction-latency': verb(() => import('../status.js'), 'handleCorrectionLatency', {
96
+ flags: { switches: ['json'] },
97
+ usage: [`
98
+ correction-latency Wall-clock lag from receipt to supersession (p50/p95/max)
99
+ --json Output as JSON`],
100
+ }),
101
+ outcome: verb(() => import('../curate.js'), 'handleOutcome', {
102
+ repairsCodexWrapper: true,
103
+ scoped: true,
104
+ flags: { switches: ['bad', 'good'], values: ['id'] },
105
+ usage: [`
106
+ outcome Apply feedback to last recall
107
+ --good Memories were helpful
108
+ --bad Memories were irrelevant
109
+ --id <id> Target a specific memory`],
110
+ }),
111
+ conflicts: verb(() => import('../curate.js'), 'handleConflicts', {
112
+ flags: { switches: ['json'], values: ['status'] },
113
+ usage: [`
114
+ conflicts List detected open memory conflicts
115
+ --status <status> Filter by status (default: open)
116
+ --json Output as JSON`],
117
+ }),
118
+ resolve: verb(() => import('../curate.js'), 'handleResolve', {
119
+ destructive: true,
120
+ flags: { switches: ['forget', 'reject-loser'], values: ['keep', 'reason'] },
121
+ usage: [`
122
+ resolve <conflict_id> Resolve a memory conflict
123
+ --keep <memory_id> Memory to keep (required)
124
+ --forget Delete the losing memory (default: halve half-life)
125
+ --reject-loser Tombstone the loser's value too (implies removal)
126
+ --reason "<why>" Reason for --reject-loser (default: conflict context)`],
127
+ }),
128
+ reject: verb(() => import('../curate.js'), 'handleReject', {
129
+ destructive: true,
130
+ flags: { switches: ['global'], values: ['reason', 'value'] },
131
+ usage: [`
132
+ reject <memory-id> Tombstone a value so it refuses re-ingestion
133
+ reject --value "<t>" Pre-emptive form: tombstone a value not (currently) stored
134
+ --reason "<why>" Required. The tombstone stores no content — this
135
+ is its only human-readable identity.
136
+ --global Reject in the global store`],
137
+ }),
138
+ rejections: verb(() => import('../curate.js'), 'handleRejections', {
139
+ flags: { switches: ['global', 'json'] },
140
+ usage: [`
141
+ rejections List rejected-value tombstones for the active tenant
142
+ --json Output as JSON
143
+ --global Operate on the global store`],
144
+ }),
145
+ unreject: verb(() => import('../curate.js'), 'handleUnreject', {
146
+ flags: { switches: ['global'] },
147
+ usage: [`
148
+ unreject <digest-prefix> Delete a tombstone (the only escape hatch)
149
+ --global Operate on the global store`],
150
+ }),
151
+ dormant: verb(() => import('../curate.js'), 'handleDormant', {
152
+ scoped: true,
153
+ flags: { switches: ['global', 'json'], numbers: ['limit'] },
154
+ usage: [`
155
+ dormant [<query>] List faded memories sleep kept instead of deleting
156
+ (on by default; "dormant": {"enabled": false} deletes instead)
157
+ --limit <n> Max rows, newest first (default: 20)
158
+ --json Output as JSON
159
+ --global Operate on the global store
160
+ dormant restore <id> Bring a dormant memory back to active memory
161
+ dormant forget <id> Delete a dormant memory permanently`],
162
+ }),
163
+ projects: verb(() => import('../projects.js'), 'handleProjects', {
164
+ destructive: true,
165
+ flags: { switches: ['apply', 'global', 'json'] },
166
+ usage: [`
167
+ projects [list] List the project names in a store, with a hint for old worktree names
168
+ --json Output as JSON
169
+ --global Operate on the global store
170
+ projects merge <from> <into> [--apply]
171
+ Fold one project name into another (dry run unless --apply;
172
+ writes a backup and one audit event first)
173
+ projects repair [--apply]
174
+ Set aside misfiled note imports, fold old project names into
175
+ their ids, re-tag merged rows (dry run unless --apply;
176
+ writes a backup and one audit event first)`],
177
+ }),
178
+ quarantine: verb(() => import('../curate.js'), 'handleQuarantine', {
179
+ scoped: true,
180
+ flags: { switches: ['all', 'global', 'json'] },
181
+ usage: [`
182
+ quarantine [list] List memories a connector flagged as an instruction attempt, pending review
183
+ --all Include approved and rejected rows too (default: pending only)
184
+ --json Output as JSON
185
+ --global Operate on the global store
186
+ quarantine approve <id> Restore a quarantined memory to its original scope
187
+ quarantine reject <id> Keep a quarantined memory hidden for good`],
188
+ }),
189
+ 'capture-error': verb(() => import('../session-hooks.js'), 'handleCaptureError', {
190
+ flags: { values: ['format', 'runtime'] },
191
+ usage: [`
192
+ capture-error Store a failed tool call as an error memory (reads the Claude Code
193
+ PostToolUseFailure hook payload on stdin; skips routine failures)
194
+ --runtime copilot The payload came from a Copilot hook: use the store of its cwd`],
195
+ }),
196
+ doctor: verb(() => import('../status.js'), 'handleDoctor', {
197
+ flags: { switches: ['json'] },
198
+ usage: [`
199
+ doctor Check the install: Node, store, schema, sleep, agent hooks
200
+ --json Machine-readable report (exit code 1 on any failure)`],
201
+ }),
202
+ 'support-bundle': verb(() => import('../status.js'), 'handleSupportBundle', {
203
+ flags: { switches: ['include-logs'], values: ['out'] },
204
+ usage: [`
205
+ support-bundle Write a redacted JSON file for a support ticket: versions, doctor,
206
+ config without secrets, store counts, log names; never memory text
207
+ --out <file> Where to write it (default: hippo-support-<time>.json here)
208
+ --include-logs Add the last ${TAIL_MAX_LINES} lines of each hippo log, known secret shapes removed`],
209
+ }),
210
+ tokens: verb(() => import('../status.js'), 'handleTokens', {
211
+ scoped: true,
212
+ flags: { switches: ['global', 'json'], numbers: ['days'] },
213
+ usage: [`
214
+ tokens Tokens of memory text hippo handed agents, per surface
215
+ (hook, compact-resume, context, recall, MCP, HTTP), what
216
+ skipping unchanged hook blocks saved, and how much of the
217
+ hook and compact-resume blocks later model calls re-read,
218
+ counted when a session ends. Estimates (characters / 4)
219
+ --days <n> Window in days (default: 30)
220
+ --json Output as JSON
221
+ --global Operate on the global store`],
222
+ }),
223
+ failures: verb(() => import('../status.js'), 'handleFailures', {
224
+ scoped: true,
225
+ flags: { switches: ['global', 'json'], numbers: ['days'] },
226
+ usage: [`
227
+ failures Failed tool calls capture-error saw, by outcome, and how
228
+ many errors first happened in another session
229
+ --days <n> Window in days (default: 30)
230
+ --json Output as JSON
231
+ --global Operate on the global store`],
232
+ }),
233
+ };
234
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1,16 @@
1
+ import { type VerbSpec } from '../verb-row.js';
2
+ export declare const MEMORY_VERBS: {
3
+ init: VerbSpec;
4
+ remember: VerbSpec;
5
+ supersede: VerbSpec;
6
+ recall: VerbSpec;
7
+ explain: VerbSpec;
8
+ trace: VerbSpec;
9
+ refine: VerbSpec;
10
+ eval: VerbSpec;
11
+ context: VerbSpec;
12
+ sleep: VerbSpec;
13
+ 'daily-runner': VerbSpec;
14
+ dedup: VerbSpec;
15
+ };
16
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1,236 @@
1
+ // Store, recall and maintenance verbs; every verbs/ file keeps its rows in the order `hippo help` lists them.
2
+ import { DEFAULT_LOCAL_BUMP, DEFAULT_RECALL_BUDGET } from '../../core/search-types.js';
3
+ import { DEFAULT_EMBEDDING_WEIGHT, DEFAULT_MMR_LAMBDA } from '../../search/hybrid.js';
4
+ import { DEFAULT_GRAPH_HOPS, DEFAULT_GRAPH_SEED_COUNT } from '../../graph/stream.js';
5
+ import { verb } from '../verb-row.js';
6
+ export const MEMORY_VERBS = {
7
+ init: verb(() => import('../init.js'), 'handleInit', {
8
+ repairsCodexWrapper: true,
9
+ flags: { switches: ['global', 'no-hooks', 'no-learn', 'no-schedule'], values: ['scan'], numbers: ['days'] },
10
+ usage: [`
11
+ init Create .hippo/ structure in current directory
12
+ --scan [dir] Find all git repos under dir (default: ~) and init each
13
+ --days <n> Days of git history to seed (default: 365 for --scan, 30 for single)
14
+ --global Init the global store ($HIPPO_HOME or ~/.hippo/)
15
+ --no-hooks Skip auto-detecting and installing agent hooks
16
+ (HIPPO_SKIP_AUTO_INTEGRATIONS=1 does the same)
17
+ --no-schedule Skip auto-creating the machine-level daily runner
18
+ --no-learn Skip seeding memories from git history and importing
19
+ coding agents' own memories (every init imports those)`],
20
+ }),
21
+ remember: verb(() => import('../remember.js'), 'handleRemember', {
22
+ repairsCodexWrapper: true,
23
+ flags: {
24
+ switches: ['error', 'extract', 'force', 'global', 'inferred', 'observed', 'pin', 'verified'],
25
+ values: ['artifact-ref', 'kind', 'layer', 'owner', 'scope'],
26
+ lists: ['tag'],
27
+ },
28
+ usage: [`
29
+ remember <text> Store a memory
30
+ --tag <tag> Add a tag (repeatable)
31
+ --error Tag as error (boosts retention)
32
+ --pin Pin memory (never decays)
33
+ --verified Set confidence: verified (default)
34
+ --observed Set confidence: observed
35
+ --inferred Set confidence: inferred
36
+ --global Store in global store ($HIPPO_HOME or ~/.hippo/)`],
37
+ }),
38
+ supersede: verb(() => import('../remember.js'), 'handleSupersede', {
39
+ destructive: true,
40
+ flags: { switches: ['pin'], values: ['layer'], lists: ['tag'] },
41
+ usage: [`
42
+ supersede <id> "<text>" Replace a memory with a new version; the old one points at it
43
+ --layer <layer> Layer for the new memory (default: the old memory's layer)
44
+ --tag <tag> Tag for the new memory (repeatable; default: the old memory's tags)
45
+ --pin Pin the new memory (default: pinned if the old one was)`],
46
+ }),
47
+ recall: verb(() => import('../recall.js'), 'handleRecall', {
48
+ repairsCodexWrapper: true,
49
+ scoped: true,
50
+ flags: {
51
+ switches: ['classic', 'continuity', 'equal-sources', 'evc-adaptive', 'filter-conflicts', 'graph-stream',
52
+ 'include-superseded', 'json', 'multihop', 'no-mmr', 'physics', 'rerank-utility', 'value-aware', 'why'],
53
+ values: ['as-of', 'budget', 'goal', 'graph-hops', 'graph-seeds', 'hops', 'layer', 'max-neighbors', 'outcome',
54
+ 'reranker', 'salience-threshold', 'scope', 'session-id'],
55
+ numbers: ['limit', 'local-bump', 'min-results', 'mmr-lambda', 'reranker-top-k'],
56
+ },
57
+ usage: [`
58
+ recall <query> Search and retrieve memories (local + global)
59
+ --budget <n> Token budget for the whole printed block (default: ${DEFAULT_RECALL_BUDGET})
60
+ --min-results <n> Minimum results regardless of budget (default: 1)
61
+ --json Output as JSON
62
+ --why Show match reasons and source annotations
63
+ --include-superseded Also return memories a newer version replaced
64
+ --as-of <iso-date> Return the memories that were current on that date
65
+ --multihop Search a second time with the speaker: and topic: tags the
66
+ first pass found (also on when config multihop.enabled is true)
67
+ --hops <n> Also surface memories reached by walking the entity and
68
+ relation graph <n> hops (0..3, default off) out from the
69
+ lexical matches. Graph hits are tagged [graph: Nhop <rel>].
70
+ Today the graph holds supersedes edges; cross-object
71
+ edges light up the same walk once extracted.
72
+ --max-neighbors <n> Per-hop fanout cap for --hops (1..200, default 25).
73
+ --graph-stream Fuse a graph-proximity ranking into the result list,
74
+ re-ranking in-pool results by closeness to the strong
75
+ lexical matches. Implies rrf scoring (default is blend).
76
+ Local store only. Unlike --hops, it adds no memories
77
+ from outside the candidate pool.
78
+ --graph-hops <n> Hops for --graph-stream (1..3, default ${DEFAULT_GRAPH_HOPS}).
79
+ --graph-seeds <n> Lexical anchors for --graph-stream (default ${DEFAULT_GRAPH_SEED_COUNT}). The stream
80
+ re-ranks the results below the anchors; on a pool with <= n
81
+ candidates every candidate is an anchor and the stream is inert.
82
+ --no-mmr Disable MMR diversity re-ranking
83
+ --mmr-lambda <f> MMR balance 0..1 (default: ${DEFAULT_MMR_LAMBDA}, 1.0 = pure relevance)
84
+ --evc-adaptive When the top results overlap heavily (a conflict
85
+ cluster), widen the pool and re-rank by recency.
86
+ Default off.
87
+ --filter-conflicts Drop superseded entries and down-weight by 0.3x any
88
+ entry in an open conflict with another result.
89
+ Uses recorded supersession and conflicts only, never
90
+ lexical inference. Default off.
91
+ --value-aware Boost memories with positive cumulative outcomes and
92
+ demote those with negative ones during ranking:
93
+ multiplier clip(1 + 0.3*tanh(pos - neg), 0.7, 1.3).
94
+ Reads outcome_positive and outcome_negative. Default off.
95
+ --rerank-utility Re-sort results by utility = score * (0.5 + 0.5 * strength)
96
+ * (1 - cost_factor), where cost_factor =
97
+ min(0.3, tokens / 10000). Default off.
98
+ --reranker <name> Apply a reranker pass after retrieval
99
+ (cross-encoder|jev|clef-flash|clef|llm) to re-order the
100
+ top-K candidates. Default unset (no reranker).
101
+ jev calls the hosted TypeSafe Jev API: it needs
102
+ TYPESAFE_API_KEY, sends the query and candidate
103
+ text to that API, costs about 0.0004 USD a recall,
104
+ and falls back to cross-encoder on any failure.
105
+ clef-flash and clef send the same request to
106
+ Cloudflare Workers AI (CLOUDFLARE_ACCOUNT_ID and
107
+ CLOUDFLARE_API_TOKEN) or to HIPPO_CLEF_ENDPOINT, and
108
+ keep the native order on any failure.
109
+ --reranker-top-k <n> Cap candidates passed to the reranker (default 50;
110
+ 40 for jev, clef-flash and clef).
111
+ --goal <tag> Goal-conditioned recall: memories tagged with the
112
+ goal tag get a 1.5x score boost and results are
113
+ re-sorted. Default off.
114
+ --session-id <id> Session identifier for the goal-stack boost.
115
+ Defaults to $HIPPO_SESSION_ID. When set and the
116
+ (tenant, session) has active goals (see
117
+ 'hippo goal push'), recall auto-boosts memories
118
+ whose tags match an active goal name. Boost stacks
119
+ on top of base BM25 score, capped at 3.0x.
120
+ --salience-threshold <n>
121
+ Down-weight memories retrieved fewer than n times:
122
+ score *= max(0.5, retrieval_count / n) for entries
123
+ with count < n; entries at or above n are unchanged.
124
+ Salience comes from use, not from lexical overlap.
125
+ Default off.
126
+ --continuity Include a continuity block (active task snapshot,
127
+ latest matching session handoff, last 5 session
128
+ events) above the memory list. Useful at agent
129
+ boot when you want both relevant memories AND
130
+ where you left off in one call. Anchored on the
131
+ active snapshot's session_id; no anchor = no
132
+ handoff/events (use 'hippo session resume' for
133
+ the explicit handoff-without-snapshot path).`],
134
+ }),
135
+ explain: verb(() => import('../explain.js'), 'handleExplain', {
136
+ scoped: true,
137
+ flags: {
138
+ switches: ['classic', 'equal-sources', 'include-superseded', 'json', 'no-mmr', 'physics'],
139
+ values: ['as-of', 'budget', 'scope'],
140
+ numbers: ['limit', 'local-bump', 'mmr-lambda'],
141
+ },
142
+ usage: [`
143
+ explain <query> Show full score breakdown for each retrieved memory
144
+ --budget <n> Token budget, counted as recall prints (default: ${DEFAULT_RECALL_BUDGET})
145
+ --limit <n> Cap the number of results displayed
146
+ --json Output as JSON
147
+ --physics | --classic Force search mode (default: from config)
148
+ --no-mmr Disable MMR diversity re-ranking
149
+ --mmr-lambda <f> MMR balance 0..1 (default: ${DEFAULT_MMR_LAMBDA}, 1.0 = pure relevance)`],
150
+ }),
151
+ trace: verb(() => import('../remember.js'), 'handleTrace', {
152
+ flags: { switches: ['json'], values: ['outcome', 'session', 'source', 'steps', 'task'], lists: ['tag'] },
153
+ usage: [`
154
+ trace <id> Memory dossier: content, decay trajectory, retrievals,
155
+ outcomes, consolidation parents, open conflicts
156
+ --json Output as JSON`],
157
+ }),
158
+ refine: verb(() => import('../maintenance.js'), 'handleRefine', {
159
+ flags: { switches: ['all', 'dry-run', 'json'], values: ['model'], numbers: ['limit'] },
160
+ usage: [`
161
+ refine Rewrite consolidated semantic memories with Claude
162
+ --limit <n> Cap the number of memories processed this run
163
+ --all Ignore \`llm-refined\` tag and re-refine everything
164
+ --dry-run Call the API but don't write results back
165
+ --model <id> Override the default model (claude-sonnet-4-6)
166
+ --json Output summary as JSON
167
+ (requires ANTHROPIC_API_KEY in env)`],
168
+ }),
169
+ eval: verb(() => import('../eval.js'), 'handleEval', {
170
+ flags: {
171
+ switches: ['bootstrap', 'equal-sources', 'json', 'no-mmr', 'save-baseline', 'show-cases', 'suite'],
172
+ values: ['baseline', 'compare', 'out'],
173
+ numbers: ['embedding-weight', 'local-bump', 'max-cases', 'min-mrr', 'mmr-lambda'],
174
+ },
175
+ usage: [`
176
+ eval [<corpus.json>] Measure recall quality against a test corpus
177
+ --bootstrap Generate a synthetic corpus from current memories
178
+ --out <path> With --bootstrap, write to file instead of stdout
179
+ --max-cases <n> With --bootstrap, cap case count (default: 50)
180
+ --show-cases Print per-case details (query, R@10, missed, top 3)
181
+ --compare <path> JSON from a prior \`eval --json\` run; print deltas
182
+ --no-mmr Disable MMR for this eval run
183
+ --mmr-lambda <f> Override MMR lambda for this run
184
+ --embedding-weight <f> Override cosine weight (default: ${DEFAULT_EMBEDDING_WEIGHT})
185
+ --local-bump <f> Local-over-global priority multiplier (default: ${DEFAULT_LOCAL_BUMP})
186
+ --equal-sources Shortcut for --local-bump 1.0
187
+ --min-mrr <f> Exit non-zero if mean MRR falls below this
188
+ --json Output full summary as JSON`],
189
+ }),
190
+ context: verb(() => import('../context.js'), 'handleContext', {
191
+ repairsCodexWrapper: true,
192
+ flags: {
193
+ switches: ['auto', 'cross-project', 'pinned-only'],
194
+ values: ['budget', 'format', 'framing', 'include-recent', 'runtime', 'scope'],
195
+ numbers: ['limit'],
196
+ },
197
+ usage: [`
198
+ context Smart context injection for AI agents
199
+ --auto Auto-detect task from git state
200
+ --budget <n> Token budget for the whole printed block (default: 1500)
201
+ --pinned-only Only inject pinned memories (used by UserPromptSubmit hook)
202
+ --include-recent <n> With --pinned-only, also inject the last N writes regardless of pinning
203
+ (the hook payload's "prompt" drives prompt recall instead of --include-recent when pinnedInject.promptRecall is on, the default)
204
+ --format <fmt> Output format: markdown (default), json, additional-context (Claude Code hook JSON),
205
+ or copilot (Copilot sessionStart hook JSON, from the store of the payload's cwd)
206
+ --framing <mode> Framing: observe (default), suggest, assert`],
207
+ }),
208
+ sleep: verb(() => import('../sleep.js'), 'handleSleep', {
209
+ repairsCodexWrapper: true,
210
+ destructive: true,
211
+ scoped: true,
212
+ flags: { switches: ['dry-run', 'no-learn', 'no-share'], values: ['log-file'] },
213
+ usage: [`
214
+ sleep Run consolidation pass (auto-learns + dedup + auto-shares)
215
+ Runs at Claude Code and OpenCode session end and in the daily job.
216
+ With ANTHROPIC_API_KEY set it sends memory text to Anthropic for
217
+ fact extraction; {"extraction":{"enabled":false}} turns that off
218
+ --dry-run Preview without writing
219
+ --no-learn Skip auto git-learn and the agent memory import before consolidation
220
+ --no-share Skip auto-sharing to global store`],
221
+ }),
222
+ 'daily-runner': verb(() => import('../setup.js'), 'handleDailyRunner', {
223
+ flags: {},
224
+ usage: [`
225
+ daily-runner Sweep registered workspaces and run daily learn+sleep`],
226
+ }),
227
+ dedup: verb(() => import('../maintenance.js'), 'handleDedup', {
228
+ destructive: true,
229
+ flags: { switches: ['dry-run'], numbers: ['threshold'] },
230
+ usage: [`
231
+ dedup Remove duplicate memories (keeps stronger copy)
232
+ --dry-run Preview without removing
233
+ --threshold <n> Ignored, kept for old scripts: a duplicate is the same text apart from spacing`],
234
+ }),
235
+ };
236
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1,20 @@
1
+ import { type VerbSpec } from '../verb-row.js';
2
+ export declare const OBJECT_VERBS: {
3
+ predict: VerbSpec;
4
+ decide: VerbSpec;
5
+ incident: VerbSpec;
6
+ process: VerbSpec;
7
+ policy: VerbSpec;
8
+ skill: VerbSpec;
9
+ brief: VerbSpec;
10
+ note: VerbSpec;
11
+ graph: VerbSpec;
12
+ invalidate: VerbSpec;
13
+ wm: VerbSpec;
14
+ dashboard: VerbSpec;
15
+ mcp: VerbSpec;
16
+ serve: VerbSpec;
17
+ goal: VerbSpec;
18
+ auth: VerbSpec;
19
+ };
20
+ //# sourceMappingURL=objects.d.ts.map