hippo-memory 1.68.0 → 1.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (864) hide show
  1. package/README.md +6 -3
  2. package/dist/agent-memories/apply.d.ts +3 -3
  3. package/dist/agent-memories/apply.js +16 -31
  4. package/dist/agent-memories/claude-code.d.ts +1 -3
  5. package/dist/agent-memories/claude-code.js +11 -7
  6. package/dist/agent-memories/copilot.d.ts +3 -1
  7. package/dist/agent-memories/copilot.js +5 -4
  8. package/dist/agent-memories/files.js +3 -2
  9. package/dist/agent-memories/gemini.js +6 -5
  10. package/dist/agent-memories/keys.js +3 -2
  11. package/dist/agent-memories/legacy.d.ts +2 -2
  12. package/dist/agent-memories/legacy.js +2 -2
  13. package/dist/agent-memories/report.d.ts +1 -1
  14. package/dist/agent-memories/report.js +1 -1
  15. package/dist/agent-memories/source.d.ts +1 -1
  16. package/dist/agent-memories/source.js +6 -5
  17. package/dist/agent-memories/sync.d.ts +1 -1
  18. package/dist/agent-memories/sync.js +24 -33
  19. package/dist/agent-memories/types.d.ts +1 -1
  20. package/dist/api/assemble.d.ts +2 -2
  21. package/dist/api/assemble.js +42 -32
  22. package/dist/api/audit.d.ts +4 -7
  23. package/dist/api/audit.js +6 -20
  24. package/dist/api/auth.d.ts +5 -18
  25. package/dist/api/auth.js +44 -194
  26. package/dist/api/auto-sleep.d.ts +13 -0
  27. package/dist/api/auto-sleep.js +32 -0
  28. package/dist/{availability.d.ts → api/availability.d.ts} +2 -2
  29. package/dist/{availability.js → api/availability.js} +12 -29
  30. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  31. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  32. package/dist/{context-render.js → api/context-render.js} +7 -6
  33. package/dist/api/context-select.d.ts +14 -4
  34. package/dist/api/context-select.js +50 -60
  35. package/dist/api/context-types.d.ts +5 -5
  36. package/dist/api/context.d.ts +2 -4
  37. package/dist/api/context.js +113 -85
  38. package/dist/api/dormant.d.ts +3 -3
  39. package/dist/api/dormant.js +38 -107
  40. package/dist/api/drill-down.d.ts +2 -2
  41. package/dist/api/drill-down.js +37 -65
  42. package/dist/api/forget.d.ts +4 -13
  43. package/dist/api/forget.js +13 -35
  44. package/dist/api/goals.d.ts +1 -1
  45. package/dist/api/goals.js +2 -2
  46. package/dist/api/index.d.ts +26 -0
  47. package/dist/api/index.js +29 -0
  48. package/dist/api/instruction-detect.js +74 -0
  49. package/dist/api/learn.js +63 -55
  50. package/dist/api/ledger-db.d.ts +20 -0
  51. package/dist/api/ledger-db.js +79 -0
  52. package/dist/api/on-store.d.ts +16 -0
  53. package/dist/api/on-store.js +36 -0
  54. package/dist/api/outcome.d.ts +9 -46
  55. package/dist/api/outcome.js +15 -57
  56. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  57. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  58. package/dist/api/promote.d.ts +7 -18
  59. package/dist/api/promote.js +30 -152
  60. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
  61. package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
  62. package/dist/api/quarantine.d.ts +5 -5
  63. package/dist/api/quarantine.js +30 -106
  64. package/dist/api/recall-core.d.ts +4 -0
  65. package/dist/api/recall-core.js +112 -0
  66. package/dist/{recall-history.js → api/recall-history.js} +30 -25
  67. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
  68. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
  69. package/dist/api/recall-record.d.ts +10 -13
  70. package/dist/api/recall-record.js +10 -30
  71. package/dist/api/recall-request.d.ts +2 -2
  72. package/dist/api/recall-request.js +3 -3
  73. package/dist/api/recall-types.d.ts +41 -16
  74. package/dist/api/recall.d.ts +1 -1
  75. package/dist/api/recall.js +39 -37
  76. package/dist/api/remember.d.ts +12 -13
  77. package/dist/api/remember.js +38 -27
  78. package/dist/api/session-owners.d.ts +4 -0
  79. package/dist/api/session-owners.js +17 -0
  80. package/dist/api/sleep-run.d.ts +7 -7
  81. package/dist/api/sleep-run.js +63 -75
  82. package/dist/api/sleep.d.ts +1 -1
  83. package/dist/api/tokens.d.ts +2 -2
  84. package/dist/api/tokens.js +9 -21
  85. package/dist/api/types.d.ts +2 -2
  86. package/dist/api/types.js +1 -1
  87. package/dist/capture/caller-session.d.ts +2 -2
  88. package/dist/capture/caller-session.js +8 -8
  89. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  90. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  91. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  92. package/dist/capture/command.d.ts +1 -1
  93. package/dist/capture/command.js +54 -41
  94. package/dist/capture/compact-resume-caller.d.ts +1 -1
  95. package/dist/capture/compact-resume-caller.js +7 -7
  96. package/dist/capture/compact.d.ts +4 -1
  97. package/dist/capture/compact.js +59 -22
  98. package/dist/capture/compaction-items-caller.d.ts +1 -1
  99. package/dist/capture/compaction-items-caller.js +7 -5
  100. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  101. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  102. package/dist/{compaction-record.js → capture/compaction-record.js} +48 -94
  103. package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
  104. package/dist/capture/copilot-transcript.d.ts +3 -0
  105. package/dist/capture/copilot-transcript.js +9 -2
  106. package/dist/capture/extract.js +2 -2
  107. package/dist/capture/failure-caller.d.ts +2 -2
  108. package/dist/capture/failure-caller.js +6 -6
  109. package/dist/capture/failure-reading.d.ts +2 -5
  110. package/dist/capture/failure-reading.js +11 -12
  111. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  112. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  113. package/dist/capture/pre-compact-caller.d.ts +1 -1
  114. package/dist/capture/pre-compact-caller.js +2 -2
  115. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +1 -5
  116. package/dist/{session-digest.js → capture/session-digest.js} +17 -23
  117. package/dist/capture/session-end-caller.d.ts +2 -2
  118. package/dist/capture/session-end-caller.js +1 -1
  119. package/dist/capture/session-texts.d.ts +1 -1
  120. package/dist/capture/session-texts.js +5 -5
  121. package/dist/capture/session-worker.d.ts +13 -0
  122. package/dist/capture/session-worker.js +196 -0
  123. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  124. package/dist/capture/transcript.js +68 -74
  125. package/dist/capture/working-state.d.ts +0 -3
  126. package/dist/capture/working-state.js +7 -7
  127. package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
  128. package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
  129. package/dist/cli/audit.d.ts +2 -2
  130. package/dist/cli/audit.js +77 -72
  131. package/dist/cli/auth.d.ts +2 -1
  132. package/dist/cli/auth.js +18 -20
  133. package/dist/cli/briefs.d.ts +4 -3
  134. package/dist/cli/briefs.js +59 -181
  135. package/dist/cli/card.d.ts +2 -1
  136. package/dist/cli/card.js +25 -23
  137. package/dist/{client.d.ts → cli/client.d.ts} +1 -1
  138. package/dist/{client.js → cli/client.js} +1 -1
  139. package/dist/cli/compact-resume-payload.d.ts +8 -0
  140. package/dist/cli/compact-resume-payload.js +39 -0
  141. package/dist/cli/context.d.ts +2 -13
  142. package/dist/cli/context.js +41 -71
  143. package/dist/cli/continuity.d.ts +6 -5
  144. package/dist/cli/continuity.js +109 -99
  145. package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
  146. package/dist/cli/curate.d.ts +9 -9
  147. package/dist/cli/curate.js +177 -149
  148. package/dist/cli/dag.d.ts +4 -4
  149. package/dist/cli/dag.js +46 -34
  150. package/dist/cli/decisions.d.ts +4 -3
  151. package/dist/cli/decisions.js +108 -218
  152. package/dist/cli/eval.d.ts +1 -3
  153. package/dist/cli/eval.js +43 -31
  154. package/dist/cli/explain.d.ts +1 -1
  155. package/dist/cli/explain.js +35 -19
  156. package/dist/cli/flag-values.d.ts +25 -0
  157. package/dist/cli/flag-values.js +103 -0
  158. package/dist/cli/flags.d.ts +303 -0
  159. package/dist/cli/flags.js +169 -0
  160. package/dist/cli/goals.d.ts +2 -1
  161. package/dist/cli/goals.js +39 -34
  162. package/dist/cli/hook-runtime.d.ts +49 -0
  163. package/dist/cli/hook-runtime.js +155 -0
  164. package/dist/cli/init.d.ts +2 -1
  165. package/dist/cli/init.js +151 -118
  166. package/dist/cli/install-steps.d.ts +7 -0
  167. package/dist/cli/install-steps.js +110 -0
  168. package/dist/cli/last-sleep.d.ts +2 -1
  169. package/dist/cli/last-sleep.js +9 -7
  170. package/dist/cli/maintenance.d.ts +5 -4
  171. package/dist/cli/maintenance.js +31 -27
  172. package/dist/cli/object-verbs.d.ts +40 -0
  173. package/dist/cli/object-verbs.js +65 -0
  174. package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
  175. package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
  176. package/dist/cli/playbooks.d.ts +4 -3
  177. package/dist/cli/playbooks.js +77 -280
  178. package/dist/cli/print.d.ts +18 -0
  179. package/dist/cli/print.js +85 -0
  180. package/dist/cli/projects.d.ts +2 -3
  181. package/dist/cli/projects.js +56 -49
  182. package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
  183. package/dist/cli/quality-repair-once.js +4 -4
  184. package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
  185. package/dist/cli/recall.d.ts +2 -4
  186. package/dist/cli/recall.js +101 -150
  187. package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
  188. package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
  189. package/dist/cli/remember.d.ts +1 -3
  190. package/dist/cli/remember.js +124 -103
  191. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
  192. package/dist/{scheduler.js → cli/scheduler.js} +13 -7
  193. package/dist/cli/serve.d.ts +1 -1
  194. package/dist/cli/serve.js +34 -4
  195. package/dist/cli/session-hooks.d.ts +4 -4
  196. package/dist/cli/session-hooks.js +265 -191
  197. package/dist/cli/setup.d.ts +2 -1
  198. package/dist/cli/setup.js +111 -45
  199. package/dist/cli/shared.d.ts +5 -95
  200. package/dist/cli/shared.js +18 -369
  201. package/dist/cli/slack.d.ts +2 -1
  202. package/dist/cli/slack.js +31 -55
  203. package/dist/cli/sleep-render.d.ts +4 -0
  204. package/dist/cli/sleep-render.js +61 -0
  205. package/dist/cli/sleep.d.ts +2 -8
  206. package/dist/cli/sleep.js +20 -76
  207. package/dist/cli/status.d.ts +3 -3
  208. package/dist/cli/status.js +39 -41
  209. package/dist/{stdin.js → cli/stdin.js} +6 -6
  210. package/dist/cli/transfer.d.ts +4 -4
  211. package/dist/cli/transfer.js +68 -42
  212. package/dist/cli/usage.js +8 -3
  213. package/dist/cli.d.ts +289 -5
  214. package/dist/cli.js +184 -117
  215. package/dist/connectors/dlq.d.ts +44 -0
  216. package/dist/connectors/dlq.js +30 -0
  217. package/dist/connectors/github/backfill.d.ts +1 -1
  218. package/dist/connectors/github/backfill.js +29 -66
  219. package/dist/connectors/github/cli-impl.js +59 -74
  220. package/dist/connectors/github/deletion.d.ts +5 -6
  221. package/dist/connectors/github/deletion.js +18 -52
  222. package/dist/connectors/github/dlq.d.ts +7 -61
  223. package/dist/connectors/github/dlq.js +19 -119
  224. package/dist/connectors/github/ingest.d.ts +2 -31
  225. package/dist/connectors/github/ingest.js +20 -82
  226. package/dist/connectors/github/octokit-client.d.ts +1 -1
  227. package/dist/connectors/github/octokit-client.js +2 -1
  228. package/dist/connectors/github/tenant-routing.d.ts +2 -2
  229. package/dist/connectors/github/tenant-routing.js +10 -36
  230. package/dist/connectors/github/transform.d.ts +1 -1
  231. package/dist/connectors/github/types.d.ts +1 -1
  232. package/dist/connectors/github/types.js +15 -18
  233. package/dist/connectors/github/webhook.d.ts +3 -2
  234. package/dist/connectors/github/webhook.js +84 -87
  235. package/dist/connectors/slack/backfill.d.ts +1 -1
  236. package/dist/connectors/slack/backfill.js +5 -29
  237. package/dist/connectors/slack/deletion.d.ts +4 -7
  238. package/dist/connectors/slack/deletion.js +20 -48
  239. package/dist/connectors/slack/dlq.d.ts +7 -49
  240. package/dist/connectors/slack/dlq.js +25 -118
  241. package/dist/connectors/slack/ingest.d.ts +5 -18
  242. package/dist/connectors/slack/ingest.js +27 -90
  243. package/dist/connectors/slack/signature.js +2 -1
  244. package/dist/connectors/slack/tenant-routing.d.ts +4 -1
  245. package/dist/connectors/slack/tenant-routing.js +13 -14
  246. package/dist/connectors/slack/transform.d.ts +1 -1
  247. package/dist/connectors/slack/types.d.ts +1 -1
  248. package/dist/connectors/slack/types.js +3 -12
  249. package/dist/connectors/slack/web-client.js +2 -2
  250. package/dist/connectors/slack/webhook.d.ts +3 -2
  251. package/dist/connectors/slack/webhook.js +75 -82
  252. package/dist/connectors/slack/workspaces.d.ts +4 -17
  253. package/dist/connectors/slack/workspaces.js +4 -34
  254. package/dist/consolidate/conflicts.d.ts +1 -1
  255. package/dist/consolidate/conflicts.js +4 -4
  256. package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
  257. package/dist/{dag.js → consolidate/dag.js} +60 -81
  258. package/dist/consolidate/decay.d.ts +2 -2
  259. package/dist/consolidate/decay.js +28 -22
  260. package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
  261. package/dist/consolidate/flush-units.d.ts +2 -2
  262. package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
  263. package/dist/consolidate/half-life-migration.js +106 -0
  264. package/dist/consolidate/llm-passes.js +8 -8
  265. package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
  266. package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
  267. package/dist/consolidate/merge.js +57 -54
  268. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  269. package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
  270. package/dist/consolidate/physics-pass.js +46 -46
  271. package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
  272. package/dist/{replay.js → consolidate/replay.js} +2 -2
  273. package/dist/consolidate/run.d.ts +7 -13
  274. package/dist/consolidate/run.js +6 -37
  275. package/dist/consolidate/sleep.d.ts +1 -1
  276. package/dist/consolidate/sleep.js +64 -134
  277. package/dist/{trace.js → consolidate/trace.js} +4 -6
  278. package/dist/consolidate/traces.js +34 -29
  279. package/dist/{ablation.js → core/ablation.js} +1 -1
  280. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  281. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  282. package/dist/{ambient.js → core/ambient.js} +12 -10
  283. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +16 -3
  284. package/dist/core/capture-contract.js +149 -0
  285. package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
  286. package/dist/{compare.js → core/compare.js} +10 -3
  287. package/dist/{config.d.ts → core/config.d.ts} +6 -6
  288. package/dist/{config.js → core/config.js} +99 -72
  289. package/dist/core/handoff.js +87 -0
  290. package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
  291. package/dist/{memory.d.ts → core/memory.d.ts} +19 -5
  292. package/dist/{memory.js → core/memory.js} +117 -82
  293. package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
  294. package/dist/{physics.js → core/physics.js} +2 -1
  295. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
  296. package/dist/{project-identity.js → core/project-identity.js} +5 -17
  297. package/dist/{project-remote.js → core/project-remote.js} +4 -4
  298. package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +5 -0
  299. package/dist/{prompt-recall.js → core/prompt-recall.js} +14 -1
  300. package/dist/{salience.js → core/salience.js} +35 -20
  301. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  302. package/dist/{search/types.js → core/search-types.js} +1 -1
  303. package/dist/core/session-digest-row.d.ts +5 -0
  304. package/dist/core/session-digest-row.js +6 -0
  305. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  306. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +5 -5
  307. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  308. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  309. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +9 -9
  310. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
  311. package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
  312. package/dist/db/backup.js +1 -1
  313. package/dist/db/busy.d.ts +18 -1
  314. package/dist/db/busy.js +74 -9
  315. package/dist/db/connect.d.ts +10 -2
  316. package/dist/db/connect.js +43 -10
  317. package/dist/db/index.d.ts +9 -0
  318. package/dist/db/index.js +8 -0
  319. package/dist/db/meta.d.ts +4 -0
  320. package/dist/db/meta.js +11 -1
  321. package/dist/db/migrate.d.ts +8 -1
  322. package/dist/db/migrate.js +25 -30
  323. package/dist/db/migrations/v08.js +1 -1
  324. package/dist/db/migrations/v14.js +39 -35
  325. package/dist/db/migrations/v16.js +29 -26
  326. package/dist/db/migrations/v18.js +6 -5
  327. package/dist/db/migrations/v20.js +4 -2
  328. package/dist/db/migrations/v22.js +39 -36
  329. package/dist/db/migrations/v24.js +27 -22
  330. package/dist/db/migrations/v29.js +37 -32
  331. package/dist/db/migrations/v31.js +36 -31
  332. package/dist/db/migrations/v35.js +1 -1
  333. package/dist/db/migrations/v39.js +1 -1
  334. package/dist/db/migrations/v40.js +15 -14
  335. package/dist/db/migrations/v43.js +7 -6
  336. package/dist/db/migrations/v44.js +1 -1
  337. package/dist/db/migrations/v45.js +1 -1
  338. package/dist/db/migrations/v46.js +1 -1
  339. package/dist/db/migrations/v47.js +1 -1
  340. package/dist/db/migrations/v48.js +1 -1
  341. package/dist/db/migrations/v49.js +1 -1
  342. package/dist/db/migrations/v50.js +8 -7
  343. package/dist/db/migrations/v52.js +1 -1
  344. package/dist/db/open.d.ts +9 -1
  345. package/dist/db/open.js +21 -4
  346. package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
  347. package/dist/{physics-state.js → db/physics-state.js} +9 -16
  348. package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
  349. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
  350. package/dist/db/request-stores.d.ts +15 -2
  351. package/dist/db/request-stores.js +37 -15
  352. package/dist/db/tables.d.ts +2 -0
  353. package/dist/db/tables.js +6 -0
  354. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +4 -2
  355. package/dist/{vector-store.js → db/vector-store.js} +76 -51
  356. package/dist/db/wal-checkpointer.d.ts +11 -0
  357. package/dist/db/wal-checkpointer.js +92 -0
  358. package/dist/doctor.js +105 -136
  359. package/dist/entry/json-hooks.d.ts +1 -1
  360. package/dist/entry/json-hooks.js +1 -1
  361. package/dist/entry/project-identity.d.ts +1 -1
  362. package/dist/entry/project-identity.js +1 -1
  363. package/dist/entry/session-text.d.ts +3 -3
  364. package/dist/entry/session-text.js +3 -3
  365. package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
  366. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
  367. package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
  368. package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
  369. package/dist/{eval.js → eval/eval.js} +29 -22
  370. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
  371. package/dist/{judgment.js → eval/judgment.js} +4 -9
  372. package/dist/extensions/openclaw-plugin/index.js +1 -2
  373. package/dist/graph/delta.d.ts +3 -2
  374. package/dist/graph/delta.js +9 -23
  375. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +6 -6
  376. package/dist/{graph-extract.js → graph/extract.js} +37 -52
  377. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
  378. package/dist/{graph-recall.js → graph/recall.js} +55 -36
  379. package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
  380. package/dist/{graph-stream.js → graph/stream.js} +9 -7
  381. package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
  382. package/dist/{graph-view.js → graph/view.js} +127 -167
  383. package/dist/graph/write.d.ts +4 -76
  384. package/dist/graph/write.js +13 -397
  385. package/dist/hooks/codex-session.js +1 -1
  386. package/dist/hooks/codex-wrapper.js +14 -15
  387. package/dist/hooks/copilot.d.ts +48 -13
  388. package/dist/hooks/copilot.js +124 -39
  389. package/dist/{cli → hooks}/hook-blocks.js +1 -1
  390. package/dist/hooks/json-hooks.d.ts +3 -1
  391. package/dist/hooks/json-hooks.js +40 -122
  392. package/dist/hooks/opencode.js +35 -27
  393. package/dist/hooks/shared.d.ts +7 -5
  394. package/dist/hooks/shared.js +19 -8
  395. package/dist/importers/core.d.ts +2 -6
  396. package/dist/importers/core.js +41 -39
  397. package/dist/importers/markdown-parse.d.ts +1 -10
  398. package/dist/importers/markdown-parse.js +2 -19
  399. package/dist/importers/markdown.js +2 -1
  400. package/dist/importers/sources.js +50 -46
  401. package/dist/importers/vault.js +71 -92
  402. package/dist/index.d.ts +22 -22
  403. package/dist/index.js +21 -21
  404. package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
  405. package/dist/{autolearn.js → learn/autolearn.js} +13 -11
  406. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  407. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  408. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  409. package/dist/learn/extract.js +125 -0
  410. package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
  411. package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
  412. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
  413. package/dist/{invalidation.js → learn/invalidation.js} +83 -99
  414. package/dist/mcp/admin-tools.d.ts +1 -1
  415. package/dist/mcp/admin-tools.js +37 -60
  416. package/dist/mcp/format.d.ts +5 -5
  417. package/dist/mcp/format.js +7 -6
  418. package/dist/mcp/framing.d.ts +6 -0
  419. package/dist/mcp/framing.js +11 -3
  420. package/dist/mcp/memory-tools.d.ts +2 -2
  421. package/dist/mcp/memory-tools.js +12 -31
  422. package/dist/mcp/protocol.d.ts +6 -10
  423. package/dist/mcp/protocol.js +8 -14
  424. package/dist/mcp/recall-tools.d.ts +2 -2
  425. package/dist/mcp/recall-tools.js +68 -50
  426. package/dist/mcp/request.js +65 -63
  427. package/dist/mcp/server.js +1 -1
  428. package/dist/mcp/session-state.d.ts +1 -2
  429. package/dist/mcp/session-state.js +2 -2
  430. package/dist/mcp/shared-gate.js +1 -1
  431. package/dist/mcp/stdio.js +69 -31
  432. package/dist/mcp/tool-args.js +2 -1
  433. package/dist/mcp/tools.js +2 -2
  434. package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
  435. package/dist/objects/customer-notes.js +112 -0
  436. package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
  437. package/dist/objects/decisions.js +101 -0
  438. package/dist/objects/descriptor.d.ts +52 -0
  439. package/dist/objects/descriptor.js +4 -0
  440. package/dist/objects/fields.d.ts +15 -0
  441. package/dist/objects/fields.js +21 -0
  442. package/dist/{incidents.d.ts → objects/incidents.d.ts} +17 -44
  443. package/dist/objects/incidents.js +130 -0
  444. package/dist/objects/lifecycle.d.ts +27 -0
  445. package/dist/objects/lifecycle.js +96 -0
  446. package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
  447. package/dist/objects/policies.js +189 -0
  448. package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
  449. package/dist/objects/processes.js +146 -0
  450. package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
  451. package/dist/objects/project-briefs.js +255 -0
  452. package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
  453. package/dist/objects/skills.js +156 -0
  454. package/dist/postinstall.js +4 -2
  455. package/dist/predictions/planning-fallacy.d.ts +4 -76
  456. package/dist/predictions/planning-fallacy.js +4 -129
  457. package/dist/rerankers/clef.d.ts +2 -6
  458. package/dist/rerankers/clef.js +27 -47
  459. package/dist/rerankers/cross-encoder.d.ts +0 -7
  460. package/dist/rerankers/cross-encoder.js +15 -23
  461. package/dist/rerankers/index.js +8 -7
  462. package/dist/rerankers/jev.d.ts +1 -4
  463. package/dist/rerankers/jev.js +30 -49
  464. package/dist/rerankers/llm.d.ts +2 -4
  465. package/dist/rerankers/llm.js +33 -50
  466. package/dist/rerankers/outage-warning.d.ts +7 -0
  467. package/dist/rerankers/outage-warning.js +31 -0
  468. package/dist/rerankers/remote.d.ts +3 -0
  469. package/dist/rerankers/remote.js +23 -0
  470. package/dist/rerankers/types.d.ts +1 -1
  471. package/dist/search/as-of.d.ts +1 -1
  472. package/dist/search/bm25-search.d.ts +2 -2
  473. package/dist/search/bm25-search.js +7 -7
  474. package/dist/search/bm25.d.ts +1 -1
  475. package/dist/search/bm25.js +1 -1
  476. package/dist/search/boosts.d.ts +5 -1
  477. package/dist/search/boosts.js +34 -13
  478. package/dist/search/breakdown.d.ts +2 -2
  479. package/dist/search/breakdown.js +2 -1
  480. package/dist/search/explain.d.ts +1 -1
  481. package/dist/search/explain.js +3 -2
  482. package/dist/search/finalize.d.ts +2 -2
  483. package/dist/search/finalize.js +4 -3
  484. package/dist/search/fusion.d.ts +1 -1
  485. package/dist/search/fusion.js +3 -3
  486. package/dist/search/hybrid-score.d.ts +2 -2
  487. package/dist/search/hybrid-score.js +1 -1
  488. package/dist/search/hybrid.d.ts +4 -4
  489. package/dist/search/hybrid.js +11 -8
  490. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  491. package/dist/{multihop.js → search/multihop.js} +7 -5
  492. package/dist/{path-context.js → search/path-context.js} +3 -1
  493. package/dist/search/physics-search.d.ts +4 -4
  494. package/dist/search/physics-search.js +15 -15
  495. package/dist/search/rerank.d.ts +3 -3
  496. package/dist/search/rerank.js +4 -3
  497. package/dist/search/temporal.d.ts +1 -1
  498. package/dist/search/temporal.js +5 -2
  499. package/dist/search/vector.d.ts +3 -3
  500. package/dist/search/vector.js +17 -11
  501. package/dist/server/auth.d.ts +1 -1
  502. package/dist/server/auth.js +26 -18
  503. package/dist/server/boot.d.ts +24 -0
  504. package/dist/server/boot.js +465 -0
  505. package/dist/server/client-ip.d.ts +5 -1
  506. package/dist/server/client-ip.js +18 -6
  507. package/dist/server/cursor.d.ts +1 -1
  508. package/dist/server/cursor.js +2 -3
  509. package/dist/server/deadline.d.ts +13 -0
  510. package/dist/server/deadline.js +45 -0
  511. package/dist/server/key-check-bounds.d.ts +8 -0
  512. package/dist/server/key-check-bounds.js +46 -0
  513. package/dist/server/lifecycle.js +1 -1
  514. package/dist/server/mcp-http.d.ts +1 -4
  515. package/dist/server/mcp-http.js +34 -24
  516. package/dist/server/ready.d.ts +7 -0
  517. package/dist/server/ready.js +38 -0
  518. package/dist/server/request.d.ts +10 -4
  519. package/dist/server/request.js +63 -12
  520. package/dist/server/route-table.d.ts +15 -0
  521. package/dist/server/route-table.js +209 -0
  522. package/dist/server/routes/admin.js +13 -8
  523. package/dist/server/routes/customer-notes.d.ts +5 -5
  524. package/dist/server/routes/customer-notes.js +32 -97
  525. package/dist/server/routes/decisions.d.ts +5 -5
  526. package/dist/server/routes/decisions.js +42 -105
  527. package/dist/server/routes/incidents.d.ts +5 -5
  528. package/dist/server/routes/incidents.js +42 -95
  529. package/dist/server/routes/memories.js +21 -20
  530. package/dist/server/routes/object-routes.d.ts +40 -0
  531. package/dist/server/routes/object-routes.js +80 -0
  532. package/dist/server/routes/policies.d.ts +6 -6
  533. package/dist/server/routes/policies.js +40 -124
  534. package/dist/server/routes/predictions.js +29 -45
  535. package/dist/server/routes/processes.d.ts +5 -5
  536. package/dist/server/routes/processes.js +38 -118
  537. package/dist/server/routes/project-briefs.d.ts +6 -6
  538. package/dist/server/routes/project-briefs.js +38 -110
  539. package/dist/server/routes/recall.js +14 -12
  540. package/dist/server/routes/skills.d.ts +6 -6
  541. package/dist/server/routes/skills.js +37 -125
  542. package/dist/{server-detect.js → server/server-detect.js} +3 -2
  543. package/dist/server/sleep-child.d.ts +2 -0
  544. package/dist/server/sleep-child.js +19 -0
  545. package/dist/server/sleep-offload.d.ts +20 -0
  546. package/dist/server/sleep-offload.js +70 -0
  547. package/dist/server/tls.d.ts +6 -0
  548. package/dist/server/tls.js +24 -0
  549. package/dist/server/types.d.ts +27 -8
  550. package/dist/server/validation.d.ts +3 -4
  551. package/dist/server/validation.js +6 -11
  552. package/dist/server.d.ts +41 -50
  553. package/dist/server.js +26 -560
  554. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
  555. package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
  556. package/dist/{scope.js → sharing/scope.js} +1 -1
  557. package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
  558. package/dist/{shared.js → sharing/shared.js} +100 -77
  559. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  560. package/dist/{ambient-store.js → store/ambient.js} +10 -10
  561. package/dist/store/audit-event.d.ts +12 -6
  562. package/dist/store/audit-event.js +6 -5
  563. package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
  564. package/dist/{audit.js → store/audit.js} +91 -6
  565. package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
  566. package/dist/{auth.js → store/auth.js} +100 -92
  567. package/dist/store/candidates.d.ts +23 -12
  568. package/dist/store/candidates.js +87 -35
  569. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
  570. package/dist/{card-detail.js → store/card-detail.js} +1 -1
  571. package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
  572. package/dist/{store-cards.js → store/cards.js} +85 -146
  573. package/dist/store/compactions.d.ts +78 -0
  574. package/dist/store/compactions.js +93 -0
  575. package/dist/store/conflicts.d.ts +22 -5
  576. package/dist/store/conflicts.js +160 -109
  577. package/dist/store/connectors/github.d.ts +84 -0
  578. package/dist/store/connectors/github.js +180 -0
  579. package/dist/store/connectors/slack.d.ts +69 -0
  580. package/dist/store/connectors/slack.js +177 -0
  581. package/dist/store/dashboard-reads.d.ts +27 -0
  582. package/dist/store/dashboard-reads.js +92 -0
  583. package/dist/store/delete-and-batch.d.ts +20 -24
  584. package/dist/store/delete-and-batch.js +64 -40
  585. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
  586. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
  587. package/dist/store/descendant-page.d.ts +12 -0
  588. package/dist/store/descendant-page.js +99 -0
  589. package/dist/store/diagnostics.d.ts +47 -0
  590. package/dist/store/diagnostics.js +51 -0
  591. package/dist/store/doctor-reads.d.ts +16 -0
  592. package/dist/store/doctor-reads.js +19 -0
  593. package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
  594. package/dist/{dormant.js → store/dormant.js} +151 -6
  595. package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
  596. package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
  597. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  598. package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
  599. package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
  600. package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
  601. package/dist/store/entry-reads.d.ts +46 -7
  602. package/dist/store/entry-reads.js +120 -21
  603. package/dist/store/entry-row.d.ts +8 -2
  604. package/dist/store/entry-row.js +28 -8
  605. package/dist/store/entry-writes.d.ts +33 -4
  606. package/dist/store/entry-writes.js +108 -26
  607. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  608. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  609. package/dist/{goals.d.ts → store/goals.d.ts} +6 -46
  610. package/dist/{goals.js → store/goals.js} +45 -94
  611. package/dist/store/graph-queue.d.ts +29 -0
  612. package/dist/store/graph-queue.js +101 -0
  613. package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
  614. package/dist/{graph/read.js → store/graph-reads.js} +63 -115
  615. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
  616. package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
  617. package/dist/store/graph-view-rows.d.ts +12 -0
  618. package/dist/store/graph-view-rows.js +67 -0
  619. package/dist/store/graph-writes.d.ts +58 -0
  620. package/dist/store/graph-writes.js +256 -0
  621. package/dist/store/half-life.d.ts +34 -0
  622. package/dist/store/half-life.js +77 -0
  623. package/dist/store/handoffs.d.ts +6 -3
  624. package/dist/store/handoffs.js +70 -31
  625. package/dist/store/index-and-stats.d.ts +8 -1
  626. package/dist/store/index-and-stats.js +51 -48
  627. package/dist/store/index.d.ts +4 -0
  628. package/dist/store/index.js +3 -0
  629. package/dist/store/key-audit.d.ts +2 -2
  630. package/dist/store/key-audit.js +4 -4
  631. package/dist/store/key-writes.d.ts +12 -5
  632. package/dist/store/key-writes.js +30 -4
  633. package/dist/store/ledger-turn.d.ts +17 -0
  634. package/dist/store/ledger-turn.js +27 -0
  635. package/dist/store/markdown.d.ts +1 -1
  636. package/dist/store/markdown.js +4 -3
  637. package/dist/store/mirrors.d.ts +5 -7
  638. package/dist/store/mirrors.js +39 -25
  639. package/dist/store/object-types.d.ts +189 -0
  640. package/dist/store/object-types.js +4 -0
  641. package/dist/store/open.d.ts +8 -4
  642. package/dist/store/open.js +34 -23
  643. package/dist/store/planning-fallacy-evidence.d.ts +42 -0
  644. package/dist/store/planning-fallacy-evidence.js +81 -0
  645. package/dist/store/port.d.ts +646 -0
  646. package/dist/store/port.js +17 -0
  647. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
  648. package/dist/{predictions/store.js → store/predictions.js} +52 -67
  649. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  650. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  651. package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +5 -3
  652. package/dist/{raw-archive.js → store/raw-archive.js} +11 -5
  653. package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +4 -7
  654. package/dist/{recall-scope.js → store/recall-scope.js} +8 -9
  655. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
  656. package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
  657. package/dist/store/rejected-values.d.ts +55 -0
  658. package/dist/store/rejected-values.js +162 -0
  659. package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
  660. package/dist/{rejection.js → store/rejection.js} +3 -2
  661. package/dist/store/rows.d.ts +2 -3
  662. package/dist/store/rows.js +18 -11
  663. package/dist/store/search-rows.d.ts +15 -4
  664. package/dist/store/search-rows.js +43 -36
  665. package/dist/store/sessions.d.ts +18 -2
  666. package/dist/store/sessions.js +83 -46
  667. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  668. package/dist/store/sqlite/commit-watch.js +29 -0
  669. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  670. package/dist/store/sqlite/connector-events-group.js +50 -0
  671. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  672. package/dist/store/sqlite/connector-writes-group.js +65 -0
  673. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  674. package/dist/store/sqlite/dag-reads-group.js +45 -0
  675. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  676. package/dist/store/sqlite/entry-writes-group.js +170 -0
  677. package/dist/store/sqlite/error-codec.d.ts +17 -0
  678. package/dist/store/sqlite/error-codec.js +59 -0
  679. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  680. package/dist/store/sqlite/executor-counts.js +11 -0
  681. package/dist/store/sqlite/executor.d.ts +28 -0
  682. package/dist/store/sqlite/executor.js +286 -0
  683. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  684. package/dist/store/sqlite/graph-reads-group.js +18 -0
  685. package/dist/store/sqlite/local.d.ts +21 -0
  686. package/dist/store/sqlite/local.js +38 -0
  687. package/dist/store/sqlite/object-rows.d.ts +102 -0
  688. package/dist/store/sqlite/object-rows.js +218 -0
  689. package/dist/store/sqlite/objects-group.d.ts +20 -0
  690. package/dist/store/sqlite/objects-group.js +314 -0
  691. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  692. package/dist/store/sqlite/predictions-group.js +28 -0
  693. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  694. package/dist/store/sqlite/quarantine-group.js +38 -0
  695. package/dist/store/sqlite/store.d.ts +26 -0
  696. package/dist/store/sqlite/store.js +295 -0
  697. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  698. package/dist/store/sqlite/vector-pack.js +46 -0
  699. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  700. package/dist/store/sqlite/vector-reads-group.js +23 -0
  701. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  702. package/dist/store/sqlite/worker-entry.js +8 -0
  703. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  704. package/dist/store/sqlite/worker-jobs.js +116 -0
  705. package/dist/store/sqlite/worker-ops.d.ts +124 -0
  706. package/dist/store/sqlite/worker-ops.js +82 -0
  707. package/dist/store/sqlite/worker-store.d.ts +8 -0
  708. package/dist/store/sqlite/worker-store.js +76 -0
  709. package/dist/store/summaries.d.ts +2 -11
  710. package/dist/store/summaries.js +17 -44
  711. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  712. package/dist/store/tenant-lookup.d.ts +1 -1
  713. package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
  714. package/dist/{tenant.js → store/tenant.js} +1 -1
  715. package/dist/store/token-ledger-rows.d.ts +61 -0
  716. package/dist/store/token-ledger-rows.js +68 -0
  717. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +2 -9
  718. package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
  719. package/dist/store/tombstone-checks.d.ts +12 -0
  720. package/dist/store/tombstone-checks.js +31 -0
  721. package/dist/store/usage-reports.d.ts +7 -0
  722. package/dist/store/usage-reports.js +26 -0
  723. package/dist/store/vector-writes.d.ts +10 -3
  724. package/dist/store/vector-writes.js +35 -5
  725. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
  726. package/dist/{working-memory.js → store/working-memory.js} +39 -41
  727. package/dist/support-bundle.d.ts +1 -1
  728. package/dist/support-bundle.js +13 -33
  729. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  730. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  731. package/dist/trust/quarantine.d.ts +4 -0
  732. package/dist/trust/quarantine.js +8 -0
  733. package/dist/trust/reject-flow.d.ts +23 -0
  734. package/dist/trust/reject-flow.js +67 -0
  735. package/dist/util/anthropic-messages.d.ts +31 -0
  736. package/dist/util/anthropic-messages.js +46 -0
  737. package/dist/util/atomic-write.d.ts +3 -0
  738. package/dist/util/atomic-write.js +107 -0
  739. package/dist/util/crash-handlers.d.ts +5 -0
  740. package/dist/util/crash-handlers.js +30 -0
  741. package/dist/{env.d.ts → util/env.d.ts} +17 -2
  742. package/dist/{env.js → util/env.js} +22 -2
  743. package/dist/util/home-path.js +67 -0
  744. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
  745. package/dist/{http-retry.js → util/http-retry.js} +38 -7
  746. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  747. package/dist/{http-util.js → util/http-util.js} +31 -11
  748. package/dist/util/json.d.ts +17 -0
  749. package/dist/util/json.js +25 -0
  750. package/dist/{log.d.ts → util/log.d.ts} +5 -2
  751. package/dist/{log.js → util/log.js} +12 -3
  752. package/dist/util/real-path.d.ts +3 -0
  753. package/dist/util/real-path.js +15 -0
  754. package/dist/util/request-scope.d.ts +27 -0
  755. package/dist/util/request-scope.js +47 -0
  756. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  757. package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
  758. package/dist/util/stored-json.d.ts +9 -0
  759. package/dist/util/stored-json.js +8 -0
  760. package/dist/util/time.d.ts +2 -0
  761. package/dist/util/time.js +3 -0
  762. package/dist/util/token-text.d.ts +18 -0
  763. package/dist/util/token-text.js +23 -0
  764. package/dist/{version.d.ts → util/version.d.ts} +1 -1
  765. package/dist/{version.js → util/version.js} +1 -1
  766. package/extensions/openclaw-plugin/index.ts +1 -5
  767. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  768. package/extensions/openclaw-plugin/package.json +1 -1
  769. package/openclaw.plugin.json +1 -1
  770. package/package.json +2 -2
  771. package/dist/api.d.ts +0 -26
  772. package/dist/api.js +0 -29
  773. package/dist/capture-contract.js +0 -49
  774. package/dist/connectors/github/idempotency.d.ts +0 -19
  775. package/dist/connectors/github/idempotency.js +0 -27
  776. package/dist/connectors/slack/idempotency.d.ts +0 -17
  777. package/dist/connectors/slack/idempotency.js +0 -31
  778. package/dist/customer-notes.js +0 -336
  779. package/dist/db.d.ts +0 -9
  780. package/dist/db.js +0 -8
  781. package/dist/decisions.js +0 -326
  782. package/dist/extract.js +0 -133
  783. package/dist/graph/rows.d.ts +0 -45
  784. package/dist/graph/types.js +0 -11
  785. package/dist/half-life-migration.js +0 -182
  786. package/dist/handoff.js +0 -68
  787. package/dist/home-path.js +0 -24
  788. package/dist/incidents.js +0 -349
  789. package/dist/instruction-detect.js +0 -27
  790. package/dist/json.d.ts +0 -7
  791. package/dist/json.js +0 -11
  792. package/dist/ledger-db.d.ts +0 -10
  793. package/dist/ledger-db.js +0 -42
  794. package/dist/policies.js +0 -434
  795. package/dist/processes.js +0 -371
  796. package/dist/project-briefs.js +0 -523
  797. package/dist/reject-flow.d.ts +0 -69
  798. package/dist/reject-flow.js +0 -260
  799. package/dist/session-owners.d.ts +0 -7
  800. package/dist/session-owners.js +0 -54
  801. package/dist/skills.js +0 -367
  802. package/dist/store-port.d.ts +0 -191
  803. package/dist/store-port.js +0 -166
  804. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  805. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  806. /package/dist/{recall-history.d.ts → api/recall-history.d.ts} +0 -0
  807. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  808. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  809. /package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
  810. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  811. /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
  812. /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
  813. /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
  814. /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
  815. /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
  816. /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
  817. /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +0 -0
  818. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  819. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  820. /package/dist/{trace.d.ts → consolidate/trace.d.ts} +0 -0
  821. /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
  822. /package/dist/{ambient.d.ts → core/ambient.d.ts} +0 -0
  823. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  824. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  825. /package/dist/{card.d.ts → core/card.d.ts} +0 -0
  826. /package/dist/{card.js → core/card.js} +0 -0
  827. /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
  828. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  829. /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
  830. /package/dist/{physics-config.js → core/physics-config.js} +0 -0
  831. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  832. /package/dist/{salience.d.ts → core/salience.d.ts} +0 -0
  833. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  834. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  835. /package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +0 -0
  836. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  837. /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
  838. /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
  839. /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
  840. /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
  841. /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
  842. /package/dist/{rrf.js → search/rrf.js} +0 -0
  843. /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
  844. /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
  845. /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
  846. /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
  847. /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
  848. /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
  849. /package/dist/{yaml.js → store/yaml.js} +0 -0
  850. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  851. /package/dist/{escape.js → util/escape.js} +0 -0
  852. /package/dist/{home-path.d.ts → util/home-path.d.ts} +0 -0
  853. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  854. /package/dist/{keyset.js → util/keyset.js} +0 -0
  855. /package/dist/{same-text.js → util/same-text.js} +0 -0
  856. /package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +0 -0
  857. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  858. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  859. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  860. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  861. /package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
  862. /package/dist/{transcript-tail.js → util/transcript-tail.js} +0 -0
  863. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  864. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
@@ -1,23 +1,19 @@
1
1
  // First-class object verbs for project briefs and customer notes, plus the entity graph.
2
2
  import * as fs from 'fs';
3
3
  import { spawn } from 'child_process';
4
- import { extractPathTags } from '../path-context.js';
5
- import * as briefsModule from '../project-briefs.js';
6
- import * as customerNotesModule from '../customer-notes.js';
7
- import { extractGraph } from '../graph-extract.js';
8
- import { buildGraphModel, renderGraphHtml, renderGraphCanvas, DEFAULT_VIEW_LIMIT } from '../graph-view.js';
9
- import { resolveTenantId } from '../tenant.js';
4
+ import { extractPathTags } from '../search/path-context.js';
5
+ import * as briefsModule from '../objects/project-briefs.js';
6
+ import * as customerNotesModule from '../objects/customer-notes.js';
7
+ import { extractGraph } from '../graph/extract.js';
8
+ import { buildGraphModel, renderGraphHtml, renderGraphCanvas, DEFAULT_VIEW_LIMIT } from '../graph/view.js';
9
+ import { resolveTenantId } from '../store/tenant.js';
10
+ import { errorMessage, log } from '../util/log.js';
10
11
  import { printError } from './output.js';
12
+ import { nonEmptyStringFlag, boolFlag, stringFlag } from './flag-values.js';
11
13
  import { requireInit } from './shared.js';
12
- function parsePositiveBriefId(idRaw) {
13
- const s = String(idRaw ?? '').trim();
14
- const id = parseInt(s, 10);
15
- if (!/^\d+$/.test(s) || id <= 0) {
16
- printError(`Invalid brief id: "${idRaw}" (expected a positive integer).`);
17
- process.exit(1);
18
- }
19
- return id;
20
- }
14
+ import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail } from './object-verbs.js';
15
+ const BRIEF = { cmd: 'brief', noun: 'Project brief', idLabel: 'brief' };
16
+ const NOTE = { cmd: 'note', noun: 'Customer note', idLabel: 'note' };
21
17
  function printBriefRow(b) {
22
18
  console.log(`#${b.id} [${b.status}] v${b.version} repo="${b.repo}" memory=${b.memoryId ?? '-'}`);
23
19
  if (b.changeSummary)
@@ -31,38 +27,14 @@ function briefUsage() {
31
27
  printError(' hippo brief close <id>');
32
28
  printError(' hippo brief refresh "<repo>" [--dry-run] (auto-assemble the brief from the repo\'s receipts)');
33
29
  }
34
- function parseListLimit(flags) {
35
- const limitRaw = flags['limit'];
36
- const limit = limitRaw !== undefined ? parseInt(String(limitRaw), 10) : 100;
37
- if (!Number.isFinite(limit) || limit <= 0) {
38
- printError(`Invalid --limit: "${limitRaw}". Must be a positive integer.`);
39
- process.exit(1);
40
- }
41
- return limit;
42
- }
43
30
  function briefList(hippoRoot, tenantId, flags) {
44
- const statusRaw = flags['status'];
45
- const status = typeof statusRaw === 'string' ? statusRaw.trim() : 'all';
46
- const repoRaw = flags['repo'];
47
- const repo = typeof repoRaw === 'string' && repoRaw.trim() ? repoRaw.trim() : undefined;
48
- const limit = parseListLimit(flags);
49
- const opts = { limit, repo };
50
- if (status !== 'all') {
51
- if (!briefsModule.VALID_BRIEF_STATES.has(status)) {
52
- printError(`Invalid --status: "${status}". Must be one of: active | superseded | closed | all.`);
53
- process.exit(1);
54
- }
55
- opts.status = status;
56
- }
57
- const results = briefsModule.loadProjectBriefs(hippoRoot, tenantId, opts);
58
- if (results.length === 0) {
59
- console.log('No project briefs.');
60
- return;
61
- }
62
- console.log(`Found ${results.length} project briefs:
63
- `);
64
- for (const b of results)
65
- printBriefRow(b);
31
+ const repo = stringFlag(flags, 'repo')?.trim() || undefined;
32
+ listObjects(flags, {
33
+ plural: 'project briefs',
34
+ states: briefsModule.VALID_BRIEF_STATES,
35
+ load: (opts) => briefsModule.loadProjectBriefs(hippoRoot, tenantId, { ...opts, repo }),
36
+ printRow: printBriefRow,
37
+ });
66
38
  }
67
39
  function briefRefresh(hippoRoot, tenantId, args, flags) {
68
40
  const repoRaw = args[1];
@@ -70,7 +42,7 @@ function briefRefresh(hippoRoot, tenantId, args, flags) {
70
42
  printError('Usage: hippo brief refresh "<repo>" [--dry-run]');
71
43
  process.exit(1);
72
44
  }
73
- const dryRun = Boolean(flags['dry-run']);
45
+ const dryRun = boolFlag(flags, 'dry-run');
74
46
  try {
75
47
  if (dryRun) {
76
48
  const { markdown, receiptCount } = briefsModule.assembleBriefFromReceipts(hippoRoot, tenantId, repoRaw);
@@ -86,62 +58,33 @@ function briefRefresh(hippoRoot, tenantId, args, flags) {
86
58
  console.log(` memory: ${created.memoryId}`);
87
59
  }
88
60
  catch (e) {
89
- printError(e.message);
61
+ printError(errorMessage(e));
90
62
  process.exit(1);
91
63
  }
92
64
  }
93
65
  function briefGet(hippoRoot, tenantId, args) {
94
- const idRaw = args[1];
95
- if (!idRaw) {
96
- printError('Usage: hippo brief get <id>');
97
- process.exit(1);
98
- }
99
- const id = parsePositiveBriefId(idRaw);
100
- const b = briefsModule.loadProjectBriefById(hippoRoot, tenantId, id);
101
- if (!b) {
102
- printError(`Project brief ${id} not found.`);
103
- process.exit(1);
104
- }
66
+ const id = idArgOrExit(args, 'Usage: hippo brief get <id>', BRIEF.idLabel);
67
+ const b = foundOrExit(briefsModule.loadProjectBriefById(hippoRoot, tenantId, id), BRIEF.noun, id);
105
68
  console.log(`Project brief #${b.id}`);
106
69
  console.log(` repo: ${b.repo}`);
107
70
  console.log(` status: ${b.status}`);
108
71
  console.log(` version: ${b.version}`);
109
72
  console.log(` summary: ${b.summary}`);
110
- if (b.changeSummary)
111
- console.log(` change_summary: ${b.changeSummary}`);
112
- if (b.supersededBy !== null)
113
- console.log(` superseded_by: #${b.supersededBy}`);
114
- if (b.supersededAt)
115
- console.log(` superseded_at: ${b.supersededAt}`);
116
- if (b.closedAt)
117
- console.log(` closed_at: ${b.closedAt}`);
118
- if (b.memoryId)
119
- console.log(` memory: ${b.memoryId}`);
120
- console.log(` created: ${b.createdAt}`);
73
+ printLifecycleTail(b);
121
74
  }
122
75
  function briefSupersede(hippoRoot, tenantId, args, flags) {
123
- const idRaw = args[1];
124
- if (!idRaw) {
125
- printError('Usage: hippo brief supersede <id> --summary "<text>" [--change "<summary>"]');
126
- process.exit(1);
127
- }
128
- const id = parsePositiveBriefId(idRaw);
129
- const summaryRaw = flags['summary'];
130
- if (typeof summaryRaw !== 'string' || !summaryRaw.trim()) {
76
+ const id = idArgOrExit(args, 'Usage: hippo brief supersede <id> --summary "<text>" [--change "<summary>"]', BRIEF.idLabel);
77
+ const summaryRaw = stringFlag(flags, 'summary');
78
+ if (!summaryRaw?.trim()) {
131
79
  printError('hippo brief supersede requires --summary "<text>" for the new version.');
132
80
  process.exit(1);
133
81
  }
134
- const existing = briefsModule.loadProjectBriefById(hippoRoot, tenantId, id);
135
- if (!existing) {
136
- printError(`Project brief ${id} not found.`);
137
- process.exit(1);
138
- }
139
- const changeRaw = flags['change'];
82
+ const existing = foundOrExit(briefsModule.loadProjectBriefById(hippoRoot, tenantId, id), BRIEF.noun, id);
140
83
  try {
141
84
  const created = briefsModule.saveProjectBrief(hippoRoot, tenantId, {
142
85
  repo: existing.repo,
143
86
  summary: summaryRaw,
144
- changeSummary: typeof changeRaw === 'string' && changeRaw ? changeRaw : undefined,
87
+ changeSummary: nonEmptyStringFlag(flags, 'change'),
145
88
  supersedesBriefId: id,
146
89
  extraTags: extractPathTags(process.cwd()),
147
90
  });
@@ -150,27 +93,20 @@ function briefSupersede(hippoRoot, tenantId, args, flags) {
150
93
  console.log(` memory: ${created.memoryId}`);
151
94
  }
152
95
  catch (e) {
153
- printError(e.message);
96
+ printError(errorMessage(e));
154
97
  process.exit(1);
155
98
  }
156
99
  }
157
100
  function briefClose(hippoRoot, tenantId, args) {
158
- const idRaw = args[1];
159
- if (!idRaw) {
160
- printError('Usage: hippo brief close <id>');
161
- process.exit(1);
162
- }
163
- const id = parsePositiveBriefId(idRaw);
164
- const closed = briefsModule.closeProjectBrief(hippoRoot, tenantId, id);
165
- console.log(`Project brief #${closed.id} closed.`);
101
+ closeObject(args, BRIEF, (id) => briefsModule.closeProjectBrief(hippoRoot, tenantId, id));
166
102
  }
167
103
  function briefCreate(hippoRoot, tenantId, args, flags) {
168
104
  const subcommand = args[0] ?? '';
169
105
  // Default subcommand: new (create). Accept both `brief new "<repo>"` and the
170
106
  // bare `brief "<repo>"` form: for the `new` keyword the repo is args[1].
171
107
  const repo = subcommand === 'new' ? (args[1] ?? '') : subcommand;
172
- const summaryRaw = flags['summary'];
173
- if (!repo || typeof summaryRaw !== 'string' || !summaryRaw.trim()) {
108
+ const summaryRaw = stringFlag(flags, 'summary');
109
+ if (!repo || !summaryRaw?.trim()) {
174
110
  briefUsage();
175
111
  process.exit(1);
176
112
  }
@@ -185,7 +121,7 @@ function briefCreate(hippoRoot, tenantId, args, flags) {
185
121
  console.log(` memory: ${created.memoryId}`);
186
122
  }
187
123
  catch (e) {
188
- printError(e.message);
124
+ printError(errorMessage(e));
189
125
  process.exit(1);
190
126
  }
191
127
  }
@@ -205,15 +141,6 @@ export function cmdProjectBrief(hippoRoot, args, flags) {
205
141
  return briefClose(hippoRoot, tenantId, args);
206
142
  briefCreate(hippoRoot, tenantId, args, flags);
207
143
  }
208
- function parsePositiveNoteId(idRaw) {
209
- const s = String(idRaw ?? '').trim();
210
- const id = parseInt(s, 10);
211
- if (!/^\d+$/.test(s) || id <= 0) {
212
- printError(`Invalid note id: "${idRaw}" (expected a positive integer).`);
213
- process.exit(1);
214
- }
215
- return id;
216
- }
217
144
  function printNoteRow(n) {
218
145
  console.log(`#${n.id} [${n.status}] v${n.version} customer="${n.customer}" memory=${n.memoryId ?? '-'}`);
219
146
  if (n.changeSummary)
@@ -282,12 +209,13 @@ function openInBrowser(out) {
282
209
  child.on('error', () => { });
283
210
  child.unref();
284
211
  }
285
- catch {
286
- /* ignore — the file is written; the path is printed above */
212
+ catch (err) {
213
+ // The file is written and its path printed above, so a browser that will not start costs nothing.
214
+ log.debug(`browser not opened: ${errorMessage(err)}`);
287
215
  }
288
216
  }
289
217
  function graphView(hippoRoot, tenantId, entity, flags) {
290
- const format = typeof flags['format'] === 'string' ? flags['format'] : 'html';
218
+ const format = stringFlag(flags, 'format') ?? 'html';
291
219
  if (format !== 'html' && format !== 'canvas') {
292
220
  printError("graph view: --format must be 'html' or 'canvas'");
293
221
  process.exit(1);
@@ -295,7 +223,7 @@ function graphView(hippoRoot, tenantId, entity, flags) {
295
223
  const model = buildGraphModel(hippoRoot, tenantId, { entity, limit: DEFAULT_VIEW_LIMIT });
296
224
  const content = format === 'canvas' ? renderGraphCanvas(model) : renderGraphHtml(model);
297
225
  const defaultOut = format === 'canvas' ? 'hippo-graph.canvas' : 'hippo-graph.html';
298
- const out = typeof flags['out'] === 'string' ? flags['out'] : defaultOut;
226
+ const out = stringFlag(flags, 'out') ?? defaultOut;
299
227
  fs.writeFileSync(out, content, 'utf8');
300
228
  console.log(`Wrote ${model.nodes.length} entities + ${model.edges.length} relations to ${out}${model.truncated ? ' (truncated)' : ''}`);
301
229
  if (flags['open'] && format === 'html')
@@ -307,7 +235,7 @@ export function cmdGraph(hippoRoot, args, flags) {
307
235
  const subcommand = args[0] ?? '';
308
236
  if (subcommand === 'extract')
309
237
  return graphExtract(hippoRoot, tenantId);
310
- const entity = typeof flags['entity'] === 'string' ? flags['entity'] : undefined;
238
+ const entity = stringFlag(flags, 'entity');
311
239
  if (subcommand === 'show')
312
240
  return graphShow(hippoRoot, tenantId, entity, flags);
313
241
  if (subcommand === 'view')
@@ -319,80 +247,37 @@ export function cmdGraph(hippoRoot, args, flags) {
319
247
  process.exit(1);
320
248
  }
321
249
  function noteList(hippoRoot, tenantId, flags) {
322
- const statusRaw = flags['status'];
323
- const status = typeof statusRaw === 'string' ? statusRaw.trim() : 'all';
324
- const customerRaw = flags['customer'];
325
- const customer = typeof customerRaw === 'string' && customerRaw.trim() ? customerRaw.trim() : undefined;
326
- const limit = parseListLimit(flags);
327
- const opts = { limit, customer };
328
- if (status !== 'all') {
329
- if (!customerNotesModule.VALID_NOTE_STATES.has(status)) {
330
- printError(`Invalid --status: "${status}". Must be one of: active | superseded | closed | all.`);
331
- process.exit(1);
332
- }
333
- opts.status = status;
334
- }
335
- const results = customerNotesModule.loadCustomerNotes(hippoRoot, tenantId, opts);
336
- if (results.length === 0) {
337
- console.log('No customer notes.');
338
- return;
339
- }
340
- console.log(`Found ${results.length} customer notes:\n`);
341
- for (const n of results)
342
- printNoteRow(n);
250
+ const customer = stringFlag(flags, 'customer')?.trim() || undefined;
251
+ listObjects(flags, {
252
+ plural: 'customer notes',
253
+ states: customerNotesModule.VALID_NOTE_STATES,
254
+ load: (opts) => customerNotesModule.loadCustomerNotes(hippoRoot, tenantId, { ...opts, customer }),
255
+ printRow: printNoteRow,
256
+ });
343
257
  }
344
258
  function noteGet(hippoRoot, tenantId, args) {
345
- const idRaw = args[1];
346
- if (!idRaw) {
347
- printError('Usage: hippo note get <id>');
348
- process.exit(1);
349
- }
350
- const id = parsePositiveNoteId(idRaw);
351
- const n = customerNotesModule.loadCustomerNoteById(hippoRoot, tenantId, id);
352
- if (!n) {
353
- printError(`Customer note ${id} not found.`);
354
- process.exit(1);
355
- }
259
+ const id = idArgOrExit(args, 'Usage: hippo note get <id>', NOTE.idLabel);
260
+ const n = foundOrExit(customerNotesModule.loadCustomerNoteById(hippoRoot, tenantId, id), NOTE.noun, id);
356
261
  console.log(`Customer note #${n.id}`);
357
262
  console.log(` customer: ${n.customer}`);
358
263
  console.log(` status: ${n.status}`);
359
264
  console.log(` version: ${n.version}`);
360
265
  console.log(` note: ${n.note}`);
361
- if (n.changeSummary)
362
- console.log(` change_summary: ${n.changeSummary}`);
363
- if (n.supersededBy !== null)
364
- console.log(` superseded_by: #${n.supersededBy}`);
365
- if (n.supersededAt)
366
- console.log(` superseded_at: ${n.supersededAt}`);
367
- if (n.closedAt)
368
- console.log(` closed_at: ${n.closedAt}`);
369
- if (n.memoryId)
370
- console.log(` memory: ${n.memoryId}`);
371
- console.log(` created: ${n.createdAt}`);
266
+ printLifecycleTail(n);
372
267
  }
373
268
  function noteSupersede(hippoRoot, tenantId, args, flags) {
374
- const idRaw = args[1];
375
- if (!idRaw) {
376
- printError('Usage: hippo note supersede <id> --text "<note>" [--change "<summary>"]');
377
- process.exit(1);
378
- }
379
- const id = parsePositiveNoteId(idRaw);
380
- const textRaw = flags['text'];
381
- if (typeof textRaw !== 'string' || !textRaw.trim()) {
269
+ const id = idArgOrExit(args, 'Usage: hippo note supersede <id> --text "<note>" [--change "<summary>"]', NOTE.idLabel);
270
+ const textRaw = stringFlag(flags, 'text');
271
+ if (!textRaw?.trim()) {
382
272
  printError('hippo note supersede requires --text "<note>" for the new version.');
383
273
  process.exit(1);
384
274
  }
385
- const existing = customerNotesModule.loadCustomerNoteById(hippoRoot, tenantId, id);
386
- if (!existing) {
387
- printError(`Customer note ${id} not found.`);
388
- process.exit(1);
389
- }
390
- const changeRaw = flags['change'];
275
+ const existing = foundOrExit(customerNotesModule.loadCustomerNoteById(hippoRoot, tenantId, id), NOTE.noun, id);
391
276
  try {
392
277
  const created = customerNotesModule.saveCustomerNote(hippoRoot, tenantId, {
393
278
  customer: existing.customer,
394
279
  note: textRaw,
395
- changeSummary: typeof changeRaw === 'string' && changeRaw ? changeRaw : undefined,
280
+ changeSummary: nonEmptyStringFlag(flags, 'change'),
396
281
  supersedesNoteId: id,
397
282
  extraTags: extractPathTags(process.cwd()),
398
283
  });
@@ -401,19 +286,12 @@ function noteSupersede(hippoRoot, tenantId, args, flags) {
401
286
  console.log(` memory: ${created.memoryId}`);
402
287
  }
403
288
  catch (e) {
404
- printError(e.message);
289
+ printError(errorMessage(e));
405
290
  process.exit(1);
406
291
  }
407
292
  }
408
293
  function noteClose(hippoRoot, tenantId, args) {
409
- const idRaw = args[1];
410
- if (!idRaw) {
411
- printError('Usage: hippo note close <id>');
412
- process.exit(1);
413
- }
414
- const id = parsePositiveNoteId(idRaw);
415
- const closed = customerNotesModule.closeCustomerNote(hippoRoot, tenantId, id);
416
- console.log(`Customer note #${closed.id} closed.`);
294
+ closeObject(args, NOTE, (id) => customerNotesModule.closeCustomerNote(hippoRoot, tenantId, id));
417
295
  }
418
296
  export function cmdCustomerNote(hippoRoot, args, flags) {
419
297
  requireInit(hippoRoot);
@@ -430,8 +308,8 @@ export function cmdCustomerNote(hippoRoot, args, flags) {
430
308
  // Default subcommand: new (create). Accept both `note new "<customer>"` and the
431
309
  // bare `note "<customer>"` form: for the `new` keyword the customer is args[1].
432
310
  const customer = subcommand === 'new' ? (args[1] ?? '') : subcommand;
433
- const textRaw = flags['text'];
434
- if (!customer || typeof textRaw !== 'string' || !textRaw.trim()) {
311
+ const textRaw = stringFlag(flags, 'text');
312
+ if (!customer || !textRaw?.trim()) {
435
313
  noteUsage();
436
314
  process.exit(1);
437
315
  }
@@ -446,7 +324,7 @@ export function cmdCustomerNote(hippoRoot, args, flags) {
446
324
  console.log(` memory: ${created.memoryId}`);
447
325
  }
448
326
  catch (e) {
449
- printError(e.message);
327
+ printError(errorMessage(e));
450
328
  process.exit(1);
451
329
  }
452
330
  }
@@ -1,3 +1,4 @@
1
+ import { type CliFlags } from './flag-values.js';
1
2
  /** Runs `hippo card <subcommand>`: rejects flags the subcommand never reads, then hands off to its handler. */
2
- export declare function cmdCard(hippoRoot: string, args: string[], flags: Record<string, string | boolean | string[]>): void;
3
+ export declare function cmdCard(hippoRoot: string, args: string[], flags: CliFlags): void;
3
4
  //# sourceMappingURL=card.d.ts.map
package/dist/cli/card.js CHANGED
@@ -1,11 +1,13 @@
1
1
  // The `hippo card` verb (the agent work board); main() loads it lazily from the command table.
2
- import { createCard, loadCard, listCards, loadCardRuns, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, } from '../store-cards.js';
3
- import { isHandoffOutcome } from '../handoff.js';
4
- import { isCardStatus } from '../card.js';
5
- import { loadCardDetail } from '../card-detail.js';
6
- import { resolveTenantId } from '../tenant.js';
2
+ import { createCard, loadCard, listCards, loadCardRuns, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, } from '../store/cards.js';
3
+ import { isHandoffOutcome } from '../core/handoff.js';
4
+ import { isCardStatus } from '../core/card.js';
5
+ import { loadCardDetail } from '../store/card-detail.js';
6
+ import { resolveTenantId } from '../store/tenant.js';
7
7
  import { printError } from './output.js';
8
- import { requireInit, cardStringFlag } from './shared.js';
8
+ import { stringFlagOrExit } from './flag-values.js';
9
+ import { requireInit } from './shared.js';
10
+ import { errorMessage } from '../util/log.js';
9
11
  // Mirrors ARCHIVE_REASON_REQUIRED so the block message can't drift from its usage line.
10
12
  const CARD_BLOCK_REASON_REQUIRED = 'hippo card block <id> requires --reason "<why>" (recorded as a comment).';
11
13
  function printCard(detail) {
@@ -51,7 +53,7 @@ function printCard(detail) {
51
53
  }
52
54
  // A too-large --run would silently round to a different id (mirrors parsePositiveIncidentId).
53
55
  function cardRunFlag(flags) {
54
- const raw = cardStringFlag(flags, 'run');
56
+ const raw = stringFlagOrExit(flags, 'run');
55
57
  if (raw === undefined)
56
58
  return undefined;
57
59
  const n = Number(raw);
@@ -101,14 +103,14 @@ export function cmdCard(hippoRoot, args, flags) {
101
103
  CARD_HANDLERS[known](hippoRoot, tenantId, args, flags);
102
104
  }
103
105
  function cardCreate(hippoRoot, tenantId, _args, flags) {
104
- const title = cardStringFlag(flags, 'title') ?? '';
106
+ const title = stringFlagOrExit(flags, 'title') ?? '';
105
107
  if (!title) {
106
108
  printError('Usage: hippo card create --title "..." [--repo <name>] [--contract <text>] [--budget <n>] [--depends-on <id>...]');
107
109
  process.exit(1);
108
110
  }
109
- const repo = cardStringFlag(flags, 'repo') || undefined;
110
- const contract = cardStringFlag(flags, 'contract') || undefined;
111
- const budgetRaw = cardStringFlag(flags, 'budget');
111
+ const repo = stringFlagOrExit(flags, 'repo') || undefined;
112
+ const contract = stringFlagOrExit(flags, 'contract') || undefined;
113
+ const budgetRaw = stringFlagOrExit(flags, 'budget');
112
114
  let budget;
113
115
  if (budgetRaw !== undefined) {
114
116
  if (!/^\d+$/.test(budgetRaw)) {
@@ -128,7 +130,7 @@ function cardCreate(hippoRoot, tenantId, _args, flags) {
128
130
  card = createCard(hippoRoot, tenantId, { title, repo, contract, budget, dependsOn });
129
131
  }
130
132
  catch (error) {
131
- printError(error instanceof Error ? error.message : String(error));
133
+ printError(errorMessage(error));
132
134
  process.exit(1);
133
135
  }
134
136
  console.log(`Created card ${card.id} (status: ${card.status})`);
@@ -151,7 +153,7 @@ function cardShow(hippoRoot, tenantId, args, flags) {
151
153
  printCard(detail);
152
154
  }
153
155
  function cardList(hippoRoot, tenantId, _args, flags) {
154
- const status = cardStringFlag(flags, 'status');
156
+ const status = stringFlagOrExit(flags, 'status');
155
157
  if (status !== undefined && !isCardStatus(status)) {
156
158
  printError(`Invalid status: "${status}".`);
157
159
  process.exit(1);
@@ -171,18 +173,18 @@ function cardList(hippoRoot, tenantId, _args, flags) {
171
173
  }
172
174
  function cardClaim(hippoRoot, tenantId, args, flags) {
173
175
  const id = args[1];
174
- const runtime = cardStringFlag(flags, 'runtime') ?? '';
176
+ const runtime = stringFlagOrExit(flags, 'runtime') ?? '';
175
177
  if (!id || !runtime) {
176
178
  printError('Usage: hippo card claim <id> --runtime <name> [--session <id>]');
177
179
  process.exit(1);
178
180
  }
179
- const sessionId = cardStringFlag(flags, 'session') || undefined;
181
+ const sessionId = stringFlagOrExit(flags, 'session') || undefined;
180
182
  let card;
181
183
  try {
182
184
  card = claimCard(hippoRoot, tenantId, id, runtime, sessionId);
183
185
  }
184
186
  catch (error) {
185
- printError(error instanceof Error ? error.message : String(error));
187
+ printError(errorMessage(error));
186
188
  process.exit(1);
187
189
  }
188
190
  if (!card) {
@@ -203,7 +205,7 @@ function cardHeartbeat(hippoRoot, tenantId, args, flags) {
203
205
  card = heartbeatCard(hippoRoot, tenantId, id, runId);
204
206
  }
205
207
  catch (error) {
206
- printError(error instanceof Error ? error.message : String(error));
208
+ printError(errorMessage(error));
207
209
  process.exit(1);
208
210
  }
209
211
  if (!card) {
@@ -214,7 +216,7 @@ function cardHeartbeat(hippoRoot, tenantId, args, flags) {
214
216
  }
215
217
  function cardBlock(hippoRoot, tenantId, args, flags) {
216
218
  const id = args[1];
217
- const reason = cardStringFlag(flags, 'reason') ?? '';
219
+ const reason = stringFlagOrExit(flags, 'reason') ?? '';
218
220
  if (!id || !reason) {
219
221
  printError(CARD_BLOCK_REASON_REQUIRED);
220
222
  process.exit(1);
@@ -225,7 +227,7 @@ function cardBlock(hippoRoot, tenantId, args, flags) {
225
227
  card = blockCard(hippoRoot, tenantId, id, reason, runId);
226
228
  }
227
229
  catch (error) {
228
- printError(error instanceof Error ? error.message : String(error));
230
+ printError(errorMessage(error));
229
231
  process.exit(1);
230
232
  }
231
233
  if (!card) {
@@ -247,7 +249,7 @@ function cardReview(hippoRoot, tenantId, args, flags) {
247
249
  card = reviewCard(hippoRoot, tenantId, id, runId);
248
250
  }
249
251
  catch (error) {
250
- printError(error instanceof Error ? error.message : String(error));
252
+ printError(errorMessage(error));
251
253
  process.exit(1);
252
254
  }
253
255
  if (!card) {
@@ -270,7 +272,7 @@ function cardComplete(hippoRoot, tenantId, args, flags) {
270
272
  result = completeCard(hippoRoot, tenantId, id, outcomeRaw, runId);
271
273
  }
272
274
  catch (error) {
273
- printError(error instanceof Error ? error.message : String(error));
275
+ printError(errorMessage(error));
274
276
  process.exit(1);
275
277
  }
276
278
  if (!result) {
@@ -309,12 +311,12 @@ function cardComment(hippoRoot, tenantId, args, flags) {
309
311
  printError(`No card found with id ${id}.`);
310
312
  process.exit(1);
311
313
  }
312
- const body = cardStringFlag(flags, 'body') ?? '';
314
+ const body = stringFlagOrExit(flags, 'body') ?? '';
313
315
  if (!body) {
314
316
  printError('Usage: hippo card comment <id> --body "..." [--author <name>]');
315
317
  process.exit(1);
316
318
  }
317
- const author = cardStringFlag(flags, 'author') || 'cli';
319
+ const author = stringFlagOrExit(flags, 'author') || 'cli';
318
320
  const comment = addCardComment(hippoRoot, tenantId, id, author, body);
319
321
  console.log(`Added comment ${comment.id} to card ${id}`);
320
322
  }
@@ -13,7 +13,7 @@
13
13
  * Network errors (ECONNREFUSED on a stale pidfile, etc.) propagate as the
14
14
  * native fetch failure so the caller can detect them and self-heal.
15
15
  */
16
- import type { RememberOpts, RememberResult } from './api.js';
16
+ import type { RememberOpts, RememberResult } from '../api/index.js';
17
17
  /** An error the server answered with, not one the transport raised. The
18
18
  * refused-connection classifier sniffs message text, and a server message
19
19
  * quotes the caller's own id or content back verbatim. */
@@ -13,7 +13,7 @@
13
13
  * Network errors (ECONNREFUSED on a stale pidfile, etc.) propagate as the
14
14
  * native fetch failure so the caller can detect them and self-heal.
15
15
  */
16
- import { fetchWithRetry } from './http-retry.js';
16
+ import { fetchWithRetry } from '../util/http-retry.js';
17
17
  /** A write the local server has not answered in this long is stuck; the caller treats it as delivery-unknown. */
18
18
  const SERVER_TIMEOUT_MS = 30_000;
19
19
  /** Five tries at the server's 1 s Retry-After keeps the roughly 5 s wait the CLI had before the server answered busy with 503. */
@@ -0,0 +1,8 @@
1
+ export interface CompactResumePayload {
2
+ suppressOutput: boolean;
3
+ payloadSessionId: string | null;
4
+ boundary: boolean;
5
+ }
6
+ /** Fail-closed read of the SessionStart payload: only a manual run or a main-session `source: 'compact'` payload may print. */
7
+ export declare function readCompactResumePayload(stdinText: string | undefined, stdinTimedOut: boolean): CompactResumePayload;
8
+ //# sourceMappingURL=compact-resume-payload.d.ts.map
@@ -0,0 +1,39 @@
1
+ // The payload gate for `hippo compact-resume`.
2
+ import { isSubagentPayload } from '../store/token-ledger.js';
3
+ /** Fail-closed read of the SessionStart payload: only a manual run or a main-session `source: 'compact'` payload may print. */
4
+ export function readCompactResumePayload(stdinText, stdinTimedOut) {
5
+ // An older Claude Code that ignores `matcher: 'compact'` runs this on every SessionStart, so a parsed payload with any other source stays silent.
6
+ const nonEmptyStdin = !!stdinText && stdinText.trim() !== '';
7
+ // Without a payload session_id the cross-restore guard can never fire, so a timed-out empty read must not reach the print path.
8
+ let suppressOutput = stdinTimedOut && !nonEmptyStdin;
9
+ let payloadSessionId = null;
10
+ // A boundary is a manual run or a payload that says it follows a compaction; anything else is not one.
11
+ let boundary = !nonEmptyStdin && !stdinTimedOut;
12
+ if (nonEmptyStdin) {
13
+ let payload = null;
14
+ try {
15
+ payload = JSON.parse(stdinText.trim());
16
+ }
17
+ catch {
18
+ // Malformed JSON is handled as a null payload by the fail-closed check below.
19
+ payload = null;
20
+ }
21
+ if (!payload || typeof payload !== 'object') {
22
+ // Fail closed on malformed non-empty stdin; only a TTY/no-stdin manual run, which never reaches here, prints.
23
+ suppressOutput = true;
24
+ }
25
+ else {
26
+ // Fail closed on structurally incomplete payloads too ({}, [], source missing/non-string): a real SessionStart payload always carries source.
27
+ // A sub-agent's payload carries its parent's session id, so the mismatch guard would pass and restore the parent's snapshot into it.
28
+ boundary = payload.source === 'compact';
29
+ if (payload.source !== 'compact' || isSubagentPayload(stdinText)) {
30
+ suppressOutput = true;
31
+ }
32
+ if (typeof payload.session_id === 'string') {
33
+ payloadSessionId = payload.session_id;
34
+ }
35
+ }
36
+ }
37
+ return { suppressOutput, payloadSessionId, boundary };
38
+ }
39
+ //# sourceMappingURL=compact-resume-payload.js.map
@@ -1,15 +1,4 @@
1
- import { MemoryEntry } from '../memory.js';
2
- import { type CommandContext } from './shared.js';
3
- export declare function cmdContext(hippoRoot: string, args: string[], flags: Record<string, string | boolean | string[]>, stdinText?: string): Promise<void>;
4
- /** @internal Exported for the render snapshot test; not a stable public API. */
5
- export declare function printContextMarkdown(items: Array<{
6
- entry: MemoryEntry;
7
- score: number;
8
- tokens: number;
9
- isGlobal: boolean;
10
- }>, totalTokens: number, framing?: string, opts?: {
11
- showStrength?: boolean;
12
- heading?: string;
13
- }): void;
1
+ import { type CliFlags, type CommandContext } from './flag-values.js';
2
+ export declare function cmdContext(hippoRoot: string, args: string[], flags: CliFlags, stdinText?: string): Promise<void>;
14
3
  export declare function handleContext({ hippoRoot, args, flags }: CommandContext): Promise<void>;
15
4
  //# sourceMappingURL=context.d.ts.map