hippo-memory 1.69.0 → 1.70.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 (860) hide show
  1. package/README.md +5 -2
  2. package/dist/agent-memories/apply.d.ts +3 -3
  3. package/dist/agent-memories/apply.js +16 -31
  4. package/dist/agent-memories/claude-code.d.ts +1 -3
  5. package/dist/agent-memories/claude-code.js +11 -7
  6. package/dist/agent-memories/copilot.js +3 -2
  7. package/dist/agent-memories/files.js +3 -2
  8. package/dist/agent-memories/gemini.js +6 -5
  9. package/dist/agent-memories/keys.js +3 -2
  10. package/dist/agent-memories/legacy.d.ts +2 -2
  11. package/dist/agent-memories/legacy.js +2 -2
  12. package/dist/agent-memories/report.d.ts +1 -1
  13. package/dist/agent-memories/report.js +1 -1
  14. package/dist/agent-memories/source.d.ts +1 -1
  15. package/dist/agent-memories/source.js +6 -5
  16. package/dist/agent-memories/sync.d.ts +1 -1
  17. package/dist/agent-memories/sync.js +24 -33
  18. package/dist/agent-memories/types.d.ts +1 -1
  19. package/dist/api/assemble.d.ts +2 -2
  20. package/dist/api/assemble.js +42 -32
  21. package/dist/api/audit.d.ts +4 -7
  22. package/dist/api/audit.js +6 -20
  23. package/dist/api/auth.d.ts +5 -18
  24. package/dist/api/auth.js +44 -194
  25. package/dist/api/auto-sleep.d.ts +13 -0
  26. package/dist/api/auto-sleep.js +32 -0
  27. package/dist/{availability.d.ts → api/availability.d.ts} +2 -2
  28. package/dist/{availability.js → api/availability.js} +12 -29
  29. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  30. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  31. package/dist/{context-render.js → api/context-render.js} +7 -6
  32. package/dist/api/context-select.d.ts +5 -5
  33. package/dist/api/context-select.js +37 -45
  34. package/dist/api/context-types.d.ts +5 -5
  35. package/dist/api/context.d.ts +2 -4
  36. package/dist/api/context.js +48 -61
  37. package/dist/api/dormant.d.ts +3 -3
  38. package/dist/api/dormant.js +38 -107
  39. package/dist/api/drill-down.d.ts +2 -2
  40. package/dist/api/drill-down.js +37 -65
  41. package/dist/api/forget.d.ts +2 -11
  42. package/dist/api/forget.js +13 -46
  43. package/dist/api/goals.d.ts +1 -1
  44. package/dist/api/goals.js +2 -2
  45. package/dist/api/index.d.ts +26 -0
  46. package/dist/api/index.js +29 -0
  47. package/dist/api/instruction-detect.js +74 -0
  48. package/dist/api/learn.js +63 -55
  49. package/dist/api/ledger-db.d.ts +20 -0
  50. package/dist/api/ledger-db.js +79 -0
  51. package/dist/api/on-store.d.ts +16 -0
  52. package/dist/api/on-store.js +36 -0
  53. package/dist/api/outcome.d.ts +5 -42
  54. package/dist/api/outcome.js +15 -80
  55. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  56. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  57. package/dist/api/promote.d.ts +4 -15
  58. package/dist/api/promote.js +29 -106
  59. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
  60. package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
  61. package/dist/api/quarantine.d.ts +5 -5
  62. package/dist/api/quarantine.js +30 -106
  63. package/dist/api/recall-core.d.ts +4 -0
  64. package/dist/api/recall-core.js +112 -0
  65. package/dist/{recall-history.js → api/recall-history.js} +30 -25
  66. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
  67. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
  68. package/dist/api/recall-record.d.ts +10 -13
  69. package/dist/api/recall-record.js +10 -30
  70. package/dist/api/recall-request.d.ts +2 -2
  71. package/dist/api/recall-request.js +3 -3
  72. package/dist/api/recall-types.d.ts +41 -16
  73. package/dist/api/recall.d.ts +1 -1
  74. package/dist/api/recall.js +39 -37
  75. package/dist/api/remember.d.ts +10 -12
  76. package/dist/api/remember.js +29 -45
  77. package/dist/api/session-owners.d.ts +4 -0
  78. package/dist/api/session-owners.js +17 -0
  79. package/dist/api/sleep-run.d.ts +7 -7
  80. package/dist/api/sleep-run.js +63 -75
  81. package/dist/api/sleep.d.ts +1 -1
  82. package/dist/api/tokens.d.ts +2 -2
  83. package/dist/api/tokens.js +9 -21
  84. package/dist/api/types.d.ts +2 -2
  85. package/dist/api/types.js +1 -1
  86. package/dist/capture/caller-session.d.ts +2 -2
  87. package/dist/capture/caller-session.js +8 -8
  88. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  89. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  90. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  91. package/dist/capture/command.d.ts +1 -1
  92. package/dist/capture/command.js +54 -41
  93. package/dist/capture/compact-resume-caller.d.ts +1 -1
  94. package/dist/capture/compact-resume-caller.js +7 -7
  95. package/dist/capture/compact.d.ts +4 -1
  96. package/dist/capture/compact.js +40 -22
  97. package/dist/capture/compaction-items-caller.d.ts +1 -1
  98. package/dist/capture/compaction-items-caller.js +7 -5
  99. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  100. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  101. package/dist/{compaction-record.js → capture/compaction-record.js} +48 -94
  102. package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
  103. package/dist/capture/copilot-transcript.js +1 -1
  104. package/dist/capture/extract.js +2 -2
  105. package/dist/capture/failure-caller.d.ts +2 -2
  106. package/dist/capture/failure-caller.js +6 -6
  107. package/dist/capture/failure-reading.d.ts +2 -5
  108. package/dist/capture/failure-reading.js +11 -12
  109. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  110. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  111. package/dist/capture/pre-compact-caller.d.ts +1 -1
  112. package/dist/capture/pre-compact-caller.js +2 -2
  113. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +1 -5
  114. package/dist/{session-digest.js → capture/session-digest.js} +17 -23
  115. package/dist/capture/session-end-caller.d.ts +2 -2
  116. package/dist/capture/session-end-caller.js +1 -1
  117. package/dist/capture/session-texts.d.ts +1 -1
  118. package/dist/capture/session-texts.js +5 -5
  119. package/dist/capture/session-worker.js +6 -4
  120. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  121. package/dist/capture/transcript.js +68 -74
  122. package/dist/capture/working-state.d.ts +0 -3
  123. package/dist/capture/working-state.js +7 -7
  124. package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
  125. package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
  126. package/dist/cli/audit.d.ts +2 -2
  127. package/dist/cli/audit.js +77 -72
  128. package/dist/cli/auth.d.ts +2 -1
  129. package/dist/cli/auth.js +18 -20
  130. package/dist/cli/briefs.d.ts +4 -3
  131. package/dist/cli/briefs.js +59 -181
  132. package/dist/cli/card.d.ts +2 -1
  133. package/dist/cli/card.js +25 -23
  134. package/dist/{client.d.ts → cli/client.d.ts} +1 -1
  135. package/dist/{client.js → cli/client.js} +1 -1
  136. package/dist/cli/compact-resume-payload.d.ts +8 -0
  137. package/dist/cli/compact-resume-payload.js +39 -0
  138. package/dist/cli/context.d.ts +2 -13
  139. package/dist/cli/context.js +41 -71
  140. package/dist/cli/continuity.d.ts +6 -5
  141. package/dist/cli/continuity.js +109 -99
  142. package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
  143. package/dist/cli/curate.d.ts +9 -9
  144. package/dist/cli/curate.js +177 -149
  145. package/dist/cli/dag.d.ts +4 -4
  146. package/dist/cli/dag.js +46 -34
  147. package/dist/cli/decisions.d.ts +4 -3
  148. package/dist/cli/decisions.js +108 -218
  149. package/dist/cli/eval.d.ts +1 -3
  150. package/dist/cli/eval.js +43 -31
  151. package/dist/cli/explain.d.ts +1 -1
  152. package/dist/cli/explain.js +35 -19
  153. package/dist/cli/flag-values.d.ts +25 -0
  154. package/dist/cli/flag-values.js +103 -0
  155. package/dist/cli/flags.d.ts +303 -0
  156. package/dist/cli/flags.js +169 -0
  157. package/dist/cli/goals.d.ts +2 -1
  158. package/dist/cli/goals.js +39 -34
  159. package/dist/cli/hook-runtime.d.ts +49 -0
  160. package/dist/cli/hook-runtime.js +155 -0
  161. package/dist/cli/init.d.ts +2 -1
  162. package/dist/cli/init.js +151 -118
  163. package/dist/cli/install-steps.d.ts +7 -0
  164. package/dist/cli/install-steps.js +110 -0
  165. package/dist/cli/last-sleep.d.ts +2 -1
  166. package/dist/cli/last-sleep.js +9 -7
  167. package/dist/cli/maintenance.d.ts +5 -4
  168. package/dist/cli/maintenance.js +31 -27
  169. package/dist/cli/object-verbs.d.ts +40 -0
  170. package/dist/cli/object-verbs.js +65 -0
  171. package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
  172. package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
  173. package/dist/cli/playbooks.d.ts +4 -3
  174. package/dist/cli/playbooks.js +77 -280
  175. package/dist/cli/print.d.ts +18 -0
  176. package/dist/cli/print.js +85 -0
  177. package/dist/cli/projects.d.ts +2 -3
  178. package/dist/cli/projects.js +56 -49
  179. package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
  180. package/dist/cli/quality-repair-once.js +4 -4
  181. package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
  182. package/dist/cli/recall.d.ts +2 -4
  183. package/dist/cli/recall.js +101 -150
  184. package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
  185. package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
  186. package/dist/cli/remember.d.ts +1 -3
  187. package/dist/cli/remember.js +124 -103
  188. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
  189. package/dist/{scheduler.js → cli/scheduler.js} +13 -7
  190. package/dist/cli/serve.d.ts +1 -1
  191. package/dist/cli/serve.js +34 -4
  192. package/dist/cli/session-hooks.d.ts +4 -4
  193. package/dist/cli/session-hooks.js +190 -184
  194. package/dist/cli/setup.d.ts +2 -1
  195. package/dist/cli/setup.js +41 -21
  196. package/dist/cli/shared.d.ts +5 -95
  197. package/dist/cli/shared.js +18 -369
  198. package/dist/cli/slack.d.ts +2 -1
  199. package/dist/cli/slack.js +31 -55
  200. package/dist/cli/sleep-render.d.ts +4 -0
  201. package/dist/cli/sleep-render.js +61 -0
  202. package/dist/cli/sleep.d.ts +2 -8
  203. package/dist/cli/sleep.js +20 -76
  204. package/dist/cli/status.d.ts +3 -3
  205. package/dist/cli/status.js +39 -41
  206. package/dist/{stdin.js → cli/stdin.js} +6 -6
  207. package/dist/cli/transfer.d.ts +4 -4
  208. package/dist/cli/transfer.js +68 -42
  209. package/dist/cli/usage.js +4 -2
  210. package/dist/cli.d.ts +289 -5
  211. package/dist/cli.js +184 -117
  212. package/dist/connectors/dlq.d.ts +44 -0
  213. package/dist/connectors/dlq.js +30 -0
  214. package/dist/connectors/github/backfill.d.ts +1 -1
  215. package/dist/connectors/github/backfill.js +29 -66
  216. package/dist/connectors/github/cli-impl.js +59 -74
  217. package/dist/connectors/github/deletion.d.ts +5 -6
  218. package/dist/connectors/github/deletion.js +18 -52
  219. package/dist/connectors/github/dlq.d.ts +7 -61
  220. package/dist/connectors/github/dlq.js +19 -119
  221. package/dist/connectors/github/ingest.d.ts +2 -31
  222. package/dist/connectors/github/ingest.js +20 -83
  223. package/dist/connectors/github/octokit-client.d.ts +1 -1
  224. package/dist/connectors/github/octokit-client.js +2 -1
  225. package/dist/connectors/github/tenant-routing.d.ts +2 -2
  226. package/dist/connectors/github/tenant-routing.js +10 -36
  227. package/dist/connectors/github/transform.d.ts +1 -1
  228. package/dist/connectors/github/types.d.ts +1 -1
  229. package/dist/connectors/github/types.js +15 -18
  230. package/dist/connectors/github/webhook.d.ts +3 -2
  231. package/dist/connectors/github/webhook.js +84 -87
  232. package/dist/connectors/slack/backfill.d.ts +1 -1
  233. package/dist/connectors/slack/backfill.js +5 -29
  234. package/dist/connectors/slack/deletion.d.ts +4 -7
  235. package/dist/connectors/slack/deletion.js +20 -49
  236. package/dist/connectors/slack/dlq.d.ts +7 -49
  237. package/dist/connectors/slack/dlq.js +25 -118
  238. package/dist/connectors/slack/ingest.d.ts +5 -18
  239. package/dist/connectors/slack/ingest.js +27 -91
  240. package/dist/connectors/slack/signature.js +2 -1
  241. package/dist/connectors/slack/tenant-routing.d.ts +4 -1
  242. package/dist/connectors/slack/tenant-routing.js +13 -14
  243. package/dist/connectors/slack/transform.d.ts +1 -1
  244. package/dist/connectors/slack/types.d.ts +1 -1
  245. package/dist/connectors/slack/types.js +3 -12
  246. package/dist/connectors/slack/web-client.js +2 -2
  247. package/dist/connectors/slack/webhook.d.ts +3 -2
  248. package/dist/connectors/slack/webhook.js +75 -82
  249. package/dist/connectors/slack/workspaces.d.ts +4 -17
  250. package/dist/connectors/slack/workspaces.js +4 -34
  251. package/dist/consolidate/conflicts.d.ts +1 -1
  252. package/dist/consolidate/conflicts.js +4 -4
  253. package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
  254. package/dist/{dag.js → consolidate/dag.js} +60 -81
  255. package/dist/consolidate/decay.d.ts +2 -2
  256. package/dist/consolidate/decay.js +28 -22
  257. package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
  258. package/dist/consolidate/flush-units.d.ts +2 -2
  259. package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
  260. package/dist/consolidate/half-life-migration.js +106 -0
  261. package/dist/consolidate/llm-passes.js +8 -8
  262. package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
  263. package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
  264. package/dist/consolidate/merge.js +57 -54
  265. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  266. package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
  267. package/dist/consolidate/physics-pass.js +46 -46
  268. package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
  269. package/dist/{replay.js → consolidate/replay.js} +2 -2
  270. package/dist/consolidate/run.d.ts +7 -13
  271. package/dist/consolidate/run.js +6 -37
  272. package/dist/consolidate/sleep.d.ts +1 -1
  273. package/dist/consolidate/sleep.js +64 -134
  274. package/dist/{trace.js → consolidate/trace.js} +4 -6
  275. package/dist/consolidate/traces.js +34 -29
  276. package/dist/{ablation.js → core/ablation.js} +1 -1
  277. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  278. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  279. package/dist/{ambient.js → core/ambient.js} +12 -10
  280. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +13 -2
  281. package/dist/{capture-contract.js → core/capture-contract.js} +64 -0
  282. package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
  283. package/dist/{compare.js → core/compare.js} +10 -3
  284. package/dist/{config.d.ts → core/config.d.ts} +6 -6
  285. package/dist/{config.js → core/config.js} +99 -72
  286. package/dist/core/handoff.js +87 -0
  287. package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
  288. package/dist/{memory.d.ts → core/memory.d.ts} +17 -5
  289. package/dist/{memory.js → core/memory.js} +110 -82
  290. package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
  291. package/dist/{physics.js → core/physics.js} +2 -1
  292. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
  293. package/dist/{project-identity.js → core/project-identity.js} +5 -17
  294. package/dist/{project-remote.js → core/project-remote.js} +4 -4
  295. package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
  296. package/dist/{salience.js → core/salience.js} +35 -20
  297. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  298. package/dist/{search/types.js → core/search-types.js} +1 -1
  299. package/dist/core/session-digest-row.d.ts +5 -0
  300. package/dist/core/session-digest-row.js +6 -0
  301. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  302. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +5 -5
  303. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  304. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  305. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +9 -9
  306. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
  307. package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
  308. package/dist/db/backup.js +1 -1
  309. package/dist/db/busy.d.ts +18 -1
  310. package/dist/db/busy.js +74 -9
  311. package/dist/db/connect.d.ts +10 -2
  312. package/dist/db/connect.js +43 -10
  313. package/dist/db/index.d.ts +9 -0
  314. package/dist/db/index.js +8 -0
  315. package/dist/db/meta.d.ts +4 -0
  316. package/dist/db/meta.js +11 -1
  317. package/dist/db/migrate.d.ts +8 -1
  318. package/dist/db/migrate.js +25 -30
  319. package/dist/db/migrations/v08.js +1 -1
  320. package/dist/db/migrations/v14.js +39 -35
  321. package/dist/db/migrations/v16.js +29 -26
  322. package/dist/db/migrations/v18.js +6 -5
  323. package/dist/db/migrations/v20.js +4 -2
  324. package/dist/db/migrations/v22.js +39 -36
  325. package/dist/db/migrations/v24.js +27 -22
  326. package/dist/db/migrations/v29.js +37 -32
  327. package/dist/db/migrations/v31.js +36 -31
  328. package/dist/db/migrations/v35.js +1 -1
  329. package/dist/db/migrations/v39.js +1 -1
  330. package/dist/db/migrations/v40.js +15 -14
  331. package/dist/db/migrations/v43.js +7 -6
  332. package/dist/db/migrations/v44.js +1 -1
  333. package/dist/db/migrations/v45.js +1 -1
  334. package/dist/db/migrations/v46.js +1 -1
  335. package/dist/db/migrations/v47.js +1 -1
  336. package/dist/db/migrations/v48.js +1 -1
  337. package/dist/db/migrations/v49.js +1 -1
  338. package/dist/db/migrations/v50.js +8 -7
  339. package/dist/db/migrations/v52.js +1 -1
  340. package/dist/db/open.d.ts +9 -1
  341. package/dist/db/open.js +21 -4
  342. package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
  343. package/dist/{physics-state.js → db/physics-state.js} +9 -16
  344. package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
  345. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
  346. package/dist/db/request-stores.d.ts +15 -2
  347. package/dist/db/request-stores.js +37 -15
  348. package/dist/db/tables.d.ts +2 -0
  349. package/dist/db/tables.js +6 -0
  350. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +4 -2
  351. package/dist/{vector-store.js → db/vector-store.js} +76 -51
  352. package/dist/db/wal-checkpointer.d.ts +11 -0
  353. package/dist/db/wal-checkpointer.js +92 -0
  354. package/dist/doctor.js +105 -136
  355. package/dist/entry/json-hooks.d.ts +1 -1
  356. package/dist/entry/json-hooks.js +1 -1
  357. package/dist/entry/project-identity.d.ts +1 -1
  358. package/dist/entry/project-identity.js +1 -1
  359. package/dist/entry/session-text.d.ts +3 -3
  360. package/dist/entry/session-text.js +3 -3
  361. package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
  362. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
  363. package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
  364. package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
  365. package/dist/{eval.js → eval/eval.js} +29 -22
  366. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
  367. package/dist/{judgment.js → eval/judgment.js} +4 -9
  368. package/dist/extensions/openclaw-plugin/index.js +1 -2
  369. package/dist/graph/delta.d.ts +3 -2
  370. package/dist/graph/delta.js +9 -23
  371. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +6 -6
  372. package/dist/{graph-extract.js → graph/extract.js} +37 -52
  373. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
  374. package/dist/{graph-recall.js → graph/recall.js} +55 -36
  375. package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
  376. package/dist/{graph-stream.js → graph/stream.js} +9 -7
  377. package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
  378. package/dist/{graph-view.js → graph/view.js} +127 -167
  379. package/dist/graph/write.d.ts +4 -76
  380. package/dist/graph/write.js +13 -397
  381. package/dist/hooks/codex-session.js +1 -1
  382. package/dist/hooks/codex-wrapper.js +14 -15
  383. package/dist/hooks/copilot.d.ts +1 -8
  384. package/dist/hooks/copilot.js +14 -15
  385. package/dist/{cli → hooks}/hook-blocks.js +1 -1
  386. package/dist/hooks/json-hooks.d.ts +1 -1
  387. package/dist/hooks/json-hooks.js +31 -122
  388. package/dist/hooks/opencode.js +35 -27
  389. package/dist/hooks/shared.d.ts +0 -4
  390. package/dist/hooks/shared.js +1 -5
  391. package/dist/importers/core.d.ts +2 -6
  392. package/dist/importers/core.js +41 -39
  393. package/dist/importers/markdown-parse.d.ts +1 -10
  394. package/dist/importers/markdown-parse.js +2 -19
  395. package/dist/importers/markdown.js +2 -1
  396. package/dist/importers/sources.js +50 -46
  397. package/dist/importers/vault.js +71 -92
  398. package/dist/index.d.ts +22 -22
  399. package/dist/index.js +21 -21
  400. package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
  401. package/dist/{autolearn.js → learn/autolearn.js} +13 -11
  402. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  403. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  404. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  405. package/dist/learn/extract.js +125 -0
  406. package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
  407. package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
  408. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
  409. package/dist/{invalidation.js → learn/invalidation.js} +83 -99
  410. package/dist/mcp/admin-tools.d.ts +1 -1
  411. package/dist/mcp/admin-tools.js +37 -60
  412. package/dist/mcp/format.d.ts +5 -5
  413. package/dist/mcp/format.js +7 -6
  414. package/dist/mcp/framing.d.ts +6 -0
  415. package/dist/mcp/framing.js +11 -3
  416. package/dist/mcp/memory-tools.js +7 -27
  417. package/dist/mcp/protocol.d.ts +6 -10
  418. package/dist/mcp/protocol.js +8 -14
  419. package/dist/mcp/recall-tools.d.ts +2 -2
  420. package/dist/mcp/recall-tools.js +68 -50
  421. package/dist/mcp/request.js +62 -60
  422. package/dist/mcp/server.js +1 -1
  423. package/dist/mcp/session-state.d.ts +1 -2
  424. package/dist/mcp/session-state.js +2 -2
  425. package/dist/mcp/shared-gate.js +1 -1
  426. package/dist/mcp/stdio.js +69 -31
  427. package/dist/mcp/tool-args.js +2 -1
  428. package/dist/mcp/tools.js +2 -2
  429. package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
  430. package/dist/objects/customer-notes.js +112 -0
  431. package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
  432. package/dist/objects/decisions.js +101 -0
  433. package/dist/objects/descriptor.d.ts +52 -0
  434. package/dist/objects/descriptor.js +4 -0
  435. package/dist/objects/fields.d.ts +15 -0
  436. package/dist/objects/fields.js +21 -0
  437. package/dist/{incidents.d.ts → objects/incidents.d.ts} +17 -44
  438. package/dist/objects/incidents.js +130 -0
  439. package/dist/objects/lifecycle.d.ts +27 -0
  440. package/dist/objects/lifecycle.js +96 -0
  441. package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
  442. package/dist/objects/policies.js +189 -0
  443. package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
  444. package/dist/objects/processes.js +146 -0
  445. package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
  446. package/dist/objects/project-briefs.js +255 -0
  447. package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
  448. package/dist/objects/skills.js +156 -0
  449. package/dist/postinstall.js +4 -2
  450. package/dist/predictions/planning-fallacy.d.ts +4 -76
  451. package/dist/predictions/planning-fallacy.js +4 -129
  452. package/dist/rerankers/clef.d.ts +2 -6
  453. package/dist/rerankers/clef.js +27 -47
  454. package/dist/rerankers/cross-encoder.d.ts +0 -7
  455. package/dist/rerankers/cross-encoder.js +15 -23
  456. package/dist/rerankers/index.js +8 -7
  457. package/dist/rerankers/jev.d.ts +1 -4
  458. package/dist/rerankers/jev.js +30 -49
  459. package/dist/rerankers/llm.d.ts +2 -4
  460. package/dist/rerankers/llm.js +33 -50
  461. package/dist/rerankers/outage-warning.d.ts +7 -0
  462. package/dist/rerankers/outage-warning.js +31 -0
  463. package/dist/rerankers/remote.d.ts +3 -0
  464. package/dist/rerankers/remote.js +23 -0
  465. package/dist/rerankers/types.d.ts +1 -1
  466. package/dist/search/as-of.d.ts +1 -1
  467. package/dist/search/bm25-search.d.ts +2 -2
  468. package/dist/search/bm25-search.js +7 -7
  469. package/dist/search/bm25.d.ts +1 -1
  470. package/dist/search/bm25.js +1 -1
  471. package/dist/search/boosts.d.ts +5 -1
  472. package/dist/search/boosts.js +34 -13
  473. package/dist/search/breakdown.d.ts +2 -2
  474. package/dist/search/breakdown.js +2 -1
  475. package/dist/search/explain.d.ts +1 -1
  476. package/dist/search/explain.js +3 -2
  477. package/dist/search/finalize.d.ts +2 -2
  478. package/dist/search/finalize.js +4 -3
  479. package/dist/search/fusion.d.ts +1 -1
  480. package/dist/search/fusion.js +3 -3
  481. package/dist/search/hybrid-score.d.ts +2 -2
  482. package/dist/search/hybrid-score.js +1 -1
  483. package/dist/search/hybrid.d.ts +4 -4
  484. package/dist/search/hybrid.js +11 -8
  485. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  486. package/dist/{multihop.js → search/multihop.js} +7 -5
  487. package/dist/{path-context.js → search/path-context.js} +3 -1
  488. package/dist/search/physics-search.d.ts +4 -4
  489. package/dist/search/physics-search.js +15 -15
  490. package/dist/search/rerank.d.ts +3 -3
  491. package/dist/search/rerank.js +4 -3
  492. package/dist/search/temporal.d.ts +1 -1
  493. package/dist/search/temporal.js +5 -2
  494. package/dist/search/vector.d.ts +3 -3
  495. package/dist/search/vector.js +17 -11
  496. package/dist/server/auth.d.ts +1 -1
  497. package/dist/server/auth.js +26 -18
  498. package/dist/server/boot.d.ts +24 -0
  499. package/dist/server/boot.js +465 -0
  500. package/dist/server/client-ip.d.ts +5 -1
  501. package/dist/server/client-ip.js +18 -6
  502. package/dist/server/cursor.d.ts +1 -1
  503. package/dist/server/cursor.js +2 -3
  504. package/dist/server/deadline.d.ts +13 -0
  505. package/dist/server/deadline.js +45 -0
  506. package/dist/server/key-check-bounds.d.ts +8 -0
  507. package/dist/server/key-check-bounds.js +46 -0
  508. package/dist/server/lifecycle.js +1 -1
  509. package/dist/server/mcp-http.d.ts +1 -4
  510. package/dist/server/mcp-http.js +34 -24
  511. package/dist/server/ready.d.ts +7 -0
  512. package/dist/server/ready.js +38 -0
  513. package/dist/server/request.d.ts +10 -4
  514. package/dist/server/request.js +63 -12
  515. package/dist/server/route-table.d.ts +15 -0
  516. package/dist/server/route-table.js +209 -0
  517. package/dist/server/routes/admin.js +13 -8
  518. package/dist/server/routes/customer-notes.d.ts +5 -5
  519. package/dist/server/routes/customer-notes.js +32 -97
  520. package/dist/server/routes/decisions.d.ts +5 -5
  521. package/dist/server/routes/decisions.js +42 -105
  522. package/dist/server/routes/incidents.d.ts +5 -5
  523. package/dist/server/routes/incidents.js +42 -95
  524. package/dist/server/routes/memories.js +12 -14
  525. package/dist/server/routes/object-routes.d.ts +40 -0
  526. package/dist/server/routes/object-routes.js +80 -0
  527. package/dist/server/routes/policies.d.ts +6 -6
  528. package/dist/server/routes/policies.js +40 -124
  529. package/dist/server/routes/predictions.js +29 -45
  530. package/dist/server/routes/processes.d.ts +5 -5
  531. package/dist/server/routes/processes.js +38 -118
  532. package/dist/server/routes/project-briefs.d.ts +6 -6
  533. package/dist/server/routes/project-briefs.js +38 -110
  534. package/dist/server/routes/recall.js +14 -12
  535. package/dist/server/routes/skills.d.ts +6 -6
  536. package/dist/server/routes/skills.js +37 -125
  537. package/dist/{server-detect.js → server/server-detect.js} +1 -1
  538. package/dist/server/sleep-child.d.ts +2 -0
  539. package/dist/server/sleep-child.js +19 -0
  540. package/dist/server/sleep-offload.d.ts +20 -0
  541. package/dist/server/sleep-offload.js +70 -0
  542. package/dist/server/tls.d.ts +6 -0
  543. package/dist/server/tls.js +24 -0
  544. package/dist/server/types.d.ts +27 -8
  545. package/dist/server/validation.d.ts +3 -4
  546. package/dist/server/validation.js +6 -11
  547. package/dist/server.d.ts +39 -61
  548. package/dist/server.js +24 -568
  549. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
  550. package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
  551. package/dist/{scope.js → sharing/scope.js} +1 -1
  552. package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
  553. package/dist/{shared.js → sharing/shared.js} +100 -77
  554. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  555. package/dist/{ambient-store.js → store/ambient.js} +10 -10
  556. package/dist/store/audit-event.d.ts +11 -5
  557. package/dist/store/audit-event.js +5 -4
  558. package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
  559. package/dist/{audit.js → store/audit.js} +91 -6
  560. package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
  561. package/dist/{auth.js → store/auth.js} +100 -92
  562. package/dist/store/candidates.d.ts +23 -12
  563. package/dist/store/candidates.js +87 -35
  564. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
  565. package/dist/{card-detail.js → store/card-detail.js} +1 -1
  566. package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
  567. package/dist/{store-cards.js → store/cards.js} +85 -146
  568. package/dist/store/compactions.d.ts +78 -0
  569. package/dist/store/compactions.js +93 -0
  570. package/dist/store/conflicts.d.ts +22 -5
  571. package/dist/store/conflicts.js +160 -109
  572. package/dist/store/connectors/github.d.ts +84 -0
  573. package/dist/store/connectors/github.js +180 -0
  574. package/dist/store/connectors/slack.d.ts +69 -0
  575. package/dist/store/connectors/slack.js +177 -0
  576. package/dist/store/dashboard-reads.d.ts +27 -0
  577. package/dist/store/dashboard-reads.js +92 -0
  578. package/dist/store/delete-and-batch.d.ts +20 -24
  579. package/dist/store/delete-and-batch.js +64 -40
  580. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
  581. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
  582. package/dist/store/descendant-page.d.ts +12 -0
  583. package/dist/store/descendant-page.js +99 -0
  584. package/dist/store/diagnostics.d.ts +47 -0
  585. package/dist/store/diagnostics.js +51 -0
  586. package/dist/store/doctor-reads.d.ts +16 -0
  587. package/dist/store/doctor-reads.js +19 -0
  588. package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
  589. package/dist/{dormant.js → store/dormant.js} +151 -6
  590. package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
  591. package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
  592. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  593. package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
  594. package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
  595. package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
  596. package/dist/store/entry-reads.d.ts +46 -7
  597. package/dist/store/entry-reads.js +120 -21
  598. package/dist/store/entry-row.d.ts +8 -2
  599. package/dist/store/entry-row.js +28 -8
  600. package/dist/store/entry-writes.d.ts +33 -4
  601. package/dist/store/entry-writes.js +108 -26
  602. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  603. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  604. package/dist/{goals.d.ts → store/goals.d.ts} +6 -46
  605. package/dist/{goals.js → store/goals.js} +45 -94
  606. package/dist/store/graph-queue.d.ts +29 -0
  607. package/dist/store/graph-queue.js +101 -0
  608. package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
  609. package/dist/{graph/read.js → store/graph-reads.js} +63 -115
  610. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
  611. package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
  612. package/dist/store/graph-view-rows.d.ts +12 -0
  613. package/dist/store/graph-view-rows.js +67 -0
  614. package/dist/store/graph-writes.d.ts +58 -0
  615. package/dist/store/graph-writes.js +256 -0
  616. package/dist/store/half-life.d.ts +34 -0
  617. package/dist/store/half-life.js +77 -0
  618. package/dist/store/handoffs.d.ts +1 -1
  619. package/dist/store/handoffs.js +39 -30
  620. package/dist/store/index-and-stats.d.ts +8 -1
  621. package/dist/store/index-and-stats.js +51 -48
  622. package/dist/store/index.d.ts +4 -0
  623. package/dist/store/index.js +3 -0
  624. package/dist/store/key-audit.d.ts +2 -2
  625. package/dist/store/key-audit.js +4 -4
  626. package/dist/store/key-writes.d.ts +12 -5
  627. package/dist/store/key-writes.js +30 -4
  628. package/dist/store/ledger-turn.d.ts +17 -0
  629. package/dist/store/ledger-turn.js +27 -0
  630. package/dist/store/markdown.d.ts +1 -1
  631. package/dist/store/markdown.js +4 -3
  632. package/dist/store/mirrors.d.ts +5 -7
  633. package/dist/store/mirrors.js +39 -25
  634. package/dist/store/object-types.d.ts +189 -0
  635. package/dist/store/object-types.js +4 -0
  636. package/dist/store/open.d.ts +6 -4
  637. package/dist/store/open.js +24 -23
  638. package/dist/store/planning-fallacy-evidence.d.ts +42 -0
  639. package/dist/store/planning-fallacy-evidence.js +81 -0
  640. package/dist/store/port.d.ts +646 -0
  641. package/dist/store/port.js +17 -0
  642. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
  643. package/dist/{predictions/store.js → store/predictions.js} +52 -67
  644. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  645. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  646. package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +3 -1
  647. package/dist/{raw-archive.js → store/raw-archive.js} +6 -2
  648. package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +2 -2
  649. package/dist/{recall-scope.js → store/recall-scope.js} +3 -3
  650. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
  651. package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
  652. package/dist/store/rejected-values.d.ts +55 -0
  653. package/dist/store/rejected-values.js +162 -0
  654. package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
  655. package/dist/{rejection.js → store/rejection.js} +3 -2
  656. package/dist/store/rows.d.ts +2 -3
  657. package/dist/store/rows.js +18 -11
  658. package/dist/store/search-rows.d.ts +15 -4
  659. package/dist/store/search-rows.js +41 -28
  660. package/dist/store/sessions.d.ts +13 -2
  661. package/dist/store/sessions.js +79 -45
  662. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  663. package/dist/store/sqlite/commit-watch.js +29 -0
  664. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  665. package/dist/store/sqlite/connector-events-group.js +50 -0
  666. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  667. package/dist/store/sqlite/connector-writes-group.js +65 -0
  668. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  669. package/dist/store/sqlite/dag-reads-group.js +45 -0
  670. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  671. package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
  672. package/dist/store/sqlite/error-codec.d.ts +17 -0
  673. package/dist/store/sqlite/error-codec.js +59 -0
  674. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  675. package/dist/store/sqlite/executor-counts.js +11 -0
  676. package/dist/store/sqlite/executor.d.ts +28 -0
  677. package/dist/store/sqlite/executor.js +286 -0
  678. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  679. package/dist/store/sqlite/graph-reads-group.js +18 -0
  680. package/dist/store/sqlite/local.d.ts +21 -0
  681. package/dist/store/sqlite/local.js +38 -0
  682. package/dist/store/sqlite/object-rows.d.ts +102 -0
  683. package/dist/store/sqlite/object-rows.js +218 -0
  684. package/dist/store/sqlite/objects-group.d.ts +20 -0
  685. package/dist/store/sqlite/objects-group.js +314 -0
  686. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  687. package/dist/store/sqlite/predictions-group.js +28 -0
  688. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  689. package/dist/store/sqlite/quarantine-group.js +38 -0
  690. package/dist/store/sqlite/store.d.ts +26 -0
  691. package/dist/store/sqlite/store.js +295 -0
  692. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  693. package/dist/store/sqlite/vector-pack.js +46 -0
  694. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  695. package/dist/store/sqlite/vector-reads-group.js +23 -0
  696. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  697. package/dist/store/sqlite/worker-entry.js +8 -0
  698. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  699. package/dist/store/sqlite/worker-jobs.js +116 -0
  700. package/dist/store/sqlite/worker-ops.d.ts +124 -0
  701. package/dist/store/sqlite/worker-ops.js +82 -0
  702. package/dist/store/sqlite/worker-store.d.ts +8 -0
  703. package/dist/store/sqlite/worker-store.js +76 -0
  704. package/dist/store/summaries.d.ts +2 -11
  705. package/dist/store/summaries.js +17 -44
  706. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  707. package/dist/store/tenant-lookup.d.ts +1 -1
  708. package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
  709. package/dist/{tenant.js → store/tenant.js} +1 -1
  710. package/dist/store/token-ledger-rows.d.ts +61 -0
  711. package/dist/store/token-ledger-rows.js +68 -0
  712. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +2 -9
  713. package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
  714. package/dist/store/tombstone-checks.d.ts +12 -0
  715. package/dist/store/tombstone-checks.js +31 -0
  716. package/dist/store/usage-reports.d.ts +7 -0
  717. package/dist/store/usage-reports.js +26 -0
  718. package/dist/store/vector-writes.d.ts +10 -3
  719. package/dist/store/vector-writes.js +35 -5
  720. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
  721. package/dist/{working-memory.js → store/working-memory.js} +39 -41
  722. package/dist/support-bundle.d.ts +1 -1
  723. package/dist/support-bundle.js +13 -33
  724. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  725. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  726. package/dist/trust/quarantine.d.ts +4 -0
  727. package/dist/trust/quarantine.js +8 -0
  728. package/dist/trust/reject-flow.d.ts +23 -0
  729. package/dist/trust/reject-flow.js +67 -0
  730. package/dist/util/anthropic-messages.d.ts +31 -0
  731. package/dist/util/anthropic-messages.js +46 -0
  732. package/dist/util/atomic-write.d.ts +3 -0
  733. package/dist/util/atomic-write.js +107 -0
  734. package/dist/util/crash-handlers.d.ts +5 -0
  735. package/dist/util/crash-handlers.js +30 -0
  736. package/dist/{env.d.ts → util/env.d.ts} +15 -2
  737. package/dist/{env.js → util/env.js} +20 -2
  738. package/dist/util/home-path.js +67 -0
  739. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
  740. package/dist/{http-retry.js → util/http-retry.js} +38 -7
  741. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  742. package/dist/{http-util.js → util/http-util.js} +31 -11
  743. package/dist/util/json.d.ts +17 -0
  744. package/dist/util/json.js +25 -0
  745. package/dist/{log.d.ts → util/log.d.ts} +5 -2
  746. package/dist/{log.js → util/log.js} +12 -3
  747. package/dist/util/real-path.d.ts +3 -0
  748. package/dist/util/real-path.js +15 -0
  749. package/dist/util/request-scope.d.ts +27 -0
  750. package/dist/util/request-scope.js +47 -0
  751. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  752. package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
  753. package/dist/util/stored-json.d.ts +9 -0
  754. package/dist/util/stored-json.js +8 -0
  755. package/dist/util/time.d.ts +2 -0
  756. package/dist/util/time.js +3 -0
  757. package/dist/util/token-text.d.ts +18 -0
  758. package/dist/util/token-text.js +23 -0
  759. package/dist/{version.d.ts → util/version.d.ts} +1 -1
  760. package/dist/{version.js → util/version.js} +1 -1
  761. package/extensions/openclaw-plugin/index.ts +1 -5
  762. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  763. package/extensions/openclaw-plugin/package.json +1 -1
  764. package/openclaw.plugin.json +1 -1
  765. package/package.json +2 -2
  766. package/dist/api.d.ts +0 -26
  767. package/dist/api.js +0 -29
  768. package/dist/connectors/github/idempotency.d.ts +0 -19
  769. package/dist/connectors/github/idempotency.js +0 -27
  770. package/dist/connectors/slack/idempotency.d.ts +0 -17
  771. package/dist/connectors/slack/idempotency.js +0 -31
  772. package/dist/customer-notes.js +0 -336
  773. package/dist/db.d.ts +0 -9
  774. package/dist/db.js +0 -8
  775. package/dist/decisions.js +0 -326
  776. package/dist/extract.js +0 -133
  777. package/dist/graph/rows.d.ts +0 -45
  778. package/dist/graph/types.js +0 -11
  779. package/dist/half-life-migration.js +0 -182
  780. package/dist/handoff.js +0 -68
  781. package/dist/home-path.js +0 -24
  782. package/dist/incidents.js +0 -349
  783. package/dist/instruction-detect.js +0 -27
  784. package/dist/json.d.ts +0 -7
  785. package/dist/json.js +0 -11
  786. package/dist/ledger-db.d.ts +0 -10
  787. package/dist/ledger-db.js +0 -42
  788. package/dist/policies.js +0 -434
  789. package/dist/processes.js +0 -371
  790. package/dist/project-briefs.js +0 -523
  791. package/dist/reject-flow.d.ts +0 -69
  792. package/dist/reject-flow.js +0 -260
  793. package/dist/session-owners.d.ts +0 -7
  794. package/dist/session-owners.js +0 -54
  795. package/dist/skills.js +0 -367
  796. package/dist/store/entry-writes-group.d.ts +0 -9
  797. package/dist/store-port.d.ts +0 -262
  798. package/dist/store-port.js +0 -178
  799. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  800. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  801. /package/dist/{recall-history.d.ts → api/recall-history.d.ts} +0 -0
  802. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  803. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  804. /package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
  805. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  806. /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
  807. /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
  808. /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
  809. /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
  810. /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
  811. /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
  812. /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +0 -0
  813. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  814. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  815. /package/dist/{trace.d.ts → consolidate/trace.d.ts} +0 -0
  816. /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
  817. /package/dist/{ambient.d.ts → core/ambient.d.ts} +0 -0
  818. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  819. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  820. /package/dist/{card.d.ts → core/card.d.ts} +0 -0
  821. /package/dist/{card.js → core/card.js} +0 -0
  822. /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
  823. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  824. /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
  825. /package/dist/{physics-config.js → core/physics-config.js} +0 -0
  826. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  827. /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
  828. /package/dist/{salience.d.ts → core/salience.d.ts} +0 -0
  829. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  830. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  831. /package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +0 -0
  832. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  833. /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
  834. /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
  835. /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
  836. /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
  837. /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
  838. /package/dist/{rrf.js → search/rrf.js} +0 -0
  839. /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
  840. /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
  841. /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
  842. /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
  843. /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
  844. /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
  845. /package/dist/{yaml.js → store/yaml.js} +0 -0
  846. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  847. /package/dist/{escape.js → util/escape.js} +0 -0
  848. /package/dist/{home-path.d.ts → util/home-path.d.ts} +0 -0
  849. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  850. /package/dist/{keyset.js → util/keyset.js} +0 -0
  851. /package/dist/{same-text.js → util/same-text.js} +0 -0
  852. /package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +0 -0
  853. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  854. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  855. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  856. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  857. /package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
  858. /package/dist/{transcript-tail.js → util/transcript-tail.js} +0 -0
  859. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  860. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
@@ -1,10 +1,4 @@
1
- import * as api from '../api.js';
1
+ import { type CliFlags } from './flag-values.js';
2
2
  /** Runs `hippo sleep`; with `--log-file` it also tees its output to that file. */
3
- export declare function cmdSleep(hippoRoot: string, flags: Record<string, string | boolean | string[]>): Promise<void>;
4
- /**
5
- * Render an api.sleep result as console output, byte-identical to the
6
- * pre-extraction inline implementation in cmdSleepCore.
7
- */
8
- /** @internal — exported for snapshot tests (tests/cli-context-render-snapshot.test.ts). NOT a stable public API. */
9
- export declare function renderSleepResult(result: api.SleepResult): void;
3
+ export declare function cmdSleep(hippoRoot: string, flags: CliFlags): Promise<void>;
10
4
  //# sourceMappingURL=sleep.d.ts.map
package/dist/cli/sleep.js CHANGED
@@ -1,17 +1,19 @@
1
1
  // The `hippo sleep` verb; main() loads it lazily, since most invocations never sleep.
2
2
  import * as path from 'path';
3
3
  import * as fs from 'fs';
4
- import { loadConfig } from '../config.js';
5
- import { isGitRepo } from '../autolearn.js';
4
+ import { loadConfig } from '../core/config.js';
5
+ import { isGitRepo } from '../learn/autolearn.js';
6
6
  import { importForStore, currentMachine } from '../agent-memories/sync.js';
7
- import { replayCompactionsAt } from '../compaction-record.js';
8
- import * as api from '../api.js';
9
- import { resolveTenantId } from '../tenant.js';
10
- import { renderAmbientSummary } from '../ambient.js';
11
- import { errorMessage, log } from '../log.js';
12
- import { closeHippoDb, openHippoDb } from '../db.js';
13
- import { repairOnceOnSleep } from '../project-merge.js';
14
- import { requireInit, learnFromRepo, runChurnStaleForRepo, printAgentImport, skipLearnOnSharedStore } from './shared.js';
7
+ import { replayCompactionsAt } from '../capture/compaction-record.js';
8
+ import * as api from '../api/index.js';
9
+ import { resolveTenantId } from '../store/tenant.js';
10
+ import { sleepResultLines } from './sleep-render.js';
11
+ import { errorMessage, log } from '../util/log.js';
12
+ import { closeHippoDb, openHippoDb } from '../db/index.js';
13
+ import { repairOnceOnSleep } from '../sharing/project-merge.js';
14
+ import { boolFlag, stringFlag } from './flag-values.js';
15
+ import { requireInit, learnFromRepo, runChurnStaleForRepo, skipLearnOnSharedStore } from './shared.js';
16
+ import { printAgentImport } from './print.js';
15
17
  import { repairQualityOnceAt } from './quality-repair-once.js';
16
18
  import { printError } from './output.js';
17
19
  /** Runs `hippo sleep`; with `--log-file` it also tees its output to that file. */
@@ -19,7 +21,7 @@ export async function cmdSleep(hippoRoot, flags) {
19
21
  // Tee stdout/stderr to a log file when --log-file is set. The SessionEnd
20
22
  // hook uses this so the output is captured somewhere the SessionStart hook
21
23
  // can re-display it next time the agent UI starts.
22
- const logFile = typeof flags['log-file'] === 'string' ? flags['log-file'] : null;
24
+ const logFile = stringFlag(flags, 'log-file') ?? null;
23
25
  let restoreStdout = null;
24
26
  if (logFile) {
25
27
  try {
@@ -50,7 +52,7 @@ export async function cmdSleep(hippoRoot, flags) {
50
52
  };
51
53
  }
52
54
  catch (err) {
53
- log.warn(`could not open log file ${logFile}: ${err.message}`);
55
+ log.warn(`could not open log file ${logFile}: ${errorMessage(err)}`);
54
56
  }
55
57
  }
56
58
  try {
@@ -60,7 +62,7 @@ export async function cmdSleep(hippoRoot, flags) {
60
62
  }
61
63
  catch (err) {
62
64
  if (logFile)
63
- console.log(`[hippo] sleep failed: ${err.message}`);
65
+ console.log(`[hippo] sleep failed: ${errorMessage(err)}`);
64
66
  throw err;
65
67
  }
66
68
  finally {
@@ -68,67 +70,9 @@ export async function cmdSleep(hippoRoot, flags) {
68
70
  restoreStdout();
69
71
  }
70
72
  }
71
- /**
72
- * Render an api.sleep result as console output, byte-identical to the
73
- * pre-extraction inline implementation in cmdSleepCore.
74
- */
75
- /** @internal — exported for snapshot tests (tests/cli-context-render-snapshot.test.ts). NOT a stable public API. */
76
- export function renderSleepResult(result) {
77
- console.log(`Running consolidation${result.dryRun ? ' (dry run)' : ''}...`);
78
- console.log(`\nResults:`);
79
- console.log(` Active memories: ${result.active}`);
80
- console.log(` Removed (decayed): ${result.removed}`);
81
- // Only when dormant.enabled moved something, so every other render stays
82
- // byte-identical (tests/cli-context-render-snapshot.test.ts).
83
- if (result.dormant !== undefined && result.dormant > 0) {
84
- console.log(` Kept dormant: ${result.dormant} (hippo dormant to list)`);
85
- }
86
- if (result.dormantExpired !== undefined && result.dormantExpired > 0) {
87
- console.log(` Expired dormant: ${result.dormantExpired} (past dormant.retentionDays)`);
88
- }
89
- console.log(` Merged episodic: ${result.mergedEpisodic}`);
90
- console.log(` New semantic: ${result.newSemantic}`);
91
- if (result.details && result.details.length > 0) {
92
- console.log('\nDetails:');
93
- for (const d of result.details) {
94
- console.log(d);
95
- }
96
- }
97
- if (result.dryRun)
98
- console.log('\n(dry run - nothing written)');
99
- if (result.deduped && result.deduped.removed > 0) {
100
- const { removed, semDups, epiDups, crossDups } = result.deduped;
101
- const parts = [];
102
- if (semDups > 0)
103
- parts.push(`${semDups} redundant semantic patterns`);
104
- if (epiDups > 0)
105
- parts.push(`${epiDups} duplicate episodic lessons`);
106
- if (crossDups > 0)
107
- parts.push(`${crossDups} cross-layer duplicates`);
108
- console.log(`\n${result.dryRun ? 'Would dedupe' : 'Deduped'} ${removed} duplicates (${parts.join(', ')}). ${result.dryRun ? 'Would keep' : 'Kept'} stronger copies.`);
109
- }
110
- if (result.audit) {
111
- if (result.audit.errorsRemoved > 0) {
112
- console.log(`\nAudit: ${result.dryRun ? 'would remove' : 'removed'} ${result.audit.errorsRemoved} junk memories (too short/empty).`);
113
- }
114
- if (result.audit.warningCount > 0) {
115
- console.log(`Audit: ${result.audit.warningCount} low-quality memories detected (run \`hippo audit\` for details).`);
116
- }
117
- }
118
- if (result.shared !== undefined && result.shared > 0) {
119
- console.log(`\nAuto-shared ${result.shared} high-value memories to global store.`);
120
- }
121
- if (result.secretSkipped !== undefined && result.secretSkipped > 0) {
122
- // The secret veto is never silent.
123
- console.log(`\nAuto-share: withheld ${result.secretSkipped} secret-flagged ${result.secretSkipped === 1 ? 'memory' : 'memories'} (secret veto).`);
124
- }
125
- if (result.ambient) {
126
- console.log(`\n${renderAmbientSummary(result.ambient)}`);
127
- }
128
- if (result.graph && result.graph.tenants > 0) {
129
- const { tenants, entities, relations } = result.graph;
130
- console.log(`\nGraph: rebuilt ${tenants} tenant${tenants === 1 ? '' : 's'} (${entities} entities, ${relations} relations).`);
131
- }
73
+ function renderSleepResult(result) {
74
+ for (const line of sleepResultLines(result))
75
+ console.log(line);
132
76
  }
133
77
  /** Fault-isolated: a failed repair warns and runs again next sleep, and never stops the sleep. */
134
78
  function repairProjectTagsOnce(hippoRoot) {
@@ -194,8 +138,8 @@ async function cmdSleepCore(hippoRoot, flags) {
194
138
  actor: api.adminActor('cli'),
195
139
  };
196
140
  const result = await api.sleep(ctx, {
197
- dryRun: Boolean(flags['dry-run']),
198
- noShare: Boolean(flags['no-share']),
141
+ dryRun: boolFlag(flags, 'dry-run'),
142
+ noShare: boolFlag(flags, 'no-share'),
199
143
  });
200
144
  renderSleepResult(result);
201
145
  }
@@ -1,4 +1,4 @@
1
- import { type CommandContext } from './shared.js';
1
+ import { type CliFlags, type CommandContext } from './flag-values.js';
2
2
  export declare function cmdStatus(hippoRoot: string): void;
3
3
  /**
4
4
  * `hippo tokens [--days <n>] [--json] [--global]`: the token ledger.
@@ -7,9 +7,9 @@ export declare function cmdStatus(hippoRoot: string): void;
7
7
  * and the hook blocks' tokens later model calls re-read, counted when each session ends.
8
8
  * Counts are estimates (characters / 4), the same estimate every budget uses.
9
9
  */
10
- export declare function cmdTokens(hippoRoot: string, flags: Record<string, string | boolean | string[]>): void;
10
+ export declare function cmdTokens(hippoRoot: string, flags: CliFlags): void;
11
11
  /** `hippo failures [--days <n>] [--json] [--global]`: failed tool calls by outcome, and repeats across sessions. */
12
- export declare function cmdFailures(hippoRoot: string, flags: Record<string, string | boolean | string[]>): void;
12
+ export declare function cmdFailures(hippoRoot: string, flags: CliFlags): void;
13
13
  export declare function handleCorrectionLatency({ hippoRoot, flags }: CommandContext): void;
14
14
  export declare function handleProvenance({ hippoRoot, flags }: CommandContext): void;
15
15
  export declare function handleDoctor({ flags }: CommandContext): void;
@@ -1,31 +1,35 @@
1
1
  // Read-only report verbs: status, inspect, tokens, failures, provenance, correction latency, doctor and support bundle.
2
- import { envHomeDir } from '../env.js';
3
- import { evalNow } from '../ablation.js';
2
+ import { envHomeDir } from '../util/env.js';
3
+ import { evalNow } from '../core/ablation.js';
4
4
  import * as path from 'path';
5
5
  import * as fs from 'fs';
6
6
  import * as os from 'os';
7
7
  import { fileURLToPath } from 'node:url';
8
- import { calculateStrength, calculateRewardFactor, resolveConfidence, confidenceFacets, Layer } from '../memory.js';
8
+ import { calculateStrength, calculateRewardFactor, resolveConfidence, confidenceFacets, Layer } from '../core/memory.js';
9
9
  import { readEntry, loadAllEntries } from '../store/entry-reads.js';
10
10
  import { loadStats } from '../store/index-and-stats.js';
11
11
  import { listMemoryConflicts } from '../store/conflicts.js';
12
- import { loadEmbeddingIndex, embeddingModelRequiresReindex } from '../embeddings.js';
13
- import { resolveEmbeddingProvider } from '../embedding-provider.js';
14
- import { loadPhysicsState } from '../physics-state.js';
15
- import { computeSystemEnergy, vecNorm } from '../physics.js';
16
- import { loadConfig } from '../config.js';
17
- import { openHippoDb, closeHippoDb } from '../db.js';
12
+ import { loadEmbeddingIndex, embeddingModelRequiresReindex } from '../store/embeddings/index.js';
13
+ import { resolveEmbeddingProvider } from '../store/embeddings/provider.js';
14
+ import { loadStoredParticles } from '../store/vector-writes.js';
15
+ import { computeSystemEnergy, vecNorm } from '../core/physics.js';
16
+ import { loadConfig } from '../core/config.js';
18
17
  import { runDoctor, formatDoctor } from '../doctor.js';
19
18
  import { buildSupportBundle, TAIL_MAX_LINES } from '../support-bundle.js';
20
- import { PACKAGE_VERSION } from '../version.js';
21
- import { FAILURE_LOG_RETENTION_DAYS } from '../failure-log.js';
22
- import { getGlobalRoot } from '../shared.js';
23
- import { buildProvenanceCoverage } from '../provenance-coverage.js';
24
- import { buildCorrectionLatency } from '../correction-latency.js';
25
- import * as api from '../api.js';
26
- import { resolveTenantId } from '../tenant.js';
19
+ import { PACKAGE_VERSION } from '../util/version.js';
20
+ import { FAILURE_LOG_RETENTION_DAYS } from '../store/failure-log.js';
21
+ import { getGlobalRoot } from '../sharing/shared.js';
22
+ import { buildProvenanceCoverage } from './provenance-coverage.js';
23
+ import { buildCorrectionLatency } from './correction-latency.js';
24
+ import * as api from '../api/index.js';
25
+ import { resolveTenantId } from '../store/tenant.js';
26
+ import { errorMessage, log } from '../util/log.js';
27
27
  import { printError } from './output.js';
28
- import { parseCountFlag, requireInit, fmt, cardStringFlag, hookStoreRoot, resolveAuthRoot, } from './shared.js';
28
+ import { parseCountFlag, stringFlagOrExit, flagIsTrue } from './flag-values.js';
29
+ import { requireInit, resolveAuthRoot } from './shared.js';
30
+ import { fmt } from './print.js';
31
+ import { hookStoreRoot } from './hook-runtime.js';
32
+ import { DAY_MS } from '../util/time.js';
29
33
  export function cmdStatus(hippoRoot) {
30
34
  requireInit(hippoRoot);
31
35
  const entries = loadAllEntries(hippoRoot);
@@ -151,27 +155,21 @@ function printEmbeddingStatus(hippoRoot, entries) {
151
155
  // Physics status
152
156
  function printPhysicsStatus(hippoRoot) {
153
157
  try {
154
- const db = openHippoDb(hippoRoot);
155
- try {
156
- const physicsMap = loadPhysicsState(db);
157
- if (physicsMap.size > 0) {
158
- const particles = Array.from(physicsMap.values());
159
- const physConfig = loadConfig(hippoRoot);
160
- const energy = computeSystemEnergy(particles, physConfig.physics.G_memory);
161
- let sumVelMag = 0;
162
- for (const p of particles)
163
- sumVelMag += vecNorm(p.velocity);
164
- const avgVelMag = sumVelMag / particles.length;
165
- console.log('');
166
- console.log(`Physics: ${particles.length} particles, energy: ${fmt(energy.total, 4)} (KE: ${fmt(energy.kinetic, 4)}, PE: ${fmt(energy.potential, 4)}), avg vel: ${fmt(avgVelMag, 4)}`);
167
- }
168
- }
169
- finally {
170
- closeHippoDb(db);
158
+ const particles = loadStoredParticles(hippoRoot);
159
+ if (particles.length > 0) {
160
+ const physConfig = loadConfig(hippoRoot);
161
+ const energy = computeSystemEnergy(particles, physConfig.physics.G_memory);
162
+ let sumVelMag = 0;
163
+ for (const p of particles)
164
+ sumVelMag += vecNorm(p.velocity);
165
+ const avgVelMag = sumVelMag / particles.length;
166
+ console.log('');
167
+ console.log(`Physics: ${particles.length} particles, energy: ${fmt(energy.total, 4)} (KE: ${fmt(energy.kinetic, 4)}, PE: ${fmt(energy.potential, 4)}), avg vel: ${fmt(avgVelMag, 4)}`);
171
168
  }
172
169
  }
173
- catch {
174
- // Physics table may not exist yet — degrade gracefully
170
+ catch (err) {
171
+ // The physics table may not exist yet, so status prints without that line.
172
+ log.debug(`physics status skipped: ${errorMessage(err)}`);
175
173
  }
176
174
  }
177
175
  function cmdInspect(hippoRoot, id) {
@@ -185,8 +183,8 @@ function cmdInspect(hippoRoot, id) {
185
183
  const currentStrength = calculateStrength(entry, now);
186
184
  const lastRetrieved = new Date(entry.last_retrieved);
187
185
  const created = new Date(entry.created);
188
- const ageDays = (now.getTime() - created.getTime()) / (1000 * 60 * 60 * 24);
189
- const daysSince = (now.getTime() - lastRetrieved.getTime()) / (1000 * 60 * 60 * 24);
186
+ const ageDays = (now.getTime() - created.getTime()) / DAY_MS;
187
+ const daysSince = (now.getTime() - lastRetrieved.getTime()) / DAY_MS;
190
188
  const effectiveConfidence = resolveConfidence(entry, now);
191
189
  console.log(`Memory: ${entry.id}`);
192
190
  console.log('---------------------------');
@@ -363,12 +361,12 @@ export function handleDoctor({ flags }) {
363
361
  process.exit(1);
364
362
  }
365
363
  export function handleSupportBundle({ flags }) {
366
- const outFlag = cardStringFlag(flags, 'out');
364
+ const outFlag = stringFlagOrExit(flags, 'out');
367
365
  if (outFlag === '') {
368
366
  printError('--out requires a file path.');
369
367
  process.exit(1);
370
368
  }
371
- const includeLogs = flags['include-logs'] === true;
369
+ const includeLogs = flagIsTrue(flags, 'include-logs');
372
370
  const home = envHomeDir() || os.homedir();
373
371
  const now = new Date();
374
372
  const bundle = buildSupportBundle({ cwd: process.cwd(), home, version: PACKAGE_VERSION, includeLogs, now });
@@ -383,7 +381,7 @@ export function handleSupportBundle({ flags }) {
383
381
  printError(`${file} already exists; pass --out to choose another file. Nothing was written.`);
384
382
  }
385
383
  else {
386
- printError(err instanceof Error ? err.message : String(err));
384
+ printError(errorMessage(err));
387
385
  }
388
386
  process.exit(1);
389
387
  }
@@ -1,8 +1,8 @@
1
- import { envStdinWaitMs } from './env.js';
2
- import { isJsonObject } from './hooks/shared.js';
3
- import { isJsonString } from './json.js';
1
+ import { envStdinWaitMs } from '../util/env.js';
2
+ import { isJsonString, isJsonObjectLiteral } from '../util/json.js';
3
+ const DEFAULT_STDIN_WAIT_MS = 1000;
4
4
  function defaultWaitMs() {
5
- return envStdinWaitMs() ?? 1000;
5
+ return envStdinWaitMs() ?? DEFAULT_STDIN_WAIT_MS;
6
6
  }
7
7
  /** Never blocks: a TTY resolves at once, otherwise waits up to `waitMs` of
8
8
  * idle (default 1000ms, or `HIPPO_STDIN_WAIT_MS`), refreshed on each chunk
@@ -73,7 +73,7 @@ function snakeCaseFields(payload) {
73
73
  added.tool_input = parsedToolArgs(payload.toolArgs);
74
74
  const error = payload.error;
75
75
  // An error object gives its message, so readers that expect the documented string still get one.
76
- if (isJsonObject(error) && isJsonString(error.message))
76
+ if (isJsonObjectLiteral(error) && isJsonString(error.message))
77
77
  added.error = error.message;
78
78
  return added;
79
79
  }
@@ -91,7 +91,7 @@ export function normaliseHookPayload(text) {
91
91
  // Not JSON: each reader already treats that as a malformed payload, so it passes through untouched.
92
92
  return text;
93
93
  }
94
- if (!isJsonObject(payload))
94
+ if (!isJsonObjectLiteral(payload))
95
95
  return text;
96
96
  const added = snakeCaseFields(payload);
97
97
  return Object.keys(added).length === 0 ? text : JSON.stringify({ ...payload, ...added });
@@ -1,7 +1,7 @@
1
- import { type CommandContext } from './shared.js';
2
- export declare function cmdLearn(hippoRoot: string, flags: Record<string, string | boolean | string[]>): void;
3
- export declare function cmdImport(hippoRoot: string, args: string[], flags: Record<string, string | boolean | string[]>): void;
4
- export declare function cmdSync(hippoRoot: string, flags?: Record<string, string | boolean | string[]>): void;
1
+ import { type CliFlags, type CommandContext } from './flag-values.js';
2
+ export declare function cmdLearn(hippoRoot: string, flags: CliFlags): void;
3
+ export declare function cmdImport(hippoRoot: string, args: string[], flags: CliFlags): void;
4
+ export declare function cmdSync(hippoRoot: string, flags?: CliFlags): void;
5
5
  export declare function handleWatch({ hippoRoot, args }: CommandContext): Promise<void>;
6
6
  export declare function handlePromote({ hippoRoot, args }: CommandContext): Promise<void>;
7
7
  export declare function handleShare({ hippoRoot, args, flags }: CommandContext): void;
@@ -1,26 +1,33 @@
1
1
  // Verbs that move memories in and out: watch, learn, import, export, promote, sync, share and peers.
2
2
  import * as path from 'path';
3
3
  import * as fs from 'fs';
4
- import { calculateStrength, deriveHalfLife, computeSchemaFit } from '../memory.js';
4
+ import { calculateStrength, deriveHalfLife } from '../core/memory.js';
5
5
  import { isInitialized } from '../store/open.js';
6
6
  import { writeEntry } from '../store/entry-writes.js';
7
7
  import { readEntry, loadAllEntries } from '../store/entry-reads.js';
8
+ import { schemaFitInStore } from '../store/candidates.js';
8
9
  import { updateStats } from '../store/index-and-stats.js';
9
- import { RejectedValueError } from '../rejection.js';
10
- import { embedAll, embedMemory } from '../embeddings.js';
11
- import { loadConfig } from '../config.js';
12
- import { captureError, runWatched } from '../autolearn.js';
10
+ import { RejectedValueError } from '../store/rejection.js';
11
+ import { embedAll, embedMemory, loadEmbeddingIndex } from '../store/embeddings/index.js';
12
+ import { loadConfig } from '../core/config.js';
13
+ import { captureError, runWatched } from '../learn/autolearn.js';
13
14
  import { currentMachine, importAtSessionEnd, importForStore } from '../agent-memories/sync.js';
14
15
  import { detailLines } from '../agent-memories/report.js';
15
- import { getGlobalRoot, initGlobal, shareMemory, listPeers, autoShare, transferScore, syncGlobalToLocal, } from '../shared.js';
16
+ import { getGlobalRoot, initGlobal, shareMemory, listPeers, autoShare, transferScore, syncGlobalToLocal, } from '../sharing/shared.js';
16
17
  import { importChatGPT, importClaude, importCursor, importGenericFile, } from '../importers/sources.js';
17
18
  import { importMarkdown } from '../importers/markdown.js';
18
19
  import { importVault } from '../importers/vault.js';
19
- import * as api from '../api.js';
20
- import * as client from '../client.js';
21
- import { resolveTenantId } from '../tenant.js';
20
+ import * as api from '../api/index.js';
21
+ import * as client from './client.js';
22
+ import { resolveTenantId } from '../store/tenant.js';
22
23
  import { printError } from './output.js';
23
- import { requireInit, runViaServerIfAvailable, fmt, learnFromRepo } from './shared.js';
24
+ import { errorMessage, log } from '../util/log.js';
25
+ import { requireInit, runViaServerIfAvailable, learnFromRepo } from './shared.js';
26
+ import { fmt } from './print.js';
27
+ import { boolFlag, flagIsTrue, nonEmptyStringFlag } from './flag-values.js';
28
+ import { CONTENT_PREVIEW_CHARS, DATE_PREFIX_CHARS } from '../util/token-text.js';
29
+ const STDERR_PREVIEW_CHARS = 80;
30
+ const MAX_ENTRIES_SHOWN = 10;
24
31
  // ---------------------------------------------------------------------------
25
32
  // Watch command
26
33
  // ---------------------------------------------------------------------------
@@ -40,10 +47,7 @@ async function cmdWatch(command, hippoRoot) {
40
47
  process.exit(exitCode);
41
48
  }
42
49
  const entry = captureError(exitCode, stderr, command, resolveTenantId({}));
43
- // Compute schema fit against existing memories
44
- const existingWatch = loadAllEntries(hippoRoot, entry.tenantId);
45
- const watchFit = computeSchemaFit(entry.content, entry.tags, existingWatch);
46
- entry.schema_fit = watchFit;
50
+ entry.schema_fit = schemaFitInStore(hippoRoot, entry.tenantId, entry.content, entry.tags);
47
51
  entry.half_life_days = deriveHalfLife(loadConfig(hippoRoot).defaultHalfLifeDays, entry);
48
52
  entry.strength = calculateStrength(entry);
49
53
  // A rejection-guard refusal of a failed command's output must not crash the watcher:
@@ -52,7 +56,7 @@ async function cmdWatch(command, hippoRoot) {
52
56
  writeEntry(hippoRoot, entry);
53
57
  updateStats(hippoRoot, { remembered: 1 });
54
58
  void embedMemory(hippoRoot, entry);
55
- const preview = stderr.trim().slice(0, 80);
59
+ const preview = stderr.trim().slice(0, STDERR_PREVIEW_CHARS);
56
60
  printError(`\nHippo learned from failure: "${preview}"`);
57
61
  }
58
62
  catch (err) {
@@ -76,8 +80,8 @@ export function cmdLearn(hippoRoot, flags) {
76
80
  }
77
81
  const days = parseInt(String(flags['days'] ?? '7'), 10);
78
82
  console.log(`Scanning git log for the last ${days} days...`);
79
- const reposFlag = flags['repos'];
80
- if (reposFlag && typeof reposFlag === 'string') {
83
+ const reposFlag = nonEmptyStringFlag(flags, 'repos');
84
+ if (reposFlag) {
81
85
  const repos = reposFlag.split(',').map((r) => r.trim()).filter(Boolean);
82
86
  let totalAdded = 0;
83
87
  let totalSkipped = 0;
@@ -97,13 +101,25 @@ export function cmdLearn(hippoRoot, flags) {
97
101
  // ---------------------------------------------------------------------------
98
102
  // Import command
99
103
  // ---------------------------------------------------------------------------
104
+ /** The rows are saved either way; a failed backfill only delays vectors, so it warns with how many wait and the command that finishes them. */
105
+ function warnBackfillFailed(root, embedCommand, err) {
106
+ let waiting;
107
+ try {
108
+ const vectors = loadEmbeddingIndex(root);
109
+ waiting = String(loadAllEntries(root).filter((entry) => !Object.hasOwn(vectors, entry.id)).length);
110
+ }
111
+ catch (countErr) {
112
+ waiting = `an unknown number of (count failed: ${errorMessage(countErr)})`;
113
+ }
114
+ log.warn(`import: embedding backfill failed (${errorMessage(err)}); ${waiting} rows have no vector; run '${embedCommand}' to backfill`);
115
+ }
100
116
  function warnRedacted(count) {
101
117
  if (count)
102
118
  printError(`Warning: secret-shaped text was redacted from ${count} imported ${count === 1 ? 'entry' : 'entries'} before storing`);
103
119
  }
104
120
  export function cmdImport(hippoRoot, args, flags) {
105
- const useGlobal = Boolean(flags['global']);
106
- const dryRun = Boolean(flags['dry-run']);
121
+ const useGlobal = boolFlag(flags, 'global');
122
+ const dryRun = boolFlag(flags, 'dry-run');
107
123
  const extraTags = Array.isArray(flags['tag'])
108
124
  ? flags['tag']
109
125
  : flags['tag']
@@ -132,7 +148,7 @@ export function cmdImport(hippoRoot, args, flags) {
132
148
  // vault import (the connector raw-archive path is tenant-local).
133
149
  if (flags['vault'])
134
150
  return importVaultFolder(hippoRoot, flags, importOptions, useGlobal, dryRun);
135
- importFromFile(targetRoot, args, flags, importOptions, useGlobal, dryRun);
151
+ importFromFile(targetRoot, args, flags, { importOptions, useGlobal, dryRun });
136
152
  }
137
153
  // Determine which importer to use based on flag
138
154
  function pickImporter(args, flags) {
@@ -151,7 +167,8 @@ function pickImporter(args, flags) {
151
167
  return { filePath: args[0], importer: importGenericFile, importerName: 'File' };
152
168
  return { filePath: undefined, importer: undefined, importerName: '' };
153
169
  }
154
- function importFromFile(targetRoot, args, flags, importOptions, useGlobal, dryRun) {
170
+ function importFromFile(targetRoot, args, flags, options) {
171
+ const { importOptions, useGlobal, dryRun } = options;
155
172
  const { filePath, importer, importerName } = pickImporter(args, flags);
156
173
  if (!filePath || !importer) {
157
174
  printError('Usage: hippo import <--chatgpt|--claude|--cursor|--file|--markdown|--vault> <path>, or hippo import --agents [--dry-run]');
@@ -169,9 +186,12 @@ function importFromFile(targetRoot, args, flags, importOptions, useGlobal, dryRu
169
186
  // a local `hippo embed`) is the backstop if it does get interrupted. Do not
170
187
  // "fix" this by awaiting it, that would block the CLI on model load/backfill.
171
188
  if (!dryRun && result.imported >= 1) {
172
- void embedAll(targetRoot).catch(() => { });
189
+ void embedAll(targetRoot).catch((err) => warnBackfillFailed(targetRoot, useGlobal ? 'hippo embed --global' : 'hippo embed', err));
173
190
  }
174
191
  const storeLabel = useGlobal ? `global (${getGlobalRoot()})` : targetRoot;
192
+ printFileImportSummary(result, importerName, filePath, storeLabel, dryRun);
193
+ }
194
+ function printFileImportSummary(result, importerName, filePath, storeLabel, dryRun) {
175
195
  console.log(`\nImport ${importerName}: ${filePath}`);
176
196
  console.log(` Source entries found: ${result.total}`);
177
197
  console.log(` Imported: ${result.imported}`);
@@ -184,8 +204,8 @@ function importFromFile(targetRoot, args, flags, importOptions, useGlobal, dryRu
184
204
  console.log('\n (dry run - nothing written)');
185
205
  if (result.entries.length > 0) {
186
206
  console.log('\n Would import:');
187
- for (const e of result.entries.slice(0, 10)) {
188
- console.log(` - ${e.content.slice(0, 80)}`);
207
+ for (const e of result.entries.slice(0, MAX_ENTRIES_SHOWN)) {
208
+ console.log(` - ${e.content.slice(0, CONTENT_PREVIEW_CHARS)}`);
189
209
  }
190
210
  if (result.entries.length > 10) {
191
211
  console.log(` ... and ${result.entries.length - 10} more`);
@@ -209,6 +229,18 @@ function importAgentMemories(hippoRoot, useGlobal, dryRun) {
209
229
  }
210
230
  function importVaultFolder(hippoRoot, flags, importOptions, useGlobal, dryRun) {
211
231
  const folderPath = String(flags['vault']);
232
+ checkVaultArgs(folderPath, flags, useGlobal);
233
+ const tenantId = resolveTenantId({});
234
+ const vaultOptions = {
235
+ ...importOptions,
236
+ tenantId,
237
+ name: flags['name'] ? String(flags['name']) : undefined,
238
+ scope: flags['scope'] ? String(flags['scope']) : undefined,
239
+ };
240
+ const vaultResult = importVault(folderPath, vaultOptions);
241
+ printVaultSummary(vaultResult, folderPath, hippoRoot, dryRun);
242
+ }
243
+ function checkVaultArgs(folderPath, flags, useGlobal) {
212
244
  if (!fs.existsSync(folderPath) || !fs.statSync(folderPath).isDirectory()) {
213
245
  printError(`Vault folder not found (or not a directory): ${folderPath}`);
214
246
  process.exit(1);
@@ -230,14 +262,8 @@ function importVaultFolder(hippoRoot, flags, importOptions, useGlobal, dryRun) {
230
262
  printError('hippo import --vault: --scope requires a value (e.g. --scope vault:private:notes).');
231
263
  process.exit(1);
232
264
  }
233
- const tenantId = resolveTenantId({});
234
- const vaultOptions = {
235
- ...importOptions,
236
- tenantId,
237
- name: flags['name'] ? String(flags['name']) : undefined,
238
- scope: flags['scope'] ? String(flags['scope']) : undefined,
239
- };
240
- const vaultResult = importVault(folderPath, vaultOptions);
265
+ }
266
+ function printVaultSummary(vaultResult, folderPath, hippoRoot, dryRun) {
241
267
  console.log(`\nImport Vault: ${folderPath}${dryRun ? ' (dry run - no writes)' : ''}`);
242
268
  console.log(` Notes found: ${vaultResult.total}`);
243
269
  console.log(` ${dryRun ? 'Would import: ' : 'Imported: '}${vaultResult.imported}`);
@@ -252,7 +278,7 @@ function importVaultFolder(hippoRoot, flags, importOptions, useGlobal, dryRun) {
252
278
  // write through api.remember (which never embeds), so backfill them here.
253
279
  // Floating promise is deliberate; see the comment at the single-file site.
254
280
  if (!dryRun && vaultResult.imported >= 1) {
255
- void embedAll(hippoRoot).catch(() => { });
281
+ void embedAll(hippoRoot).catch((err) => warnBackfillFailed(hippoRoot, 'hippo embed', err));
256
282
  }
257
283
  }
258
284
  // ---------------------------------------------------------------------------
@@ -275,7 +301,7 @@ function cmdPromote(hippoRoot, id) {
275
301
  console.log(` Global store: ${getGlobalRoot()}`);
276
302
  }
277
303
  catch (err) {
278
- printError(`Failed to promote: ${err.message}`);
304
+ printError(`Failed to promote: ${errorMessage(err)}`);
279
305
  process.exit(1);
280
306
  }
281
307
  }
@@ -290,7 +316,7 @@ export function cmdSync(hippoRoot, flags = {}) {
290
316
  return;
291
317
  }
292
318
  // v39: other-project rows are skipped by default; secrets always are.
293
- const includeCrossProject = flags['cross-project'] === true;
319
+ const includeCrossProject = flagIsTrue(flags, 'cross-project');
294
320
  const count = syncGlobalToLocal(hippoRoot, globalRoot, { includeCrossProject });
295
321
  console.log(`Synced ${count} global memories into local project.${includeCrossProject ? '' : ' (other-project rows skipped; use --cross-project to include them)'}`);
296
322
  }
@@ -310,7 +336,7 @@ export async function handlePromote({ hippoRoot, args }) {
310
336
  console.log(`Promoted ${id} to global store as ${result.globalId}`);
311
337
  }
312
338
  catch (err) {
313
- printError(`Failed to promote: ${err.message}`);
339
+ printError(`Failed to promote: ${errorMessage(err)}`);
314
340
  process.exit(1);
315
341
  }
316
342
  });
@@ -324,7 +350,7 @@ export function handleShare({ hippoRoot, args, flags }) {
324
350
  // Auto-share mode
325
351
  requireInit(hippoRoot);
326
352
  const minScore = parseFloat(String(flags['min-score'] ?? '0.6'));
327
- const dryRun = Boolean(flags['dry-run']);
353
+ const dryRun = boolFlag(flags, 'dry-run');
328
354
  const results = autoShare(hippoRoot, { minScore, dryRun, tenantId: resolveTenantId({}) });
329
355
  if (results.length === 0) {
330
356
  console.log('No memories meet the sharing threshold.');
@@ -333,7 +359,7 @@ export function handleShare({ hippoRoot, args, flags }) {
333
359
  console.log(`Would share ${results.length} memories:\n`);
334
360
  for (const e of results) {
335
361
  const score = transferScore(e);
336
- console.log(` ${e.id} (transfer=${fmt(score)}) ${e.content.slice(0, 80)}...`);
362
+ console.log(` ${e.id} (transfer=${fmt(score)}) ${e.content.slice(0, CONTENT_PREVIEW_CHARS)}...`);
337
363
  }
338
364
  }
339
365
  else {
@@ -345,7 +371,7 @@ export function handleShare({ hippoRoot, args, flags }) {
345
371
  }
346
372
  else if (shareId) {
347
373
  requireInit(hippoRoot);
348
- const force = Boolean(flags['force']);
374
+ const force = boolFlag(flags, 'force');
349
375
  const tenantId = resolveTenantId({});
350
376
  const result = shareMemory(hippoRoot, shareId, { force, tenantId });
351
377
  if (result) {
@@ -372,7 +398,7 @@ export function handleShare({ hippoRoot, args, flags }) {
372
398
  }
373
399
  export function handlePeers({ flags }) {
374
400
  // Tenant-scoped by default; --all-tenants gives the host-wide view for cross-tenant peer discovery.
375
- const allTenants = flags['all-tenants'] === true;
401
+ const allTenants = flagIsTrue(flags, 'all-tenants');
376
402
  const tenantScope = allTenants ? undefined : resolveTenantId({});
377
403
  const peers = listPeers(undefined, tenantScope);
378
404
  if (peers.length === 0) {
@@ -382,13 +408,13 @@ export function handlePeers({ flags }) {
382
408
  const scopeLabel = allTenants ? 'global store (all tenants)' : `global store (tenant "${tenantScope}")`;
383
409
  console.log(`${peers.length} project${peers.length === 1 ? '' : 's'} contributing to ${scopeLabel}:\n`);
384
410
  for (const p of peers) {
385
- console.log(` ${p.project.padEnd(25)} ${String(p.count).padStart(4)} memories (latest: ${p.latest.slice(0, 10)})`);
411
+ console.log(` ${p.project.padEnd(25)} ${String(p.count).padStart(4)} memories (latest: ${p.latest.slice(0, DATE_PREFIX_CHARS)})`);
386
412
  }
387
413
  }
388
414
  }
389
415
  export function handleExport({ hippoRoot, args, flags }) {
390
416
  requireInit(hippoRoot);
391
- const format = flags['format'] || 'json';
417
+ const format = (flags['format'] || 'json');
392
418
  const outputPath = args[0] || null;
393
419
  const entries = loadAllEntries(hippoRoot, resolveTenantId({}));
394
420
  let output;
package/dist/cli/usage.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // Help text for every verb, keyed like the command table in cli.ts; no command logic lives here.
2
2
  import { TAIL_MAX_LINES } from '../support-bundle.js';
3
- import { DEFAULT_LOCAL_BUMP, DEFAULT_RECALL_BUDGET } from '../search/types.js';
3
+ import { DEFAULT_LOCAL_BUMP, DEFAULT_RECALL_BUDGET } from '../core/search-types.js';
4
4
  import { DEFAULT_ASSEMBLE_BUDGET } from '../api/assemble.js';
5
5
  export function printAuditPruneUsage() {
6
6
  console.log('hippo audit prune --older-than <Nd> [--dry-run] [--tenant <t>]');
@@ -663,7 +663,9 @@ export const VERB_USAGE = {
663
663
  serve: [`
664
664
  serve Start the HTTP API server for this store (Ctrl+C stops it)
665
665
  --port <n> Port to serve on (default: $HIPPO_PORT or 6789)
666
- --host <host> Address to bind (default: 127.0.0.1)`],
666
+ --host <host> Address to bind (default: 127.0.0.1)
667
+ --tls-cert <file> PEM certificate; serve HTTPS only (or $HIPPO_TLS_CERT)
668
+ --tls-key <file> PEM private key for it; give both (or $HIPPO_TLS_KEY)`],
667
669
  invalidate: [`
668
670
  invalidate "<pattern>" Actively weaken memories matching an old pattern
669
671
  (content overlap, or a tag EXACTLY equal to the