hippo-memory 1.70.0 → 1.71.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 (629) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-memories/claude-code.d.ts +4 -2
  3. package/dist/agent-memories/claude-code.js +14 -5
  4. package/dist/agent-memories/files.js +23 -12
  5. package/dist/agent-memories/markdown.d.ts +1 -3
  6. package/dist/agent-memories/markdown.js +1 -3
  7. package/dist/agent-memories/report.js +2 -1
  8. package/dist/agent-memories/sync.d.ts +4 -2
  9. package/dist/agent-memories/sync.js +10 -5
  10. package/dist/api/assemble.d.ts +7 -44
  11. package/dist/api/assemble.js +2 -22
  12. package/dist/api/audit.d.ts +5 -1
  13. package/dist/api/audit.js +9 -1
  14. package/dist/api/auth.d.ts +13 -22
  15. package/dist/api/auth.js +34 -24
  16. package/dist/api/auto-sleep.js +2 -2
  17. package/dist/api/availability.d.ts +2 -15
  18. package/dist/api/availability.js +2 -15
  19. package/dist/api/context-select.js +3 -4
  20. package/dist/api/context-types.d.ts +10 -35
  21. package/dist/api/context.d.ts +5 -22
  22. package/dist/api/context.js +21 -38
  23. package/dist/api/dormant.d.ts +5 -21
  24. package/dist/api/dormant.js +7 -26
  25. package/dist/api/drill-down.d.ts +7 -46
  26. package/dist/api/drill-down.js +5 -26
  27. package/dist/api/forget.d.ts +5 -24
  28. package/dist/api/forget.js +5 -28
  29. package/dist/api/graph.d.ts +8 -0
  30. package/dist/api/graph.js +7 -0
  31. package/dist/api/index.d.ts +2 -0
  32. package/dist/api/index.js +2 -0
  33. package/dist/api/instruction-detect.js +16 -5
  34. package/dist/api/ledger-db.d.ts +2 -1
  35. package/dist/api/ledger-db.js +5 -3
  36. package/dist/api/memories.d.ts +5 -0
  37. package/dist/api/memories.js +7 -0
  38. package/dist/api/objects.d.ts +9 -0
  39. package/dist/api/objects.js +11 -0
  40. package/dist/api/on-store.js +5 -3
  41. package/dist/api/predictions.d.ts +9 -0
  42. package/dist/api/predictions.js +18 -0
  43. package/dist/api/promote.d.ts +13 -17
  44. package/dist/api/promote.js +11 -19
  45. package/dist/api/prompt-hook.d.ts +4 -4
  46. package/dist/api/prompt-hook.js +10 -9
  47. package/dist/api/recall-cli.d.ts +55 -0
  48. package/dist/api/recall-cli.js +94 -0
  49. package/dist/api/recall-core.js +14 -6
  50. package/dist/api/recall-finish.d.ts +53 -0
  51. package/dist/api/recall-finish.js +30 -0
  52. package/dist/api/recall-history.d.ts +17 -84
  53. package/dist/api/recall-history.js +15 -88
  54. package/dist/api/recall-pipeline.d.ts +2 -3
  55. package/dist/api/recall-pipeline.js +16 -9
  56. package/dist/api/recall-types.d.ts +64 -304
  57. package/dist/api/recall.d.ts +5 -33
  58. package/dist/api/recall.js +59 -60
  59. package/dist/api/refine.d.ts +7 -0
  60. package/dist/api/refine.js +10 -0
  61. package/dist/api/remember-local.d.ts +57 -0
  62. package/dist/api/remember-local.js +90 -0
  63. package/dist/api/remember.d.ts +18 -1
  64. package/dist/api/remember.js +13 -1
  65. package/dist/api/sleep-run.d.ts +1 -3
  66. package/dist/api/sleep-run.js +17 -21
  67. package/dist/api/sleep.d.ts +9 -28
  68. package/dist/api/tokens.d.ts +3 -10
  69. package/dist/api/tokens.js +3 -10
  70. package/dist/api/types.d.ts +6 -29
  71. package/dist/api/types.js +4 -22
  72. package/dist/capture/command.d.ts +4 -12
  73. package/dist/capture/command.js +6 -22
  74. package/dist/capture/compact.d.ts +4 -15
  75. package/dist/capture/compact.js +16 -25
  76. package/dist/capture/compaction-record.js +101 -69
  77. package/dist/capture/compaction-spool.d.ts +1 -1
  78. package/dist/capture/compaction-spool.js +1 -1
  79. package/dist/capture/session-digest.d.ts +1 -1
  80. package/dist/capture/session-digest.js +13 -7
  81. package/dist/capture/transcript.d.ts +2 -10
  82. package/dist/capture/transcript.js +4 -18
  83. package/dist/cli/api-context.d.ts +3 -0
  84. package/dist/cli/api-context.js +6 -0
  85. package/dist/cli/audit-prune.d.ts +6 -39
  86. package/dist/cli/audit-prune.js +6 -39
  87. package/dist/cli/audit.d.ts +1 -1
  88. package/dist/cli/audit.js +33 -34
  89. package/dist/cli/auth.d.ts +2 -2
  90. package/dist/cli/auth.js +57 -39
  91. package/dist/cli/briefs.d.ts +4 -4
  92. package/dist/cli/briefs.js +18 -22
  93. package/dist/cli/card.d.ts +2 -2
  94. package/dist/cli/card.js +31 -32
  95. package/dist/cli/client.d.ts +7 -27
  96. package/dist/cli/client.js +24 -43
  97. package/dist/cli/compact-resume-payload.js +3 -2
  98. package/dist/cli/context.d.ts +1 -2
  99. package/dist/cli/context.js +12 -8
  100. package/dist/cli/continuity.d.ts +6 -6
  101. package/dist/cli/continuity.js +62 -64
  102. package/dist/cli/correction-latency.d.ts +2 -14
  103. package/dist/cli/correction-latency.js +2 -14
  104. package/dist/cli/curate.d.ts +13 -17
  105. package/dist/cli/curate.js +68 -92
  106. package/dist/cli/dag.d.ts +4 -4
  107. package/dist/cli/dag.js +33 -27
  108. package/dist/cli/decisions.d.ts +4 -4
  109. package/dist/cli/decisions.js +33 -47
  110. package/dist/cli/eval.js +15 -13
  111. package/dist/cli/exit.d.ts +6 -0
  112. package/dist/cli/exit.js +11 -0
  113. package/dist/cli/explain.d.ts +1 -2
  114. package/dist/cli/explain.js +6 -4
  115. package/dist/cli/flag-values.d.ts +6 -1
  116. package/dist/cli/flag-values.js +27 -10
  117. package/dist/cli/flags.d.ts +1 -0
  118. package/dist/cli/flags.js +1 -1
  119. package/dist/cli/github.d.ts +14 -0
  120. package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
  121. package/dist/cli/goals.d.ts +2 -2
  122. package/dist/cli/goals.js +46 -50
  123. package/dist/cli/hook-runtime.d.ts +9 -27
  124. package/dist/cli/hook-runtime.js +15 -31
  125. package/dist/cli/init.d.ts +2 -2
  126. package/dist/cli/init.js +6 -12
  127. package/dist/cli/install-steps.js +3 -12
  128. package/dist/cli/last-sleep.d.ts +2 -1
  129. package/dist/cli/last-sleep.js +3 -0
  130. package/dist/cli/maintenance.d.ts +4 -4
  131. package/dist/cli/maintenance.js +14 -19
  132. package/dist/cli/object-verbs.js +4 -3
  133. package/dist/cli/owner-validation.d.ts +5 -28
  134. package/dist/cli/owner-validation.js +5 -28
  135. package/dist/cli/playbooks.d.ts +4 -4
  136. package/dist/cli/playbooks.js +23 -28
  137. package/dist/cli/print.d.ts +2 -5
  138. package/dist/cli/print.js +1 -4
  139. package/dist/cli/projects.d.ts +2 -2
  140. package/dist/cli/projects.js +1 -3
  141. package/dist/cli/provenance-coverage.d.ts +2 -6
  142. package/dist/cli/provenance-coverage.js +2 -6
  143. package/dist/cli/quality-repair-once.js +2 -2
  144. package/dist/cli/recall.d.ts +2 -4
  145. package/dist/cli/recall.js +55 -131
  146. package/dist/cli/refine-llm.d.ts +5 -31
  147. package/dist/cli/refine-llm.js +9 -36
  148. package/dist/cli/remember.d.ts +3 -3
  149. package/dist/cli/remember.js +122 -180
  150. package/dist/cli/scheduler.d.ts +2 -17
  151. package/dist/cli/scheduler.js +12 -18
  152. package/dist/cli/serve.js +21 -12
  153. package/dist/cli/session-hooks.d.ts +10 -18
  154. package/dist/cli/session-hooks.js +112 -113
  155. package/dist/cli/setup.d.ts +4 -4
  156. package/dist/cli/setup.js +19 -21
  157. package/dist/cli/shared.d.ts +9 -23
  158. package/dist/cli/shared.js +9 -32
  159. package/dist/cli/slack.d.ts +2 -2
  160. package/dist/cli/slack.js +19 -23
  161. package/dist/cli/sleep.d.ts +3 -2
  162. package/dist/cli/sleep.js +15 -16
  163. package/dist/cli/status.d.ts +9 -12
  164. package/dist/cli/status.js +55 -98
  165. package/dist/cli/stdin.d.ts +4 -6
  166. package/dist/cli/stdin.js +2 -3
  167. package/dist/cli/transfer.d.ts +9 -9
  168. package/dist/cli/transfer.js +66 -89
  169. package/dist/cli/usage.js +11 -5
  170. package/dist/cli.d.ts +66 -448
  171. package/dist/cli.js +87 -263
  172. package/dist/connectors/github/backfill.d.ts +5 -25
  173. package/dist/connectors/github/backfill.js +14 -49
  174. package/dist/connectors/github/deletion.d.ts +4 -18
  175. package/dist/connectors/github/deletion.js +2 -15
  176. package/dist/connectors/github/dlq.d.ts +8 -33
  177. package/dist/connectors/github/dlq.js +12 -29
  178. package/dist/connectors/github/ingest.d.ts +2 -6
  179. package/dist/connectors/github/ingest.js +4 -10
  180. package/dist/connectors/github/octokit-client.d.ts +4 -16
  181. package/dist/connectors/github/octokit-client.js +27 -24
  182. package/dist/connectors/github/ratelimit.d.ts +3 -14
  183. package/dist/connectors/github/ratelimit.js +3 -14
  184. package/dist/connectors/github/scope.d.ts +3 -5
  185. package/dist/connectors/github/scope.js +3 -5
  186. package/dist/connectors/github/signature.d.ts +4 -26
  187. package/dist/connectors/github/signature.js +4 -26
  188. package/dist/connectors/github/tenant-routing.d.ts +2 -24
  189. package/dist/connectors/github/tenant-routing.js +4 -26
  190. package/dist/connectors/github/transform.js +2 -16
  191. package/dist/connectors/github/types.d.ts +3 -15
  192. package/dist/connectors/github/types.js +2 -9
  193. package/dist/connectors/github/webhook.d.ts +2 -16
  194. package/dist/connectors/github/webhook.js +6 -22
  195. package/dist/connectors/slack/backfill.d.ts +4 -17
  196. package/dist/connectors/slack/backfill.js +4 -13
  197. package/dist/connectors/slack/dlq.d.ts +2 -19
  198. package/dist/connectors/slack/dlq.js +2 -19
  199. package/dist/connectors/slack/ingest.d.ts +2 -3
  200. package/dist/connectors/slack/ingest.js +2 -3
  201. package/dist/connectors/slack/scope.d.ts +2 -8
  202. package/dist/connectors/slack/scope.js +2 -8
  203. package/dist/connectors/slack/signature.d.ts +1 -6
  204. package/dist/connectors/slack/tenant-routing.d.ts +2 -19
  205. package/dist/connectors/slack/tenant-routing.js +2 -21
  206. package/dist/connectors/slack/transform.d.ts +2 -18
  207. package/dist/connectors/slack/transform.js +2 -18
  208. package/dist/connectors/slack/types.d.ts +3 -9
  209. package/dist/connectors/slack/types.js +2 -4
  210. package/dist/connectors/slack/web-client.js +33 -27
  211. package/dist/connectors/slack/webhook.d.ts +2 -19
  212. package/dist/connectors/slack/webhook.js +5 -26
  213. package/dist/connectors/slack/workspaces.d.ts +4 -24
  214. package/dist/connectors/slack/workspaces.js +4 -24
  215. package/dist/consolidate/conflicts.js +6 -14
  216. package/dist/consolidate/dag-summary.d.ts +8 -0
  217. package/dist/consolidate/dag-summary.js +41 -0
  218. package/dist/consolidate/dag.d.ts +5 -28
  219. package/dist/consolidate/dag.js +14 -75
  220. package/dist/consolidate/decay.js +7 -19
  221. package/dist/consolidate/dedupe.d.ts +6 -52
  222. package/dist/consolidate/dedupe.js +13 -71
  223. package/dist/consolidate/flush-units.d.ts +3 -4
  224. package/dist/consolidate/flush-units.js +3 -3
  225. package/dist/consolidate/half-life-migration.d.ts +3 -26
  226. package/dist/consolidate/half-life-migration.js +11 -28
  227. package/dist/consolidate/llm-passes.js +4 -21
  228. package/dist/consolidate/memory-value-weights.d.ts +2 -13
  229. package/dist/consolidate/memory-value-weights.js +2 -13
  230. package/dist/consolidate/memory-value.d.ts +11 -84
  231. package/dist/consolidate/memory-value.js +16 -104
  232. package/dist/consolidate/merge.js +10 -31
  233. package/dist/consolidate/merged-row.js +2 -1
  234. package/dist/consolidate/physics-pass.js +1 -3
  235. package/dist/consolidate/replay.d.ts +6 -38
  236. package/dist/consolidate/replay.js +14 -52
  237. package/dist/consolidate/run.js +1 -1
  238. package/dist/consolidate/sleep.d.ts +1 -8
  239. package/dist/consolidate/sleep.js +5 -17
  240. package/dist/consolidate/trace.d.ts +3 -18
  241. package/dist/consolidate/trace.js +3 -18
  242. package/dist/consolidate/traces.js +6 -22
  243. package/dist/core/ablation.d.ts +4 -91
  244. package/dist/core/ablation.js +4 -91
  245. package/dist/core/ambient.d.ts +1 -8
  246. package/dist/core/ambient.js +1 -8
  247. package/dist/core/capture-contract.d.ts +4 -2
  248. package/dist/core/capture-contract.js +4 -2
  249. package/dist/core/card.d.ts +4 -1
  250. package/dist/core/card.js +8 -0
  251. package/dist/core/compare.d.ts +11 -67
  252. package/dist/core/compare.js +9 -63
  253. package/dist/core/config.d.ts +10 -24
  254. package/dist/core/config.js +13 -14
  255. package/dist/core/handoff.d.ts +1 -7
  256. package/dist/core/handoff.js +1 -7
  257. package/dist/core/memory-quality.js +1 -1
  258. package/dist/core/memory.d.ts +41 -164
  259. package/dist/core/memory.js +51 -221
  260. package/dist/core/package-root.d.ts +3 -0
  261. package/dist/core/package-root.js +5 -0
  262. package/dist/core/physics-config.d.ts +1 -4
  263. package/dist/core/physics-config.js +3 -8
  264. package/dist/core/physics.d.ts +15 -61
  265. package/dist/core/physics.js +59 -122
  266. package/dist/core/project-identity.d.ts +17 -58
  267. package/dist/core/project-identity.js +17 -38
  268. package/dist/core/project-remote.js +13 -2
  269. package/dist/core/raw-append-only.d.ts +5 -0
  270. package/dist/core/raw-append-only.js +7 -0
  271. package/dist/core/salience.d.ts +1 -7
  272. package/dist/core/salience.js +1 -7
  273. package/dist/dashboard/dashboard-actions.js +2 -2
  274. package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
  275. package/dist/dashboard/dashboard-snapshot.js +11 -2
  276. package/dist/dashboard/dashboard-types.d.ts +2 -1
  277. package/dist/dashboard/dashboard.d.ts +1 -0
  278. package/dist/dashboard/dashboard.js +50 -4
  279. package/dist/db/busy.d.ts +1 -1
  280. package/dist/db/busy.js +17 -8
  281. package/dist/db/connect.d.ts +1 -0
  282. package/dist/db/connect.js +3 -3
  283. package/dist/db/migrate.js +3 -3
  284. package/dist/db/migrations/types.d.ts +2 -5
  285. package/dist/db/migrations/v14.js +2 -3
  286. package/dist/db/migrations/v15.js +2 -8
  287. package/dist/db/migrations/v16.js +2 -3
  288. package/dist/db/migrations/v17.js +2 -3
  289. package/dist/db/migrations/v19.js +2 -5
  290. package/dist/db/migrations/v20.js +2 -7
  291. package/dist/db/migrations/v22.js +4 -17
  292. package/dist/db/migrations/v23.js +3 -14
  293. package/dist/db/migrations/v24.js +2 -4
  294. package/dist/db/migrations/v25.js +3 -8
  295. package/dist/db/migrations/v26.js +2 -13
  296. package/dist/db/migrations/v27.js +3 -11
  297. package/dist/db/migrations/v28.js +2 -14
  298. package/dist/db/migrations/v29.js +4 -18
  299. package/dist/db/migrations/v30.js +4 -16
  300. package/dist/db/migrations/v31.js +2 -15
  301. package/dist/db/migrations/v32.js +4 -22
  302. package/dist/db/migrations/v33.js +2 -15
  303. package/dist/db/migrations/v34.js +2 -11
  304. package/dist/db/migrations/v35.js +2 -11
  305. package/dist/db/migrations/v36.js +2 -11
  306. package/dist/db/migrations/v37.js +8 -33
  307. package/dist/db/migrations/v38.js +5 -38
  308. package/dist/db/migrations/v39.js +9 -20
  309. package/dist/db/migrations/v40.js +2 -9
  310. package/dist/db/migrations/v41.js +2 -24
  311. package/dist/db/migrations/v43.js +1 -1
  312. package/dist/db/migrations/v44.js +2 -8
  313. package/dist/db/migrations/v45.js +2 -7
  314. package/dist/db/migrations/v47.js +2 -3
  315. package/dist/db/migrations/v51.js +1 -1
  316. package/dist/db/open.d.ts +2 -0
  317. package/dist/db/open.js +17 -1
  318. package/dist/db/physics-state.d.ts +6 -22
  319. package/dist/db/physics-state.js +25 -36
  320. package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
  321. package/dist/db/raw-archive-mirror-cleanup.js +2 -17
  322. package/dist/db/vector-store.d.ts +2 -0
  323. package/dist/db/vector-store.js +8 -1
  324. package/dist/doctor.js +74 -19
  325. package/dist/entry/session-text.js +2 -1
  326. package/dist/eval/eval-stats.d.ts +15 -53
  327. package/dist/eval/eval-stats.js +12 -42
  328. package/dist/eval/eval-suite.d.ts +2 -13
  329. package/dist/eval/eval-suite.js +74 -34
  330. package/dist/eval/eval.d.ts +6 -24
  331. package/dist/eval/eval.js +7 -34
  332. package/dist/eval/judgment.d.ts +0 -3
  333. package/dist/eval/judgment.js +19 -11
  334. package/dist/extensions/openclaw-plugin/index.js +1 -1
  335. package/dist/graph/extract.d.ts +5 -27
  336. package/dist/graph/extract.js +7 -33
  337. package/dist/graph/recall.d.ts +7 -20
  338. package/dist/graph/recall.js +14 -76
  339. package/dist/graph/stream.d.ts +7 -39
  340. package/dist/graph/stream.js +11 -34
  341. package/dist/graph/view.d.ts +9 -35
  342. package/dist/graph/view.js +11 -39
  343. package/dist/hooks/codex-wrapper.js +2 -2
  344. package/dist/hooks/copilot.js +2 -1
  345. package/dist/hooks/hook-blocks.d.ts +6 -2
  346. package/dist/hooks/hook-blocks.js +37 -124
  347. package/dist/hooks/json-hooks.d.ts +4 -36
  348. package/dist/hooks/json-hooks.js +18 -57
  349. package/dist/hooks/opencode.d.ts +0 -38
  350. package/dist/hooks/opencode.js +9 -76
  351. package/dist/hooks/shared.d.ts +8 -17
  352. package/dist/hooks/shared.js +29 -20
  353. package/dist/importers/core.d.ts +12 -37
  354. package/dist/importers/core.js +9 -27
  355. package/dist/importers/markdown-parse.d.ts +8 -22
  356. package/dist/importers/markdown-parse.js +8 -25
  357. package/dist/importers/markdown.js +3 -12
  358. package/dist/importers/sources.js +7 -35
  359. package/dist/importers/vault.d.ts +2 -8
  360. package/dist/importers/vault.js +25 -81
  361. package/dist/index.d.ts +6 -2
  362. package/dist/index.js +6 -2
  363. package/dist/learn/autolearn.d.ts +14 -41
  364. package/dist/learn/autolearn.js +14 -41
  365. package/dist/learn/extract.js +2 -4
  366. package/dist/learn/forward-claim-detector.d.ts +6 -30
  367. package/dist/learn/forward-claim-detector.js +14 -66
  368. package/dist/learn/invalidation.d.ts +6 -18
  369. package/dist/learn/invalidation.js +9 -26
  370. package/dist/mcp/admin-tools.js +3 -5
  371. package/dist/mcp/memory-tools.js +4 -9
  372. package/dist/mcp/protocol.d.ts +8 -26
  373. package/dist/mcp/protocol.js +3 -6
  374. package/dist/mcp/recall-tools.js +3 -3
  375. package/dist/mcp/request.d.ts +3 -11
  376. package/dist/mcp/request.js +10 -26
  377. package/dist/mcp/server.d.ts +3 -9
  378. package/dist/mcp/server.js +5 -16
  379. package/dist/mcp/session-state.d.ts +1 -1
  380. package/dist/mcp/session-state.js +5 -11
  381. package/dist/mcp/stdio.d.ts +2 -6
  382. package/dist/mcp/stdio.js +48 -12
  383. package/dist/mcp/tools.js +5 -3
  384. package/dist/objects/customer-notes.d.ts +7 -42
  385. package/dist/objects/customer-notes.js +7 -48
  386. package/dist/objects/decisions.d.ts +12 -50
  387. package/dist/objects/decisions.js +15 -53
  388. package/dist/objects/incidents.d.ts +7 -38
  389. package/dist/objects/incidents.js +7 -41
  390. package/dist/objects/policies.d.ts +11 -89
  391. package/dist/objects/policies.js +11 -98
  392. package/dist/objects/processes.d.ts +7 -52
  393. package/dist/objects/processes.js +7 -61
  394. package/dist/objects/project-briefs.d.ts +11 -55
  395. package/dist/objects/project-briefs.js +14 -75
  396. package/dist/objects/skills.d.ts +7 -42
  397. package/dist/objects/skills.js +8 -54
  398. package/dist/postinstall.js +6 -19
  399. package/dist/predictions/planning-fallacy.d.ts +11 -34
  400. package/dist/rerankers/clef.js +3 -31
  401. package/dist/rerankers/cross-encoder.js +4 -6
  402. package/dist/rerankers/jev.js +9 -6
  403. package/dist/rerankers/llm.d.ts +2 -11
  404. package/dist/rerankers/llm.js +14 -14
  405. package/dist/rerankers/outage-warning.d.ts +2 -1
  406. package/dist/rerankers/outage-warning.js +2 -1
  407. package/dist/rerankers/remote.d.ts +1 -0
  408. package/dist/rerankers/remote.js +2 -0
  409. package/dist/rerankers/types.d.ts +2 -14
  410. package/dist/search/boosts.d.ts +0 -2
  411. package/dist/search/boosts.js +2 -2
  412. package/dist/search/goal-boost.d.ts +23 -0
  413. package/dist/search/goal-boost.js +90 -0
  414. package/dist/search/hybrid.d.ts +2 -0
  415. package/dist/search/multihop.js +2 -3
  416. package/dist/search/path-context.d.ts +5 -18
  417. package/dist/search/path-context.js +5 -18
  418. package/dist/search/physics-search.js +11 -8
  419. package/dist/search/rrf.d.ts +7 -35
  420. package/dist/search/rrf.js +5 -30
  421. package/dist/search/vector.d.ts +7 -0
  422. package/dist/search/vector.js +35 -5
  423. package/dist/server/auth.d.ts +9 -28
  424. package/dist/server/auth.js +32 -25
  425. package/dist/server/boot.d.ts +2 -21
  426. package/dist/server/boot.js +63 -96
  427. package/dist/server/client-ip.d.ts +3 -19
  428. package/dist/server/client-ip.js +5 -28
  429. package/dist/server/defaults.d.ts +3 -0
  430. package/dist/server/defaults.js +4 -0
  431. package/dist/server/key-check-bounds.d.ts +2 -1
  432. package/dist/server/lifecycle.d.ts +5 -4
  433. package/dist/server/lifecycle.js +19 -4
  434. package/dist/server/mcp-http.js +10 -44
  435. package/dist/server/rate-limit.d.ts +5 -18
  436. package/dist/server/rate-limit.js +4 -13
  437. package/dist/server/request.d.ts +4 -8
  438. package/dist/server/request.js +9 -17
  439. package/dist/server/route-table.js +42 -49
  440. package/dist/server/routes/admin.js +22 -28
  441. package/dist/server/routes/customer-notes.js +7 -12
  442. package/dist/server/routes/decisions.js +10 -17
  443. package/dist/server/routes/incidents.js +12 -20
  444. package/dist/server/routes/memories.js +12 -32
  445. package/dist/server/routes/object-routes.d.ts +0 -5
  446. package/dist/server/routes/object-routes.js +7 -15
  447. package/dist/server/routes/policies.js +10 -18
  448. package/dist/server/routes/predictions.js +13 -25
  449. package/dist/server/routes/processes.js +16 -26
  450. package/dist/server/routes/project-briefs.js +9 -16
  451. package/dist/server/routes/recall.js +10 -35
  452. package/dist/server/routes/skills.js +8 -18
  453. package/dist/server/server-detect.d.ts +9 -53
  454. package/dist/server/server-detect.js +24 -90
  455. package/dist/server/sleep-offload.js +4 -1
  456. package/dist/server/types.d.ts +12 -10
  457. package/dist/server/validation.d.ts +3 -1
  458. package/dist/server/validation.js +10 -23
  459. package/dist/server.d.ts +2 -2
  460. package/dist/server.js +3 -2
  461. package/dist/sharing/global-store.d.ts +19 -0
  462. package/dist/sharing/global-store.js +75 -0
  463. package/dist/sharing/global-sync.d.ts +6 -0
  464. package/dist/sharing/global-sync.js +80 -0
  465. package/dist/sharing/project-merge.d.ts +4 -5
  466. package/dist/sharing/project-merge.js +9 -7
  467. package/dist/sharing/scope.d.ts +4 -11
  468. package/dist/sharing/scope.js +4 -11
  469. package/dist/sharing/search-both.d.ts +60 -0
  470. package/dist/sharing/search-both.js +138 -0
  471. package/dist/sharing/share.d.ts +38 -0
  472. package/dist/sharing/share.js +226 -0
  473. package/dist/store/ambient.js +4 -9
  474. package/dist/store/audit-event.d.ts +4 -12
  475. package/dist/store/audit-event.js +4 -12
  476. package/dist/store/audit.d.ts +2 -5
  477. package/dist/store/audit.js +4 -12
  478. package/dist/store/auth.d.ts +6 -6
  479. package/dist/store/auth.js +10 -9
  480. package/dist/store/candidates.d.ts +20 -3
  481. package/dist/store/candidates.js +77 -48
  482. package/dist/store/card-detail.d.ts +2 -1
  483. package/dist/store/card-detail.js +2 -1
  484. package/dist/store/cards.d.ts +14 -9
  485. package/dist/store/cards.js +72 -126
  486. package/dist/store/conflicts.d.ts +4 -21
  487. package/dist/store/conflicts.js +71 -150
  488. package/dist/store/connectors/github.d.ts +10 -10
  489. package/dist/store/connectors/github.js +10 -10
  490. package/dist/store/dashboard-reads.js +4 -8
  491. package/dist/store/delete-and-batch.d.ts +11 -31
  492. package/dist/store/delete-and-batch.js +48 -64
  493. package/dist/store/delivery-recorder.d.ts +8 -4
  494. package/dist/store/delivery-recorder.js +25 -15
  495. package/dist/store/diagnostics.js +6 -13
  496. package/dist/store/dormant.d.ts +7 -29
  497. package/dist/store/dormant.js +15 -56
  498. package/dist/store/embeddings/index.d.ts +11 -80
  499. package/dist/store/embeddings/index.js +71 -207
  500. package/dist/store/embeddings/local.js +15 -32
  501. package/dist/store/embeddings/provider.d.ts +16 -53
  502. package/dist/store/embeddings/provider.js +41 -69
  503. package/dist/store/entry-reads.d.ts +21 -57
  504. package/dist/store/entry-reads.js +65 -126
  505. package/dist/store/entry-row.d.ts +6 -35
  506. package/dist/store/entry-row.js +9 -37
  507. package/dist/store/entry-writes.d.ts +10 -16
  508. package/dist/store/entry-writes.js +17 -35
  509. package/dist/store/goals.d.ts +3 -40
  510. package/dist/store/goals.js +21 -160
  511. package/dist/store/graph-queue.d.ts +6 -22
  512. package/dist/store/graph-queue.js +14 -45
  513. package/dist/store/graph-reads.d.ts +11 -35
  514. package/dist/store/graph-reads.js +20 -58
  515. package/dist/store/graph-rows.d.ts +3 -6
  516. package/dist/store/graph-rows.js +6 -9
  517. package/dist/store/graph-view-rows.d.ts +2 -1
  518. package/dist/store/graph-view-rows.js +2 -1
  519. package/dist/store/graph-writes.d.ts +6 -31
  520. package/dist/store/graph-writes.js +13 -37
  521. package/dist/store/half-life.d.ts +2 -1
  522. package/dist/store/half-life.js +14 -16
  523. package/dist/store/handoffs.d.ts +5 -11
  524. package/dist/store/handoffs.js +16 -34
  525. package/dist/store/index-and-stats.d.ts +6 -19
  526. package/dist/store/index-and-stats.js +34 -82
  527. package/dist/store/markdown.d.ts +2 -6
  528. package/dist/store/markdown.js +21 -20
  529. package/dist/store/mirrors.d.ts +2 -6
  530. package/dist/store/mirrors.js +14 -23
  531. package/dist/store/open.js +6 -13
  532. package/dist/store/planning-fallacy-evidence.d.ts +2 -30
  533. package/dist/store/planning-fallacy-evidence.js +8 -37
  534. package/dist/store/port.d.ts +82 -79
  535. package/dist/store/predictions.d.ts +11 -51
  536. package/dist/store/predictions.js +38 -119
  537. package/dist/{cli → store}/quality-repair.js +15 -31
  538. package/dist/store/raw-archive.d.ts +4 -16
  539. package/dist/store/raw-archive.js +14 -29
  540. package/dist/store/recall-scope.d.ts +19 -79
  541. package/dist/store/recall-scope.js +21 -82
  542. package/dist/store/recall-trace.d.ts +10 -77
  543. package/dist/store/recall-trace.js +19 -95
  544. package/dist/store/rejected-values.js +7 -19
  545. package/dist/store/rejection.d.ts +12 -58
  546. package/dist/store/rejection.js +13 -65
  547. package/dist/store/report-reads.d.ts +6 -0
  548. package/dist/store/report-reads.js +29 -0
  549. package/dist/store/rows.d.ts +9 -19
  550. package/dist/store/rows.js +36 -34
  551. package/dist/store/rule-sql.d.ts +5 -0
  552. package/dist/store/rule-sql.js +37 -0
  553. package/dist/store/search-rows.d.ts +7 -38
  554. package/dist/store/search-rows.js +14 -50
  555. package/dist/store/sessions.d.ts +10 -47
  556. package/dist/store/sessions.js +17 -73
  557. package/dist/store/sqlite/connector-events-group.js +2 -2
  558. package/dist/store/sqlite/entry-writes-group.js +2 -2
  559. package/dist/store/sqlite/error-codec.js +4 -2
  560. package/dist/store/sqlite/executor.d.ts +2 -1
  561. package/dist/store/sqlite/executor.js +2 -1
  562. package/dist/store/sqlite/local.d.ts +3 -3
  563. package/dist/store/sqlite/local.js +1 -0
  564. package/dist/store/sqlite/object-rows.js +6 -3
  565. package/dist/store/sqlite/objects-group.js +4 -2
  566. package/dist/store/sqlite/quarantine-group.js +2 -2
  567. package/dist/store/sqlite/store.d.ts +1 -4
  568. package/dist/store/sqlite/store.js +2 -3
  569. package/dist/store/sqlite/vector-reads-group.js +2 -2
  570. package/dist/store/sqlite/worker-jobs.js +1 -1
  571. package/dist/store/sqlite/worker-ops.d.ts +13 -2
  572. package/dist/store/sqlite/worker-ops.js +13 -2
  573. package/dist/store/sqlite/worker-store.js +5 -2
  574. package/dist/store/summaries.d.ts +10 -62
  575. package/dist/store/summaries.js +34 -146
  576. package/dist/store/summary-dirty.js +1 -1
  577. package/dist/store/tenant-lookup.d.ts +6 -1
  578. package/dist/store/tenant-lookup.js +7 -0
  579. package/dist/store/tenant.d.ts +2 -16
  580. package/dist/store/tenant.js +4 -19
  581. package/dist/store/token-ledger.d.ts +13 -43
  582. package/dist/store/token-ledger.js +19 -50
  583. package/dist/store/usage-reports.js +5 -13
  584. package/dist/store/vector-index.d.ts +46 -0
  585. package/dist/store/vector-index.js +170 -0
  586. package/dist/store/working-memory.d.ts +6 -25
  587. package/dist/store/working-memory.js +18 -52
  588. package/dist/store/yaml.d.ts +1 -5
  589. package/dist/store/yaml.js +2 -6
  590. package/dist/support-bundle.js +7 -5
  591. package/dist/trust/reject-flow.js +1 -3
  592. package/dist/util/anthropic-messages.js +14 -2
  593. package/dist/util/atomic-write.d.ts +2 -1
  594. package/dist/util/atomic-write.js +35 -4
  595. package/dist/util/capped-json.d.ts +6 -0
  596. package/dist/util/capped-json.js +46 -0
  597. package/dist/util/crash-handlers.d.ts +8 -1
  598. package/dist/util/crash-handlers.js +52 -10
  599. package/dist/util/env.d.ts +13 -6
  600. package/dist/util/env.js +14 -7
  601. package/dist/util/home-path.d.ts +2 -1
  602. package/dist/util/home-path.js +4 -2
  603. package/dist/util/http-retry.d.ts +3 -1
  604. package/dist/util/http-retry.js +26 -5
  605. package/dist/util/log.d.ts +3 -2
  606. package/dist/util/log.js +25 -9
  607. package/dist/util/request-scope.d.ts +2 -1
  608. package/dist/util/request-scope.js +2 -1
  609. package/dist/util/secret-detect.d.ts +5 -30
  610. package/dist/util/secret-detect.js +13 -39
  611. package/dist/util/stored-json.d.ts +1 -1
  612. package/dist/util/stored-json.js +1 -1
  613. package/dist/util/token-text.d.ts +1 -4
  614. package/dist/util/token-text.js +1 -4
  615. package/dist/util/transcript-tail.d.ts +2 -0
  616. package/dist/util/transcript-tail.js +24 -23
  617. package/dist/util/version.d.ts +5 -20
  618. package/dist/util/version.js +5 -20
  619. package/extensions/openclaw-plugin/index.ts +1 -1
  620. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  621. package/extensions/openclaw-plugin/package.json +1 -1
  622. package/openclaw.plugin.json +1 -1
  623. package/package.json +1 -1
  624. package/dist/connectors/github/cli-impl.d.ts +0 -25
  625. package/dist/sharing/shared.d.ts +0 -187
  626. package/dist/sharing/shared.js +0 -563
  627. package/dist/store/vector-writes.d.ts +0 -13
  628. package/dist/store/vector-writes.js +0 -89
  629. /package/dist/{cli → store}/quality-repair.d.ts +0 -0
@@ -21,11 +21,13 @@ export function homeDir() {
21
21
  export function codexHomeDir(home = homeDir(), env = processEnv()) {
22
22
  return env.CODEX_HOME || path.join(home, '.codex');
23
23
  }
24
- /** Copilot's config folder: $COPILOT_HOME, else ~/.copilot under os.homedir(), as the Copilot apps resolve it (a HOME that differs from the profile must not move it). */
24
+ /** Copilot's config folder: $COPILOT_HOME, else ~/.copilot under os.homedir(), as the
25
+ * Copilot apps resolve it (a HOME that differs from the profile must not move it). */
25
26
  export function copilotHomeDir(home = os.homedir(), env = processEnv()) {
26
27
  return env.COPILOT_HOME || path.join(home, '.copilot');
27
28
  }
28
- /** Claude Code's config folder, where it reads settings.json: $CLAUDE_CONFIG_DIR when set and non-empty, else ~/.claude under os.homedir(), as Claude Code does (a HOME that differs from the profile must not move it). */
29
+ /** Claude Code's config folder, where it reads settings.json: $CLAUDE_CONFIG_DIR when set and non-empty, else
30
+ * ~/.claude under os.homedir(), as Claude Code does (a HOME that differs from the profile must not move it). */
29
31
  export function claudeConfigDir(home = os.homedir(), env = processEnv()) {
30
32
  return env.CLAUDE_CONFIG_DIR || path.join(home, '.claude');
31
33
  }
@@ -53,20 +55,12 @@ export function isCopilotPresent(home = os.homedir()) {
53
55
  }
54
56
  /** 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. */
55
57
  export 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`.";
56
- /**
57
- * Default log path consumed by `hippo last-sleep`. Shared fallback when
58
- * a caller doesn't pass --path explicitly.
59
- */
58
+ /** Default log path consumed by `hippo last-sleep` when a caller passes no --path. */
60
59
  export function defaultSleepLogPath() {
61
60
  return path.join(homeDir(), '.hippo', 'logs', 'last-sleep.log');
62
61
  }
63
- /**
64
- * Diagnostic-only log path for `hippo pre-compact`. Deliberately separate
65
- * from the SessionEnd sleep log: `hippo last-sleep` truncates that file on
66
- * every SessionStart, which would wipe pre-compact lines before anyone
67
- * could read them. Nothing consumes this file programmatically — it exists
68
- * for manual troubleshooting only. Overridden by `--log-file`.
69
- */
62
+ /** Diagnostic-only log path for `hippo pre-compact`, kept apart from the SessionEnd sleep log because `hippo last-sleep` truncates that one every SessionStart.
63
+ * Nothing reads it programmatically; overridden by `--log-file`. */
70
64
  export function defaultPreCompactLogPath() {
71
65
  return path.join(homeDir(), '.hippo', 'logs', 'pre-compact.log');
72
66
  }
@@ -74,21 +68,36 @@ export function ensureDir(dir) {
74
68
  if (!fs.existsSync(dir))
75
69
  fs.mkdirSync(dir, { recursive: true });
76
70
  }
77
- /**
78
- * Detect which AI coding tools are installed based on config directory presence.
79
- * Used by `hippo setup` to decide which JSON-hook installs to run.
80
- */
71
+ /** Detect which AI coding tools are installed from config directory presence; `hippo setup` uses it to pick JSON-hook installs. */
81
72
  export function detectInstalledTools() {
82
73
  const home = homeDir();
83
74
  const exists = (...parts) => fs.existsSync(path.join(home, ...parts));
84
75
  const claudeDir = claudeConfigDir();
85
76
  return [
86
77
  { name: 'claude-code', configDir: claudeDir, detected: fs.existsSync(claudeDir), kind: 'json-hook' },
87
- { name: 'opencode', configDir: '~/.config/opencode', detected: exists('.config', 'opencode'), kind: 'plugin', notes: 'installs a TS plugin at ~/.config/opencode/plugins/hippo.ts' },
78
+ {
79
+ name: 'opencode',
80
+ configDir: '~/.config/opencode',
81
+ detected: exists('.config', 'opencode'),
82
+ kind: 'plugin',
83
+ notes: 'installs a TS plugin at ~/.config/opencode/plugins/hippo.ts'
84
+ },
88
85
  { name: 'openclaw', configDir: '~/.openclaw', detected: exists('.openclaw'), kind: 'plugin', notes: 'install via `openclaw plugins install hippo-memory`' },
89
- { name: 'codex', configDir: '~/.codex', detected: isCodexPresent(home), kind: 'wrapper', notes: 'memory hooks in hooks.json, and wraps the detected codex launcher for session-end consolidation' },
86
+ {
87
+ name: 'codex',
88
+ configDir: '~/.codex',
89
+ detected: isCodexPresent(home),
90
+ kind: 'wrapper',
91
+ notes: 'memory hooks in hooks.json, and wraps the detected codex launcher for session-end consolidation'
92
+ },
90
93
  { name: 'copilot', configDir: copilotHomeDir(), detected: isCopilotPresent(), kind: 'json-hook', notes: 'hooks in hooks/hippo.json, the MCP server in mcp-config.json and a block in copilot-instructions.md; for VS Code, the server in each User mcp.json and prompts/hippo.instructions.md' },
91
- { name: 'cursor', configDir: '~/.cursor', detected: exists('.cursor'), kind: 'markdown-instruction', notes: 'no hook API - patches AGENTS.md in the project' },
94
+ {
95
+ name: 'cursor',
96
+ configDir: '~/.cursor',
97
+ detected: exists('.cursor'),
98
+ kind: 'markdown-instruction',
99
+ notes: 'no hook API - patches AGENTS.md in the project'
100
+ },
92
101
  { name: 'pi', configDir: '~/.pi', detected: exists('.pi'), kind: 'markdown-instruction', notes: 'no hook API - patches AGENTS.md in the project' },
93
102
  ];
94
103
  }
@@ -1,21 +1,12 @@
1
- /**
2
- * Memory importers for Hippo.
3
- * Imports memories from ChatGPT, Claude, Cursor, generic files, and structured markdown.
4
- */
1
+ /** Memory importers for Hippo.
2
+ * Imports memories from ChatGPT, Claude, Cursor, generic files, and structured markdown. */
5
3
  import { MemoryEntry } from '../core/memory.js';
6
4
  export interface ImportResult {
7
5
  total: number;
8
6
  imported: number;
9
7
  skipped: number;
10
- /** AT1: refused by the rejection-value guard — kept distinct from
11
- * `skipped` (dedup) so a tombstoned value is distinguishable from a
12
- * plain duplicate in import summaries (plan §3 containment, round-2 low).
13
- * AT1 P2 fix (codex, published-surface compat): optional, not required —
14
- * `ImportResult` is re-exported from the package root (index.ts), and a
15
- * required field breaks any existing consumer constructing the pre-AT1
16
- * shape. Every producer in this file still always sets a real number;
17
- * `?? 0` at read sites (this file's own accumulation, cli.ts's summary
18
- * prints) tolerates a caller-supplied object that omits it. */
8
+ /** Entries refused by the rejection-value guard, kept apart from `skipped` (dedup) so a tombstoned value is distinguishable in summaries.
9
+ * Optional because `ImportResult` is exported from the package root and a required field breaks existing consumers; read sites use `?? 0`. */
19
10
  rejected?: number;
20
11
  /** K1 vault import: rows archived this run (changed + source-deleted). In a
21
12
  * dryRun this is the would-be count (a true deletion-sync preview). */
@@ -29,33 +20,17 @@ export interface ImportOptions {
29
20
  global?: boolean;
30
21
  extraTags?: string[];
31
22
  hippoRoot: string;
32
- /**
33
- * L9: tenant scope for the dedup read. When provided AND `global` is
34
- * false, the dedup check only considers this tenant's existing entries.
35
- * Ignored when `global: true` (global writes are host-wide by definition).
36
- * Undefined preserves pre-1.12.1 host-wide dedup behaviour.
37
- */
23
+ /** Tenant scope for the dedup read: when set and `global` is false, only this tenant's entries count.
24
+ * Ignored when `global: true` (host-wide); undefined means host-wide dedup. */
38
25
  tenantId?: string;
39
- /**
40
- * K1 vault import only. Logical vault name used in the `vault:<name>` tag and
41
- * the `artifactRef='vault:<name>:<relpath>'` key. REQUIRED by importVault: it
42
- * is the identity key for the destructive source-deletion sync, so it must be
43
- * set explicitly rather than inferred from the folder basename (two vaults
44
- * sharing a basename would collide and clobber each other). importVault throws
45
- * if it is missing or blank. Optional in this shared type only because the
46
- * other importers ignore it. Operator-supplied, so the loader query LIKE-escapes
47
- * it (`escapeLike` in src/util/escape.ts).
48
- */
26
+ /** K1 vault import only: logical vault name for the `vault:<name>` tag and `artifactRef` key. REQUIRED by importVault (throws if missing or blank),
27
+ * because it keys the destructive deletion sync and two vaults sharing a basename would clobber each other. LIKE-escaped by the loader. */
49
28
  name?: string;
50
- /**
51
- * K1 vault import only. Memory scope stamped on every imported note. Defaults
52
- * to null (unscoped) when unset.
53
- */
29
+ /** K1 vault import only. Memory scope stamped on every imported note. Defaults
30
+ * to null (unscoped) when unset. */
54
31
  scope?: string;
55
32
  }
56
- /**
57
- * Given an array of raw text chunks, deduplicate against existing memories,
58
- * create MemoryEntry objects, write them (unless dry-run), and return a result.
59
- */
33
+ /** Given an array of raw text chunks, deduplicate against existing memories,
34
+ * create MemoryEntry objects, write them (unless dry-run), and return a result. */
60
35
  export declare function importEntries(chunks: string[], source: string, tags: string[], options: ImportOptions): ImportResult;
61
36
  //# sourceMappingURL=core.d.ts.map
@@ -1,25 +1,19 @@
1
- /**
2
- * Memory importers for Hippo.
3
- * Imports memories from ChatGPT, Claude, Cursor, generic files, and structured markdown.
4
- */
1
+ /** Memory importers for Hippo.
2
+ * Imports memories from ChatGPT, Claude, Cursor, generic files, and structured markdown. */
3
+ import { DEFAULT_TENANT_ID } from '../util/env.js';
5
4
  import { createMemory, Layer } from '../core/memory.js';
6
5
  import { writeEntry } from '../store/entry-writes.js';
7
6
  import { loadAllEntries } from '../store/entry-reads.js';
8
7
  import { duplicateKey, storedTextKeys } from '../util/same-text.js';
9
- import { getGlobalRoot, initGlobal } from '../sharing/shared.js';
8
+ import { getGlobalRoot, initGlobal } from '../sharing/global-store.js';
10
9
  import { withRequestStoresSync } from '../db/request-stores.js';
11
10
  import { RejectedValueError } from '../store/rejection.js';
12
11
  import { rejectionGuardRefuses } from '../store/rejected-values.js';
13
12
  import { loadConfig } from '../core/config.js';
14
13
  import { vetSecrets } from '../util/secret-detect.js';
15
14
  import { log } from '../util/log.js';
16
- // ---------------------------------------------------------------------------
17
- // Shared core: dedup + write
18
- // ---------------------------------------------------------------------------
19
- /**
20
- * Given an array of raw text chunks, deduplicate against existing memories,
21
- * create MemoryEntry objects, write them (unless dry-run), and return a result.
22
- */
15
+ /** Given an array of raw text chunks, deduplicate against existing memories,
16
+ * create MemoryEntry objects, write them (unless dry-run), and return a result. */
23
17
  export function importEntries(chunks, source, tags, options) {
24
18
  const { targetRoot, keys } = openImportTarget(options);
25
19
  const allTags = [...new Set([...tags, ...(options.extraTags ?? [])])];
@@ -87,17 +81,8 @@ function prepareImportChunk(raw, allTags) {
87
81
  return { chunk: trimmed.slice(0, 1000), wasRedacted };
88
82
  }
89
83
  function createImportEntry(chunk, source, allTags, options, baseHalfLifeDays) {
90
- // A3: kind defaults to 'distilled'. ChatGPT/Claude/Cursor exports are curated
91
- // user pastes, not raw transcripts from a system of record, so distilled is
92
- // correct here. E1.3 (Slack ingestion) shipped 2026-04-29 in src/connectors/slack/
93
- // and sets kind: 'raw' + routes deletions through archiveRawMemory() — these
94
- // importers stay 'distilled' per the original reasoning. See MEMORY_ENVELOPE.md.
95
- // L9: the dedup read above is scoped by options.tenantId — the WRITE
96
- // must match, or scoped-dedup-passes-then-default-tenant-write breaks
97
- // the per-tenant contract. Mirror the dedup-read guard: global=true
98
- // → host-wide write to global store (tenantId irrelevant, createMemory
99
- // defaults to 'default'). global=false → write to the same tenant as
100
- // the dedup read.
84
+ // kind defaults to 'distilled': these exports are curated user pastes, not raw transcripts from a system of record (see MEMORY_ENVELOPE.md).
85
+ // The write must use the same tenant as the scoped dedup read above: global=true writes host-wide, global=false writes to options.tenantId.
101
86
  return createMemory(chunk, {
102
87
  layer: Layer.Episodic,
103
88
  tags: allTags,
@@ -110,7 +95,7 @@ function createImportEntry(chunk, source, allTags, options, baseHalfLifeDays) {
110
95
  /** Writes the entry, or on a dry run only probes the guard; false when a rejected value refuses it. */
111
96
  function writeOrProbeImport(targetRoot, entry, options) {
112
97
  if (options.dryRun)
113
- return !rejectionGuardRefuses(targetRoot, entry.tenantId ?? 'default', entry.id, entry.content);
98
+ return !rejectionGuardRefuses(targetRoot, entry.tenantId ?? DEFAULT_TENANT_ID, entry.id, entry.content);
114
99
  // A rejection refuses one chunk, not the whole import, so siblings still land.
115
100
  try {
116
101
  writeEntry(targetRoot, entry);
@@ -122,7 +107,4 @@ function writeOrProbeImport(targetRoot, entry, options) {
122
107
  }
123
108
  return true;
124
109
  }
125
- // ---------------------------------------------------------------------------
126
- // ChatGPT importer
127
- // ---------------------------------------------------------------------------
128
110
  //# sourceMappingURL=core.js.map
@@ -1,32 +1,18 @@
1
- /** Minimal inline frontmatter split. Recognises a leading `---\n…\n---\n`
2
- * block (no YAML dep). Returns the parsed key→value map plus the body with the
3
- * block removed. When no well-formed block is present, `fm` is empty and
4
- * `body` is the original content. */
1
+ /** Minimal inline frontmatter split (no YAML dep) on a leading `---\n...\n---\n` block; returns the key-value map plus the body,
2
+ * or an empty `fm` and the original content when no well-formed block is present. */
5
3
  interface FrontmatterParseResult {
6
4
  fm: Record<string, string>;
7
5
  body: string;
8
6
  }
9
7
  export declare function splitMarkdownFrontmatter(raw: string): FrontmatterParseResult;
10
- /** Pull a frontmatter field that may be a YAML flow list (`[a, b]`), a
11
- * comma-separated scalar (`a, b`), or a single token, into a string[]. Quotes
12
- * and surrounding brackets are stripped; empty entries dropped. */
8
+ /** Pull a frontmatter field that may be a YAML flow list (`[a, b]`), a comma-separated scalar, or one token into a string[];
9
+ * quotes and brackets are stripped and empty entries dropped. */
13
10
  export declare function frontmatterList(value: string | undefined): string[];
14
- /** Parse `[[wikilinks]]` from body text. `[[target]]` and `[[target|alias]]`
15
- * both yield `target` (alias dropped). Returns de-duplicated, order-preserving
16
- * target strings (trimmed). Embeds (`![[…]]`) are intentionally matched too —
17
- * the leading `!` is not part of the `[[…]]` capture, so an embed contributes
18
- * its target as a candidate, which is the desired no-crash baseline behaviour. */
11
+ /** Parse `[[wikilinks]]` from body text: `[[target]]` and `[[target|alias]]` both yield `target`; de-duplicated, order-preserving.
12
+ * Embeds (`![[...]]`) match too, because the leading `!` is outside the capture and a candidate target is harmless. */
19
13
  export declare function parseWikilinks(body: string): string[];
20
- /** Recursively collect files whose name matches `match` (`*.md` by default) under `root`,
21
- * as paths relative to `root` with forward-slash separators (stable artifactRef keys across OSes).
22
- * Symlinks are not followed. Skips dot-directories (the default `.hippo` store,
23
- * `.git`, `.obsidian`, `.trash`) AND the canonicalized Hippo store path during
24
- * the walk, so re-importing a vault that CONTAINS the store never ingests its own
25
- * markdown mirror files (codex R5 P1: `hippo import --vault .` after `hippo
26
- * init` in the vault would otherwise self-import its mirror rows and grow on
27
- * every run). The root-IS-the-store case is handled one level up in
28
- * importVault (a no-op early return), NOT here: returning [] for it would feed
29
- * the deletion-sync an empty scan that mass-archives every live row (codex R8). */
14
+ /** Recursively collect files matching `match` (`*.md` default) under `root` as forward-slash relative paths; symlinks are not followed.
15
+ * Skips dot-directories and the Hippo store path so a vault containing the store never imports its own mirror files; importVault handles root-IS-the-store. */
30
16
  export declare function collectMarkdownFiles(root: string, hippoRoot: string, match?: RegExp): string[];
31
17
  export {};
32
18
  //# sourceMappingURL=markdown-parse.d.ts.map
@@ -16,9 +16,7 @@ export function splitMarkdownFrontmatter(raw) {
16
16
  continue;
17
17
  let val = kv[2].trim();
18
18
  if (val === '') {
19
- // YAML block-style list: `key:` followed by indented `- item` lines
20
- // (common in Obsidian/Dendron frontmatter). Collect them into a
21
- // comma-joined value so frontmatterList parses them (codex P2).
19
+ // YAML block-style list (`key:` then indented `- item` lines, common in Obsidian/Dendron): collect into a comma-joined value for frontmatterList.
22
20
  const items = [];
23
21
  let j = i + 1;
24
22
  let item;
@@ -35,9 +33,8 @@ export function splitMarkdownFrontmatter(raw) {
35
33
  }
36
34
  return { fm, body };
37
35
  }
38
- /** Pull a frontmatter field that may be a YAML flow list (`[a, b]`), a
39
- * comma-separated scalar (`a, b`), or a single token, into a string[]. Quotes
40
- * and surrounding brackets are stripped; empty entries dropped. */
36
+ /** Pull a frontmatter field that may be a YAML flow list (`[a, b]`), a comma-separated scalar, or one token into a string[];
37
+ * quotes and brackets are stripped and empty entries dropped. */
41
38
  export function frontmatterList(value) {
42
39
  if (!value)
43
40
  return [];
@@ -49,11 +46,8 @@ export function frontmatterList(value) {
49
46
  .map((s) => s.trim().replace(/^['"]|['"]$/g, '').trim())
50
47
  .filter(Boolean);
51
48
  }
52
- /** Parse `[[wikilinks]]` from body text. `[[target]]` and `[[target|alias]]`
53
- * both yield `target` (alias dropped). Returns de-duplicated, order-preserving
54
- * target strings (trimmed). Embeds (`![[…]]`) are intentionally matched too —
55
- * the leading `!` is not part of the `[[…]]` capture, so an embed contributes
56
- * its target as a candidate, which is the desired no-crash baseline behaviour. */
49
+ /** Parse `[[wikilinks]]` from body text: `[[target]]` and `[[target|alias]]` both yield `target`; de-duplicated, order-preserving.
50
+ * Embeds (`![[...]]`) match too, because the leading `!` is outside the capture and a candidate target is harmless. */
57
51
  export function parseWikilinks(body) {
58
52
  const out = [];
59
53
  const seen = new Set();
@@ -71,22 +65,11 @@ export function parseWikilinks(body) {
71
65
  }
72
66
  return out;
73
67
  }
74
- /** Recursively collect files whose name matches `match` (`*.md` by default) under `root`,
75
- * as paths relative to `root` with forward-slash separators (stable artifactRef keys across OSes).
76
- * Symlinks are not followed. Skips dot-directories (the default `.hippo` store,
77
- * `.git`, `.obsidian`, `.trash`) AND the canonicalized Hippo store path during
78
- * the walk, so re-importing a vault that CONTAINS the store never ingests its own
79
- * markdown mirror files (codex R5 P1: `hippo import --vault .` after `hippo
80
- * init` in the vault would otherwise self-import its mirror rows and grow on
81
- * every run). The root-IS-the-store case is handled one level up in
82
- * importVault (a no-op early return), NOT here: returning [] for it would feed
83
- * the deletion-sync an empty scan that mass-archives every live row (codex R8). */
68
+ /** Recursively collect files matching `match` (`*.md` default) under `root` as forward-slash relative paths; symlinks are not followed.
69
+ * Skips dot-directories and the Hippo store path so a vault containing the store never imports its own mirror files; importVault handles root-IS-the-store. */
84
70
  export function collectMarkdownFiles(root, hippoRoot, match = /\.md$/i) {
85
71
  const out = [];
86
- // Canonicalize (realpath) so a non-dot HIPPO_HOME store nested in the vault is
87
- // skipped even when hippoRoot is an aliased path (junction / Windows case
88
- // variant); path.resolve would miss it and self-import the store's mirror
89
- // files (codex R9 follow-up: same gap as the importVault guard, sibling site).
72
+ // Canonicalize (realpath) so a non-dot HIPPO_HOME store nested in the vault is skipped even via a junction or Windows case alias.
90
73
  const resolvedHippoRoot = realpathOrResolve(hippoRoot);
91
74
  const walk = (dir) => {
92
75
  const entries = fs.readdirSync(dir, { withFileTypes: true });
@@ -1,13 +1,8 @@
1
1
  import * as fs from 'fs';
2
2
  import { importEntries } from './core.js';
3
3
  const SLUG_MAX_CHARS = 50;
4
- // ---------------------------------------------------------------------------
5
- // Structured markdown importer (MEMORY.md / AGENTS.md format)
6
- // ---------------------------------------------------------------------------
7
- /**
8
- * Slugify a heading for use as a tag.
9
- * "Data Pipeline & Cache" -> "data-pipeline-cache"
10
- */
4
+ /** Slugify a heading for use as a tag.
5
+ * "Data Pipeline & Cache" -> "data-pipeline-cache" */
11
6
  function slugify(heading) {
12
7
  return heading
13
8
  .toLowerCase()
@@ -17,11 +12,7 @@ function slugify(heading) {
17
12
  .replace(/-+/g, '-')
18
13
  .slice(0, SLUG_MAX_CHARS);
19
14
  }
20
- /**
21
- * Parse structured markdown into {content, sectionSlug} pairs.
22
- * Each heading starts a new section. Bullet points / numbered items under
23
- * the heading become individual memories tagged with the section slug.
24
- */
15
+ /** Parse structured markdown into {content, sectionSlug} pairs: each heading starts a section whose bullets or numbered items become memories. */
25
16
  function parseStructuredMarkdown(raw) {
26
17
  const results = [];
27
18
  const lines = raw.split('\n');
@@ -13,14 +13,7 @@ function extractMemoryText(candidate) {
13
13
  }
14
14
  return '';
15
15
  }
16
- /**
17
- * Parse ChatGPT memory export file.
18
- * Supports:
19
- * - JSON array of strings: ["memory 1", "memory 2"]
20
- * - JSON array of objects: [{"content": "...", "created": "..."}]
21
- * - ChatGPT export format: {"memories": [{"content": "...", "created_at": "..."}]}
22
- * - Plain text: one memory per line
23
- */
16
+ /** Parse a ChatGPT memory export: a JSON array of strings or `{content, created}` objects, `{"memories": [...]}`, or plain text with one memory per line. */
24
17
  function parseChatGPTFile(filePath) {
25
18
  const raw = fs.readFileSync(filePath, 'utf8').trim();
26
19
  // Try JSON first
@@ -47,14 +40,9 @@ export function importChatGPT(filePath, options) {
47
40
  const chunks = parseChatGPTFile(filePath);
48
41
  return importEntries(chunks, 'import:chatgpt', ['imported', 'chatgpt'], options);
49
42
  }
50
- // ---------------------------------------------------------------------------
51
- // Claude importer
52
- // ---------------------------------------------------------------------------
53
43
  const HIPPO_START = '<!-- hippo:start -->';
54
44
  const HIPPO_END = '<!-- hippo:end -->';
55
- /**
56
- * Strip the hippo hook block from markdown content.
57
- */
45
+ /** Strip the hippo hook block from markdown content. */
58
46
  function stripHippoBlock(content) {
59
47
  const startIdx = content.indexOf(HIPPO_START);
60
48
  const endIdx = content.indexOf(HIPPO_END);
@@ -62,9 +50,7 @@ function stripHippoBlock(content) {
62
50
  return content;
63
51
  return content.slice(0, startIdx) + content.slice(endIdx + HIPPO_END.length);
64
52
  }
65
- /**
66
- * Split markdown into meaningful chunks (headings + bullet points).
67
- */
53
+ /** Split markdown into meaningful chunks (headings + bullet points). */
68
54
  function splitMarkdown(content) {
69
55
  const chunks = [];
70
56
  const lines = content.split('\n');
@@ -119,9 +105,7 @@ function appendLine(chunks, open, line) {
119
105
  // Regular line: append to current
120
106
  return current ? current + ' ' + trimmed : trimmed;
121
107
  }
122
- /**
123
- * Parse CLAUDE.md or Claude memory.json.
124
- */
108
+ /** Parse CLAUDE.md or Claude memory.json. */
125
109
  function parseClaudeFile(filePath) {
126
110
  const raw = fs.readFileSync(filePath, 'utf8');
127
111
  // JSON memory file
@@ -144,13 +128,8 @@ export function importClaude(filePath, options) {
144
128
  const chunks = parseClaudeFile(filePath);
145
129
  return importEntries(chunks, 'import:claude', ['imported', 'claude'], options);
146
130
  }
147
- // ---------------------------------------------------------------------------
148
- // Cursor importer
149
- // ---------------------------------------------------------------------------
150
- /**
151
- * Split cursor rules file into chunks.
152
- * Priority: numbered items, then bullet points, then double newlines.
153
- */
131
+ /** Split cursor rules file into chunks.
132
+ * Priority: numbered items, then bullet points, then double newlines. */
154
133
  function parseCursorFile(content) {
155
134
  const chunks = [];
156
135
  const lines = content.split('\n');
@@ -206,14 +185,7 @@ export function importCursor(sourcePath, options) {
206
185
  });
207
186
  return importEntries(chunks, 'import:cursor', ['imported', 'cursor'], options);
208
187
  }
209
- // ---------------------------------------------------------------------------
210
- // Generic file importer
211
- // ---------------------------------------------------------------------------
212
- /**
213
- * Split a generic file into chunks.
214
- * Markdown: split on headings and bullet points.
215
- * Plain text: split on double newlines or one-per-line.
216
- */
188
+ /** Split a generic file into chunks: markdown on headings and bullets, plain text on double newlines or one per line. */
217
189
  function parseGenericFile(filePath) {
218
190
  const raw = fs.readFileSync(filePath, 'utf8');
219
191
  const isMarkdown = filePath.endsWith('.md') || filePath.endsWith('.mdx');
@@ -1,11 +1,5 @@
1
1
  import { type ImportResult, type ImportOptions } from './core.js';
2
- /**
3
- * Import a markdown vault FOLDER as `kind='raw'` memories.
4
- *
5
- * NOT re-entrant: idempotency rests on the in-memory `existing` Map loaded once
6
- * at the top. Two concurrent importVault runs over the same vault could both see
7
- * a note as absent and double-insert (the connector pattern relies on a single
8
- * sequential writer; same caveat applies here).
9
- */
2
+ /** Import a markdown vault FOLDER as `kind='raw'` memories.
3
+ * NOT re-entrant: idempotency rests on the in-memory `existing` Map loaded once, so two concurrent runs over one vault can double-insert. */
10
4
  export declare function importVault(folderPath: string, options: ImportOptions): ImportResult;
11
5
  //# sourceMappingURL=vault.d.ts.map