hippo-memory 1.60.0 → 1.62.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 (593) hide show
  1. package/README.md +29 -54
  2. package/dist/ablation.js +9 -27
  3. package/dist/agent-memories/apply.d.ts +1 -1
  4. package/dist/agent-memories/apply.js +4 -1
  5. package/dist/agent-memories/claude-code.d.ts +3 -1
  6. package/dist/agent-memories/claude-code.js +54 -10
  7. package/dist/agent-memories/codex.js +1 -1
  8. package/dist/agent-memories/gemini.js +1 -1
  9. package/dist/agent-memories/legacy.js +1 -1
  10. package/dist/agent-memories/source.js +1 -1
  11. package/dist/agent-memories/sync.d.ts +3 -3
  12. package/dist/agent-memories/sync.js +22 -9
  13. package/dist/agent-memories/types.d.ts +0 -2
  14. package/dist/ambient-store.d.ts +14 -0
  15. package/dist/ambient-store.js +90 -0
  16. package/dist/ambient.d.ts +23 -0
  17. package/dist/ambient.js +72 -50
  18. package/dist/api/assemble.d.ts +93 -0
  19. package/dist/api/assemble.js +153 -0
  20. package/dist/api/audit.d.ts +17 -0
  21. package/dist/api/audit.js +23 -0
  22. package/dist/api/auth.d.ts +79 -0
  23. package/dist/api/auth.js +178 -0
  24. package/dist/api/context-select.d.ts +49 -0
  25. package/dist/api/context-select.js +344 -0
  26. package/dist/api/context-types.d.ts +105 -0
  27. package/dist/api/context-types.js +3 -0
  28. package/dist/api/context.d.ts +31 -0
  29. package/dist/api/context.js +378 -0
  30. package/dist/api/dormant.d.ts +30 -0
  31. package/dist/api/dormant.js +140 -0
  32. package/dist/api/drill-down.d.ts +84 -0
  33. package/dist/api/drill-down.js +126 -0
  34. package/dist/api/forget.d.ts +57 -0
  35. package/dist/api/forget.js +87 -0
  36. package/dist/api/goals.d.ts +18 -0
  37. package/dist/api/goals.js +33 -0
  38. package/dist/api/learn.d.ts +31 -0
  39. package/dist/api/learn.js +88 -0
  40. package/dist/api/outcome.d.ts +61 -0
  41. package/dist/api/outcome.js +66 -0
  42. package/dist/api/promote.d.ts +54 -0
  43. package/dist/api/promote.js +192 -0
  44. package/dist/api/quarantine.d.ts +24 -0
  45. package/dist/api/quarantine.js +121 -0
  46. package/dist/api/recall-types.d.ts +390 -0
  47. package/dist/api/recall-types.js +3 -0
  48. package/dist/api/recall.d.ts +36 -0
  49. package/dist/api/recall.js +499 -0
  50. package/dist/api/remember.d.ts +35 -0
  51. package/dist/api/remember.js +43 -0
  52. package/dist/api/sleep.d.ts +136 -0
  53. package/dist/api/sleep.js +256 -0
  54. package/dist/api/tokens.d.ts +26 -0
  55. package/dist/api/tokens.js +60 -0
  56. package/dist/api/types.d.ts +56 -0
  57. package/dist/api/types.js +38 -0
  58. package/dist/api.d.ts +20 -1262
  59. package/dist/api.js +25 -2727
  60. package/dist/audit.d.ts +3 -0
  61. package/dist/audit.js +6 -3
  62. package/dist/auth.d.ts +45 -4
  63. package/dist/auth.js +125 -48
  64. package/dist/autolearn.js +2 -2
  65. package/dist/capture/command.d.ts +33 -0
  66. package/dist/capture/command.js +264 -0
  67. package/dist/capture/compact.d.ts +44 -0
  68. package/dist/capture/compact.js +354 -0
  69. package/dist/capture/extract.d.ts +21 -0
  70. package/dist/capture/extract.js +464 -0
  71. package/dist/capture/transcript.d.ts +40 -0
  72. package/dist/capture/transcript.js +193 -0
  73. package/dist/capture-error.js +2 -1
  74. package/dist/churn-git.js +4 -2
  75. package/dist/cli/audit.d.ts +3 -0
  76. package/dist/cli/audit.js +159 -0
  77. package/dist/cli/auth.d.ts +2 -0
  78. package/dist/cli/auth.js +171 -0
  79. package/dist/cli/briefs.d.ts +4 -0
  80. package/dist/cli/briefs.js +453 -0
  81. package/dist/cli/card.d.ts +3 -0
  82. package/dist/cli/card.js +333 -0
  83. package/dist/cli/context.d.ts +15 -0
  84. package/dist/cli/context.js +376 -0
  85. package/dist/cli/continuity.d.ts +6 -0
  86. package/dist/cli/continuity.js +457 -0
  87. package/dist/cli/curate.d.ts +19 -0
  88. package/dist/cli/curate.js +556 -0
  89. package/dist/cli/dag.d.ts +5 -0
  90. package/dist/cli/dag.js +177 -0
  91. package/dist/cli/decisions.d.ts +4 -0
  92. package/dist/cli/decisions.js +528 -0
  93. package/dist/cli/eval.d.ts +5 -0
  94. package/dist/cli/eval.js +213 -0
  95. package/dist/cli/explain.d.ts +4 -0
  96. package/dist/cli/explain.js +156 -0
  97. package/dist/cli/goals.d.ts +2 -0
  98. package/dist/cli/goals.js +196 -0
  99. package/dist/cli/hook-blocks.d.ts +18 -0
  100. package/dist/cli/hook-blocks.js +233 -0
  101. package/dist/cli/init.d.ts +2 -0
  102. package/dist/cli/init.js +305 -0
  103. package/dist/cli/maintenance.d.ts +4 -0
  104. package/dist/cli/maintenance.js +190 -0
  105. package/dist/cli/playbooks.d.ts +4 -0
  106. package/dist/cli/playbooks.js +573 -0
  107. package/dist/cli/projects.js +9 -6
  108. package/dist/cli/recall.d.ts +7 -0
  109. package/dist/cli/recall.js +582 -0
  110. package/dist/cli/remember.d.ts +5 -0
  111. package/dist/cli/remember.js +485 -0
  112. package/dist/cli/serve.d.ts +5 -0
  113. package/dist/cli/serve.js +40 -0
  114. package/dist/cli/session-hooks.d.ts +29 -0
  115. package/dist/cli/session-hooks.js +647 -0
  116. package/dist/cli/setup.d.ts +4 -0
  117. package/dist/cli/setup.js +397 -0
  118. package/dist/cli/shared.d.ts +15 -19
  119. package/dist/cli/shared.js +50 -341
  120. package/dist/cli/slack.d.ts +2 -0
  121. package/dist/cli/slack.js +171 -0
  122. package/dist/cli/status.d.ts +18 -0
  123. package/dist/cli/status.js +409 -0
  124. package/dist/cli/transfer.d.ts +10 -0
  125. package/dist/cli/transfer.js +424 -0
  126. package/dist/cli/usage.d.ts +85 -0
  127. package/dist/cli/usage.js +741 -0
  128. package/dist/cli.d.ts +71 -120
  129. package/dist/cli.js +170 -8469
  130. package/dist/client.js +15 -8
  131. package/dist/compaction-record.d.ts +0 -2
  132. package/dist/compaction-record.js +7 -5
  133. package/dist/connectors/github/backfill.js +94 -87
  134. package/dist/connectors/github/cli-impl.js +4 -3
  135. package/dist/connectors/github/dlq.js +67 -54
  136. package/dist/connectors/github/ingest.js +34 -35
  137. package/dist/connectors/github/tenant-routing.js +3 -2
  138. package/dist/connectors/github/webhook.js +135 -216
  139. package/dist/connectors/slack/dlq.js +49 -61
  140. package/dist/connectors/slack/ingest.js +55 -48
  141. package/dist/connectors/slack/tenant-routing.js +4 -3
  142. package/dist/connectors/slack/webhook.js +72 -74
  143. package/dist/consolidate/conflicts.d.ts +10 -0
  144. package/dist/consolidate/conflicts.js +178 -0
  145. package/dist/consolidate/decay.d.ts +12 -0
  146. package/dist/consolidate/decay.js +145 -0
  147. package/dist/consolidate/llm-passes.d.ts +3 -0
  148. package/dist/consolidate/llm-passes.js +141 -0
  149. package/dist/consolidate/merge.d.ts +7 -0
  150. package/dist/consolidate/merge.js +251 -0
  151. package/dist/consolidate/physics-pass.d.ts +3 -0
  152. package/dist/consolidate/physics-pass.js +60 -0
  153. package/dist/consolidate/run.d.ts +69 -0
  154. package/dist/consolidate/run.js +76 -0
  155. package/dist/consolidate/sleep.d.ts +18 -0
  156. package/dist/consolidate/sleep.js +209 -0
  157. package/dist/consolidate/traces.d.ts +4 -0
  158. package/dist/consolidate/traces.js +178 -0
  159. package/dist/context-auto.js +7 -11
  160. package/dist/context-render.d.ts +1 -1
  161. package/dist/context-render.js +1 -1
  162. package/dist/customer-notes.d.ts +3 -0
  163. package/dist/customer-notes.js +83 -72
  164. package/dist/dag.js +225 -188
  165. package/dist/dashboard-actions.d.ts +20 -0
  166. package/dist/dashboard-actions.js +88 -0
  167. package/dist/dashboard-params.d.ts +45 -0
  168. package/dist/dashboard-params.js +127 -0
  169. package/dist/dashboard-queries.d.ts +15 -0
  170. package/dist/dashboard-queries.js +355 -0
  171. package/dist/dashboard-snapshot.d.ts +138 -0
  172. package/dist/dashboard-snapshot.js +308 -0
  173. package/dist/dashboard-types.d.ts +163 -0
  174. package/dist/dashboard-types.js +3 -0
  175. package/dist/dashboard.d.ts +6 -7
  176. package/dist/dashboard.js +228 -202
  177. package/dist/db/busy.d.ts +5 -0
  178. package/dist/db/busy.js +24 -0
  179. package/dist/db/continuity.d.ts +5 -0
  180. package/dist/db/continuity.js +145 -0
  181. package/dist/db/meta.d.ts +8 -0
  182. package/dist/db/meta.js +35 -0
  183. package/dist/db/migrate.d.ts +9 -0
  184. package/dist/db/migrate.js +138 -0
  185. package/dist/db/migrations/index.d.ts +5 -0
  186. package/dist/db/migrations/index.js +109 -0
  187. package/dist/db/migrations/types.d.ts +14 -0
  188. package/dist/db/migrations/types.js +2 -0
  189. package/dist/db/migrations/v01.d.ts +3 -0
  190. package/dist/db/migrations/v01.js +38 -0
  191. package/dist/db/migrations/v02.d.ts +3 -0
  192. package/dist/db/migrations/v02.js +21 -0
  193. package/dist/db/migrations/v03.d.ts +3 -0
  194. package/dist/db/migrations/v03.js +22 -0
  195. package/dist/db/migrations/v04.d.ts +3 -0
  196. package/dist/db/migrations/v04.js +28 -0
  197. package/dist/db/migrations/v05.d.ts +3 -0
  198. package/dist/db/migrations/v05.js +21 -0
  199. package/dist/db/migrations/v06.d.ts +3 -0
  200. package/dist/db/migrations/v06.js +25 -0
  201. package/dist/db/migrations/v07.d.ts +3 -0
  202. package/dist/db/migrations/v07.js +13 -0
  203. package/dist/db/migrations/v08.d.ts +3 -0
  204. package/dist/db/migrations/v08.js +8 -0
  205. package/dist/db/migrations/v09.d.ts +3 -0
  206. package/dist/db/migrations/v09.js +13 -0
  207. package/dist/db/migrations/v10.d.ts +3 -0
  208. package/dist/db/migrations/v10.js +17 -0
  209. package/dist/db/migrations/v11.d.ts +3 -0
  210. package/dist/db/migrations/v11.js +15 -0
  211. package/dist/db/migrations/v12.d.ts +3 -0
  212. package/dist/db/migrations/v12.js +11 -0
  213. package/dist/db/migrations/v13.d.ts +3 -0
  214. package/dist/db/migrations/v13.js +15 -0
  215. package/dist/db/migrations/v14.d.ts +3 -0
  216. package/dist/db/migrations/v14.js +66 -0
  217. package/dist/db/migrations/v15.d.ts +3 -0
  218. package/dist/db/migrations/v15.js +42 -0
  219. package/dist/db/migrations/v16.d.ts +3 -0
  220. package/dist/db/migrations/v16.js +61 -0
  221. package/dist/db/migrations/v17.d.ts +3 -0
  222. package/dist/db/migrations/v17.js +46 -0
  223. package/dist/db/migrations/v18.d.ts +3 -0
  224. package/dist/db/migrations/v18.js +60 -0
  225. package/dist/db/migrations/v19.d.ts +3 -0
  226. package/dist/db/migrations/v19.js +28 -0
  227. package/dist/db/migrations/v20.d.ts +3 -0
  228. package/dist/db/migrations/v20.js +42 -0
  229. package/dist/db/migrations/v21.d.ts +3 -0
  230. package/dist/db/migrations/v21.js +16 -0
  231. package/dist/db/migrations/v22.d.ts +3 -0
  232. package/dist/db/migrations/v22.js +82 -0
  233. package/dist/db/migrations/v23.d.ts +3 -0
  234. package/dist/db/migrations/v23.js +48 -0
  235. package/dist/db/migrations/v24.d.ts +3 -0
  236. package/dist/db/migrations/v24.js +72 -0
  237. package/dist/db/migrations/v25.d.ts +3 -0
  238. package/dist/db/migrations/v25.js +46 -0
  239. package/dist/db/migrations/v26.d.ts +3 -0
  240. package/dist/db/migrations/v26.js +23 -0
  241. package/dist/db/migrations/v27.d.ts +3 -0
  242. package/dist/db/migrations/v27.js +57 -0
  243. package/dist/db/migrations/v28.d.ts +3 -0
  244. package/dist/db/migrations/v28.js +38 -0
  245. package/dist/db/migrations/v29.d.ts +3 -0
  246. package/dist/db/migrations/v29.js +78 -0
  247. package/dist/db/migrations/v30.d.ts +3 -0
  248. package/dist/db/migrations/v30.js +92 -0
  249. package/dist/db/migrations/v31.d.ts +3 -0
  250. package/dist/db/migrations/v31.js +74 -0
  251. package/dist/db/migrations/v32.d.ts +3 -0
  252. package/dist/db/migrations/v32.js +102 -0
  253. package/dist/db/migrations/v33.d.ts +3 -0
  254. package/dist/db/migrations/v33.js +104 -0
  255. package/dist/db/migrations/v34.d.ts +3 -0
  256. package/dist/db/migrations/v34.js +93 -0
  257. package/dist/db/migrations/v35.d.ts +3 -0
  258. package/dist/db/migrations/v35.js +98 -0
  259. package/dist/db/migrations/v36.d.ts +3 -0
  260. package/dist/db/migrations/v36.js +98 -0
  261. package/dist/db/migrations/v37.d.ts +3 -0
  262. package/dist/db/migrations/v37.js +219 -0
  263. package/dist/db/migrations/v38.d.ts +3 -0
  264. package/dist/db/migrations/v38.js +277 -0
  265. package/dist/db/migrations/v39.d.ts +3 -0
  266. package/dist/db/migrations/v39.js +59 -0
  267. package/dist/db/migrations/v40.d.ts +3 -0
  268. package/dist/db/migrations/v40.js +74 -0
  269. package/dist/db/migrations/v41.d.ts +3 -0
  270. package/dist/db/migrations/v41.js +43 -0
  271. package/dist/db/migrations/v42.d.ts +3 -0
  272. package/dist/db/migrations/v42.js +41 -0
  273. package/dist/db/migrations/v43.d.ts +3 -0
  274. package/dist/db/migrations/v43.js +67 -0
  275. package/dist/db/migrations/v44.d.ts +3 -0
  276. package/dist/db/migrations/v44.js +28 -0
  277. package/dist/db/migrations/v45.d.ts +3 -0
  278. package/dist/db/migrations/v45.js +30 -0
  279. package/dist/db/migrations/v46.d.ts +3 -0
  280. package/dist/db/migrations/v46.js +25 -0
  281. package/dist/db/migrations/v47.d.ts +3 -0
  282. package/dist/db/migrations/v47.js +17 -0
  283. package/dist/db/migrations/v48.d.ts +3 -0
  284. package/dist/db/migrations/v48.js +10 -0
  285. package/dist/db/migrations/v49.d.ts +3 -0
  286. package/dist/db/migrations/v49.js +31 -0
  287. package/dist/db/migrations/v50.d.ts +3 -0
  288. package/dist/db/migrations/v50.js +67 -0
  289. package/dist/db/migrations/v51.d.ts +3 -0
  290. package/dist/db/migrations/v51.js +14 -0
  291. package/dist/db/migrations/v52.d.ts +3 -0
  292. package/dist/db/migrations/v52.js +7 -0
  293. package/dist/db/open.d.ts +23 -0
  294. package/dist/db/open.js +146 -0
  295. package/dist/db/sqlite.d.ts +21 -0
  296. package/dist/db/sqlite.js +8 -0
  297. package/dist/db/tables.d.ts +7 -0
  298. package/dist/db/tables.js +38 -0
  299. package/dist/db.d.ts +6 -46
  300. package/dist/db.js +5 -3049
  301. package/dist/decisions.d.ts +4 -1
  302. package/dist/decisions.js +102 -83
  303. package/dist/dedupe.js +3 -2
  304. package/dist/delivery-recorder.js +4 -1
  305. package/dist/doctor.js +14 -10
  306. package/dist/embedding-provider.d.ts +1 -1
  307. package/dist/embedding-provider.js +4 -3
  308. package/dist/embeddings.d.ts +9 -52
  309. package/dist/embeddings.js +43 -297
  310. package/dist/env.d.ts +75 -0
  311. package/dist/env.js +119 -0
  312. package/dist/eval-suite.js +1 -1
  313. package/dist/eval.js +2 -2
  314. package/dist/extract.js +1 -1
  315. package/dist/gated-write.js +3 -1
  316. package/dist/goals.d.ts +3 -1
  317. package/dist/goals.js +117 -86
  318. package/dist/graph/read.d.ts +73 -0
  319. package/dist/graph/read.js +325 -0
  320. package/dist/graph/rows.d.ts +45 -0
  321. package/dist/graph/rows.js +51 -0
  322. package/dist/graph/types.d.ts +83 -0
  323. package/dist/graph/types.js +11 -0
  324. package/dist/graph/write.d.ts +93 -0
  325. package/dist/{graph.js → graph/write.js} +6 -384
  326. package/dist/graph-extract.js +2 -1
  327. package/dist/graph-recall.d.ts +1 -1
  328. package/dist/graph-recall.js +2 -2
  329. package/dist/graph-stream.js +1 -1
  330. package/dist/graph-view.d.ts +1 -1
  331. package/dist/graph-view.js +1 -1
  332. package/dist/half-life-migration.d.ts +1 -1
  333. package/dist/half-life-migration.js +2 -1
  334. package/dist/hooks/codex-session.d.ts +8 -0
  335. package/dist/hooks/codex-session.js +76 -0
  336. package/dist/hooks/codex-wrapper.d.ts +55 -0
  337. package/dist/hooks/codex-wrapper.js +288 -0
  338. package/dist/hooks/json-hooks.d.ts +63 -0
  339. package/dist/hooks/json-hooks.js +356 -0
  340. package/dist/hooks/opencode.d.ts +50 -0
  341. package/dist/hooks/opencode.js +202 -0
  342. package/dist/hooks/shared.d.ts +54 -0
  343. package/dist/hooks/shared.js +77 -0
  344. package/dist/http-retry.d.ts +2 -0
  345. package/dist/http-retry.js +4 -3
  346. package/dist/http-util.d.ts +3 -0
  347. package/dist/http-util.js +10 -0
  348. package/dist/{importers.d.ts → importers/core.d.ts} +13 -17
  349. package/dist/importers/core.js +141 -0
  350. package/dist/importers/markdown-parse.d.ts +41 -0
  351. package/dist/importers/markdown-parse.js +132 -0
  352. package/dist/importers/markdown.d.ts +3 -0
  353. package/dist/importers/markdown.js +92 -0
  354. package/dist/importers/sources.d.ts +7 -0
  355. package/dist/importers/sources.js +229 -0
  356. package/dist/importers/vault.d.ts +11 -0
  357. package/dist/importers/vault.js +352 -0
  358. package/dist/incidents.d.ts +3 -0
  359. package/dist/incidents.js +52 -43
  360. package/dist/index.d.ts +25 -6
  361. package/dist/index.js +23 -6
  362. package/dist/invalidation.js +2 -1
  363. package/dist/judgment.js +2 -1
  364. package/dist/keyset.d.ts +13 -0
  365. package/dist/keyset.js +8 -0
  366. package/dist/local-embedding.d.ts +13 -0
  367. package/dist/local-embedding.js +165 -0
  368. package/dist/log.d.ts +7 -0
  369. package/dist/log.js +19 -1
  370. package/dist/mcp/admin-tools.d.ts +8 -0
  371. package/dist/mcp/admin-tools.js +116 -0
  372. package/dist/mcp/format.d.ts +27 -0
  373. package/dist/mcp/format.js +135 -0
  374. package/dist/mcp/memory-tools.d.ts +5 -0
  375. package/dist/mcp/memory-tools.js +83 -0
  376. package/dist/mcp/protocol.d.ts +83 -0
  377. package/dist/mcp/protocol.js +55 -0
  378. package/dist/mcp/recall-tools.d.ts +6 -0
  379. package/dist/mcp/recall-tools.js +320 -0
  380. package/dist/mcp/request.d.ts +10 -0
  381. package/dist/mcp/request.js +163 -0
  382. package/dist/mcp/server.d.ts +4 -75
  383. package/dist/mcp/server.js +7 -1190
  384. package/dist/mcp/session-state.d.ts +11 -0
  385. package/dist/mcp/session-state.js +28 -0
  386. package/dist/mcp/stdio.d.ts +8 -0
  387. package/dist/mcp/stdio.js +79 -0
  388. package/dist/mcp/tools.d.ts +11 -0
  389. package/dist/mcp/tools.js +247 -0
  390. package/dist/memory.d.ts +3 -0
  391. package/dist/memory.js +27 -1
  392. package/dist/multihop.d.ts +1 -1
  393. package/dist/multihop.js +2 -1
  394. package/dist/owner-validation.js +2 -1
  395. package/dist/physics-state.js +10 -7
  396. package/dist/policies.d.ts +3 -0
  397. package/dist/policies.js +93 -74
  398. package/dist/postinstall.js +3 -2
  399. package/dist/predictions/planning-fallacy.d.ts +100 -0
  400. package/dist/predictions/planning-fallacy.js +190 -0
  401. package/dist/{predictions.d.ts → predictions/store.d.ts} +7 -102
  402. package/dist/predictions/store.js +434 -0
  403. package/dist/processes.d.ts +3 -0
  404. package/dist/processes.js +94 -76
  405. package/dist/project-briefs.d.ts +3 -0
  406. package/dist/project-briefs.js +142 -113
  407. package/dist/project-identity.js +3 -2
  408. package/dist/project-merge.d.ts +12 -4
  409. package/dist/project-merge.js +132 -45
  410. package/dist/quarantine.d.ts +2 -1
  411. package/dist/quarantine.js +8 -5
  412. package/dist/raw-archive.js +1 -1
  413. package/dist/recall-history.js +3 -2
  414. package/dist/recall-pipeline.d.ts +2 -2
  415. package/dist/recall-pipeline.js +16 -8
  416. package/dist/recall-scope.js +1 -1
  417. package/dist/recall-trace.d.ts +1 -1
  418. package/dist/refine-llm.js +2 -1
  419. package/dist/reject-flow.js +6 -1
  420. package/dist/rerankers/clef.js +6 -5
  421. package/dist/rerankers/jev.d.ts +1 -1
  422. package/dist/rerankers/jev.js +4 -4
  423. package/dist/rerankers/llm.d.ts +4 -2
  424. package/dist/rerankers/llm.js +58 -38
  425. package/dist/rerankers/types.d.ts +1 -1
  426. package/dist/salience.js +1 -1
  427. package/dist/scheduler.d.ts +1 -0
  428. package/dist/scheduler.js +26 -4
  429. package/dist/scope.js +4 -3
  430. package/dist/search/as-of.d.ts +10 -0
  431. package/dist/search/as-of.js +22 -0
  432. package/dist/search/bm25-search.d.ts +14 -0
  433. package/dist/search/bm25-search.js +43 -0
  434. package/dist/search/bm25.d.ts +15 -0
  435. package/dist/search/bm25.js +54 -0
  436. package/dist/search/boosts.d.ts +54 -0
  437. package/dist/search/boosts.js +94 -0
  438. package/dist/search/breakdown.d.ts +7 -0
  439. package/dist/search/breakdown.js +20 -0
  440. package/dist/search/explain.d.ts +25 -0
  441. package/dist/search/explain.js +31 -0
  442. package/dist/search/finalize.d.ts +8 -0
  443. package/dist/search/finalize.js +52 -0
  444. package/dist/search/fusion.d.ts +27 -0
  445. package/dist/search/fusion.js +42 -0
  446. package/dist/search/hybrid-score.d.ts +20 -0
  447. package/dist/search/hybrid-score.js +73 -0
  448. package/dist/search/hybrid.d.ts +46 -0
  449. package/dist/search/hybrid.js +64 -0
  450. package/dist/search/physics-search.d.ts +29 -0
  451. package/dist/search/physics-search.js +162 -0
  452. package/dist/search/rerank.d.ts +10 -0
  453. package/dist/search/rerank.js +72 -0
  454. package/dist/search/temporal.d.ts +15 -0
  455. package/dist/search/temporal.js +45 -0
  456. package/dist/search/types.d.ts +91 -0
  457. package/dist/search/types.js +2 -0
  458. package/dist/search/vector.d.ts +30 -0
  459. package/dist/search/vector.js +71 -0
  460. package/dist/secret-detect.d.ts +2 -0
  461. package/dist/secret-detect.js +2 -1
  462. package/dist/server/auth.d.ts +52 -0
  463. package/dist/server/auth.js +221 -0
  464. package/dist/server/client-ip.d.ts +25 -0
  465. package/dist/server/client-ip.js +92 -0
  466. package/dist/server/cursor.d.ts +23 -0
  467. package/dist/server/cursor.js +58 -0
  468. package/dist/server/lifecycle.d.ts +7 -0
  469. package/dist/server/lifecycle.js +29 -0
  470. package/dist/server/mcp-http.d.ts +5 -0
  471. package/dist/server/mcp-http.js +199 -0
  472. package/dist/server/request.d.ts +33 -0
  473. package/dist/server/request.js +103 -0
  474. package/dist/server/routes/admin.d.ts +9 -0
  475. package/dist/server/routes/admin.js +158 -0
  476. package/dist/server/routes/customer-notes.d.ts +7 -0
  477. package/dist/server/routes/customer-notes.js +112 -0
  478. package/dist/server/routes/decisions.d.ts +7 -0
  479. package/dist/server/routes/decisions.js +133 -0
  480. package/dist/server/routes/incidents.d.ts +7 -0
  481. package/dist/server/routes/incidents.js +126 -0
  482. package/dist/server/routes/memories.d.ts +10 -0
  483. package/dist/server/routes/memories.js +179 -0
  484. package/dist/server/routes/policies.d.ts +8 -0
  485. package/dist/server/routes/policies.js +151 -0
  486. package/dist/server/routes/predictions.d.ts +7 -0
  487. package/dist/server/routes/predictions.js +164 -0
  488. package/dist/server/routes/processes.d.ts +7 -0
  489. package/dist/server/routes/processes.js +161 -0
  490. package/dist/server/routes/project-briefs.d.ts +8 -0
  491. package/dist/server/routes/project-briefs.js +136 -0
  492. package/dist/server/routes/recall.d.ts +8 -0
  493. package/dist/server/routes/recall.js +340 -0
  494. package/dist/server/routes/skills.d.ts +8 -0
  495. package/dist/server/routes/skills.js +150 -0
  496. package/dist/server/types.d.ts +56 -0
  497. package/dist/server/types.js +2 -0
  498. package/dist/server/validation.d.ts +14 -0
  499. package/dist/server/validation.js +91 -0
  500. package/dist/server.d.ts +7 -61
  501. package/dist/server.js +69 -2362
  502. package/dist/session-digest.d.ts +1 -1
  503. package/dist/session-digest.js +9 -2
  504. package/dist/shared.d.ts +12 -1
  505. package/dist/shared.js +33 -27
  506. package/dist/skills.d.ts +3 -0
  507. package/dist/skills.js +88 -70
  508. package/dist/stdin.js +2 -2
  509. package/dist/store/audit-event.d.ts +19 -0
  510. package/dist/store/audit-event.js +33 -0
  511. package/dist/store/candidates.d.ts +42 -0
  512. package/dist/store/candidates.js +152 -0
  513. package/dist/store/conflicts.d.ts +44 -0
  514. package/dist/store/conflicts.js +444 -0
  515. package/dist/store/delete-and-batch.d.ts +63 -0
  516. package/dist/store/delete-and-batch.js +310 -0
  517. package/dist/store/entry-reads.d.ts +92 -0
  518. package/dist/store/entry-reads.js +255 -0
  519. package/dist/store/entry-row.d.ts +67 -0
  520. package/dist/store/entry-row.js +208 -0
  521. package/dist/store/entry-writes.d.ts +46 -0
  522. package/dist/store/entry-writes.js +148 -0
  523. package/dist/store/handoffs.d.ts +26 -0
  524. package/dist/store/handoffs.js +184 -0
  525. package/dist/store/index-and-stats.d.ts +52 -0
  526. package/dist/store/index-and-stats.js +214 -0
  527. package/dist/store/markdown.d.ts +10 -0
  528. package/dist/store/markdown.js +108 -0
  529. package/dist/store/mirrors.d.ts +49 -0
  530. package/dist/store/mirrors.js +312 -0
  531. package/dist/store/open.d.ts +15 -0
  532. package/dist/store/open.js +223 -0
  533. package/dist/store/rows.d.ts +178 -0
  534. package/dist/store/rows.js +158 -0
  535. package/dist/store/search-rows.d.ts +86 -0
  536. package/dist/store/search-rows.js +260 -0
  537. package/dist/store/sessions.d.ts +83 -0
  538. package/dist/store/sessions.js +272 -0
  539. package/dist/store/summaries.d.ts +94 -0
  540. package/dist/store/summaries.js +377 -0
  541. package/dist/store/tenant-lookup.d.ts +12 -0
  542. package/dist/store/tenant-lookup.js +16 -0
  543. package/dist/store-cards.js +2 -1
  544. package/dist/summary-dirty.d.ts +4 -0
  545. package/dist/summary-dirty.js +32 -0
  546. package/dist/support-bundle.js +4 -3
  547. package/dist/tenant.js +2 -2
  548. package/dist/tokenize.d.ts +2 -0
  549. package/dist/tokenize.js +16 -0
  550. package/dist/transcript-tail.d.ts +7 -0
  551. package/dist/transcript-tail.js +48 -0
  552. package/dist/vector-store.d.ts +27 -0
  553. package/dist/vector-store.js +210 -0
  554. package/dist/version.d.ts +2 -2
  555. package/dist/version.js +2 -2
  556. package/dist/working-memory.js +1 -1
  557. package/dist/yaml.js +36 -11
  558. package/dist-ui/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  559. package/dist-ui/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  560. package/dist-ui/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  561. package/dist-ui/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  562. package/dist-ui/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
  563. package/dist-ui/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
  564. package/dist-ui/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  565. package/dist-ui/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
  566. package/dist-ui/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  567. package/dist-ui/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
  568. package/dist-ui/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
  569. package/dist-ui/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  570. package/dist-ui/assets/index-DPN7cP19.js +33 -0
  571. package/dist-ui/assets/index-dFloKRVr.css +1 -0
  572. package/dist-ui/index.html +3 -25
  573. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  574. package/extensions/openclaw-plugin/package.json +1 -1
  575. package/openclaw.plugin.json +1 -1
  576. package/package.json +1 -1
  577. package/dist/capture.d.ts +0 -155
  578. package/dist/capture.js +0 -1295
  579. package/dist/consolidate.d.ts +0 -58
  580. package/dist/consolidate.js +0 -1124
  581. package/dist/graph.d.ts +0 -245
  582. package/dist/hooks.d.ts +0 -208
  583. package/dist/hooks.js +0 -1076
  584. package/dist/importers.js +0 -900
  585. package/dist/predictions.js +0 -620
  586. package/dist/search.d.ts +0 -320
  587. package/dist/search.js +0 -970
  588. package/dist/store.d.ts +0 -776
  589. package/dist/store.js +0 -3473
  590. package/dist-ui/assets/d3-BiWEKnn4.js +0 -1
  591. package/dist-ui/assets/index-BhT8RvO6.js +0 -61
  592. package/dist-ui/assets/index-RoXXJ5dq.css +0 -1
  593. package/dist-ui/assets/three-BDgTxR1l.js +0 -4112
@@ -0,0 +1,397 @@
1
+ // `hippo hook`, `hippo setup` and `hippo daily-runner`: install and run the agent and machine integrations.
2
+ import * as path from 'path';
3
+ import * as fs from 'fs';
4
+ import { execFileSync } from 'child_process';
5
+ import { installJsonHooks, uninstallJsonHooks, resolveJsonHookPaths } from '../hooks/json-hooks.js';
6
+ import { detectInstalledTools } from '../hooks/shared.js';
7
+ import { ensureCodexWrapperInstalled, installCodexWrapper, detectRealCodexPath, uninstallCodexWrapper, } from '../hooks/codex-wrapper.js';
8
+ import { installOpencodePlugin, uninstallOpencodePlugin, resolveOpencodePluginPath } from '../hooks/opencode.js';
9
+ import { isInitialized } from '../store/open.js';
10
+ import { currentMachine, importUserMemories } from '../agent-memories/sync.js';
11
+ import { getGlobalRoot } from '../shared.js';
12
+ import { listRegisteredWorkspaces, runDailyMaintenance } from '../scheduler.js';
13
+ import { replayCompactionsAt } from '../compaction-record.js';
14
+ import { log } from '../log.js';
15
+ import { printError } from './output.js';
16
+ import { printAgentImport, installCodexMemoryHooks, setupDailySchedule } from './shared.js';
17
+ import { HOOK_MARKERS, HOOKS, hippoBlock } from './hook-blocks.js';
18
+ // ---------------------------------------------------------------------------
19
+ // Hook install/uninstall
20
+ // ---------------------------------------------------------------------------
21
+ export function cmdHook(args, flags) {
22
+ const subcommand = args[0];
23
+ const target = args[1];
24
+ if (subcommand === 'list')
25
+ return hookList();
26
+ if (subcommand === 'install')
27
+ return hookInstall(target);
28
+ if (subcommand === 'uninstall')
29
+ return hookUninstall(target);
30
+ printError('Usage: hippo hook <install|uninstall|list> [target]');
31
+ process.exit(1);
32
+ }
33
+ // Cursor has no init row, so the AGENTS.md block is usually another agent's, and Cursor reads that one as it is.
34
+ function othersBlock(target, text) {
35
+ return target === 'cursor' && hippoBlock(text)?.owner !== 'cursor';
36
+ }
37
+ function hookList() {
38
+ console.log('Available hooks:\n');
39
+ for (const [name, hook] of Object.entries(HOOKS)) {
40
+ console.log(` ${name.padEnd(15)} -> ${hook.file} (${hook.description})`);
41
+ }
42
+ console.log('\nUsage: hippo hook install <name>');
43
+ console.log(' hippo hook uninstall <name>');
44
+ }
45
+ function hookInstall(target) {
46
+ if (!target || !HOOKS[target]) {
47
+ printError(`Unknown hook target: ${target ?? '(none)'}`);
48
+ printError(` Available: ${Object.keys(HOOKS).join(', ')}`);
49
+ process.exit(1);
50
+ }
51
+ const hook = HOOKS[target];
52
+ patchAgentFile(hook, target);
53
+ // For Claude Code, also install SessionEnd+SessionStart entries in its
54
+ // settings file.
55
+ if (target === 'claude-code') {
56
+ printClaudeHookInstall(installJsonHooks(target));
57
+ }
58
+ else if (target === 'opencode') {
59
+ installOpencodeHook();
60
+ }
61
+ else if (target === 'codex') {
62
+ installCodexMemoryHooks('');
63
+ // The wrapper stays the capture path; the hooks above work without it, so a missing launcher is not an error.
64
+ if (detectRealCodexPath()) {
65
+ const result = installCodexWrapper();
66
+ console.log(`Installed Codex session-end integration -> ${result.metadataPath}`);
67
+ console.log(` Wrapped detected Codex launcher at ${result.commandPath}`);
68
+ }
69
+ else {
70
+ console.log('No codex launcher on PATH, so session-end capture was not set up; re-run once `codex` is on PATH.');
71
+ }
72
+ }
73
+ }
74
+ function patchAgentFile(hook, target) {
75
+ const filepath = path.resolve(process.cwd(), hook.file);
76
+ const block = `${HOOK_MARKERS.start}\n${hook.content}\n${HOOK_MARKERS.end}`;
77
+ let agentFileTouched = false;
78
+ if (fs.existsSync(filepath)) {
79
+ const existing = fs.readFileSync(filepath, 'utf8');
80
+ if (existing.includes(HOOK_MARKERS.start) && othersBlock(target, existing)) {
81
+ console.log(`${hook.file} already has a hippo block, which Cursor reads; left it as is.`);
82
+ }
83
+ else if (existing.includes(HOOK_MARKERS.start)) {
84
+ const re = new RegExp(`${escapeRegex(HOOK_MARKERS.start)}[\\s\\S]*?${escapeRegex(HOOK_MARKERS.end)}`, 'g');
85
+ const updated = existing.replace(re, block);
86
+ fs.writeFileSync(filepath, updated, 'utf8');
87
+ console.log(`Updated Hippo hook in ${hook.file}`);
88
+ }
89
+ else {
90
+ const sep = existing.endsWith('\n') ? '\n' : '\n\n';
91
+ fs.writeFileSync(filepath, existing + sep + block + '\n', 'utf8');
92
+ console.log(`Installed Hippo hook in ${hook.file} (appended)`);
93
+ }
94
+ agentFileTouched = true;
95
+ }
96
+ else {
97
+ // Do not create a new agent-instructions file (CLAUDE.md, AGENTS.md, etc.) in directories that don't already have one —
98
+ // avoids polluting cwd with files the user didn't ask for. The settings.json hook below is still installed for
99
+ // claude-code, so the consolidation hook still runs.
100
+ console.log(`${hook.file} not found in ${process.cwd()} — skipping agent-instructions patch.`);
101
+ console.log(` Create ${hook.file} and re-run \`hippo hook install ${target}\` if you want the agent prompt.`);
102
+ }
103
+ }
104
+ function printClaudeHookInstall(result) {
105
+ if (result.installedSessionEnd) {
106
+ console.log(`Installed hippo session-end SessionEnd hook in ${result.target} settings`);
107
+ }
108
+ if (result.installedSessionStart) {
109
+ console.log(`Installed hippo last-sleep SessionStart hook in ${result.target} settings`);
110
+ }
111
+ if (result.installedUserPromptSubmit) {
112
+ console.log(`Installed hippo pinned-inject UserPromptSubmit hook in ${result.target} settings`);
113
+ }
114
+ if (result.installedPreCompact) {
115
+ console.log(`Installed hippo pre-compact PreCompact hook in ${result.target} settings`);
116
+ }
117
+ if (result.installedCompactResume) {
118
+ console.log(`Installed hippo compact-resume SessionStart(compact) hook in ${result.target} settings`);
119
+ }
120
+ if (result.installedPostCompact) {
121
+ console.log(`Installed hippo post-compact PostCompact hook in ${result.target} settings`);
122
+ }
123
+ if (result.installedCaptureError) {
124
+ console.log(`Installed hippo capture-error PostToolUseFailure hook in ${result.target} settings`);
125
+ }
126
+ if (result.migratedFromStop) {
127
+ console.log(`Migrated legacy Stop hook → SessionEnd (was running every turn; now fires once on session exit)`);
128
+ }
129
+ if (result.migratedSplitSessionEnd) {
130
+ console.log(`Migrated split sleep+capture SessionEnd entries → single detached hippo session-end`);
131
+ }
132
+ else if (result.migratedLegacySessionEnd) {
133
+ console.log(`Migrated legacy SessionEnd entry to the new detached form`);
134
+ }
135
+ }
136
+ function installOpencodeHook() {
137
+ // opencode uses a TS plugin, not JSON hooks. See src/hooks.ts.
138
+ const result = installOpencodePlugin();
139
+ if (result.installed) {
140
+ console.log(`Installed hippo opencode plugin at ${result.pluginPath}`);
141
+ }
142
+ else {
143
+ console.log(`opencode plugin already up to date at ${result.pluginPath}`);
144
+ }
145
+ if (result.migratedLegacyHooks) {
146
+ console.log(`Removed legacy Claude Code-style hooks block from opencode.json — opencode can now launch`);
147
+ }
148
+ if (result.jsonRepairFailed) {
149
+ console.log(`WARNING: opencode.json is unparseable; legacy hooks block could not be auto-removed. Fix the file manually.`);
150
+ }
151
+ }
152
+ function hookUninstall(target) {
153
+ if (!target || !HOOKS[target]) {
154
+ printError(`Unknown hook target: ${target ?? '(none)'}`);
155
+ process.exit(1);
156
+ }
157
+ unpatchAgentFile(HOOKS[target], target);
158
+ // For Claude Code, also strip its SessionEnd/SessionStart entries.
159
+ if (target === 'claude-code') {
160
+ if (uninstallJsonHooks(target)) {
161
+ console.log(`Removed hippo hooks from ${target} settings`);
162
+ }
163
+ }
164
+ else if (target === 'opencode') {
165
+ // opencode uses a TS plugin; uninstall removes the plugin file AND
166
+ // also runs the legacy-hooks migration so the downgrade/remove path
167
+ // leaves opencode launchable.
168
+ if (uninstallOpencodePlugin()) {
169
+ console.log(`Removed hippo opencode plugin (and any legacy hooks block from opencode.json)`);
170
+ }
171
+ }
172
+ else if (target === 'codex') {
173
+ if (uninstallJsonHooks('codex')) {
174
+ console.log(`Removed hippo's Codex memory hooks from ${resolveJsonHookPaths('codex').settings}`);
175
+ }
176
+ if (uninstallCodexWrapper()) {
177
+ console.log('Removed Codex wrapper integration');
178
+ }
179
+ }
180
+ else if (target === 'cursor') {
181
+ removeLegacyCursorRules();
182
+ }
183
+ }
184
+ function unpatchAgentFile(hook, target) {
185
+ const filepath = path.resolve(process.cwd(), hook.file);
186
+ if (!fs.existsSync(filepath)) {
187
+ console.log(`${hook.file} not found, skipping agent-instructions uninstall.`);
188
+ return;
189
+ }
190
+ const existing = fs.readFileSync(filepath, 'utf8');
191
+ if (existing.includes(HOOK_MARKERS.start) && othersBlock(target, existing)) {
192
+ const owner = hippoBlock(existing)?.owner;
193
+ const whose = owner ? `hippo wrote it for ${owner}` : 'it has been edited, so hippo cannot tell whose it is';
194
+ console.log(`Left the hippo block in ${hook.file}: ${whose}. Delete it by hand if no agent needs it.`);
195
+ }
196
+ else if (existing.includes(HOOK_MARKERS.start)) {
197
+ fs.writeFileSync(filepath, withoutHookBlock(existing) + '\n', 'utf8');
198
+ console.log(`Removed Hippo hook from ${hook.file}`);
199
+ }
200
+ else {
201
+ console.log(`No Hippo hook found in ${hook.file}.`);
202
+ }
203
+ }
204
+ // Older hippo wrote Cursor's block to .cursorrules, creating the file when it was missing.
205
+ function removeLegacyCursorRules() {
206
+ const legacy = path.resolve(process.cwd(), '.cursorrules');
207
+ const old = fs.existsSync(legacy) ? fs.readFileSync(legacy, 'utf8') : '';
208
+ if (old.includes(HOOK_MARKERS.start)) {
209
+ const left = withoutHookBlock(old);
210
+ if (left)
211
+ fs.writeFileSync(legacy, left + '\n', 'utf8');
212
+ else
213
+ fs.unlinkSync(legacy);
214
+ console.log(left ? 'Removed the old Hippo hook from .cursorrules' : 'Deleted .cursorrules, which held only the old Hippo hook');
215
+ }
216
+ }
217
+ function withoutHookBlock(text) {
218
+ const re = new RegExp(`\\n?${escapeRegex(HOOK_MARKERS.start)}[\\s\\S]*?${escapeRegex(HOOK_MARKERS.end)}\\n?`, 'g');
219
+ return text.replace(re, '\n').replace(/\n{3,}/g, '\n\n').trim();
220
+ }
221
+ function escapeRegex(s) {
222
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
223
+ }
224
+ // `hippo setup` -- one-shot configuration for every AI coding tool on the box.
225
+ // Detection and install logic live in ./hooks.ts.
226
+ export function cmdSetup(flags) {
227
+ const dryRun = Boolean(flags['dry-run']);
228
+ const forceAll = Boolean(flags['all']);
229
+ const tools = detectInstalledTools();
230
+ const globalRoot = getGlobalRoot();
231
+ console.log('Hippo setup -- configuring SessionEnd + SessionStart hooks');
232
+ console.log('');
233
+ const jsonTools = tools.filter((t) => t.kind === 'json-hook' && (t.detected || forceAll));
234
+ const wrapperTools = tools.filter((t) => t.kind === 'wrapper' && (t.detected || forceAll));
235
+ const skipped = tools.filter((t) => t.kind === 'json-hook' && !t.detected && !forceAll);
236
+ const markdownTools = tools.filter((t) => t.kind === 'markdown-instruction' && t.detected);
237
+ const pluginTools = tools.filter((t) => t.kind === 'plugin' && t.detected);
238
+ if (jsonTools.length === 0 && !forceAll) {
239
+ console.log('No JSON-hook-capable tools detected (checked: claude-code).');
240
+ console.log('Run with --all to install hooks anyway.');
241
+ }
242
+ for (const tool of jsonTools)
243
+ setupJsonTool(tool, dryRun);
244
+ for (const tool of skipped) {
245
+ console.log(` ${tool.name.padEnd(14)} not detected at ${tool.configDir} -- skipping`);
246
+ }
247
+ for (const tool of wrapperTools)
248
+ setupWrapperTool(tool, dryRun);
249
+ if (pluginTools.length > 0) {
250
+ console.log('');
251
+ console.log('Plugin-based tools (hook API via plugin, not JSON):');
252
+ for (const tool of pluginTools)
253
+ setupPluginTool(tool, dryRun);
254
+ }
255
+ if (markdownTools.length > 0) {
256
+ console.log('');
257
+ console.log('Markdown-only tools (no hook API — run `hippo hook install <name>` inside a project):');
258
+ for (const tool of markdownTools) {
259
+ console.log(` ${tool.name.padEnd(14)} ${tool.notes}`);
260
+ }
261
+ }
262
+ if (!flags['no-schedule']) {
263
+ console.log('');
264
+ if (dryRun) {
265
+ console.log(`[dry-run] would install the machine-level daily runner around ${globalRoot}`);
266
+ }
267
+ else {
268
+ setupDailySchedule(globalRoot);
269
+ }
270
+ }
271
+ if (!flags['no-learn']) {
272
+ console.log('');
273
+ printAgentImport(importUserMemories(globalRoot, { machine: currentMachine(), dryRun }), dryRun ? '[dry-run] ' : '');
274
+ }
275
+ console.log('');
276
+ console.log('Done. Restart your AI tool to activate the hooks.');
277
+ }
278
+ function setupJsonTool(tool, dryRun) {
279
+ if (dryRun) {
280
+ // Resolve the real settings path so the filename is right for each tool
281
+ // (claude-code -> settings.json, opencode -> opencode.json).
282
+ const { settings } = resolveJsonHookPaths(tool.name);
283
+ console.log(`[dry-run] would install hooks in ${settings}`);
284
+ return;
285
+ }
286
+ const result = installJsonHooks(tool.name);
287
+ const bits = [];
288
+ if (result.installedSessionEnd)
289
+ bits.push('SessionEnd (session-end)');
290
+ if (result.installedSessionStart)
291
+ bits.push('SessionStart');
292
+ if (result.installedUserPromptSubmit)
293
+ bits.push('UserPromptSubmit (pinned-inject)');
294
+ if (result.installedPreCompact)
295
+ bits.push('PreCompact (pre-compact)');
296
+ if (result.installedCompactResume)
297
+ bits.push('SessionStart(compact) (compact-resume)');
298
+ if (result.installedPostCompact)
299
+ bits.push('PostCompact (post-compact)');
300
+ if (result.installedCaptureError)
301
+ bits.push('PostToolUseFailure (capture-error)');
302
+ if (result.migratedFromStop)
303
+ bits.push('migrated legacy Stop');
304
+ if (result.migratedSplitSessionEnd)
305
+ bits.push('migrated split SessionEnd → session-end');
306
+ else if (result.migratedLegacySessionEnd)
307
+ bits.push('migrated legacy SessionEnd');
308
+ if (bits.length === 0) {
309
+ console.log(` ${tool.name.padEnd(14)} already configured (${result.settingsPath})`);
310
+ }
311
+ else {
312
+ console.log(` ${tool.name.padEnd(14)} ${bits.join(', ')} -> ${result.settingsPath}`);
313
+ }
314
+ }
315
+ function setupWrapperTool(tool, dryRun) {
316
+ if (dryRun) {
317
+ if (tool.name === 'codex')
318
+ console.log(`[dry-run] would install Codex memory hooks in ${resolveJsonHookPaths('codex').settings}`);
319
+ console.log(`[dry-run] would wrap the detected ${tool.name} launcher in place`);
320
+ return;
321
+ }
322
+ if (tool.name !== 'codex')
323
+ return;
324
+ installCodexMemoryHooks(` ${tool.name.padEnd(14)} `);
325
+ const result = ensureCodexWrapperInstalled();
326
+ if (result.status === 'installed') {
327
+ console.log(` ${tool.name.padEnd(14)} wrapped launcher -> ${result.commandPath}`);
328
+ }
329
+ else if (result.status === 'already-installed') {
330
+ console.log(` ${tool.name.padEnd(14)} already wrapped -> ${result.commandPath}`);
331
+ }
332
+ else {
333
+ console.log(` ${tool.name.padEnd(14)} not found on PATH -- skipping`);
334
+ }
335
+ }
336
+ function setupPluginTool(tool, dryRun) {
337
+ if (tool.name !== 'opencode') {
338
+ // Other plugin tools (openclaw) have their own installer; the notes
339
+ // line points the user at it.
340
+ console.log(` ${tool.name.padEnd(14)} ${tool.notes}`);
341
+ return;
342
+ }
343
+ if (dryRun) {
344
+ console.log(` ${tool.name.padEnd(14)} [dry-run] would install hippo plugin at ${resolveOpencodePluginPath()}`);
345
+ return;
346
+ }
347
+ const result = installOpencodePlugin();
348
+ const bits = [];
349
+ if (result.installed)
350
+ bits.push('installed plugin');
351
+ if (result.migratedLegacyHooks)
352
+ bits.push('migrated legacy hooks block');
353
+ if (result.jsonRepairFailed)
354
+ bits.push('WARNING: opencode.json unparseable — manual fix needed');
355
+ if (bits.length === 0) {
356
+ console.log(` ${tool.name.padEnd(14)} already configured (${result.pluginPath})`);
357
+ }
358
+ else {
359
+ console.log(` ${tool.name.padEnd(14)} ${bits.join(', ')} -> ${result.pluginPath}`);
360
+ }
361
+ }
362
+ export function cmdDailyRunner() {
363
+ const globalRoot = getGlobalRoot();
364
+ // No workspace sleep ever opens the global store, yet hooks in folders without a store compact into it.
365
+ if (isInitialized(globalRoot)) {
366
+ const finished = replayCompactionsAt(globalRoot, (message) => log.warn(`compaction replay: ${message}`));
367
+ if (finished > 0)
368
+ console.log(`Finished saving ${finished} compaction${finished === 1 ? '' : 's'} left over in the global store.`);
369
+ }
370
+ printAgentImport(importUserMemories(globalRoot, { machine: currentMachine() }), '');
371
+ const workspaces = listRegisteredWorkspaces(globalRoot);
372
+ if (workspaces.length === 0) {
373
+ console.log('No registered Hippo workspaces found. Run `hippo init` inside a project first.');
374
+ return;
375
+ }
376
+ console.log(`Running daily maintenance across ${workspaces.length} registered workspace${workspaces.length === 1 ? '' : 's'}...`);
377
+ let processed = 0;
378
+ let failed = 0;
379
+ runDailyMaintenance(workspaces, (cwd, args) => {
380
+ try {
381
+ execFileSync(process.execPath, [process.argv[1], ...args], {
382
+ cwd,
383
+ stdio: 'inherit',
384
+ windowsHide: true,
385
+ });
386
+ if (args[0] === 'sleep')
387
+ processed++;
388
+ }
389
+ catch (err) {
390
+ failed++;
391
+ const action = args.join(' ');
392
+ log.error(`daily-runner failed in ${cwd} during \`${action}\`: ${err.message}`);
393
+ }
394
+ });
395
+ console.log(`Daily maintenance complete: ${processed} workspace${processed === 1 ? '' : 's'} processed, ${failed} command failure${failed === 1 ? '' : 's'}.`);
396
+ }
397
+ //# sourceMappingURL=setup.js.map
@@ -1,6 +1,6 @@
1
- import { TaskSnapshot, SessionEvent } from '../store.js';
1
+ import { TaskSnapshot, SessionEvent } from '../store/rows.js';
2
2
  import type { HandoffEvidence, SessionHandoff } from '../handoff.js';
3
- import { type SearchResult } from '../search.js';
3
+ import type { SearchResult } from '../search/types.js';
4
4
  import { type HippoConfig } from '../config.js';
5
5
  import { openHippoDb } from '../db.js';
6
6
  import { type ImportReport } from '../agent-memories/report.js';
@@ -44,14 +44,6 @@ export declare function recallEntryText(r: SearchResult, query: string, showWhy:
44
44
  export declare function recallHeading(entries: number, tokens: number, query: string): string;
45
45
  /** One line when an agent memory import moved anything; its warnings go to stderr. */
46
46
  export declare function printAgentImport(report: ImportReport, indent?: string): void;
47
- /** The first hippo block in `text` and the agent whose current or shipped text it is; `owner` is undefined for an edited block. */
48
- export declare function hippoBlock(text: string): {
49
- start: number;
50
- end: number;
51
- eol: string;
52
- inner: string;
53
- owner?: string;
54
- } | null;
55
47
  /** Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an untrusted hook. */
56
48
  export declare function installCodexMemoryHooks(indent: string): void;
57
49
  /**
@@ -63,6 +55,12 @@ export declare function installCodexMemoryHooks(indent: string): void;
63
55
  */
64
56
  export declare function setupDailySchedule(globalRoot: string): void;
65
57
  export type CliFlags = Record<string, string | boolean | string[]>;
58
+ /** What the command table hands each verb's run(). */
59
+ export interface CommandContext {
60
+ readonly hippoRoot: string;
61
+ readonly args: string[];
62
+ readonly flags: CliFlags;
63
+ }
66
64
  export type EngineFlags = Pick<RecallSearchOpts, 'usePhysics' | 'physicsConfig' | 'mmr' | 'mmrLambda' | 'localBump'>;
67
65
  export declare function parseAsOfFlag(flags: CliFlags): string | undefined;
68
66
  /** --physics forces physics, --classic forces BM25+cosine, else physics unless the config turns it off. */
@@ -124,14 +122,12 @@ export declare function learnFromRepo(hippoRoot: string, repoPath: string, days:
124
122
  skipped: number;
125
123
  lowInfo: number;
126
124
  };
127
- export declare const HOOK_MARKERS: {
128
- start: string;
129
- end: string;
130
- };
131
- export declare const HOOKS: Record<string, {
132
- file: string;
133
- content: string;
134
- description: string;
135
- }>;
136
125
  export declare function resolveAuthRoot(hippoRoot: string, flags: Record<string, string | boolean | string[]>): string;
126
+ /** Hook commands share one handle per store and wait at most HOOK_DB_WAIT_MS for a lock; a store still busy after that skips the hook's work with one warning, exit 0. */
127
+ export declare function runHookWithStores<T>(fn: () => T | Promise<T>): Promise<T | undefined>;
128
+ /**
129
+ * Whether this session sits in the pilot's holdout arm (src/pilot-arm.ts). Off at rate 0 and with no session id.
130
+ * `write` books the arm row; a read-only caller (env-only id, sub-agent) follows the stored arm, else the hash.
131
+ */
132
+ export declare function inPilotHoldout(hippoRoot: string, tenantId: string, sessionId: string | undefined, write: boolean): boolean;
137
133
  //# sourceMappingURL=shared.d.ts.map