hippo-memory 1.70.0 → 1.72.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 (855) hide show
  1. package/README.md +2 -2
  2. package/dist/agent-memories/apply.d.ts +0 -11
  3. package/dist/agent-memories/apply.js +6 -21
  4. package/dist/agent-memories/claude-code.d.ts +4 -2
  5. package/dist/agent-memories/claude-code.js +15 -6
  6. package/dist/agent-memories/codex.js +1 -1
  7. package/dist/agent-memories/copilot.d.ts +1 -3
  8. package/dist/agent-memories/copilot.js +1 -17
  9. package/dist/agent-memories/files.js +23 -12
  10. package/dist/agent-memories/markdown.d.ts +1 -3
  11. package/dist/agent-memories/markdown.js +1 -3
  12. package/dist/agent-memories/project-folds.d.ts +10 -0
  13. package/dist/agent-memories/project-folds.js +34 -0
  14. package/dist/agent-memories/report.js +2 -1
  15. package/dist/agent-memories/sync.d.ts +4 -2
  16. package/dist/agent-memories/sync.js +18 -11
  17. package/dist/api/assemble.d.ts +7 -44
  18. package/dist/api/assemble.js +3 -23
  19. package/dist/api/audit.d.ts +33 -1
  20. package/dist/api/audit.js +48 -1
  21. package/dist/api/auth.d.ts +20 -26
  22. package/dist/api/auth.js +43 -29
  23. package/dist/api/auto-sleep.d.ts +5 -2
  24. package/dist/api/auto-sleep.js +9 -5
  25. package/dist/api/availability.d.ts +2 -15
  26. package/dist/api/availability.js +4 -18
  27. package/dist/api/cards.d.ts +42 -0
  28. package/dist/api/cards.js +52 -0
  29. package/dist/api/conflicts.d.ts +28 -0
  30. package/dist/api/conflicts.js +61 -0
  31. package/dist/api/context-render.js +4 -3
  32. package/dist/api/context-select.js +12 -15
  33. package/dist/api/context-types.d.ts +10 -35
  34. package/dist/api/context.d.ts +5 -22
  35. package/dist/api/context.js +38 -46
  36. package/dist/api/continuity.d.ts +47 -0
  37. package/dist/api/continuity.js +66 -0
  38. package/dist/{cli → api}/correction-latency.d.ts +2 -14
  39. package/dist/{cli → api}/correction-latency.js +2 -14
  40. package/dist/api/dormant.d.ts +5 -21
  41. package/dist/api/dormant.js +11 -28
  42. package/dist/api/drill-down.d.ts +7 -46
  43. package/dist/api/drill-down.js +6 -27
  44. package/dist/api/embeddings.d.ts +17 -0
  45. package/dist/api/embeddings.js +28 -0
  46. package/dist/api/error-reply.d.ts +8 -0
  47. package/dist/api/error-reply.js +21 -0
  48. package/dist/api/forget.d.ts +11 -26
  49. package/dist/api/forget.js +23 -35
  50. package/dist/api/goals.d.ts +1 -1
  51. package/dist/api/goals.js +5 -9
  52. package/dist/api/graph.d.ts +8 -0
  53. package/dist/api/graph.js +7 -0
  54. package/dist/api/index.d.ts +6 -2
  55. package/dist/api/index.js +6 -2
  56. package/dist/api/instruction-detect.js +21 -6
  57. package/dist/api/learn.d.ts +4 -0
  58. package/dist/api/learn.js +53 -27
  59. package/dist/api/ledger-db.d.ts +2 -5
  60. package/dist/api/ledger-db.js +5 -35
  61. package/dist/api/memories.d.ts +23 -0
  62. package/dist/api/memories.js +46 -0
  63. package/dist/api/objects.d.ts +9 -0
  64. package/dist/api/objects.js +11 -0
  65. package/dist/api/on-store.js +5 -3
  66. package/dist/api/outcome.js +1 -1
  67. package/dist/api/pilot-arm.d.ts +1 -11
  68. package/dist/api/pilot-arm.js +5 -45
  69. package/dist/api/predictions.d.ts +11 -0
  70. package/dist/api/predictions.js +24 -0
  71. package/dist/api/projects.d.ts +21 -0
  72. package/dist/api/projects.js +24 -0
  73. package/dist/api/promote.d.ts +13 -17
  74. package/dist/api/promote.js +12 -20
  75. package/dist/api/prompt-hook.d.ts +19 -6
  76. package/dist/api/prompt-hook.js +54 -13
  77. package/dist/api/provenance-coverage.d.ts +14 -0
  78. package/dist/{cli → api}/provenance-coverage.js +2 -6
  79. package/dist/api/recall-cli.d.ts +58 -0
  80. package/dist/api/recall-cli.js +103 -0
  81. package/dist/api/recall-core.js +17 -9
  82. package/dist/api/recall-finish.d.ts +53 -0
  83. package/dist/api/recall-finish.js +30 -0
  84. package/dist/api/recall-history.d.ts +17 -84
  85. package/dist/api/recall-history.js +15 -88
  86. package/dist/api/recall-pipeline.d.ts +2 -3
  87. package/dist/api/recall-pipeline.js +21 -15
  88. package/dist/api/recall-request.js +1 -1
  89. package/dist/api/recall-types.d.ts +64 -304
  90. package/dist/api/recall.d.ts +3 -34
  91. package/dist/api/recall.js +63 -89
  92. package/dist/api/refine.d.ts +7 -0
  93. package/dist/api/refine.js +10 -0
  94. package/dist/api/remember-local.d.ts +57 -0
  95. package/dist/api/remember-local.js +90 -0
  96. package/dist/api/remember.d.ts +20 -2
  97. package/dist/api/remember.js +16 -3
  98. package/dist/api/session-end.d.ts +22 -0
  99. package/dist/api/session-end.js +101 -0
  100. package/dist/api/sleep-run.d.ts +2 -4
  101. package/dist/api/sleep-run.js +28 -28
  102. package/dist/api/sleep.d.ts +9 -28
  103. package/dist/api/status.d.ts +24 -0
  104. package/dist/api/status.js +40 -0
  105. package/dist/api/store-init.d.ts +4 -0
  106. package/dist/api/store-init.js +9 -0
  107. package/dist/api/tokens.d.ts +3 -10
  108. package/dist/api/tokens.js +4 -11
  109. package/dist/api/types.d.ts +8 -29
  110. package/dist/api/types.js +10 -23
  111. package/dist/capture/caller-session.d.ts +0 -3
  112. package/dist/capture/caller-session.js +1 -12
  113. package/dist/capture/capture-error.d.ts +2 -2
  114. package/dist/capture/capture-error.js +23 -18
  115. package/dist/capture/codex-patch.js +3 -1
  116. package/dist/capture/command.d.ts +4 -12
  117. package/dist/capture/command.js +39 -114
  118. package/dist/capture/compact.d.ts +4 -15
  119. package/dist/capture/compact.js +26 -30
  120. package/dist/capture/compaction-items-caller.js +11 -20
  121. package/dist/capture/compaction-record.d.ts +7 -93
  122. package/dist/capture/compaction-record.js +34 -399
  123. package/dist/capture/compaction-spool.d.ts +5 -3
  124. package/dist/capture/compaction-spool.js +21 -7
  125. package/dist/capture/copilot-transcript.d.ts +2 -1
  126. package/dist/capture/copilot-transcript.js +2 -1
  127. package/dist/capture/extract.d.ts +5 -2
  128. package/dist/capture/extract.js +4 -3
  129. package/dist/capture/failure-caller.d.ts +1 -1
  130. package/dist/capture/failure-caller.js +21 -16
  131. package/dist/capture/failure-reading.d.ts +2 -1
  132. package/dist/capture/failure-reading.js +7 -9
  133. package/dist/capture/pre-compact-caller.js +5 -4
  134. package/dist/capture/session-digest.d.ts +1 -1
  135. package/dist/capture/session-digest.js +17 -10
  136. package/dist/capture/session-end-caller.js +2 -1
  137. package/dist/capture/session-worker.js +3 -4
  138. package/dist/capture/transcript.d.ts +4 -11
  139. package/dist/capture/transcript.js +10 -21
  140. package/dist/capture/working-state.d.ts +4 -2
  141. package/dist/capture/working-state.js +4 -2
  142. package/dist/cli/api-context.d.ts +3 -0
  143. package/dist/cli/api-context.js +6 -0
  144. package/dist/cli/audit-prune.d.ts +1 -59
  145. package/dist/cli/audit-prune.js +2 -61
  146. package/dist/cli/audit.d.ts +1 -1
  147. package/dist/cli/audit.js +42 -43
  148. package/dist/cli/auth.d.ts +2 -2
  149. package/dist/cli/auth.js +61 -44
  150. package/dist/cli/briefs.d.ts +1 -4
  151. package/dist/cli/briefs.js +42 -301
  152. package/dist/cli/card.d.ts +2 -2
  153. package/dist/cli/card.js +63 -56
  154. package/dist/cli/client.d.ts +12 -27
  155. package/dist/cli/client.js +41 -44
  156. package/dist/cli/compact-resume-payload.js +4 -3
  157. package/dist/cli/context.d.ts +2 -3
  158. package/dist/cli/context.js +22 -18
  159. package/dist/cli/continuity.d.ts +6 -6
  160. package/dist/cli/continuity.js +81 -86
  161. package/dist/cli/curate.d.ts +13 -17
  162. package/dist/cli/curate.js +88 -116
  163. package/dist/cli/dag.d.ts +4 -4
  164. package/dist/cli/dag.js +55 -34
  165. package/dist/cli/decisions.d.ts +2 -4
  166. package/dist/cli/decisions.js +18 -309
  167. package/dist/cli/eval.d.ts +1 -1
  168. package/dist/cli/eval.js +27 -26
  169. package/dist/cli/exit.d.ts +6 -0
  170. package/dist/cli/exit.js +11 -0
  171. package/dist/cli/explain.d.ts +2 -3
  172. package/dist/cli/explain.js +25 -27
  173. package/dist/cli/flag-values.d.ts +6 -1
  174. package/dist/cli/flag-values.js +42 -15
  175. package/dist/cli/flags.d.ts +0 -288
  176. package/dist/cli/flags.js +3 -138
  177. package/dist/cli/github.d.ts +14 -0
  178. package/dist/{connectors/github/cli-impl.js → cli/github.js} +43 -71
  179. package/dist/cli/goals.d.ts +2 -2
  180. package/dist/cli/goals.js +46 -50
  181. package/dist/cli/graph.d.ts +3 -0
  182. package/dist/cli/graph.js +83 -0
  183. package/dist/cli/hook-runtime.d.ts +12 -32
  184. package/dist/cli/hook-runtime.js +21 -64
  185. package/dist/cli/incidents.d.ts +3 -0
  186. package/dist/cli/incidents.js +112 -0
  187. package/dist/cli/init.d.ts +2 -2
  188. package/dist/cli/init.js +33 -30
  189. package/dist/cli/install-steps.d.ts +2 -1
  190. package/dist/cli/install-steps.js +13 -14
  191. package/dist/cli/last-sleep.d.ts +2 -1
  192. package/dist/cli/last-sleep.js +4 -1
  193. package/dist/cli/lenient-id.d.ts +2 -0
  194. package/dist/cli/lenient-id.js +13 -0
  195. package/dist/cli/maintenance.d.ts +5 -5
  196. package/dist/cli/maintenance.js +37 -43
  197. package/dist/cli/notes.d.ts +2 -0
  198. package/dist/cli/notes.js +41 -0
  199. package/dist/cli/object-verbs.js +4 -3
  200. package/dist/cli/open-browser.d.ts +14 -0
  201. package/dist/cli/open-browser.js +26 -0
  202. package/dist/cli/owner-validation.d.ts +5 -28
  203. package/dist/cli/owner-validation.js +5 -28
  204. package/dist/cli/playbooks.d.ts +3 -4
  205. package/dist/cli/playbooks.js +131 -300
  206. package/dist/cli/predictions.d.ts +3 -0
  207. package/dist/cli/predictions.js +175 -0
  208. package/dist/cli/print.d.ts +2 -5
  209. package/dist/cli/print.js +3 -5
  210. package/dist/cli/projects.d.ts +2 -2
  211. package/dist/cli/projects.js +31 -25
  212. package/dist/cli/quality-repair-once.d.ts +1 -1
  213. package/dist/cli/quality-repair-once.js +7 -6
  214. package/dist/cli/recall.d.ts +2 -4
  215. package/dist/cli/recall.js +67 -137
  216. package/dist/cli/refine-llm.d.ts +5 -31
  217. package/dist/cli/refine-llm.js +23 -50
  218. package/dist/cli/remember.d.ts +3 -3
  219. package/dist/cli/remember.js +134 -192
  220. package/dist/cli/scheduler.d.ts +2 -17
  221. package/dist/cli/scheduler.js +14 -19
  222. package/dist/cli/serve.js +23 -14
  223. package/dist/cli/session-hooks.d.ts +11 -19
  224. package/dist/cli/session-hooks.js +143 -214
  225. package/dist/cli/setup.d.ts +4 -4
  226. package/dist/cli/setup.js +35 -30
  227. package/dist/cli/shared.d.ts +7 -25
  228. package/dist/cli/shared.js +17 -60
  229. package/dist/cli/slack.d.ts +2 -2
  230. package/dist/cli/slack.js +19 -23
  231. package/dist/cli/sleep-render.js +6 -3
  232. package/dist/cli/sleep.d.ts +3 -2
  233. package/dist/cli/sleep.js +17 -49
  234. package/dist/cli/status.d.ts +11 -14
  235. package/dist/cli/status.js +74 -120
  236. package/dist/cli/stdin.d.ts +4 -6
  237. package/dist/cli/stdin.js +2 -3
  238. package/dist/cli/transfer.d.ts +9 -9
  239. package/dist/cli/transfer.js +87 -108
  240. package/dist/cli/usage.d.ts +0 -79
  241. package/dist/cli/usage.js +1 -689
  242. package/dist/cli/verb-row.d.ts +32 -0
  243. package/dist/cli/verb-row.js +6 -0
  244. package/dist/cli/verbs/health.d.ts +27 -0
  245. package/dist/cli/verbs/health.js +232 -0
  246. package/dist/cli/verbs/memory.d.ts +16 -0
  247. package/dist/cli/verbs/memory.js +244 -0
  248. package/dist/cli/verbs/objects.d.ts +20 -0
  249. package/dist/cli/verbs/objects.js +254 -0
  250. package/dist/cli/verbs/sessions.d.ts +31 -0
  251. package/dist/cli/verbs/sessions.js +312 -0
  252. package/dist/cli/verbs.d.ts +81 -0
  253. package/dist/cli/verbs.js +7 -0
  254. package/dist/cli/versioned-verbs.d.ts +51 -0
  255. package/dist/cli/versioned-verbs.js +79 -0
  256. package/dist/cli.d.ts +1 -654
  257. package/dist/cli.js +44 -510
  258. package/dist/connectors/dlq.d.ts +39 -3
  259. package/dist/connectors/dlq.js +37 -3
  260. package/dist/connectors/github/backfill.d.ts +5 -25
  261. package/dist/connectors/github/backfill.js +26 -52
  262. package/dist/connectors/github/deletion.d.ts +4 -18
  263. package/dist/connectors/github/deletion.js +2 -15
  264. package/dist/connectors/github/dlq.d.ts +8 -33
  265. package/dist/connectors/github/dlq.js +34 -93
  266. package/dist/connectors/github/ingest.d.ts +4 -12
  267. package/dist/connectors/github/ingest.js +5 -36
  268. package/dist/connectors/github/octokit-client.d.ts +4 -16
  269. package/dist/connectors/github/octokit-client.js +27 -24
  270. package/dist/connectors/github/ratelimit.d.ts +3 -14
  271. package/dist/connectors/github/ratelimit.js +3 -14
  272. package/dist/connectors/github/scope.d.ts +3 -5
  273. package/dist/connectors/github/scope.js +3 -5
  274. package/dist/connectors/github/signature.d.ts +4 -26
  275. package/dist/connectors/github/signature.js +4 -26
  276. package/dist/connectors/github/tenant-routing.d.ts +2 -24
  277. package/dist/connectors/github/tenant-routing.js +4 -26
  278. package/dist/connectors/github/transform.js +2 -16
  279. package/dist/connectors/github/types.d.ts +3 -15
  280. package/dist/connectors/github/types.js +2 -9
  281. package/dist/connectors/github/webhook.d.ts +3 -16
  282. package/dist/connectors/github/webhook.js +38 -23
  283. package/dist/connectors/ingest.d.ts +10 -0
  284. package/dist/connectors/ingest.js +28 -0
  285. package/dist/connectors/slack/backfill.d.ts +4 -17
  286. package/dist/connectors/slack/backfill.js +4 -13
  287. package/dist/connectors/slack/dlq.d.ts +2 -19
  288. package/dist/connectors/slack/dlq.js +51 -90
  289. package/dist/connectors/slack/ingest.d.ts +4 -9
  290. package/dist/connectors/slack/ingest.js +4 -30
  291. package/dist/connectors/slack/scope.d.ts +2 -8
  292. package/dist/connectors/slack/scope.js +2 -8
  293. package/dist/connectors/slack/signature.d.ts +1 -6
  294. package/dist/connectors/slack/tenant-routing.d.ts +2 -19
  295. package/dist/connectors/slack/tenant-routing.js +2 -21
  296. package/dist/connectors/slack/transform.d.ts +2 -18
  297. package/dist/connectors/slack/transform.js +2 -18
  298. package/dist/connectors/slack/types.d.ts +3 -9
  299. package/dist/connectors/slack/types.js +2 -4
  300. package/dist/connectors/slack/web-client.js +33 -27
  301. package/dist/connectors/slack/webhook.d.ts +3 -19
  302. package/dist/connectors/slack/webhook.js +6 -26
  303. package/dist/connectors/slack/workspaces.d.ts +4 -24
  304. package/dist/connectors/slack/workspaces.js +4 -24
  305. package/dist/consolidate/conflicts.js +7 -15
  306. package/dist/consolidate/dag-summary.d.ts +8 -0
  307. package/dist/consolidate/dag-summary.js +41 -0
  308. package/dist/consolidate/dag.d.ts +5 -28
  309. package/dist/consolidate/dag.js +29 -84
  310. package/dist/consolidate/decay.js +7 -19
  311. package/dist/consolidate/dedupe.d.ts +13 -52
  312. package/dist/consolidate/dedupe.js +18 -74
  313. package/dist/consolidate/flush-units.d.ts +3 -4
  314. package/dist/consolidate/flush-units.js +3 -3
  315. package/dist/consolidate/half-life-migration.d.ts +3 -26
  316. package/dist/consolidate/half-life-migration.js +11 -28
  317. package/dist/consolidate/llm-passes.js +49 -40
  318. package/dist/consolidate/memory-value-weights.d.ts +2 -13
  319. package/dist/consolidate/memory-value-weights.js +2 -13
  320. package/dist/consolidate/memory-value.d.ts +11 -84
  321. package/dist/consolidate/memory-value.js +18 -105
  322. package/dist/consolidate/merge.js +12 -33
  323. package/dist/consolidate/physics-pass.d.ts +6 -1
  324. package/dist/consolidate/physics-pass.js +27 -9
  325. package/dist/consolidate/replay.d.ts +6 -38
  326. package/dist/consolidate/replay.js +25 -56
  327. package/dist/consolidate/run.js +1 -1
  328. package/dist/consolidate/sleep.d.ts +1 -8
  329. package/dist/consolidate/sleep.js +13 -22
  330. package/dist/consolidate/trace.d.ts +3 -18
  331. package/dist/consolidate/trace.js +3 -18
  332. package/dist/consolidate/traces.js +9 -25
  333. package/dist/core/ablation.d.ts +14 -91
  334. package/dist/core/ablation.js +16 -91
  335. package/dist/core/active-scope.d.ts +7 -0
  336. package/dist/{sharing/scope.js → core/active-scope.js} +5 -12
  337. package/dist/core/ambient.d.ts +5 -8
  338. package/dist/core/ambient.js +40 -26
  339. package/dist/core/api-errors.d.ts +16 -0
  340. package/dist/core/api-errors.js +20 -0
  341. package/dist/core/capture-contract.d.ts +4 -2
  342. package/dist/core/capture-contract.js +4 -2
  343. package/dist/core/card.d.ts +4 -1
  344. package/dist/core/card.js +11 -1
  345. package/dist/core/compaction-timing.d.ts +7 -0
  346. package/dist/core/compaction-timing.js +9 -0
  347. package/dist/core/compare.d.ts +11 -67
  348. package/dist/core/compare.js +9 -63
  349. package/dist/core/config.d.ts +10 -24
  350. package/dist/core/config.js +20 -16
  351. package/dist/core/cosine.d.ts +3 -0
  352. package/dist/core/cosine.js +19 -0
  353. package/dist/core/handoff.d.ts +1 -7
  354. package/dist/core/handoff.js +1 -7
  355. package/dist/core/markdown.d.ts +6 -0
  356. package/dist/{store → core}/markdown.js +23 -22
  357. package/dist/core/memory-audit.d.ts +17 -0
  358. package/dist/core/memory-audit.js +54 -0
  359. package/dist/core/memory-quality.js +1 -1
  360. package/dist/core/memory.d.ts +51 -168
  361. package/dist/core/memory.js +76 -239
  362. package/dist/{consolidate → core}/merged-row.d.ts +1 -1
  363. package/dist/{consolidate → core}/merged-row.js +3 -2
  364. package/dist/core/package-root.d.ts +3 -0
  365. package/dist/core/package-root.js +5 -0
  366. package/dist/core/physics-config.d.ts +1 -4
  367. package/dist/core/physics-config.js +3 -8
  368. package/dist/core/physics.d.ts +15 -61
  369. package/dist/core/physics.js +65 -138
  370. package/dist/core/prediction.d.ts +3 -0
  371. package/dist/core/prediction.js +6 -0
  372. package/dist/core/project-identity.d.ts +20 -58
  373. package/dist/core/project-identity.js +27 -39
  374. package/dist/core/project-remote.js +13 -2
  375. package/dist/core/raw-append-only.d.ts +5 -0
  376. package/dist/core/raw-append-only.js +7 -0
  377. package/dist/core/recall-scope.d.ts +69 -0
  378. package/dist/core/recall-scope.js +138 -0
  379. package/dist/core/salience.d.ts +1 -7
  380. package/dist/core/salience.js +1 -7
  381. package/dist/dashboard/dashboard-actions.js +2 -2
  382. package/dist/dashboard/dashboard-snapshot.d.ts +2 -1
  383. package/dist/dashboard/dashboard-snapshot.js +11 -2
  384. package/dist/dashboard/dashboard-types.d.ts +2 -1
  385. package/dist/dashboard/dashboard.d.ts +1 -0
  386. package/dist/dashboard/dashboard.js +50 -4
  387. package/dist/db/busy.d.ts +3 -8
  388. package/dist/db/busy.js +37 -33
  389. package/dist/db/connect.js +7 -8
  390. package/dist/db/index.d.ts +3 -3
  391. package/dist/db/index.js +3 -3
  392. package/dist/db/migrate.js +3 -3
  393. package/dist/db/migrations/index.d.ts +1 -1
  394. package/dist/db/migrations/index.js +3 -1
  395. package/dist/db/migrations/types.d.ts +2 -5
  396. package/dist/db/migrations/v14.js +2 -3
  397. package/dist/db/migrations/v15.js +2 -8
  398. package/dist/db/migrations/v16.js +2 -3
  399. package/dist/db/migrations/v17.js +2 -3
  400. package/dist/db/migrations/v19.js +2 -5
  401. package/dist/db/migrations/v20.js +2 -7
  402. package/dist/db/migrations/v22.js +4 -17
  403. package/dist/db/migrations/v23.js +3 -14
  404. package/dist/db/migrations/v24.js +2 -4
  405. package/dist/db/migrations/v25.js +3 -8
  406. package/dist/db/migrations/v26.js +2 -13
  407. package/dist/db/migrations/v27.js +3 -11
  408. package/dist/db/migrations/v28.js +2 -14
  409. package/dist/db/migrations/v29.js +4 -18
  410. package/dist/db/migrations/v30.js +4 -16
  411. package/dist/db/migrations/v31.js +2 -15
  412. package/dist/db/migrations/v32.js +4 -22
  413. package/dist/db/migrations/v33.js +2 -15
  414. package/dist/db/migrations/v34.js +2 -11
  415. package/dist/db/migrations/v35.js +2 -11
  416. package/dist/db/migrations/v36.js +2 -11
  417. package/dist/db/migrations/v37.js +8 -33
  418. package/dist/db/migrations/v38.js +5 -38
  419. package/dist/db/migrations/v39.js +9 -20
  420. package/dist/db/migrations/v40.js +2 -9
  421. package/dist/db/migrations/v41.js +2 -24
  422. package/dist/db/migrations/v43.js +1 -1
  423. package/dist/db/migrations/v44.js +2 -8
  424. package/dist/db/migrations/v45.js +2 -7
  425. package/dist/db/migrations/v47.js +2 -3
  426. package/dist/db/migrations/v51.js +1 -1
  427. package/dist/db/migrations/v55.d.ts +3 -0
  428. package/dist/db/migrations/v55.js +17 -0
  429. package/dist/db/open.d.ts +2 -2
  430. package/dist/db/open.js +21 -9
  431. package/dist/db/physics-state.d.ts +6 -22
  432. package/dist/db/physics-state.js +28 -39
  433. package/dist/db/raw-archive-mirror-cleanup.d.ts +2 -17
  434. package/dist/db/raw-archive-mirror-cleanup.js +2 -17
  435. package/dist/db/tables.d.ts +2 -0
  436. package/dist/db/tables.js +6 -2
  437. package/dist/db/vector-store.d.ts +2 -0
  438. package/dist/db/vector-store.js +25 -5
  439. package/dist/db/wal-checkpointer.js +2 -1
  440. package/dist/doctor.js +85 -27
  441. package/dist/embeddings/local.d.ts +62 -0
  442. package/dist/embeddings/local.js +146 -0
  443. package/dist/embeddings/provider.d.ts +43 -0
  444. package/dist/{store/embeddings → embeddings}/provider.js +58 -83
  445. package/dist/embeddings/transformers.d.ts +26 -0
  446. package/dist/embeddings/transformers.js +89 -0
  447. package/dist/entry/session-text.d.ts +1 -1
  448. package/dist/entry/session-text.js +3 -2
  449. package/dist/eval/eval-stats.d.ts +15 -53
  450. package/dist/eval/eval-stats.js +12 -42
  451. package/dist/eval/eval-suite.d.ts +2 -13
  452. package/dist/eval/eval-suite.js +91 -45
  453. package/dist/eval/eval.d.ts +6 -24
  454. package/dist/eval/eval.js +8 -35
  455. package/dist/eval/judgment.d.ts +0 -3
  456. package/dist/eval/judgment.js +30 -15
  457. package/dist/extensions/openclaw-plugin/index.js +1 -1
  458. package/dist/graph/extract.d.ts +5 -27
  459. package/dist/graph/extract.js +10 -36
  460. package/dist/graph/recall.d.ts +7 -20
  461. package/dist/graph/recall.js +15 -77
  462. package/dist/graph/stream.d.ts +7 -39
  463. package/dist/graph/stream.js +11 -34
  464. package/dist/graph/view.d.ts +9 -35
  465. package/dist/graph/view.js +24 -44
  466. package/dist/graph/write.d.ts +1 -1
  467. package/dist/graph/write.js +9 -9
  468. package/dist/hooks/codex-session.js +3 -2
  469. package/dist/hooks/codex-wrapper.js +4 -3
  470. package/dist/hooks/copilot.js +2 -1
  471. package/dist/hooks/hook-blocks.d.ts +6 -2
  472. package/dist/hooks/hook-blocks.js +37 -124
  473. package/dist/hooks/json-hooks.d.ts +4 -36
  474. package/dist/hooks/json-hooks.js +22 -59
  475. package/dist/hooks/opencode.d.ts +0 -38
  476. package/dist/hooks/opencode.js +17 -81
  477. package/dist/hooks/shared.d.ts +6 -21
  478. package/dist/hooks/shared.js +31 -33
  479. package/dist/importers/core.d.ts +12 -37
  480. package/dist/importers/core.js +10 -28
  481. package/dist/importers/markdown-parse.d.ts +8 -22
  482. package/dist/importers/markdown-parse.js +8 -25
  483. package/dist/importers/markdown.js +3 -12
  484. package/dist/importers/sources.js +12 -39
  485. package/dist/importers/vault.d.ts +2 -8
  486. package/dist/importers/vault.js +31 -85
  487. package/dist/index.d.ts +8 -3
  488. package/dist/index.js +8 -3
  489. package/dist/learn/autolearn.d.ts +23 -42
  490. package/dist/learn/autolearn.js +45 -52
  491. package/dist/learn/churn-git.js +13 -4
  492. package/dist/learn/extract.d.ts +3 -2
  493. package/dist/learn/extract.js +8 -8
  494. package/dist/learn/forward-claim-detector.d.ts +6 -30
  495. package/dist/learn/forward-claim-detector.js +18 -68
  496. package/dist/learn/invalidation.d.ts +6 -18
  497. package/dist/learn/invalidation.js +18 -31
  498. package/dist/mcp/admin-tools.d.ts +2 -2
  499. package/dist/mcp/admin-tools.js +30 -53
  500. package/dist/mcp/format.js +3 -2
  501. package/dist/mcp/framing.d.ts +1 -0
  502. package/dist/mcp/framing.js +1 -1
  503. package/dist/mcp/memory-tools.js +7 -10
  504. package/dist/mcp/protocol.d.ts +15 -29
  505. package/dist/mcp/protocol.js +26 -16
  506. package/dist/mcp/recall-tools.js +14 -11
  507. package/dist/mcp/request.d.ts +3 -11
  508. package/dist/mcp/request.js +12 -27
  509. package/dist/mcp/server.d.ts +3 -9
  510. package/dist/mcp/server.js +5 -16
  511. package/dist/mcp/session-state.d.ts +1 -1
  512. package/dist/mcp/session-state.js +5 -11
  513. package/dist/mcp/stdio.d.ts +2 -6
  514. package/dist/mcp/stdio.js +68 -16
  515. package/dist/mcp/tool-args.js +2 -1
  516. package/dist/mcp/tools.js +47 -22
  517. package/dist/objects/customer-notes.d.ts +9 -44
  518. package/dist/objects/customer-notes.js +7 -48
  519. package/dist/objects/decisions.d.ts +14 -52
  520. package/dist/objects/decisions.js +15 -53
  521. package/dist/objects/descriptor.d.ts +1 -1
  522. package/dist/objects/incidents.d.ts +9 -40
  523. package/dist/objects/incidents.js +7 -41
  524. package/dist/objects/lifecycle.d.ts +1 -1
  525. package/dist/objects/lifecycle.js +2 -1
  526. package/dist/objects/policies.d.ts +13 -91
  527. package/dist/objects/policies.js +13 -99
  528. package/dist/objects/processes.d.ts +9 -54
  529. package/dist/objects/processes.js +7 -61
  530. package/dist/objects/project-briefs.d.ts +13 -57
  531. package/dist/objects/project-briefs.js +16 -78
  532. package/dist/objects/skills.d.ts +9 -44
  533. package/dist/objects/skills.js +8 -54
  534. package/dist/postinstall.js +7 -20
  535. package/dist/predictions/planning-fallacy.d.ts +11 -34
  536. package/dist/rerankers/clef.js +6 -37
  537. package/dist/rerankers/cross-encoder.d.ts +31 -2
  538. package/dist/rerankers/cross-encoder.js +65 -101
  539. package/dist/rerankers/index.js +5 -4
  540. package/dist/rerankers/jev.js +11 -10
  541. package/dist/rerankers/llm.d.ts +2 -11
  542. package/dist/rerankers/llm.js +14 -14
  543. package/dist/rerankers/outage-warning.d.ts +5 -2
  544. package/dist/rerankers/outage-warning.js +7 -4
  545. package/dist/rerankers/remote.d.ts +1 -0
  546. package/dist/rerankers/remote.js +2 -0
  547. package/dist/rerankers/types.d.ts +2 -14
  548. package/dist/search/bm25-search.js +1 -1
  549. package/dist/search/boosts.d.ts +0 -2
  550. package/dist/search/boosts.js +3 -3
  551. package/dist/search/embed-memories.d.ts +9 -0
  552. package/dist/search/embed-memories.js +377 -0
  553. package/dist/search/goal-boost.d.ts +23 -0
  554. package/dist/search/goal-boost.js +93 -0
  555. package/dist/search/hybrid.d.ts +11 -2
  556. package/dist/search/hybrid.js +9 -4
  557. package/dist/search/multihop.js +2 -3
  558. package/dist/search/path-context.d.ts +5 -18
  559. package/dist/search/path-context.js +5 -18
  560. package/dist/search/physics-search.d.ts +6 -3
  561. package/dist/search/physics-search.js +29 -19
  562. package/dist/search/rerank.js +1 -1
  563. package/dist/search/rrf.d.ts +7 -35
  564. package/dist/search/rrf.js +5 -30
  565. package/dist/search/vector.d.ts +13 -4
  566. package/dist/search/vector.js +40 -13
  567. package/dist/server/auth.d.ts +11 -28
  568. package/dist/server/auth.js +49 -32
  569. package/dist/server/boot.d.ts +2 -21
  570. package/dist/server/boot.js +69 -161
  571. package/dist/server/client-ip.d.ts +3 -21
  572. package/dist/server/client-ip.js +8 -30
  573. package/dist/server/deadline.d.ts +0 -2
  574. package/dist/server/deadline.js +1 -7
  575. package/dist/server/defaults.d.ts +4 -0
  576. package/dist/server/defaults.js +5 -0
  577. package/dist/server/key-check-bounds.d.ts +2 -1
  578. package/dist/server/lifecycle.d.ts +5 -4
  579. package/dist/server/lifecycle.js +19 -4
  580. package/dist/server/mcp-http.js +24 -53
  581. package/dist/server/rate-limit.d.ts +5 -18
  582. package/dist/server/rate-limit.js +4 -13
  583. package/dist/server/request.d.ts +4 -8
  584. package/dist/server/request.js +16 -19
  585. package/dist/server/route-checks.d.ts +7 -0
  586. package/dist/server/route-checks.js +42 -0
  587. package/dist/server/route-table.d.ts +9 -8
  588. package/dist/server/route-table.js +127 -139
  589. package/dist/server/routes/admin.d.ts +8 -8
  590. package/dist/server/routes/admin.js +35 -49
  591. package/dist/server/routes/customer-notes.d.ts +6 -6
  592. package/dist/server/routes/customer-notes.js +8 -14
  593. package/dist/server/routes/decisions.d.ts +6 -6
  594. package/dist/server/routes/decisions.js +12 -21
  595. package/dist/server/routes/incidents.d.ts +6 -6
  596. package/dist/server/routes/incidents.js +14 -25
  597. package/dist/server/routes/memories.d.ts +9 -9
  598. package/dist/server/routes/memories.js +20 -63
  599. package/dist/server/routes/object-routes.d.ts +6 -11
  600. package/dist/server/routes/object-routes.js +11 -22
  601. package/dist/server/routes/policies.d.ts +7 -7
  602. package/dist/server/routes/policies.js +12 -22
  603. package/dist/server/routes/predictions.d.ts +6 -6
  604. package/dist/server/routes/predictions.js +22 -38
  605. package/dist/server/routes/processes.d.ts +6 -6
  606. package/dist/server/routes/processes.js +17 -28
  607. package/dist/server/routes/project-briefs.d.ts +7 -7
  608. package/dist/server/routes/project-briefs.js +11 -20
  609. package/dist/server/routes/recall.d.ts +5 -5
  610. package/dist/server/routes/recall.js +16 -45
  611. package/dist/server/routes/skills.d.ts +7 -7
  612. package/dist/server/routes/skills.js +10 -22
  613. package/dist/server/server-detect.d.ts +15 -53
  614. package/dist/server/server-detect.js +55 -96
  615. package/dist/server/sleep-child.js +26 -7
  616. package/dist/server/sleep-offload.d.ts +11 -5
  617. package/dist/server/sleep-offload.js +21 -12
  618. package/dist/server/types.d.ts +32 -18
  619. package/dist/server/validation.d.ts +3 -2
  620. package/dist/server/validation.js +15 -33
  621. package/dist/server.d.ts +7 -6
  622. package/dist/server.js +8 -6
  623. package/dist/sharing/global-store.d.ts +19 -0
  624. package/dist/sharing/global-store.js +75 -0
  625. package/dist/sharing/global-sync.d.ts +6 -0
  626. package/dist/sharing/global-sync.js +73 -0
  627. package/dist/sharing/project-merge.d.ts +11 -19
  628. package/dist/sharing/project-merge.js +63 -125
  629. package/dist/sharing/search-both.d.ts +60 -0
  630. package/dist/sharing/search-both.js +138 -0
  631. package/dist/sharing/share.d.ts +40 -0
  632. package/dist/sharing/share.js +229 -0
  633. package/dist/store/ambient.js +9 -15
  634. package/dist/store/audit-event.d.ts +5 -13
  635. package/dist/store/audit-event.js +4 -12
  636. package/dist/store/audit.d.ts +2 -21
  637. package/dist/store/audit.js +8 -67
  638. package/dist/store/auth.d.ts +10 -8
  639. package/dist/store/auth.js +17 -12
  640. package/dist/store/candidates.d.ts +23 -5
  641. package/dist/store/candidates.js +119 -71
  642. package/dist/store/capture-write.d.ts +17 -0
  643. package/dist/store/capture-write.js +35 -0
  644. package/dist/store/card-detail.d.ts +2 -1
  645. package/dist/store/card-detail.js +2 -1
  646. package/dist/store/cards.d.ts +14 -9
  647. package/dist/store/cards.js +72 -126
  648. package/dist/store/compaction-caller.d.ts +18 -0
  649. package/dist/store/compaction-caller.js +29 -0
  650. package/dist/store/compactions-record.d.ts +115 -0
  651. package/dist/store/compactions-record.js +417 -0
  652. package/dist/store/compactions.js +6 -4
  653. package/dist/store/conflicts.d.ts +4 -21
  654. package/dist/store/conflicts.js +76 -152
  655. package/dist/store/connectors/dlq.d.ts +10 -0
  656. package/dist/store/connectors/dlq.js +32 -0
  657. package/dist/store/connectors/github.d.ts +14 -16
  658. package/dist/store/connectors/github.js +34 -57
  659. package/dist/store/connectors/slack.d.ts +2 -11
  660. package/dist/store/connectors/slack.js +18 -47
  661. package/dist/store/dashboard-reads.js +11 -14
  662. package/dist/store/delete-and-batch.d.ts +17 -31
  663. package/dist/store/delete-and-batch.js +84 -67
  664. package/dist/store/delivery-recorder.d.ts +15 -4
  665. package/dist/store/delivery-recorder.js +34 -17
  666. package/dist/store/descendant-page.js +6 -3
  667. package/dist/store/diagnostics.js +6 -13
  668. package/dist/store/dormant.d.ts +8 -30
  669. package/dist/store/dormant.js +18 -57
  670. package/dist/store/embeddings/index.d.ts +11 -90
  671. package/dist/store/embeddings/index.js +18 -523
  672. package/dist/store/entry-reads.d.ts +34 -61
  673. package/dist/store/entry-reads.js +111 -136
  674. package/dist/store/entry-row.d.ts +6 -35
  675. package/dist/store/entry-row.js +9 -37
  676. package/dist/store/entry-writes.d.ts +12 -18
  677. package/dist/store/entry-writes.js +46 -44
  678. package/dist/store/failure-log-at.d.ts +8 -0
  679. package/dist/store/failure-log-at.js +16 -0
  680. package/dist/store/failure-log.d.ts +2 -2
  681. package/dist/store/failure-log.js +5 -3
  682. package/dist/{trust → store}/gated-write.d.ts +3 -1
  683. package/dist/{trust → store}/gated-write.js +7 -5
  684. package/dist/store/goals.d.ts +3 -40
  685. package/dist/store/goals.js +41 -178
  686. package/dist/store/graph-queue.d.ts +6 -22
  687. package/dist/store/graph-queue.js +14 -45
  688. package/dist/store/graph-reads.d.ts +11 -35
  689. package/dist/store/graph-reads.js +24 -60
  690. package/dist/store/graph-rows.d.ts +3 -6
  691. package/dist/store/graph-rows.js +6 -9
  692. package/dist/store/graph-view-rows.d.ts +2 -1
  693. package/dist/store/graph-view-rows.js +2 -1
  694. package/dist/store/graph-writes.d.ts +10 -35
  695. package/dist/store/graph-writes.js +59 -106
  696. package/dist/store/half-life.d.ts +2 -1
  697. package/dist/store/half-life.js +14 -16
  698. package/dist/store/handoffs.d.ts +6 -12
  699. package/dist/store/handoffs.js +22 -40
  700. package/dist/store/index-and-stats.d.ts +6 -19
  701. package/dist/store/index-and-stats.js +36 -84
  702. package/dist/store/key-writes.js +1 -1
  703. package/dist/store/ledger-turn.d.ts +9 -0
  704. package/dist/store/ledger-turn.js +38 -0
  705. package/dist/store/mirrors.d.ts +2 -6
  706. package/dist/store/mirrors.js +24 -29
  707. package/dist/store/open.d.ts +0 -4
  708. package/dist/store/open.js +42 -62
  709. package/dist/store/pilot-arm.d.ts +12 -0
  710. package/dist/store/pilot-arm.js +42 -0
  711. package/dist/store/planning-fallacy-evidence.d.ts +2 -30
  712. package/dist/store/planning-fallacy-evidence.js +8 -37
  713. package/dist/store/port.d.ts +91 -82
  714. package/dist/store/port.js +8 -0
  715. package/dist/store/predictions.d.ts +12 -53
  716. package/dist/store/predictions.js +41 -125
  717. package/dist/store/project-tags.d.ts +62 -0
  718. package/dist/store/project-tags.js +67 -0
  719. package/dist/{cli → store}/quality-repair.js +15 -31
  720. package/dist/store/quarantine.js +2 -1
  721. package/dist/store/raw-archive.d.ts +4 -16
  722. package/dist/store/raw-archive.js +14 -29
  723. package/dist/store/recall-trace.d.ts +12 -77
  724. package/dist/store/recall-trace.js +37 -97
  725. package/dist/store/rejected-values.js +9 -20
  726. package/dist/store/rejection-probe.d.ts +4 -0
  727. package/dist/store/rejection-probe.js +19 -0
  728. package/dist/store/rejection.d.ts +10 -73
  729. package/dist/store/rejection.js +12 -84
  730. package/dist/store/report-reads.d.ts +6 -0
  731. package/dist/store/report-reads.js +29 -0
  732. package/dist/store/rows.d.ts +9 -19
  733. package/dist/store/rows.js +36 -34
  734. package/dist/store/rule-sql.d.ts +14 -0
  735. package/dist/store/rule-sql.js +56 -0
  736. package/dist/store/search-rows.d.ts +7 -38
  737. package/dist/store/search-rows.js +23 -54
  738. package/dist/store/sessions.d.ts +10 -47
  739. package/dist/store/sessions.js +21 -75
  740. package/dist/store/set-aside.d.ts +14 -0
  741. package/dist/store/set-aside.js +23 -0
  742. package/dist/store/sqlite/busy.d.ts +3 -0
  743. package/dist/store/sqlite/busy.js +8 -0
  744. package/dist/store/sqlite/connector-events-group.js +5 -8
  745. package/dist/store/sqlite/connector-writes-group.js +3 -3
  746. package/dist/store/sqlite/entry-writes-group.js +4 -4
  747. package/dist/store/sqlite/error-codec.js +8 -5
  748. package/dist/store/sqlite/executor.d.ts +2 -1
  749. package/dist/store/sqlite/executor.js +12 -5
  750. package/dist/store/sqlite/graph-reads-group.js +1 -1
  751. package/dist/store/sqlite/held-connection.d.ts +9 -0
  752. package/dist/store/sqlite/held-connection.js +41 -0
  753. package/dist/store/sqlite/local.d.ts +3 -3
  754. package/dist/store/sqlite/local.js +1 -0
  755. package/dist/store/sqlite/object-rows.d.ts +1 -1
  756. package/dist/store/sqlite/object-rows.js +6 -3
  757. package/dist/store/sqlite/objects-group.d.ts +1 -1
  758. package/dist/store/sqlite/objects-group.js +5 -3
  759. package/dist/store/sqlite/quarantine-group.js +2 -2
  760. package/dist/store/sqlite/store.d.ts +1 -4
  761. package/dist/store/sqlite/store.js +16 -15
  762. package/dist/store/sqlite/vector-reads-group.js +2 -2
  763. package/dist/store/sqlite/worker-jobs.js +1 -1
  764. package/dist/store/sqlite/worker-ops.d.ts +13 -2
  765. package/dist/store/sqlite/worker-ops.js +13 -2
  766. package/dist/store/sqlite/worker-store.js +5 -2
  767. package/dist/store/summaries.d.ts +11 -63
  768. package/dist/store/summaries.js +37 -148
  769. package/dist/store/summary-dirty.js +1 -1
  770. package/dist/store/tenant-lookup.d.ts +6 -1
  771. package/dist/store/tenant-lookup.js +7 -0
  772. package/dist/store/tenant.d.ts +2 -16
  773. package/dist/store/tenant.js +4 -19
  774. package/dist/store/token-ledger.d.ts +13 -50
  775. package/dist/store/token-ledger.js +19 -85
  776. package/dist/store/usage-reports.js +5 -13
  777. package/dist/store/vector-index.d.ts +46 -0
  778. package/dist/store/vector-index.js +171 -0
  779. package/dist/store/working-memory.d.ts +6 -25
  780. package/dist/store/working-memory.js +18 -52
  781. package/dist/support-bundle.js +9 -8
  782. package/dist/trust/reject-flow.js +3 -5
  783. package/dist/util/agent-homes.d.ts +15 -0
  784. package/dist/util/agent-homes.js +34 -0
  785. package/dist/util/anthropic-messages.d.ts +3 -0
  786. package/dist/util/anthropic-messages.js +35 -6
  787. package/dist/util/atomic-write.d.ts +2 -1
  788. package/dist/util/atomic-write.js +35 -4
  789. package/dist/util/capped-json.d.ts +6 -0
  790. package/dist/util/capped-json.js +46 -0
  791. package/dist/util/chunked.d.ts +3 -0
  792. package/dist/util/chunked.js +10 -0
  793. package/dist/util/crash-handlers.d.ts +8 -1
  794. package/dist/util/crash-handlers.js +52 -10
  795. package/dist/util/ellipsize.d.ts +3 -0
  796. package/dist/util/ellipsize.js +5 -0
  797. package/dist/util/env.d.ts +14 -6
  798. package/dist/util/env.js +15 -7
  799. package/dist/util/format.d.ts +3 -0
  800. package/dist/util/format.js +6 -0
  801. package/dist/util/home-path.d.ts +2 -1
  802. package/dist/util/home-path.js +4 -2
  803. package/dist/util/hook-payload.d.ts +8 -0
  804. package/dist/util/hook-payload.js +37 -0
  805. package/dist/util/http-retry.d.ts +9 -1
  806. package/dist/util/http-retry.js +67 -8
  807. package/dist/util/http-util.d.ts +0 -8
  808. package/dist/util/http-util.js +10 -21
  809. package/dist/util/limits.d.ts +7 -0
  810. package/dist/util/limits.js +14 -0
  811. package/dist/util/log.d.ts +7 -2
  812. package/dist/util/log.js +34 -9
  813. package/dist/util/request-scope.d.ts +5 -2
  814. package/dist/util/request-scope.js +13 -7
  815. package/dist/util/secret-detect.d.ts +5 -30
  816. package/dist/util/secret-detect.js +19 -40
  817. package/dist/util/sqlite-blocked.d.ts +2 -0
  818. package/dist/util/sqlite-blocked.js +5 -0
  819. package/dist/util/stored-json.d.ts +1 -1
  820. package/dist/util/stored-json.js +1 -1
  821. package/dist/util/stream-tee.d.ts +3 -0
  822. package/dist/util/stream-tee.js +35 -0
  823. package/dist/util/time.d.ts +4 -0
  824. package/dist/util/time.js +4 -0
  825. package/dist/util/token-text.d.ts +1 -4
  826. package/dist/util/token-text.js +1 -4
  827. package/dist/util/transcript-tail.d.ts +2 -0
  828. package/dist/util/transcript-tail.js +24 -23
  829. package/dist/util/version.d.ts +5 -20
  830. package/dist/util/version.js +5 -20
  831. package/dist/{store → util}/yaml.d.ts +1 -5
  832. package/dist/{store → util}/yaml.js +2 -6
  833. package/extensions/openclaw-plugin/index.ts +1 -1
  834. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  835. package/extensions/openclaw-plugin/package.json +1 -1
  836. package/openclaw.plugin.json +1 -1
  837. package/package.json +2 -2
  838. package/dist/cli/provenance-coverage.d.ts +0 -18
  839. package/dist/connectors/github/cli-impl.d.ts +0 -25
  840. package/dist/sharing/scope.d.ts +0 -14
  841. package/dist/sharing/shared.d.ts +0 -187
  842. package/dist/sharing/shared.js +0 -563
  843. package/dist/store/embeddings/local.d.ts +0 -15
  844. package/dist/store/embeddings/local.js +0 -192
  845. package/dist/store/embeddings/provider.d.ts +0 -77
  846. package/dist/store/markdown.d.ts +0 -10
  847. package/dist/store/recall-scope.d.ts +0 -138
  848. package/dist/store/recall-scope.js +0 -216
  849. package/dist/store/vector-writes.d.ts +0 -13
  850. package/dist/store/vector-writes.js +0 -89
  851. /package/dist/{store → core}/object-types.d.ts +0 -0
  852. /package/dist/{store → core}/object-types.js +0 -0
  853. /package/dist/{cli → store}/quality-repair.d.ts +0 -0
  854. /package/dist/{capture → util}/compaction-items.d.ts +0 -0
  855. /package/dist/{capture → util}/compaction-items.js +0 -0
@@ -1,39 +1,11 @@
1
- /**
2
- * Process first-class object.
3
- *
4
- * A `process` is a "living process map": a named, ordered list of steps that
5
- * evolves over time. Unlike `incident` (open->resolved->closed, no supersede),
6
- * `process` REUSES the `decision` supersede path as its delta mechanism: a
7
- * process evolves by being superseded by a NEW VERSION that records what
8
- * changed (`change_summary`) and the full new state (`steps`), carrying a
9
- * server-derived `version` counter. The version chain (walk `superseded_by`)
10
- * is the changelog. Computed structural step-diffing is a deferred v2 read-side
11
- * feature; the row stores enough to reconstruct any delta
12
- * (predecessor.steps + successor.steps + change_summary).
13
- *
14
- * The `processes` table is the source of truth: a process stays `active`
15
- * regardless of memory decay. A memory row mirrors the process for recall but
16
- * is NOT canonical — memory_id is NULLABLE with ON DELETE SET NULL so
17
- * forget/consolidate/archive gracefully orphans the process row.
18
- *
19
- * Lifecycle: active -> superseded (a newer version replaces it; superseded_by
20
- * points to the successor) or active -> closed (retired with no successor;
21
- * only an active head closes).
22
- *
23
- * Tenant scoping: every helper requires tenantId. BEFORE INSERT/UPDATE triggers
24
- * enforce processes.tenant_id == the referenced memory's tenant_id, and a
25
- * superseded_by same-tenant trigger makes cross-tenant supersession
26
- * unrepresentable. Mirrors the v30 decisions pattern (src/objects/decisions.ts).
27
- *
28
- * Dual-write atomicity: `saveProcess` hands the memory and the process to the
29
- * `objects` store group, which commits them (and, when superseding, the
30
- * predecessor's UPDATE) together, so a failure in any step rolls all of them back.
31
- */
1
+ /** Process object: a named, ordered list of `steps` that evolves by supersession, each version recording `change_summary` and a server-derived `version`.
2
+ * The `processes` table is the source of truth; the memory mirror (memory_id NULLABLE, ON DELETE SET NULL) is for recall.
3
+ * Structural step-diffing is a deferred read-side feature; the version chain is the changelog. */
32
4
  import type { KeysetPosition } from '../util/keyset.js';
33
5
  import { type JsonValue } from '../util/json.js';
34
6
  import type { SavableDescriptor } from './descriptor.js';
35
- import type { Process, ProcessStatus } from '../store/object-types.js';
36
- export type { Process, ProcessStatus } from '../store/object-types.js';
7
+ import type { Process, ProcessStatus } from '../core/object-types.js';
8
+ export type { Process, ProcessStatus } from '../core/object-types.js';
37
9
  export declare const VALID_PROCESS_STATES: ReadonlySet<ProcessStatus>;
38
10
  /** DoS / abuse caps on the steps body (untrusted at the HTTP/SDK boundary). */
39
11
  export declare const MAX_PROCESS_STEPS = 200;
@@ -55,30 +27,13 @@ export interface ListProcessesOpts {
55
27
  /** Resume after this row: the position the previous page ended on. */
56
28
  after?: KeysetPosition;
57
29
  }
58
- /**
59
- * Validate + normalise the steps body. Returns the trimmed step strings
60
- * (trim-then-store, so ' x ' is stored as 'x'). Throws on a non-array, a
61
- * non-string / empty element, or a cap breach. Mirrors the incident DoS-cap
62
- * discipline.
63
- */
30
+ /** Validate and trim the steps body; throws on a non-array, a non-string or empty element, or a cap breach. */
64
31
  export declare function validateProcessSteps(steps: JsonValue): string[];
65
32
  export declare const PROCESS: SavableDescriptor<'process', SaveProcessOpts>;
66
- /**
67
- * Create a process (or a new version that supersedes an existing one). Writes
68
- * the memory mirror + the processes row in the `objects` store group's one
69
- * transaction. When supersedesProcessId is given, the referenced ACTIVE row is
70
- * preflighted (status + version) BEFORE the INSERT, then UPDATEd -> superseded in
71
- * the SAME transaction (CAS: WHERE status='active' AND id != <new id>; throws on
72
- * changes===0 so a duplicate supersede aborts the whole write). The new row's
73
- * version = predecessor.version + 1 (server-derived); change_summary carries the
74
- * delta note. A fresh create has version 1 and change_summary NULL.
75
- */
33
+ /** Create a process, or a new version superseding an existing one, in the `objects` store group's one transaction.
34
+ * The supersede CAS (WHERE status='active' AND id != <new id>) throws on changes===0 so a duplicate supersede aborts the write. */
76
35
  export declare function saveProcess(hippoRoot: string, tenantId: string, opts: SaveProcessOpts, actor?: string): Process;
77
- /**
78
- * Close (retire) an active process with no successor. Updates the processes row
79
- * only; the memory mirror is not mutated. A superseded row is already
80
- * terminal in the chain and cannot be closed.
81
- */
36
+ /** Close (retire) an active process with no successor; a superseded row cannot be closed. */
82
37
  export declare function closeProcess(hippoRoot: string, tenantId: string, id: number, actor?: string): Process;
83
38
  export declare function loadProcessById(hippoRoot: string, tenantId: string, id: number): Process | null;
84
39
  export declare function loadProcesses(hippoRoot: string, tenantId: string, opts?: ListProcessesOpts): Process[];
@@ -1,40 +1,9 @@
1
- /**
2
- * Process first-class object.
3
- *
4
- * A `process` is a "living process map": a named, ordered list of steps that
5
- * evolves over time. Unlike `incident` (open->resolved->closed, no supersede),
6
- * `process` REUSES the `decision` supersede path as its delta mechanism: a
7
- * process evolves by being superseded by a NEW VERSION that records what
8
- * changed (`change_summary`) and the full new state (`steps`), carrying a
9
- * server-derived `version` counter. The version chain (walk `superseded_by`)
10
- * is the changelog. Computed structural step-diffing is a deferred v2 read-side
11
- * feature; the row stores enough to reconstruct any delta
12
- * (predecessor.steps + successor.steps + change_summary).
13
- *
14
- * The `processes` table is the source of truth: a process stays `active`
15
- * regardless of memory decay. A memory row mirrors the process for recall but
16
- * is NOT canonical — memory_id is NULLABLE with ON DELETE SET NULL so
17
- * forget/consolidate/archive gracefully orphans the process row.
18
- *
19
- * Lifecycle: active -> superseded (a newer version replaces it; superseded_by
20
- * points to the successor) or active -> closed (retired with no successor;
21
- * only an active head closes).
22
- *
23
- * Tenant scoping: every helper requires tenantId. BEFORE INSERT/UPDATE triggers
24
- * enforce processes.tenant_id == the referenced memory's tenant_id, and a
25
- * superseded_by same-tenant trigger makes cross-tenant supersession
26
- * unrepresentable. Mirrors the v30 decisions pattern (src/objects/decisions.ts).
27
- *
28
- * Dual-write atomicity: `saveProcess` hands the memory and the process to the
29
- * `objects` store group, which commits them (and, when superseding, the
30
- * predecessor's UPDATE) together, so a failure in any step rolls all of them back.
31
- */
1
+ /** Process object: a named, ordered list of `steps` that evolves by supersession, each version recording `change_summary` and a server-derived `version`.
2
+ * The `processes` table is the source of truth; the memory mirror (memory_id NULLABLE, ON DELETE SET NULL) is for recall.
3
+ * Structural step-diffing is a deferred read-side feature; the version chain is the changelog. */
32
4
  import { BadRequestError } from '../core/api-errors.js';
33
5
  import { isJsonString } from '../util/json.js';
34
6
  import { closeObjectAt, listObjectsAt, objectByIdAt, saveObjectAt } from './lifecycle.js';
35
- // ---------------------------------------------------------------------------
36
- // Domain types
37
- // ---------------------------------------------------------------------------
38
7
  export const VALID_PROCESS_STATES = new Set([
39
8
  'active',
40
9
  'superseded',
@@ -43,15 +12,7 @@ export const VALID_PROCESS_STATES = new Set([
43
12
  /** DoS / abuse caps on the steps body (untrusted at the HTTP/SDK boundary). */
44
13
  export const MAX_PROCESS_STEPS = 200;
45
14
  export const MAX_PROCESS_STEP_LEN = 2000;
46
- // ---------------------------------------------------------------------------
47
- // steps validation (untrusted input)
48
- // ---------------------------------------------------------------------------
49
- /**
50
- * Validate + normalise the steps body. Returns the trimmed step strings
51
- * (trim-then-store, so ' x ' is stored as 'x'). Throws on a non-array, a
52
- * non-string / empty element, or a cap breach. Mirrors the incident DoS-cap
53
- * discipline.
54
- */
15
+ /** Validate and trim the steps body; throws on a non-array, a non-string or empty element, or a cap breach. */
55
16
  export function validateProcessSteps(steps) {
56
17
  if (!Array.isArray(steps)) {
57
18
  throw new BadRequestError('saveProcess: steps must be an array of strings');
@@ -110,27 +71,12 @@ export const PROCESS = {
110
71
  };
111
72
  },
112
73
  };
113
- // ---------------------------------------------------------------------------
114
- // Public API
115
- // ---------------------------------------------------------------------------
116
- /**
117
- * Create a process (or a new version that supersedes an existing one). Writes
118
- * the memory mirror + the processes row in the `objects` store group's one
119
- * transaction. When supersedesProcessId is given, the referenced ACTIVE row is
120
- * preflighted (status + version) BEFORE the INSERT, then UPDATEd -> superseded in
121
- * the SAME transaction (CAS: WHERE status='active' AND id != <new id>; throws on
122
- * changes===0 so a duplicate supersede aborts the whole write). The new row's
123
- * version = predecessor.version + 1 (server-derived); change_summary carries the
124
- * delta note. A fresh create has version 1 and change_summary NULL.
125
- */
74
+ /** Create a process, or a new version superseding an existing one, in the `objects` store group's one transaction.
75
+ * The supersede CAS (WHERE status='active' AND id != <new id>) throws on changes===0 so a duplicate supersede aborts the write. */
126
76
  export function saveProcess(hippoRoot, tenantId, opts, actor = 'cli') {
127
77
  return saveObjectAt(PROCESS, { hippoRoot, tenantId, actor }, opts);
128
78
  }
129
- /**
130
- * Close (retire) an active process with no successor. Updates the processes row
131
- * only; the memory mirror is not mutated. A superseded row is already
132
- * terminal in the chain and cannot be closed.
133
- */
79
+ /** Close (retire) an active process with no successor; a superseded row cannot be closed. */
134
80
  export function closeProcess(hippoRoot, tenantId, id, actor = 'cli') {
135
81
  return closeObjectAt(hippoRoot, PROCESS, tenantId, id, actor);
136
82
  }
@@ -1,31 +1,12 @@
1
- /**
2
- * Project_brief first-class object.
3
- *
4
- * A `project_brief` is the living, repo-scoped summary of a repository's state: a
5
- * `summary` body scoped to a `repo`, evolving via the supersede delta lifecycle.
6
- * "Auto-refreshes from receipts" is scoped to a DETERMINISTIC (no-LLM) assembler:
7
- * `refreshBrief` gathers the repo's recent receipts (memory rows tagged
8
- * `path:<repo>`) and assembles them into the brief body. The distinguishing
9
- * capability is therefore the refresh assembler (analog of skill's export
10
- * renderer), not an LLM/async pipeline (deferred).
11
- *
12
- * Reuses the skill/process supersede machinery verbatim (superseded_by self-FK +
13
- * CAS + INSERT-preflight + server-derived version + change_summary + supersede
14
- * tenant-match trigger). It DROPS skill's `skill_name`/`trigger_text` and ADDS
15
- * `repo` (the repo-scoping dimension) + `summary` (the brief body).
16
- *
17
- * The `project_briefs` table is the source of truth (survives memory decay); the
18
- * memory mirror is for recall. memory_id is NULLABLE with ON DELETE SET NULL.
19
- *
20
- * Lifecycle: active -> superseded (a newer version replaces it) or active ->
21
- * closed (retired).
22
- */
1
+ /** Project_brief object: the living, repo-scoped `summary` of a repository, evolving via supersession.
2
+ * `refreshBrief` assembles recent `path:<repo>` receipts with a deterministic (no-LLM) assembler; an LLM pipeline is deferred.
3
+ * The `project_briefs` table is the source of truth; the memory mirror (memory_id NULLABLE, ON DELETE SET NULL) is for recall. */
23
4
  import type { KeysetPosition } from '../util/keyset.js';
24
5
  import type { SavableDescriptor } from './descriptor.js';
25
6
  import { type ObjectSaveSite } from './lifecycle.js';
26
- import type { BriefStatus, ProjectBrief } from '../store/object-types.js';
7
+ import type { BriefStatus, ProjectBrief } from '../core/object-types.js';
27
8
  import type { Objects } from '../store/port.js';
28
- export type { BriefStatus, ProjectBrief } from '../store/object-types.js';
9
+ export type { BriefStatus, ProjectBrief } from '../core/object-types.js';
29
10
  export declare const VALID_BRIEF_STATES: ReadonlySet<BriefStatus>;
30
11
  /** Field caps (untrusted at the HTTP/SDK boundary). summary is a body, so a larger
31
12
  * cap than the 4096 short-field convention. */
@@ -46,9 +27,8 @@ export interface SaveProjectBriefOpts {
46
27
  supersedesBriefId?: number;
47
28
  /** Extra memory tags merged after ['project_brief']. */
48
29
  extraTags?: string[];
49
- /** Internal: set by refreshBrief to the receipt count so the audit metadata can
50
- * mark the write as an auto-refresh (vs a manual supersede) WITHOUT a 4th audit
51
- * op. Not part of the public CLI/HTTP surface. */
30
+ /** Internal: set by refreshBrief to the receipt count so audit metadata marks the write as an auto-refresh
31
+ * without a 4th audit op. Not part of the CLI/HTTP surface. */
52
32
  refreshReceiptCount?: number;
53
33
  }
54
34
  export interface ListProjectBriefsOpts {
@@ -60,39 +40,14 @@ export interface ListProjectBriefsOpts {
60
40
  after?: KeysetPosition;
61
41
  }
62
42
  export declare const PROJECT_BRIEF: SavableDescriptor<'project_brief', SaveProjectBriefOpts>;
63
- /**
64
- * Create a project_brief (or a new version that supersedes an existing one). Writes
65
- * the memory mirror + the project_briefs row in the `objects` store group's one
66
- * transaction. When supersedesBriefId is given, the referenced ACTIVE row is
67
- * preflighted (status + version) BEFORE the INSERT, then CAS-UPDATEd -> superseded
68
- * in the same transaction; the new version = predecessor.version + 1 (server-derived).
69
- */
43
+ /** Create a project_brief, or a new version superseding an existing one, in the `objects` store group's one transaction. */
70
44
  export declare function saveProjectBrief(hippoRoot: string, tenantId: string, opts: SaveProjectBriefOpts, actor?: string): ProjectBrief;
71
- /**
72
- * Close (retire) an active brief. A superseded row is terminal.
73
- */
45
+ /** Close (retire) an active brief; a superseded row is terminal. */
74
46
  export declare function closeProjectBrief(hippoRoot: string, tenantId: string, id: number, actor?: string): ProjectBrief;
75
47
  export declare function loadProjectBriefById(hippoRoot: string, tenantId: string, id: number): ProjectBrief | null;
76
48
  export declare function loadProjectBriefs(hippoRoot: string, tenantId: string, opts?: ListProjectBriefsOpts): ProjectBrief[];
77
- /**
78
- * The repo's CURRENT active brief, or null. By convention there is one active brief
79
- * per (tenant, repo); if an operator created more than one (the DB does not prevent
80
- * it, consistent with every other first-class object), the MOST-RECENT active row wins.
81
- */
82
- export declare function loadActiveBriefForRepo(hippoRoot: string, tenantId: string, repo: string): ProjectBrief | null;
83
- /**
84
- * Assemble the repo's recent receipts into a deterministic markdown digest, and
85
- * return it WITH the receipt count (the count feeds refreshBrief's change_summary +
86
- * audit metadata). NO LLM. Always returns a non-empty, valid summary (a brief
87
- * `summary` is NOT NULL), including the zero-receipts case.
88
- *
89
- * A "receipt" = a tenant memory row carrying the repo's `path:<repo>` tag. The
90
- * brief's OWN memory mirror (source='project_brief') is excluded so a brief never
91
- * becomes its own receipt on the next refresh. The match is against the JSON-array
92
- * serialization (each element is a double-quoted string `"path:hippo"`); the
93
- * surrounding quotes are load-bearing — they stop `hip` matching `path:hippo`.
94
- * `repo` is LIKE-escaped + parameterized (operator-supplied; security.md).
95
- */
49
+ /** Assemble the repo's recent receipts into a deterministic markdown digest and return it with the receipt count; never empty (summary is NOT NULL).
50
+ * The brief's own mirror (source='project_brief') is excluded; the quotes in the JSON-array LIKE are load-bearing (`hip` must not match `path:hippo`). */
96
51
  export declare function assembleBriefFromReceipts(hippoRoot: string, tenantId: string, repo: string): BriefDigest;
97
52
  /** `assembleBriefFromReceipts` over a served store's group. */
98
53
  export declare function briefFromReceipts(objects: Objects, tenantId: string, repo: string): Promise<BriefDigest>;
@@ -100,7 +55,8 @@ export interface BriefDigest {
100
55
  markdown: string;
101
56
  receiptCount: number;
102
57
  }
103
- /** Saves a new version of the repo's brief from its receipts. The receipts are read before the save's transaction, so a receipt written in between shows in the next refresh. */
58
+ /** Saves a new version of the repo's brief from its receipts. The receipts are read before
59
+ * the save's transaction, so a receipt written in between shows in the next refresh. */
104
60
  export declare function refreshBrief(hippoRoot: string, tenantId: string, repo: string, actor?: string): ProjectBrief;
105
61
  /** `refreshBrief` over a served store's group. */
106
62
  export declare function refreshedBrief(objects: Objects, site: ObjectSaveSite, repo: string): Promise<ProjectBrief>;
@@ -1,33 +1,12 @@
1
- /**
2
- * Project_brief first-class object.
3
- *
4
- * A `project_brief` is the living, repo-scoped summary of a repository's state: a
5
- * `summary` body scoped to a `repo`, evolving via the supersede delta lifecycle.
6
- * "Auto-refreshes from receipts" is scoped to a DETERMINISTIC (no-LLM) assembler:
7
- * `refreshBrief` gathers the repo's recent receipts (memory rows tagged
8
- * `path:<repo>`) and assembles them into the brief body. The distinguishing
9
- * capability is therefore the refresh assembler (analog of skill's export
10
- * renderer), not an LLM/async pipeline (deferred).
11
- *
12
- * Reuses the skill/process supersede machinery verbatim (superseded_by self-FK +
13
- * CAS + INSERT-preflight + server-derived version + change_summary + supersede
14
- * tenant-match trigger). It DROPS skill's `skill_name`/`trigger_text` and ADDS
15
- * `repo` (the repo-scoping dimension) + `summary` (the brief body).
16
- *
17
- * The `project_briefs` table is the source of truth (survives memory decay); the
18
- * memory mirror is for recall. memory_id is NULLABLE with ON DELETE SET NULL.
19
- *
20
- * Lifecycle: active -> superseded (a newer version replaces it) or active ->
21
- * closed (retired).
22
- */
1
+ /** Project_brief object: the living, repo-scoped `summary` of a repository, evolving via supersession.
2
+ * `refreshBrief` assembles recent `path:<repo>` receipts with a deterministic (no-LLM) assembler; an LLM pipeline is deferred.
3
+ * The `project_briefs` table is the source of truth; the memory mirror (memory_id NULLABLE, ON DELETE SET NULL) is for recall. */
4
+ import { truncateWithEllipsis } from '../util/ellipsize.js';
23
5
  import { BadRequestError } from '../core/api-errors.js';
24
6
  import { assertTenantId } from '../store/tenant.js';
25
7
  import { checkText, requireLine } from './fields.js';
26
8
  import { closeObjectAt, listObjectsAt, objectByIdAt, saveObject, saveObjectAt } from './lifecycle.js';
27
9
  import { sqliteObjects } from '../store/sqlite/objects-group.js';
28
- // ---------------------------------------------------------------------------
29
- // Domain types
30
- // ---------------------------------------------------------------------------
31
10
  export const VALID_BRIEF_STATES = new Set([
32
11
  'active',
33
12
  'superseded',
@@ -79,22 +58,11 @@ export const PROJECT_BRIEF = {
79
58
  function buildBriefContent(repo, summary) {
80
59
  return `${repo}\n\n${summary}`;
81
60
  }
82
- // ---------------------------------------------------------------------------
83
- // Public API
84
- // ---------------------------------------------------------------------------
85
- /**
86
- * Create a project_brief (or a new version that supersedes an existing one). Writes
87
- * the memory mirror + the project_briefs row in the `objects` store group's one
88
- * transaction. When supersedesBriefId is given, the referenced ACTIVE row is
89
- * preflighted (status + version) BEFORE the INSERT, then CAS-UPDATEd -> superseded
90
- * in the same transaction; the new version = predecessor.version + 1 (server-derived).
91
- */
61
+ /** Create a project_brief, or a new version superseding an existing one, in the `objects` store group's one transaction. */
92
62
  export function saveProjectBrief(hippoRoot, tenantId, opts, actor = 'cli') {
93
63
  return saveObjectAt(PROJECT_BRIEF, { hippoRoot, tenantId, actor }, opts);
94
64
  }
95
- /**
96
- * Close (retire) an active brief. A superseded row is terminal.
97
- */
65
+ /** Close (retire) an active brief; a superseded row is terminal. */
98
66
  export function closeProjectBrief(hippoRoot, tenantId, id, actor = 'cli') {
99
67
  return closeObjectAt(hippoRoot, PROJECT_BRIEF, tenantId, id, actor);
100
68
  }
@@ -104,12 +72,8 @@ export function loadProjectBriefById(hippoRoot, tenantId, id) {
104
72
  export function loadProjectBriefs(hippoRoot, tenantId, opts = {}) {
105
73
  return listObjectsAt(hippoRoot, PROJECT_BRIEF, tenantId, { status: opts.status, filter: opts.repo, limit: opts.limit, after: opts.after });
106
74
  }
107
- /**
108
- * The repo's CURRENT active brief, or null. By convention there is one active brief
109
- * per (tenant, repo); if an operator created more than one (the DB does not prevent
110
- * it, consistent with every other first-class object), the MOST-RECENT active row wins.
111
- */
112
- export function loadActiveBriefForRepo(hippoRoot, tenantId, repo) {
75
+ /** The repo's current active brief, or null. The DB allows several active rows per (tenant, repo); the most recent wins. */
76
+ function loadActiveBriefForRepo(hippoRoot, tenantId, repo) {
113
77
  assertTenantId('loadActiveBriefForRepo', tenantId);
114
78
  if (repo === '')
115
79
  return null;
@@ -119,33 +83,19 @@ export function loadActiveBriefForRepo(hippoRoot, tenantId, repo) {
119
83
  function newestActive(repo) {
120
84
  return { status: 'active', filter: repo, limit: 1 };
121
85
  }
122
- // ---------------------------------------------------------------------------
123
- // Refresh assembler (the distinguishing deliverable)
124
- // ---------------------------------------------------------------------------
125
86
  /** Single-line headline for a receipt: first non-empty line, newline-stripped,
126
87
  * truncated. Deterministic + safe for the markdown bullet list. */
127
88
  function receiptHeadline(content) {
128
89
  const firstLine = (content ?? '').split(/\r?\n/).find((l) => l.trim().length > 0) ?? '';
129
90
  const trimmed = firstLine.trim();
130
- return trimmed.length > MAX_RECEIPT_HEADLINE_LEN
131
- ? `${trimmed.slice(0, MAX_RECEIPT_HEADLINE_LEN)}...`
132
- : trimmed;
91
+ return truncateWithEllipsis(trimmed, MAX_RECEIPT_HEADLINE_LEN);
133
92
  }
134
93
  /** The tag a memory of the repo carries; the store matches it whole, so `path:hip` never matches `path:hippo`. */
135
94
  function receiptTag(normalizedRepo) {
136
95
  return `path:${normalizedRepo.toLowerCase()}`;
137
96
  }
138
- // NOTE on ordering: the `id DESC` tiebreak is lexical on a random-ish memory id
139
- // (e.g. `sem_<hex>`), NOT chronological — within the same `created` timestamp the
140
- // order is stable-but-arbitrary, not insertion order. `created DESC` is the real
141
- // recency ordering.
142
- //
143
- // Budget-aware assembly: the digest is the
144
- // brief `summary`, which saveProjectBrief caps at MAX_BRIEF_SUMMARY_LEN. The
145
- // receipt/headline caps (50 x ~200) could otherwise build an ~11KB body that the
146
- // store then REJECTS, breaking refresh for inputs within the advertised caps. So
147
- // include receipt lines newest-first only while they fit under the cap (reserving
148
- // slack for the header + an omission footer), and note the omitted remainder.
97
+ // `id DESC` is a lexical tiebreak on a random-ish id, so same-`created` order is stable but arbitrary; `created DESC` is the recency order.
98
+ // Receipt lines go newest-first only while they fit MAX_BRIEF_SUMMARY_LEN (reserving slack for header and omission footer), else the store rejects the body.
149
99
  function fitReceiptLines(receipts) {
150
100
  const buildReceiptLine = (r) => `- ${(r.created ?? '').slice(0, 10)} [${r.source}] ${receiptHeadline(r.content)}`;
151
101
  const receiptLines = [];
@@ -185,28 +135,15 @@ function renderBriefDigest(normalizedRepo, receiptCount, receiptLines) {
185
135
  lines.push(`_... ${omitted} more receipt(s) omitted (summary cap)._`);
186
136
  }
187
137
  }
188
- // Belt-and-suspenders: the budget loop keeps us under the cap, but hard-clamp the
189
- // joined string so the store's NOT-NULL/<=cap contract can never be violated even
190
- // for a pathological single oversized line.
138
+ // Belt-and-suspenders: hard-clamp so the store's NOT-NULL/<=cap contract holds even for a single oversized line.
191
139
  let markdown = lines.join('\n');
192
140
  if (markdown.length > MAX_BRIEF_SUMMARY_LEN) {
193
141
  markdown = markdown.slice(0, MAX_BRIEF_SUMMARY_LEN);
194
142
  }
195
143
  return markdown;
196
144
  }
197
- /**
198
- * Assemble the repo's recent receipts into a deterministic markdown digest, and
199
- * return it WITH the receipt count (the count feeds refreshBrief's change_summary +
200
- * audit metadata). NO LLM. Always returns a non-empty, valid summary (a brief
201
- * `summary` is NOT NULL), including the zero-receipts case.
202
- *
203
- * A "receipt" = a tenant memory row carrying the repo's `path:<repo>` tag. The
204
- * brief's OWN memory mirror (source='project_brief') is excluded so a brief never
205
- * becomes its own receipt on the next refresh. The match is against the JSON-array
206
- * serialization (each element is a double-quoted string `"path:hippo"`); the
207
- * surrounding quotes are load-bearing — they stop `hip` matching `path:hippo`.
208
- * `repo` is LIKE-escaped + parameterized (operator-supplied; security.md).
209
- */
145
+ /** Assemble the repo's recent receipts into a deterministic markdown digest and return it with the receipt count; never empty (summary is NOT NULL).
146
+ * The brief's own mirror (source='project_brief') is excluded; the quotes in the JSON-array LIKE are load-bearing (`hip` must not match `path:hippo`). */
210
147
  export function assembleBriefFromReceipts(hippoRoot, tenantId, repo) {
211
148
  const normalizedRepo = requiredRepo('assembleBriefFromReceipts', tenantId, repo);
212
149
  return briefDigest(normalizedRepo, sqliteObjects(hippoRoot).briefReceipts(tenantId, receiptTag(normalizedRepo), MAX_BRIEF_RECEIPTS));
@@ -238,7 +175,8 @@ function refreshWrite(normalizedRepo, digest, active) {
238
175
  extraTags: [receiptTag(normalizedRepo)],
239
176
  };
240
177
  }
241
- /** Saves a new version of the repo's brief from its receipts. The receipts are read before the save's transaction, so a receipt written in between shows in the next refresh. */
178
+ /** Saves a new version of the repo's brief from its receipts. The receipts are read before
179
+ * the save's transaction, so a receipt written in between shows in the next refresh. */
242
180
  export function refreshBrief(hippoRoot, tenantId, repo, actor = 'cli') {
243
181
  const normalizedRepo = requiredRepo('refreshBrief', tenantId, repo);
244
182
  const digest = assembleBriefFromReceipts(hippoRoot, tenantId, normalizedRepo);
@@ -1,31 +1,11 @@
1
- /**
2
- * Skills as a first-class, versioned object.
3
- *
4
- * A `skill` is a reusable, agent-followable capability: an `instructions` body
5
- * plus an optional `trigger` ("when to apply"), evolving via the supersede delta
6
- * lifecycle. "Executable" is scoped to an agent-followable INSTRUCTION that, once
7
- * exported into the agent's in-force rules (AGENTS.md / CLAUDE.md) via
8
- * `exportSkills`, is executed by the agent reading it. Literal code/command
9
- * execution is deferred (security; a future sandbox). The distinguishing
10
- * capability is therefore the EXPORT renderer, not a runtime.
11
- *
12
- * Reuses the process/decision supersede machinery verbatim (superseded_by self-FK
13
- * + CAS + INSERT-preflight + server-derived version + change_summary + supersede
14
- * tenant-match trigger). It DROPS process's `steps` (a skill's content is a single
15
- * `instructions` body) and ADDS `trigger` (stored in the `trigger_text` column -
16
- * `trigger` is a SQLite reserved keyword).
17
- *
18
- * The `skills` table is the source of truth (survives memory decay); the memory
19
- * mirror is for recall. memory_id is NULLABLE with ON DELETE SET NULL.
20
- *
21
- * Lifecycle: active -> superseded (a newer version replaces it) or active ->
22
- * closed (retired). Export renders ACTIVE skills only.
23
- */
1
+ /** Skill object: an agent-followable `instructions` body plus an optional `trigger`, evolving via supersession.
2
+ * `exportSkills` renders ACTIVE skills into AGENTS.md / CLAUDE.md rules; running code from a skill is deferred (security).
3
+ * `trigger` is stored in `trigger_text` because it is a SQLite reserved keyword. */
24
4
  import type { KeysetPosition } from '../util/keyset.js';
25
5
  import type { SavableDescriptor } from './descriptor.js';
26
- import type { Skill, SkillStatus } from '../store/object-types.js';
6
+ import type { Skill, SkillStatus } from '../core/object-types.js';
27
7
  import type { Objects } from '../store/port.js';
28
- export type { Skill, SkillStatus } from '../store/object-types.js';
8
+ export type { Skill, SkillStatus } from '../core/object-types.js';
29
9
  export declare const VALID_SKILL_STATES: ReadonlySet<SkillStatus>;
30
10
  /** Field caps (untrusted at the HTTP/SDK boundary). instructions is a body, so a
31
11
  * larger cap than the 4096 short-field convention. */
@@ -54,32 +34,17 @@ export interface ListSkillsOpts {
54
34
  after?: KeysetPosition;
55
35
  }
56
36
  export declare const SKILL: SavableDescriptor<'skill', SaveSkillOpts>;
57
- /**
58
- * Create a skill (or a new version that supersedes an existing one). Writes the
59
- * memory mirror + the skills row in the `objects` store group's one transaction. When
60
- * supersedesSkillId is given, the referenced ACTIVE row is preflighted (status +
61
- * version) BEFORE the INSERT, then CAS-UPDATEd -> superseded in the same transaction;
62
- * the new version = predecessor.version + 1 (server-derived).
63
- */
37
+ /** Create a skill, or a new version superseding an existing one, in the `objects` store group's one transaction. */
64
38
  export declare function saveSkill(hippoRoot: string, tenantId: string, opts: SaveSkillOpts, actor?: string): Skill;
65
- /**
66
- * Close (retire) an active skill. A superseded row is terminal.
67
- */
39
+ /** Close (retire) an active skill; a superseded row is terminal. */
68
40
  export declare function closeSkill(hippoRoot: string, tenantId: string, id: number, actor?: string): Skill;
69
41
  export declare function loadSkillById(hippoRoot: string, tenantId: string, id: number): Skill | null;
70
42
  export declare function loadSkills(hippoRoot: string, tenantId: string, opts?: ListSkillsOpts): Skill[];
71
43
  export declare function loadActiveSkills(hippoRoot: string, tenantId: string, opts?: {
72
44
  limit?: number;
73
45
  }): Skill[];
74
- /**
75
- * Render the tenant's ACTIVE skills into ONE AGENTS.md / CLAUDE.md-style markdown
76
- * block (one H2 per skill, ordered by skill_name ASC for determinism), and RETURN
77
- * the string. Does NOT write any file. Returns '' when there are no active skills.
78
- *
79
- * skill_name is single-line (validated on save) so it cannot break the H2 header;
80
- * instructions are emitted verbatim (operator content). Bounded by MAX_EXPORT_SKILLS
81
- * active rows; each field is capped on save, so the rendered string is bounded.
82
- */
46
+ /** Render the tenant's ACTIVE skills into one AGENTS.md / CLAUDE.md-style markdown block (H2 per skill, ordered by skill_name) and return it; writes no file.
47
+ * Bounded by MAX_EXPORT_SKILLS rows; instructions are emitted verbatim. */
83
48
  export declare function exportSkills(hippoRoot: string, tenantId: string): string;
84
49
  /** `exportSkills` over a served store's group. */
85
50
  export declare function skillsMarkdown(objects: Objects, tenantId: string): Promise<string>;
@@ -1,34 +1,11 @@
1
- /**
2
- * Skills as a first-class, versioned object.
3
- *
4
- * A `skill` is a reusable, agent-followable capability: an `instructions` body
5
- * plus an optional `trigger` ("when to apply"), evolving via the supersede delta
6
- * lifecycle. "Executable" is scoped to an agent-followable INSTRUCTION that, once
7
- * exported into the agent's in-force rules (AGENTS.md / CLAUDE.md) via
8
- * `exportSkills`, is executed by the agent reading it. Literal code/command
9
- * execution is deferred (security; a future sandbox). The distinguishing
10
- * capability is therefore the EXPORT renderer, not a runtime.
11
- *
12
- * Reuses the process/decision supersede machinery verbatim (superseded_by self-FK
13
- * + CAS + INSERT-preflight + server-derived version + change_summary + supersede
14
- * tenant-match trigger). It DROPS process's `steps` (a skill's content is a single
15
- * `instructions` body) and ADDS `trigger` (stored in the `trigger_text` column -
16
- * `trigger` is a SQLite reserved keyword).
17
- *
18
- * The `skills` table is the source of truth (survives memory decay); the memory
19
- * mirror is for recall. memory_id is NULLABLE with ON DELETE SET NULL.
20
- *
21
- * Lifecycle: active -> superseded (a newer version replaces it) or active ->
22
- * closed (retired). Export renders ACTIVE skills only.
23
- */
1
+ /** Skill object: an agent-followable `instructions` body plus an optional `trigger`, evolving via supersession.
2
+ * `exportSkills` renders ACTIVE skills into AGENTS.md / CLAUDE.md rules; running code from a skill is deferred (security).
3
+ * `trigger` is stored in `trigger_text` because it is a SQLite reserved keyword. */
24
4
  import { BadRequestError } from '../core/api-errors.js';
25
5
  import { assertTenantId } from '../store/tenant.js';
26
6
  import { checkText, requireLine } from './fields.js';
27
7
  import { closeObjectAt, listObjectsAt, objectByIdAt, saveObjectAt } from './lifecycle.js';
28
8
  import { sqliteObjects } from '../store/sqlite/objects-group.js';
29
- // ---------------------------------------------------------------------------
30
- // Domain types
31
- // ---------------------------------------------------------------------------
32
9
  export const VALID_SKILL_STATES = new Set([
33
10
  'active',
34
11
  'superseded',
@@ -42,9 +19,6 @@ export const MAX_SKILL_TRIGGER_LEN = 1024;
42
19
  /** Aggregate bound on a single export render so the export body is never unbounded.
43
20
  * Realistic active-skill counts are tens; 1000 is a generous bound. */
44
21
  export const MAX_EXPORT_SKILLS = 1000;
45
- // ---------------------------------------------------------------------------
46
- // Validation
47
- // ---------------------------------------------------------------------------
48
22
  /** The trigger as stored, or null for none. One line, because a newline would forge a heading inside the exported **When:** line. */
49
23
  function checkTrigger(trigger) {
50
24
  if (trigger === undefined || trigger === null || trigger.trim().length === 0)
@@ -57,9 +31,7 @@ function checkTrigger(trigger) {
57
31
  }
58
32
  return trigger;
59
33
  }
60
- /** Recall-surface content for the memory mirror: name + optional trigger +
61
- * instructions. Named (mirrors buildProcessContent) so the recall surface is
62
- * deterministic + unit-testable. */
34
+ /** Recall-surface content for the memory mirror: name, optional trigger, instructions. */
63
35
  function buildSkillContent(skillName, instructions, trigger) {
64
36
  let content = skillName;
65
37
  if (trigger)
@@ -96,22 +68,11 @@ export const SKILL = {
96
68
  };
97
69
  },
98
70
  };
99
- // ---------------------------------------------------------------------------
100
- // Public API
101
- // ---------------------------------------------------------------------------
102
- /**
103
- * Create a skill (or a new version that supersedes an existing one). Writes the
104
- * memory mirror + the skills row in the `objects` store group's one transaction. When
105
- * supersedesSkillId is given, the referenced ACTIVE row is preflighted (status +
106
- * version) BEFORE the INSERT, then CAS-UPDATEd -> superseded in the same transaction;
107
- * the new version = predecessor.version + 1 (server-derived).
108
- */
71
+ /** Create a skill, or a new version superseding an existing one, in the `objects` store group's one transaction. */
109
72
  export function saveSkill(hippoRoot, tenantId, opts, actor = 'cli') {
110
73
  return saveObjectAt(SKILL, { hippoRoot, tenantId, actor }, opts);
111
74
  }
112
- /**
113
- * Close (retire) an active skill. A superseded row is terminal.
114
- */
75
+ /** Close (retire) an active skill; a superseded row is terminal. */
115
76
  export function closeSkill(hippoRoot, tenantId, id, actor = 'cli') {
116
77
  return closeObjectAt(hippoRoot, SKILL, tenantId, id, actor);
117
78
  }
@@ -124,15 +85,8 @@ export function loadSkills(hippoRoot, tenantId, opts = {}) {
124
85
  export function loadActiveSkills(hippoRoot, tenantId, opts = {}) {
125
86
  return loadSkills(hippoRoot, tenantId, { status: 'active', limit: opts.limit });
126
87
  }
127
- /**
128
- * Render the tenant's ACTIVE skills into ONE AGENTS.md / CLAUDE.md-style markdown
129
- * block (one H2 per skill, ordered by skill_name ASC for determinism), and RETURN
130
- * the string. Does NOT write any file. Returns '' when there are no active skills.
131
- *
132
- * skill_name is single-line (validated on save) so it cannot break the H2 header;
133
- * instructions are emitted verbatim (operator content). Bounded by MAX_EXPORT_SKILLS
134
- * active rows; each field is capped on save, so the rendered string is bounded.
135
- */
88
+ /** Render the tenant's ACTIVE skills into one AGENTS.md / CLAUDE.md-style markdown block (H2 per skill, ordered by skill_name) and return it; writes no file.
89
+ * Bounded by MAX_EXPORT_SKILLS rows; instructions are emitted verbatim. */
136
90
  export function exportSkills(hippoRoot, tenantId) {
137
91
  assertTenantId('exportSkills', tenantId);
138
92
  return skillsBlock(sqliteObjects(hippoRoot).activeSkillsByName(tenantId, MAX_EXPORT_SKILLS));