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,11 +1,14 @@
1
1
  // The `hippo projects` verb: list a store's project names, fold an old worktree name into its repo, repair old tags in one pass.
2
2
  import * as path from 'path';
3
3
  import { execFileSync } from 'child_process';
4
- import { closeHippoDb, openHippoDb } from '../db.js';
5
- import { listProjects, mergeProjects, repairProjects } from '../project-merge.js';
6
- import { resolveTenantId } from '../tenant.js';
4
+ import { closeHippoDb, openHippoDb } from '../db/index.js';
5
+ import { listProjects, mergeProjects, repairProjects } from '../sharing/project-merge.js';
6
+ import { resolveTenantId } from '../store/tenant.js';
7
+ import { flagIsTrue } from './flag-values.js';
7
8
  import { resolveAuthRoot } from './shared.js';
8
9
  import { printError } from './output.js';
10
+ import { errorMessage } from '../util/log.js';
11
+ import { DATE_PREFIX_CHARS } from '../util/token-text.js';
9
12
  /** Old per-worktree project names of the repo at cwd, mapped to the repo's main checkout name; empty outside git. */
10
13
  function worktreeNames() {
11
14
  try {
@@ -30,62 +33,66 @@ function hint(p, worktrees) {
30
33
  function count(n, one, many = `${one}s`) {
31
34
  return `${n} ${n === 1 ? one : many}`;
32
35
  }
36
+ function projectsList(db, tenantId, root, flags) {
37
+ const projects = listProjects(db, tenantId);
38
+ if (flags['json']) {
39
+ console.log(JSON.stringify({ store: root, projects }, null, 2));
40
+ return;
41
+ }
42
+ const worktrees = worktreeNames();
43
+ console.log(`${count(projects.length, 'project name')} in ${root} (newest write first):\n`);
44
+ for (const p of projects) {
45
+ console.log(`${label(p.origin)} ${count(p.live, 'memory', 'memories')}, ${p.imported} imported from agent notes, newest ${p.newest.slice(0, DATE_PREFIX_CHARS)}${hint(p, worktrees)}`);
46
+ }
47
+ }
48
+ function projectsMerge(db, tenantId, root, args, flags) {
49
+ const apply = flagIsTrue(flags, 'apply');
50
+ const [from, into] = [args[1] ?? '', args[2] ?? ''];
51
+ const r = mergeProjects(db, root, { tenantId, from, into, dryRun: !apply });
52
+ if (flags['json']) {
53
+ console.log(JSON.stringify(r, null, 2));
54
+ return;
55
+ }
56
+ console.log(`${apply ? 'Merged' : 'Dry run: would merge'} ${from} into ${into}:`);
57
+ console.log(` ${count(r.setAside.length, 'imported note copy', 'imported note copies')} set aside (${into} already holds the same note; the rest move under ${into} on the next sync)`);
58
+ console.log(` ${count(r.restamped.length, 'memory', 'memories')} re-tagged, plus ${r.dormantRestamped.length} dormant and ${count(r.compactions, 'compaction record')}`);
59
+ console.log(apply ? `Backup: ${r.backup}\nEvery id is in the audit log: hippo audit list --op project_merge` : 'Nothing written. Add --apply to run it.');
60
+ }
61
+ function projectsRepair(db, tenantId, root, flags) {
62
+ const apply = flagIsTrue(flags, 'apply');
63
+ const r = repairProjects(db, root, { tenantId, dryRun: !apply });
64
+ if (flags['json']) {
65
+ console.log(JSON.stringify(r, null, 2));
66
+ return;
67
+ }
68
+ console.log(`${apply ? 'Repaired' : 'Dry run: would repair'} ${root}:`);
69
+ console.log(` ${count(r.copies.length, 'imported note copy', 'imported note copies')} under the wrong project set aside (the note stays under its own, or user-global)`);
70
+ for (const f of r.folds)
71
+ console.log(` ${f.from} folded into ${f.into} (its sessions' folders resolve there now)`);
72
+ for (const c of r.collisions)
73
+ console.log(` ${c.name} left as it is: its folders now resolve to ${c.ids.join(', ')}; fold it by hand with hippo projects merge`);
74
+ console.log(` sleep's user-global merged rows: ${r.toProject.length} re-tagged to their parents' project`);
75
+ console.log(` ${r.setAside.length} set aside (parents in two projects; sleep re-merges them per project)`);
76
+ console.log(` ${r.untraced.length} left as they are (no parent left to show which project; check them with hippo inspect <id>)`);
77
+ console.log(apply ? `Backup: ${r.backup}\nEvery id is in the audit log: hippo audit list --op project_repair` : 'Nothing written. Add --apply to run it.');
78
+ }
33
79
  export function cmdProjects(hippoRoot, args, flags) {
34
80
  const root = resolveAuthRoot(hippoRoot, flags);
35
81
  const tenantId = resolveTenantId({});
36
- const apply = flags['apply'] === true;
37
82
  const sub = args[0] ?? 'list';
38
83
  const db = openHippoDb(root);
39
84
  try {
40
- if (sub === 'list') {
41
- const projects = listProjects(db, tenantId);
42
- if (flags['json']) {
43
- console.log(JSON.stringify({ store: root, projects }, null, 2));
44
- return;
45
- }
46
- const worktrees = worktreeNames();
47
- console.log(`${count(projects.length, 'project name')} in ${root} (newest write first):\n`);
48
- for (const p of projects) {
49
- console.log(`${label(p.origin)} ${count(p.live, 'memory', 'memories')}, ${p.imported} imported from agent notes, newest ${p.newest.slice(0, 10)}${hint(p, worktrees)}`);
50
- }
51
- return;
52
- }
53
- if (sub === 'merge') {
54
- const [from, into] = [args[1] ?? '', args[2] ?? ''];
55
- const r = mergeProjects(db, root, { tenantId, from, into, dryRun: !apply });
56
- if (flags['json']) {
57
- console.log(JSON.stringify(r, null, 2));
58
- return;
59
- }
60
- console.log(`${apply ? 'Merged' : 'Dry run: would merge'} ${from} into ${into}:`);
61
- console.log(` ${count(r.setAside.length, 'imported note copy', 'imported note copies')} set aside (${into} already holds the same note; the rest move under ${into} on the next sync)`);
62
- console.log(` ${count(r.restamped.length, 'memory', 'memories')} re-tagged, plus ${r.dormantRestamped.length} dormant and ${count(r.compactions, 'compaction record')}`);
63
- console.log(apply ? `Backup: ${r.backup}\nEvery id is in the audit log: hippo audit list --op project_merge` : 'Nothing written. Add --apply to run it.');
64
- return;
65
- }
66
- if (sub === 'repair') {
67
- const r = repairProjects(db, root, { tenantId, dryRun: !apply });
68
- if (flags['json']) {
69
- console.log(JSON.stringify(r, null, 2));
70
- return;
71
- }
72
- console.log(`${apply ? 'Repaired' : 'Dry run: would repair'} ${root}:`);
73
- console.log(` ${count(r.copies.length, 'imported note copy', 'imported note copies')} under the wrong project set aside (the note stays under its own, or user-global)`);
74
- for (const f of r.folds)
75
- console.log(` ${f.from} folded into ${f.into} (its sessions' folders resolve there now)`);
76
- for (const c of r.collisions)
77
- console.log(` ${c.name} left as it is: its folders now resolve to ${c.ids.join(', ')}; fold it by hand with hippo projects merge`);
78
- console.log(` sleep's user-global merged rows: ${r.toProject.length} re-tagged to their parents' project`);
79
- console.log(` ${r.setAside.length} set aside (parents in two projects; sleep re-merges them per project)`);
80
- console.log(` ${r.untraced.length} left as they are (no parent left to show which project; check them with hippo inspect <id>)`);
81
- console.log(apply ? `Backup: ${r.backup}\nEvery id is in the audit log: hippo audit list --op project_repair` : 'Nothing written. Add --apply to run it.');
82
- return;
83
- }
85
+ if (sub === 'list')
86
+ return projectsList(db, tenantId, root, flags);
87
+ if (sub === 'merge')
88
+ return projectsMerge(db, tenantId, root, args, flags);
89
+ if (sub === 'repair')
90
+ return projectsRepair(db, tenantId, root, flags);
84
91
  printError('Usage: hippo projects [list] [--json] | merge <from> <into> [--apply] | repair [--apply] [--global]');
85
92
  process.exitCode = 1;
86
93
  }
87
94
  catch (err) {
88
- printError(err instanceof Error ? err.message : String(err));
95
+ printError(errorMessage(err));
89
96
  process.exitCode = 1;
90
97
  }
91
98
  finally {
@@ -1,4 +1,4 @@
1
- import { MemoryEntry } from './memory.js';
1
+ import { MemoryEntry } from '../core/memory.js';
2
2
  export interface ProvenanceCoverage {
3
3
  rawTotal: number;
4
4
  rawWithEnvelope: number;
@@ -1,9 +1,9 @@
1
1
  // Sleep and the daily runner clean a store's old automatic memories once, so an upgrade needs no command.
2
2
  import * as path from 'path';
3
- import { errorMessage, log } from '../log.js';
4
- import { repairQualityOnce } from '../quality-repair.js';
5
- import { getGlobalRoot } from '../shared.js';
6
- import { resolveTenantId } from '../tenant.js';
3
+ import { errorMessage, log } from '../util/log.js';
4
+ import { repairQualityOnce } from './quality-repair.js';
5
+ import { getGlobalRoot } from '../sharing/shared.js';
6
+ import { resolveTenantId } from '../store/tenant.js';
7
7
  /** Fault-isolated like the project tag repair: a failure warns, leaves the store unmarked and runs again next time. */
8
8
  export function repairQualityOnceAt(root) {
9
9
  try {
@@ -1,20 +1,22 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
- import { appendAuditEvent } from './audit.js';
4
- import { withBackup } from './db/backup.js';
5
- import { assertSqliteAllowed } from './db/open.js';
6
- import { DatabaseSync } from './db/sqlite.js';
7
- import { getMeta, setMeta } from './db/meta.js';
8
- import { tableColumns } from './db/tables.js';
9
- import { assertBinaryCompatible } from './db/migrate.js';
10
- import { insertDormantRow, listDormantSnapshots } from './dormant.js';
11
- import { calculateStrength, canAutoDelete } from './memory.js';
12
- import { assessAutomaticMemory, BUNDLE_HEADER, isAutomaticEntry, isCertainReason } from './memory-quality.js';
13
- import { heldTexts } from './same-text.js';
14
- import { deleteEntryCore, MEMORY_BACKED_TABLES, memoriesBackingObjectsOn } from './store/delete-and-batch.js';
15
- import { selectAllEntries } from './store/entry-reads.js';
16
- import { MEMORY_SELECT_COLUMNS, parseJsonArray } from './store/rows.js';
17
- import { purgeMirrorBestEffort } from './store/mirrors.js';
3
+ import { appendAuditEvent } from '../store/audit.js';
4
+ import { withBackup } from '../db/backup.js';
5
+ import { withTrialScope, withWriteScope } from '../db/busy.js';
6
+ import { assertSqliteAllowed } from '../db/open.js';
7
+ import { DatabaseSync } from '../db/sqlite.js';
8
+ import { getMeta, pragmaUserVersion, setMeta } from '../db/meta.js';
9
+ import { tableColumns } from '../db/tables.js';
10
+ import { assertBinaryCompatible } from '../db/migrate.js';
11
+ import { insertDormantRow, listDormantSnapshots } from '../store/dormant.js';
12
+ import { calculateStrength, canAutoDelete } from '../core/memory.js';
13
+ import { assessAutomaticMemory, BUNDLE_HEADER, isAutomaticEntry, isCertainReason } from '../core/memory-quality.js';
14
+ import { heldTexts } from '../util/same-text.js';
15
+ import { deleteEntryCore, MEMORY_BACKED_TABLES, memoriesBackingObjectsOn } from '../store/delete-and-batch.js';
16
+ import { selectAllEntries, selectPreviewRows } from '../store/entry-reads.js';
17
+ import { ftsRowExists } from '../store/entry-row.js';
18
+ import { MEMORY_SELECT_COLUMNS, parseJsonArray } from '../store/rows.js';
19
+ import { purgeMirrorBestEffort } from '../store/mirrors.js';
18
20
  const REQUIRED_COLUMNS = {
19
21
  memories: MEMORY_SELECT_COLUMNS.split(',').map((s) => s.trim()),
20
22
  meta: ['key', 'value'],
@@ -104,11 +106,7 @@ function unsupportedPreview(db, tenantId) {
104
106
  const columns = tableColumns(db, 'memories');
105
107
  if (!columns.has('id') || !columns.has('content'))
106
108
  return { total: 0, issues: [] };
107
- const tenant = columns.has('tenant_id') ? ' WHERE tenant_id = ?' : '';
108
- const column = (name, fallback) => (columns.has(name) ? name : `${fallback} AS ${name}`);
109
- const statement = db.prepare(`SELECT id, content, ${column('source', "''")}, ${column('confidence', 'NULL')}, ${column('extracted_from', 'NULL')}, ${column('dag_level', '0')}, ${column('tags_json', "'[]'")} FROM memories${tenant}`);
110
- // SAFETY: the SELECT names every Row field, each a literal fallback when its column is missing.
111
- const rows = (tenant ? statement.all(tenantId) : statement.all());
109
+ const rows = selectPreviewRows(db, columns, tenantId);
112
110
  const issues = rows.flatMap((row) => {
113
111
  const provenance = { ...row, source: row.source ?? '', confidence: row.confidence ?? 'observed', dag_level: row.dag_level ?? 0, tags: parseJsonArray(row.tags_json) };
114
112
  if (!isAutomaticEntry(provenance))
@@ -120,8 +118,7 @@ function unsupportedPreview(db, tenantId) {
120
118
  }
121
119
  function initialResult(db, root, tenantId) {
122
120
  const blockers = capabilityBlockers(db);
123
- // SAFETY: PRAGMA user_version returns one row with one integer column.
124
- const schema = db.prepare('PRAGMA user_version').get().user_version;
121
+ const schema = pragmaUserVersion(db);
125
122
  const plan = blockers.length > 0 ? unsupportedPreview(db, tenantId) : planRows(db, tenantId);
126
123
  return {
127
124
  root, schema, supported: blockers.length === 0, blockers,
@@ -135,15 +132,14 @@ function setAsideIssue(db, entry, reason, now, backup) {
135
132
  if (deleteEntryCore(db, entry.id, { actor, automatic: true, suppressForgetAudit: true }) === null)
136
133
  return false;
137
134
  insertDormantRow(db, { entry, strength: calculateStrength(entry, now), reason: 'quality-repair', dormantAt: now.toISOString() });
138
- if (getMeta(db, 'fts5_available', '0') === '1' && db.prepare('SELECT id FROM memories_fts WHERE id = ?').get(entry.id)) {
135
+ if (getMeta(db, 'fts5_available', '0') === '1' && ftsRowExists(db, entry.id)) {
139
136
  throw new Error(`Quality repair could not remove the full-text row for ${entry.id}`);
140
137
  }
141
138
  appendAuditEvent(db, { tenantId: entry.tenantId, actor, op: 'quality_repair', targetId: entry.id, metadata: { reason, backup } });
142
139
  return true;
143
140
  }
144
141
  function applyPlan(db, root, tenantId, backup, doneKey) {
145
- db.exec('BEGIN IMMEDIATE');
146
- try {
142
+ return withWriteScope(db, 'quality_repair_apply', () => {
147
143
  const result = initialResult(db, root, tenantId);
148
144
  if (!result.supported)
149
145
  throw new Error(`Quality repair capability changed: ${result.blockers.join('; ')}`);
@@ -161,21 +157,11 @@ function applyPlan(db, root, tenantId, backup, doneKey) {
161
157
  }
162
158
  if (doneKey)
163
159
  setMeta(db, doneKey, '1');
164
- db.exec('COMMIT');
165
160
  return { ...result, appliedIds, backup, warnings };
166
- }
167
- catch (error) {
168
- try {
169
- db.exec('ROLLBACK');
170
- }
171
- catch { /* preserve the mutation error */ }
172
- throw error;
173
- }
161
+ });
174
162
  }
175
163
  function repairOn(db, root, opts) {
176
- db.exec('BEGIN');
177
- const initial = initialResult(db, root, opts.tenantId);
178
- db.exec('ROLLBACK');
164
+ const initial = withTrialScope(db, 'quality_repair_plan', () => initialResult(db, root, opts.tenantId));
179
165
  if (!opts.apply || !initial.supported || !initial.issues.some((issue) => issue.disposition === 'set-aside'))
180
166
  return initial;
181
167
  db.exec('PRAGMA foreign_keys = ON');
@@ -1,7 +1,5 @@
1
- import { type CliFlags, type CommandContext } from './shared.js';
2
- /** Test-only: reset the CLI recall rings. Call from beforeEach. */
3
- export declare function __resetSessionRecallHistoryCli(): void;
4
- /** Runs `hippo recall`: parse, rank, load continuity, fit the printed block to the budget, audit, then write and print. */
1
+ import { type CliFlags, type CommandContext } from './flag-values.js';
2
+ /** Runs `hippo recall`: the flags name the ranking core and this verb's presenter, `retrieve` ranks and records, then the block prints. */
5
3
  export declare function cmdRecall(hippoRoot: string, query: string, flags: CliFlags): Promise<void>;
6
4
  export declare function handleRecall({ hippoRoot, args, flags }: CommandContext): Promise<void>;
7
5
  //# sourceMappingURL=recall.d.ts.map
@@ -1,46 +1,35 @@
1
1
  // The `hippo recall` verb; main() loads it lazily from the command table.
2
- import { envHippoSessionId } from '../env.js';
3
- import { confidenceFacets, Layer } from '../memory.js';
2
+ import { envHippoSessionId } from '../util/env.js';
3
+ import { confidenceFacets, Layer } from '../core/memory.js';
4
4
  import { isInitialized } from '../store/open.js';
5
- import { strengthenRetrieved } from '../store/entry-writes.js';
6
- import { isRecallBoostAblated } from '../ablation.js';
7
- import { loadIndex, saveIndex, updateStats } from '../store/index-and-stats.js';
5
+ import { loadIndex } from '../store/index-and-stats.js';
8
6
  import { loadActiveTaskSnapshot, listSessionEvents } from '../store/sessions.js';
9
7
  import { loadLatestHandoff } from '../store/handoffs.js';
10
- import { passesScopeFilterForRecall } from '../recall-scope.js';
8
+ import { passesScopeFilterForRecall } from '../store/recall-scope.js';
11
9
  import { fitBudget } from '../search/finalize.js';
12
10
  import { explainMatch } from '../search/explain.js';
13
- import { DEFAULT_RECALL_BUDGET } from '../search/types.js';
14
- import { writeRecallTraceAtRoot } from '../recall-trace.js';
15
- import { loadConfig } from '../config.js';
16
- import { openHippoDb, closeHippoDb } from '../db.js';
17
- import { estimateTokens, recordTokenUse } from '../token-ledger.js';
18
- import { writeGoalRecallLog } from '../goals.js';
19
- import { dropHeldCopies } from '../same-text.js';
20
- import { isGlobalStoreRoot } from '../project-identity.js';
21
- import { detectScope } from '../scope.js';
22
- import { getGlobalRoot } from '../shared.js';
23
- import * as api from '../api.js';
24
- import { computePlanningFallacyOutput } from '../predictions/planning-fallacy.js';
25
- import { detectAnchoring, hashQueryText, biasHintEnabled, snapshotRing } from '../recall-history.js';
26
- import { appendRecallAudit, recallAuditMetadata, recordShownRecall, resetSessionRings, sessionRing } from '../api/recall-record.js';
27
- import { detectAvailabilityBias } from '../availability.js';
28
- import { resolveTenantId } from '../tenant.js';
29
- import { MAX_HOPS, DEFAULT_MAX_NEIGHBORS } from '../graph-recall.js';
11
+ import { DEFAULT_RECALL_BUDGET } from '../core/search-types.js';
12
+ import { loadConfig } from '../core/config.js';
13
+ import { estimateTokens } from '../util/token-text.js';
14
+ import { dropHeldCopies } from '../util/same-text.js';
15
+ import { isGlobalStoreRoot } from '../core/project-identity.js';
16
+ import { detectScope } from '../sharing/scope.js';
17
+ import { getGlobalRoot } from '../sharing/shared.js';
18
+ import * as api from '../api/index.js';
19
+ import { detectAnchoring, hashQueryText, biasHintEnabled, snapshotRing } from '../api/recall-history.js';
20
+ import { noteRecall, sessionRing, shownRecallRows } from '../api/recall-record.js';
21
+ import { detectAvailabilityBias } from '../api/availability.js';
22
+ import { resolveTenantId } from '../store/tenant.js';
23
+ import { MAX_HOPS, DEFAULT_MAX_NEIGHBORS } from '../graph/recall.js';
30
24
  import { getReranker } from '../rerankers/index.js';
31
- import { rankRecall, } from '../recall-pipeline.js';
32
25
  import { JEV_DEFAULT_TOP_K } from '../rerankers/jev.js';
33
26
  import { isClefModel } from '../rerankers/clef.js';
34
- import { handoffText, printedTokens, sessionTrailText, settleTokens, snapshotText } from '../context-render.js';
35
- import { withLedgerDb } from '../ledger-db.js';
27
+ import { handoffText, printedTokens, sessionTrailText, settleTokens, snapshotText } from '../api/context-render.js';
36
28
  import { printError } from './output.js';
37
- import { parseLimitFlag, parseBudgetFlag, requireInit, recallEntryText, recallHeading, parseAsOfFlag, engineFlags, printActiveTaskSnapshot, printSessionEvents, printHandoff, hostSessionId, captureConsole, hookStoreRoot, } from './shared.js';
38
- // Per-process rings: a single-shot `hippo recall` starts empty, so anchoring only accumulates in long-lived
39
- // hosts (in-process loops, `hippo serve`, the MCP server).
40
- /** Test-only: reset the CLI recall rings. Call from beforeEach. */
41
- export function __resetSessionRecallHistoryCli() {
42
- resetSessionRings('cli');
43
- }
29
+ import { parseLimitFlag, parseBudgetFlag, parseAsOfFlag, engineFlags, boolFlag, flagIsTrue } from './flag-values.js';
30
+ import { requireInit } from './shared.js';
31
+ import { recallEntryText, recallHeading, printActiveTaskSnapshot, printSessionEvents, printHandoff, captureConsole } from './print.js';
32
+ import { hostSessionId, hookStoreRoot } from './hook-runtime.js';
44
33
  // JSON.stringify keeps quotes or parens in the matched phrase from blurring the line.
45
34
  function planningLine(p) {
46
35
  if (p.hint)
@@ -178,22 +167,46 @@ function parseRecallLateFlags(flags) {
178
167
  error,
179
168
  };
180
169
  }
181
- /** Runs `hippo recall`: parse, rank, load continuity, fit the printed block to the budget, audit, then write and print. */
170
+ /** Runs `hippo recall`: the flags name the ranking core and this verb's presenter, `retrieve` ranks and records, then the block prints. */
182
171
  export async function cmdRecall(hippoRoot, query, flags) {
183
172
  requireInit(hippoRoot);
184
173
  const o = parseRecallOptions(hippoRoot, flags);
185
- const ranked = await rankForRecall(hippoRoot, query, flags, o);
186
- const fit = fitRecallBlock(hippoRoot, query, o, ranked, loadRecallContinuity(hippoRoot, o));
187
- auditRecall(hippoRoot, o, query, fit);
188
- writeRecallResult(hippoRoot, query, o, fit, ranked.localIndex);
174
+ const priced = priceRecallEntries(hippoRoot, query, o);
175
+ const slot = {};
176
+ await api.retrieve({ hippoRoot, tenantId: o.tenantId, actor: api.adminActor('cli') }, {
177
+ query,
178
+ goalTag: o.goalTag,
179
+ sessionId: o.sessionId,
180
+ cliCore: {
181
+ rank: rankOptions(query, flags, o, priced),
182
+ // The global store is a second source for this surface alone, and never when it is the store being searched.
183
+ sources: { globalRoot: o.globalRoot !== hippoRoot && priced.globalOn ? o.globalRoot : undefined },
184
+ note: (line) => printError(line),
185
+ hostSessionId: hostSessionId(),
186
+ show: (rank, planning) => {
187
+ slot.presented = presentRecall(hippoRoot, query, o, { rank, ...priced }, planning);
188
+ return slot.presented.shown;
189
+ },
190
+ },
191
+ });
192
+ // A late flag is rejected where the ranking halted, after the notes its earlier stages printed.
193
+ o.late.error?.fail();
194
+ if (!slot.presented)
195
+ throw new Error('recall ranked but presented nothing');
196
+ const { fit, text } = slot.presented;
197
+ const { results, hints } = fit;
198
+ // Fed after the final detect, so the next recall's cooldown reads the top row and hint this one showed.
199
+ if (fit.anchorRing)
200
+ noteRecall(fit.anchorRing, query, results[0]?.entry.id ?? null, hints.anchoring?.memoryId);
201
+ console.log(text);
189
202
  }
190
203
  /** Every flag recall reads, parsed in the order the single-body command checked them. */
191
204
  function parseRecallOptions(hippoRoot, flags) {
192
205
  const budget = parseBudgetFlag(flags['budget'], DEFAULT_RECALL_BUDGET);
193
206
  const limit = parseLimitFlag(flags['limit']);
194
- const asJson = Boolean(flags['json']);
195
- const showWhy = Boolean(flags['why']);
196
- const includeSuperseded = Boolean(flags['include-superseded']);
207
+ const asJson = boolFlag(flags, 'json');
208
+ const showWhy = boolFlag(flags, 'why');
209
+ const includeSuperseded = boolFlag(flags, 'include-superseded');
197
210
  const asOf = parseAsOfFlag(flags);
198
211
  const globalRoot = getGlobalRoot();
199
212
  const primaryIsGlobal = isGlobalStoreRoot(hippoRoot);
@@ -206,7 +219,7 @@ function parseRecallOptions(hippoRoot, flags) {
206
219
  ? parseInt(String(flags['min-results']), 10)
207
220
  : undefined;
208
221
  const activeScope = explicitScope || detectScope();
209
- const graphStream = flags['graph-stream'] === true ? parseGraphStreamFlags(flags) : undefined;
222
+ const graphStream = flagIsTrue(flags, 'graph-stream') ? parseGraphStreamFlags(flags) : undefined;
210
223
  const late = parseRecallLateFlags(flags);
211
224
  const goalTag = flags['goal'] !== undefined ? String(flags['goal']).trim() : '';
212
225
  const sessionId = (flags['session-id'] !== undefined
@@ -215,45 +228,37 @@ function parseRecallOptions(hippoRoot, flags) {
215
228
  return {
216
229
  budget, limit, asJson, showWhy, includeSuperseded, asOf, globalRoot, primaryIsGlobal, tenantId,
217
230
  explicitScope, config, minResults, activeScope, graphStream, late, goalTag, sessionId,
218
- includeContinuity: Boolean(flags['continuity']),
231
+ includeContinuity: boolFlag(flags, 'continuity'),
219
232
  };
220
233
  }
221
- /** Ranks against each entry's printed cost, then rejects a late flag at the stage where the pipeline halted. */
222
- async function rankForRecall(hippoRoot, query, flags, o) {
223
- // Engines spend the budget on the text each result prints as, less the header, so selection and print agree.
234
+ /** Each entry priced as the line it prints, with the source marker `--why` shows. */
235
+ function priceRecallEntries(hippoRoot, query, o) {
224
236
  const localIndex = loadIndex(hippoRoot);
225
237
  const globalOn = isInitialized(o.globalRoot);
226
- const entryText = (r) => recallEntryText(r, query, o.showWhy, o.primaryIsGlobal || (globalOn && !localIndex.entries[r.entry.id]));
238
+ const isGlobal = (r) => o.primaryIsGlobal || (globalOn && !localIndex.entries[r.entry.id]);
239
+ const entryText = (r) => recallEntryText(r, query, o.showWhy, isGlobal(r));
227
240
  const printCost = (r) => printedTokens(entryText(r));
241
+ return { globalOn, isGlobal, entryText, printCost };
242
+ }
243
+ /** The ranking core's options; a late flag error halts it before the stage that reads the flag. */
244
+ function rankOptions(query, flags, o, priced) {
245
+ // Engines spend the budget on the text each result prints as, less the header, so selection and print agree.
228
246
  const entryBudget = Math.max(0, o.budget - printedTokens(recallHeading(o.budget, o.budget, query)));
229
- const rank = await rankRecall({ hippoRoot, globalRoot: o.globalRoot !== hippoRoot && globalOn ? o.globalRoot : undefined, tenantId: o.tenantId, note: (line) => printError(line) }, {
230
- query, budget: entryBudget, cost: printCost, limit: o.limit, why: o.showWhy, includeSuperseded: o.includeSuperseded, asOf: o.asOf,
247
+ return {
248
+ budget: entryBudget, cost: priced.printCost, limit: o.limit, why: o.showWhy, includeSuperseded: o.includeSuperseded, asOf: o.asOf,
231
249
  explicitScope: o.explicitScope, activeScope: o.activeScope,
232
- search: { ...engineFlags(flags, o.config), multihop: flags['multihop'] === true || o.config.multihop.enabled, graphStream: o.graphStream, minResults: o.minResults, explain: false },
250
+ search: { ...engineFlags(flags, o.config), multihop: flagIsTrue(flags, 'multihop') || o.config.multihop.enabled, graphStream: o.graphStream, minResults: o.minResults, explain: false },
233
251
  graphHops: o.late.graphHops,
234
- evcAdaptive: Boolean(flags['evc-adaptive']),
235
- filterConflicts: Boolean(flags['filter-conflicts']),
236
- valueAware: Boolean(flags['value-aware']),
237
- rerankUtility: Boolean(flags['rerank-utility']),
252
+ evcAdaptive: boolFlag(flags, 'evc-adaptive'),
253
+ filterConflicts: boolFlag(flags, 'filter-conflicts'),
254
+ valueAware: boolFlag(flags, 'value-aware'),
255
+ rerankUtility: boolFlag(flags, 'rerank-utility'),
238
256
  reranker: o.late.reranker,
239
- goalTag: o.goalTag,
240
- sessionId: o.sessionId,
241
257
  salienceThreshold: o.late.salienceThreshold,
242
258
  outcome: o.late.outcome,
243
259
  layer: o.late.layer,
244
260
  haltBefore: o.late.error?.stage,
245
- });
246
- if (rank.goalRecallLog.length > 0) {
247
- const dbForGoals = openHippoDb(hippoRoot);
248
- try {
249
- writeGoalRecallLog(dbForGoals, rank.goalRecallLog);
250
- }
251
- finally {
252
- closeHippoDb(dbForGoals);
253
- }
254
- }
255
- o.late.error?.fail();
256
- return { rank, localIndex, entryText, printCost };
261
+ };
257
262
  }
258
263
  /** Loaded before the zero-result branch, so a no-match query with live continuity still returns a resume packet. */
259
264
  function loadRecallContinuity(hippoRoot, o) {
@@ -355,7 +360,7 @@ function renderRecallBlock(list, h, v) {
355
360
  }));
356
361
  }
357
362
  /** Pays the continuity sections and the plan hint first, then fits the memories into what is left. */
358
- function fitRecallBlock(hippoRoot, query, o, ranked, loaded) {
363
+ function fitRecallBlock(query, o, ranked, loaded, planning) {
359
364
  const { budget } = o;
360
365
  let { activeSnapshot, sessionHandoff, recentSessionEvents } = loaded;
361
366
  // Sections print ahead of the memories, so they are paid first, after the header; one that does not fit is dropped.
@@ -372,12 +377,11 @@ function fitRecallBlock(hippoRoot, query, o, ranked, loaded) {
372
377
  const continuityTokens = sectionBudget - left;
373
378
  const continuity = { activeSnapshot, sessionHandoff, recentSessionEvents };
374
379
  const hasContinuity = activeSnapshot !== null || sessionHandoff !== null || recentSessionEvents.length > 0;
375
- // The baserate hint depends on the query alone; its audit is pipeline-local (actor 'cli').
376
- const cmdPlanningFallacyOutput = computePlanningFallacyOutput(hippoRoot, o.tenantId, query, { actor: 'cli' });
377
- const planText = planningLine(cmdPlanningFallacyOutput);
380
+ // The baserate hint depends on the query alone, so `retrieve` evaluates it and this only prices the line.
381
+ const planText = planningLine(planning);
378
382
  const showPlan = planText !== null && pays(printedTokens(`${planText}\n`));
379
- const cmdPlanningFallacyHint = showPlan ? cmdPlanningFallacyOutput.hint ?? null : null;
380
- const cmdPlanningFallacyWatching = showPlan ? cmdPlanningFallacyOutput.watching ?? null : null;
383
+ const cmdPlanningFallacyHint = showPlan ? planning.hint ?? null : null;
384
+ const cmdPlanningFallacyWatching = showPlan ? planning.watching ?? null : null;
381
385
  // The first --min-results are kept whatever they cost (the documented exception); the rest skip and continue.
382
386
  const floor = o.minResults ?? 1;
383
387
  const fitted = fitBudget(ranked.rank.results, left, floor, ranked.printCost);
@@ -398,60 +402,35 @@ function fitRecallBlock(hippoRoot, query, o, ranked, loaded) {
398
402
  }
399
403
  return { results, hints, recallText, continuity, continuityTokens, cmdPlanningFallacyHint, cmdPlanningFallacyWatching, anchorRing };
400
404
  }
401
- function auditRecall(hippoRoot, o, query, fit) {
405
+ /** The presenter `retrieve` calls once ranking ends: fits and renders the block, and names the rows and hint rows to record. */
406
+ function presentRecall(hippoRoot, query, o, ranked, planning) {
407
+ const fit = fitRecallBlock(query, o, ranked, loadRecallContinuity(hippoRoot, o), planning);
402
408
  const { results, hints } = fit;
403
- const who = { hippoRoot, tenantId: o.tenantId, actor: 'cli', bestEffort: true };
404
- recordShownRecall(who, { query, ring: fit.anchorRing, topId: results[0]?.entry.id ?? null, anchoring: hints.anchoring, availability: hints.availability });
405
- // One 'recall' event per query, before the early-empty return, in every participating store.
406
- const metadata = recallAuditMetadata(query, results.length);
407
- appendRecallAudit(who, 'recall', undefined, metadata);
408
- if (isInitialized(o.globalRoot) && o.globalRoot !== hippoRoot) {
409
- appendRecallAudit({ ...who, hippoRoot: o.globalRoot }, 'recall', undefined, metadata);
410
- }
409
+ const text = recallOutput(query, o, fit, ranked.isGlobal);
410
+ const audit = shownRecallRows({ tenantId: o.tenantId, actor: 'cli' }, {
411
+ query, ring: fit.anchorRing, topId: results[0]?.entry.id ?? null, anchoring: hints.anchoring, availability: hints.availability,
412
+ });
413
+ // The token ledger books the text this recall prints, on whichever exit it takes.
414
+ return { fit, text, shown: { results, audit, tokens: estimateTokens(text) } };
411
415
  }
412
- /** Traces the recall, books retrieval for a non-empty list, then prints JSON or the fitted block. */
413
- function writeRecallResult(hippoRoot, query, o, fit, localIndex) {
414
- const { tenantId, sessionId, showWhy, asJson, includeContinuity } = o;
416
+ /** What this recall prints: the JSON object, or the fitted block. */
417
+ function recallOutput(query, o, fit, isGlobal) {
418
+ const { asJson, includeContinuity } = o;
415
419
  const { results, recallText } = fit;
416
- // The token ledger books the block this recall prints, on whichever exit it takes.
417
- const emit = (text) => {
418
- withLedgerDb(hippoRoot, (db) => recordTokenUse(db, {
419
- tenantId,
420
- sessionId: hostSessionId() ?? null,
421
- surface: 'recall',
422
- event: 'inject',
423
- items: results.length,
424
- tokens: estimateTokens(text),
425
- }));
426
- console.log(text);
427
- };
428
420
  if (results.length === 0) {
429
- // Traced too, so a coverage gap still lands in the training corpus; this path never touches localIndex.
430
- writeRecallTraceAtRoot(hippoRoot, {
431
- tenantId,
432
- sessionId: sessionId || hostSessionId() || null,
433
- pipeline: 'cli',
434
- query,
435
- explainMode: showWhy,
436
- results: [],
437
- });
438
421
  // HTTP and MCP surface the hint whatever matched, so the zero-result JSON keeps it for parity.
439
- emit(asJson ? JSON.stringify({ query, results: [], total: 0, ...recallJsonTail(fit, includeContinuity) }) : recallText);
440
- return;
441
- }
442
- recordRetrieval(hippoRoot, query, o, results, localIndex);
443
- if (asJson) {
444
- const output = results.map((r) => recallJsonRow(r, query, showWhy, o.primaryIsGlobal || (isInitialized(o.globalRoot) && !localIndex.entries[r.entry.id])));
445
- emit(JSON.stringify({
446
- query,
447
- budget: o.budget,
448
- results: output,
449
- total: output.length,
450
- ...recallJsonTail(fit, includeContinuity),
451
- }));
452
- return;
422
+ return asJson ? JSON.stringify({ query, results: [], total: 0, ...recallJsonTail(fit, includeContinuity) }) : recallText;
453
423
  }
454
- emit(recallText);
424
+ if (!asJson)
425
+ return recallText;
426
+ const output = results.map((r) => recallJsonRow(r, query, o.showWhy, isGlobal(r)));
427
+ return JSON.stringify({
428
+ query,
429
+ budget: o.budget,
430
+ results: output,
431
+ total: output.length,
432
+ ...recallJsonTail(fit, includeContinuity),
433
+ });
455
434
  }
456
435
  /** The JSON keys after the result list: suppression summary, any bias hints, then continuity when asked for. */
457
436
  function recallJsonTail(fit, includeContinuity) {
@@ -475,34 +454,6 @@ function recallJsonTail(fit, includeContinuity) {
475
454
  }
476
455
  return tail;
477
456
  }
478
- /** Strengthens the returned rows and persists last_retrieval_ids and last_trace_id in one saveIndex call. */
479
- function recordRetrieval(hippoRoot, query, o, results, localIndex) {
480
- const { globalRoot, tenantId, sessionId, showWhy } = o;
481
- const retrievedIds = results.map((r) => r.entry.id);
482
- const gate = { recallBoostAblated: isRecallBoostAblated() };
483
- const strengthenedHere = strengthenRetrieved(hippoRoot, retrievedIds, gate);
484
- if (isInitialized(globalRoot))
485
- strengthenRetrieved(globalRoot, retrievedIds.filter((id) => !strengthenedHere.has(id)), gate);
486
- // Track last retrieval IDs for outcome command
487
- localIndex.last_retrieval_ids = retrievedIds;
488
- // One trace at hippoRoot, where outcome attribution lives, written first so the same saveIndex keeps
489
- // last_retrieval_ids and last_trace_id in lockstep (see writeRecallTraceAtRoot). Fail-soft; never throws.
490
- const traceId = writeRecallTraceAtRoot(hippoRoot, {
491
- tenantId,
492
- sessionId: sessionId || hostSessionId() || null,
493
- pipeline: 'cli',
494
- query,
495
- explainMode: showWhy,
496
- results: results.map((r) => ({
497
- memoryId: r.entry.id,
498
- score: r.score,
499
- rerankSteps: r.rerankTrace,
500
- })),
501
- });
502
- localIndex.last_trace_id = traceId !== null ? String(traceId) : null;
503
- saveIndex(hippoRoot, localIndex);
504
- updateStats(hippoRoot, { recalled: results.length });
505
- }
506
457
  function recallJsonRow(r, query, showWhy, isGlobal) {
507
458
  const base = {
508
459
  id: r.entry.id,
@@ -12,7 +12,7 @@
12
12
  * - Uses fetch directly so no SDK dependency.
13
13
  * - On failure (API error, bad response), the original memory is untouched.
14
14
  */
15
- import { MemoryEntry } from './memory.js';
15
+ import { MemoryEntry } from '../core/memory.js';
16
16
  export interface RefineOptions {
17
17
  apiKey: string;
18
18
  model?: string;