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