hippo-memory 1.72.0 → 2.1.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 (995) hide show
  1. package/README.md +6 -4
  2. package/dist/agent-memories/apply.d.ts +7 -5
  3. package/dist/agent-memories/apply.js +66 -39
  4. package/dist/agent-memories/claude-code.d.ts +8 -2
  5. package/dist/agent-memories/claude-code.js +26 -7
  6. package/dist/agent-memories/copilot.js +2 -1
  7. package/dist/agent-memories/files.js +2 -1
  8. package/dist/agent-memories/legacy.d.ts +6 -3
  9. package/dist/agent-memories/legacy.js +35 -14
  10. package/dist/agent-memories/markdown.d.ts +3 -1
  11. package/dist/agent-memories/markdown.js +3 -1
  12. package/dist/agent-memories/openclaw.js +5 -2
  13. package/dist/agent-memories/plan.js +11 -1
  14. package/dist/agent-memories/project-folds.js +2 -1
  15. package/dist/agent-memories/report.d.ts +4 -1
  16. package/dist/agent-memories/report.js +43 -9
  17. package/dist/agent-memories/source.d.ts +8 -2
  18. package/dist/agent-memories/source.js +11 -3
  19. package/dist/agent-memories/sync.d.ts +7 -2
  20. package/dist/agent-memories/sync.js +141 -101
  21. package/dist/api/assemble.d.ts +6 -4
  22. package/dist/api/assemble.js +11 -5
  23. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  24. package/dist/api/auth/audit.js +58 -0
  25. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -16
  26. package/dist/api/{auth.js → auth/auth.js} +66 -54
  27. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  28. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -7
  29. package/dist/api/auth/session-owners.d.ts +10 -0
  30. package/dist/api/auth/session-owners.js +35 -0
  31. package/dist/api/availability.d.ts +3 -1
  32. package/dist/api/availability.js +3 -1
  33. package/dist/api/busy.d.ts +2 -0
  34. package/dist/api/busy.js +2 -0
  35. package/dist/api/cli-surface.d.ts +6 -0
  36. package/dist/api/cli-surface.js +6 -0
  37. package/dist/api/config-of.d.ts +5 -0
  38. package/dist/api/config-of.js +6 -0
  39. package/dist/api/context-auto.d.ts +4 -1
  40. package/dist/api/context-auto.js +14 -4
  41. package/dist/api/context-render.js +14 -7
  42. package/dist/api/context-select.d.ts +4 -1
  43. package/dist/api/context-select.js +31 -34
  44. package/dist/api/context-types.d.ts +38 -12
  45. package/dist/api/context.d.ts +8 -5
  46. package/dist/api/context.js +120 -63
  47. package/dist/api/continuity.d.ts +24 -21
  48. package/dist/api/continuity.js +18 -20
  49. package/dist/api/correction-latency.d.ts +3 -1
  50. package/dist/api/correction-latency.js +3 -1
  51. package/dist/api/error-reply.d.ts +4 -1
  52. package/dist/api/error-reply.js +12 -3
  53. package/dist/api/index.d.ts +39 -23
  54. package/dist/api/index.js +21 -23
  55. package/dist/api/instruction-detect.d.ts +4 -1
  56. package/dist/api/instruction-detect.js +75 -20
  57. package/dist/api/ledger-db.d.ts +15 -11
  58. package/dist/api/ledger-db.js +21 -23
  59. package/dist/api/memories/conflicts.d.ts +33 -0
  60. package/dist/api/memories/conflicts.js +67 -0
  61. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  62. package/dist/api/{forget.js → memories/forget.js} +23 -17
  63. package/dist/api/memories/memories.d.ts +27 -0
  64. package/dist/api/memories/memories.js +52 -0
  65. package/dist/api/memories/outcome.d.ts +22 -0
  66. package/dist/api/memories/outcome.js +28 -0
  67. package/dist/api/memories/promote.d.ts +40 -0
  68. package/dist/api/memories/promote.js +76 -0
  69. package/dist/api/memories/refine.d.ts +10 -0
  70. package/dist/api/memories/refine.js +12 -0
  71. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +17 -9
  72. package/dist/api/{remember-local.js → memories/remember-local.js} +46 -24
  73. package/dist/api/{remember.d.ts → memories/remember.d.ts} +22 -13
  74. package/dist/api/{remember.js → memories/remember.js} +50 -32
  75. package/dist/api/objects/cards.d.ts +39 -0
  76. package/dist/api/{cards.js → objects/cards.js} +12 -14
  77. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  78. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -7
  79. package/dist/api/objects/goals.d.ts +18 -0
  80. package/dist/api/{goals.js → objects/goals.js} +12 -12
  81. package/dist/api/objects/graph.d.ts +11 -0
  82. package/dist/api/objects/graph.js +16 -0
  83. package/dist/api/objects/objects.d.ts +9 -0
  84. package/dist/api/{objects.js → objects/objects.js} +2 -3
  85. package/dist/api/objects/predictions.d.ts +11 -0
  86. package/dist/api/{predictions.js → objects/predictions.js} +7 -5
  87. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  88. package/dist/api/{projects.js → objects/projects.js} +8 -4
  89. package/dist/api/pilot-arm.d.ts +8 -4
  90. package/dist/api/pilot-arm.js +5 -4
  91. package/dist/api/prompt-hook.d.ts +35 -20
  92. package/dist/api/prompt-hook.js +66 -44
  93. package/dist/api/provenance-coverage.d.ts +3 -1
  94. package/dist/api/provenance-coverage.js +3 -1
  95. package/dist/api/recall/finish.d.ts +185 -0
  96. package/dist/api/recall/finish.js +301 -0
  97. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  98. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +185 -101
  99. package/dist/api/recall/recall.d.ts +6 -0
  100. package/dist/api/{recall.js → recall/recall.js} +116 -72
  101. package/dist/api/recall/render.d.ts +39 -0
  102. package/dist/api/recall/render.js +60 -0
  103. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  104. package/dist/api/recall/request.js +261 -0
  105. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  106. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  107. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -68
  108. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  109. package/dist/api/session-end.d.ts +36 -8
  110. package/dist/api/session-end.js +71 -25
  111. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  112. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  113. package/dist/api/sleep/dormant.d.ts +25 -0
  114. package/dist/api/sleep/dormant.js +64 -0
  115. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  116. package/dist/api/sleep/learn.js +138 -0
  117. package/dist/api/sleep/sleep-run.d.ts +38 -0
  118. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +54 -45
  119. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  120. package/dist/api/sleep/sleep.js +9 -0
  121. package/dist/api/status.d.ts +3 -1
  122. package/dist/api/status.js +3 -1
  123. package/dist/api/store-init.d.ts +4 -1
  124. package/dist/api/store-init.js +4 -1
  125. package/dist/api/tokens.d.ts +10 -9
  126. package/dist/api/tokens.js +9 -10
  127. package/dist/api/types.d.ts +27 -12
  128. package/dist/api/types.js +13 -4
  129. package/dist/capture/caller-session.d.ts +8 -2
  130. package/dist/capture/caller-session.js +16 -6
  131. package/dist/capture/capture-error.d.ts +3 -1
  132. package/dist/capture/capture-error.js +3 -1
  133. package/dist/capture/codex-patch.js +7 -2
  134. package/dist/capture/command.d.ts +4 -2
  135. package/dist/capture/command.js +34 -15
  136. package/dist/capture/compact-resume-caller.js +15 -8
  137. package/dist/capture/compact.d.ts +8 -5
  138. package/dist/capture/compact.js +34 -23
  139. package/dist/capture/compaction-items-caller.js +9 -3
  140. package/dist/capture/compaction-record.d.ts +4 -3
  141. package/dist/capture/compaction-record.js +20 -12
  142. package/dist/capture/compaction-spool.d.ts +18 -9
  143. package/dist/capture/compaction-spool.js +105 -63
  144. package/dist/capture/copilot-transcript.d.ts +11 -3
  145. package/dist/capture/copilot-transcript.js +16 -6
  146. package/dist/capture/extract.js +20 -8
  147. package/dist/capture/failure-caller.js +23 -12
  148. package/dist/capture/failure-reading.d.ts +10 -3
  149. package/dist/capture/failure-reading.js +24 -7
  150. package/dist/capture/pre-compact-caller.js +11 -4
  151. package/dist/capture/session-digest.d.ts +15 -4
  152. package/dist/capture/session-digest.js +39 -13
  153. package/dist/capture/session-end-caller.d.ts +4 -1
  154. package/dist/capture/session-end-caller.js +20 -8
  155. package/dist/capture/session-texts.d.ts +6 -2
  156. package/dist/capture/session-texts.js +22 -7
  157. package/dist/capture/session-worker.d.ts +4 -2
  158. package/dist/capture/session-worker.js +58 -17
  159. package/dist/capture/transcript.d.ts +13 -4
  160. package/dist/capture/transcript.js +32 -10
  161. package/dist/capture/working-state.d.ts +13 -4
  162. package/dist/capture/working-state.js +50 -56
  163. package/dist/cli/api-context.d.ts +14 -2
  164. package/dist/cli/api-context.js +45 -2
  165. package/dist/cli/audit.js +33 -33
  166. package/dist/cli/auth.js +23 -31
  167. package/dist/cli/briefs.d.ts +1 -1
  168. package/dist/cli/briefs.js +20 -15
  169. package/dist/cli/card.d.ts +1 -1
  170. package/dist/cli/card.js +56 -73
  171. package/dist/cli/client.d.ts +12 -5
  172. package/dist/cli/client.js +53 -23
  173. package/dist/cli/compact-resume-payload.d.ts +4 -1
  174. package/dist/cli/compact-resume-payload.js +12 -5
  175. package/dist/cli/context.js +43 -18
  176. package/dist/cli/continuity.d.ts +5 -5
  177. package/dist/cli/continuity.js +90 -107
  178. package/dist/cli/curate.d.ts +5 -4
  179. package/dist/cli/curate.js +55 -77
  180. package/dist/cli/dag.d.ts +1 -1
  181. package/dist/cli/dag.js +14 -17
  182. package/dist/cli/decisions.js +30 -30
  183. package/dist/cli/eval.js +16 -21
  184. package/dist/cli/exit.d.ts +4 -1
  185. package/dist/cli/exit.js +10 -2
  186. package/dist/cli/explain.js +12 -11
  187. package/dist/cli/flag-values.d.ts +1 -1
  188. package/dist/cli/flag-values.js +9 -18
  189. package/dist/cli/github.d.ts +6 -0
  190. package/dist/cli/github.js +25 -13
  191. package/dist/cli/goals.d.ts +1 -1
  192. package/dist/cli/goals.js +39 -56
  193. package/dist/cli/graph.d.ts +1 -1
  194. package/dist/cli/graph.js +15 -11
  195. package/dist/cli/hook-runtime.d.ts +34 -10
  196. package/dist/cli/hook-runtime.js +41 -16
  197. package/dist/cli/incidents.d.ts +1 -1
  198. package/dist/cli/incidents.js +25 -25
  199. package/dist/cli/init.d.ts +1 -1
  200. package/dist/cli/init.js +35 -20
  201. package/dist/cli/install-steps.d.ts +12 -3
  202. package/dist/cli/install-steps.js +42 -18
  203. package/dist/cli/last-sleep.d.ts +4 -1
  204. package/dist/cli/last-sleep.js +9 -4
  205. package/dist/cli/maintenance.d.ts +1 -1
  206. package/dist/cli/maintenance.js +11 -12
  207. package/dist/cli/notes.d.ts +1 -1
  208. package/dist/cli/notes.js +8 -5
  209. package/dist/cli/object-verbs.d.ts +5 -5
  210. package/dist/cli/object-verbs.js +13 -16
  211. package/dist/cli/open-browser.js +11 -2
  212. package/dist/cli/playbooks.d.ts +3 -3
  213. package/dist/cli/playbooks.js +40 -32
  214. package/dist/cli/predictions.js +17 -22
  215. package/dist/cli/print.js +4 -2
  216. package/dist/cli/projects.js +21 -11
  217. package/dist/cli/quality-repair-once.d.ts +1 -1
  218. package/dist/cli/quality-repair-once.js +7 -6
  219. package/dist/cli/recall.js +129 -93
  220. package/dist/cli/refine-llm.d.ts +15 -4
  221. package/dist/cli/refine-llm.js +17 -7
  222. package/dist/cli/remember.js +51 -55
  223. package/dist/cli/scheduler.d.ts +4 -1
  224. package/dist/cli/scheduler.js +9 -5
  225. package/dist/cli/serve.js +28 -18
  226. package/dist/cli/session-hooks.d.ts +2 -6
  227. package/dist/cli/session-hooks.js +140 -112
  228. package/dist/cli/setup.d.ts +1 -1
  229. package/dist/cli/setup.js +56 -34
  230. package/dist/cli/shared.d.ts +4 -2
  231. package/dist/cli/shared.js +26 -11
  232. package/dist/cli/slack.js +15 -24
  233. package/dist/cli/sleep-render.d.ts +3 -1
  234. package/dist/cli/sleep-render.js +8 -5
  235. package/dist/cli/sleep.js +16 -8
  236. package/dist/cli/status.d.ts +4 -4
  237. package/dist/cli/status.js +32 -27
  238. package/dist/cli/stdin.d.ts +10 -3
  239. package/dist/cli/stdin.js +10 -3
  240. package/dist/cli/transfer.d.ts +4 -4
  241. package/dist/cli/transfer.js +97 -82
  242. package/dist/cli/usage.d.ts +1 -1
  243. package/dist/cli/usage.js +1 -1
  244. package/dist/cli/verb-row.d.ts +2 -0
  245. package/dist/cli/verbs/health.js +2 -0
  246. package/dist/cli/verbs/memory.js +47 -53
  247. package/dist/cli/verbs/objects.js +16 -7
  248. package/dist/cli/verbs/sessions.js +4 -2
  249. package/dist/cli/versioned-verbs.d.ts +8 -7
  250. package/dist/cli/versioned-verbs.js +31 -21
  251. package/dist/cli.js +14 -18
  252. package/dist/connectors/dlq.d.ts +6 -6
  253. package/dist/connectors/dlq.js +12 -7
  254. package/dist/connectors/github/backfill.d.ts +4 -4
  255. package/dist/connectors/github/backfill.js +6 -4
  256. package/dist/connectors/github/deletion.d.ts +6 -4
  257. package/dist/connectors/github/deletion.js +5 -4
  258. package/dist/connectors/github/dlq.d.ts +8 -6
  259. package/dist/connectors/github/dlq.js +11 -5
  260. package/dist/connectors/github/ingest.d.ts +2 -2
  261. package/dist/connectors/github/ingest.js +9 -5
  262. package/dist/connectors/github/octokit-client.d.ts +3 -1
  263. package/dist/connectors/github/octokit-client.js +7 -2
  264. package/dist/connectors/github/ratelimit.d.ts +6 -2
  265. package/dist/connectors/github/ratelimit.js +6 -2
  266. package/dist/connectors/github/signature.d.ts +14 -3
  267. package/dist/connectors/github/signature.js +17 -3
  268. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  269. package/dist/connectors/github/tenant-routing.js +6 -5
  270. package/dist/connectors/github/transform.js +50 -67
  271. package/dist/connectors/github/types.d.ts +10 -3
  272. package/dist/connectors/github/types.js +6 -2
  273. package/dist/connectors/github/webhook.d.ts +5 -5
  274. package/dist/connectors/github/webhook.js +36 -23
  275. package/dist/connectors/ingest.d.ts +5 -3
  276. package/dist/connectors/ingest.js +3 -3
  277. package/dist/connectors/slack/backfill.d.ts +5 -5
  278. package/dist/connectors/slack/backfill.js +3 -3
  279. package/dist/connectors/slack/deletion.d.ts +4 -4
  280. package/dist/connectors/slack/deletion.js +6 -5
  281. package/dist/connectors/slack/dlq.d.ts +4 -4
  282. package/dist/connectors/slack/dlq.js +6 -6
  283. package/dist/connectors/slack/ingest.d.ts +6 -4
  284. package/dist/connectors/slack/ingest.js +5 -4
  285. package/dist/connectors/slack/signature.d.ts +4 -1
  286. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  287. package/dist/connectors/slack/tenant-routing.js +6 -5
  288. package/dist/connectors/slack/transform.d.ts +6 -2
  289. package/dist/connectors/slack/transform.js +6 -2
  290. package/dist/connectors/slack/types.d.ts +3 -1
  291. package/dist/connectors/slack/web-client.js +8 -3
  292. package/dist/connectors/slack/webhook.d.ts +5 -5
  293. package/dist/connectors/slack/webhook.js +19 -11
  294. package/dist/connectors/slack/workspaces.d.ts +7 -3
  295. package/dist/connectors/slack/workspaces.js +7 -3
  296. package/dist/connectors/store.d.ts +8 -0
  297. package/dist/connectors/store.js +2 -0
  298. package/dist/consolidate/conflicts.js +24 -10
  299. package/dist/consolidate/dag-summary.js +2 -1
  300. package/dist/consolidate/dag.d.ts +10 -5
  301. package/dist/consolidate/dag.js +45 -39
  302. package/dist/consolidate/decay.js +19 -6
  303. package/dist/consolidate/dedupe.d.ts +14 -5
  304. package/dist/consolidate/dedupe.js +28 -17
  305. package/dist/consolidate/flush-units.d.ts +4 -1
  306. package/dist/consolidate/flush-units.js +4 -1
  307. package/dist/consolidate/half-life-migration.d.ts +18 -8
  308. package/dist/consolidate/half-life-migration.js +48 -18
  309. package/dist/consolidate/llm-passes.js +27 -11
  310. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  311. package/dist/consolidate/memory-value-weights.js +6 -2
  312. package/dist/consolidate/memory-value.d.ts +30 -10
  313. package/dist/consolidate/memory-value.js +37 -14
  314. package/dist/consolidate/merge.d.ts +4 -1
  315. package/dist/consolidate/merge.js +47 -37
  316. package/dist/consolidate/overlap-index.d.ts +8 -2
  317. package/dist/consolidate/overlap-index.js +11 -4
  318. package/dist/consolidate/physics-pass.d.ts +3 -1
  319. package/dist/consolidate/physics-pass.js +10 -7
  320. package/dist/consolidate/replay.d.ts +11 -4
  321. package/dist/consolidate/replay.js +19 -7
  322. package/dist/consolidate/run.d.ts +13 -5
  323. package/dist/consolidate/run.js +4 -4
  324. package/dist/consolidate/sleep.d.ts +14 -6
  325. package/dist/consolidate/sleep.js +42 -39
  326. package/dist/consolidate/trace.d.ts +7 -2
  327. package/dist/consolidate/trace.js +7 -2
  328. package/dist/consolidate/traces.js +27 -30
  329. package/dist/core/ablation.d.ts +9 -3
  330. package/dist/core/ablation.js +14 -4
  331. package/dist/core/active-scope.d.ts +3 -1
  332. package/dist/core/active-scope.js +3 -1
  333. package/dist/core/agent-memory-tools.d.ts +2 -0
  334. package/dist/core/agent-memory-tools.js +2 -0
  335. package/dist/core/ambient.d.ts +4 -3
  336. package/dist/core/ambient.js +8 -6
  337. package/dist/core/api-errors.d.ts +9 -3
  338. package/dist/core/api-errors.js +9 -3
  339. package/dist/core/capture-contract.d.ts +4 -1
  340. package/dist/core/capture-contract.js +27 -8
  341. package/dist/core/compare.d.ts +24 -8
  342. package/dist/core/compare.js +24 -8
  343. package/dist/core/config.d.ts +18 -9
  344. package/dist/core/config.js +38 -29
  345. package/dist/core/cosine.d.ts +4 -1
  346. package/dist/core/cosine.js +4 -1
  347. package/dist/core/handoff.d.ts +7 -2
  348. package/dist/core/handoff.js +4 -1
  349. package/dist/core/markdown.js +22 -17
  350. package/dist/core/memory-audit.js +14 -3
  351. package/dist/core/memory-quality.d.ts +12 -3
  352. package/dist/core/memory-quality.js +57 -21
  353. package/dist/core/memory.d.ts +87 -30
  354. package/dist/core/memory.js +82 -33
  355. package/dist/core/merged-row.d.ts +8 -2
  356. package/dist/core/merged-row.js +10 -3
  357. package/dist/core/package-root.d.ts +3 -1
  358. package/dist/core/package-root.js +3 -1
  359. package/dist/core/particle-refresh.d.ts +8 -0
  360. package/dist/core/particle-refresh.js +22 -0
  361. package/dist/core/physics-config.d.ts +4 -1
  362. package/dist/core/physics-config.js +6 -2
  363. package/dist/core/physics.d.ts +39 -11
  364. package/dist/core/physics.js +71 -21
  365. package/dist/core/project-identity.d.ts +34 -17
  366. package/dist/core/project-identity.js +35 -18
  367. package/dist/core/project-remote.d.ts +8 -4
  368. package/dist/core/project-remote.js +31 -14
  369. package/dist/core/recall-scope.d.ts +33 -11
  370. package/dist/core/recall-scope.js +42 -15
  371. package/dist/core/rejection-digest.d.ts +7 -0
  372. package/dist/core/rejection-digest.js +13 -0
  373. package/dist/core/salience.d.ts +3 -1
  374. package/dist/core/salience.js +10 -4
  375. package/dist/core/search-types.d.ts +15 -2
  376. package/dist/core/search-types.js +11 -0
  377. package/dist/dashboard/dashboard-actions.d.ts +2 -2
  378. package/dist/dashboard/dashboard-actions.js +18 -7
  379. package/dist/dashboard/dashboard-queries.js +2 -7
  380. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  381. package/dist/dashboard/dashboard-snapshot.js +5 -7
  382. package/dist/dashboard/dashboard.js +22 -8
  383. package/dist/db/backup.js +2 -2
  384. package/dist/db/busy.d.ts +10 -3
  385. package/dist/db/busy.js +27 -5
  386. package/dist/db/connect.d.ts +10 -2
  387. package/dist/db/connect.js +8 -2
  388. package/dist/db/continuity.d.ts +1 -1
  389. package/dist/db/continuity.js +27 -11
  390. package/dist/db/meta.d.ts +4 -1
  391. package/dist/db/meta.js +4 -1
  392. package/dist/db/migrate.d.ts +10 -5
  393. package/dist/db/migrate.js +40 -20
  394. package/dist/db/migrations/index.d.ts +1 -1
  395. package/dist/db/migrations/index.js +3 -1
  396. package/dist/db/migrations/types.d.ts +2 -1
  397. package/dist/db/migrations/v11.js +1 -0
  398. package/dist/db/migrations/v12.js +2 -1
  399. package/dist/db/migrations/v14.js +2 -0
  400. package/dist/db/migrations/v15.js +4 -2
  401. package/dist/db/migrations/v16.js +6 -3
  402. package/dist/db/migrations/v17.js +2 -1
  403. package/dist/db/migrations/v19.js +4 -2
  404. package/dist/db/migrations/v20.js +2 -1
  405. package/dist/db/migrations/v22.js +12 -6
  406. package/dist/db/migrations/v23.js +6 -3
  407. package/dist/db/migrations/v24.js +6 -3
  408. package/dist/db/migrations/v25.js +4 -2
  409. package/dist/db/migrations/v26.js +4 -2
  410. package/dist/db/migrations/v27.js +6 -3
  411. package/dist/db/migrations/v28.js +4 -2
  412. package/dist/db/migrations/v29.js +4 -2
  413. package/dist/db/migrations/v30.js +6 -3
  414. package/dist/db/migrations/v31.js +4 -2
  415. package/dist/db/migrations/v32.js +6 -3
  416. package/dist/db/migrations/v33.js +4 -2
  417. package/dist/db/migrations/v34.js +2 -1
  418. package/dist/db/migrations/v35.js +2 -1
  419. package/dist/db/migrations/v36.js +2 -1
  420. package/dist/db/migrations/v37.js +10 -5
  421. package/dist/db/migrations/v38.js +10 -5
  422. package/dist/db/migrations/v39.js +14 -6
  423. package/dist/db/migrations/v40.js +4 -2
  424. package/dist/db/migrations/v41.js +4 -2
  425. package/dist/db/migrations/v42.js +2 -1
  426. package/dist/db/migrations/v44.js +4 -2
  427. package/dist/db/migrations/v45.js +4 -2
  428. package/dist/db/migrations/v49.js +2 -1
  429. package/dist/db/migrations/v50.js +4 -2
  430. package/dist/db/migrations/v51.js +4 -2
  431. package/dist/db/migrations/v52.js +2 -1
  432. package/dist/db/migrations/v53.js +8 -4
  433. package/dist/db/migrations/v54.js +2 -1
  434. package/dist/db/migrations/v55.js +4 -2
  435. package/dist/db/migrations/v56.d.ts +3 -0
  436. package/dist/db/migrations/v56.js +28 -0
  437. package/dist/db/open.d.ts +24 -12
  438. package/dist/db/open.js +25 -13
  439. package/dist/db/physics-state.d.ts +8 -8
  440. package/dist/db/physics-state.js +17 -50
  441. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  442. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  443. package/dist/db/request-stores.d.ts +20 -5
  444. package/dist/db/request-stores.js +15 -5
  445. package/dist/db/tables.d.ts +2 -1
  446. package/dist/db/tables.js +12 -4
  447. package/dist/db/vector-store.d.ts +13 -4
  448. package/dist/db/vector-store.js +35 -14
  449. package/dist/db/wal-checkpointer.d.ts +2 -1
  450. package/dist/db/wal-checkpointer.js +19 -7
  451. package/dist/doctor.d.ts +7 -1
  452. package/dist/doctor.js +128 -46
  453. package/dist/embeddings/local.d.ts +8 -4
  454. package/dist/embeddings/local.js +11 -7
  455. package/dist/embeddings/provider.d.ts +19 -10
  456. package/dist/embeddings/provider.js +32 -27
  457. package/dist/embeddings/transformers.d.ts +16 -4
  458. package/dist/embeddings/transformers.js +32 -15
  459. package/dist/entry/json-hooks.d.ts +1 -1
  460. package/dist/entry/json-hooks.js +1 -1
  461. package/dist/entry/project-identity.js +2 -1
  462. package/dist/entry/session-text.d.ts +1 -1
  463. package/dist/entry/session-text.js +1 -1
  464. package/dist/entry/sqlite-handles.d.ts +10 -0
  465. package/dist/entry/sqlite-handles.js +9 -0
  466. package/dist/entry/store-kit.d.ts +50 -0
  467. package/dist/entry/store-kit.js +27 -0
  468. package/dist/entry/testing.d.ts +6 -0
  469. package/dist/entry/testing.js +7 -0
  470. package/dist/eval/eval-stats.d.ts +27 -8
  471. package/dist/eval/eval-stats.js +17 -5
  472. package/dist/eval/eval-suite.d.ts +3 -1
  473. package/dist/eval/eval-suite.js +409 -187
  474. package/dist/eval/eval.d.ts +8 -2
  475. package/dist/eval/eval.js +8 -2
  476. package/dist/eval/judgment.js +17 -7
  477. package/dist/graph/delta.d.ts +9 -42
  478. package/dist/graph/delta.js +17 -11
  479. package/dist/graph/extract.d.ts +10 -7
  480. package/dist/graph/extract.js +57 -25
  481. package/dist/graph/recall.d.ts +12 -4
  482. package/dist/graph/recall.js +30 -13
  483. package/dist/graph/stream.d.ts +18 -6
  484. package/dist/graph/stream.js +32 -10
  485. package/dist/graph/view.d.ts +19 -6
  486. package/dist/graph/view.js +42 -17
  487. package/dist/hooks/codex-session.js +2 -2
  488. package/dist/hooks/codex-wrapper.d.ts +3 -1
  489. package/dist/hooks/codex-wrapper.js +9 -4
  490. package/dist/hooks/copilot.d.ts +19 -5
  491. package/dist/hooks/copilot.js +54 -15
  492. package/dist/hooks/hook-blocks.d.ts +4 -1
  493. package/dist/hooks/hook-blocks.js +8 -3
  494. package/dist/hooks/json-hooks.d.ts +9 -5
  495. package/dist/hooks/json-hooks.js +72 -33
  496. package/dist/hooks/opencode.js +15 -5
  497. package/dist/hooks/shared.d.ts +27 -8
  498. package/dist/hooks/shared.js +57 -16
  499. package/dist/importers/core.d.ts +12 -4
  500. package/dist/importers/core.js +11 -10
  501. package/dist/importers/markdown-parse.d.ts +15 -5
  502. package/dist/importers/markdown-parse.js +16 -7
  503. package/dist/importers/markdown.js +6 -9
  504. package/dist/importers/sources.js +10 -23
  505. package/dist/importers/vault.d.ts +3 -3
  506. package/dist/importers/vault.js +61 -45
  507. package/dist/index.d.ts +33 -7
  508. package/dist/index.js +26 -8
  509. package/dist/learn/autolearn.d.ts +21 -6
  510. package/dist/learn/autolearn.js +57 -26
  511. package/dist/learn/churn-git.d.ts +4 -1
  512. package/dist/learn/churn-git.js +29 -5
  513. package/dist/learn/extract.d.ts +4 -1
  514. package/dist/learn/extract.js +17 -10
  515. package/dist/learn/forward-claim-detector.d.ts +17 -5
  516. package/dist/learn/forward-claim-detector.js +34 -15
  517. package/dist/learn/invalidation.d.ts +12 -6
  518. package/dist/learn/invalidation.js +62 -28
  519. package/dist/learn/roots.d.ts +3 -0
  520. package/dist/learn/roots.js +5 -0
  521. package/dist/mcp/admin-tools.d.ts +5 -5
  522. package/dist/mcp/admin-tools.js +28 -23
  523. package/dist/mcp/format.d.ts +1 -1
  524. package/dist/mcp/format.js +4 -2
  525. package/dist/mcp/framing.d.ts +3 -1
  526. package/dist/mcp/framing.js +20 -8
  527. package/dist/mcp/memory-tools.d.ts +3 -3
  528. package/dist/mcp/memory-tools.js +21 -20
  529. package/dist/mcp/protocol.d.ts +32 -16
  530. package/dist/mcp/protocol.js +12 -9
  531. package/dist/mcp/recall-tools.d.ts +3 -3
  532. package/dist/mcp/recall-tools.js +62 -74
  533. package/dist/mcp/request.d.ts +7 -5
  534. package/dist/mcp/request.js +61 -77
  535. package/dist/mcp/server.d.ts +3 -1
  536. package/dist/mcp/server.js +8 -3
  537. package/dist/mcp/session-state.d.ts +1 -1
  538. package/dist/mcp/session-state.js +4 -3
  539. package/dist/mcp/shared-gate.d.ts +3 -2
  540. package/dist/mcp/shared-gate.js +3 -2
  541. package/dist/mcp/stdio.d.ts +6 -3
  542. package/dist/mcp/stdio.js +59 -23
  543. package/dist/mcp/tool-args.d.ts +4 -1
  544. package/dist/mcp/tool-args.js +8 -3
  545. package/dist/mcp/tools.js +76 -32
  546. package/dist/objects/customer-notes.d.ts +12 -10
  547. package/dist/objects/customer-notes.js +21 -15
  548. package/dist/objects/decisions.d.ts +18 -10
  549. package/dist/objects/decisions.js +23 -17
  550. package/dist/objects/descriptor.js +2 -1
  551. package/dist/objects/fields.d.ts +4 -1
  552. package/dist/objects/fields.js +6 -2
  553. package/dist/objects/incidents.d.ts +14 -16
  554. package/dist/objects/incidents.js +29 -30
  555. package/dist/objects/lifecycle.d.ts +0 -4
  556. package/dist/objects/lifecycle.js +21 -24
  557. package/dist/objects/policies.d.ts +12 -16
  558. package/dist/objects/policies.js +17 -21
  559. package/dist/objects/processes.d.ts +16 -10
  560. package/dist/objects/processes.js +20 -15
  561. package/dist/objects/project-briefs.d.ts +13 -14
  562. package/dist/objects/project-briefs.js +33 -39
  563. package/dist/objects/skills.d.ts +10 -12
  564. package/dist/objects/skills.js +17 -22
  565. package/dist/postinstall.js +15 -7
  566. package/dist/predictions/planning-fallacy.d.ts +19 -6
  567. package/dist/predictions/planning-fallacy.js +4 -2
  568. package/dist/rerankers/clef.d.ts +8 -2
  569. package/dist/rerankers/clef.js +14 -9
  570. package/dist/rerankers/cross-encoder.d.ts +2 -1
  571. package/dist/rerankers/cross-encoder.js +19 -9
  572. package/dist/rerankers/index.js +2 -1
  573. package/dist/rerankers/jev.js +2 -1
  574. package/dist/rerankers/llm.d.ts +6 -2
  575. package/dist/rerankers/llm.js +8 -3
  576. package/dist/rerankers/remote.d.ts +3 -1
  577. package/dist/rerankers/remote.js +5 -2
  578. package/dist/rerankers/types.d.ts +6 -2
  579. package/dist/search/bm25-search.d.ts +3 -1
  580. package/dist/search/bm25-search.js +15 -2
  581. package/dist/search/boosts.js +4 -3
  582. package/dist/search/embed-memories.d.ts +12 -4
  583. package/dist/search/embed-memories.js +96 -58
  584. package/dist/search/engine.d.ts +11 -0
  585. package/dist/search/engine.js +14 -0
  586. package/dist/search/goal-boost.d.ts +10 -3
  587. package/dist/search/goal-boost.js +13 -6
  588. package/dist/search/hybrid-score.d.ts +4 -1
  589. package/dist/search/hybrid-score.js +4 -1
  590. package/dist/search/hybrid.d.ts +23 -8
  591. package/dist/search/hybrid.js +12 -7
  592. package/dist/search/multihop.js +14 -13
  593. package/dist/search/path-context.d.ts +10 -3
  594. package/dist/search/path-context.js +10 -3
  595. package/dist/search/physics-search.d.ts +9 -4
  596. package/dist/search/physics-search.js +38 -14
  597. package/dist/search/rerank.d.ts +2 -1
  598. package/dist/search/rerank.js +2 -1
  599. package/dist/search/rrf.d.ts +14 -5
  600. package/dist/search/rrf.js +11 -4
  601. package/dist/search/vector.d.ts +8 -2
  602. package/dist/search/vector.js +14 -8
  603. package/dist/server/auth.d.ts +19 -15
  604. package/dist/server/auth.js +68 -38
  605. package/dist/server/boot.d.ts +4 -1
  606. package/dist/server/boot.js +115 -67
  607. package/dist/server/client-ip.d.ts +17 -5
  608. package/dist/server/client-ip.js +56 -21
  609. package/dist/server/cursor.d.ts +10 -3
  610. package/dist/server/cursor.js +10 -3
  611. package/dist/server/deadline.d.ts +5 -2
  612. package/dist/server/deadline.js +10 -3
  613. package/dist/server/key-check-bounds.js +12 -4
  614. package/dist/server/lifecycle.d.ts +4 -1
  615. package/dist/server/lifecycle.js +10 -4
  616. package/dist/server/mcp-http.d.ts +2 -1
  617. package/dist/server/mcp-http.js +37 -22
  618. package/dist/server/rate-limit.d.ts +17 -5
  619. package/dist/server/rate-limit.js +55 -26
  620. package/dist/server/ready.js +7 -4
  621. package/dist/server/request.d.ts +15 -4
  622. package/dist/server/request.js +42 -15
  623. package/dist/server/route-checks.d.ts +4 -1
  624. package/dist/server/route-checks.js +8 -3
  625. package/dist/server/route-table.d.ts +8 -6
  626. package/dist/server/route-table.js +550 -97
  627. package/dist/server/routes/admin.d.ts +7 -7
  628. package/dist/server/routes/admin.js +36 -15
  629. package/dist/server/routes/customer-notes.d.ts +5 -5
  630. package/dist/server/routes/customer-notes.js +5 -4
  631. package/dist/server/routes/decisions.d.ts +5 -5
  632. package/dist/server/routes/decisions.js +12 -6
  633. package/dist/server/routes/incidents.d.ts +5 -5
  634. package/dist/server/routes/incidents.js +10 -4
  635. package/dist/server/routes/memories.d.ts +8 -8
  636. package/dist/server/routes/memories.js +12 -17
  637. package/dist/server/routes/object-routes.d.ts +8 -5
  638. package/dist/server/routes/object-routes.js +4 -2
  639. package/dist/server/routes/policies.d.ts +6 -6
  640. package/dist/server/routes/policies.js +11 -4
  641. package/dist/server/routes/predictions.d.ts +5 -5
  642. package/dist/server/routes/predictions.js +9 -4
  643. package/dist/server/routes/processes.d.ts +5 -5
  644. package/dist/server/routes/processes.js +15 -6
  645. package/dist/server/routes/project-briefs.d.ts +6 -6
  646. package/dist/server/routes/project-briefs.js +3 -2
  647. package/dist/server/routes/recall.d.ts +3 -3
  648. package/dist/server/routes/recall.js +21 -10
  649. package/dist/server/routes/skills.d.ts +6 -6
  650. package/dist/server/routes/skills.js +12 -4
  651. package/dist/server/server-detect.d.ts +24 -8
  652. package/dist/server/server-detect.js +57 -22
  653. package/dist/server/sleep-child.js +16 -10
  654. package/dist/server/sleep-offload.d.ts +8 -5
  655. package/dist/server/sleep-offload.js +40 -18
  656. package/dist/server/tls.d.ts +10 -2
  657. package/dist/server/tls.js +25 -5
  658. package/dist/server/types.d.ts +41 -24
  659. package/dist/server/validation.d.ts +4 -1
  660. package/dist/server/validation.js +22 -9
  661. package/dist/server.d.ts +17 -49
  662. package/dist/server.js +33 -40
  663. package/dist/sharing/global-store.d.ts +6 -12
  664. package/dist/sharing/global-store.js +8 -48
  665. package/dist/sharing/global-sync.d.ts +3 -1
  666. package/dist/sharing/global-sync.js +17 -7
  667. package/dist/sharing/project-merge.d.ts +25 -7
  668. package/dist/sharing/project-merge.js +49 -17
  669. package/dist/sharing/search-both.d.ts +8 -4
  670. package/dist/sharing/search-both.js +28 -14
  671. package/dist/sharing/share.d.ts +8 -4
  672. package/dist/sharing/share.js +40 -18
  673. package/dist/store/ambient.js +10 -5
  674. package/dist/store/audit-event.d.ts +2 -2
  675. package/dist/store/audit-event.js +8 -3
  676. package/dist/store/audit.d.ts +6 -3
  677. package/dist/store/audit.js +16 -6
  678. package/dist/store/auth.d.ts +4 -2
  679. package/dist/store/auth.js +63 -20
  680. package/dist/store/busy.d.ts +9 -0
  681. package/dist/store/busy.js +16 -0
  682. package/dist/store/candidates.d.ts +12 -5
  683. package/dist/store/candidates.js +90 -41
  684. package/dist/store/capture-write.d.ts +2 -1
  685. package/dist/store/capture-write.js +2 -1
  686. package/dist/store/card-detail.d.ts +4 -4
  687. package/dist/store/card-detail.js +15 -8
  688. package/dist/store/cards.d.ts +24 -10
  689. package/dist/store/cards.js +97 -63
  690. package/dist/store/compaction-caller.d.ts +2 -1
  691. package/dist/store/compaction-caller.js +2 -1
  692. package/dist/store/compactions-record.d.ts +14 -8
  693. package/dist/store/compactions-record.js +101 -37
  694. package/dist/store/compactions.js +35 -15
  695. package/dist/store/conflicts.d.ts +16 -5
  696. package/dist/store/conflicts.js +104 -48
  697. package/dist/store/connectors/dlq.d.ts +17 -5
  698. package/dist/store/connectors/dlq.js +58 -6
  699. package/dist/store/connectors/event-log.d.ts +122 -0
  700. package/dist/store/connectors/event-log.js +25 -0
  701. package/dist/store/connectors/github.d.ts +6 -3
  702. package/dist/store/connectors/github.js +30 -48
  703. package/dist/store/connectors/slack.d.ts +2 -1
  704. package/dist/store/connectors/slack.js +31 -47
  705. package/dist/store/dashboard-reads.d.ts +7 -3
  706. package/dist/store/dashboard-reads.js +32 -10
  707. package/dist/store/delete-and-batch.d.ts +17 -11
  708. package/dist/store/delete-and-batch.js +70 -28
  709. package/dist/store/delivery-recorder.d.ts +10 -7
  710. package/dist/store/delivery-recorder.js +70 -37
  711. package/dist/store/descendant-page.d.ts +2 -1
  712. package/dist/store/descendant-page.js +26 -10
  713. package/dist/store/diagnostics.d.ts +2 -1
  714. package/dist/store/diagnostics.js +2 -1
  715. package/dist/store/doctor-reads.d.ts +2 -1
  716. package/dist/store/doctor-reads.js +13 -5
  717. package/dist/store/dormant.d.ts +19 -11
  718. package/dist/store/dormant.js +45 -19
  719. package/dist/store/embeddings/index.d.ts +13 -9
  720. package/dist/store/embeddings/index.js +19 -12
  721. package/dist/store/entry-reads.d.ts +72 -21
  722. package/dist/store/entry-reads.js +215 -69
  723. package/dist/store/entry-row.d.ts +10 -6
  724. package/dist/store/entry-row.js +26 -14
  725. package/dist/store/entry-writes.d.ts +28 -13
  726. package/dist/store/entry-writes.js +61 -22
  727. package/dist/store/failure-log-at.js +1 -1
  728. package/dist/store/failure-log.d.ts +4 -2
  729. package/dist/store/failure-log.js +13 -6
  730. package/dist/store/gated-write.d.ts +3 -3
  731. package/dist/store/gated-write.js +3 -3
  732. package/dist/store/goals.d.ts +5 -4
  733. package/dist/store/goals.js +11 -12
  734. package/dist/store/graph-apply.d.ts +21 -0
  735. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  736. package/dist/store/graph-queue.d.ts +9 -6
  737. package/dist/store/graph-queue.js +15 -10
  738. package/dist/store/graph-reads.d.ts +16 -11
  739. package/dist/store/graph-reads.js +29 -19
  740. package/dist/store/graph-rows.d.ts +41 -3
  741. package/dist/store/graph-rows.js +10 -7
  742. package/dist/store/graph-view-rows.js +15 -7
  743. package/dist/store/graph-writes.d.ts +16 -10
  744. package/dist/store/graph-writes.js +59 -36
  745. package/dist/store/half-life.js +2 -2
  746. package/dist/store/handoffs.d.ts +13 -7
  747. package/dist/store/handoffs.js +44 -22
  748. package/dist/store/index-and-stats.d.ts +2 -2
  749. package/dist/store/index-and-stats.js +6 -5
  750. package/dist/store/index.d.ts +4 -2
  751. package/dist/store/index.js +2 -1
  752. package/dist/store/key-audit.d.ts +2 -1
  753. package/dist/store/key-audit.js +2 -1
  754. package/dist/store/key-writes.d.ts +2 -1
  755. package/dist/store/key-writes.js +9 -2
  756. package/dist/store/ledger-turn.d.ts +4 -1
  757. package/dist/store/ledger-turn.js +7 -2
  758. package/dist/store/mirrors.d.ts +11 -4
  759. package/dist/store/mirrors.js +96 -19
  760. package/dist/store/narrow.d.ts +6 -0
  761. package/dist/store/narrow.js +11 -0
  762. package/dist/store/open.d.ts +6 -3
  763. package/dist/store/open.js +20 -10
  764. package/dist/store/pilot-arm.d.ts +2 -1
  765. package/dist/store/pilot-arm.js +18 -6
  766. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  767. package/dist/store/planning-fallacy-evidence.js +8 -5
  768. package/dist/store/port/agent-import.d.ts +62 -0
  769. package/dist/store/port/agent-import.js +2 -0
  770. package/dist/store/port/consolidation.d.ts +129 -0
  771. package/dist/store/port/consolidation.js +2 -0
  772. package/dist/store/port/learning.d.ts +19 -0
  773. package/dist/store/port/learning.js +2 -0
  774. package/dist/store/port/local-files.d.ts +18 -0
  775. package/dist/store/port/local-files.js +2 -0
  776. package/dist/store/port/promotion.d.ts +20 -0
  777. package/dist/store/port/promotion.js +3 -0
  778. package/dist/store/port-groups.d.ts +160 -0
  779. package/dist/store/port-groups.js +2 -0
  780. package/dist/store/port.d.ts +261 -219
  781. package/dist/store/port.js +3 -9
  782. package/dist/store/predictions.d.ts +14 -10
  783. package/dist/store/predictions.js +37 -17
  784. package/dist/store/project-tags.d.ts +4 -1
  785. package/dist/store/project-tags.js +16 -5
  786. package/dist/store/quality-repair.d.ts +8 -4
  787. package/dist/store/quality-repair.js +53 -20
  788. package/dist/store/quarantine.d.ts +1 -0
  789. package/dist/store/quarantine.js +23 -9
  790. package/dist/store/raw-archive.d.ts +5 -4
  791. package/dist/store/raw-archive.js +11 -10
  792. package/dist/store/recall-trace.d.ts +22 -17
  793. package/dist/store/recall-trace.js +128 -64
  794. package/dist/store/rejected-values.d.ts +15 -10
  795. package/dist/store/rejected-values.js +46 -20
  796. package/dist/store/rejection.d.ts +12 -11
  797. package/dist/store/rejection.js +18 -19
  798. package/dist/store/report-reads.d.ts +2 -1
  799. package/dist/store/report-reads.js +2 -1
  800. package/dist/store/rows.d.ts +7 -5
  801. package/dist/store/rows.js +20 -13
  802. package/dist/store/rule-sql.d.ts +7 -3
  803. package/dist/store/rule-sql.js +26 -13
  804. package/dist/store/search-rows.d.ts +16 -11
  805. package/dist/store/search-rows.js +54 -32
  806. package/dist/store/sessions.d.ts +12 -10
  807. package/dist/store/sessions.js +40 -21
  808. package/dist/store/set-aside.d.ts +2 -2
  809. package/dist/store/set-aside.js +18 -5
  810. package/dist/store/sqlite/agent-import.d.ts +3 -0
  811. package/dist/store/sqlite/agent-import.js +77 -0
  812. package/dist/store/sqlite/cards-group.d.ts +6 -0
  813. package/dist/store/sqlite/cards-group.js +37 -0
  814. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  815. package/dist/store/sqlite/conflicts-group.js +18 -0
  816. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  817. package/dist/store/sqlite/connector-events-group.js +17 -6
  818. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  819. package/dist/store/sqlite/connector-writes-group.js +12 -5
  820. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  821. package/dist/store/sqlite/consolidation-group.js +64 -0
  822. package/dist/store/sqlite/dag-reads-group.js +1 -1
  823. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  824. package/dist/store/sqlite/dormant-group.js +29 -0
  825. package/dist/store/sqlite/entry-writes-group.d.ts +9 -6
  826. package/dist/store/sqlite/entry-writes-group.js +37 -14
  827. package/dist/store/sqlite/error-codec.d.ts +4 -2
  828. package/dist/store/sqlite/error-codec.js +32 -10
  829. package/dist/store/sqlite/executor-counts.js +2 -1
  830. package/dist/store/sqlite/executor.d.ts +8 -3
  831. package/dist/store/sqlite/executor.js +56 -18
  832. package/dist/store/sqlite/global-promote.d.ts +5 -0
  833. package/dist/store/sqlite/global-promote.js +48 -0
  834. package/dist/store/sqlite/goals-group.d.ts +6 -0
  835. package/dist/store/sqlite/goals-group.js +23 -0
  836. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  837. package/dist/store/sqlite/graph-reads-group.js +2 -1
  838. package/dist/store/sqlite/held-connection.d.ts +8 -0
  839. package/dist/store/sqlite/held-connection.js +34 -7
  840. package/dist/store/sqlite/last-recall-group.d.ts +15 -0
  841. package/dist/store/sqlite/last-recall-group.js +62 -0
  842. package/dist/store/sqlite/learning-group.d.ts +4 -0
  843. package/dist/store/sqlite/learning-group.js +17 -0
  844. package/dist/store/sqlite/maintenance-groups.d.ts +6 -0
  845. package/dist/store/sqlite/maintenance-groups.js +61 -0
  846. package/dist/store/sqlite/object-rows.d.ts +6 -3
  847. package/dist/store/sqlite/object-rows.js +34 -5
  848. package/dist/store/sqlite/objects-group.d.ts +5 -4
  849. package/dist/store/sqlite/objects-group.js +97 -38
  850. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  851. package/dist/store/sqlite/predictions-group.js +4 -2
  852. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  853. package/dist/store/sqlite/promotion-group.js +10 -0
  854. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  855. package/dist/store/sqlite/quarantine-group.js +4 -2
  856. package/dist/store/sqlite/reports-group.d.ts +6 -0
  857. package/dist/store/sqlite/reports-group.js +33 -0
  858. package/dist/store/sqlite/request-scope.d.ts +6 -0
  859. package/dist/store/sqlite/request-scope.js +18 -0
  860. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  861. package/dist/store/sqlite/sessions-group.js +46 -0
  862. package/dist/store/sqlite/store.d.ts +22 -18
  863. package/dist/store/sqlite/store.js +95 -33
  864. package/dist/store/sqlite/vector-pack.js +2 -1
  865. package/dist/store/sqlite/vector-reads-group.js +2 -1
  866. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  867. package/dist/store/sqlite/worker-jobs.js +19 -7
  868. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  869. package/dist/store/sqlite/worker-ops.js +6 -3
  870. package/dist/store/sqlite/worker-store.d.ts +4 -3
  871. package/dist/store/sqlite/worker-store.js +24 -14
  872. package/dist/store/summaries.d.ts +25 -11
  873. package/dist/store/summaries.js +84 -27
  874. package/dist/store/summary-dirty.d.ts +2 -1
  875. package/dist/store/summary-dirty.js +2 -1
  876. package/dist/store/tenant.d.ts +3 -2
  877. package/dist/store/tenant.js +5 -4
  878. package/dist/store/token-ledger-rows.js +8 -4
  879. package/dist/store/token-ledger.d.ts +19 -13
  880. package/dist/store/token-ledger.js +27 -14
  881. package/dist/store/tombstone-checks.d.ts +4 -1
  882. package/dist/store/tombstone-checks.js +10 -1
  883. package/dist/store/usage-reports.js +2 -1
  884. package/dist/store/vector-index.d.ts +8 -5
  885. package/dist/store/vector-index.js +28 -11
  886. package/dist/store/working-memory.d.ts +6 -4
  887. package/dist/store/working-memory.js +14 -9
  888. package/dist/support-bundle.js +10 -5
  889. package/dist/trust/quarantine.d.ts +1 -2
  890. package/dist/trust/quarantine.js +1 -5
  891. package/dist/trust/reject-flow.d.ts +12 -3
  892. package/dist/trust/reject-flow.js +12 -4
  893. package/dist/util/anthropic-messages.d.ts +7 -2
  894. package/dist/util/anthropic-messages.js +18 -7
  895. package/dist/util/atomic-write.d.ts +8 -3
  896. package/dist/util/atomic-write.js +36 -21
  897. package/dist/util/compaction-items.d.ts +4 -1
  898. package/dist/util/compaction-items.js +8 -2
  899. package/dist/util/crash-handlers.d.ts +7 -2
  900. package/dist/util/crash-handlers.js +13 -4
  901. package/dist/util/env.d.ts +26 -5
  902. package/dist/util/env.js +87 -25
  903. package/dist/util/format.d.ts +2 -0
  904. package/dist/util/format.js +4 -0
  905. package/dist/util/home-path.js +12 -6
  906. package/dist/util/hook-payload.d.ts +3 -1
  907. package/dist/util/hook-payload.js +3 -1
  908. package/dist/util/http-retry.d.ts +12 -6
  909. package/dist/util/http-retry.js +16 -6
  910. package/dist/util/http-util.d.ts +20 -5
  911. package/dist/util/http-util.js +28 -9
  912. package/dist/util/json.d.ts +4 -1
  913. package/dist/util/json.js +4 -1
  914. package/dist/util/keyset.js +2 -1
  915. package/dist/util/limits.js +4 -2
  916. package/dist/util/log.d.ts +13 -5
  917. package/dist/util/log.js +29 -6
  918. package/dist/util/net.d.ts +5 -0
  919. package/dist/util/net.js +19 -0
  920. package/dist/util/real-path.d.ts +2 -1
  921. package/dist/util/real-path.js +4 -3
  922. package/dist/util/request-scope.d.ts +16 -4
  923. package/dist/util/request-scope.js +19 -6
  924. package/dist/util/same-text.d.ts +10 -3
  925. package/dist/util/same-text.js +10 -3
  926. package/dist/util/secret-detect.d.ts +24 -7
  927. package/dist/util/secret-detect.js +49 -14
  928. package/dist/util/spawn-argv.d.ts +11 -0
  929. package/dist/util/spawn-argv.js +66 -0
  930. package/dist/util/sql.d.ts +3 -0
  931. package/dist/util/sql.js +6 -0
  932. package/dist/util/sqlite-blocked.d.ts +15 -4
  933. package/dist/util/sqlite-blocked.js +19 -6
  934. package/dist/util/stored-json.d.ts +4 -1
  935. package/dist/util/stored-json.js +6 -2
  936. package/dist/util/stream-tee.d.ts +2 -1
  937. package/dist/util/stream-tee.js +8 -5
  938. package/dist/util/transcript-tail.d.ts +4 -1
  939. package/dist/util/transcript-tail.js +4 -1
  940. package/dist/util/vector-codec.d.ts +4 -0
  941. package/dist/util/vector-codec.js +15 -0
  942. package/dist/util/version.d.ts +8 -3
  943. package/dist/util/version.js +8 -3
  944. package/dist/util/write-budget.d.ts +7 -2
  945. package/dist/util/write-budget.js +5 -2
  946. package/dist/util/yaml.d.ts +4 -1
  947. package/dist/util/yaml.js +4 -1
  948. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  949. package/extensions/openclaw-plugin/package.json +1 -1
  950. package/openclaw.plugin.json +1 -1
  951. package/package.json +4 -1
  952. package/scripts/postinstall.cjs +3 -1
  953. package/dist/api/audit.js +0 -56
  954. package/dist/api/cards.d.ts +0 -42
  955. package/dist/api/conflicts.d.ts +0 -28
  956. package/dist/api/conflicts.js +0 -61
  957. package/dist/api/dormant.d.ts +0 -14
  958. package/dist/api/dormant.js +0 -58
  959. package/dist/api/goals.d.ts +0 -18
  960. package/dist/api/graph.d.ts +0 -8
  961. package/dist/api/graph.js +0 -7
  962. package/dist/api/learn.js +0 -124
  963. package/dist/api/memories.d.ts +0 -23
  964. package/dist/api/memories.js +0 -46
  965. package/dist/api/objects.d.ts +0 -9
  966. package/dist/api/on-store.d.ts +0 -16
  967. package/dist/api/on-store.js +0 -38
  968. package/dist/api/outcome.d.ts +0 -19
  969. package/dist/api/outcome.js +0 -21
  970. package/dist/api/predictions.d.ts +0 -11
  971. package/dist/api/promote.d.ts +0 -36
  972. package/dist/api/promote.js +0 -65
  973. package/dist/api/recall-core.d.ts +0 -4
  974. package/dist/api/recall-core.js +0 -120
  975. package/dist/api/recall-finish.d.ts +0 -53
  976. package/dist/api/recall-finish.js +0 -30
  977. package/dist/api/recall-history.d.ts +0 -64
  978. package/dist/api/recall-history.js +0 -159
  979. package/dist/api/recall-record.d.ts +0 -43
  980. package/dist/api/recall-record.js +0 -78
  981. package/dist/api/recall-request.js +0 -121
  982. package/dist/api/recall.d.ts +0 -6
  983. package/dist/api/refine.d.ts +0 -7
  984. package/dist/api/refine.js +0 -10
  985. package/dist/api/session-owners.d.ts +0 -4
  986. package/dist/api/session-owners.js +0 -17
  987. package/dist/api/sleep-run.d.ts +0 -26
  988. package/dist/api/sleep.js +0 -10
  989. package/dist/cli/lenient-id.d.ts +0 -2
  990. package/dist/cli/lenient-id.js +0 -13
  991. package/dist/graph/write.d.ts +0 -14
  992. package/dist/store/sqlite/busy.d.ts +0 -3
  993. package/dist/store/sqlite/busy.js +0 -8
  994. package/dist/store/sqlite/local.d.ts +0 -21
  995. package/dist/store/sqlite/local.js +0 -39
@@ -1,15 +1,19 @@
1
1
  // The init and setup steps that touch the machine: Codex hooks, the settings.json warning and the daily schedule.
2
2
  import * as path from 'path';
3
- import { execFileSync, execSync } from 'child_process';
3
+ import { execFileSync } from 'child_process';
4
4
  import { installJsonHooks } from '../hooks/json-hooks.js';
5
5
  import { CODEX_TRUST_LINE } from '../hooks/shared.js';
6
6
  import { envSkipSchedule } from '../util/env.js';
7
7
  import { DAILY_TASK_NAME, buildDailyRunnerCommand, hasUnsafeRunnerPathChars, buildSchtasksCreateArgs, buildWindowsTaskRun, quoteInsideWindowsArg, } from './scheduler.js';
8
- /** Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an untrusted hook. */
8
+ /**
9
+ * Adds hippo's two Codex hooks and says what changed; each install ends on the trust reminder, since Codex skips an
10
+ * untrusted hook.
11
+ */
9
12
  export function installCodexMemoryHooks(indent) {
10
13
  const result = installJsonHooks('codex');
11
14
  if (result.invalidJson) {
12
- console.log(`${indent}WARNING: ${result.settingsPath} is not a hooks file hippo can merge into; fix it, then run \`hippo hook install codex\`.`);
15
+ console.log(`${indent}WARNING: ${result.settingsPath} is not a hooks file hippo can merge into; fix it, then run \`hippo ` +
16
+ `hook install codex\`.`);
13
17
  return;
14
18
  }
15
19
  const added = [
@@ -21,7 +25,9 @@ export function installCodexMemoryHooks(indent) {
21
25
  : `${indent}hippo's Codex memory hooks already in ${result.settingsPath}`);
22
26
  console.log(`${indent}${CODEX_TRUST_LINE}`);
23
27
  }
24
- /** The one line init, hook install, hook uninstall and setup print when Claude Code's settings.json is not JSON hippo can edit and so was
28
+ /**
29
+ * The one line init, hook install, hook uninstall and setup print when Claude Code's settings.json is not JSON hippo
30
+ * can edit and so was
25
31
  * left unchanged; true when it printed. */
26
32
  export function warnClaudeSettingsUnusable(result, indent, action = 'install') {
27
33
  if (!result.invalidJson)
@@ -30,17 +36,34 @@ export function warnClaudeSettingsUnusable(result, indent, action = 'install') {
30
36
  `fix it, then run \`hippo hook ${action} claude-code\`.`);
31
37
  return true;
32
38
  }
33
- /** Machine-level daily runner sweeping all registered workspaces: user crontab on Linux/macOS, a scheduled task on Windows; skips if installed. */
34
- /** Bound on each schtasks and crontab call, so a scheduler that never answers cannot hang `hippo init` or `hippo setup`. */
39
+ /**
40
+ * Machine-level daily runner sweeping all registered workspaces: user crontab on Linux/macOS, a scheduled task on
41
+ * Windows; skips if installed.
42
+ */
43
+ /**
44
+ * Bound on each schtasks and crontab call, so a scheduler that never answers cannot hang `hippo init` or `hippo setup`.
45
+ */
35
46
  const SCHEDULER_CALL_TIMEOUT_MS = 30_000;
36
- /** Node kills a child at its timeout and reports ETIMEDOUT; every other failure here means the scheduler refused or is missing. */
47
+ // Piped stderr stands in for `2>nul` and `2>/dev/null`, so no shell is needed to keep the scheduler's complaints off
48
+ // the terminal.
49
+ const SCHEDULER_CALL = {
50
+ encoding: 'utf-8',
51
+ stdio: 'pipe',
52
+ windowsHide: true,
53
+ timeout: SCHEDULER_CALL_TIMEOUT_MS,
54
+ };
55
+ /**
56
+ * Node kills a child at its timeout and reports ETIMEDOUT; every other failure here means the scheduler refused or is
57
+ * missing.
58
+ */
37
59
  function schedulerTimedOut(err) {
38
60
  return err instanceof Error && 'code' in err && err.code === 'ETIMEDOUT';
39
61
  }
40
62
  function warnSchedulerTimedOut(command) {
41
- console.log(` ${command} did not answer within ${SCHEDULER_CALL_TIMEOUT_MS / 1000} s and was stopped, so the daily runner is not scheduled.`);
63
+ console.log(` ${command} did not answer within ${SCHEDULER_CALL_TIMEOUT_MS / 1000} s and was stopped, so the daily runner ` +
64
+ `is not scheduled.`);
42
65
  }
43
- export function setupDailySchedule(globalRoot) {
66
+ export function setupDailySchedule(globalRoot, run = execFileSync) {
44
67
  // Checked here, not per caller, so init, init --scan and setup all honour it.
45
68
  if (envSkipSchedule()) {
46
69
  console.log(' HIPPO_SKIP_SCHEDULE=1, so the machine-level daily runner was not scheduled.');
@@ -55,14 +78,14 @@ export function setupDailySchedule(globalRoot) {
55
78
  const taskName = DAILY_TASK_NAME;
56
79
  const cmd = buildDailyRunnerCommand(runnerDir);
57
80
  if (isWindows)
58
- scheduleOnWindows(taskName, cmd);
81
+ scheduleOnWindows(taskName, cmd, run);
59
82
  else
60
- scheduleOnCrontab(taskName, cmd);
83
+ scheduleOnCrontab(taskName, cmd, run);
61
84
  }
62
- function scheduleOnWindows(taskName, cmd) {
85
+ function scheduleOnWindows(taskName, cmd, run) {
63
86
  // Check if task already exists
64
87
  try {
65
- const existing = execSync(`schtasks /query /tn "${taskName}" 2>nul`, { encoding: 'utf-8', windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
88
+ const existing = run('schtasks', ['/query', '/tn', taskName], SCHEDULER_CALL);
66
89
  if (existing.includes(taskName)) {
67
90
  return; // already scheduled
68
91
  }
@@ -73,7 +96,7 @@ function scheduleOnWindows(taskName, cmd) {
73
96
  warnSchedulerTimedOut('schtasks /query');
74
97
  }
75
98
  try {
76
- execFileSync('schtasks', buildSchtasksCreateArgs(taskName, cmd), { stdio: 'pipe', windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
99
+ run('schtasks', buildSchtasksCreateArgs(taskName, cmd), SCHEDULER_CALL);
77
100
  console.log(` Scheduled machine-level daily runner (6:15am) via Task Scheduler: ${taskName}`);
78
101
  }
79
102
  catch (err) {
@@ -81,20 +104,21 @@ function scheduleOnWindows(taskName, cmd) {
81
104
  warnSchedulerTimedOut('schtasks /create');
82
105
  // No admin rights or schtasks unavailable, fall back to printing instructions
83
106
  console.log(` To schedule the machine-level daily runner, run:`);
84
- console.log(` schtasks /create /tn "${taskName}" /tr "${quoteInsideWindowsArg(buildWindowsTaskRun(cmd))}" /sc daily /st 06:15`);
107
+ console.log(` schtasks /create /tn "${taskName}" /tr "${quoteInsideWindowsArg(buildWindowsTaskRun(cmd))}" /sc daily /st ` +
108
+ `06:15`);
85
109
  }
86
110
  }
87
- function scheduleOnCrontab(taskName, cmd) {
111
+ function scheduleOnCrontab(taskName, cmd, run) {
88
112
  // Unix: check crontab for existing entry
89
113
  const marker = `# hippo:${taskName}`;
90
114
  try {
91
- const existing = execSync('crontab -l 2>/dev/null', { encoding: 'utf-8', windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
115
+ const existing = run('crontab', ['-l'], SCHEDULER_CALL);
92
116
  if (existing.includes(marker)) {
93
117
  return; // already scheduled
94
118
  }
95
119
  const cronLine = `15 6 * * * ${cmd} ${marker}`;
96
120
  const newCrontab = existing.trimEnd() + '\n' + cronLine + '\n';
97
- execSync('crontab -', { input: newCrontab, stdio: ['pipe', 'pipe', 'pipe'], windowsHide: true, timeout: SCHEDULER_CALL_TIMEOUT_MS });
121
+ run('crontab', ['-'], { ...SCHEDULER_CALL, input: newCrontab });
98
122
  console.log(` Scheduled machine-level daily runner (6:15am) via crontab`);
99
123
  }
100
124
  catch (err) {
@@ -1,5 +1,8 @@
1
1
  import { type CliFlags, type CommandContext } from './flag-values.js';
2
- /** The line the user sees when the last sleep failed, a spool step hit an unexpected error, or the spool holds `.bad` files; null when none did. */
2
+ /**
3
+ * The line the user sees when the last sleep failed, a spool step hit an unexpected error, or the spool holds `.bad`
4
+ * files; null when none did.
5
+ */
3
6
  export declare function sleepProblems(logText: string, bad: number): string | null;
4
7
  /** Prints the SessionEnd sleep log on stderr, then clears it. In a hook, stdout carries only `systemMessage`,
5
8
  * because Claude Code shows that to the user and adds any other SessionStart stdout to the model's context. */
@@ -4,19 +4,24 @@ import { isStringValue } from '../core/capture-contract.js';
4
4
  import { REPLAY_AFTER_MS } from '../core/compaction-timing.js';
5
5
  import { SPOOL_PROBLEM, spoolCounts } from '../capture/compaction-spool.js';
6
6
  import { defaultSleepLogPath } from '../hooks/shared.js';
7
- import { errorMessage, log } from '../util/log.js';
7
+ import { errorMessage, log, errorFields } from '../util/log.js';
8
8
  import { truncateCodePointSafe } from '../util/transcript-tail.js';
9
9
  import { printError } from './output.js';
10
10
  import { hookStoreRoot } from './hook-runtime.js';
11
11
  const SLEEP_FAILED = '[hippo] sleep failed: ';
12
12
  const FAILURE_CHARS = 120;
13
- /** The line the user sees when the last sleep failed, a spool step hit an unexpected error, or the spool holds `.bad` files; null when none did. */
13
+ /**
14
+ * The line the user sees when the last sleep failed, a spool step hit an unexpected error, or the spool holds `.bad`
15
+ * files; null when none did.
16
+ */
14
17
  export function sleepProblems(logText, bad) {
15
18
  const lines = logText.split(/\r?\n/);
16
19
  const failed = lines.find((line) => line.startsWith(SLEEP_FAILED));
17
20
  const errors = lines.filter((line) => line.includes(SPOOL_PROBLEM)).length;
18
21
  const parts = [
19
- failed === undefined ? '' : `the last sleep failed (${truncateCodePointSafe(failed.slice(SLEEP_FAILED.length).trim(), FAILURE_CHARS)})`,
22
+ failed === undefined
23
+ ? ''
24
+ : `the last sleep failed (${truncateCodePointSafe(failed.slice(SLEEP_FAILED.length).trim(), FAILURE_CHARS)})`,
20
25
  errors === 0 ? '' : `${errors} error${errors === 1 ? '' : 's'} while saving waiting compaction summaries`,
21
26
  bad === 0 ? '' : `${bad} compaction ${bad === 1 ? 'summary' : 'summaries'} set aside as .bad`,
22
27
  ].filter((part) => part !== '');
@@ -63,7 +68,7 @@ export function cmdLastSleep(hippoRoot, flags, out = process.stdout.isTTY ? 'ter
63
68
  fs.unlinkSync(logPath);
64
69
  }
65
70
  catch (err) {
66
- log.debug(`last-sleep log not removed, it shows again next session: ${errorMessage(err)}`);
71
+ log.debug(`last-sleep log not removed, it shows again next session: ${errorMessage(err)}`, errorFields(err));
67
72
  }
68
73
  }
69
74
  }
@@ -1,6 +1,6 @@
1
1
  import { type EmbeddingProvider } from '../embeddings/provider.js';
2
2
  import { type CommandContext } from './flag-values.js';
3
3
  export declare function handleRefine({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
4
- export declare function handleDedup({ hippoRoot, tenantId, flags }: CommandContext): void;
4
+ export declare function handleDedup({ hippoRoot, tenantId, flags }: CommandContext): Promise<void>;
5
5
  export declare function handleEmbed({ hippoRoot, tenantId, flags }: CommandContext, given?: EmbeddingProvider): Promise<void>;
6
6
  //# sourceMappingURL=maintenance.d.ts.map
@@ -3,15 +3,15 @@ import { envAnthropicApiKey } from '../util/env.js';
3
3
  import { deduplicateStore } from '../consolidate/dedupe.js';
4
4
  import { resolveEmbeddingProvider } from '../embeddings/provider.js';
5
5
  import { embedCoverage, embedMissingMemories, resetPhysicsFromVectors, storedVectorCount } from '../api/embeddings.js';
6
- import { countAllMemories } from '../api/memories.js';
7
- import { cliApiContext } from './api-context.js';
6
+ import { countAllMemories } from '../api/memories/memories.js';
7
+ import { cliApiContext, cliLocalFiles } from './api-context.js';
8
8
  import { loadConfig } from '../core/config.js';
9
9
  import { refineStore } from './refine-llm.js';
10
10
  import { printError } from './output.js';
11
- import { boolFlag, numberFlag } from './flag-values.js';
11
+ import { boolFlag, numberFlag, stringFlagOrExit } from './flag-values.js';
12
12
  import { requireInit, resolveAuthRoot } from './shared.js';
13
13
  import { errorMessage } from '../util/log.js';
14
- import { CliExit } from './exit.js';
14
+ import { fail } from './exit.js';
15
15
  const MAX_FAILED_SHOWN = 5;
16
16
  const MAX_PAIRS_SHOWN = 15;
17
17
  const PAIR_PREVIEW_CHARS = 90;
@@ -19,13 +19,12 @@ export async function handleRefine({ hippoRoot, tenantId, flags }) {
19
19
  requireInit(hippoRoot);
20
20
  const apiKey = envAnthropicApiKey();
21
21
  if (!apiKey) {
22
- printError('hippo refine needs ANTHROPIC_API_KEY in the environment.');
23
- throw new CliExit(1);
22
+ fail('hippo refine needs ANTHROPIC_API_KEY in the environment.');
24
23
  }
25
24
  const dryRun = boolFlag(flags, 'dry-run');
26
25
  const all = boolFlag(flags, 'all');
27
26
  const limit = numberFlag(flags, 'limit');
28
- const model = flags['model'] ? String(flags['model']) : undefined;
27
+ const model = stringFlagOrExit(flags, 'model') || undefined;
29
28
  const asJson = boolFlag(flags, 'json');
30
29
  const result = await refineStore(hippoRoot, {
31
30
  apiKey,
@@ -50,15 +49,15 @@ export async function handleRefine({ hippoRoot, tenantId, flags }) {
50
49
  }
51
50
  }
52
51
  }
53
- export function handleDedup({ hippoRoot, tenantId, flags }) {
52
+ export async function handleDedup({ hippoRoot, tenantId, flags }) {
54
53
  requireInit(hippoRoot);
55
54
  const dryRun = boolFlag(flags, 'dry-run');
56
55
  if (flags['threshold'] !== undefined) {
57
56
  printError('hippo dedup: --threshold is ignored; a duplicate is the same text apart from spacing.');
58
57
  }
59
- const total = countAllMemories(cliApiContext(hippoRoot, tenantId));
58
+ const total = await countAllMemories(cliApiContext(hippoRoot, tenantId));
60
59
  console.log(`Scanning ${total} memories for duplicates (same text apart from spacing)${dryRun ? ' (dry run)' : ''}...\n`);
61
- const result = deduplicateStore(hippoRoot, { dryRun });
60
+ const result = deduplicateStore(cliLocalFiles(hippoRoot).consolidation, { dryRun });
62
61
  if (result.removed === 0) {
63
62
  console.log('No duplicates found.');
64
63
  return;
@@ -105,8 +104,8 @@ export async function handleEmbed({ hippoRoot, tenantId, flags }, given) {
105
104
  // so it heals pre-1.27.0 global stores from a directory with no local .hippo.
106
105
  const root = resolveAuthRoot(hippoRoot, flags);
107
106
  const ctx = cliApiContext(root, tenantId);
108
- // --status and --reset-physics only read cached state, so they must work with no provider key (e.g. removed after an earlier embed);
109
- // the provider-availability gate is deferred to the embed path.
107
+ // --status and --reset-physics only read cached state, so they must work with no provider key (e.g. removed after an
108
+ // earlier embed); the provider-availability gate is deferred to the embed path.
110
109
  if (flags['reset-physics']) {
111
110
  resetPhysics(ctx);
112
111
  return;
@@ -1,2 +1,2 @@
1
- export declare const handleCustomerNote: (ctx: import("./flag-values.js").CommandContext) => void;
1
+ export declare const handleCustomerNote: (ctx: import("./flag-values.js").CommandContext) => Promise<void>;
2
2
  //# sourceMappingURL=notes.d.ts.map
package/dist/cli/notes.js CHANGED
@@ -7,7 +7,7 @@ function printNoteRow(n) {
7
7
  if (n.changeSummary)
8
8
  console.log(` change: ${n.changeSummary}`);
9
9
  }
10
- const noteKind = (hippoRoot, tenantId) => ({
10
+ const noteKind = (objects, hippoRoot, tenantId) => ({
11
11
  names: { cmd: 'note', noun: 'Customer note', idLabel: 'note' },
12
12
  plural: 'customer notes',
13
13
  states: customerNotesModule.VALID_NOTE_STATES,
@@ -22,13 +22,16 @@ const noteKind = (hippoRoot, tenantId) => ({
22
22
  bodyRequired: '--text "<note>"',
23
23
  body: (flags) => requiredText(flags, 'text'),
24
24
  keyOf: (n) => n.customer,
25
- save: (customer, note, extraTags, from) => customerNotesModule.saveCustomerNote(hippoRoot, tenantId, {
25
+ save: (customer, note, extraTags, from) => customerNotesModule.saveCustomerNote(objects, hippoRoot, tenantId, {
26
26
  customer, note, extraTags, changeSummary: from?.changeSummary, supersedesNoteId: from?.id,
27
27
  }),
28
28
  recorded: (n) => `Customer note recorded: #${n.id} (v${n.version}) for customer "${n.customer}"`,
29
- list: (opts, flags) => customerNotesModule.loadCustomerNotes(hippoRoot, tenantId, { ...opts, customer: stringFlag(flags, 'customer')?.trim() || undefined }),
30
- loadById: (id) => customerNotesModule.loadCustomerNoteById(hippoRoot, tenantId, id),
31
- close: (id) => customerNotesModule.closeCustomerNote(hippoRoot, tenantId, id),
29
+ list: (opts, flags) => customerNotesModule.loadCustomerNotes(objects, tenantId, {
30
+ ...opts,
31
+ customer: stringFlag(flags, 'customer')?.trim() || undefined,
32
+ }),
33
+ loadById: (id) => customerNotesModule.loadCustomerNoteById(objects, tenantId, id),
34
+ close: (id) => customerNotesModule.closeCustomerNote(objects, tenantId, id),
32
35
  printRow: printNoteRow,
33
36
  printDetail: (n) => {
34
37
  console.log(` customer: ${n.customer}`);
@@ -9,12 +9,12 @@ export interface ObjectListSpec<O, S extends string> {
9
9
  readonly load: (opts: {
10
10
  status?: S;
11
11
  limit: number;
12
- }) => readonly O[];
12
+ }) => Promise<readonly O[]>;
13
13
  readonly printRow: (o: O) => void;
14
14
  }
15
- export declare function listObjects<O, S extends string>(flags: CliFlags, spec: ObjectListSpec<O, S>): void;
15
+ export declare function listObjects<O, S extends string>(flags: CliFlags, spec: ObjectListSpec<O, S>): Promise<void>;
16
16
  /** The `<id>` after the subcommand; prints `usage` and exits 1 when it is missing. */
17
- export declare function idArgOrExit(args: string[], usage: string, label: string, parseId?: (raw: string, label: string) => number): number;
17
+ export declare function idArgOrExit(args: string[], usage: string, label: string): number;
18
18
  export declare function foundOrExit<O>(found: O | null | undefined, noun: string, id: number): O;
19
19
  /** How a kind is named in usage lines (`cmd`), in messages (`noun`) and in the invalid-id error (`idLabel`). */
20
20
  export interface ObjectNames {
@@ -23,9 +23,9 @@ export interface ObjectNames {
23
23
  readonly idLabel: string;
24
24
  }
25
25
  /** `hippo <cmd> close <id>` for a kind whose close call returns the closed row. */
26
- export declare function closeObject(args: string[], names: ObjectNames, close: (id: number) => {
26
+ export declare function closeObject(args: string[], names: ObjectNames, close: (id: number) => Promise<{
27
27
  id: number;
28
- }, parseId?: (raw: string, label: string) => number): void;
28
+ }>): Promise<void>;
29
29
  interface LifecycleTail {
30
30
  readonly changeSummary?: string | null;
31
31
  readonly supersededBy: number | null;
@@ -1,13 +1,12 @@
1
- // The status, list, id and not-found paths the typed-object verbs (process, policy, skill, brief, note, decide, incident, predict) share.
2
- import { printError } from './output.js';
1
+ // The status, list, id and not-found paths the typed-object verbs (process, policy, skill, brief, note, decide,
2
+ // incident, predict) share.
3
3
  import { parseListLimit, parsePositiveId, stringFlag } from './flag-values.js';
4
- import { CliExit } from './exit.js';
4
+ import { fail } from './exit.js';
5
5
  /** The member of `states` named by `status`, or exit 1 with the message that lists every allowed value. */
6
6
  export function requireStatus(status, states) {
7
7
  const found = [...states].find((s) => s === status);
8
8
  if (found === undefined) {
9
- printError(`Invalid --status: "${status}". Must be one of: ${[...states, 'all'].join(' | ')}.`);
10
- throw new CliExit(1);
9
+ fail(`Invalid --status: "${status}". Must be one of: ${[...states, 'all'].join(' | ')}.`);
11
10
  }
12
11
  return found;
13
12
  }
@@ -16,10 +15,10 @@ export function statusFilter(flags, states) {
16
15
  const status = stringFlag(flags, 'status')?.trim() ?? 'all';
17
16
  return status === 'all' ? undefined : requireStatus(status, states);
18
17
  }
19
- export function listObjects(flags, spec) {
18
+ export async function listObjects(flags, spec) {
20
19
  const limit = parseListLimit(flags);
21
20
  const status = statusFilter(flags, spec.states);
22
- const results = spec.load(status === undefined ? { limit } : { status, limit });
21
+ const results = await spec.load(status === undefined ? { limit } : { status, limit });
23
22
  if (results.length === 0) {
24
23
  console.log(`No ${spec.plural}.`);
25
24
  return;
@@ -29,25 +28,23 @@ export function listObjects(flags, spec) {
29
28
  spec.printRow(o);
30
29
  }
31
30
  /** The `<id>` after the subcommand; prints `usage` and exits 1 when it is missing. */
32
- export function idArgOrExit(args, usage, label, parseId = parsePositiveId) {
31
+ export function idArgOrExit(args, usage, label) {
33
32
  const idRaw = args[1];
34
33
  if (!idRaw) {
35
- printError(usage);
36
- throw new CliExit(1);
34
+ fail(usage);
37
35
  }
38
- return parseId(idRaw, label);
36
+ return parsePositiveId(idRaw, label);
39
37
  }
40
38
  export function foundOrExit(found, noun, id) {
41
39
  if (!found) {
42
- printError(`${noun} ${id} not found.`);
43
- throw new CliExit(1);
40
+ fail(`${noun} ${id} not found.`);
44
41
  }
45
42
  return found;
46
43
  }
47
44
  /** `hippo <cmd> close <id>` for a kind whose close call returns the closed row. */
48
- export function closeObject(args, names, close, parseId = parsePositiveId) {
49
- const id = idArgOrExit(args, `Usage: hippo ${names.cmd} close <id>`, names.idLabel, parseId);
50
- console.log(`${names.noun} #${close(id).id} closed.`);
45
+ export async function closeObject(args, names, close) {
46
+ const id = idArgOrExit(args, `Usage: hippo ${names.cmd} close <id>`, names.idLabel);
47
+ console.log(`${names.noun} #${(await close(id)).id} closed.`);
51
48
  }
52
49
  /** The detail lines every `get` ends with. */
53
50
  export function printLifecycleTail(o) {
@@ -1,8 +1,17 @@
1
1
  // Best-effort browser launch for CLI verbs that write a file.
2
2
  import { spawn } from 'child_process';
3
- import { errorMessage, log } from '../util/log.js';
3
+ import { errorMessage, log, errorFields } from '../util/log.js';
4
+ // cmd.exe re-reads `start`'s argument as a command line, so one of these in the file name would end it and run the
5
+ // rest.
6
+ const CMD_METACHARS = /[&|<>^%!"\r\n]/;
4
7
  /** `launch` is the process starter; tests hand in a stand-in. */
5
8
  export function openInBrowser(out, launch = spawn) {
9
+ if (process.platform === 'win32' && CMD_METACHARS.test(out)) {
10
+ log.warn(`graph view: not opening ${out} in the browser, since cmd.exe would run part of its name as a command; open ` +
11
+ `the file by hand`);
12
+ process.exitCode = 1;
13
+ return;
14
+ }
6
15
  // Best-effort browser launch; never fail the command if it doesn't work.
7
16
  try {
8
17
  const [cmd, cmdArgs] = process.platform === 'win32'
@@ -20,7 +29,7 @@ export function openInBrowser(out, launch = spawn) {
20
29
  }
21
30
  catch (err) {
22
31
  // The file is written and its path printed above, so a browser that will not start costs nothing.
23
- log.debug(`browser not opened: ${errorMessage(err)}`);
32
+ log.debug(`browser not opened: ${errorMessage(err)}`, errorFields(err));
24
33
  }
25
34
  }
26
35
  //# sourceMappingURL=open-browser.js.map
@@ -1,4 +1,4 @@
1
- export declare const handleProcess: (ctx: import("./flag-values.js").CommandContext) => void;
2
- export declare const handlePolicy: (ctx: import("./flag-values.js").CommandContext) => void;
3
- export declare const handleSkill: (ctx: import("./flag-values.js").CommandContext) => void;
1
+ export declare const handleProcess: (ctx: import("./flag-values.js").CommandContext) => Promise<void>;
2
+ export declare const handlePolicy: (ctx: import("./flag-values.js").CommandContext) => Promise<void>;
3
+ export declare const handleSkill: (ctx: import("./flag-values.js").CommandContext) => Promise<void>;
4
4
  //# sourceMappingURL=playbooks.d.ts.map
@@ -2,10 +2,9 @@
2
2
  import * as processesModule from '../objects/processes.js';
3
3
  import * as policiesModule from '../objects/policies.js';
4
4
  import * as skillsModule from '../objects/skills.js';
5
- import { printError } from './output.js';
6
5
  import { isStringFlag, nonEmptyStringFlag } from './flag-values.js';
7
6
  import { errorMessage } from '../util/log.js';
8
- import { CliExit } from './exit.js';
7
+ import { fail } from './exit.js';
9
8
  import { requiredText, versionedVerbs } from './versioned-verbs.js';
10
9
  // --step is a repeatable flag (collected into an array by parseArgs). A single
11
10
  // --step yields a string; normalize both to string[]. A value-less --step errors.
@@ -15,8 +14,7 @@ function collectProcessSteps(stepRaw) {
15
14
  if (isStringFlag(stepRaw))
16
15
  return [stepRaw];
17
16
  if (stepRaw === true) {
18
- printError('--step requires a value, e.g. hippo process new "<name>" --step "do X".');
19
- throw new CliExit(1);
17
+ fail('--step requires a value, e.g. hippo process new "<name>" --step "do X".');
20
18
  }
21
19
  return [];
22
20
  }
@@ -26,7 +24,7 @@ function printProcessRow(proc) {
26
24
  if (proc.changeSummary)
27
25
  console.log(` change: ${proc.changeSummary}`);
28
26
  }
29
- const processKind = (hippoRoot, tenantId) => ({
27
+ const processKind = (objects, hippoRoot, tenantId) => ({
30
28
  names: { cmd: 'process', noun: 'Process', idLabel: 'process' },
31
29
  plural: 'processes',
32
30
  states: processesModule.VALID_PROCESS_STATES,
@@ -47,13 +45,17 @@ const processKind = (hippoRoot, tenantId) => ({
47
45
  return { steps, description: nonEmptyStringFlag(flags, 'description') };
48
46
  },
49
47
  keyOf: (proc) => proc.processName,
50
- save: (processName, body, extraTags, from) => processesModule.saveProcess(hippoRoot, tenantId, {
51
- processName, ...body, extraTags, changeSummary: from?.changeSummary, supersedesProcessId: from?.id,
48
+ save: (processName, body, extraTags, from) => processesModule.saveProcess(objects, hippoRoot, tenantId, {
49
+ processName,
50
+ ...body,
51
+ extraTags,
52
+ changeSummary: from?.changeSummary,
53
+ supersedesProcessId: from?.id,
52
54
  }),
53
55
  recorded: (proc) => `Process recorded: #${proc.id} (v${proc.version}, ${proc.steps.length} steps)`,
54
- list: (opts) => processesModule.loadProcesses(hippoRoot, tenantId, opts),
55
- loadById: (id) => processesModule.loadProcessById(hippoRoot, tenantId, id),
56
- close: (id) => processesModule.closeProcess(hippoRoot, tenantId, id),
56
+ list: (opts) => processesModule.loadProcesses(objects, tenantId, opts),
57
+ loadById: (id) => processesModule.loadProcessById(objects, tenantId, id),
58
+ close: (id) => processesModule.closeProcess(objects, tenantId, id),
57
59
  printRow: printProcessRow,
58
60
  printDetail: (proc) => {
59
61
  console.log(` name: ${proc.processName}`);
@@ -75,20 +77,18 @@ function printPolicyRow(p) {
75
77
  if (p.changeSummary)
76
78
  console.log(` change: ${p.changeSummary}`);
77
79
  }
78
- function policyAsOf(hippoRoot, tenantId, args, flags) {
80
+ async function policyAsOf(objects, tenantId, args, flags) {
79
81
  const dateRaw = args[1];
80
82
  if (!dateRaw) {
81
- printError('Usage: hippo policy asof <iso-date> [--name "<policy>"]');
82
- throw new CliExit(1);
83
+ fail('Usage: hippo policy asof <iso-date> [--name "<policy>"]');
83
84
  }
84
85
  const name = nonEmptyStringFlag(flags, 'name');
85
86
  let results;
86
87
  try {
87
- results = policiesModule.loadPoliciesAsOf(hippoRoot, tenantId, dateRaw, { name });
88
+ results = await policiesModule.policiesAsOf(objects, tenantId, dateRaw, { name });
88
89
  }
89
90
  catch (e) {
90
- printError(errorMessage(e));
91
- throw new CliExit(1);
91
+ fail(errorMessage(e));
92
92
  }
93
93
  if (results.length === 0) {
94
94
  console.log(`No active policies in force at ${dateRaw}${name ? ` for "${name}"` : ''}.`);
@@ -98,7 +98,7 @@ function policyAsOf(hippoRoot, tenantId, args, flags) {
98
98
  for (const p of results)
99
99
  printPolicyRow(p);
100
100
  }
101
- const policyKind = (hippoRoot, tenantId) => ({
101
+ const policyKind = (objects, hippoRoot, tenantId) => ({
102
102
  names: { cmd: 'policy', noun: 'Policy', idLabel: 'policy' },
103
103
  plural: 'policies',
104
104
  states: policiesModule.VALID_POLICY_STATES,
@@ -119,13 +119,17 @@ const policyKind = (hippoRoot, tenantId) => ({
119
119
  return { policyText, validFrom: nonEmptyStringFlag(flags, 'from'), validTo: nonEmptyStringFlag(flags, 'to') };
120
120
  },
121
121
  keyOf: (p) => p.policyName,
122
- save: (policyName, body, extraTags, from) => policiesModule.savePolicy(hippoRoot, tenantId, {
123
- policyName, ...body, extraTags, changeSummary: from?.changeSummary, supersedesPolicyId: from?.id,
122
+ save: (policyName, body, extraTags, from) => policiesModule.savePolicy(objects, hippoRoot, tenantId, {
123
+ policyName,
124
+ ...body,
125
+ extraTags,
126
+ changeSummary: from?.changeSummary,
127
+ supersedesPolicyId: from?.id,
124
128
  }),
125
129
  recorded: (p) => `Policy recorded: #${p.id} (v${p.version}, effective ${policyRange(p)})`,
126
- list: (opts) => policiesModule.loadPolicies(hippoRoot, tenantId, opts),
127
- loadById: (id) => policiesModule.loadPolicyById(hippoRoot, tenantId, id),
128
- close: (id) => policiesModule.closePolicy(hippoRoot, tenantId, id),
130
+ list: (opts) => policiesModule.loadPolicies(objects, tenantId, opts),
131
+ loadById: (id) => policiesModule.loadPolicyById(objects, tenantId, id),
132
+ close: (id) => policiesModule.closePolicy(objects, tenantId, id),
129
133
  printRow: printPolicyRow,
130
134
  printDetail: (p) => {
131
135
  console.log(` name: ${p.policyName}`);
@@ -135,7 +139,7 @@ const policyKind = (hippoRoot, tenantId) => ({
135
139
  console.log(` valid_from: ${p.validFrom}`);
136
140
  console.log(` valid_to: ${p.validTo ?? '(open-ended)'}`);
137
141
  },
138
- extra: { sub: 'asof', run: (args, flags) => policyAsOf(hippoRoot, tenantId, args, flags) },
142
+ extra: { sub: 'asof', run: (args, flags) => policyAsOf(objects, tenantId, args, flags) },
139
143
  });
140
144
  export const handlePolicy = versionedVerbs(policyKind);
141
145
  function printSkillRow(s) {
@@ -145,15 +149,15 @@ function printSkillRow(s) {
145
149
  if (s.changeSummary)
146
150
  console.log(` change: ${s.changeSummary}`);
147
151
  }
148
- function skillExport(hippoRoot, tenantId) {
149
- const md = skillsModule.exportSkills(hippoRoot, tenantId);
152
+ async function skillExport(objects, tenantId) {
153
+ const md = await skillsModule.skillsMarkdown(objects, tenantId);
150
154
  if (!md) {
151
155
  console.log('No active skills.');
152
156
  return;
153
157
  }
154
158
  console.log(md);
155
159
  }
156
- const skillKind = (hippoRoot, tenantId) => ({
160
+ const skillKind = (objects, hippoRoot, tenantId) => ({
157
161
  names: { cmd: 'skill', noun: 'Skill', idLabel: 'skill' },
158
162
  plural: 'skills',
159
163
  states: skillsModule.VALID_SKILL_STATES,
@@ -174,13 +178,17 @@ const skillKind = (hippoRoot, tenantId) => ({
174
178
  return { instructions, trigger: nonEmptyStringFlag(flags, 'trigger') };
175
179
  },
176
180
  keyOf: (s) => s.skillName,
177
- save: (skillName, body, extraTags, from) => skillsModule.saveSkill(hippoRoot, tenantId, {
178
- skillName, ...body, extraTags, changeSummary: from?.changeSummary, supersedesSkillId: from?.id,
181
+ save: (skillName, body, extraTags, from) => skillsModule.saveSkill(objects, hippoRoot, tenantId, {
182
+ skillName,
183
+ ...body,
184
+ extraTags,
185
+ changeSummary: from?.changeSummary,
186
+ supersedesSkillId: from?.id,
179
187
  }),
180
188
  recorded: (s) => `Skill recorded: #${s.id} (v${s.version})`,
181
- list: (opts) => skillsModule.loadSkills(hippoRoot, tenantId, opts),
182
- loadById: (id) => skillsModule.loadSkillById(hippoRoot, tenantId, id),
183
- close: (id) => skillsModule.closeSkill(hippoRoot, tenantId, id),
189
+ list: (opts) => skillsModule.loadSkills(objects, tenantId, opts),
190
+ loadById: (id) => skillsModule.loadSkillById(objects, tenantId, id),
191
+ close: (id) => skillsModule.closeSkill(objects, tenantId, id),
184
192
  printRow: printSkillRow,
185
193
  printDetail: (s) => {
186
194
  console.log(` name: ${s.skillName}`);
@@ -190,7 +198,7 @@ const skillKind = (hippoRoot, tenantId) => ({
190
198
  console.log(` when: ${s.trigger}`);
191
199
  console.log(` instructions: ${s.instructions}`);
192
200
  },
193
- extra: { sub: 'export', run: () => skillExport(hippoRoot, tenantId) },
201
+ extra: { sub: 'export', run: () => skillExport(objects, tenantId) },
194
202
  });
195
203
  export const handleSkill = versionedVerbs(skillKind);
196
204
  //# sourceMappingURL=playbooks.js.map