hippo-memory 2.0.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 (965) hide show
  1. package/dist/agent-memories/apply.d.ts +7 -5
  2. package/dist/agent-memories/apply.js +66 -39
  3. package/dist/agent-memories/claude-code.d.ts +8 -2
  4. package/dist/agent-memories/claude-code.js +26 -7
  5. package/dist/agent-memories/copilot.js +2 -1
  6. package/dist/agent-memories/files.js +2 -1
  7. package/dist/agent-memories/legacy.d.ts +6 -3
  8. package/dist/agent-memories/legacy.js +35 -14
  9. package/dist/agent-memories/markdown.d.ts +3 -1
  10. package/dist/agent-memories/markdown.js +3 -1
  11. package/dist/agent-memories/openclaw.js +5 -2
  12. package/dist/agent-memories/plan.js +11 -1
  13. package/dist/agent-memories/project-folds.js +2 -1
  14. package/dist/agent-memories/report.d.ts +4 -1
  15. package/dist/agent-memories/report.js +43 -9
  16. package/dist/agent-memories/source.d.ts +8 -2
  17. package/dist/agent-memories/source.js +11 -3
  18. package/dist/agent-memories/sync.d.ts +7 -2
  19. package/dist/agent-memories/sync.js +141 -101
  20. package/dist/api/assemble.d.ts +6 -4
  21. package/dist/api/assemble.js +11 -6
  22. package/dist/api/{audit.d.ts → auth/audit.d.ts} +18 -16
  23. package/dist/api/{audit.js → auth/audit.js} +11 -11
  24. package/dist/api/{auth.d.ts → auth/auth.d.ts} +19 -15
  25. package/dist/api/{auth.js → auth/auth.js} +46 -29
  26. package/dist/api/{quarantine.d.ts → auth/quarantine.d.ts} +8 -7
  27. package/dist/api/{quarantine.js → auth/quarantine.js} +8 -8
  28. package/dist/api/auth/session-owners.d.ts +10 -0
  29. package/dist/api/auth/session-owners.js +35 -0
  30. package/dist/api/availability.d.ts +3 -1
  31. package/dist/api/availability.js +3 -1
  32. package/dist/api/busy.d.ts +2 -0
  33. package/dist/api/busy.js +2 -0
  34. package/dist/api/cli-surface.d.ts +6 -0
  35. package/dist/api/cli-surface.js +6 -0
  36. package/dist/api/config-of.d.ts +5 -0
  37. package/dist/api/config-of.js +6 -0
  38. package/dist/api/context-auto.d.ts +4 -1
  39. package/dist/api/context-auto.js +10 -2
  40. package/dist/api/context-render.js +14 -7
  41. package/dist/api/context-select.d.ts +4 -1
  42. package/dist/api/context-select.js +23 -14
  43. package/dist/api/context-types.d.ts +38 -12
  44. package/dist/api/context.d.ts +8 -5
  45. package/dist/api/context.js +112 -57
  46. package/dist/api/continuity.d.ts +24 -21
  47. package/dist/api/continuity.js +18 -20
  48. package/dist/api/correction-latency.d.ts +3 -1
  49. package/dist/api/correction-latency.js +3 -1
  50. package/dist/api/error-reply.d.ts +4 -1
  51. package/dist/api/error-reply.js +12 -3
  52. package/dist/api/index.d.ts +39 -23
  53. package/dist/api/index.js +21 -23
  54. package/dist/api/instruction-detect.d.ts +4 -1
  55. package/dist/api/instruction-detect.js +75 -20
  56. package/dist/api/ledger-db.d.ts +15 -11
  57. package/dist/api/ledger-db.js +21 -23
  58. package/dist/api/memories/conflicts.d.ts +33 -0
  59. package/dist/api/memories/conflicts.js +67 -0
  60. package/dist/api/{forget.d.ts → memories/forget.d.ts} +11 -9
  61. package/dist/api/{forget.js → memories/forget.js} +22 -15
  62. package/dist/api/memories/memories.d.ts +27 -0
  63. package/dist/api/{memories.js → memories/memories.js} +16 -21
  64. package/dist/api/memories/outcome.d.ts +22 -0
  65. package/dist/api/{outcome.js → memories/outcome.js} +14 -8
  66. package/dist/api/memories/promote.d.ts +40 -0
  67. package/dist/api/{promote.js → memories/promote.js} +35 -22
  68. package/dist/api/memories/refine.d.ts +10 -0
  69. package/dist/api/memories/refine.js +12 -0
  70. package/dist/api/{remember-local.d.ts → memories/remember-local.d.ts} +16 -11
  71. package/dist/api/{remember-local.js → memories/remember-local.js} +34 -20
  72. package/dist/api/{remember.d.ts → memories/remember.d.ts} +19 -13
  73. package/dist/api/{remember.js → memories/remember.js} +42 -26
  74. package/dist/api/objects/cards.d.ts +39 -0
  75. package/dist/api/{cards.js → objects/cards.js} +12 -14
  76. package/dist/api/{drill-down.d.ts → objects/drill-down.d.ts} +12 -10
  77. package/dist/api/{drill-down.js → objects/drill-down.js} +7 -8
  78. package/dist/api/objects/goals.d.ts +18 -0
  79. package/dist/api/{goals.js → objects/goals.js} +12 -12
  80. package/dist/api/objects/graph.d.ts +11 -0
  81. package/dist/api/objects/graph.js +16 -0
  82. package/dist/api/objects/objects.d.ts +9 -0
  83. package/dist/api/{objects.js → objects/objects.js} +2 -4
  84. package/dist/api/objects/predictions.d.ts +11 -0
  85. package/dist/api/{predictions.js → objects/predictions.js} +7 -6
  86. package/dist/api/{projects.d.ts → objects/projects.d.ts} +8 -5
  87. package/dist/api/{projects.js → objects/projects.js} +8 -4
  88. package/dist/api/pilot-arm.d.ts +8 -4
  89. package/dist/api/pilot-arm.js +5 -4
  90. package/dist/api/prompt-hook.d.ts +32 -19
  91. package/dist/api/prompt-hook.js +65 -44
  92. package/dist/api/provenance-coverage.d.ts +3 -1
  93. package/dist/api/provenance-coverage.js +3 -1
  94. package/dist/api/recall/finish.d.ts +185 -0
  95. package/dist/api/recall/finish.js +301 -0
  96. package/dist/api/{recall-pipeline.d.ts → recall/pipeline.d.ts} +12 -8
  97. package/dist/api/{recall-pipeline.js → recall/pipeline.js} +176 -92
  98. package/dist/api/recall/recall.d.ts +6 -0
  99. package/dist/api/{recall.js → recall/recall.js} +101 -60
  100. package/dist/api/recall/render.d.ts +39 -0
  101. package/dist/api/recall/render.js +60 -0
  102. package/dist/api/{recall-request.d.ts → recall/request.d.ts} +7 -5
  103. package/dist/api/recall/request.js +261 -0
  104. package/dist/api/{recall-cli.d.ts → recall/rows.d.ts} +18 -12
  105. package/dist/api/{recall-cli.js → recall/rows.js} +28 -27
  106. package/dist/api/{recall-types.d.ts → recall/types.d.ts} +95 -70
  107. package/dist/api/{recall-types.js → recall/types.js} +1 -1
  108. package/dist/api/session-end.d.ts +16 -12
  109. package/dist/api/session-end.js +46 -30
  110. package/dist/api/{auto-sleep.d.ts → sleep/auto-sleep.d.ts} +9 -5
  111. package/dist/api/{auto-sleep.js → sleep/auto-sleep.js} +7 -12
  112. package/dist/api/sleep/dormant.d.ts +25 -0
  113. package/dist/api/sleep/dormant.js +64 -0
  114. package/dist/api/{learn.d.ts → sleep/learn.d.ts} +5 -4
  115. package/dist/api/sleep/learn.js +138 -0
  116. package/dist/api/sleep/sleep-run.d.ts +38 -0
  117. package/dist/api/{sleep-run.js → sleep/sleep-run.js} +51 -43
  118. package/dist/api/{sleep.d.ts → sleep/sleep.d.ts} +17 -11
  119. package/dist/api/sleep/sleep.js +9 -0
  120. package/dist/api/status.d.ts +3 -1
  121. package/dist/api/status.js +3 -1
  122. package/dist/api/store-init.d.ts +4 -1
  123. package/dist/api/store-init.js +4 -1
  124. package/dist/api/tokens.d.ts +10 -9
  125. package/dist/api/tokens.js +9 -10
  126. package/dist/api/types.d.ts +28 -7
  127. package/dist/api/types.js +13 -4
  128. package/dist/capture/caller-session.d.ts +8 -2
  129. package/dist/capture/caller-session.js +16 -6
  130. package/dist/capture/capture-error.d.ts +3 -1
  131. package/dist/capture/capture-error.js +3 -1
  132. package/dist/capture/codex-patch.js +7 -2
  133. package/dist/capture/command.d.ts +4 -2
  134. package/dist/capture/command.js +33 -14
  135. package/dist/capture/compact-resume-caller.js +15 -8
  136. package/dist/capture/compact.d.ts +8 -5
  137. package/dist/capture/compact.js +34 -23
  138. package/dist/capture/compaction-items-caller.js +9 -3
  139. package/dist/capture/compaction-record.d.ts +4 -3
  140. package/dist/capture/compaction-record.js +20 -12
  141. package/dist/capture/compaction-spool.d.ts +15 -4
  142. package/dist/capture/compaction-spool.js +64 -17
  143. package/dist/capture/copilot-transcript.d.ts +11 -3
  144. package/dist/capture/copilot-transcript.js +16 -6
  145. package/dist/capture/extract.js +20 -8
  146. package/dist/capture/failure-caller.js +23 -12
  147. package/dist/capture/failure-reading.d.ts +10 -3
  148. package/dist/capture/failure-reading.js +24 -7
  149. package/dist/capture/pre-compact-caller.js +11 -4
  150. package/dist/capture/session-digest.d.ts +15 -4
  151. package/dist/capture/session-digest.js +39 -13
  152. package/dist/capture/session-end-caller.d.ts +4 -1
  153. package/dist/capture/session-end-caller.js +20 -8
  154. package/dist/capture/session-texts.d.ts +6 -2
  155. package/dist/capture/session-texts.js +22 -7
  156. package/dist/capture/session-worker.d.ts +4 -2
  157. package/dist/capture/session-worker.js +45 -17
  158. package/dist/capture/transcript.d.ts +13 -4
  159. package/dist/capture/transcript.js +32 -10
  160. package/dist/capture/working-state.d.ts +13 -4
  161. package/dist/capture/working-state.js +50 -56
  162. package/dist/cli/api-context.d.ts +14 -2
  163. package/dist/cli/api-context.js +45 -2
  164. package/dist/cli/audit.js +23 -23
  165. package/dist/cli/auth.js +19 -27
  166. package/dist/cli/briefs.d.ts +1 -1
  167. package/dist/cli/briefs.js +20 -15
  168. package/dist/cli/card.d.ts +1 -1
  169. package/dist/cli/card.js +56 -73
  170. package/dist/cli/client.d.ts +12 -4
  171. package/dist/cli/client.js +43 -13
  172. package/dist/cli/compact-resume-payload.d.ts +4 -1
  173. package/dist/cli/compact-resume-payload.js +12 -5
  174. package/dist/cli/context.js +42 -17
  175. package/dist/cli/continuity.d.ts +5 -5
  176. package/dist/cli/continuity.js +90 -107
  177. package/dist/cli/curate.d.ts +4 -3
  178. package/dist/cli/curate.js +46 -68
  179. package/dist/cli/dag.d.ts +1 -1
  180. package/dist/cli/dag.js +14 -17
  181. package/dist/cli/decisions.js +27 -26
  182. package/dist/cli/eval.js +16 -21
  183. package/dist/cli/exit.d.ts +4 -1
  184. package/dist/cli/exit.js +10 -2
  185. package/dist/cli/explain.js +12 -11
  186. package/dist/cli/flag-values.d.ts +1 -1
  187. package/dist/cli/flag-values.js +9 -18
  188. package/dist/cli/github.d.ts +6 -0
  189. package/dist/cli/github.js +25 -13
  190. package/dist/cli/goals.d.ts +1 -1
  191. package/dist/cli/goals.js +39 -56
  192. package/dist/cli/graph.d.ts +1 -1
  193. package/dist/cli/graph.js +15 -11
  194. package/dist/cli/hook-runtime.d.ts +31 -9
  195. package/dist/cli/hook-runtime.js +40 -15
  196. package/dist/cli/incidents.d.ts +1 -1
  197. package/dist/cli/incidents.js +25 -25
  198. package/dist/cli/init.js +26 -11
  199. package/dist/cli/install-steps.d.ts +12 -3
  200. package/dist/cli/install-steps.js +42 -18
  201. package/dist/cli/last-sleep.d.ts +4 -1
  202. package/dist/cli/last-sleep.js +9 -4
  203. package/dist/cli/maintenance.d.ts +1 -1
  204. package/dist/cli/maintenance.js +11 -12
  205. package/dist/cli/notes.d.ts +1 -1
  206. package/dist/cli/notes.js +8 -5
  207. package/dist/cli/object-verbs.d.ts +4 -4
  208. package/dist/cli/object-verbs.js +10 -13
  209. package/dist/cli/open-browser.js +11 -2
  210. package/dist/cli/playbooks.d.ts +3 -3
  211. package/dist/cli/playbooks.js +40 -32
  212. package/dist/cli/predictions.js +15 -19
  213. package/dist/cli/print.js +4 -2
  214. package/dist/cli/projects.js +21 -11
  215. package/dist/cli/quality-repair-once.js +5 -4
  216. package/dist/cli/recall.js +129 -93
  217. package/dist/cli/refine-llm.d.ts +15 -4
  218. package/dist/cli/refine-llm.js +16 -7
  219. package/dist/cli/remember.js +46 -50
  220. package/dist/cli/scheduler.d.ts +4 -1
  221. package/dist/cli/scheduler.js +9 -5
  222. package/dist/cli/serve.js +22 -17
  223. package/dist/cli/session-hooks.d.ts +2 -2
  224. package/dist/cli/session-hooks.js +87 -50
  225. package/dist/cli/setup.js +54 -32
  226. package/dist/cli/shared.d.ts +3 -1
  227. package/dist/cli/shared.js +24 -9
  228. package/dist/cli/slack.js +15 -24
  229. package/dist/cli/sleep-render.d.ts +3 -1
  230. package/dist/cli/sleep-render.js +8 -5
  231. package/dist/cli/sleep.js +14 -6
  232. package/dist/cli/status.d.ts +4 -4
  233. package/dist/cli/status.js +32 -27
  234. package/dist/cli/stdin.d.ts +10 -3
  235. package/dist/cli/stdin.js +10 -3
  236. package/dist/cli/transfer.d.ts +1 -1
  237. package/dist/cli/transfer.js +71 -75
  238. package/dist/cli/verbs/memory.js +8 -6
  239. package/dist/cli/verbs/objects.js +10 -4
  240. package/dist/cli/versioned-verbs.d.ts +8 -7
  241. package/dist/cli/versioned-verbs.js +31 -21
  242. package/dist/cli.js +13 -16
  243. package/dist/connectors/dlq.d.ts +6 -6
  244. package/dist/connectors/dlq.js +12 -8
  245. package/dist/connectors/github/backfill.d.ts +4 -4
  246. package/dist/connectors/github/backfill.js +6 -4
  247. package/dist/connectors/github/deletion.d.ts +6 -4
  248. package/dist/connectors/github/deletion.js +5 -5
  249. package/dist/connectors/github/dlq.d.ts +8 -6
  250. package/dist/connectors/github/dlq.js +11 -5
  251. package/dist/connectors/github/ingest.d.ts +2 -2
  252. package/dist/connectors/github/ingest.js +9 -6
  253. package/dist/connectors/github/octokit-client.d.ts +3 -1
  254. package/dist/connectors/github/octokit-client.js +7 -2
  255. package/dist/connectors/github/ratelimit.d.ts +6 -2
  256. package/dist/connectors/github/ratelimit.js +6 -2
  257. package/dist/connectors/github/signature.d.ts +14 -3
  258. package/dist/connectors/github/signature.js +17 -3
  259. package/dist/connectors/github/tenant-routing.d.ts +6 -4
  260. package/dist/connectors/github/tenant-routing.js +6 -6
  261. package/dist/connectors/github/transform.js +50 -67
  262. package/dist/connectors/github/types.d.ts +10 -3
  263. package/dist/connectors/github/types.js +6 -2
  264. package/dist/connectors/github/webhook.d.ts +5 -5
  265. package/dist/connectors/github/webhook.js +34 -23
  266. package/dist/connectors/ingest.d.ts +5 -3
  267. package/dist/connectors/ingest.js +3 -4
  268. package/dist/connectors/slack/backfill.d.ts +5 -5
  269. package/dist/connectors/slack/backfill.js +3 -3
  270. package/dist/connectors/slack/deletion.d.ts +4 -4
  271. package/dist/connectors/slack/deletion.js +6 -6
  272. package/dist/connectors/slack/dlq.d.ts +4 -4
  273. package/dist/connectors/slack/dlq.js +6 -6
  274. package/dist/connectors/slack/ingest.d.ts +6 -4
  275. package/dist/connectors/slack/ingest.js +5 -5
  276. package/dist/connectors/slack/signature.d.ts +4 -1
  277. package/dist/connectors/slack/tenant-routing.d.ts +6 -4
  278. package/dist/connectors/slack/tenant-routing.js +6 -6
  279. package/dist/connectors/slack/transform.d.ts +6 -2
  280. package/dist/connectors/slack/transform.js +6 -2
  281. package/dist/connectors/slack/types.d.ts +3 -1
  282. package/dist/connectors/slack/web-client.js +8 -3
  283. package/dist/connectors/slack/webhook.d.ts +5 -5
  284. package/dist/connectors/slack/webhook.js +19 -11
  285. package/dist/connectors/slack/workspaces.d.ts +7 -3
  286. package/dist/connectors/slack/workspaces.js +7 -3
  287. package/dist/connectors/store.d.ts +8 -0
  288. package/dist/connectors/store.js +2 -0
  289. package/dist/consolidate/conflicts.js +23 -9
  290. package/dist/consolidate/dag-summary.js +2 -1
  291. package/dist/consolidate/dag.d.ts +10 -5
  292. package/dist/consolidate/dag.js +37 -36
  293. package/dist/consolidate/decay.js +19 -6
  294. package/dist/consolidate/dedupe.d.ts +14 -5
  295. package/dist/consolidate/dedupe.js +27 -16
  296. package/dist/consolidate/flush-units.d.ts +4 -1
  297. package/dist/consolidate/flush-units.js +4 -1
  298. package/dist/consolidate/half-life-migration.d.ts +18 -8
  299. package/dist/consolidate/half-life-migration.js +48 -18
  300. package/dist/consolidate/llm-passes.js +27 -11
  301. package/dist/consolidate/memory-value-weights.d.ts +6 -2
  302. package/dist/consolidate/memory-value-weights.js +6 -2
  303. package/dist/consolidate/memory-value.d.ts +30 -10
  304. package/dist/consolidate/memory-value.js +36 -13
  305. package/dist/consolidate/merge.d.ts +4 -1
  306. package/dist/consolidate/merge.js +42 -32
  307. package/dist/consolidate/overlap-index.d.ts +8 -2
  308. package/dist/consolidate/overlap-index.js +11 -4
  309. package/dist/consolidate/physics-pass.d.ts +3 -1
  310. package/dist/consolidate/physics-pass.js +10 -7
  311. package/dist/consolidate/replay.d.ts +11 -4
  312. package/dist/consolidate/replay.js +19 -7
  313. package/dist/consolidate/run.d.ts +13 -5
  314. package/dist/consolidate/run.js +4 -4
  315. package/dist/consolidate/sleep.d.ts +14 -6
  316. package/dist/consolidate/sleep.js +41 -38
  317. package/dist/consolidate/trace.d.ts +7 -2
  318. package/dist/consolidate/trace.js +7 -2
  319. package/dist/consolidate/traces.js +26 -29
  320. package/dist/core/ablation.d.ts +9 -3
  321. package/dist/core/ablation.js +14 -4
  322. package/dist/core/active-scope.d.ts +3 -1
  323. package/dist/core/active-scope.js +3 -1
  324. package/dist/core/agent-memory-tools.d.ts +2 -0
  325. package/dist/core/agent-memory-tools.js +2 -0
  326. package/dist/core/ambient.d.ts +4 -3
  327. package/dist/core/ambient.js +8 -6
  328. package/dist/core/api-errors.d.ts +9 -3
  329. package/dist/core/api-errors.js +9 -3
  330. package/dist/core/capture-contract.d.ts +4 -1
  331. package/dist/core/capture-contract.js +27 -8
  332. package/dist/core/compare.d.ts +24 -8
  333. package/dist/core/compare.js +24 -8
  334. package/dist/core/config.d.ts +18 -9
  335. package/dist/core/config.js +24 -14
  336. package/dist/core/cosine.d.ts +4 -1
  337. package/dist/core/cosine.js +4 -1
  338. package/dist/core/handoff.d.ts +7 -2
  339. package/dist/core/handoff.js +4 -1
  340. package/dist/core/markdown.js +21 -16
  341. package/dist/core/memory-audit.js +14 -3
  342. package/dist/core/memory-quality.d.ts +12 -3
  343. package/dist/core/memory-quality.js +57 -21
  344. package/dist/core/memory.d.ts +84 -27
  345. package/dist/core/memory.js +73 -29
  346. package/dist/core/merged-row.d.ts +8 -2
  347. package/dist/core/merged-row.js +10 -3
  348. package/dist/core/package-root.d.ts +3 -1
  349. package/dist/core/package-root.js +3 -1
  350. package/dist/core/particle-refresh.d.ts +8 -0
  351. package/dist/core/particle-refresh.js +22 -0
  352. package/dist/core/physics-config.d.ts +4 -1
  353. package/dist/core/physics-config.js +6 -2
  354. package/dist/core/physics.d.ts +37 -11
  355. package/dist/core/physics.js +55 -20
  356. package/dist/core/project-identity.d.ts +34 -17
  357. package/dist/core/project-identity.js +33 -17
  358. package/dist/core/project-remote.d.ts +8 -4
  359. package/dist/core/project-remote.js +31 -14
  360. package/dist/core/recall-scope.d.ts +33 -11
  361. package/dist/core/recall-scope.js +42 -15
  362. package/dist/core/rejection-digest.d.ts +7 -0
  363. package/dist/core/rejection-digest.js +13 -0
  364. package/dist/core/salience.d.ts +3 -1
  365. package/dist/core/salience.js +10 -4
  366. package/dist/core/search-types.d.ts +15 -2
  367. package/dist/core/search-types.js +11 -0
  368. package/dist/dashboard/dashboard-actions.js +13 -2
  369. package/dist/dashboard/dashboard-snapshot.d.ts +2 -2
  370. package/dist/dashboard/dashboard-snapshot.js +4 -4
  371. package/dist/dashboard/dashboard.js +6 -3
  372. package/dist/db/backup.js +2 -2
  373. package/dist/db/busy.d.ts +10 -3
  374. package/dist/db/busy.js +27 -5
  375. package/dist/db/connect.d.ts +10 -3
  376. package/dist/db/connect.js +8 -3
  377. package/dist/db/continuity.d.ts +1 -1
  378. package/dist/db/continuity.js +27 -11
  379. package/dist/db/meta.d.ts +4 -1
  380. package/dist/db/meta.js +4 -1
  381. package/dist/db/migrate.d.ts +10 -5
  382. package/dist/db/migrate.js +26 -13
  383. package/dist/db/migrations/index.d.ts +1 -1
  384. package/dist/db/migrations/index.js +3 -1
  385. package/dist/db/migrations/types.d.ts +2 -1
  386. package/dist/db/migrations/v12.js +2 -1
  387. package/dist/db/migrations/v14.js +2 -1
  388. package/dist/db/migrations/v15.js +4 -2
  389. package/dist/db/migrations/v16.js +6 -3
  390. package/dist/db/migrations/v17.js +2 -1
  391. package/dist/db/migrations/v19.js +4 -2
  392. package/dist/db/migrations/v20.js +2 -1
  393. package/dist/db/migrations/v22.js +12 -6
  394. package/dist/db/migrations/v23.js +6 -3
  395. package/dist/db/migrations/v24.js +6 -3
  396. package/dist/db/migrations/v25.js +4 -2
  397. package/dist/db/migrations/v26.js +4 -2
  398. package/dist/db/migrations/v27.js +6 -3
  399. package/dist/db/migrations/v28.js +4 -2
  400. package/dist/db/migrations/v29.js +4 -2
  401. package/dist/db/migrations/v30.js +6 -3
  402. package/dist/db/migrations/v31.js +4 -2
  403. package/dist/db/migrations/v32.js +6 -3
  404. package/dist/db/migrations/v33.js +4 -2
  405. package/dist/db/migrations/v34.js +2 -1
  406. package/dist/db/migrations/v35.js +2 -1
  407. package/dist/db/migrations/v36.js +2 -1
  408. package/dist/db/migrations/v37.js +10 -5
  409. package/dist/db/migrations/v38.js +10 -5
  410. package/dist/db/migrations/v39.js +14 -6
  411. package/dist/db/migrations/v40.js +4 -2
  412. package/dist/db/migrations/v41.js +4 -2
  413. package/dist/db/migrations/v42.js +2 -1
  414. package/dist/db/migrations/v44.js +4 -2
  415. package/dist/db/migrations/v45.js +4 -2
  416. package/dist/db/migrations/v49.js +2 -1
  417. package/dist/db/migrations/v50.js +4 -2
  418. package/dist/db/migrations/v51.js +4 -2
  419. package/dist/db/migrations/v52.js +2 -1
  420. package/dist/db/migrations/v53.js +8 -4
  421. package/dist/db/migrations/v54.js +2 -1
  422. package/dist/db/migrations/v55.js +4 -2
  423. package/dist/db/migrations/v56.d.ts +3 -0
  424. package/dist/db/migrations/v56.js +28 -0
  425. package/dist/db/open.d.ts +24 -12
  426. package/dist/db/open.js +25 -13
  427. package/dist/db/physics-state.d.ts +8 -4
  428. package/dist/db/physics-state.js +13 -20
  429. package/dist/db/raw-archive-mirror-cleanup.d.ts +4 -2
  430. package/dist/db/raw-archive-mirror-cleanup.js +6 -4
  431. package/dist/db/request-stores.d.ts +19 -5
  432. package/dist/db/request-stores.js +14 -5
  433. package/dist/db/tables.d.ts +2 -1
  434. package/dist/db/tables.js +12 -4
  435. package/dist/db/vector-store.d.ts +13 -4
  436. package/dist/db/vector-store.js +34 -14
  437. package/dist/db/wal-checkpointer.d.ts +2 -1
  438. package/dist/db/wal-checkpointer.js +19 -7
  439. package/dist/doctor.d.ts +4 -1
  440. package/dist/doctor.js +121 -39
  441. package/dist/embeddings/local.d.ts +8 -4
  442. package/dist/embeddings/local.js +9 -5
  443. package/dist/embeddings/provider.d.ts +19 -10
  444. package/dist/embeddings/provider.js +31 -17
  445. package/dist/embeddings/transformers.d.ts +16 -4
  446. package/dist/embeddings/transformers.js +32 -15
  447. package/dist/entry/json-hooks.d.ts +1 -1
  448. package/dist/entry/json-hooks.js +1 -1
  449. package/dist/entry/project-identity.js +2 -1
  450. package/dist/entry/session-text.d.ts +1 -1
  451. package/dist/entry/session-text.js +1 -1
  452. package/dist/entry/sqlite-handles.d.ts +10 -0
  453. package/dist/entry/sqlite-handles.js +9 -0
  454. package/dist/entry/store-kit.d.ts +19 -6
  455. package/dist/entry/store-kit.js +6 -4
  456. package/dist/eval/eval-stats.d.ts +27 -8
  457. package/dist/eval/eval-stats.js +17 -5
  458. package/dist/eval/eval-suite.d.ts +3 -1
  459. package/dist/eval/eval-suite.js +409 -187
  460. package/dist/eval/eval.d.ts +8 -2
  461. package/dist/eval/eval.js +8 -2
  462. package/dist/eval/judgment.js +16 -6
  463. package/dist/graph/delta.d.ts +9 -42
  464. package/dist/graph/delta.js +17 -11
  465. package/dist/graph/extract.d.ts +10 -7
  466. package/dist/graph/extract.js +57 -25
  467. package/dist/graph/recall.d.ts +12 -4
  468. package/dist/graph/recall.js +30 -13
  469. package/dist/graph/stream.d.ts +18 -6
  470. package/dist/graph/stream.js +32 -10
  471. package/dist/graph/view.d.ts +19 -6
  472. package/dist/graph/view.js +42 -17
  473. package/dist/hooks/codex-session.js +2 -2
  474. package/dist/hooks/codex-wrapper.d.ts +3 -1
  475. package/dist/hooks/codex-wrapper.js +9 -4
  476. package/dist/hooks/copilot.d.ts +19 -5
  477. package/dist/hooks/copilot.js +54 -15
  478. package/dist/hooks/hook-blocks.d.ts +4 -1
  479. package/dist/hooks/hook-blocks.js +8 -3
  480. package/dist/hooks/json-hooks.d.ts +9 -5
  481. package/dist/hooks/json-hooks.js +69 -34
  482. package/dist/hooks/opencode.js +15 -5
  483. package/dist/hooks/shared.d.ts +27 -8
  484. package/dist/hooks/shared.js +57 -16
  485. package/dist/importers/core.d.ts +12 -4
  486. package/dist/importers/core.js +8 -7
  487. package/dist/importers/markdown-parse.d.ts +15 -5
  488. package/dist/importers/markdown-parse.js +16 -7
  489. package/dist/importers/markdown.js +6 -9
  490. package/dist/importers/sources.js +10 -23
  491. package/dist/importers/vault.d.ts +2 -2
  492. package/dist/importers/vault.js +43 -27
  493. package/dist/index.d.ts +32 -6
  494. package/dist/index.js +25 -7
  495. package/dist/learn/autolearn.d.ts +17 -6
  496. package/dist/learn/autolearn.js +53 -24
  497. package/dist/learn/churn-git.d.ts +4 -1
  498. package/dist/learn/churn-git.js +29 -5
  499. package/dist/learn/extract.d.ts +4 -1
  500. package/dist/learn/extract.js +16 -9
  501. package/dist/learn/forward-claim-detector.d.ts +17 -5
  502. package/dist/learn/forward-claim-detector.js +34 -15
  503. package/dist/learn/invalidation.d.ts +12 -7
  504. package/dist/learn/invalidation.js +56 -27
  505. package/dist/learn/roots.d.ts +3 -0
  506. package/dist/learn/roots.js +5 -0
  507. package/dist/mcp/admin-tools.d.ts +5 -5
  508. package/dist/mcp/admin-tools.js +28 -23
  509. package/dist/mcp/format.d.ts +1 -1
  510. package/dist/mcp/format.js +4 -2
  511. package/dist/mcp/framing.d.ts +3 -1
  512. package/dist/mcp/framing.js +20 -8
  513. package/dist/mcp/memory-tools.d.ts +3 -3
  514. package/dist/mcp/memory-tools.js +18 -14
  515. package/dist/mcp/protocol.d.ts +32 -16
  516. package/dist/mcp/protocol.js +12 -9
  517. package/dist/mcp/recall-tools.d.ts +3 -3
  518. package/dist/mcp/recall-tools.js +62 -74
  519. package/dist/mcp/request.d.ts +7 -5
  520. package/dist/mcp/request.js +57 -74
  521. package/dist/mcp/server.d.ts +3 -1
  522. package/dist/mcp/server.js +8 -3
  523. package/dist/mcp/session-state.d.ts +1 -1
  524. package/dist/mcp/session-state.js +4 -3
  525. package/dist/mcp/shared-gate.d.ts +3 -2
  526. package/dist/mcp/shared-gate.js +3 -2
  527. package/dist/mcp/stdio.d.ts +6 -3
  528. package/dist/mcp/stdio.js +52 -21
  529. package/dist/mcp/tool-args.d.ts +4 -1
  530. package/dist/mcp/tool-args.js +8 -3
  531. package/dist/mcp/tools.js +76 -32
  532. package/dist/objects/customer-notes.d.ts +12 -10
  533. package/dist/objects/customer-notes.js +21 -15
  534. package/dist/objects/decisions.d.ts +18 -10
  535. package/dist/objects/decisions.js +23 -17
  536. package/dist/objects/descriptor.js +2 -1
  537. package/dist/objects/fields.d.ts +4 -1
  538. package/dist/objects/fields.js +6 -2
  539. package/dist/objects/incidents.d.ts +14 -16
  540. package/dist/objects/incidents.js +29 -30
  541. package/dist/objects/lifecycle.d.ts +0 -4
  542. package/dist/objects/lifecycle.js +21 -24
  543. package/dist/objects/policies.d.ts +12 -16
  544. package/dist/objects/policies.js +17 -21
  545. package/dist/objects/processes.d.ts +16 -10
  546. package/dist/objects/processes.js +20 -15
  547. package/dist/objects/project-briefs.d.ts +13 -14
  548. package/dist/objects/project-briefs.js +33 -39
  549. package/dist/objects/skills.d.ts +10 -12
  550. package/dist/objects/skills.js +17 -22
  551. package/dist/postinstall.js +15 -7
  552. package/dist/predictions/planning-fallacy.d.ts +19 -6
  553. package/dist/predictions/planning-fallacy.js +4 -2
  554. package/dist/rerankers/clef.d.ts +8 -2
  555. package/dist/rerankers/clef.js +14 -9
  556. package/dist/rerankers/cross-encoder.d.ts +2 -1
  557. package/dist/rerankers/cross-encoder.js +9 -6
  558. package/dist/rerankers/index.js +2 -1
  559. package/dist/rerankers/jev.js +2 -1
  560. package/dist/rerankers/llm.d.ts +6 -2
  561. package/dist/rerankers/llm.js +8 -3
  562. package/dist/rerankers/remote.d.ts +3 -1
  563. package/dist/rerankers/remote.js +5 -2
  564. package/dist/rerankers/types.d.ts +6 -2
  565. package/dist/search/bm25-search.d.ts +3 -1
  566. package/dist/search/bm25-search.js +15 -2
  567. package/dist/search/boosts.js +4 -3
  568. package/dist/search/embed-memories.d.ts +10 -5
  569. package/dist/search/embed-memories.js +62 -36
  570. package/dist/search/engine.d.ts +4 -1
  571. package/dist/search/engine.js +6 -2
  572. package/dist/search/goal-boost.d.ts +10 -3
  573. package/dist/search/goal-boost.js +13 -6
  574. package/dist/search/hybrid-score.d.ts +4 -1
  575. package/dist/search/hybrid-score.js +4 -1
  576. package/dist/search/hybrid.d.ts +23 -8
  577. package/dist/search/hybrid.js +12 -7
  578. package/dist/search/multihop.js +14 -13
  579. package/dist/search/path-context.d.ts +10 -3
  580. package/dist/search/path-context.js +10 -3
  581. package/dist/search/physics-search.d.ts +9 -4
  582. package/dist/search/physics-search.js +38 -14
  583. package/dist/search/rerank.d.ts +2 -1
  584. package/dist/search/rerank.js +2 -1
  585. package/dist/search/rrf.d.ts +14 -5
  586. package/dist/search/rrf.js +11 -4
  587. package/dist/search/vector.d.ts +8 -2
  588. package/dist/search/vector.js +9 -3
  589. package/dist/server/auth.d.ts +18 -14
  590. package/dist/server/auth.js +69 -38
  591. package/dist/server/boot.d.ts +3 -1
  592. package/dist/server/boot.js +95 -56
  593. package/dist/server/client-ip.d.ts +11 -4
  594. package/dist/server/client-ip.js +27 -10
  595. package/dist/server/cursor.d.ts +10 -3
  596. package/dist/server/cursor.js +10 -3
  597. package/dist/server/deadline.d.ts +5 -2
  598. package/dist/server/deadline.js +10 -3
  599. package/dist/server/key-check-bounds.js +12 -4
  600. package/dist/server/lifecycle.d.ts +4 -1
  601. package/dist/server/lifecycle.js +10 -4
  602. package/dist/server/mcp-http.d.ts +2 -1
  603. package/dist/server/mcp-http.js +37 -22
  604. package/dist/server/rate-limit.d.ts +17 -5
  605. package/dist/server/rate-limit.js +55 -26
  606. package/dist/server/ready.js +7 -4
  607. package/dist/server/request.d.ts +15 -4
  608. package/dist/server/request.js +42 -15
  609. package/dist/server/route-checks.d.ts +4 -1
  610. package/dist/server/route-checks.js +8 -3
  611. package/dist/server/route-table.d.ts +8 -6
  612. package/dist/server/route-table.js +547 -93
  613. package/dist/server/routes/admin.d.ts +7 -7
  614. package/dist/server/routes/admin.js +36 -15
  615. package/dist/server/routes/customer-notes.d.ts +5 -5
  616. package/dist/server/routes/customer-notes.js +5 -4
  617. package/dist/server/routes/decisions.d.ts +5 -5
  618. package/dist/server/routes/decisions.js +12 -6
  619. package/dist/server/routes/incidents.d.ts +5 -5
  620. package/dist/server/routes/incidents.js +10 -4
  621. package/dist/server/routes/memories.d.ts +8 -8
  622. package/dist/server/routes/memories.js +12 -19
  623. package/dist/server/routes/object-routes.d.ts +8 -5
  624. package/dist/server/routes/object-routes.js +4 -2
  625. package/dist/server/routes/policies.d.ts +6 -6
  626. package/dist/server/routes/policies.js +11 -4
  627. package/dist/server/routes/predictions.d.ts +5 -5
  628. package/dist/server/routes/predictions.js +9 -4
  629. package/dist/server/routes/processes.d.ts +5 -5
  630. package/dist/server/routes/processes.js +15 -6
  631. package/dist/server/routes/project-briefs.d.ts +6 -6
  632. package/dist/server/routes/project-briefs.js +3 -2
  633. package/dist/server/routes/recall.d.ts +3 -3
  634. package/dist/server/routes/recall.js +21 -10
  635. package/dist/server/routes/skills.d.ts +6 -6
  636. package/dist/server/routes/skills.js +12 -4
  637. package/dist/server/server-detect.d.ts +24 -8
  638. package/dist/server/server-detect.js +57 -22
  639. package/dist/server/sleep-child.js +16 -10
  640. package/dist/server/sleep-offload.d.ts +8 -5
  641. package/dist/server/sleep-offload.js +41 -19
  642. package/dist/server/tls.d.ts +4 -1
  643. package/dist/server/tls.js +13 -5
  644. package/dist/server/types.d.ts +38 -26
  645. package/dist/server/validation.d.ts +4 -1
  646. package/dist/server/validation.js +22 -9
  647. package/dist/server.d.ts +15 -10
  648. package/dist/server.js +32 -12
  649. package/dist/sharing/global-store.d.ts +5 -10
  650. package/dist/sharing/global-store.js +8 -43
  651. package/dist/sharing/global-sync.d.ts +3 -1
  652. package/dist/sharing/global-sync.js +16 -6
  653. package/dist/sharing/project-merge.d.ts +25 -7
  654. package/dist/sharing/project-merge.js +49 -17
  655. package/dist/sharing/search-both.d.ts +8 -4
  656. package/dist/sharing/search-both.js +19 -12
  657. package/dist/sharing/share.d.ts +8 -4
  658. package/dist/sharing/share.js +39 -15
  659. package/dist/store/ambient.js +9 -5
  660. package/dist/store/audit-event.d.ts +2 -2
  661. package/dist/store/audit-event.js +8 -3
  662. package/dist/store/audit.d.ts +6 -3
  663. package/dist/store/audit.js +16 -6
  664. package/dist/store/auth.d.ts +4 -2
  665. package/dist/store/auth.js +63 -20
  666. package/dist/store/busy.d.ts +9 -0
  667. package/dist/store/busy.js +16 -0
  668. package/dist/store/candidates.d.ts +12 -5
  669. package/dist/store/candidates.js +75 -36
  670. package/dist/store/capture-write.d.ts +2 -1
  671. package/dist/store/capture-write.js +2 -1
  672. package/dist/store/card-detail.d.ts +4 -4
  673. package/dist/store/card-detail.js +15 -8
  674. package/dist/store/cards.d.ts +24 -10
  675. package/dist/store/cards.js +93 -60
  676. package/dist/store/compaction-caller.d.ts +2 -1
  677. package/dist/store/compaction-caller.js +2 -1
  678. package/dist/store/compactions-record.d.ts +14 -8
  679. package/dist/store/compactions-record.js +95 -32
  680. package/dist/store/compactions.js +35 -15
  681. package/dist/store/conflicts.d.ts +9 -4
  682. package/dist/store/conflicts.js +100 -45
  683. package/dist/store/connectors/dlq.d.ts +17 -5
  684. package/dist/store/connectors/dlq.js +56 -5
  685. package/dist/store/connectors/event-log.d.ts +111 -2
  686. package/dist/store/connectors/event-log.js +2 -1
  687. package/dist/store/connectors/github.d.ts +6 -3
  688. package/dist/store/connectors/github.js +24 -40
  689. package/dist/store/connectors/slack.d.ts +2 -1
  690. package/dist/store/connectors/slack.js +25 -37
  691. package/dist/store/dashboard-reads.d.ts +7 -3
  692. package/dist/store/dashboard-reads.js +32 -11
  693. package/dist/store/delete-and-batch.d.ts +17 -11
  694. package/dist/store/delete-and-batch.js +67 -26
  695. package/dist/store/delivery-recorder.d.ts +8 -5
  696. package/dist/store/delivery-recorder.js +70 -32
  697. package/dist/store/descendant-page.d.ts +2 -1
  698. package/dist/store/descendant-page.js +24 -9
  699. package/dist/store/diagnostics.d.ts +2 -1
  700. package/dist/store/diagnostics.js +2 -1
  701. package/dist/store/doctor-reads.d.ts +2 -1
  702. package/dist/store/doctor-reads.js +13 -5
  703. package/dist/store/dormant.d.ts +19 -11
  704. package/dist/store/dormant.js +40 -18
  705. package/dist/store/embeddings/index.d.ts +13 -9
  706. package/dist/store/embeddings/index.js +19 -12
  707. package/dist/store/entry-reads.d.ts +49 -20
  708. package/dist/store/entry-reads.js +181 -66
  709. package/dist/store/entry-row.d.ts +10 -6
  710. package/dist/store/entry-row.js +17 -12
  711. package/dist/store/entry-writes.d.ts +22 -10
  712. package/dist/store/entry-writes.js +41 -14
  713. package/dist/store/failure-log-at.js +1 -1
  714. package/dist/store/failure-log.d.ts +4 -2
  715. package/dist/store/failure-log.js +13 -6
  716. package/dist/store/gated-write.d.ts +3 -3
  717. package/dist/store/gated-write.js +3 -3
  718. package/dist/store/goals.d.ts +5 -4
  719. package/dist/store/goals.js +8 -10
  720. package/dist/store/graph-apply.d.ts +21 -0
  721. package/dist/{graph/write.js → store/graph-apply.js} +31 -11
  722. package/dist/store/graph-queue.d.ts +9 -6
  723. package/dist/store/graph-queue.js +15 -10
  724. package/dist/store/graph-reads.d.ts +16 -11
  725. package/dist/store/graph-reads.js +24 -15
  726. package/dist/store/graph-rows.d.ts +41 -3
  727. package/dist/store/graph-rows.js +10 -7
  728. package/dist/store/graph-view-rows.js +14 -7
  729. package/dist/store/graph-writes.d.ts +16 -10
  730. package/dist/store/graph-writes.js +59 -36
  731. package/dist/store/handoffs.d.ts +4 -4
  732. package/dist/store/handoffs.js +40 -19
  733. package/dist/store/index-and-stats.d.ts +2 -2
  734. package/dist/store/index-and-stats.js +6 -5
  735. package/dist/store/index.d.ts +3 -1
  736. package/dist/store/index.js +1 -0
  737. package/dist/store/key-audit.d.ts +2 -1
  738. package/dist/store/key-audit.js +2 -1
  739. package/dist/store/key-writes.d.ts +2 -1
  740. package/dist/store/key-writes.js +9 -2
  741. package/dist/store/ledger-turn.d.ts +4 -1
  742. package/dist/store/ledger-turn.js +7 -2
  743. package/dist/store/mirrors.d.ts +11 -4
  744. package/dist/store/mirrors.js +88 -16
  745. package/dist/store/narrow.d.ts +6 -0
  746. package/dist/store/narrow.js +11 -0
  747. package/dist/store/open.d.ts +4 -2
  748. package/dist/store/open.js +18 -9
  749. package/dist/store/pilot-arm.d.ts +2 -1
  750. package/dist/store/pilot-arm.js +18 -6
  751. package/dist/store/planning-fallacy-evidence.d.ts +2 -2
  752. package/dist/store/planning-fallacy-evidence.js +8 -5
  753. package/dist/store/port/agent-import.d.ts +62 -0
  754. package/dist/store/port/agent-import.js +2 -0
  755. package/dist/store/port/consolidation.d.ts +129 -0
  756. package/dist/store/port/consolidation.js +2 -0
  757. package/dist/store/port/learning.d.ts +19 -0
  758. package/dist/store/port/learning.js +2 -0
  759. package/dist/store/port/local-files.d.ts +18 -0
  760. package/dist/store/port/local-files.js +2 -0
  761. package/dist/store/port/promotion.d.ts +20 -0
  762. package/dist/store/port/promotion.js +3 -0
  763. package/dist/store/port-groups.d.ts +160 -0
  764. package/dist/store/port-groups.js +2 -0
  765. package/dist/store/port.d.ts +215 -229
  766. package/dist/store/port.js +3 -9
  767. package/dist/store/predictions.d.ts +14 -10
  768. package/dist/store/predictions.js +37 -17
  769. package/dist/store/project-tags.d.ts +4 -1
  770. package/dist/store/project-tags.js +16 -5
  771. package/dist/store/quality-repair.d.ts +8 -4
  772. package/dist/store/quality-repair.js +53 -20
  773. package/dist/store/quarantine.d.ts +1 -0
  774. package/dist/store/quarantine.js +23 -9
  775. package/dist/store/raw-archive.d.ts +5 -4
  776. package/dist/store/raw-archive.js +11 -10
  777. package/dist/store/recall-trace.d.ts +22 -17
  778. package/dist/store/recall-trace.js +126 -63
  779. package/dist/store/rejected-values.d.ts +15 -10
  780. package/dist/store/rejected-values.js +33 -12
  781. package/dist/store/rejection.d.ts +12 -11
  782. package/dist/store/rejection.js +18 -19
  783. package/dist/store/report-reads.d.ts +2 -1
  784. package/dist/store/report-reads.js +2 -1
  785. package/dist/store/rows.d.ts +7 -5
  786. package/dist/store/rows.js +18 -11
  787. package/dist/store/rule-sql.d.ts +6 -4
  788. package/dist/store/rule-sql.js +16 -9
  789. package/dist/store/search-rows.d.ts +14 -9
  790. package/dist/store/search-rows.js +48 -23
  791. package/dist/store/sessions.d.ts +12 -10
  792. package/dist/store/sessions.js +40 -21
  793. package/dist/store/set-aside.d.ts +2 -2
  794. package/dist/store/set-aside.js +18 -5
  795. package/dist/store/sqlite/agent-import.d.ts +3 -0
  796. package/dist/store/sqlite/agent-import.js +77 -0
  797. package/dist/store/sqlite/cards-group.d.ts +6 -0
  798. package/dist/store/sqlite/cards-group.js +37 -0
  799. package/dist/store/sqlite/conflicts-group.d.ts +6 -0
  800. package/dist/store/sqlite/conflicts-group.js +18 -0
  801. package/dist/store/sqlite/connector-events-group.d.ts +2 -1
  802. package/dist/store/sqlite/connector-events-group.js +17 -6
  803. package/dist/store/sqlite/connector-writes-group.d.ts +2 -1
  804. package/dist/store/sqlite/connector-writes-group.js +9 -4
  805. package/dist/store/sqlite/consolidation-group.d.ts +4 -0
  806. package/dist/store/sqlite/consolidation-group.js +64 -0
  807. package/dist/store/sqlite/dag-reads-group.js +1 -1
  808. package/dist/store/sqlite/dormant-group.d.ts +6 -0
  809. package/dist/store/sqlite/dormant-group.js +29 -0
  810. package/dist/store/sqlite/entry-writes-group.d.ts +6 -3
  811. package/dist/store/sqlite/entry-writes-group.js +37 -14
  812. package/dist/store/sqlite/error-codec.d.ts +4 -2
  813. package/dist/store/sqlite/error-codec.js +32 -10
  814. package/dist/store/sqlite/executor-counts.js +2 -1
  815. package/dist/store/sqlite/executor.d.ts +8 -3
  816. package/dist/store/sqlite/executor.js +56 -18
  817. package/dist/store/sqlite/global-promote.d.ts +5 -0
  818. package/dist/store/sqlite/global-promote.js +48 -0
  819. package/dist/store/sqlite/goals-group.d.ts +6 -0
  820. package/dist/store/sqlite/goals-group.js +23 -0
  821. package/dist/store/sqlite/graph-reads-group.d.ts +2 -1
  822. package/dist/store/sqlite/graph-reads-group.js +2 -1
  823. package/dist/store/sqlite/held-connection.d.ts +7 -1
  824. package/dist/store/sqlite/held-connection.js +34 -7
  825. package/dist/store/sqlite/last-recall-group.d.ts +4 -2
  826. package/dist/store/sqlite/last-recall-group.js +9 -4
  827. package/dist/store/sqlite/learning-group.d.ts +4 -0
  828. package/dist/store/sqlite/learning-group.js +17 -0
  829. package/dist/store/sqlite/maintenance-groups.js +2 -1
  830. package/dist/store/sqlite/object-rows.d.ts +6 -3
  831. package/dist/store/sqlite/object-rows.js +34 -5
  832. package/dist/store/sqlite/objects-group.d.ts +5 -4
  833. package/dist/store/sqlite/objects-group.js +84 -33
  834. package/dist/store/sqlite/predictions-group.d.ts +2 -1
  835. package/dist/store/sqlite/predictions-group.js +4 -2
  836. package/dist/store/sqlite/promotion-group.d.ts +3 -0
  837. package/dist/store/sqlite/promotion-group.js +10 -0
  838. package/dist/store/sqlite/quarantine-group.d.ts +2 -1
  839. package/dist/store/sqlite/quarantine-group.js +4 -2
  840. package/dist/store/sqlite/reports-group.d.ts +6 -0
  841. package/dist/store/sqlite/reports-group.js +33 -0
  842. package/dist/store/sqlite/request-scope.d.ts +6 -0
  843. package/dist/store/sqlite/request-scope.js +18 -0
  844. package/dist/store/sqlite/sessions-group.d.ts +6 -0
  845. package/dist/store/sqlite/sessions-group.js +46 -0
  846. package/dist/store/sqlite/store.d.ts +22 -11
  847. package/dist/store/sqlite/store.js +84 -11
  848. package/dist/store/sqlite/vector-pack.js +2 -1
  849. package/dist/store/sqlite/vector-reads-group.js +2 -1
  850. package/dist/store/sqlite/worker-jobs.d.ts +2 -1
  851. package/dist/store/sqlite/worker-jobs.js +19 -7
  852. package/dist/store/sqlite/worker-ops.d.ts +10 -5
  853. package/dist/store/sqlite/worker-ops.js +6 -3
  854. package/dist/store/sqlite/worker-store.d.ts +4 -3
  855. package/dist/store/sqlite/worker-store.js +24 -14
  856. package/dist/store/summaries.d.ts +19 -12
  857. package/dist/store/summaries.js +36 -21
  858. package/dist/store/summary-dirty.d.ts +2 -1
  859. package/dist/store/summary-dirty.js +2 -1
  860. package/dist/store/tenant.d.ts +3 -2
  861. package/dist/store/tenant.js +5 -4
  862. package/dist/store/token-ledger-rows.js +6 -3
  863. package/dist/store/token-ledger.d.ts +19 -13
  864. package/dist/store/token-ledger.js +27 -14
  865. package/dist/store/tombstone-checks.d.ts +4 -1
  866. package/dist/store/tombstone-checks.js +10 -1
  867. package/dist/store/usage-reports.js +2 -1
  868. package/dist/store/vector-index.d.ts +8 -5
  869. package/dist/store/vector-index.js +24 -10
  870. package/dist/store/working-memory.d.ts +6 -4
  871. package/dist/store/working-memory.js +14 -9
  872. package/dist/support-bundle.js +10 -5
  873. package/dist/trust/quarantine.d.ts +1 -2
  874. package/dist/trust/quarantine.js +1 -5
  875. package/dist/trust/reject-flow.d.ts +12 -3
  876. package/dist/trust/reject-flow.js +12 -4
  877. package/dist/util/anthropic-messages.d.ts +4 -1
  878. package/dist/util/anthropic-messages.js +14 -5
  879. package/dist/util/atomic-write.d.ts +4 -2
  880. package/dist/util/atomic-write.js +25 -14
  881. package/dist/util/compaction-items.d.ts +4 -1
  882. package/dist/util/compaction-items.js +8 -2
  883. package/dist/util/crash-handlers.d.ts +7 -2
  884. package/dist/util/crash-handlers.js +13 -4
  885. package/dist/util/env.d.ts +16 -4
  886. package/dist/util/env.js +78 -25
  887. package/dist/util/home-path.js +12 -6
  888. package/dist/util/hook-payload.d.ts +3 -1
  889. package/dist/util/hook-payload.js +3 -1
  890. package/dist/util/http-retry.d.ts +12 -6
  891. package/dist/util/http-retry.js +16 -6
  892. package/dist/util/http-util.d.ts +20 -5
  893. package/dist/util/http-util.js +28 -9
  894. package/dist/util/json.d.ts +4 -1
  895. package/dist/util/json.js +4 -1
  896. package/dist/util/keyset.js +2 -1
  897. package/dist/util/limits.js +4 -2
  898. package/dist/util/log.d.ts +13 -5
  899. package/dist/util/log.js +29 -6
  900. package/dist/util/net.d.ts +5 -0
  901. package/dist/util/net.js +19 -0
  902. package/dist/util/real-path.d.ts +2 -1
  903. package/dist/util/real-path.js +4 -3
  904. package/dist/util/request-scope.d.ts +11 -3
  905. package/dist/util/request-scope.js +13 -4
  906. package/dist/util/same-text.d.ts +10 -3
  907. package/dist/util/same-text.js +10 -3
  908. package/dist/util/secret-detect.d.ts +24 -7
  909. package/dist/util/secret-detect.js +49 -14
  910. package/dist/util/spawn-argv.d.ts +3 -1
  911. package/dist/util/spawn-argv.js +13 -4
  912. package/dist/util/sqlite-blocked.d.ts +15 -4
  913. package/dist/util/sqlite-blocked.js +19 -6
  914. package/dist/util/stored-json.d.ts +4 -1
  915. package/dist/util/stored-json.js +6 -2
  916. package/dist/util/stream-tee.d.ts +2 -1
  917. package/dist/util/stream-tee.js +8 -5
  918. package/dist/util/transcript-tail.d.ts +4 -1
  919. package/dist/util/transcript-tail.js +4 -1
  920. package/dist/util/version.d.ts +8 -3
  921. package/dist/util/version.js +8 -3
  922. package/dist/util/write-budget.d.ts +7 -2
  923. package/dist/util/write-budget.js +5 -2
  924. package/dist/util/yaml.d.ts +4 -1
  925. package/dist/util/yaml.js +4 -1
  926. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  927. package/extensions/openclaw-plugin/package.json +1 -1
  928. package/openclaw.plugin.json +1 -1
  929. package/package.json +2 -1
  930. package/scripts/postinstall.cjs +3 -1
  931. package/dist/api/cards.d.ts +0 -42
  932. package/dist/api/conflicts.d.ts +0 -28
  933. package/dist/api/conflicts.js +0 -61
  934. package/dist/api/dormant.d.ts +0 -14
  935. package/dist/api/dormant.js +0 -58
  936. package/dist/api/goals.d.ts +0 -18
  937. package/dist/api/graph.d.ts +0 -8
  938. package/dist/api/graph.js +0 -8
  939. package/dist/api/learn.js +0 -125
  940. package/dist/api/memories.d.ts +0 -25
  941. package/dist/api/objects.d.ts +0 -9
  942. package/dist/api/outcome.d.ts +0 -19
  943. package/dist/api/predictions.d.ts +0 -11
  944. package/dist/api/promote.d.ts +0 -36
  945. package/dist/api/recall-core.d.ts +0 -4
  946. package/dist/api/recall-core.js +0 -125
  947. package/dist/api/recall-finish.d.ts +0 -53
  948. package/dist/api/recall-finish.js +0 -30
  949. package/dist/api/recall-history.d.ts +0 -64
  950. package/dist/api/recall-history.js +0 -159
  951. package/dist/api/recall-record.d.ts +0 -43
  952. package/dist/api/recall-record.js +0 -78
  953. package/dist/api/recall-request.js +0 -121
  954. package/dist/api/recall.d.ts +0 -6
  955. package/dist/api/refine.d.ts +0 -7
  956. package/dist/api/refine.js +0 -10
  957. package/dist/api/session-owners.d.ts +0 -4
  958. package/dist/api/session-owners.js +0 -17
  959. package/dist/api/sleep-run.d.ts +0 -26
  960. package/dist/api/sleep.js +0 -11
  961. package/dist/graph/write.d.ts +0 -14
  962. package/dist/store/sqlite/busy.d.ts +0 -3
  963. package/dist/store/sqlite/busy.js +0 -8
  964. package/dist/store/sqlite/local.d.ts +0 -4
  965. package/dist/store/sqlite/local.js +0 -8
package/dist/util/env.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // The one module in src/ that reads process.env; scripts/check-env-reads.mjs fails CI on any other read.
2
- // Accessors read at call time, so a test that sets a variable between cases, or a HIPPO_HOME switch mid-process, still holds.
2
+ // Accessors read at call time, so a test that sets a variable between cases, or a HIPPO_HOME switch mid-process, still
3
+ // holds.
3
4
  function raw(name) {
4
5
  return process.env[name];
5
6
  }
@@ -24,7 +25,10 @@ function nonNegativeInt(name) {
24
25
  function trimmed(name) {
25
26
  return raw(name)?.trim() || undefined;
26
27
  }
27
- /** The whole environment, for code that takes it as an injectable map (agent-memory machines, owner checks, support bundles). */
28
+ /**
29
+ * The whole environment, for code that takes it as an injectable map (agent-memory machines, owner checks, support
30
+ * bundles).
31
+ */
28
32
  export function processEnv() {
29
33
  return process.env;
30
34
  }
@@ -93,13 +97,18 @@ export function envLogLevel() { return raw('HIPPO_LOG')?.trim().toLowerCase() ??
93
97
  export function envLogJson() { return raw('HIPPO_LOG_FORMAT')?.trim().toLowerCase() === 'json'; }
94
98
  // Server.
95
99
  export function envPort() { return raw('HIPPO_PORT'); }
96
- /** How long a client waits for a running server's /health before writing to the store directly; server-detect.ts holds the default. */
100
+ /**
101
+ * How long a client waits for a running server's /health before writing to the store directly; server-detect.ts holds
102
+ * the default.
103
+ */
97
104
  export function envHealthProbeMs() { return positiveInt('HIPPO_HEALTH_PROBE_MS'); }
98
105
  export function envRequireAuth() { return isOne('HIPPO_REQUIRE_AUTH'); }
99
106
  /** `1` lets a request made on this machine in with no key; HIPPO_REQUIRE_AUTH=1 wins over it. */
100
107
  export function envAllowKeylessLocal() { return isOne('HIPPO_ALLOW_KEYLESS_LOCAL'); }
101
108
  /** The role a keyless local request gets: `admin` (host admin) only when asked for by name, else `member`. */
102
- export function envKeylessLocalRole() { return trimmed('HIPPO_KEYLESS_LOCAL_ROLE')?.toLowerCase() === 'admin' ? 'admin' : 'member'; }
109
+ export function envKeylessLocalRole() {
110
+ return trimmed('HIPPO_KEYLESS_LOCAL_ROLE')?.toLowerCase() === 'admin' ? 'admin' : 'member';
111
+ }
103
112
  /** `1` lets a non-loopback bind start without TLS, for TLS that ends at a proxy in front. */
104
113
  export function envAllowCleartext() { return isOne('HIPPO_ALLOW_CLEARTEXT'); }
105
114
  export function envV1Rps() { return raw('HIPPO_V1_RPS'); }
@@ -112,7 +121,10 @@ export function envSleepTimeoutMs() { return positiveInt('HIPPO_SLEEP_TIMEOUT_MS
112
121
  /** How long a /v1 or /mcp request may run before the server answers 504, and a stdio MCP
113
122
  * request before its timeout error; 0 for no deadline; util/request-scope.ts holds the default. */
114
123
  export function envRequestDeadlineMs() { return nonNegativeInt('HIPPO_REQUEST_DEADLINE_MS'); }
115
- /** How many store calls may wait for one worker thread before the next is refused; store/sqlite/executor.ts holds the default. */
124
+ /**
125
+ * How many store calls may wait for one worker thread before the next is refused; store/sqlite/executor.ts holds the
126
+ * default.
127
+ */
116
128
  export function envStoreQueueMax() { return positiveInt('HIPPO_STORE_QUEUE_MAX'); }
117
129
  /** How long the daily runner lets one child `hippo` step run; cli/setup.ts holds the default. */
118
130
  export function envDailyStepTimeoutMs() { return positiveInt('HIPPO_DAILY_STEP_TIMEOUT_MS'); }
@@ -132,25 +144,66 @@ export function envLlmTimeoutMs() { return positiveInt('HIPPO_LLM_TIMEOUT_MS');
132
144
  export function envTypesafeApiKey() { return trimmed('TYPESAFE_API_KEY'); }
133
145
  export function envJevTimeoutMs() { return positiveInt('HIPPO_JEV_TIMEOUT_MS'); }
134
146
  export function envJevModel() { return raw('HIPPO_JEV_MODEL'); }
135
- /** How long a recall waits for an API provider to embed its query before ranking on BM25 alone; search/vector.ts holds the default. */
136
- export function envQueryEmbedTimeoutMs() { return positiveInt('HIPPO_QUERY_EMBED_TIMEOUT_MS'); }
137
- export function envLlmRerankerUrl() { return raw('HIPPO_LLM_RERANKER_URL'); }
138
- export function envLlmRerankerKey() { return raw('HIPPO_LLM_RERANKER_KEY'); }
139
- export function envLlmRerankerModel() { return raw('HIPPO_LLM_RERANKER_MODEL'); }
140
- export function envLlmRerankerTimeoutMs() { return positiveInt('HIPPO_LLM_RERANKER_TIMEOUT_MS'); }
141
- export function envClefEndpoint() { return raw('HIPPO_CLEF_ENDPOINT')?.trim(); }
142
- export function envClefEndpointToken() { return raw('HIPPO_CLEF_ENDPOINT_TOKEN')?.trim() || undefined; }
143
- export function envClefTimeoutMs() { return raw('HIPPO_CLEF_TIMEOUT_MS'); }
144
- export function envCloudflareAccountId() { return raw('CLOUDFLARE_ACCOUNT_ID')?.trim() ?? ''; }
145
- export function envCloudflareApiToken() { return raw('CLOUDFLARE_API_TOKEN')?.trim() ?? ''; }
147
+ /**
148
+ * How long a recall waits for an API provider to embed its query before ranking on BM25 alone; search/vector.ts holds
149
+ * the default.
150
+ */
151
+ export function envQueryEmbedTimeoutMs() {
152
+ return positiveInt('HIPPO_QUERY_EMBED_TIMEOUT_MS');
153
+ }
154
+ export function envLlmRerankerUrl() {
155
+ return raw('HIPPO_LLM_RERANKER_URL');
156
+ }
157
+ export function envLlmRerankerKey() {
158
+ return raw('HIPPO_LLM_RERANKER_KEY');
159
+ }
160
+ export function envLlmRerankerModel() {
161
+ return raw('HIPPO_LLM_RERANKER_MODEL');
162
+ }
163
+ export function envLlmRerankerTimeoutMs() {
164
+ return positiveInt('HIPPO_LLM_RERANKER_TIMEOUT_MS');
165
+ }
166
+ export function envClefEndpoint() {
167
+ return raw('HIPPO_CLEF_ENDPOINT')?.trim();
168
+ }
169
+ export function envClefEndpointToken() {
170
+ return raw('HIPPO_CLEF_ENDPOINT_TOKEN')?.trim() || undefined;
171
+ }
172
+ export function envClefTimeoutMs() {
173
+ return raw('HIPPO_CLEF_TIMEOUT_MS');
174
+ }
175
+ export function envCloudflareAccountId() {
176
+ return raw('CLOUDFLARE_ACCOUNT_ID')?.trim() ?? '';
177
+ }
178
+ export function envCloudflareApiToken() {
179
+ return raw('CLOUDFLARE_API_TOKEN')?.trim() ?? '';
180
+ }
146
181
  // Connectors.
147
- export function envSlackBotToken() { return raw('SLACK_BOT_TOKEN'); }
148
- export function envSlackTeamId() { return raw('SLACK_TEAM_ID'); }
149
- export function envSlackSigningSecret() { return raw('SLACK_SIGNING_SECRET'); }
150
- export function envSlackSigningSecretPrevious() { return raw('SLACK_SIGNING_SECRET_PREVIOUS'); }
151
- export function envSlackAllowUnknownTeamFallback() { return isOne('SLACK_ALLOW_UNKNOWN_TEAM_FALLBACK'); }
152
- export function envGitHubToken() { return raw('GITHUB_TOKEN'); }
153
- export function envGitHubWebhookSecret() { return raw('GITHUB_WEBHOOK_SECRET'); }
154
- export function envGitHubWebhookSecretPrevious() { return raw('GITHUB_WEBHOOK_SECRET_PREVIOUS'); }
155
- export function envGitHubAllowUnknownInstallationFallback() { return isOne('GITHUB_ALLOW_UNKNOWN_INSTALLATION_FALLBACK'); }
182
+ export function envSlackBotToken() {
183
+ return raw('SLACK_BOT_TOKEN');
184
+ }
185
+ export function envSlackTeamId() {
186
+ return raw('SLACK_TEAM_ID');
187
+ }
188
+ export function envSlackSigningSecret() {
189
+ return raw('SLACK_SIGNING_SECRET');
190
+ }
191
+ export function envSlackSigningSecretPrevious() {
192
+ return raw('SLACK_SIGNING_SECRET_PREVIOUS');
193
+ }
194
+ export function envSlackAllowUnknownTeamFallback() {
195
+ return isOne('SLACK_ALLOW_UNKNOWN_TEAM_FALLBACK');
196
+ }
197
+ export function envGitHubToken() {
198
+ return raw('GITHUB_TOKEN');
199
+ }
200
+ export function envGitHubWebhookSecret() {
201
+ return raw('GITHUB_WEBHOOK_SECRET');
202
+ }
203
+ export function envGitHubWebhookSecretPrevious() {
204
+ return raw('GITHUB_WEBHOOK_SECRET_PREVIOUS');
205
+ }
206
+ export function envGitHubAllowUnknownInstallationFallback() {
207
+ return isOne('GITHUB_ALLOW_UNKNOWN_INSTALLATION_FALLBACK');
208
+ }
156
209
  //# sourceMappingURL=env.js.map
@@ -1,11 +1,14 @@
1
- // Home-directory paths name their user, so text bound for a shared store tests or masks them here; no imports keep it light.
1
+ // Home-directory paths name their user, so text bound for a shared
2
+ // store tests or masks them here; no imports keep it light.
2
3
  // VS Code writes file links URL-encoded, so a separator may be %5C or %2F.
3
4
  const WIN_SEP = String.raw `(?:[\\/]|%5[Cc]|%2[Ff])`;
4
5
  const WIN_CHAR = String.raw `(?:(?!%5[Cc]|%2[Ff])[^\\/:*?"<>|\s])`;
5
6
  // A Windows name never holds a quote, so JSON stops it; one with spaces runs to a separator, quote,
6
7
  // closing mark or line end, leaving the mark, as stopping at its first word leaks the surname.
7
- const WIN_USER = String.raw `(?:${WIN_CHAR}+(?: ${WIN_CHAR}+){0,3}(?=${WIN_SEP}|["'\`)\]>,;]|\.(?=\s|$)|(?<!\.)(?:[^\S ]|$))(?<![\`)\],;'])|${WIN_CHAR}+)`;
8
- // Slash-led homes with their case spelled out and no flag, so one pattern can hold all four: Git Bash and WSL mounts, Linux, root and macOS.
8
+ const WIN_USER = String.raw `(?:${WIN_CHAR}+(?: ${WIN_CHAR}+){0,3}(?=${WIN_SEP}|["'\`)\]>,;]|\.(?=\s|$)|` +
9
+ String.raw `(?<!\.)(?:[^\S ]|$))(?<![\`)\],;'])|${WIN_CHAR}+)`;
10
+ // Slash-led homes with their case spelled out and no flag, so one pattern can hold all four: Git Bash and WSL mounts,
11
+ // Linux, root and macOS.
9
12
  const MOUNT_HOME = String.raw `(?:\/[Mm][Nn][Tt])?\/[A-Za-z]\/[Uu][Ss][Ee][Rr][Ss]\/${WIN_USER}`;
10
13
  const LINUX_HOME = String.raw `(?:\/var)?\/home\/[^/\s]+`;
11
14
  const ROOT_HOME = String.raw `(?:\/var)?\/root(?![\w.-])`;
@@ -35,8 +38,10 @@ const MASK = '[home]';
35
38
  // Global copies, so the shared test patterns keep their lastIndex at 0.
36
39
  const allOf = (re) => new RegExp(re.source, `${re.flags}g`);
37
40
  const [DRIVE_HOMES, LONG_PATHS, SHARE_HOMES, SHORT_NAMES] = [DRIVE_HOME, LONG_PATH, SHARE_HOME, SHORT_NAME].map(allOf);
38
- // A home glued after another starts where a mask will end, which no guard refuses: one match takes the whole run, as masking one a pass costs a pass per home.
39
- // A run holds only shapes whose own step is not still to come, so a later step meets the same text it would without the run.
41
+ // A home glued after another starts where a mask will end, which no guard
42
+ // refuses: one match takes the whole run, as masking one a pass costs a
43
+ // pass per home. A run holds only shapes whose own step is not still to
44
+ // come, so a later step meets the same text it would without the run.
40
45
  const runFrom = (start, ...glued) => new RegExp(`${start}(?:${glued.join('|')})*`, 'g');
41
46
  const MOUNT_RUNS = runFrom(MOUNT_START, MOUNT_HOME);
42
47
  const LINUX_RUNS = runFrom(LINUX_START, MOUNT_HOME, LINUX_HOME);
@@ -59,7 +64,8 @@ function maskOnce(text) {
59
64
  export function maskHomePaths(text) {
60
65
  let out = text;
61
66
  let next = maskOnce(out);
62
- // A mask can uncover a home path its text was hiding, so passes repeat until one changes nothing; each takes a separator out, so they end.
67
+ // A mask can uncover a home path its text was hiding, so passes repeat until one changes nothing; each takes a
68
+ // separator out, so they end.
63
69
  while (next !== out) {
64
70
  out = next;
65
71
  next = maskOnce(out);
@@ -2,7 +2,9 @@
2
2
  export declare function hookPayloadSessionId(stdinText: string | undefined, requiredSource?: string | null): string | null;
3
3
  /** A hook payload's string `field` as sent, or null when the payload or the field is missing or not a string. */
4
4
  export declare function hookPayloadString(stdinText: string | undefined, field: string): string | null;
5
- /** Whether a hook fired inside a sub-agent, the only payload with `agent_id` (https://code.claude.com/docs/en/hooks#common-input-fields).
5
+ /**
6
+ * Whether a hook fired inside a sub-agent, the only payload with `agent_id`
7
+ * (https://code.claude.com/docs/en/hooks#common-input-fields).
6
8
  * Its `session_id` is the parent's, so a sub-agent's blocks and compactions must not count as the parent's. */
7
9
  export declare function isSubagentPayload(stdinText: string | undefined): boolean;
8
10
  //# sourceMappingURL=hook-payload.d.ts.map
@@ -28,7 +28,9 @@ export function hookPayloadString(stdinText, field) {
28
28
  const value = parseHookPayload(stdinText)?.[field];
29
29
  return isJsonString(value) ? value : null;
30
30
  }
31
- /** Whether a hook fired inside a sub-agent, the only payload with `agent_id` (https://code.claude.com/docs/en/hooks#common-input-fields).
31
+ /**
32
+ * Whether a hook fired inside a sub-agent, the only payload with `agent_id`
33
+ * (https://code.claude.com/docs/en/hooks#common-input-fields).
32
34
  * Its `session_id` is the parent's, so a sub-agent's blocks and compactions must not count as the parent's. */
33
35
  export function isSubagentPayload(stdinText) {
34
36
  const agentId = parseHookPayload(stdinText)?.agent_id;
@@ -1,17 +1,20 @@
1
- /** One retry policy for outbound HTTP: a timeout on every attempt, backoff on 429 and 5xx, and on a dropped connection where a replay is safe. */
1
+ /** One retry policy for outbound HTTP: a timeout on every attempt, backoff on 429 and 5xx, and on a dropped
2
+ * connection where a replay is safe. */
2
3
  export interface RetryPolicy {
3
4
  /** Per-attempt limit; a stalled peer ends as a thrown `TimeoutError`, never a hang. */
4
5
  timeoutMs: number;
5
6
  /** Total attempts including the first. */
6
7
  attempts?: number;
7
- /** Limit on the whole call, waits included: an attempt is cut short at it and no retry starts whose wait would reach it. */
8
+ /** Limit on the whole call, waits included: an attempt is cut short at it and no retry starts whose wait would
9
+ * reach it. */
8
10
  totalMs?: number;
9
11
  baseDelayMs?: number;
10
12
  /** A Retry-After longer than this hands the response back, so a caller with its own long pause keeps it. */
11
13
  maxDelayMs?: number;
12
14
  /** Which responses to retry; defaults to 429 and 5xx. A write narrows it to answers that prove nothing committed. */
13
15
  retryOn?: (res: Response) => boolean;
14
- /** Also retry a dropped connection or a timed-out attempt. On for GET and HEAD; any other method turns it on only when a replay cannot commit twice. */
16
+ /** Also retry a dropped connection or a timed-out attempt. On for GET and HEAD; any other method turns it on only
17
+ * when a replay cannot commit twice. */
15
18
  retryTransport?: boolean;
16
19
  fetchFn?: typeof fetch;
17
20
  /** Replaces the timer between attempts. A caller `signal` that aborts still ends the wait at once. */
@@ -20,14 +23,17 @@ export interface RetryPolicy {
20
23
  /** Replaces the clock `totalMs` is measured on. */
21
24
  now?: () => number;
22
25
  }
23
- /** LLM calls (consolidation refine, DAG summaries, fact extraction) share one budget; `HIPPO_LLM_TIMEOUT_MS` overrides it. */
26
+ /** LLM calls (consolidation refine, DAG summaries, fact extraction) share one budget; `HIPPO_LLM_TIMEOUT_MS`
27
+ * overrides it. */
24
28
  export declare function llmTimeoutMs(): number;
25
- /** One LLM call with its retries: two full attempts and the longest wait between them, where three slow failures would hold a sleep for 3x the timeout. */
29
+ /** One LLM call with its retries: two full attempts and the longest wait between them, where three slow failures
30
+ * would hold a sleep for 3x the timeout. */
26
31
  export declare function llmTotalMs(): number;
27
32
  export declare function isRetryableStatus(status: number): boolean;
28
33
  /** Retry-After as milliseconds: delta-seconds or an HTTP date; null when absent or unreadable. */
29
34
  export declare function parseRetryAfterMs(header: string | null, now?: number): number | null;
30
- /** A dropped connection, a DNS hiccup or a timed-out attempt: faults a second try can clear. A refused connection is not one. */
35
+ /** A dropped connection, a DNS hiccup or a timed-out attempt: faults a second try can clear. A refused connection is
36
+ * not one. */
31
37
  export declare function isTransientTransportError<E>(err: E): boolean;
32
38
  /** `fetch` with a per-attempt timeout and up to `attempts` tries on 429, 5xx and (see
33
39
  * `retryTransport`) transport faults; the last response or error comes back as is. */
@@ -1,4 +1,5 @@
1
- /** One retry policy for outbound HTTP: a timeout on every attempt, backoff on 429 and 5xx, and on a dropped connection where a replay is safe. */
1
+ /** One retry policy for outbound HTTP: a timeout on every attempt, backoff on 429 and 5xx, and on a dropped
2
+ * connection where a replay is safe. */
2
3
  import { MINUTE_MS } from './time.js';
3
4
  import { envLlmTimeoutMs } from './env.js';
4
5
  import { errorCode, errorFields, log } from './log.js';
@@ -6,11 +7,13 @@ const DEFAULT_ATTEMPTS = 3;
6
7
  const DEFAULT_BASE_DELAY_MS = 250;
7
8
  const DEFAULT_MAX_DELAY_MS = 8_000;
8
9
  const DEFAULT_LLM_TIMEOUT_MS = MINUTE_MS;
9
- /** LLM calls (consolidation refine, DAG summaries, fact extraction) share one budget; `HIPPO_LLM_TIMEOUT_MS` overrides it. */
10
+ /** LLM calls (consolidation refine, DAG summaries, fact extraction) share one budget; `HIPPO_LLM_TIMEOUT_MS`
11
+ * overrides it. */
10
12
  export function llmTimeoutMs() {
11
13
  return envLlmTimeoutMs() ?? DEFAULT_LLM_TIMEOUT_MS;
12
14
  }
13
- /** One LLM call with its retries: two full attempts and the longest wait between them, where three slow failures would hold a sleep for 3x the timeout. */
15
+ /** One LLM call with its retries: two full attempts and the longest wait between them, where three slow failures
16
+ * would hold a sleep for 3x the timeout. */
14
17
  export function llmTotalMs() {
15
18
  return 2 * llmTimeoutMs() + DEFAULT_MAX_DELAY_MS;
16
19
  }
@@ -31,7 +34,8 @@ export function parseRetryAfterMs(header, now = Date.now()) {
31
34
  const TRANSIENT_CODES = new Set([
32
35
  'ECONNRESET', 'ETIMEDOUT', 'EAI_AGAIN', 'UND_ERR_SOCKET', 'UND_ERR_CONNECT_TIMEOUT', 'UND_ERR_HEADERS_TIMEOUT',
33
36
  ]);
34
- /** A dropped connection, a DNS hiccup or a timed-out attempt: faults a second try can clear. A refused connection is not one. */
37
+ /** A dropped connection, a DNS hiccup or a timed-out attempt: faults a second try can clear. A refused connection is
38
+ * not one. */
35
39
  export function isTransientTransportError(err) {
36
40
  if (!(err instanceof Error))
37
41
  return false;
@@ -58,7 +62,11 @@ function redactedTarget(url) {
58
62
  function logRetry(init, url, reason, attempt, attempts, delayMs) {
59
63
  // Debug: an attempt that may still succeed is not a warning, and the caller reports the final failure.
60
64
  log.debug('http retry', {
61
- method: (init.method ?? 'GET').toUpperCase(), target: redactedTarget(url), reason, attempt: `${attempt}/${attempts}`, delayMs: Math.round(delayMs),
65
+ method: (init.method ?? 'GET').toUpperCase(),
66
+ target: redactedTarget(url),
67
+ reason,
68
+ attempt: `${attempt}/${attempts}`,
69
+ delayMs: Math.round(delayMs),
62
70
  });
63
71
  }
64
72
  // `cancel` clears the timer, so a wait the caller left does not keep the process alive.
@@ -66,7 +74,8 @@ const timerSleep = (ms, cancel) => new Promise((resolve) => {
66
74
  const timer = setTimeout(resolve, ms);
67
75
  cancel?.addEventListener('abort', () => clearTimeout(timer), { once: true });
68
76
  });
69
- /** The wait between attempts. With a caller signal it ends the moment that signal aborts and rejects with its reason, so no further attempt starts. */
77
+ /** The wait between attempts. With a caller signal it ends the moment that signal aborts and rejects with its
78
+ * reason, so no further attempt starts. */
70
79
  async function backoffWait(ms, sleep, signal) {
71
80
  if (!signal)
72
81
  return (sleep ?? timerSleep)(ms);
@@ -132,6 +141,7 @@ export async function fetchWithRetry(url, init, policy) {
132
141
  await res.body?.cancel();
133
142
  }
134
143
  catch (err) {
144
+ // Best-effort: the response is spent either way, so a failed cancel only leaves the socket to idle out.
135
145
  log.debug('http retry: body cancel failed', errorFields(err));
136
146
  }
137
147
  logRetry(init, url, `status ${res.status}`, attempt, attempts, delay);
@@ -10,7 +10,10 @@ export declare class HttpError extends Error {
10
10
  readonly retryAfterSec: number | undefined;
11
11
  constructor(status: number, message: string, retryAfterSec?: number);
12
12
  }
13
- /** A request, or a store call it waited on, ran past the request's deadline; the reply carries `code` so a client branches without parsing prose. */
13
+ /**
14
+ * A request, or a store call it waited on, ran past the request's deadline; the reply carries `code` so a client
15
+ * branches without parsing prose.
16
+ */
14
17
  export declare class DeadlineExceededError extends HttpError {
15
18
  readonly code = "deadline_exceeded";
16
19
  constructor(message: string);
@@ -25,7 +28,10 @@ export declare const INTERNAL_ERROR_MESSAGE = "internal server error";
25
28
  export declare const STORE_NOT_PORTED_MESSAGE = "store_not_ported";
26
29
  /** Serialises before the head goes out, so a body that is not JSON still reaches the caller's error reply. */
27
30
  export declare function sendJson<T>(res: ServerResponse, status: number, body: T): void;
28
- /** How long any route waits for a request body, so a client that sends headers and then stalls cannot hold a request open: 30 s, or HIPPO_BODY_TIMEOUT_MS. */
31
+ /**
32
+ * How long any route waits for a request body, so a client that sends headers and then stalls cannot hold a request
33
+ * open: 30 s, or HIPPO_BODY_TIMEOUT_MS.
34
+ */
29
35
  export declare function bodyDeadlineMs(): number;
30
36
  export interface ReadBodyOpts {
31
37
  /** Defaults to 1 MB. */
@@ -33,7 +39,10 @@ export interface ReadBodyOpts {
33
39
  /** Fails with BodyTimeoutError when the whole body has not arrived by then; defaults to bodyDeadlineMs(). */
34
40
  deadlineMs?: number;
35
41
  }
36
- /** The body as text, refused mid-stream past maxBytes and past deadlineMs, so an oversized or slow sender cannot tie up the server. */
42
+ /**
43
+ * The body as text, refused mid-stream past maxBytes and past deadlineMs, so an oversized or slow sender cannot tie up
44
+ * the server.
45
+ */
37
46
  export declare function readBody(req: IncomingMessage, { maxBytes, deadlineMs }?: ReadBodyOpts): Promise<string>;
38
47
  export declare function closeAfterReply(req: IncomingMessage): void;
39
48
  export declare const LOOPBACK_HOST_HEADER: RegExp;
@@ -48,8 +57,14 @@ export interface WebhookRequest {
48
57
  webhookBodyDeadlineMs?: number;
49
58
  };
50
59
  }
51
- /** Call before refusing a webhook unread: a caller still sending its body loses the socket once the reply is out, as it does after a 413. */
60
+ /**
61
+ * Call before refusing a webhook unread: a caller still sending its body loses the socket once the reply is out, as it
62
+ * does after a 413.
63
+ */
52
64
  export declare function closeIfBodyUnread({ req, res }: WebhookRequest): void;
53
- /** A webhook's raw body, exactly as sent, for the receiver's HMAC check; call it only once a secret is configured and the signature headers are present. */
65
+ /**
66
+ * A webhook's raw body, exactly as sent, for the receiver's HMAC check; call it only once a secret is configured and
67
+ * the signature headers are present.
68
+ */
54
69
  export declare function readWebhookBody({ req, opts }: WebhookRequest): Promise<string>;
55
70
  //# sourceMappingURL=http-util.d.ts.map
@@ -11,7 +11,8 @@ export const MAX_BODY_BYTES = 1024 * 1024;
11
11
  function sizeLabel(bytes) {
12
12
  return bytes % (1024 * 1024) === 0 ? `${bytes / (1024 * 1024)}MB` : `${Math.ceil(bytes / 1024)}KB`;
13
13
  }
14
- // How long a refused upload is still read and discarded after its reply, so a client that never stops cannot hold the socket.
14
+ // How long a refused upload is still read and discarded after its reply, so a client that never stops cannot hold the
15
+ // socket.
15
16
  const REFUSED_UPLOAD_LINGER_MS = 2000;
16
17
  export const JSON_HEADERS = { 'content-type': 'application/json' };
17
18
  export class HttpError extends Error {
@@ -24,7 +25,10 @@ export class HttpError extends Error {
24
25
  this.retryAfterSec = retryAfterSec;
25
26
  }
26
27
  }
27
- /** A request, or a store call it waited on, ran past the request's deadline; the reply carries `code` so a client branches without parsing prose. */
28
+ /**
29
+ * A request, or a store call it waited on, ran past the request's deadline; the reply carries `code` so a client
30
+ * branches without parsing prose.
31
+ */
28
32
  export class DeadlineExceededError extends HttpError {
29
33
  code = 'deadline_exceeded';
30
34
  constructor(message) {
@@ -48,11 +52,17 @@ export function sendJson(res, status, body) {
48
52
  res.end(text);
49
53
  }
50
54
  const DEFAULT_BODY_DEADLINE_MS = 30_000;
51
- /** How long any route waits for a request body, so a client that sends headers and then stalls cannot hold a request open: 30 s, or HIPPO_BODY_TIMEOUT_MS. */
55
+ /**
56
+ * How long any route waits for a request body, so a client that sends headers and then stalls cannot hold a request
57
+ * open: 30 s, or HIPPO_BODY_TIMEOUT_MS.
58
+ */
52
59
  export function bodyDeadlineMs() {
53
60
  return envBodyTimeoutMs() ?? DEFAULT_BODY_DEADLINE_MS;
54
61
  }
55
- /** The body as text, refused mid-stream past maxBytes and past deadlineMs, so an oversized or slow sender cannot tie up the server. */
62
+ /**
63
+ * The body as text, refused mid-stream past maxBytes and past deadlineMs, so an oversized or slow sender cannot tie up
64
+ * the server.
65
+ */
56
66
  export function readBody(req, { maxBytes = MAX_BODY_BYTES, deadlineMs = bodyDeadlineMs() } = {}) {
57
67
  return new Promise((resolve, reject) => {
58
68
  const chunks = [];
@@ -63,7 +73,8 @@ export function readBody(req, { maxBytes = MAX_BODY_BYTES, deadlineMs = bodyDead
63
73
  chunks.length = 0;
64
74
  reject(err);
65
75
  };
66
- // Not for-await: leaving that loop early destroys the request, so the socket stops reading and the 413 caller cannot close it cleanly.
76
+ // Not for-await: leaving that loop early destroys the request, so the socket stops reading and the 413 caller
77
+ // cannot close it cleanly.
67
78
  const onData = (chunk) => {
68
79
  total += chunk.length;
69
80
  if (total <= maxBytes) {
@@ -84,7 +95,8 @@ export function readBody(req, { maxBytes = MAX_BODY_BYTES, deadlineMs = bodyDead
84
95
  });
85
96
  });
86
97
  }
87
- // A full close with request bytes unread sends a TCP reset, which discards the reply before the client reads it (RFC 9112 9.6).
98
+ // A full close with request bytes unread sends a TCP reset, which discards the reply before the client reads it (RFC
99
+ // 9112 9.6).
88
100
  export function closeAfterReply(req) {
89
101
  const socket = req.socket;
90
102
  req.resume();
@@ -112,16 +124,23 @@ function originHost(origin) {
112
124
  return null;
113
125
  }
114
126
  }
115
- // A webhook route takes no key, so anyone holding a signature header could otherwise keep a socket open with a body that never ends.
127
+ // A webhook route takes no key, so anyone holding a signature header could otherwise keep a socket open with a body
128
+ // that never ends.
116
129
  const WEBHOOK_BODY_DEADLINE_MS = 10_000;
117
- /** Call before refusing a webhook unread: a caller still sending its body loses the socket once the reply is out, as it does after a 413. */
130
+ /**
131
+ * Call before refusing a webhook unread: a caller still sending its body loses the socket once the reply is out, as it
132
+ * does after a 413.
133
+ */
118
134
  export function closeIfBodyUnread({ req, res }) {
119
135
  res.once('finish', () => {
120
136
  if (!req.complete)
121
137
  closeAfterReply(req);
122
138
  });
123
139
  }
124
- /** A webhook's raw body, exactly as sent, for the receiver's HMAC check; call it only once a secret is configured and the signature headers are present. */
140
+ /**
141
+ * A webhook's raw body, exactly as sent, for the receiver's HMAC check; call it only once a secret is configured and
142
+ * the signature headers are present.
143
+ */
125
144
  export function readWebhookBody({ req, opts }) {
126
145
  return readBody(req, { deadlineMs: opts.webhookBodyDeadlineMs ?? WEBHOOK_BODY_DEADLINE_MS });
127
146
  }
@@ -12,6 +12,9 @@ export declare function isJsonObject(value: JsonValue | undefined): value is {
12
12
  export declare function isJsonObjectLiteral(value: JsonValue | undefined): value is {
13
13
  [key: string]: JsonValue;
14
14
  };
15
- /** Windows PowerShell 5.1 saves JSON with a UTF-8 byte order mark that JSON.parse rejects, so one leading mark is dropped. */
15
+ /**
16
+ * Windows PowerShell 5.1 saves JSON with a UTF-8 byte order mark that JSON.parse rejects, so one leading mark is
17
+ * dropped.
18
+ */
16
19
  export declare function readJsonFile(file: string): JsonValue;
17
20
  //# sourceMappingURL=json.d.ts.map
package/dist/util/json.js CHANGED
@@ -17,7 +17,10 @@ export function isJsonObject(value) {
17
17
  export function isJsonObjectLiteral(value) {
18
18
  return value !== undefined && value !== null && !Array.isArray(value) && value.constructor === Object;
19
19
  }
20
- /** Windows PowerShell 5.1 saves JSON with a UTF-8 byte order mark that JSON.parse rejects, so one leading mark is dropped. */
20
+ /**
21
+ * Windows PowerShell 5.1 saves JSON with a UTF-8 byte order mark that JSON.parse rejects, so one leading mark is
22
+ * dropped.
23
+ */
21
24
  export function readJsonFile(file) {
22
25
  const text = fs.readFileSync(file, 'utf8');
23
26
  return JSON.parse(text.codePointAt(0) === 0xfeff ? text.slice(1) : text);
@@ -1,4 +1,5 @@
1
- // Keyset paging for list queries ordered by (sort key DESC, id DESC), so a page never skips or repeats a row when rows arrive between requests.
1
+ // Keyset paging for list queries ordered by (sort key DESC, id DESC), so a page never skips or repeats a row when rows
2
+ // arrive between requests.
2
3
  /** An ` AND ...` WHERE fragment and its params selecting rows strictly after `after`; empty when `after` is unset. */
3
4
  export function keysetAfter(sortCol, idCol, after) {
4
5
  if (!after)
@@ -1,8 +1,10 @@
1
- // Cap for id-shaped request fields (ids, tenant, session, scope, class): far above real values, small enough to bound logs and indexes.
1
+ // Cap for id-shaped request fields (ids, tenant, session, scope, class): far above real values, small enough to bound
2
+ // logs and indexes.
2
3
  export const MAX_ID_LEN = 256;
3
4
  // Page size every list surface (CLI, HTTP, store) falls back to when the caller names none.
4
5
  export const DEFAULT_LIST_LIMIT = 100;
5
- // Ceiling for a caller-named list page; SQLite `LIMIT ?` and one response's size bound it, and every list surface shares it.
6
+ // Ceiling for a caller-named list page; SQLite `LIMIT ?` and one response's size bound it, and every list surface
7
+ // shares it.
6
8
  export const MAX_LIST_LIMIT = 1000;
7
9
  /** The one list-limit rule: absent means the default; a positive integer up to the ceiling passes.
8
10
  * Anything else returns undefined, so each surface words its own error. */
@@ -1,7 +1,8 @@
1
1
  /** Leveled stderr logger. `HIPPO_LOG` picks the threshold (error, warn, info,
2
2
  * debug); unset or unknown means warn. `HIPPO_LOG_FORMAT=json` writes JSON lines. */
3
3
  export type LogLevel = 'error' | 'warn' | 'info' | 'debug';
4
- /** Extra key=value pairs appended to the line. `ts` and, inside a request, `requestId` are added to every line written. */
4
+ /** Extra key=value pairs appended to the line. `ts` and, inside a request, `requestId` are added to every line
5
+ * written. */
5
6
  export interface LogFields {
6
7
  ts?: string;
7
8
  requestId?: string;
@@ -14,10 +15,15 @@ export declare function isLevelEnabled(level: LogLevel): boolean;
14
15
  export declare function formatLogLine(level: LogLevel, message: string, fields?: LogFields): string;
15
16
  /** One JSON object per line for a log collector; JSON escaping keeps a multi-line value on the one line. */
16
17
  export declare function formatLogJson(level: LogLevel, message: string, fields?: LogFields): string;
17
- /** Write `message` at `level` the first time `key` is seen in this process; later calls are dropped. Past the key cap an unseen key logs at debug. */
18
+ /** Write `message` at `level` the first time `key` is seen in this process; later calls are dropped. Past the key
19
+ * cap an unseen key logs at debug. */
18
20
  declare function once(key: string, level: LogLevel, message: string, fields?: LogFields): void;
19
- /** Warn the first time `key` is seen in this process, then log at debug, so a repeating failure stays findable without flooding stderr. */
21
+ /** Warn the first time `key` is seen in this process, then log at debug, so a repeating failure stays findable
22
+ * without flooding stderr. */
20
23
  declare function warnThenDebug(key: string, message: string, fields?: LogFields): void;
24
+ /** Warn the first time `key` is seen, then count repeats at debug and warn again with the running count on every
25
+ * 100th, so a failure that keeps happening stays visible without flooding stderr. */
26
+ declare function warnThenSample(key: string, message: string, fields?: LogFields): void;
21
27
  /** The class name and stack of a thrown value, as log fields; a non-Error throw has no stack. */
22
28
  export declare function errorFields<E>(err: E): LogFields;
23
29
  export declare const log: {
@@ -27,11 +33,13 @@ export declare const log: {
27
33
  readonly debug: (message: string, fields?: LogFields) => void;
28
34
  readonly once: typeof once;
29
35
  readonly warnThenDebug: typeof warnThenDebug;
36
+ readonly warnThenSample: typeof warnThenSample;
30
37
  };
31
- /** Message for a caught value of unknown shape. `cause` names the sanctioned unknown-input case (error-cause enrichment). */
38
+ /** Message for a caught value of unknown shape. `cause` names the sanctioned unknown-input case (error-cause
39
+ * enrichment). */
32
40
  export declare function errorMessage(cause: unknown): string;
33
41
  /** One post-compact failure, told once to the hook's output (`say`) and once to the structured log. */
34
- export declare function reportCompactionFailure(say: (message: string) => void, step: string, reason: string): void;
42
+ export declare function reportCompactionFailure(say: (message: string) => void, step: string, reason: string, fields?: LogFields): void;
35
43
  /** The string `code` of a caught value (an errno name such as EACCES), or '' when it has none. */
36
44
  export declare function errorCode(cause: unknown): string;
37
45
  /** Test hook: forget which once-keys have fired. */
package/dist/util/log.js CHANGED
@@ -41,7 +41,8 @@ function write(level, message, fields) {
41
41
  const ONCE_KEY_CAP = 1_000;
42
42
  const onceKeys = new Set();
43
43
  let onceCapReported = false;
44
- /** 'new' records the key and 'seen' is a repeat. 'uncounted' is an unseen key once the set is full: it is not recorded, and the first one says so at warn. */
44
+ /** 'new' records the key and 'seen' is a repeat. 'uncounted' is an unseen key once the set is full: it is not
45
+ * recorded, and the first one says so at warn. */
45
46
  function sightOnceKey(key) {
46
47
  if (onceKeys.has(key))
47
48
  return 'seen';
@@ -55,16 +56,35 @@ function sightOnceKey(key) {
55
56
  }
56
57
  return 'uncounted';
57
58
  }
58
- /** Write `message` at `level` the first time `key` is seen in this process; later calls are dropped. Past the key cap an unseen key logs at debug. */
59
+ /** Write `message` at `level` the first time `key` is seen in this process; later calls are dropped. Past the key
60
+ * cap an unseen key logs at debug. */
59
61
  function once(key, level, message, fields) {
60
62
  const sighting = sightOnceKey(key);
61
63
  if (sighting !== 'seen')
62
64
  write(sighting === 'new' ? level : 'debug', message, fields);
63
65
  }
64
- /** Warn the first time `key` is seen in this process, then log at debug, so a repeating failure stays findable without flooding stderr. */
66
+ /** Warn the first time `key` is seen in this process, then log at debug, so a repeating failure stays findable
67
+ * without flooding stderr. */
65
68
  function warnThenDebug(key, message, fields) {
66
69
  write(sightOnceKey(key) === 'new' ? 'warn' : 'debug', message, fields);
67
70
  }
71
+ const SAMPLE_EVERY = 100;
72
+ const repeatCounts = new Map();
73
+ /** Warn the first time `key` is seen, then count repeats at debug and warn again with the running count on every
74
+ * 100th, so a failure that keeps happening stays visible without flooding stderr. */
75
+ function warnThenSample(key, message, fields) {
76
+ if (sightOnceKey(key) === 'new') {
77
+ write('warn', message, fields);
78
+ return;
79
+ }
80
+ // Counts only keys sightOnceKey recorded, so the map is bounded by ONCE_KEY_CAP.
81
+ const seen = (repeatCounts.get(key) ?? 0) + 1;
82
+ repeatCounts.set(key, seen);
83
+ if (seen % SAMPLE_EVERY === 0)
84
+ write('warn', `${message} (${seen} more since the first warning)`, fields);
85
+ else
86
+ write('debug', message, fields);
87
+ }
68
88
  /** The class name and stack of a thrown value, as log fields; a non-Error throw has no stack. */
69
89
  export function errorFields(err) {
70
90
  if (!(err instanceof Error))
@@ -78,15 +98,17 @@ export const log = {
78
98
  debug: (message, fields) => write('debug', message, fields),
79
99
  once,
80
100
  warnThenDebug,
101
+ warnThenSample,
81
102
  };
82
- /** Message for a caught value of unknown shape. `cause` names the sanctioned unknown-input case (error-cause enrichment). */
103
+ /** Message for a caught value of unknown shape. `cause` names the sanctioned unknown-input case (error-cause
104
+ * enrichment). */
83
105
  export function errorMessage(cause) {
84
106
  return cause instanceof Error ? cause.message : String(cause);
85
107
  }
86
108
  /** One post-compact failure, told once to the hook's output (`say`) and once to the structured log. */
87
- export function reportCompactionFailure(say, step, reason) {
109
+ export function reportCompactionFailure(say, step, reason, fields) {
88
110
  say(`${step} failed: ${reason}`);
89
- log.error(`post-compact: ${step} failed: ${reason}`);
111
+ log.error(`post-compact: ${step} failed: ${reason}`, fields);
90
112
  }
91
113
  /** The string `code` of a caught value (an errno name such as EACCES), or '' when it has none. */
92
114
  export function errorCode(cause) {
@@ -95,6 +117,7 @@ export function errorCode(cause) {
95
117
  /** Test hook: forget which once-keys have fired. */
96
118
  export function resetLogOnce() {
97
119
  onceKeys.clear();
120
+ repeatCounts.clear();
98
121
  onceCapReported = false;
99
122
  }
100
123
  //# sourceMappingURL=log.js.map
@@ -0,0 +1,5 @@
1
+ /** A URL hostname that stays on this machine: localhost, ::1 (bracketed or not) or any 127.0.0.0/8 address. */
2
+ export declare function isLoopbackHost(hostname: string): boolean;
3
+ /** A socket remote address on this machine; Node reports a dual-stack IPv4 peer as '::ffff:127.x.x.x'. */
4
+ export declare function isLoopbackAddress(remoteAddress: string | undefined): boolean;
5
+ //# sourceMappingURL=net.d.ts.map