hippo-memory 1.60.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 (585) 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 -1262
  53. package/dist/api.js +25 -2727
  54. package/dist/audit.d.ts +3 -0
  55. package/dist/audit.js +6 -3
  56. package/dist/auth.d.ts +45 -4
  57. package/dist/auth.js +125 -48
  58. package/dist/autolearn.js +2 -2
  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 +71 -120
  123. package/dist/cli.js +170 -8469
  124. package/dist/client.js +15 -8
  125. package/dist/compaction-record.js +6 -4
  126. package/dist/connectors/github/backfill.js +94 -87
  127. package/dist/connectors/github/cli-impl.js +4 -3
  128. package/dist/connectors/github/dlq.js +67 -54
  129. package/dist/connectors/github/ingest.js +34 -35
  130. package/dist/connectors/github/tenant-routing.js +3 -2
  131. package/dist/connectors/github/webhook.js +135 -216
  132. package/dist/connectors/slack/dlq.js +49 -61
  133. package/dist/connectors/slack/ingest.js +55 -48
  134. package/dist/connectors/slack/tenant-routing.js +4 -3
  135. package/dist/connectors/slack/webhook.js +72 -74
  136. package/dist/consolidate/conflicts.d.ts +10 -0
  137. package/dist/consolidate/conflicts.js +178 -0
  138. package/dist/consolidate/decay.d.ts +12 -0
  139. package/dist/consolidate/decay.js +145 -0
  140. package/dist/consolidate/llm-passes.d.ts +3 -0
  141. package/dist/consolidate/llm-passes.js +141 -0
  142. package/dist/consolidate/merge.d.ts +7 -0
  143. package/dist/consolidate/merge.js +251 -0
  144. package/dist/consolidate/physics-pass.d.ts +3 -0
  145. package/dist/consolidate/physics-pass.js +60 -0
  146. package/dist/consolidate/run.d.ts +69 -0
  147. package/dist/consolidate/run.js +76 -0
  148. package/dist/consolidate/sleep.d.ts +18 -0
  149. package/dist/consolidate/sleep.js +209 -0
  150. package/dist/consolidate/traces.d.ts +4 -0
  151. package/dist/consolidate/traces.js +178 -0
  152. package/dist/context-auto.js +7 -11
  153. package/dist/context-render.d.ts +1 -1
  154. package/dist/context-render.js +1 -1
  155. package/dist/customer-notes.d.ts +3 -0
  156. package/dist/customer-notes.js +6 -4
  157. package/dist/dag.js +6 -5
  158. package/dist/dashboard-actions.d.ts +20 -0
  159. package/dist/dashboard-actions.js +88 -0
  160. package/dist/dashboard-params.d.ts +45 -0
  161. package/dist/dashboard-params.js +127 -0
  162. package/dist/dashboard-queries.d.ts +15 -0
  163. package/dist/dashboard-queries.js +355 -0
  164. package/dist/dashboard-snapshot.d.ts +138 -0
  165. package/dist/dashboard-snapshot.js +308 -0
  166. package/dist/dashboard-types.d.ts +163 -0
  167. package/dist/dashboard-types.js +3 -0
  168. package/dist/dashboard.d.ts +6 -7
  169. package/dist/dashboard.js +228 -202
  170. package/dist/db/busy.d.ts +5 -0
  171. package/dist/db/busy.js +24 -0
  172. package/dist/db/continuity.d.ts +5 -0
  173. package/dist/db/continuity.js +145 -0
  174. package/dist/db/meta.d.ts +8 -0
  175. package/dist/db/meta.js +35 -0
  176. package/dist/db/migrate.d.ts +9 -0
  177. package/dist/db/migrate.js +138 -0
  178. package/dist/db/migrations/index.d.ts +5 -0
  179. package/dist/db/migrations/index.js +109 -0
  180. package/dist/db/migrations/types.d.ts +14 -0
  181. package/dist/db/migrations/types.js +2 -0
  182. package/dist/db/migrations/v01.d.ts +3 -0
  183. package/dist/db/migrations/v01.js +38 -0
  184. package/dist/db/migrations/v02.d.ts +3 -0
  185. package/dist/db/migrations/v02.js +21 -0
  186. package/dist/db/migrations/v03.d.ts +3 -0
  187. package/dist/db/migrations/v03.js +22 -0
  188. package/dist/db/migrations/v04.d.ts +3 -0
  189. package/dist/db/migrations/v04.js +28 -0
  190. package/dist/db/migrations/v05.d.ts +3 -0
  191. package/dist/db/migrations/v05.js +21 -0
  192. package/dist/db/migrations/v06.d.ts +3 -0
  193. package/dist/db/migrations/v06.js +25 -0
  194. package/dist/db/migrations/v07.d.ts +3 -0
  195. package/dist/db/migrations/v07.js +13 -0
  196. package/dist/db/migrations/v08.d.ts +3 -0
  197. package/dist/db/migrations/v08.js +8 -0
  198. package/dist/db/migrations/v09.d.ts +3 -0
  199. package/dist/db/migrations/v09.js +13 -0
  200. package/dist/db/migrations/v10.d.ts +3 -0
  201. package/dist/db/migrations/v10.js +17 -0
  202. package/dist/db/migrations/v11.d.ts +3 -0
  203. package/dist/db/migrations/v11.js +15 -0
  204. package/dist/db/migrations/v12.d.ts +3 -0
  205. package/dist/db/migrations/v12.js +11 -0
  206. package/dist/db/migrations/v13.d.ts +3 -0
  207. package/dist/db/migrations/v13.js +15 -0
  208. package/dist/db/migrations/v14.d.ts +3 -0
  209. package/dist/db/migrations/v14.js +66 -0
  210. package/dist/db/migrations/v15.d.ts +3 -0
  211. package/dist/db/migrations/v15.js +42 -0
  212. package/dist/db/migrations/v16.d.ts +3 -0
  213. package/dist/db/migrations/v16.js +61 -0
  214. package/dist/db/migrations/v17.d.ts +3 -0
  215. package/dist/db/migrations/v17.js +46 -0
  216. package/dist/db/migrations/v18.d.ts +3 -0
  217. package/dist/db/migrations/v18.js +60 -0
  218. package/dist/db/migrations/v19.d.ts +3 -0
  219. package/dist/db/migrations/v19.js +28 -0
  220. package/dist/db/migrations/v20.d.ts +3 -0
  221. package/dist/db/migrations/v20.js +42 -0
  222. package/dist/db/migrations/v21.d.ts +3 -0
  223. package/dist/db/migrations/v21.js +16 -0
  224. package/dist/db/migrations/v22.d.ts +3 -0
  225. package/dist/db/migrations/v22.js +82 -0
  226. package/dist/db/migrations/v23.d.ts +3 -0
  227. package/dist/db/migrations/v23.js +48 -0
  228. package/dist/db/migrations/v24.d.ts +3 -0
  229. package/dist/db/migrations/v24.js +72 -0
  230. package/dist/db/migrations/v25.d.ts +3 -0
  231. package/dist/db/migrations/v25.js +46 -0
  232. package/dist/db/migrations/v26.d.ts +3 -0
  233. package/dist/db/migrations/v26.js +23 -0
  234. package/dist/db/migrations/v27.d.ts +3 -0
  235. package/dist/db/migrations/v27.js +57 -0
  236. package/dist/db/migrations/v28.d.ts +3 -0
  237. package/dist/db/migrations/v28.js +38 -0
  238. package/dist/db/migrations/v29.d.ts +3 -0
  239. package/dist/db/migrations/v29.js +78 -0
  240. package/dist/db/migrations/v30.d.ts +3 -0
  241. package/dist/db/migrations/v30.js +92 -0
  242. package/dist/db/migrations/v31.d.ts +3 -0
  243. package/dist/db/migrations/v31.js +74 -0
  244. package/dist/db/migrations/v32.d.ts +3 -0
  245. package/dist/db/migrations/v32.js +102 -0
  246. package/dist/db/migrations/v33.d.ts +3 -0
  247. package/dist/db/migrations/v33.js +104 -0
  248. package/dist/db/migrations/v34.d.ts +3 -0
  249. package/dist/db/migrations/v34.js +93 -0
  250. package/dist/db/migrations/v35.d.ts +3 -0
  251. package/dist/db/migrations/v35.js +98 -0
  252. package/dist/db/migrations/v36.d.ts +3 -0
  253. package/dist/db/migrations/v36.js +98 -0
  254. package/dist/db/migrations/v37.d.ts +3 -0
  255. package/dist/db/migrations/v37.js +219 -0
  256. package/dist/db/migrations/v38.d.ts +3 -0
  257. package/dist/db/migrations/v38.js +277 -0
  258. package/dist/db/migrations/v39.d.ts +3 -0
  259. package/dist/db/migrations/v39.js +59 -0
  260. package/dist/db/migrations/v40.d.ts +3 -0
  261. package/dist/db/migrations/v40.js +74 -0
  262. package/dist/db/migrations/v41.d.ts +3 -0
  263. package/dist/db/migrations/v41.js +43 -0
  264. package/dist/db/migrations/v42.d.ts +3 -0
  265. package/dist/db/migrations/v42.js +41 -0
  266. package/dist/db/migrations/v43.d.ts +3 -0
  267. package/dist/db/migrations/v43.js +67 -0
  268. package/dist/db/migrations/v44.d.ts +3 -0
  269. package/dist/db/migrations/v44.js +28 -0
  270. package/dist/db/migrations/v45.d.ts +3 -0
  271. package/dist/db/migrations/v45.js +30 -0
  272. package/dist/db/migrations/v46.d.ts +3 -0
  273. package/dist/db/migrations/v46.js +25 -0
  274. package/dist/db/migrations/v47.d.ts +3 -0
  275. package/dist/db/migrations/v47.js +17 -0
  276. package/dist/db/migrations/v48.d.ts +3 -0
  277. package/dist/db/migrations/v48.js +10 -0
  278. package/dist/db/migrations/v49.d.ts +3 -0
  279. package/dist/db/migrations/v49.js +31 -0
  280. package/dist/db/migrations/v50.d.ts +3 -0
  281. package/dist/db/migrations/v50.js +67 -0
  282. package/dist/db/migrations/v51.d.ts +3 -0
  283. package/dist/db/migrations/v51.js +14 -0
  284. package/dist/db/migrations/v52.d.ts +3 -0
  285. package/dist/db/migrations/v52.js +7 -0
  286. package/dist/db/open.d.ts +23 -0
  287. package/dist/db/open.js +146 -0
  288. package/dist/db/sqlite.d.ts +21 -0
  289. package/dist/db/sqlite.js +8 -0
  290. package/dist/db/tables.d.ts +7 -0
  291. package/dist/db/tables.js +38 -0
  292. package/dist/db.d.ts +6 -46
  293. package/dist/db.js +5 -3049
  294. package/dist/decisions.d.ts +4 -1
  295. package/dist/decisions.js +9 -7
  296. package/dist/dedupe.js +3 -2
  297. package/dist/delivery-recorder.js +4 -1
  298. package/dist/doctor.js +3 -3
  299. package/dist/embedding-provider.d.ts +1 -1
  300. package/dist/embedding-provider.js +4 -3
  301. package/dist/embeddings.d.ts +9 -52
  302. package/dist/embeddings.js +43 -297
  303. package/dist/env.d.ts +75 -0
  304. package/dist/env.js +119 -0
  305. package/dist/eval-suite.js +1 -1
  306. package/dist/eval.js +2 -2
  307. package/dist/extract.js +1 -1
  308. package/dist/gated-write.js +3 -1
  309. package/dist/goals.d.ts +3 -1
  310. package/dist/goals.js +18 -0
  311. package/dist/graph/read.d.ts +73 -0
  312. package/dist/graph/read.js +325 -0
  313. package/dist/graph/rows.d.ts +45 -0
  314. package/dist/graph/rows.js +51 -0
  315. package/dist/graph/types.d.ts +83 -0
  316. package/dist/graph/types.js +11 -0
  317. package/dist/graph/write.d.ts +93 -0
  318. package/dist/{graph.js → graph/write.js} +6 -384
  319. package/dist/graph-extract.js +2 -1
  320. package/dist/graph-recall.d.ts +1 -1
  321. package/dist/graph-recall.js +2 -2
  322. package/dist/graph-stream.js +1 -1
  323. package/dist/graph-view.d.ts +1 -1
  324. package/dist/graph-view.js +1 -1
  325. package/dist/half-life-migration.d.ts +1 -1
  326. package/dist/half-life-migration.js +2 -1
  327. package/dist/hooks/codex-session.d.ts +8 -0
  328. package/dist/hooks/codex-session.js +76 -0
  329. package/dist/hooks/codex-wrapper.d.ts +55 -0
  330. package/dist/hooks/codex-wrapper.js +288 -0
  331. package/dist/hooks/json-hooks.d.ts +63 -0
  332. package/dist/hooks/json-hooks.js +356 -0
  333. package/dist/hooks/opencode.d.ts +50 -0
  334. package/dist/hooks/opencode.js +202 -0
  335. package/dist/hooks/shared.d.ts +54 -0
  336. package/dist/hooks/shared.js +77 -0
  337. package/dist/http-retry.d.ts +2 -0
  338. package/dist/http-retry.js +4 -3
  339. package/dist/http-util.d.ts +3 -0
  340. package/dist/http-util.js +10 -0
  341. package/dist/{importers.d.ts → importers/core.d.ts} +13 -17
  342. package/dist/importers/core.js +141 -0
  343. package/dist/importers/markdown-parse.d.ts +41 -0
  344. package/dist/importers/markdown-parse.js +132 -0
  345. package/dist/importers/markdown.d.ts +3 -0
  346. package/dist/importers/markdown.js +92 -0
  347. package/dist/importers/sources.d.ts +7 -0
  348. package/dist/importers/sources.js +229 -0
  349. package/dist/importers/vault.d.ts +11 -0
  350. package/dist/importers/vault.js +352 -0
  351. package/dist/incidents.d.ts +3 -0
  352. package/dist/incidents.js +7 -5
  353. package/dist/index.d.ts +25 -6
  354. package/dist/index.js +23 -6
  355. package/dist/invalidation.js +2 -1
  356. package/dist/judgment.js +2 -1
  357. package/dist/keyset.d.ts +13 -0
  358. package/dist/keyset.js +8 -0
  359. package/dist/local-embedding.d.ts +13 -0
  360. package/dist/local-embedding.js +165 -0
  361. package/dist/log.d.ts +7 -0
  362. package/dist/log.js +19 -1
  363. package/dist/mcp/admin-tools.d.ts +8 -0
  364. package/dist/mcp/admin-tools.js +116 -0
  365. package/dist/mcp/format.d.ts +27 -0
  366. package/dist/mcp/format.js +135 -0
  367. package/dist/mcp/memory-tools.d.ts +5 -0
  368. package/dist/mcp/memory-tools.js +83 -0
  369. package/dist/mcp/protocol.d.ts +83 -0
  370. package/dist/mcp/protocol.js +55 -0
  371. package/dist/mcp/recall-tools.d.ts +6 -0
  372. package/dist/mcp/recall-tools.js +320 -0
  373. package/dist/mcp/request.d.ts +10 -0
  374. package/dist/mcp/request.js +163 -0
  375. package/dist/mcp/server.d.ts +4 -75
  376. package/dist/mcp/server.js +7 -1190
  377. package/dist/mcp/session-state.d.ts +11 -0
  378. package/dist/mcp/session-state.js +28 -0
  379. package/dist/mcp/stdio.d.ts +8 -0
  380. package/dist/mcp/stdio.js +79 -0
  381. package/dist/mcp/tools.d.ts +11 -0
  382. package/dist/mcp/tools.js +247 -0
  383. package/dist/memory.d.ts +3 -0
  384. package/dist/memory.js +27 -1
  385. package/dist/multihop.d.ts +1 -1
  386. package/dist/multihop.js +2 -1
  387. package/dist/owner-validation.js +2 -1
  388. package/dist/physics-state.js +10 -7
  389. package/dist/policies.d.ts +3 -0
  390. package/dist/policies.js +8 -6
  391. package/dist/postinstall.js +3 -2
  392. package/dist/predictions/planning-fallacy.d.ts +100 -0
  393. package/dist/predictions/planning-fallacy.js +190 -0
  394. package/dist/{predictions.d.ts → predictions/store.d.ts} +7 -102
  395. package/dist/predictions/store.js +434 -0
  396. package/dist/processes.d.ts +3 -0
  397. package/dist/processes.js +7 -5
  398. package/dist/project-briefs.d.ts +3 -0
  399. package/dist/project-briefs.js +7 -5
  400. package/dist/project-identity.js +3 -2
  401. package/dist/project-merge.js +3 -1
  402. package/dist/quarantine.d.ts +2 -1
  403. package/dist/quarantine.js +8 -5
  404. package/dist/raw-archive.js +1 -1
  405. package/dist/recall-history.js +3 -2
  406. package/dist/recall-pipeline.d.ts +2 -2
  407. package/dist/recall-pipeline.js +16 -8
  408. package/dist/recall-scope.js +1 -1
  409. package/dist/recall-trace.d.ts +1 -1
  410. package/dist/refine-llm.js +2 -1
  411. package/dist/reject-flow.js +6 -1
  412. package/dist/rerankers/clef.js +6 -5
  413. package/dist/rerankers/jev.d.ts +1 -1
  414. package/dist/rerankers/jev.js +4 -4
  415. package/dist/rerankers/llm.d.ts +4 -2
  416. package/dist/rerankers/llm.js +58 -38
  417. package/dist/rerankers/types.d.ts +1 -1
  418. package/dist/salience.js +1 -1
  419. package/dist/scheduler.d.ts +1 -0
  420. package/dist/scheduler.js +26 -4
  421. package/dist/scope.js +4 -3
  422. package/dist/search/as-of.d.ts +10 -0
  423. package/dist/search/as-of.js +22 -0
  424. package/dist/search/bm25-search.d.ts +14 -0
  425. package/dist/search/bm25-search.js +43 -0
  426. package/dist/search/bm25.d.ts +15 -0
  427. package/dist/search/bm25.js +54 -0
  428. package/dist/search/boosts.d.ts +54 -0
  429. package/dist/search/boosts.js +94 -0
  430. package/dist/search/breakdown.d.ts +7 -0
  431. package/dist/search/breakdown.js +20 -0
  432. package/dist/search/explain.d.ts +25 -0
  433. package/dist/search/explain.js +31 -0
  434. package/dist/search/finalize.d.ts +8 -0
  435. package/dist/search/finalize.js +52 -0
  436. package/dist/search/fusion.d.ts +27 -0
  437. package/dist/search/fusion.js +42 -0
  438. package/dist/search/hybrid-score.d.ts +20 -0
  439. package/dist/search/hybrid-score.js +73 -0
  440. package/dist/search/hybrid.d.ts +46 -0
  441. package/dist/search/hybrid.js +64 -0
  442. package/dist/search/physics-search.d.ts +29 -0
  443. package/dist/search/physics-search.js +162 -0
  444. package/dist/search/rerank.d.ts +10 -0
  445. package/dist/search/rerank.js +72 -0
  446. package/dist/search/temporal.d.ts +15 -0
  447. package/dist/search/temporal.js +45 -0
  448. package/dist/search/types.d.ts +91 -0
  449. package/dist/search/types.js +2 -0
  450. package/dist/search/vector.d.ts +30 -0
  451. package/dist/search/vector.js +71 -0
  452. package/dist/secret-detect.d.ts +2 -0
  453. package/dist/secret-detect.js +2 -1
  454. package/dist/server/auth.d.ts +52 -0
  455. package/dist/server/auth.js +221 -0
  456. package/dist/server/client-ip.d.ts +25 -0
  457. package/dist/server/client-ip.js +92 -0
  458. package/dist/server/cursor.d.ts +23 -0
  459. package/dist/server/cursor.js +58 -0
  460. package/dist/server/lifecycle.d.ts +7 -0
  461. package/dist/server/lifecycle.js +29 -0
  462. package/dist/server/mcp-http.d.ts +5 -0
  463. package/dist/server/mcp-http.js +199 -0
  464. package/dist/server/request.d.ts +33 -0
  465. package/dist/server/request.js +103 -0
  466. package/dist/server/routes/admin.d.ts +9 -0
  467. package/dist/server/routes/admin.js +158 -0
  468. package/dist/server/routes/customer-notes.d.ts +7 -0
  469. package/dist/server/routes/customer-notes.js +112 -0
  470. package/dist/server/routes/decisions.d.ts +7 -0
  471. package/dist/server/routes/decisions.js +133 -0
  472. package/dist/server/routes/incidents.d.ts +7 -0
  473. package/dist/server/routes/incidents.js +126 -0
  474. package/dist/server/routes/memories.d.ts +10 -0
  475. package/dist/server/routes/memories.js +179 -0
  476. package/dist/server/routes/policies.d.ts +8 -0
  477. package/dist/server/routes/policies.js +151 -0
  478. package/dist/server/routes/predictions.d.ts +7 -0
  479. package/dist/server/routes/predictions.js +164 -0
  480. package/dist/server/routes/processes.d.ts +7 -0
  481. package/dist/server/routes/processes.js +161 -0
  482. package/dist/server/routes/project-briefs.d.ts +8 -0
  483. package/dist/server/routes/project-briefs.js +136 -0
  484. package/dist/server/routes/recall.d.ts +8 -0
  485. package/dist/server/routes/recall.js +340 -0
  486. package/dist/server/routes/skills.d.ts +8 -0
  487. package/dist/server/routes/skills.js +150 -0
  488. package/dist/server/types.d.ts +56 -0
  489. package/dist/server/types.js +2 -0
  490. package/dist/server/validation.d.ts +14 -0
  491. package/dist/server/validation.js +91 -0
  492. package/dist/server.d.ts +7 -61
  493. package/dist/server.js +69 -2362
  494. package/dist/session-digest.d.ts +1 -1
  495. package/dist/session-digest.js +9 -2
  496. package/dist/shared.d.ts +3 -1
  497. package/dist/shared.js +26 -22
  498. package/dist/skills.d.ts +3 -0
  499. package/dist/skills.js +7 -5
  500. package/dist/stdin.js +2 -2
  501. package/dist/store/audit-event.d.ts +19 -0
  502. package/dist/store/audit-event.js +33 -0
  503. package/dist/store/candidates.d.ts +42 -0
  504. package/dist/store/candidates.js +152 -0
  505. package/dist/store/conflicts.d.ts +44 -0
  506. package/dist/store/conflicts.js +444 -0
  507. package/dist/store/delete-and-batch.d.ts +63 -0
  508. package/dist/store/delete-and-batch.js +310 -0
  509. package/dist/store/entry-reads.d.ts +92 -0
  510. package/dist/store/entry-reads.js +255 -0
  511. package/dist/store/entry-row.d.ts +67 -0
  512. package/dist/store/entry-row.js +208 -0
  513. package/dist/store/entry-writes.d.ts +46 -0
  514. package/dist/store/entry-writes.js +148 -0
  515. package/dist/store/handoffs.d.ts +26 -0
  516. package/dist/store/handoffs.js +184 -0
  517. package/dist/store/index-and-stats.d.ts +52 -0
  518. package/dist/store/index-and-stats.js +214 -0
  519. package/dist/store/markdown.d.ts +10 -0
  520. package/dist/store/markdown.js +108 -0
  521. package/dist/store/mirrors.d.ts +49 -0
  522. package/dist/store/mirrors.js +312 -0
  523. package/dist/store/open.d.ts +15 -0
  524. package/dist/store/open.js +223 -0
  525. package/dist/store/rows.d.ts +178 -0
  526. package/dist/store/rows.js +158 -0
  527. package/dist/store/search-rows.d.ts +86 -0
  528. package/dist/store/search-rows.js +254 -0
  529. package/dist/store/sessions.d.ts +83 -0
  530. package/dist/store/sessions.js +272 -0
  531. package/dist/store/summaries.d.ts +94 -0
  532. package/dist/store/summaries.js +377 -0
  533. package/dist/store/tenant-lookup.d.ts +12 -0
  534. package/dist/store/tenant-lookup.js +16 -0
  535. package/dist/store-cards.js +2 -1
  536. package/dist/summary-dirty.d.ts +4 -0
  537. package/dist/summary-dirty.js +32 -0
  538. package/dist/support-bundle.js +4 -3
  539. package/dist/tenant.js +2 -2
  540. package/dist/tokenize.d.ts +2 -0
  541. package/dist/tokenize.js +16 -0
  542. package/dist/transcript-tail.d.ts +7 -0
  543. package/dist/transcript-tail.js +48 -0
  544. package/dist/vector-store.d.ts +27 -0
  545. package/dist/vector-store.js +210 -0
  546. package/dist/version.d.ts +2 -2
  547. package/dist/version.js +2 -2
  548. package/dist/working-memory.js +1 -1
  549. package/dist/yaml.js +36 -11
  550. package/dist-ui/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  551. package/dist-ui/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  552. package/dist-ui/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  553. package/dist-ui/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  554. package/dist-ui/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
  555. package/dist-ui/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
  556. package/dist-ui/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  557. package/dist-ui/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
  558. package/dist-ui/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  559. package/dist-ui/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
  560. package/dist-ui/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
  561. package/dist-ui/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  562. package/dist-ui/assets/index-DPN7cP19.js +33 -0
  563. package/dist-ui/assets/index-dFloKRVr.css +1 -0
  564. package/dist-ui/index.html +3 -25
  565. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  566. package/extensions/openclaw-plugin/package.json +1 -1
  567. package/openclaw.plugin.json +1 -1
  568. package/package.json +1 -1
  569. package/dist/capture.d.ts +0 -155
  570. package/dist/capture.js +0 -1295
  571. package/dist/consolidate.d.ts +0 -58
  572. package/dist/consolidate.js +0 -1124
  573. package/dist/graph.d.ts +0 -245
  574. package/dist/hooks.d.ts +0 -208
  575. package/dist/hooks.js +0 -1076
  576. package/dist/importers.js +0 -900
  577. package/dist/predictions.js +0 -620
  578. package/dist/search.d.ts +0 -320
  579. package/dist/search.js +0 -970
  580. package/dist/store.d.ts +0 -776
  581. package/dist/store.js +0 -3473
  582. package/dist-ui/assets/d3-BiWEKnn4.js +0 -1
  583. package/dist-ui/assets/index-BhT8RvO6.js +0 -61
  584. package/dist-ui/assets/index-RoXXJ5dq.css +0 -1
  585. package/dist-ui/assets/three-BDgTxR1l.js +0 -4112
package/dist/graph.d.ts DELETED
@@ -1,245 +0,0 @@
1
- /**
2
- * E3.3 graph layer over consolidated state - the graph-on-consolidated guard.
3
- * (docs/plans/2026-06-01-e3-graph-guard.md).
4
- *
5
- * A graph of canonical `entities` (person/project/customer/system/policy/decision) and
6
- * `relations` (owns/supersedes/depends-on/blocked-by/references) sits ON TOP OF
7
- * consolidated memories. The hard rule: the graph NEVER indexes the raw layer - every
8
- * entity and relation references a memory whose `kind IN ('distilled','superseded')`,
9
- * never `kind='raw'`. Enforced at the DB level (CHECK on source_kind/kind + BEFORE
10
- * INSERT and BEFORE UPDATE triggers that tie source_kind/kind to the FK'd memory's
11
- * actual kind and enforce tenant-match - relations also reject cross-tenant edges), so
12
- * the forbidden state is unrepresentable regardless of code path. These helpers
13
- * surface the same guard as clear throws BEFORE hitting the trigger backstop.
14
- *
15
- * Scope (E3.3 first slice): the substrate + the guard + a thin insert/load/enqueue
16
- * API. The `graph_extraction_queue` is the interface the deferred `hippo sleep`
17
- * enqueue-hook + E3.1 entity extraction will call. No operator surface (CLI/HTTP/SDK)
18
- * until E3.2 multi-hop recall.
19
- */
20
- import { openHippoDb } from './db.js';
21
- /** The DB connection handle `openHippoDb` returns. Threaded (optionally) through
22
- * the graph writers so `extractGraph` can run clear + all inserts in ONE
23
- * transaction — see `runGraphRebuildTransaction`. */
24
- export type GraphTxDb = ReturnType<typeof openHippoDb>;
25
- export type EntityType = 'person' | 'project' | 'customer' | 'system' | 'policy' | 'decision';
26
- export type RelationType = 'owns' | 'supersedes' | 'depends-on' | 'blocked-by' | 'references';
27
- export type GraphQueueStatus = 'pending' | 'processed' | 'skipped';
28
- /** The consolidated source kinds the graph is permitted to index (never 'raw'). */
29
- export type SourceKind = 'distilled' | 'superseded';
30
- /** The authoritative E2 object types a graph row may be anchored to (the object
31
- * provenance path, alongside the memory path). Maps to source_object_type. */
32
- export type SourceObjectType = 'decision' | 'policy' | 'customer' | 'project';
33
- /** A soft (type,id) pointer to the authoritative E2 row a graph row descends from.
34
- * Survives a mirror memory forget/prune (memory_id may go NULL); the rebuild
35
- * re-validates it (it is not a hard FK). */
36
- export interface SourceObjectRef {
37
- type: SourceObjectType;
38
- id: number;
39
- }
40
- export declare const GRAPH_ENTITY_TYPES: ReadonlySet<EntityType>;
41
- export declare const GRAPH_RELATION_TYPES: ReadonlySet<RelationType>;
42
- export declare const VALID_QUEUE_STATES: ReadonlySet<GraphQueueStatus>;
43
- export declare const MAX_ENTITY_NAME_LEN = 512;
44
- export interface Entity {
45
- id: number;
46
- tenantId: string;
47
- entityType: EntityType;
48
- name: string;
49
- /** The consolidated source memory this entity was extracted from. NULL once the
50
- * mirror is forgotten/pruned (ON DELETE SET NULL) - the entity then survives via
51
- * its source_object provenance. */
52
- memoryId: string | null;
53
- sourceKind: SourceKind;
54
- /** The authoritative E2 object this entity is anchored to (E2-provenance path).
55
- * Set for E2-sourced entities; absent for memory-only (prose/NLP) entities. */
56
- sourceObjectType?: SourceObjectType;
57
- sourceObjectId?: number;
58
- createdAt: string;
59
- }
60
- export interface Relation {
61
- id: number;
62
- tenantId: string;
63
- fromEntityId: number;
64
- toEntityId: number;
65
- relType: RelationType;
66
- /** NULL once the mirror is forgotten/pruned; the relation survives via source_object. */
67
- memoryId: string | null;
68
- sourceKind: SourceKind;
69
- sourceObjectType?: SourceObjectType;
70
- sourceObjectId?: number;
71
- createdAt: string;
72
- }
73
- export interface GraphQueueItem {
74
- id: number;
75
- tenantId: string;
76
- memoryId: string;
77
- kind: SourceKind;
78
- status: GraphQueueStatus;
79
- enqueuedAt: string;
80
- processedAt: string | null;
81
- }
82
- export interface InsertEntityOpts {
83
- entityType: EntityType;
84
- name: string;
85
- /** A consolidated (distilled/superseded) memory; raw is rejected. NULL/omitted when
86
- * the entity is anchored only to its E2 source object (mirror forgotten/pruned). */
87
- memoryId?: string | null;
88
- /** The authoritative E2 object this entity descends from. Required when memoryId is
89
- * null; optional alongside a live memory (both paths may be set). */
90
- sourceObject?: SourceObjectRef;
91
- }
92
- export interface InsertRelationOpts {
93
- fromEntityId: number;
94
- toEntityId: number;
95
- relType: RelationType;
96
- /** A consolidated (distilled/superseded) memory; raw is rejected. NULL/omitted when
97
- * the relation is anchored only to its E2 source object. */
98
- memoryId?: string | null;
99
- /** The authoritative E2 object this relation descends from. */
100
- sourceObject?: SourceObjectRef;
101
- }
102
- /**
103
- * Insert a graph entity extracted from a consolidated memory. Throws if the source
104
- * memory is missing / cross-tenant / raw (the DB trigger is the backstop).
105
- */
106
- export declare function insertEntity(hippoRoot: string, tenantId: string, opts: InsertEntityOpts, txDb?: GraphTxDb): Entity;
107
- /**
108
- * Insert a graph relation between two entities, sourced from a consolidated memory.
109
- * Both entities must exist in the same tenant; the source memory must be consolidated.
110
- */
111
- export declare function insertRelation(hippoRoot: string, tenantId: string, opts: InsertRelationOpts, txDb?: GraphTxDb): Relation;
112
- export declare function loadEntityById(hippoRoot: string, tenantId: string, id: number): Entity | null;
113
- /** Entities with an exact `name` (read), bounded by `limit` in SQL with a
114
- * deterministic order. Lets the graph-view focus query find the `--entity NAME`
115
- * entity DIRECTLY (not from a globally-capped list) WITHOUT materializing every
116
- * same-name row when a name maps to many entities. */
117
- export declare function loadEntitiesByName(hippoRoot: string, tenantId: string, name: string, opts?: {
118
- limit?: number;
119
- }, txDb?: GraphTxDb): Entity[];
120
- export declare function loadEntities(hippoRoot: string, tenantId: string, opts?: {
121
- entityType?: EntityType;
122
- limit?: number;
123
- }, txDb?: GraphTxDb): Entity[];
124
- export declare function loadRelations(hippoRoot: string, tenantId: string, opts?: {
125
- fromEntityId?: number;
126
- limit?: number;
127
- }, txDb?: GraphTxDb): Relation[];
128
- /**
129
- * Map consolidated source memory ids -> their graph entities. The SEED step of E3.2
130
- * multi-hop recall (recall result memory ids -> entities to traverse from). Tenant-
131
- * scoped, read-only; chunks the IN-list under the SQLite variable cap.
132
- */
133
- export declare function loadEntitiesByMemoryId(hippoRoot: string, tenantId: string, memoryIds: string[]): Entity[];
134
- /**
135
- * Load entities by their primary ids. Resolves the entity rows reached during the BFS
136
- * (whose `memory_id` maps back to a recall result). Tenant-scoped, read-only.
137
- */
138
- export declare function loadEntitiesByIds(hippoRoot: string, tenantId: string, ids: number[], txDb?: GraphTxDb): Entity[];
139
- /**
140
- * All relations touching ANY of `entityIds` in EITHER direction (from OR to) — the
141
- * per-hop neighbour query for E3.2 multi-hop traversal. ONE query for the whole frontier
142
- * (not one per node): this is the bidirectional read `loadRelations` (from-only) lacks,
143
- * and avoids an N+1 across BFS frontier nodes. `limit` caps rows for the frontier and
144
- * must be a non-negative integer (the raw `LIMIT ?` rejects a fractional value).
145
- */
146
- export declare function loadNeighborRelations(hippoRoot: string, tenantId: string, entityIds: number[], opts?: {
147
- limit?: number;
148
- }, txDb?: GraphTxDb): Relation[];
149
- /**
150
- * Relations with BOTH endpoints in `entityIds` (edges AMONG the set, not merely
151
- * touching it). Read. Used by the graph-view focus subgraph so the displayed
152
- * edges are exactly the intra-union edges: the `LIMIT` only caps genuinely-many
153
- * intra-union edges — no out-of-union row can evict a valid in-set edge. The
154
- * caller bounds `entityIds` (<= the view limit), so a single query is safe.
155
- */
156
- export declare function loadRelationsAmong(hippoRoot: string, tenantId: string, entityIds: number[], opts?: {
157
- limit?: number;
158
- }, txDb?: GraphTxDb): Relation[];
159
- /**
160
- * Run `fn` inside ONE read transaction (a single WAL snapshot) so every graph read
161
- * it performs — pass the supplied `txDb` to the `load*` functions — sees a consistent
162
- * view, even if a `graph extract` / sleep-drain rebuild commits concurrently between
163
- * reads (the rebuild clears + reinserts entities, so separate reads could otherwise
164
- * mix old entity ids with new relation ids). Reads only; the connection is opened
165
- * once and closed after.
166
- */
167
- export declare function withGraphReadSnapshot<T>(hippoRoot: string, fn: (txDb: GraphTxDb) => T): T;
168
- /**
169
- * Enqueue a consolidated memory for later graph extraction. Rejects a raw / missing /
170
- * cross-tenant memory (the DB trigger is the backstop). The producer hook in
171
- * `hippo sleep` is deferred (E3.1); this is the API it will call.
172
- */
173
- export declare function enqueueExtraction(hippoRoot: string, tenantId: string, memoryId: string): GraphQueueItem;
174
- export declare function loadExtractionQueue(hippoRoot: string, tenantId: string, opts?: {
175
- status?: GraphQueueStatus;
176
- limit?: number;
177
- }): GraphQueueItem[];
178
- /**
179
- * Mark a queue item terminal (processed | skipped). Only `status`/`processed_at`
180
- * change, so the consolidated-source guard trigger (which fires on
181
- * memory_id/kind/tenant_id changes) is not involved. CAS on the current status to a
182
- * non-terminal 'pending'.
183
- */
184
- export declare function markExtractionProcessed(hippoRoot: string, tenantId: string, id: number, status?: 'processed' | 'skipped'): GraphQueueItem;
185
- /**
186
- * Delete ALL entities for a tenant (relations cascade via the from/to FKs). Returns
187
- * the number of entities deleted. The rebuild primitive for graph extraction: the
188
- * deterministic graph is a pure derived function of the consolidated objects, so an
189
- * extract clears then re-derives. Lives in graph.ts (the sole sanctioned graph
190
- * writer), so the E3.3 CI lint permits this `DELETE FROM entities`. Does NOT touch
191
- * graph_extraction_queue (the enqueue-hook's domain).
192
- */
193
- export declare function clearGraph(hippoRoot: string, tenantId: string, txDb?: GraphTxDb): number;
194
- /**
195
- * Run a full graph rebuild for one tenant inside a single transaction. `clearGraph`
196
- * + every `insertEntity`/`insertRelation` call made inside `fn` (passing the supplied
197
- * `txDb`) share the one connection and its `BEGIN IMMEDIATE` write lock, so the
198
- * rebuild is ATOMIC: two concurrent rebuilds serialize on the write lock (the second
199
- * waits, then re-derives cleanly) instead of interleaving into duplicate rows, and a
200
- * throw mid-rebuild ROLLS BACK the clear (no bricked/empty graph). The sole sanctioned
201
- * place to wrap graph writes in a transaction.
202
- */
203
- export declare function runGraphRebuildTransaction<T>(hippoRoot: string, tenantId: string, fn: (txDb: GraphTxDb) => T): T;
204
- /**
205
- * Fail-soft producer hook: mark a tenant dirty for graph re-extraction by
206
- * enqueuing its consolidated mirror memory. NEVER throws into the caller — a
207
- * graph-dirty signal failing must not abort a core E2 write. Graph staleness is
208
- * recoverable (next sleep / manual `graph extract`); a broken `hippo decide` is
209
- * not. Called POST-COMMIT from the E2 graph-source save/close mutations of
210
- * decision, policy, customer_note and project_brief. A null memoryId (a
211
- * forgotten mirror) is a no-op.
212
- */
213
- export declare function markGraphDirty(hippoRoot: string, tenantId: string, memoryId: string | null): void;
214
- /**
215
- * Remove the graph rows sourced from one E2 object, by its (type, id). Used when a
216
- * MIRRORLESS object is closed: it has no mirror memory, so `markGraphDirty` cannot
217
- * enqueue a rebuild (the queue is memory-keyed). Closing must still drop the object's
218
- * now-stale entity + edges from the graph, so we remove them directly here. Fail-soft
219
- * like `markGraphDirty` (never throws into the E2 close caller; graph staleness is
220
- * recoverable). Deleting the entity cascade-deletes any relation where it is an endpoint
221
- * (relations FK entities ON DELETE CASCADE); the explicit relations DELETE also covers a
222
- * relation whose OWN provenance is this object (defensive — every such edge has the object
223
- * as an endpoint today, so the cascade already covers it). DELETE fires no BEFORE
224
- * INSERT/UPDATE guard trigger.
225
- */
226
- export declare function removeGraphEntitiesForObject(hippoRoot: string, tenantId: string, sourceObjectType: SourceObjectType, sourceObjectId: number): void;
227
- /**
228
- * The dirty tenants awaiting graph re-extraction, each with the MAX pending
229
- * queue id at read time (a watermark). The sleep drain rebuilds each tenant's
230
- * graph, then marks only items at or below the watermark processed, so items
231
- * enqueued DURING the rebuild stay pending for the next sleep (no lost-update
232
- * race). Host-wide read (the queue is per-tenant but sleep is cross-tenant).
233
- */
234
- export declare function loadPendingExtractionTenants(hippoRoot: string): {
235
- tenantId: string;
236
- maxPendingId: number;
237
- }[];
238
- /**
239
- * Mark every pending queue item for a tenant with `id <= maxId` processed, in
240
- * one UPDATE. Status/processed_at only, so the consolidated-source guard trigger
241
- * is not involved (same as markExtractionProcessed). Returns the count marked.
242
- * The `<= maxId` watermark excludes items enqueued after the drain snapshot.
243
- */
244
- export declare function markPendingProcessedUpTo(hippoRoot: string, tenantId: string, maxId: number): number;
245
- //# sourceMappingURL=graph.d.ts.map
package/dist/hooks.d.ts DELETED
@@ -1,208 +0,0 @@
1
- /**
2
- * Hook install/uninstall for AI coding tools.
3
- *
4
- * Two integration models live in this file:
5
- *
6
- * 1. JSON-hook install (Claude Code only). Writes a `hooks` block into the
7
- * tool's settings.json with two entries:
8
- * - SessionEnd: `hippo session-end --log-file <path>` - spawns a detached
9
- * child that runs `hippo sleep` then `hippo capture --last-session` in
10
- * sequence, writing both outputs to the log file. The parent returns in
11
- * <100ms so the TUI teardown can't kill the child before it finishes.
12
- * - SessionStart: `hippo last-sleep --path <path>` - prints the log
13
- * written by the previous session's detached worker to stderr, which
14
- * keeps it out of the model's context, and then clears it.
15
- * Earlier Claude Code forms are detected and migrated automatically:
16
- * - < 0.20.2: `Stop` hook firing `hippo sleep` on every assistant turn.
17
- * - < 0.21.0: bare `hippo sleep` in SessionEnd, no `--log-file`.
18
- * - 0.22.x: separate sleep + capture SessionEnd entries.
19
- * PreCompact and PostCompact entries go in too: the first records the compaction and
20
- * asks the summariser for a "Memories for hippo" list, the second saves that list.
21
- * Codex's hooks.json gets only two groups (per-prompt memory and
22
- * compact-resume); see installCodexHooks.
23
- *
24
- * 2. Plugin install (OpenCode only). OpenCode does NOT share Claude Code's
25
- * JSON-hook schema — its config has `additionalProperties: false` and no
26
- * `hooks` key, so v1.10.x-v1.11.1's JSON-hook installer broke opencode
27
- * launch (issue #24). Hippo now installs a TypeScript plugin at
28
- * `~/.config/opencode/plugins/hippo.ts` subscribing to opencode's
29
- * `session.idle` (→ `hippo session-end`) and `session.created` (→
30
- * `hippo last-sleep`) events. See OPENCODE_PLUGIN_SOURCE below for the
31
- * plugin file content + design rationale; see installOpencodePlugin for
32
- * the installer + the migration that removes any pre-existing broken
33
- * `hooks` block from opencode.json.
34
- */
35
- import type { JsonValue, JsonObject } from './working-memory.js';
36
- /** JSON-value plain-object check (excludes arrays and null), typeof-free for the same
37
- * reason as isJsonString above. */
38
- export declare function isJsonObject(value: JsonValue | undefined): value is JsonObject;
39
- export type JsonHookTarget = 'claude-code' | 'codex';
40
- export interface CodexWrapperPaths {
41
- wrapperDir: string;
42
- metadataPath: string;
43
- wrapperCmdPath: string;
44
- wrapperPs1Path: string;
45
- wrapperShPath: string;
46
- logFile: string;
47
- runsDir: string;
48
- codexHome: string;
49
- historyPath: string;
50
- }
51
- export interface CodexWrapperInstallResult {
52
- installed: boolean;
53
- metadataPath: string;
54
- realCodexPath: string;
55
- commandPath: string;
56
- backupPath: string;
57
- installMode: 'same-path' | 'cmd-shim';
58
- }
59
- export interface CodexWrapperMetadata {
60
- originalCodexPath: string;
61
- realCodexPath: string;
62
- commandPath: string;
63
- backupPath: string;
64
- installMode: 'same-path' | 'cmd-shim';
65
- logFile: string;
66
- installedAt: string;
67
- }
68
- export interface EnsureCodexWrapperResult {
69
- status: 'installed' | 'already-installed' | 'not-found' | 'source-checkout';
70
- metadataPath?: string;
71
- realCodexPath?: string;
72
- commandPath?: string;
73
- backupPath?: string;
74
- }
75
- export interface CodexSessionTranscriptOptions {
76
- codexHome: string;
77
- historyPath: string;
78
- startOffsetBytes: number;
79
- startedAtMs: number;
80
- }
81
- export interface JsonHookPaths {
82
- settings: string;
83
- logFile: string;
84
- display: string;
85
- }
86
- export interface InstallResult {
87
- target: JsonHookTarget;
88
- settingsPath: string;
89
- installedSessionEnd: boolean;
90
- installedSessionStart: boolean;
91
- installedUserPromptSubmit: boolean;
92
- installedPreCompact: boolean;
93
- installedCompactResume: boolean;
94
- /** PostCompact -> `hippo post-compact` (saves the summary's memories, tells the user how many). */
95
- installedPostCompact: boolean;
96
- /** PostToolUseFailure -> `hippo capture-error` (failed tool calls become error memories). */
97
- installedCaptureError: boolean;
98
- migratedPinnedInjectRecent: boolean;
99
- migratedFromStop: boolean;
100
- migratedLegacySessionEnd: boolean;
101
- migratedSplitSessionEnd: boolean;
102
- /** The file exists but is not JSON hippo can merge into, so it was left untouched. */
103
- invalidJson: boolean;
104
- }
105
- export interface ToolDetection {
106
- name: string;
107
- configDir: string;
108
- detected: boolean;
109
- kind: 'json-hook' | 'markdown-instruction' | 'plugin' | 'wrapper';
110
- notes?: string;
111
- }
112
- declare const HIPPO_OPENCODE_PLUGIN_MARKER = "HIPPO_OPENCODE_PLUGIN_V1";
113
- /**
114
- * The opencode plugin file we install at ~/.config/opencode/plugins/hippo.ts.
115
- *
116
- * Per https://opencode.ai/docs/plugins/, plugins are TS/JS modules exporting an
117
- * async function returning hooks. We subscribe to `event` and route:
118
- * session.idle → `hippo session-end` (Claude Code's SessionEnd equiv)
119
- * session.created → `hippo last-sleep` (Claude Code's SessionStart equiv)
120
- *
121
- * Design choices forced by plan-eng-critic Rev 0 review (2026-05-23):
122
- *
123
- * 1. No `import type { Plugin } from "@opencode-ai/plugin"`. The package's npm
124
- * publication status was unverifiable from the build sandbox (npmjs.com
125
- * returned 403); an unresolved type-only import would still crash the TS
126
- * runtime opencode uses to load the plugin. opencode infers plugin shape
127
- * from the returned object, so the type was convenience-only.
128
- *
129
- * 2. Defensive `typeof $ !== 'function'` guard. opencode runs in Bun (where
130
- * `$` is the shell-template helper), but a future Node-mode deployment
131
- * would have `$` undefined in the destructured context and the plugin
132
- * would throw on every session.idle, killing opencode sessions in a
133
- * hard-to-recover way (the idempotence marker prevents auto-reinstall).
134
- * Fail closed, let opencode continue.
135
- *
136
- * 3. `.quiet().nothrow()` on each `$\`...\`` so a missing hippo binary
137
- * (e.g. PATH-misconfigured user) does NOT throw out of the event handler.
138
- * The surrounding try/catch is belt-and-braces.
139
- *
140
- * 4. UserPromptSubmit equivalent NOT wired. opencode's `message.updated`
141
- * fires per-token, not per-prompt-submit; no clean per-prompt event.
142
- * Users wanting pinned-context auto-injection can call `hippo context`
143
- * via the MCP server (`hippo mcp`).
144
- *
145
- * 5. Versioned marker `HIPPO_OPENCODE_PLUGIN_V1` allows future versions to
146
- * overwrite cleanly. The installer's idempotence check requires BOTH
147
- * marker match AND content equality, so a plugin-source revision under
148
- * the same V1 marker re-writes the file on next install.
149
- */
150
- export declare const OPENCODE_PLUGIN_SOURCE = "// HIPPO_OPENCODE_PLUGIN_V1\n// hippo-memory opencode plugin. DO NOT EDIT \u2014 regenerated on every\n// `hippo hook install opencode` from src/hooks.ts OPENCODE_PLUGIN_SOURCE\n// in https://github.com/kitfunso/hippo-memory. Local changes will be lost.\n\nexport const HippoPlugin = async ({ $ }) => {\n return {\n event: async ({ event }) => {\n // Defense in depth: opencode currently runs in Bun where $ is the shell\n // template helper. A non-Bun runtime would have $ as undefined; fail\n // closed instead of crashing the host session.\n if (typeof $ !== \"function\") return;\n try {\n if (event.type === \"session.idle\") {\n await $`hippo session-end`.quiet().nothrow();\n } else if (event.type === \"session.created\") {\n await $`hippo last-sleep`.quiet().nothrow();\n }\n } catch {\n // hippo CLI not on PATH or other failure \u2014 never crash the host session.\n }\n },\n };\n};\n";
151
- export { HIPPO_OPENCODE_PLUGIN_MARKER };
152
- /** Codex's config folder: $CODEX_HOME, else ~/.codex, as the Codex hooks docs describe. */
153
- export declare function codexHomeDir(home?: string, env?: Readonly<Record<string, string | undefined>>): string;
154
- /** Codex counts as installed only when its config folder exists: Codex itself refuses a CODEX_HOME that is not a folder. */
155
- export declare function isCodexPresent(home?: string): boolean;
156
- /** Codex hashes each hook and skips new or changed ones until the user reviews them in `/hooks`, so the reminder says what they would trust. */
157
- export declare const CODEX_TRUST_LINE = "The per-prompt hook sends your pinned memories plus up to 5 that match the prompt. Codex runs hippo's hooks only after you trust them once in `/hooks`.";
158
- /**
159
- * Default log path consumed by `hippo last-sleep`. Shared fallback when
160
- * a caller doesn't pass --path explicitly.
161
- */
162
- export declare function defaultSleepLogPath(): string;
163
- /**
164
- * Diagnostic-only log path for `hippo pre-compact`. Deliberately separate
165
- * from the SessionEnd sleep log: `hippo last-sleep` truncates that file on
166
- * every SessionStart, which would wipe pre-compact lines before anyone
167
- * could read them. Nothing consumes this file programmatically — it exists
168
- * for manual troubleshooting only. Overridden by `--log-file`.
169
- */
170
- export declare function defaultPreCompactLogPath(): string;
171
- export declare function resolveCodexWrapperPaths(): CodexWrapperPaths;
172
- export declare function detectRealCodexPath(): string | null;
173
- export declare function installCodexWrapper(realCodexPath?: string): CodexWrapperInstallResult;
174
- export declare function uninstallCodexWrapper(): boolean;
175
- export declare function ensureCodexWrapperInstalled(): EnsureCodexWrapperResult;
176
- /**
177
- * True if Codex wrapper metadata exists on this machine, i.e. the user opted
178
- * in to the wrapper at some point (via `hippo hook install codex`).
179
- */
180
- export declare function isCodexWrapperInstalled(): boolean;
181
- /**
182
- * Repair-only variant of `ensureCodexWrapperInstalled`: re-ensures the wrapper
183
- * ONLY when wrapper metadata already exists — that metadata is the user's
184
- * opt-in record. Never performs a first install. Replacing another vendor's
185
- * binary must stay behind the explicit `hippo hook install codex` command;
186
- * doing it from postinstall or routine commands is a consent violation and
187
- * reads as binary hijacking to security scanners (issue #133).
188
- */
189
- export declare function repairCodexWrapperIfInstalled(hippoCliPath?: string): EnsureCodexWrapperResult;
190
- export declare function resolveCodexSessionTranscript(options: CodexSessionTranscriptOptions): string | null;
191
- export declare function resolveJsonHookPaths(target: JsonHookTarget): JsonHookPaths;
192
- export declare function installJsonHooks(target: JsonHookTarget): InstallResult;
193
- export declare function uninstallJsonHooks(target: JsonHookTarget): boolean;
194
- export interface OpencodePluginInstallResult {
195
- installed: boolean;
196
- pluginPath: string;
197
- migratedLegacyHooks: boolean;
198
- jsonRepairFailed: boolean;
199
- }
200
- export declare function resolveOpencodePluginPath(): string;
201
- export declare function installOpencodePlugin(): OpencodePluginInstallResult;
202
- export declare function uninstallOpencodePlugin(): boolean;
203
- /**
204
- * Detect which AI coding tools are installed based on config directory presence.
205
- * Used by `hippo setup` to decide which JSON-hook installs to run.
206
- */
207
- export declare function detectInstalledTools(): ToolDetection[];
208
- //# sourceMappingURL=hooks.d.ts.map