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,257 @@
1
+ // First-class object, server, goal and auth verbs, in `hippo help` order.
2
+ import { DEFAULT_KEY_TTL_DAYS, MAX_TTL_DAYS } from '../../api/auth.js';
3
+ import { DEFAULT_SERVER_HOST, DEFAULT_SERVER_PORT } from '../../server/defaults.js';
4
+ import { verb } from '../verb-row.js';
5
+ export const OBJECT_VERBS = {
6
+ predict: verb(() => import('../predictions.js'), 'handlePredict', {
7
+ flags: {
8
+ values: ['actual', 'class', 'estimate', 'note', 'state', 'status', 'target', 'unit'],
9
+ numbers: ['limit'],
10
+ },
11
+ usage: [`
12
+ predict "<claim>" Record a prediction to score against the actual outcome later
13
+ --class <c> Reference class (required)
14
+ --estimate <v> Numeric estimate
15
+ --unit <u> Unit of the estimate
16
+ --target <YYYY-MM-DD> When the outcome is due
17
+ predict close <id> Close a prediction
18
+ --state <s> closed | closed-unknown (required)
19
+ --actual <v> The actual value
20
+ --note "<text>" Closure note
21
+ predict list [--class <c>] [--status open|closed|closed-unknown|all] [--limit N]
22
+ List predictions (closed and closed-unknown need --class)
23
+ predict show <id> Show one prediction
24
+ predict baserate --class <c>
25
+ How past estimates in a class compared with the actuals`],
26
+ }),
27
+ decide: verb(() => import('../decisions.js'), 'handleDecide', {
28
+ flags: { values: ['context', 'status', 'supersedes'], numbers: ['limit'] },
29
+ usage: [`
30
+ decide "<decision>" Record a decision (first-class object + memory mirror)
31
+ --context "<why>" Why this decision was made
32
+ --supersedes <mem-id> Supersede the decision backed by this memory id
33
+ decide list [--status active|superseded|closed|all] [--limit N]
34
+ List decisions (table is authoritative, survives decay)
35
+ decide get <id> Show a decision by its table id
36
+ decide close <id> Retire (close) an active decision by its table id`],
37
+ }),
38
+ incident: verb(() => import('../incidents.js'), 'handleIncident', {
39
+ flags: { values: ['context', 'resolution', 'status'], numbers: ['limit'], lists: ['link'] },
40
+ usage: [`
41
+ incident "<incident>" Record an incident (first-class object + memory mirror)
42
+ --context "<details>" What happened / surrounding detail
43
+ --link <mem-id> Link a memory as evidence (repeatable)
44
+ incident list [--status open|resolved|closed|all] [--limit N]
45
+ List incidents (table is authoritative, survives decay)
46
+ incident get <id> Show an incident by its table id
47
+ incident resolve <id> Resolve an open incident (open -> resolved)
48
+ --resolution "<text>" How it was resolved (required)
49
+ incident close <id> Retire (close) an open or resolved incident by its table id`],
50
+ }),
51
+ process: verb(() => import('../playbooks.js'), 'handleProcess', {
52
+ flags: { values: ['change', 'description', 'status'], numbers: ['limit'], lists: ['step'] },
53
+ usage: [`
54
+ process new "<name>" Record a process map (first-class object + memory mirror)
55
+ --step "<text>" An ordered step (repeatable)
56
+ --description "<text>" Optional summary of the process
57
+ process list [--status active|superseded|closed|all] [--limit N]
58
+ List processes (table is authoritative, survives decay)
59
+ process get <id> Show a process (with its steps) by its table id
60
+ process supersede <id> Record a new version that supersedes an active process
61
+ --step "<text>" A step of the new version (repeatable, required)
62
+ --change "<summary>" What changed in this version (the delta note)
63
+ --description "<text>" Optional summary of the new version
64
+ process close <id> Retire (close) an active process by its table id`],
65
+ }),
66
+ policy: verb(() => import('../playbooks.js'), 'handlePolicy', {
67
+ flags: { values: ['change', 'from', 'name', 'status', 'text', 'to'], numbers: ['limit'] },
68
+ usage: [`
69
+ policy new "<name>" Record a policy (bi-temporal first-class object + mirror)
70
+ --text "<rule>" The policy rule/statement (required)
71
+ --from "<iso>" Effective-from date (default: now)
72
+ --to "<iso>" Effective-to date (optional; open-ended if omitted)
73
+ policy list [--status active|superseded|closed|all] [--limit N]
74
+ List policies (table is authoritative, survives decay)
75
+ policy get <id> Show a policy by its table id
76
+ policy asof "<iso-date>" Show active policies in force at a valid-time
77
+ --name "<policy>" Filter to one policy by name
78
+ policy supersede <id> Record a new version that supersedes an active policy
79
+ --text "<rule>" The new rule (required)
80
+ --from "<iso>" New effective-from (default: now)
81
+ --to "<iso>" New effective-to (optional)
82
+ --change "<summary>" What changed in this version (the delta note)
83
+ policy close <id> Retire (close) an active policy by its table id`],
84
+ }),
85
+ skill: verb(() => import('../playbooks.js'), 'handleSkill', {
86
+ flags: { values: ['change', 'instructions', 'status', 'trigger'], numbers: ['limit'] },
87
+ usage: [`
88
+ skill new "<name>" Record a skill (reusable agent-followable capability)
89
+ --instructions "<txt>" The skill body (required)
90
+ --trigger "<when>" Optional: when to apply this skill
91
+ skill list [--status active|superseded|closed|all] [--limit N]
92
+ List skills (table is authoritative, survives decay)
93
+ skill get <id> Show a skill by its table id
94
+ skill export Render active skills as an AGENTS.md/CLAUDE.md markdown block
95
+ skill supersede <id> Record a new version that supersedes an active skill
96
+ --instructions "<txt>" The new skill body (required)
97
+ --trigger "<when>" Optional new trigger
98
+ --change "<summary>" What changed in this version (the delta note)
99
+ skill close <id> Retire (close) an active skill by its table id`],
100
+ }),
101
+ brief: verb(() => import('../briefs.js'), 'handleProjectBrief', {
102
+ aliases: ['project-brief'],
103
+ dryRun: { form: 'refresh', honoured: (args) => args[0] === 'refresh' },
104
+ flags: { switches: ['dry-run'], values: ['change', 'repo', 'status', 'summary'], numbers: ['limit'] },
105
+ usage: [`
106
+ brief new "<repo>" Record a repo-scoped project brief
107
+ --summary "<text>" The brief body (required)
108
+ brief list [--status active|superseded|closed|all] [--repo "<repo>"] [--limit N]
109
+ List project briefs (table is authoritative, survives decay)
110
+ brief get <id> Show a project brief by its table id
111
+ brief supersede <id> Record a new version that supersedes an active brief
112
+ --summary "<text>" The new brief body (required)
113
+ --change "<summary>" What changed in this version (the delta note)
114
+ brief close <id> Retire (close) an active project brief by its table id
115
+ brief refresh "<repo>" Auto-assemble the brief from the repo's receipts (path:<repo>)
116
+ --dry-run Print the assembled brief without writing it`],
117
+ }),
118
+ note: verb(() => import('../notes.js'), 'handleCustomerNote', {
119
+ aliases: ['customer-note'],
120
+ flags: { values: ['change', 'customer', 'status', 'text'], numbers: ['limit'] },
121
+ usage: [`
122
+ note new "<customer>" Record a customer/account-scoped note
123
+ --text "<note>" The note body (required)
124
+ note list [--status active|superseded|closed|all] [--customer "<id>"] [--limit N]
125
+ List customer notes (table is authoritative, survives decay)
126
+ note get <id> Show a customer note by its table id
127
+ note supersede <id> Record a new version that supersedes an active note
128
+ --text "<note>" The new note body (required)
129
+ --change "<summary>" What changed in this version (the delta note)
130
+ note close <id> Retire (close) an active customer note by its table id`],
131
+ }),
132
+ graph: verb(() => import('../graph.js'), 'handleGraph', {
133
+ flags: { switches: ['json', 'open'], values: ['entity', 'format', 'out'] },
134
+ usage: [`
135
+ graph extract Rebuild the entity/relation graph from consolidated objects
136
+ (decisions/policies/customer-notes/project-briefs); idempotent`],
137
+ }),
138
+ invalidate: verb(() => import('../curate.js'), 'handleInvalidate', {
139
+ destructive: true,
140
+ flags: { switches: ['churn', 'dry-run'], values: ['id', 'reason'] },
141
+ usage: [`
142
+ invalidate "<pattern>" Actively weaken memories matching an old pattern
143
+ (content overlap, or a tag EXACTLY equal to the
144
+ full pattern - never token-level tag matching)
145
+ --id <memory-id> Invalidate exactly one memory (instead of a pattern)
146
+ --dry-run Preview what would be hit; writes nothing
147
+ Note: a pattern equal to the system tag
148
+ 'invalidated' re-weakens previously invalidated
149
+ memories - preview with --dry-run first
150
+ --reason "<why>" Optional: what replaced it
151
+ invalidate --churn FE2: tag memories 'churn-stale' whose named file
152
+ changed or was deleted, or whose named symbol or
153
+ npm script was removed, in this repo's git history
154
+ since the memory was stored or confirmed
155
+ --dry-run Preview what would be tagged; writes nothing`],
156
+ }),
157
+ wm: verb(() => import('../continuity.js'), 'handleWm', {
158
+ flags: { switches: ['json'], values: ['content', 'importance', 'scope', 'session', 'task'], numbers: ['limit'] },
159
+ usage: [`
160
+ wm <sub> Working memory — bounded buffer for current state
161
+ wm push Push a working memory entry
162
+ --scope <scope> Scope name (default: default)
163
+ --content <text> Content to store (required)
164
+ --importance <n> Priority 0-1 (default: 0.5)
165
+ --session <id> Session ID
166
+ --task <id> Task ID
167
+ wm read Read working memory entries
168
+ --scope <scope> Filter by scope
169
+ --session <id> Filter by session
170
+ --limit <n> Max entries (default: 20)
171
+ --json Output as JSON
172
+ wm clear Clear working memory entries
173
+ --scope <scope> Filter by scope
174
+ --session <id> Filter by session
175
+ wm flush Same as clear; nothing runs it at session end
176
+ --scope <scope> Filter by scope
177
+ --session <id> Filter by session`],
178
+ }),
179
+ dashboard: verb(() => import('../serve.js'), 'handleDashboard', {
180
+ flags: { numbers: ['port'] },
181
+ usage: [`
182
+ dashboard Open web dashboard for memory health
183
+ --port <n> Port to serve on (default: 3333)`],
184
+ }),
185
+ mcp: verb(() => import('../serve.js'), 'handleMcp', {
186
+ flags: {},
187
+ usage: [`
188
+ mcp Start MCP server (stdio transport)`],
189
+ }),
190
+ serve: verb(() => import('../serve.js'), 'handleServe', {
191
+ flags: { switches: ['allow-cleartext'], values: ['host', 'tls-cert', 'tls-key'], numbers: ['port'] },
192
+ usage: [`
193
+ serve Start the HTTP API server for this store (Ctrl+C stops it)
194
+ --port <n> Port to serve on (default: $HIPPO_PORT or ${DEFAULT_SERVER_PORT})
195
+ --host <host> Address to bind (default: ${DEFAULT_SERVER_HOST})
196
+ --tls-cert <file> PEM certificate; serve HTTPS only (or $HIPPO_TLS_CERT)
197
+ --tls-key <file> PEM private key for it; give both (or $HIPPO_TLS_KEY)
198
+ --allow-cleartext Bind a non-loopback host without TLS, for a TLS proxy
199
+ in front (or $HIPPO_ALLOW_CLEARTEXT=1)
200
+ Every request needs an API key (hippo auth create).
201
+ $HIPPO_ALLOW_KEYLESS_LOCAL=1 lets requests from this machine
202
+ in without one, as a member ($HIPPO_KEYLESS_LOCAL_ROLE=admin
203
+ for host admin); $HIPPO_REQUIRE_AUTH=1 wins over it.`],
204
+ }),
205
+ goal: verb(() => import('../goals.js'), 'handleGoal', {
206
+ scoped: true,
207
+ flags: {
208
+ switches: ['all', 'no-propagate'],
209
+ values: ['level', 'outcome', 'parent', 'policy', 'session-id', 'success', 'tenant-id'],
210
+ },
211
+ usage: [`
212
+ goal <sub> Goal stack, scoped per session
213
+ goal push <name> Push a new active goal; prints the new goal id
214
+ --policy <type> schema-fit-biased | error-prioritized |
215
+ recency-first | hybrid
216
+ --success "<cond>" Optional success condition text
217
+ --level <n> Goal level (default: 0)
218
+ --parent <goalId> Parent goal id (for sub-goals)
219
+ --session-id <s> Override session (defaults to HIPPO_SESSION_ID)
220
+ --tenant-id <t> Override tenant (defaults to HIPPO_TENANT)
221
+ goal list Show active goals as a table
222
+ --all Include suspended/completed goals
223
+ goal complete <id> Mark a goal completed
224
+ --outcome <0..1> Outcome score; >=0.7 boosts, <0.3 decays recalled mems
225
+ --no-propagate Close the goal without applying strength side-effects
226
+ goal suspend <id> Move an active goal to suspended
227
+ goal resume <id> Move a suspended goal back to active (depth-capped)`],
228
+ }),
229
+ auth: verb(() => import('../auth.js'), 'handleAuth', {
230
+ scoped: true,
231
+ flags: { switches: ['all', 'global', 'json', 'no-expiry'], values: ['label', 'role', 'tenant'], numbers: ['ttl-days'] },
232
+ usage: [`
233
+ auth <sub> Manage API keys (A5 stub auth)
234
+ auth create Mint a new API key (plaintext shown ONCE)
235
+ --label <s> Optional human label
236
+ --role <r> admin | member (default: member; member blocked from /v1/sleep)
237
+ --ttl-days <n> Days until the key expires (default: ${DEFAULT_KEY_TTL_DAYS}, at most ${MAX_TTL_DAYS})
238
+ --no-expiry Mint a key that never expires
239
+ --tenant <id> Override tenant (defaults to HIPPO_TENANT)
240
+ --json Output as JSON
241
+ --global Operate on the global store
242
+ auth list List API keys (active by default)
243
+ --all Include revoked and expired keys
244
+ --json Output as JSON
245
+ --global Operate on the global store
246
+ auth revoke <key_id> Revoke an API key (subsequent validate fails)
247
+ --json Output as JSON
248
+ --global Operate on the global store
249
+ auth grant <key_id> <scope> Let a member key read one restricted scope
250
+ --json Output as JSON
251
+ --global Operate on the global store
252
+ auth ungrant <key_id> <scope> Remove a scope grant
253
+ --json Output as JSON
254
+ --global Operate on the global store`],
255
+ }),
256
+ };
257
+ //# sourceMappingURL=objects.js.map
@@ -0,0 +1,31 @@
1
+ import { type VerbSpec } from '../verb-row.js';
2
+ export declare const SESSION_VERBS: {
3
+ snapshot: VerbSpec;
4
+ session: VerbSpec;
5
+ handoff: VerbSpec;
6
+ card: VerbSpec;
7
+ current: VerbSpec;
8
+ forget: VerbSpec;
9
+ inspect: VerbSpec;
10
+ embed: VerbSpec;
11
+ watch: VerbSpec;
12
+ learn: VerbSpec;
13
+ promote: VerbSpec;
14
+ share: VerbSpec;
15
+ peers: VerbSpec;
16
+ sync: VerbSpec;
17
+ import: VerbSpec;
18
+ export: VerbSpec;
19
+ capture: VerbSpec;
20
+ setup: VerbSpec;
21
+ 'last-sleep': VerbSpec;
22
+ 'session-end': VerbSpec;
23
+ '__session-end-worker': VerbSpec;
24
+ 'pre-compact': VerbSpec;
25
+ 'compact-resume': VerbSpec;
26
+ 'post-compact': VerbSpec;
27
+ 'codex-run': VerbSpec;
28
+ '__codex-session-end-worker': VerbSpec;
29
+ hook: VerbSpec;
30
+ };
31
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1,314 @@
1
+ // Continuity, transfer, capture and agent-hook verbs, in `hippo help` order.
2
+ import { boolFlag } from '../flag-values.js';
3
+ import { verb } from '../verb-row.js';
4
+ export const SESSION_VERBS = {
5
+ snapshot: verb(() => import('../continuity.js'), 'handleSnapshot', {
6
+ flags: { switches: ['json'], values: ['id', 'next-step', 'session', 'source', 'status', 'summary', 'task'] },
7
+ usage: [`
8
+ snapshot <sub> Persist or inspect the current active task
9
+ snapshot save Save active task state
10
+ --task <task>
11
+ --summary <summary>
12
+ --next-step <step>
13
+ --source <source> Optional source label
14
+ --session <id> Link snapshot to a session trail
15
+ snapshot show Show the active task snapshot
16
+ --json Output as JSON
17
+ snapshot clear Clear the active task snapshot
18
+ --status <status> Mark final status (default: cleared)`],
19
+ }),
20
+ session: verb(() => import('../continuity.js'), 'handleSession', {
21
+ flags: {
22
+ switches: ['json'],
23
+ values: ['content', 'id', 'outcome', 'session', 'source', 'summary', 'task', 'type'],
24
+ numbers: ['limit'],
25
+ },
26
+ usage: [`
27
+ session <sub> Append or inspect short-term session history
28
+ session log Append a structured session event
29
+ --id <session-id>
30
+ --content <text>
31
+ --type <type> Event type (default: note)
32
+ --task <task> Optional task label
33
+ --source <source> Optional source label
34
+ session show Show recent events for a session or task
35
+ --id <session-id>
36
+ --task <task>
37
+ --limit <n> Event limit (default: 8)
38
+ --json Output as JSON
39
+ session latest Show latest task snapshot + events
40
+ --id <session-id> Filter by session
41
+ --json Output as JSON
42
+ session resume Re-inject latest handoff as context output
43
+ --id <session-id> Filter by session`],
44
+ }),
45
+ handoff: verb(() => import('../continuity.js'), 'handleHandoff', {
46
+ flags: {
47
+ switches: ['json'],
48
+ values: ['card-id', 'id', 'next', 'outcome', 'session', 'summary', 'target-runtime', 'task', 'tests'],
49
+ lists: ['artifact', 'constraint'],
50
+ },
51
+ usage: [`
52
+ handoff <sub> Manage session handoffs for continuity
53
+ handoff create Create a new session handoff
54
+ --summary <text> Handoff summary (required)
55
+ --next <text> Next action for successor
56
+ --session <id> Session ID (auto-generated if omitted)
57
+ --task <id> Associated task ID
58
+ --artifact <path> Related file path (repeatable)
59
+ --constraint <text> Constraint for the successor to respect (repeatable)
60
+ --outcome <o> success | failure | partial
61
+ --target-runtime <n> Name of the runtime the successor will run in
62
+ --card-id <id> Associated card/ticket ID
63
+ --tests <status> pass | fail | unknown (default: unknown)
64
+ handoff latest Show the most recent handoff
65
+ --session <id> Filter by session
66
+ --json Output as JSON
67
+ handoff show <id> Show a specific handoff by ID`],
68
+ }),
69
+ card: verb(() => import('../card.js'), 'handleCard', {
70
+ // Every card subcommand's flags together; card.ts then refuses the ones its subcommand does not read.
71
+ flags: {
72
+ switches: ['json'],
73
+ values: ['author', 'body', 'budget', 'contract', 'outcome', 'reason', 'repo', 'run', 'runtime', 'session',
74
+ 'status', 'title'],
75
+ lists: ['depends-on'],
76
+ },
77
+ usage: [`
78
+ card <sub> Manage claimable work-queue cards
79
+ card create Create a new card
80
+ --title <text> Card title (required)
81
+ --repo <name> Associated repo
82
+ --contract <text> Associated contract
83
+ --budget <n> Token/step budget
84
+ --depends-on <id> Parent card id (repeatable)
85
+ card show <id> Show a card, its deps, runs, comments and latest handoff
86
+ --json Output as JSON
87
+ card list List cards, newest-updated first
88
+ --status <status> Filter by status
89
+ card claim <id> Claim a ready or blocked card; prints its run id and lease
90
+ --runtime <name> Claiming runtime (required)
91
+ --session <id> Session ID
92
+ card heartbeat <id> Extend a running card's lease
93
+ --run <n> Your run id, as card claim printed it (required)
94
+ card block <id> Block a running card
95
+ --reason "<why>" Reason recorded as a card comment (required)
96
+ --run <n> Refuse unless <n> is the card's live run
97
+ card review <id> Move a running card to review
98
+ --run <n> Refuse unless <n> is the card's live run
99
+ card complete <id> Complete a card in review
100
+ --outcome <o> success | failure | partial (required)
101
+ --run <n> Refuse unless <n> is the card's live run
102
+ card reclaim Return every running card whose lease has expired to ready
103
+ card comment <id> Add a comment to a card
104
+ --body <text> Comment body (required)
105
+ --author <name> Comment author (default: cli)`],
106
+ }),
107
+ current: verb(() => import('../continuity.js'), 'handleCurrent', {
108
+ flags: { switches: ['json'] },
109
+ usage: [`
110
+ current <sub> Show compact current state for agent injection
111
+ current show Active task + recent session events (default)
112
+ --json Output as JSON`],
113
+ }),
114
+ forget: verb(() => import('../curate.js'), 'handleForget', {
115
+ destructive: true,
116
+ scoped: true,
117
+ flags: { switches: ['archive', 'dry-run'], values: ['reason'] },
118
+ usage: [`
119
+ forget <id> Force remove a memory
120
+ --archive Archive a raw (append-only) memory instead of deleting
121
+ --reason "<why>" Reason recorded on the archive (required with --archive)`],
122
+ }),
123
+ inspect: verb(() => import('../status.js'), 'handleInspect', {
124
+ flags: {},
125
+ usage: [`
126
+ inspect <id> Show full memory detail`],
127
+ }),
128
+ embed: verb(() => import('../maintenance.js'), 'handleEmbed', {
129
+ flags: { switches: ['global', 'reset-physics', 'status'] },
130
+ usage: [`
131
+ embed Embed all memories for semantic search
132
+ --status Show embedding coverage`],
133
+ }),
134
+ watch: verb(() => import('../transfer.js'), 'handleWatch', {
135
+ flags: { values: ['shell'] },
136
+ usage: [`
137
+ watch -- <cmd> [args] Run command, auto-learn from failures (no shell)
138
+ --shell "<line>" Run one command line through the shell instead`],
139
+ }),
140
+ learn: verb(() => import('../transfer.js'), 'handleLearn', {
141
+ scoped: true,
142
+ flags: { switches: ['git'], values: ['repos'], numbers: ['days'] },
143
+ usage: [`
144
+ learn Learn lessons from repository history
145
+ --git Scan recent git commits for lessons
146
+ --days <n> Scan this many days back (default: 7)
147
+ --repos <paths> Comma-separated repo paths to scan`],
148
+ }),
149
+ promote: verb(() => import('../transfer.js'), 'handlePromote', {
150
+ scoped: true,
151
+ flags: {},
152
+ usage: [`
153
+ promote <id> Copy a local memory to the global store`],
154
+ }),
155
+ share: verb(() => import('../transfer.js'), 'handleShare', {
156
+ dryRun: { form: '--auto', honoured: (args, flags) => args[0] === '--auto' || boolFlag(flags, 'auto') },
157
+ flags: { switches: ['auto', 'dry-run', 'force'], numbers: ['min-score'] },
158
+ usage: [`
159
+ share <id> Share a memory with attribution + transfer scoring
160
+ --force Share even if transfer score is low
161
+ --auto Auto-share all high-transfer-score memories
162
+ --dry-run Preview what would be shared
163
+ --min-score <n> Minimum transfer score (default: 0.6)`],
164
+ }),
165
+ peers: verb(() => import('../transfer.js'), 'handlePeers', {
166
+ flags: { switches: ['all-tenants'] },
167
+ usage: [`
168
+ peers List projects contributing to global store`],
169
+ }),
170
+ sync: verb(() => import('../transfer.js'), 'handleSync', {
171
+ flags: { switches: ['cross-project'] },
172
+ usage: [`
173
+ sync Pull global memories into local project`],
174
+ }),
175
+ import: verb(() => import('../transfer.js'), 'handleImport', {
176
+ flags: {
177
+ switches: ['agents', 'dry-run', 'global'],
178
+ values: ['chatgpt', 'claude', 'cursor', 'file', 'markdown', 'name', 'scope', 'vault'],
179
+ lists: ['tag'],
180
+ },
181
+ usage: [`
182
+ import Import memories from other AI tools
183
+ --chatgpt <path> Import from ChatGPT memory export (JSON or txt)
184
+ --claude <path> Import from CLAUDE.md or Claude memory.json
185
+ --cursor <path> Import from .cursorrules or .cursor/rules
186
+ --file <path> Import from any markdown or text file
187
+ --markdown <path> Import from structured MEMORY.md / AGENTS.md
188
+ --vault <path> Import a markdown-vault FOLDER as kind='raw' notes
189
+ (Obsidian/Foam/Dendron). Requires --name <vault>.
190
+ [--scope <scope>]
191
+ --agents Sync every coding agent's own memories (Claude Code, Codex,
192
+ Gemini CLI, Copilot, OpenClaw, Qwen Code) now; with
193
+ --dry-run, print each tool's folders and what would change.
194
+ HIPPO_AGENT_MEMORY_TOOLS=<ids> or config agentMemories.tools
195
+ picks the tools; "none" or [] turns the import off
196
+ --dry-run Preview without writing
197
+ --global Write to global store ($HIPPO_HOME or ~/.hippo/)
198
+ --tag <tag> Add extra tag (repeatable)`],
199
+ }),
200
+ export: verb(() => import('../transfer.js'), 'handleExport', {
201
+ flags: { values: ['format'] },
202
+ usage: [`
203
+ export [file] Export all memories (default: stdout)
204
+ --format <fmt> Output format: json (default) or markdown`],
205
+ }),
206
+ capture: verb(() => import('../session-hooks.js'), 'handleCapture', {
207
+ repairsCodexWrapper: true,
208
+ flags: { switches: ['dry-run', 'global', 'last-session', 'stdin'], values: ['file', 'log-file', 'transcript'] },
209
+ usage: [`
210
+ capture Extract memories from conversation text
211
+ --stdin Read from piped input
212
+ --file <path> Read from a file
213
+ --last-session Read the transcript a hook names on stdin, else the newest
214
+ Claude Code one from any project
215
+ --transcript <path> Explicit transcript path (implies --last-session)
216
+ --log-file <path> Tee output to a log file (paired with 'hippo last-sleep')
217
+ --dry-run Preview without writing
218
+ --global Write to global store ($HIPPO_HOME or ~/.hippo/)`],
219
+ }),
220
+ setup: verb(() => import('../setup.js'), 'handleSetup', {
221
+ flags: { switches: ['all', 'dry-run', 'no-learn', 'no-schedule'] },
222
+ usage: [`
223
+ setup One-shot: detect installed AI tools and install their hooks:
224
+ claude-code gets 7 hooks in $CLAUDE_CONFIG_DIR/settings.json
225
+ (~/.claude by default), opencode a plugin, codex 2 hooks in
226
+ its hooks.json plus a launcher wrapper, copilot 4 hooks, the
227
+ MCP server and an instructions block under $COPILOT_HOME
228
+ (~/.copilot by default); other tools get a
229
+ hint. Then imports each agent's
230
+ user-level memories into the global store
231
+ --all Install for every JSON-hook tool, even if not detected
232
+ --dry-run Show what would be installed without writing
233
+ --no-schedule Skip installing or repairing the daily runner
234
+ --no-learn Skip the agent memory import`],
235
+ }),
236
+ 'last-sleep': verb(() => import('../last-sleep.js'), 'handleLastSleep', {
237
+ flags: { switches: ['keep'], values: ['path'] },
238
+ usage: [`
239
+ last-sleep Show the last sleep log on stderr, one problems line to the user, and clear it
240
+ --path <p> Log path (default: ~/.hippo/logs/last-sleep.log)
241
+ --keep Print without clearing`],
242
+ }),
243
+ 'session-end': verb(() => import('../session-hooks.js'), 'handleSessionEnd', {
244
+ // Its sleep step reads --dry-run, but the capture after it writes for real.
245
+ dryRun: false,
246
+ flags: {
247
+ switches: ['dry-run', 'no-learn', 'no-share', 'turn'],
248
+ values: ['format', 'log-file', 'runtime', 'session-id', 'transcript'],
249
+ },
250
+ usage: [`
251
+ session-end SessionEnd hook: count this session's re-read tokens, run sleep, then
252
+ capture from the session's last 20 user and 10 assistant messages,
253
+ in a detached worker
254
+ --log-file <path> Tee the worker's output to a log file (paired with 'hippo last-sleep')
255
+ --runtime copilot The payload came from a Copilot hook: use the store of its cwd and find
256
+ the Copilot CLI session log by session id; with no --log-file, log to
257
+ ~/.hippo/logs/copilot-sleep.log
258
+ --turn VS Code Stop hook, after each reply: capture only the new turns, sleep
259
+ only at the auto-sleep threshold, and keep the session's snapshot; does
260
+ nothing for any other payload`],
261
+ }),
262
+ '__session-end-worker': verb(() => import('../session-hooks.js'), 'handleSessionEndWorker', {
263
+ dryRun: false,
264
+ flags: {
265
+ switches: ['dry-run', 'no-learn', 'no-share', 'turn'],
266
+ values: ['log-file', 'session-id', 'transcript'],
267
+ },
268
+ }),
269
+ 'pre-compact': verb(() => import('../session-hooks.js'), 'handlePreCompact', {
270
+ flags: { values: ['format', 'log-file', 'runtime'] },
271
+ usage: [`
272
+ pre-compact PreCompact hook: record the compaction, save a working-state snapshot, and
273
+ ask the summariser to end with a "Memories for hippo" list
274
+ --log-file <p> Diagnostic log path (default: ~/.hippo/logs/pre-compact.log)
275
+ --runtime copilot The payload came from a Copilot hook: use the store of its cwd and save
276
+ the snapshot only (Copilot has no PostCompact hook to close a record)`],
277
+ }),
278
+ 'compact-resume': verb(() => import('../session-hooks.js'), 'handleCompactResume', {
279
+ flags: {},
280
+ usage: [`
281
+ compact-resume SessionStart(compact) hook: re-print the snapshot, if under 15 minutes old`],
282
+ }),
283
+ 'post-compact': verb(() => import('../session-hooks.js'), 'handlePostCompact', {
284
+ flags: { values: ['log-file'] },
285
+ usage: [`
286
+ post-compact PostCompact hook: keep that list as memories (a busy store leaves the save to
287
+ the next hippo sleep) and print one line saying how many
288
+ --log-file <p> Same log path as pre-compact (default: ~/.hippo/logs/pre-compact.log)`],
289
+ }),
290
+ 'codex-run': verb(() => import('../session-hooks.js'), 'handleCodexRun', {
291
+ flags: {},
292
+ usage: [`
293
+ codex-run [-- ...args] Launch real Codex behind Hippo's session-end wrapper`],
294
+ }),
295
+ '__codex-session-end-worker': verb(() => import('../session-hooks.js'), 'handleCodexSessionEndWorker', {
296
+ flags: { values: ['codex-home', 'history-path', 'log-file', 'start-offset', 'started-at'] },
297
+ }),
298
+ hook: verb(() => import('../setup.js'), 'handleHook', {
299
+ flags: {},
300
+ usage: [`
301
+ hook <sub> [target] Manage framework integrations
302
+ hook list Show available hooks
303
+ hook install <target> Install hook (claude-code|codex|copilot|cursor|openclaw|opencode|pi)
304
+ claude-code adds 7 hooks to $CLAUDE_CONFIG_DIR/settings.json
305
+ (~/.claude by default); opencode installs a plugin; codex
306
+ adds 2 hooks to $CODEX_HOME/hooks.json (trust them once in /hooks) and
307
+ wraps the detected launcher in place; copilot writes
308
+ hooks/hippo.json, the "hippo" MCP server and an instructions
309
+ block under $COPILOT_HOME (~/.copilot by default); all but
310
+ claude-code and copilot also patch an existing AGENTS.md
311
+ hook uninstall <target> Remove hook; for copilot, only what hippo wrote`],
312
+ }),
313
+ };
314
+ //# sourceMappingURL=sessions.js.map