hippo-memory 1.69.0 → 1.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (860) hide show
  1. package/README.md +5 -2
  2. package/dist/agent-memories/apply.d.ts +3 -3
  3. package/dist/agent-memories/apply.js +16 -31
  4. package/dist/agent-memories/claude-code.d.ts +1 -3
  5. package/dist/agent-memories/claude-code.js +11 -7
  6. package/dist/agent-memories/copilot.js +3 -2
  7. package/dist/agent-memories/files.js +3 -2
  8. package/dist/agent-memories/gemini.js +6 -5
  9. package/dist/agent-memories/keys.js +3 -2
  10. package/dist/agent-memories/legacy.d.ts +2 -2
  11. package/dist/agent-memories/legacy.js +2 -2
  12. package/dist/agent-memories/report.d.ts +1 -1
  13. package/dist/agent-memories/report.js +1 -1
  14. package/dist/agent-memories/source.d.ts +1 -1
  15. package/dist/agent-memories/source.js +6 -5
  16. package/dist/agent-memories/sync.d.ts +1 -1
  17. package/dist/agent-memories/sync.js +24 -33
  18. package/dist/agent-memories/types.d.ts +1 -1
  19. package/dist/api/assemble.d.ts +2 -2
  20. package/dist/api/assemble.js +42 -32
  21. package/dist/api/audit.d.ts +4 -7
  22. package/dist/api/audit.js +6 -20
  23. package/dist/api/auth.d.ts +5 -18
  24. package/dist/api/auth.js +44 -194
  25. package/dist/api/auto-sleep.d.ts +13 -0
  26. package/dist/api/auto-sleep.js +32 -0
  27. package/dist/{availability.d.ts → api/availability.d.ts} +2 -2
  28. package/dist/{availability.js → api/availability.js} +12 -29
  29. package/dist/{context-auto.js → api/context-auto.js} +2 -1
  30. package/dist/{context-render.d.ts → api/context-render.d.ts} +4 -4
  31. package/dist/{context-render.js → api/context-render.js} +7 -6
  32. package/dist/api/context-select.d.ts +5 -5
  33. package/dist/api/context-select.js +37 -45
  34. package/dist/api/context-types.d.ts +5 -5
  35. package/dist/api/context.d.ts +2 -4
  36. package/dist/api/context.js +48 -61
  37. package/dist/api/dormant.d.ts +3 -3
  38. package/dist/api/dormant.js +38 -107
  39. package/dist/api/drill-down.d.ts +2 -2
  40. package/dist/api/drill-down.js +37 -65
  41. package/dist/api/forget.d.ts +2 -11
  42. package/dist/api/forget.js +13 -46
  43. package/dist/api/goals.d.ts +1 -1
  44. package/dist/api/goals.js +2 -2
  45. package/dist/api/index.d.ts +26 -0
  46. package/dist/api/index.js +29 -0
  47. package/dist/api/instruction-detect.js +74 -0
  48. package/dist/api/learn.js +63 -55
  49. package/dist/api/ledger-db.d.ts +20 -0
  50. package/dist/api/ledger-db.js +79 -0
  51. package/dist/api/on-store.d.ts +16 -0
  52. package/dist/api/on-store.js +36 -0
  53. package/dist/api/outcome.d.ts +5 -42
  54. package/dist/api/outcome.js +15 -80
  55. package/dist/{pilot-arm.d.ts → api/pilot-arm.d.ts} +1 -1
  56. package/dist/{pilot-arm.js → api/pilot-arm.js} +15 -23
  57. package/dist/api/promote.d.ts +4 -15
  58. package/dist/api/promote.js +29 -106
  59. package/dist/{prompt-hook.d.ts → api/prompt-hook.d.ts} +7 -7
  60. package/dist/{prompt-hook.js → api/prompt-hook.js} +34 -53
  61. package/dist/api/quarantine.d.ts +5 -5
  62. package/dist/api/quarantine.js +30 -106
  63. package/dist/api/recall-core.d.ts +4 -0
  64. package/dist/api/recall-core.js +112 -0
  65. package/dist/{recall-history.js → api/recall-history.js} +30 -25
  66. package/dist/{recall-pipeline.d.ts → api/recall-pipeline.d.ts} +5 -5
  67. package/dist/{recall-pipeline.js → api/recall-pipeline.js} +47 -42
  68. package/dist/api/recall-record.d.ts +10 -13
  69. package/dist/api/recall-record.js +10 -30
  70. package/dist/api/recall-request.d.ts +2 -2
  71. package/dist/api/recall-request.js +3 -3
  72. package/dist/api/recall-types.d.ts +41 -16
  73. package/dist/api/recall.d.ts +1 -1
  74. package/dist/api/recall.js +39 -37
  75. package/dist/api/remember.d.ts +10 -12
  76. package/dist/api/remember.js +29 -45
  77. package/dist/api/session-owners.d.ts +4 -0
  78. package/dist/api/session-owners.js +17 -0
  79. package/dist/api/sleep-run.d.ts +7 -7
  80. package/dist/api/sleep-run.js +63 -75
  81. package/dist/api/sleep.d.ts +1 -1
  82. package/dist/api/tokens.d.ts +2 -2
  83. package/dist/api/tokens.js +9 -21
  84. package/dist/api/types.d.ts +2 -2
  85. package/dist/api/types.js +1 -1
  86. package/dist/capture/caller-session.d.ts +2 -2
  87. package/dist/capture/caller-session.js +8 -8
  88. package/dist/{capture-error.d.ts → capture/capture-error.d.ts} +2 -2
  89. package/dist/{capture-error.js → capture/capture-error.js} +7 -7
  90. package/dist/{codex-patch.js → capture/codex-patch.js} +1 -1
  91. package/dist/capture/command.d.ts +1 -1
  92. package/dist/capture/command.js +54 -41
  93. package/dist/capture/compact-resume-caller.d.ts +1 -1
  94. package/dist/capture/compact-resume-caller.js +7 -7
  95. package/dist/capture/compact.d.ts +4 -1
  96. package/dist/capture/compact.js +40 -22
  97. package/dist/capture/compaction-items-caller.d.ts +1 -1
  98. package/dist/capture/compaction-items-caller.js +7 -5
  99. package/dist/{compaction-items.js → capture/compaction-items.js} +27 -3
  100. package/dist/{compaction-record.d.ts → capture/compaction-record.d.ts} +10 -6
  101. package/dist/{compaction-record.js → capture/compaction-record.js} +48 -94
  102. package/dist/{compaction-spool.js → capture/compaction-spool.js} +17 -13
  103. package/dist/capture/copilot-transcript.js +1 -1
  104. package/dist/capture/extract.js +2 -2
  105. package/dist/capture/failure-caller.d.ts +2 -2
  106. package/dist/capture/failure-caller.js +6 -6
  107. package/dist/capture/failure-reading.d.ts +2 -5
  108. package/dist/capture/failure-reading.js +11 -12
  109. package/dist/{handoff-evidence.d.ts → capture/handoff-evidence.d.ts} +1 -1
  110. package/dist/{handoff-evidence.js → capture/handoff-evidence.js} +2 -1
  111. package/dist/capture/pre-compact-caller.d.ts +1 -1
  112. package/dist/capture/pre-compact-caller.js +2 -2
  113. package/dist/{session-digest.d.ts → capture/session-digest.d.ts} +1 -5
  114. package/dist/{session-digest.js → capture/session-digest.js} +17 -23
  115. package/dist/capture/session-end-caller.d.ts +2 -2
  116. package/dist/capture/session-end-caller.js +1 -1
  117. package/dist/capture/session-texts.d.ts +1 -1
  118. package/dist/capture/session-texts.js +5 -5
  119. package/dist/capture/session-worker.js +6 -4
  120. package/dist/{share-scrub.js → capture/share-scrub.js} +2 -2
  121. package/dist/capture/transcript.js +68 -74
  122. package/dist/capture/working-state.d.ts +0 -3
  123. package/dist/capture/working-state.js +7 -7
  124. package/dist/{audit-prune.d.ts → cli/audit-prune.d.ts} +1 -2
  125. package/dist/{audit-prune.js → cli/audit-prune.js} +5 -39
  126. package/dist/cli/audit.d.ts +2 -2
  127. package/dist/cli/audit.js +77 -72
  128. package/dist/cli/auth.d.ts +2 -1
  129. package/dist/cli/auth.js +18 -20
  130. package/dist/cli/briefs.d.ts +4 -3
  131. package/dist/cli/briefs.js +59 -181
  132. package/dist/cli/card.d.ts +2 -1
  133. package/dist/cli/card.js +25 -23
  134. package/dist/{client.d.ts → cli/client.d.ts} +1 -1
  135. package/dist/{client.js → cli/client.js} +1 -1
  136. package/dist/cli/compact-resume-payload.d.ts +8 -0
  137. package/dist/cli/compact-resume-payload.js +39 -0
  138. package/dist/cli/context.d.ts +2 -13
  139. package/dist/cli/context.js +41 -71
  140. package/dist/cli/continuity.d.ts +6 -5
  141. package/dist/cli/continuity.js +109 -99
  142. package/dist/{correction-latency.d.ts → cli/correction-latency.d.ts} +1 -1
  143. package/dist/cli/curate.d.ts +9 -9
  144. package/dist/cli/curate.js +177 -149
  145. package/dist/cli/dag.d.ts +4 -4
  146. package/dist/cli/dag.js +46 -34
  147. package/dist/cli/decisions.d.ts +4 -3
  148. package/dist/cli/decisions.js +108 -218
  149. package/dist/cli/eval.d.ts +1 -3
  150. package/dist/cli/eval.js +43 -31
  151. package/dist/cli/explain.d.ts +1 -1
  152. package/dist/cli/explain.js +35 -19
  153. package/dist/cli/flag-values.d.ts +25 -0
  154. package/dist/cli/flag-values.js +103 -0
  155. package/dist/cli/flags.d.ts +303 -0
  156. package/dist/cli/flags.js +169 -0
  157. package/dist/cli/goals.d.ts +2 -1
  158. package/dist/cli/goals.js +39 -34
  159. package/dist/cli/hook-runtime.d.ts +49 -0
  160. package/dist/cli/hook-runtime.js +155 -0
  161. package/dist/cli/init.d.ts +2 -1
  162. package/dist/cli/init.js +151 -118
  163. package/dist/cli/install-steps.d.ts +7 -0
  164. package/dist/cli/install-steps.js +110 -0
  165. package/dist/cli/last-sleep.d.ts +2 -1
  166. package/dist/cli/last-sleep.js +9 -7
  167. package/dist/cli/maintenance.d.ts +5 -4
  168. package/dist/cli/maintenance.js +31 -27
  169. package/dist/cli/object-verbs.d.ts +40 -0
  170. package/dist/cli/object-verbs.js +65 -0
  171. package/dist/{owner-validation.d.ts → cli/owner-validation.d.ts} +0 -1
  172. package/dist/{owner-validation.js → cli/owner-validation.js} +2 -2
  173. package/dist/cli/playbooks.d.ts +4 -3
  174. package/dist/cli/playbooks.js +77 -280
  175. package/dist/cli/print.d.ts +18 -0
  176. package/dist/cli/print.js +85 -0
  177. package/dist/cli/projects.d.ts +2 -3
  178. package/dist/cli/projects.js +56 -49
  179. package/dist/{provenance-coverage.d.ts → cli/provenance-coverage.d.ts} +1 -1
  180. package/dist/cli/quality-repair-once.js +4 -4
  181. package/dist/{quality-repair.js → cli/quality-repair.js} +23 -37
  182. package/dist/cli/recall.d.ts +2 -4
  183. package/dist/cli/recall.js +101 -150
  184. package/dist/{refine-llm.d.ts → cli/refine-llm.d.ts} +1 -1
  185. package/dist/{refine-llm.js → cli/refine-llm.js} +70 -82
  186. package/dist/cli/remember.d.ts +1 -3
  187. package/dist/cli/remember.js +124 -103
  188. package/dist/{scheduler.d.ts → cli/scheduler.d.ts} +3 -1
  189. package/dist/{scheduler.js → cli/scheduler.js} +13 -7
  190. package/dist/cli/serve.d.ts +1 -1
  191. package/dist/cli/serve.js +34 -4
  192. package/dist/cli/session-hooks.d.ts +4 -4
  193. package/dist/cli/session-hooks.js +190 -184
  194. package/dist/cli/setup.d.ts +2 -1
  195. package/dist/cli/setup.js +41 -21
  196. package/dist/cli/shared.d.ts +5 -95
  197. package/dist/cli/shared.js +18 -369
  198. package/dist/cli/slack.d.ts +2 -1
  199. package/dist/cli/slack.js +31 -55
  200. package/dist/cli/sleep-render.d.ts +4 -0
  201. package/dist/cli/sleep-render.js +61 -0
  202. package/dist/cli/sleep.d.ts +2 -8
  203. package/dist/cli/sleep.js +20 -76
  204. package/dist/cli/status.d.ts +3 -3
  205. package/dist/cli/status.js +39 -41
  206. package/dist/{stdin.js → cli/stdin.js} +6 -6
  207. package/dist/cli/transfer.d.ts +4 -4
  208. package/dist/cli/transfer.js +68 -42
  209. package/dist/cli/usage.js +4 -2
  210. package/dist/cli.d.ts +289 -5
  211. package/dist/cli.js +184 -117
  212. package/dist/connectors/dlq.d.ts +44 -0
  213. package/dist/connectors/dlq.js +30 -0
  214. package/dist/connectors/github/backfill.d.ts +1 -1
  215. package/dist/connectors/github/backfill.js +29 -66
  216. package/dist/connectors/github/cli-impl.js +59 -74
  217. package/dist/connectors/github/deletion.d.ts +5 -6
  218. package/dist/connectors/github/deletion.js +18 -52
  219. package/dist/connectors/github/dlq.d.ts +7 -61
  220. package/dist/connectors/github/dlq.js +19 -119
  221. package/dist/connectors/github/ingest.d.ts +2 -31
  222. package/dist/connectors/github/ingest.js +20 -83
  223. package/dist/connectors/github/octokit-client.d.ts +1 -1
  224. package/dist/connectors/github/octokit-client.js +2 -1
  225. package/dist/connectors/github/tenant-routing.d.ts +2 -2
  226. package/dist/connectors/github/tenant-routing.js +10 -36
  227. package/dist/connectors/github/transform.d.ts +1 -1
  228. package/dist/connectors/github/types.d.ts +1 -1
  229. package/dist/connectors/github/types.js +15 -18
  230. package/dist/connectors/github/webhook.d.ts +3 -2
  231. package/dist/connectors/github/webhook.js +84 -87
  232. package/dist/connectors/slack/backfill.d.ts +1 -1
  233. package/dist/connectors/slack/backfill.js +5 -29
  234. package/dist/connectors/slack/deletion.d.ts +4 -7
  235. package/dist/connectors/slack/deletion.js +20 -49
  236. package/dist/connectors/slack/dlq.d.ts +7 -49
  237. package/dist/connectors/slack/dlq.js +25 -118
  238. package/dist/connectors/slack/ingest.d.ts +5 -18
  239. package/dist/connectors/slack/ingest.js +27 -91
  240. package/dist/connectors/slack/signature.js +2 -1
  241. package/dist/connectors/slack/tenant-routing.d.ts +4 -1
  242. package/dist/connectors/slack/tenant-routing.js +13 -14
  243. package/dist/connectors/slack/transform.d.ts +1 -1
  244. package/dist/connectors/slack/types.d.ts +1 -1
  245. package/dist/connectors/slack/types.js +3 -12
  246. package/dist/connectors/slack/web-client.js +2 -2
  247. package/dist/connectors/slack/webhook.d.ts +3 -2
  248. package/dist/connectors/slack/webhook.js +75 -82
  249. package/dist/connectors/slack/workspaces.d.ts +4 -17
  250. package/dist/connectors/slack/workspaces.js +4 -34
  251. package/dist/consolidate/conflicts.d.ts +1 -1
  252. package/dist/consolidate/conflicts.js +4 -4
  253. package/dist/{dag.d.ts → consolidate/dag.d.ts} +1 -1
  254. package/dist/{dag.js → consolidate/dag.js} +60 -81
  255. package/dist/consolidate/decay.d.ts +2 -2
  256. package/dist/consolidate/decay.js +28 -22
  257. package/dist/{dedupe.js → consolidate/dedupe.js} +11 -19
  258. package/dist/consolidate/flush-units.d.ts +2 -2
  259. package/dist/{half-life-migration.d.ts → consolidate/half-life-migration.d.ts} +3 -9
  260. package/dist/consolidate/half-life-migration.js +106 -0
  261. package/dist/consolidate/llm-passes.js +8 -8
  262. package/dist/{memory-value.d.ts → consolidate/memory-value.d.ts} +7 -2
  263. package/dist/{memory-value.js → consolidate/memory-value.js} +9 -7
  264. package/dist/consolidate/merge.js +57 -54
  265. package/dist/{merged-row.d.ts → consolidate/merged-row.d.ts} +1 -1
  266. package/dist/{merged-row.js → consolidate/merged-row.js} +2 -2
  267. package/dist/consolidate/physics-pass.js +46 -46
  268. package/dist/{replay.d.ts → consolidate/replay.d.ts} +1 -1
  269. package/dist/{replay.js → consolidate/replay.js} +2 -2
  270. package/dist/consolidate/run.d.ts +7 -13
  271. package/dist/consolidate/run.js +6 -37
  272. package/dist/consolidate/sleep.d.ts +1 -1
  273. package/dist/consolidate/sleep.js +64 -134
  274. package/dist/{trace.js → consolidate/trace.js} +4 -6
  275. package/dist/consolidate/traces.js +34 -29
  276. package/dist/{ablation.js → core/ablation.js} +1 -1
  277. package/dist/{agent-memories/tools.d.ts → core/agent-memory-tools.d.ts} +1 -1
  278. package/dist/{agent-memories/tools.js → core/agent-memory-tools.js} +1 -1
  279. package/dist/{ambient.js → core/ambient.js} +12 -10
  280. package/dist/{capture-contract.d.ts → core/capture-contract.d.ts} +13 -2
  281. package/dist/{capture-contract.js → core/capture-contract.js} +64 -0
  282. package/dist/{compare.d.ts → core/compare.d.ts} +2 -0
  283. package/dist/{compare.js → core/compare.js} +10 -3
  284. package/dist/{config.d.ts → core/config.d.ts} +6 -6
  285. package/dist/{config.js → core/config.js} +99 -72
  286. package/dist/core/handoff.js +87 -0
  287. package/dist/{memory-quality.js → core/memory-quality.js} +1 -1
  288. package/dist/{memory.d.ts → core/memory.d.ts} +17 -5
  289. package/dist/{memory.js → core/memory.js} +110 -82
  290. package/dist/{physics.d.ts → core/physics.d.ts} +1 -1
  291. package/dist/{physics.js → core/physics.js} +2 -1
  292. package/dist/{project-identity.d.ts → core/project-identity.d.ts} +0 -5
  293. package/dist/{project-identity.js → core/project-identity.js} +5 -17
  294. package/dist/{project-remote.js → core/project-remote.js} +4 -4
  295. package/dist/{prompt-recall.js → core/prompt-recall.js} +1 -1
  296. package/dist/{salience.js → core/salience.js} +35 -20
  297. package/dist/{search/types.d.ts → core/search-types.d.ts} +2 -2
  298. package/dist/{search/types.js → core/search-types.js} +1 -1
  299. package/dist/core/session-digest-row.d.ts +5 -0
  300. package/dist/core/session-digest-row.js +6 -0
  301. package/dist/{dashboard-actions.d.ts → dashboard/dashboard-actions.d.ts} +1 -1
  302. package/dist/{dashboard-actions.js → dashboard/dashboard-actions.js} +5 -5
  303. package/dist/{dashboard-queries.d.ts → dashboard/dashboard-queries.d.ts} +7 -2
  304. package/dist/{dashboard-queries.js → dashboard/dashboard-queries.js} +6 -10
  305. package/dist/{dashboard-snapshot.d.ts → dashboard/dashboard-snapshot.d.ts} +9 -9
  306. package/dist/{dashboard-snapshot.js → dashboard/dashboard-snapshot.js} +101 -104
  307. package/dist/{dashboard.js → dashboard/dashboard.js} +124 -53
  308. package/dist/db/backup.js +1 -1
  309. package/dist/db/busy.d.ts +18 -1
  310. package/dist/db/busy.js +74 -9
  311. package/dist/db/connect.d.ts +10 -2
  312. package/dist/db/connect.js +43 -10
  313. package/dist/db/index.d.ts +9 -0
  314. package/dist/db/index.js +8 -0
  315. package/dist/db/meta.d.ts +4 -0
  316. package/dist/db/meta.js +11 -1
  317. package/dist/db/migrate.d.ts +8 -1
  318. package/dist/db/migrate.js +25 -30
  319. package/dist/db/migrations/v08.js +1 -1
  320. package/dist/db/migrations/v14.js +39 -35
  321. package/dist/db/migrations/v16.js +29 -26
  322. package/dist/db/migrations/v18.js +6 -5
  323. package/dist/db/migrations/v20.js +4 -2
  324. package/dist/db/migrations/v22.js +39 -36
  325. package/dist/db/migrations/v24.js +27 -22
  326. package/dist/db/migrations/v29.js +37 -32
  327. package/dist/db/migrations/v31.js +36 -31
  328. package/dist/db/migrations/v35.js +1 -1
  329. package/dist/db/migrations/v39.js +1 -1
  330. package/dist/db/migrations/v40.js +15 -14
  331. package/dist/db/migrations/v43.js +7 -6
  332. package/dist/db/migrations/v44.js +1 -1
  333. package/dist/db/migrations/v45.js +1 -1
  334. package/dist/db/migrations/v46.js +1 -1
  335. package/dist/db/migrations/v47.js +1 -1
  336. package/dist/db/migrations/v48.js +1 -1
  337. package/dist/db/migrations/v49.js +1 -1
  338. package/dist/db/migrations/v50.js +8 -7
  339. package/dist/db/migrations/v52.js +1 -1
  340. package/dist/db/open.d.ts +9 -1
  341. package/dist/db/open.js +21 -4
  342. package/dist/{physics-state.d.ts → db/physics-state.d.ts} +3 -3
  343. package/dist/{physics-state.js → db/physics-state.js} +9 -16
  344. package/dist/{raw-archive-mirror-cleanup.d.ts → db/raw-archive-mirror-cleanup.d.ts} +5 -5
  345. package/dist/{raw-archive-mirror-cleanup.js → db/raw-archive-mirror-cleanup.js} +11 -6
  346. package/dist/db/request-stores.d.ts +15 -2
  347. package/dist/db/request-stores.js +37 -15
  348. package/dist/db/tables.d.ts +2 -0
  349. package/dist/db/tables.js +6 -0
  350. package/dist/{vector-store.d.ts → db/vector-store.d.ts} +4 -2
  351. package/dist/{vector-store.js → db/vector-store.js} +76 -51
  352. package/dist/db/wal-checkpointer.d.ts +11 -0
  353. package/dist/db/wal-checkpointer.js +92 -0
  354. package/dist/doctor.js +105 -136
  355. package/dist/entry/json-hooks.d.ts +1 -1
  356. package/dist/entry/json-hooks.js +1 -1
  357. package/dist/entry/project-identity.d.ts +1 -1
  358. package/dist/entry/project-identity.js +1 -1
  359. package/dist/entry/session-text.d.ts +3 -3
  360. package/dist/entry/session-text.js +3 -3
  361. package/dist/{eval-stats.js → eval/eval-stats.js} +12 -9
  362. package/dist/{eval-suite.d.ts → eval/eval-suite.d.ts} +1 -1
  363. package/dist/{eval-suite.js → eval/eval-suite.js} +25 -23
  364. package/dist/{eval.d.ts → eval/eval.d.ts} +1 -1
  365. package/dist/{eval.js → eval/eval.js} +29 -22
  366. package/dist/{judgment.d.ts → eval/judgment.d.ts} +1 -3
  367. package/dist/{judgment.js → eval/judgment.js} +4 -9
  368. package/dist/extensions/openclaw-plugin/index.js +1 -2
  369. package/dist/graph/delta.d.ts +3 -2
  370. package/dist/graph/delta.js +9 -23
  371. package/dist/{graph-extract.d.ts → graph/extract.d.ts} +6 -6
  372. package/dist/{graph-extract.js → graph/extract.js} +37 -52
  373. package/dist/{graph-recall.d.ts → graph/recall.d.ts} +2 -2
  374. package/dist/{graph-recall.js → graph/recall.js} +55 -36
  375. package/dist/{graph-stream.d.ts → graph/stream.d.ts} +2 -2
  376. package/dist/{graph-stream.js → graph/stream.js} +9 -7
  377. package/dist/{graph-view.d.ts → graph/view.d.ts} +6 -3
  378. package/dist/{graph-view.js → graph/view.js} +127 -167
  379. package/dist/graph/write.d.ts +4 -76
  380. package/dist/graph/write.js +13 -397
  381. package/dist/hooks/codex-session.js +1 -1
  382. package/dist/hooks/codex-wrapper.js +14 -15
  383. package/dist/hooks/copilot.d.ts +1 -8
  384. package/dist/hooks/copilot.js +14 -15
  385. package/dist/{cli → hooks}/hook-blocks.js +1 -1
  386. package/dist/hooks/json-hooks.d.ts +1 -1
  387. package/dist/hooks/json-hooks.js +31 -122
  388. package/dist/hooks/opencode.js +35 -27
  389. package/dist/hooks/shared.d.ts +0 -4
  390. package/dist/hooks/shared.js +1 -5
  391. package/dist/importers/core.d.ts +2 -6
  392. package/dist/importers/core.js +41 -39
  393. package/dist/importers/markdown-parse.d.ts +1 -10
  394. package/dist/importers/markdown-parse.js +2 -19
  395. package/dist/importers/markdown.js +2 -1
  396. package/dist/importers/sources.js +50 -46
  397. package/dist/importers/vault.js +71 -92
  398. package/dist/index.d.ts +22 -22
  399. package/dist/index.js +21 -21
  400. package/dist/{autolearn.d.ts → learn/autolearn.d.ts} +2 -2
  401. package/dist/{autolearn.js → learn/autolearn.js} +13 -11
  402. package/dist/{churn-git.d.ts → learn/churn-git.d.ts} +1 -1
  403. package/dist/{churn-git.js → learn/churn-git.js} +6 -4
  404. package/dist/{extract.d.ts → learn/extract.d.ts} +1 -1
  405. package/dist/learn/extract.js +125 -0
  406. package/dist/{forward-claim-detector.d.ts → learn/forward-claim-detector.d.ts} +1 -1
  407. package/dist/{forward-claim-detector.js → learn/forward-claim-detector.js} +1 -1
  408. package/dist/{invalidation.d.ts → learn/invalidation.d.ts} +4 -0
  409. package/dist/{invalidation.js → learn/invalidation.js} +83 -99
  410. package/dist/mcp/admin-tools.d.ts +1 -1
  411. package/dist/mcp/admin-tools.js +37 -60
  412. package/dist/mcp/format.d.ts +5 -5
  413. package/dist/mcp/format.js +7 -6
  414. package/dist/mcp/framing.d.ts +6 -0
  415. package/dist/mcp/framing.js +11 -3
  416. package/dist/mcp/memory-tools.js +7 -27
  417. package/dist/mcp/protocol.d.ts +6 -10
  418. package/dist/mcp/protocol.js +8 -14
  419. package/dist/mcp/recall-tools.d.ts +2 -2
  420. package/dist/mcp/recall-tools.js +68 -50
  421. package/dist/mcp/request.js +62 -60
  422. package/dist/mcp/server.js +1 -1
  423. package/dist/mcp/session-state.d.ts +1 -2
  424. package/dist/mcp/session-state.js +2 -2
  425. package/dist/mcp/shared-gate.js +1 -1
  426. package/dist/mcp/stdio.js +69 -31
  427. package/dist/mcp/tool-args.js +2 -1
  428. package/dist/mcp/tools.js +2 -2
  429. package/dist/{customer-notes.d.ts → objects/customer-notes.d.ts} +7 -24
  430. package/dist/objects/customer-notes.js +112 -0
  431. package/dist/{decisions.d.ts → objects/decisions.d.ts} +13 -28
  432. package/dist/objects/decisions.js +101 -0
  433. package/dist/objects/descriptor.d.ts +52 -0
  434. package/dist/objects/descriptor.js +4 -0
  435. package/dist/objects/fields.d.ts +15 -0
  436. package/dist/objects/fields.js +21 -0
  437. package/dist/{incidents.d.ts → objects/incidents.d.ts} +17 -44
  438. package/dist/objects/incidents.js +130 -0
  439. package/dist/objects/lifecycle.d.ts +27 -0
  440. package/dist/objects/lifecycle.js +96 -0
  441. package/dist/{policies.d.ts → objects/policies.d.ts} +14 -27
  442. package/dist/objects/policies.js +189 -0
  443. package/dist/{processes.d.ts → objects/processes.d.ts} +14 -34
  444. package/dist/objects/processes.js +146 -0
  445. package/dist/{project-briefs.d.ts → objects/project-briefs.d.ts} +19 -40
  446. package/dist/objects/project-briefs.js +255 -0
  447. package/dist/{skills.d.ts → objects/skills.d.ts} +11 -26
  448. package/dist/objects/skills.js +156 -0
  449. package/dist/postinstall.js +4 -2
  450. package/dist/predictions/planning-fallacy.d.ts +4 -76
  451. package/dist/predictions/planning-fallacy.js +4 -129
  452. package/dist/rerankers/clef.d.ts +2 -6
  453. package/dist/rerankers/clef.js +27 -47
  454. package/dist/rerankers/cross-encoder.d.ts +0 -7
  455. package/dist/rerankers/cross-encoder.js +15 -23
  456. package/dist/rerankers/index.js +8 -7
  457. package/dist/rerankers/jev.d.ts +1 -4
  458. package/dist/rerankers/jev.js +30 -49
  459. package/dist/rerankers/llm.d.ts +2 -4
  460. package/dist/rerankers/llm.js +33 -50
  461. package/dist/rerankers/outage-warning.d.ts +7 -0
  462. package/dist/rerankers/outage-warning.js +31 -0
  463. package/dist/rerankers/remote.d.ts +3 -0
  464. package/dist/rerankers/remote.js +23 -0
  465. package/dist/rerankers/types.d.ts +1 -1
  466. package/dist/search/as-of.d.ts +1 -1
  467. package/dist/search/bm25-search.d.ts +2 -2
  468. package/dist/search/bm25-search.js +7 -7
  469. package/dist/search/bm25.d.ts +1 -1
  470. package/dist/search/bm25.js +1 -1
  471. package/dist/search/boosts.d.ts +5 -1
  472. package/dist/search/boosts.js +34 -13
  473. package/dist/search/breakdown.d.ts +2 -2
  474. package/dist/search/breakdown.js +2 -1
  475. package/dist/search/explain.d.ts +1 -1
  476. package/dist/search/explain.js +3 -2
  477. package/dist/search/finalize.d.ts +2 -2
  478. package/dist/search/finalize.js +4 -3
  479. package/dist/search/fusion.d.ts +1 -1
  480. package/dist/search/fusion.js +3 -3
  481. package/dist/search/hybrid-score.d.ts +2 -2
  482. package/dist/search/hybrid-score.js +1 -1
  483. package/dist/search/hybrid.d.ts +4 -4
  484. package/dist/search/hybrid.js +11 -8
  485. package/dist/{multihop.d.ts → search/multihop.d.ts} +2 -2
  486. package/dist/{multihop.js → search/multihop.js} +7 -5
  487. package/dist/{path-context.js → search/path-context.js} +3 -1
  488. package/dist/search/physics-search.d.ts +4 -4
  489. package/dist/search/physics-search.js +15 -15
  490. package/dist/search/rerank.d.ts +3 -3
  491. package/dist/search/rerank.js +4 -3
  492. package/dist/search/temporal.d.ts +1 -1
  493. package/dist/search/temporal.js +5 -2
  494. package/dist/search/vector.d.ts +3 -3
  495. package/dist/search/vector.js +17 -11
  496. package/dist/server/auth.d.ts +1 -1
  497. package/dist/server/auth.js +26 -18
  498. package/dist/server/boot.d.ts +24 -0
  499. package/dist/server/boot.js +465 -0
  500. package/dist/server/client-ip.d.ts +5 -1
  501. package/dist/server/client-ip.js +18 -6
  502. package/dist/server/cursor.d.ts +1 -1
  503. package/dist/server/cursor.js +2 -3
  504. package/dist/server/deadline.d.ts +13 -0
  505. package/dist/server/deadline.js +45 -0
  506. package/dist/server/key-check-bounds.d.ts +8 -0
  507. package/dist/server/key-check-bounds.js +46 -0
  508. package/dist/server/lifecycle.js +1 -1
  509. package/dist/server/mcp-http.d.ts +1 -4
  510. package/dist/server/mcp-http.js +34 -24
  511. package/dist/server/ready.d.ts +7 -0
  512. package/dist/server/ready.js +38 -0
  513. package/dist/server/request.d.ts +10 -4
  514. package/dist/server/request.js +63 -12
  515. package/dist/server/route-table.d.ts +15 -0
  516. package/dist/server/route-table.js +209 -0
  517. package/dist/server/routes/admin.js +13 -8
  518. package/dist/server/routes/customer-notes.d.ts +5 -5
  519. package/dist/server/routes/customer-notes.js +32 -97
  520. package/dist/server/routes/decisions.d.ts +5 -5
  521. package/dist/server/routes/decisions.js +42 -105
  522. package/dist/server/routes/incidents.d.ts +5 -5
  523. package/dist/server/routes/incidents.js +42 -95
  524. package/dist/server/routes/memories.js +12 -14
  525. package/dist/server/routes/object-routes.d.ts +40 -0
  526. package/dist/server/routes/object-routes.js +80 -0
  527. package/dist/server/routes/policies.d.ts +6 -6
  528. package/dist/server/routes/policies.js +40 -124
  529. package/dist/server/routes/predictions.js +29 -45
  530. package/dist/server/routes/processes.d.ts +5 -5
  531. package/dist/server/routes/processes.js +38 -118
  532. package/dist/server/routes/project-briefs.d.ts +6 -6
  533. package/dist/server/routes/project-briefs.js +38 -110
  534. package/dist/server/routes/recall.js +14 -12
  535. package/dist/server/routes/skills.d.ts +6 -6
  536. package/dist/server/routes/skills.js +37 -125
  537. package/dist/{server-detect.js → server/server-detect.js} +1 -1
  538. package/dist/server/sleep-child.d.ts +2 -0
  539. package/dist/server/sleep-child.js +19 -0
  540. package/dist/server/sleep-offload.d.ts +20 -0
  541. package/dist/server/sleep-offload.js +70 -0
  542. package/dist/server/tls.d.ts +6 -0
  543. package/dist/server/tls.js +24 -0
  544. package/dist/server/types.d.ts +27 -8
  545. package/dist/server/validation.d.ts +3 -4
  546. package/dist/server/validation.js +6 -11
  547. package/dist/server.d.ts +39 -61
  548. package/dist/server.js +24 -568
  549. package/dist/{project-merge.d.ts → sharing/project-merge.d.ts} +1 -1
  550. package/dist/{project-merge.js → sharing/project-merge.js} +26 -45
  551. package/dist/{scope.js → sharing/scope.js} +1 -1
  552. package/dist/{shared.d.ts → sharing/shared.d.ts} +10 -9
  553. package/dist/{shared.js → sharing/shared.js} +100 -77
  554. package/dist/{ambient-store.d.ts → store/ambient.d.ts} +2 -2
  555. package/dist/{ambient-store.js → store/ambient.js} +10 -10
  556. package/dist/store/audit-event.d.ts +11 -5
  557. package/dist/store/audit-event.js +5 -4
  558. package/dist/{audit.d.ts → store/audit.d.ts} +27 -3
  559. package/dist/{audit.js → store/audit.js} +91 -6
  560. package/dist/{auth.d.ts → store/auth.d.ts} +15 -32
  561. package/dist/{auth.js → store/auth.js} +100 -92
  562. package/dist/store/candidates.d.ts +23 -12
  563. package/dist/store/candidates.js +87 -35
  564. package/dist/{card-detail.d.ts → store/card-detail.d.ts} +3 -3
  565. package/dist/{card-detail.js → store/card-detail.js} +1 -1
  566. package/dist/{store-cards.d.ts → store/cards.d.ts} +14 -9
  567. package/dist/{store-cards.js → store/cards.js} +85 -146
  568. package/dist/store/compactions.d.ts +78 -0
  569. package/dist/store/compactions.js +93 -0
  570. package/dist/store/conflicts.d.ts +22 -5
  571. package/dist/store/conflicts.js +160 -109
  572. package/dist/store/connectors/github.d.ts +84 -0
  573. package/dist/store/connectors/github.js +180 -0
  574. package/dist/store/connectors/slack.d.ts +69 -0
  575. package/dist/store/connectors/slack.js +177 -0
  576. package/dist/store/dashboard-reads.d.ts +27 -0
  577. package/dist/store/dashboard-reads.js +92 -0
  578. package/dist/store/delete-and-batch.d.ts +20 -24
  579. package/dist/store/delete-and-batch.js +64 -40
  580. package/dist/{delivery-recorder.d.ts → store/delivery-recorder.d.ts} +12 -5
  581. package/dist/{delivery-recorder.js → store/delivery-recorder.js} +42 -30
  582. package/dist/store/descendant-page.d.ts +12 -0
  583. package/dist/store/descendant-page.js +99 -0
  584. package/dist/store/diagnostics.d.ts +47 -0
  585. package/dist/store/diagnostics.js +51 -0
  586. package/dist/store/doctor-reads.d.ts +16 -0
  587. package/dist/store/doctor-reads.js +19 -0
  588. package/dist/{dormant.d.ts → store/dormant.d.ts} +46 -12
  589. package/dist/{dormant.js → store/dormant.js} +151 -6
  590. package/dist/{embeddings.d.ts → store/embeddings/index.d.ts} +10 -6
  591. package/dist/{embeddings.js → store/embeddings/index.js} +60 -44
  592. package/dist/{local-embedding.d.ts → store/embeddings/local.d.ts} +1 -1
  593. package/dist/{local-embedding.js → store/embeddings/local.js} +68 -57
  594. package/dist/{embedding-provider.d.ts → store/embeddings/provider.d.ts} +2 -2
  595. package/dist/{embedding-provider.js → store/embeddings/provider.js} +47 -32
  596. package/dist/store/entry-reads.d.ts +46 -7
  597. package/dist/store/entry-reads.js +120 -21
  598. package/dist/store/entry-row.d.ts +8 -2
  599. package/dist/store/entry-row.js +28 -8
  600. package/dist/store/entry-writes.d.ts +33 -4
  601. package/dist/store/entry-writes.js +108 -26
  602. package/dist/{failure-log.d.ts → store/failure-log.d.ts} +7 -2
  603. package/dist/{failure-log.js → store/failure-log.js} +9 -2
  604. package/dist/{goals.d.ts → store/goals.d.ts} +6 -46
  605. package/dist/{goals.js → store/goals.js} +45 -94
  606. package/dist/store/graph-queue.d.ts +29 -0
  607. package/dist/store/graph-queue.js +101 -0
  608. package/dist/{graph/read.d.ts → store/graph-reads.d.ts} +26 -34
  609. package/dist/{graph/read.js → store/graph-reads.js} +63 -115
  610. package/dist/{graph/types.d.ts → store/graph-rows.d.ts} +68 -8
  611. package/dist/{graph/rows.js → store/graph-rows.js} +14 -3
  612. package/dist/store/graph-view-rows.d.ts +12 -0
  613. package/dist/store/graph-view-rows.js +67 -0
  614. package/dist/store/graph-writes.d.ts +58 -0
  615. package/dist/store/graph-writes.js +256 -0
  616. package/dist/store/half-life.d.ts +34 -0
  617. package/dist/store/half-life.js +77 -0
  618. package/dist/store/handoffs.d.ts +1 -1
  619. package/dist/store/handoffs.js +39 -30
  620. package/dist/store/index-and-stats.d.ts +8 -1
  621. package/dist/store/index-and-stats.js +51 -48
  622. package/dist/store/index.d.ts +4 -0
  623. package/dist/store/index.js +3 -0
  624. package/dist/store/key-audit.d.ts +2 -2
  625. package/dist/store/key-audit.js +4 -4
  626. package/dist/store/key-writes.d.ts +12 -5
  627. package/dist/store/key-writes.js +30 -4
  628. package/dist/store/ledger-turn.d.ts +17 -0
  629. package/dist/store/ledger-turn.js +27 -0
  630. package/dist/store/markdown.d.ts +1 -1
  631. package/dist/store/markdown.js +4 -3
  632. package/dist/store/mirrors.d.ts +5 -7
  633. package/dist/store/mirrors.js +39 -25
  634. package/dist/store/object-types.d.ts +189 -0
  635. package/dist/store/object-types.js +4 -0
  636. package/dist/store/open.d.ts +6 -4
  637. package/dist/store/open.js +24 -23
  638. package/dist/store/planning-fallacy-evidence.d.ts +42 -0
  639. package/dist/store/planning-fallacy-evidence.js +81 -0
  640. package/dist/store/port.d.ts +646 -0
  641. package/dist/store/port.js +17 -0
  642. package/dist/{predictions/store.d.ts → store/predictions.d.ts} +15 -2
  643. package/dist/{predictions/store.js → store/predictions.js} +52 -67
  644. package/dist/{quarantine.d.ts → store/quarantine.d.ts} +8 -8
  645. package/dist/{quarantine.js → store/quarantine.js} +64 -22
  646. package/dist/{raw-archive.d.ts → store/raw-archive.d.ts} +3 -1
  647. package/dist/{raw-archive.js → store/raw-archive.js} +6 -2
  648. package/dist/{recall-scope.d.ts → store/recall-scope.d.ts} +2 -2
  649. package/dist/{recall-scope.js → store/recall-scope.js} +3 -3
  650. package/dist/{recall-trace.d.ts → store/recall-trace.d.ts} +13 -14
  651. package/dist/{recall-trace.js → store/recall-trace.js} +38 -43
  652. package/dist/store/rejected-values.d.ts +55 -0
  653. package/dist/store/rejected-values.js +162 -0
  654. package/dist/{rejection.d.ts → store/rejection.d.ts} +2 -2
  655. package/dist/{rejection.js → store/rejection.js} +3 -2
  656. package/dist/store/rows.d.ts +2 -3
  657. package/dist/store/rows.js +18 -11
  658. package/dist/store/search-rows.d.ts +15 -4
  659. package/dist/store/search-rows.js +41 -28
  660. package/dist/store/sessions.d.ts +13 -2
  661. package/dist/store/sessions.js +79 -45
  662. package/dist/store/sqlite/commit-watch.d.ts +4 -0
  663. package/dist/store/sqlite/commit-watch.js +29 -0
  664. package/dist/store/sqlite/connector-events-group.d.ts +5 -0
  665. package/dist/store/sqlite/connector-events-group.js +50 -0
  666. package/dist/store/sqlite/connector-writes-group.d.ts +6 -0
  667. package/dist/store/sqlite/connector-writes-group.js +65 -0
  668. package/dist/store/sqlite/dag-reads-group.d.ts +3 -0
  669. package/dist/store/sqlite/dag-reads-group.js +45 -0
  670. package/dist/store/sqlite/entry-writes-group.d.ts +18 -0
  671. package/dist/store/{entry-writes-group.js → sqlite/entry-writes-group.js} +73 -60
  672. package/dist/store/sqlite/error-codec.d.ts +17 -0
  673. package/dist/store/sqlite/error-codec.js +59 -0
  674. package/dist/store/sqlite/executor-counts.d.ts +10 -0
  675. package/dist/store/sqlite/executor-counts.js +11 -0
  676. package/dist/store/sqlite/executor.d.ts +28 -0
  677. package/dist/store/sqlite/executor.js +286 -0
  678. package/dist/store/sqlite/graph-reads-group.d.ts +5 -0
  679. package/dist/store/sqlite/graph-reads-group.js +18 -0
  680. package/dist/store/sqlite/local.d.ts +21 -0
  681. package/dist/store/sqlite/local.js +38 -0
  682. package/dist/store/sqlite/object-rows.d.ts +102 -0
  683. package/dist/store/sqlite/object-rows.js +218 -0
  684. package/dist/store/sqlite/objects-group.d.ts +20 -0
  685. package/dist/store/sqlite/objects-group.js +314 -0
  686. package/dist/store/sqlite/predictions-group.d.ts +5 -0
  687. package/dist/store/sqlite/predictions-group.js +28 -0
  688. package/dist/store/sqlite/quarantine-group.d.ts +5 -0
  689. package/dist/store/sqlite/quarantine-group.js +38 -0
  690. package/dist/store/sqlite/store.d.ts +26 -0
  691. package/dist/store/sqlite/store.js +295 -0
  692. package/dist/store/sqlite/vector-pack.d.ts +18 -0
  693. package/dist/store/sqlite/vector-pack.js +46 -0
  694. package/dist/store/sqlite/vector-reads-group.d.ts +3 -0
  695. package/dist/store/sqlite/vector-reads-group.js +23 -0
  696. package/dist/store/sqlite/worker-entry.d.ts +2 -0
  697. package/dist/store/sqlite/worker-entry.js +8 -0
  698. package/dist/store/sqlite/worker-jobs.d.ts +5 -0
  699. package/dist/store/sqlite/worker-jobs.js +116 -0
  700. package/dist/store/sqlite/worker-ops.d.ts +124 -0
  701. package/dist/store/sqlite/worker-ops.js +82 -0
  702. package/dist/store/sqlite/worker-store.d.ts +8 -0
  703. package/dist/store/sqlite/worker-store.js +76 -0
  704. package/dist/store/summaries.d.ts +2 -11
  705. package/dist/store/summaries.js +17 -44
  706. package/dist/{summary-dirty.d.ts → store/summary-dirty.d.ts} +1 -1
  707. package/dist/store/tenant-lookup.d.ts +1 -1
  708. package/dist/{tenant.d.ts → store/tenant.d.ts} +2 -2
  709. package/dist/{tenant.js → store/tenant.js} +1 -1
  710. package/dist/store/token-ledger-rows.d.ts +61 -0
  711. package/dist/store/token-ledger-rows.js +68 -0
  712. package/dist/{token-ledger.d.ts → store/token-ledger.d.ts} +2 -9
  713. package/dist/{token-ledger.js → store/token-ledger.js} +31 -78
  714. package/dist/store/tombstone-checks.d.ts +12 -0
  715. package/dist/store/tombstone-checks.js +31 -0
  716. package/dist/store/usage-reports.d.ts +7 -0
  717. package/dist/store/usage-reports.js +26 -0
  718. package/dist/store/vector-writes.d.ts +10 -3
  719. package/dist/store/vector-writes.js +35 -5
  720. package/dist/{working-memory.d.ts → store/working-memory.d.ts} +5 -1
  721. package/dist/{working-memory.js → store/working-memory.js} +39 -41
  722. package/dist/support-bundle.d.ts +1 -1
  723. package/dist/support-bundle.js +13 -33
  724. package/dist/{gated-write.d.ts → trust/gated-write.d.ts} +2 -2
  725. package/dist/{gated-write.js → trust/gated-write.js} +6 -6
  726. package/dist/trust/quarantine.d.ts +4 -0
  727. package/dist/trust/quarantine.js +8 -0
  728. package/dist/trust/reject-flow.d.ts +23 -0
  729. package/dist/trust/reject-flow.js +67 -0
  730. package/dist/util/anthropic-messages.d.ts +31 -0
  731. package/dist/util/anthropic-messages.js +46 -0
  732. package/dist/util/atomic-write.d.ts +3 -0
  733. package/dist/util/atomic-write.js +107 -0
  734. package/dist/util/crash-handlers.d.ts +5 -0
  735. package/dist/util/crash-handlers.js +30 -0
  736. package/dist/{env.d.ts → util/env.d.ts} +15 -2
  737. package/dist/{env.js → util/env.js} +20 -2
  738. package/dist/util/home-path.js +67 -0
  739. package/dist/{http-retry.d.ts → util/http-retry.d.ts} +6 -2
  740. package/dist/{http-retry.js → util/http-retry.js} +38 -7
  741. package/dist/{http-util.d.ts → util/http-util.d.ts} +14 -3
  742. package/dist/{http-util.js → util/http-util.js} +31 -11
  743. package/dist/util/json.d.ts +17 -0
  744. package/dist/util/json.js +25 -0
  745. package/dist/{log.d.ts → util/log.d.ts} +5 -2
  746. package/dist/{log.js → util/log.js} +12 -3
  747. package/dist/util/real-path.d.ts +3 -0
  748. package/dist/util/real-path.js +15 -0
  749. package/dist/util/request-scope.d.ts +27 -0
  750. package/dist/util/request-scope.js +47 -0
  751. package/dist/{same-text.d.ts → util/same-text.d.ts} +1 -1
  752. package/dist/{secret-detect.js → util/secret-detect.js} +5 -4
  753. package/dist/util/stored-json.d.ts +9 -0
  754. package/dist/util/stored-json.js +8 -0
  755. package/dist/util/time.d.ts +2 -0
  756. package/dist/util/time.js +3 -0
  757. package/dist/util/token-text.d.ts +18 -0
  758. package/dist/util/token-text.js +23 -0
  759. package/dist/{version.d.ts → util/version.d.ts} +1 -1
  760. package/dist/{version.js → util/version.js} +1 -1
  761. package/extensions/openclaw-plugin/index.ts +1 -5
  762. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  763. package/extensions/openclaw-plugin/package.json +1 -1
  764. package/openclaw.plugin.json +1 -1
  765. package/package.json +2 -2
  766. package/dist/api.d.ts +0 -26
  767. package/dist/api.js +0 -29
  768. package/dist/connectors/github/idempotency.d.ts +0 -19
  769. package/dist/connectors/github/idempotency.js +0 -27
  770. package/dist/connectors/slack/idempotency.d.ts +0 -17
  771. package/dist/connectors/slack/idempotency.js +0 -31
  772. package/dist/customer-notes.js +0 -336
  773. package/dist/db.d.ts +0 -9
  774. package/dist/db.js +0 -8
  775. package/dist/decisions.js +0 -326
  776. package/dist/extract.js +0 -133
  777. package/dist/graph/rows.d.ts +0 -45
  778. package/dist/graph/types.js +0 -11
  779. package/dist/half-life-migration.js +0 -182
  780. package/dist/handoff.js +0 -68
  781. package/dist/home-path.js +0 -24
  782. package/dist/incidents.js +0 -349
  783. package/dist/instruction-detect.js +0 -27
  784. package/dist/json.d.ts +0 -7
  785. package/dist/json.js +0 -11
  786. package/dist/ledger-db.d.ts +0 -10
  787. package/dist/ledger-db.js +0 -42
  788. package/dist/policies.js +0 -434
  789. package/dist/processes.js +0 -371
  790. package/dist/project-briefs.js +0 -523
  791. package/dist/reject-flow.d.ts +0 -69
  792. package/dist/reject-flow.js +0 -260
  793. package/dist/session-owners.d.ts +0 -7
  794. package/dist/session-owners.js +0 -54
  795. package/dist/skills.js +0 -367
  796. package/dist/store/entry-writes-group.d.ts +0 -9
  797. package/dist/store-port.d.ts +0 -262
  798. package/dist/store-port.js +0 -178
  799. /package/dist/{context-auto.d.ts → api/context-auto.d.ts} +0 -0
  800. /package/dist/{instruction-detect.d.ts → api/instruction-detect.d.ts} +0 -0
  801. /package/dist/{recall-history.d.ts → api/recall-history.d.ts} +0 -0
  802. /package/dist/{codex-patch.d.ts → capture/codex-patch.d.ts} +0 -0
  803. /package/dist/{compaction-items.d.ts → capture/compaction-items.d.ts} +0 -0
  804. /package/dist/{compaction-spool.d.ts → capture/compaction-spool.d.ts} +0 -0
  805. /package/dist/{share-scrub.d.ts → capture/share-scrub.d.ts} +0 -0
  806. /package/dist/{correction-latency.js → cli/correction-latency.js} +0 -0
  807. /package/dist/{provenance-coverage.js → cli/provenance-coverage.js} +0 -0
  808. /package/dist/{quality-repair.d.ts → cli/quality-repair.d.ts} +0 -0
  809. /package/dist/{stdin.d.ts → cli/stdin.d.ts} +0 -0
  810. /package/dist/{dedupe.d.ts → consolidate/dedupe.d.ts} +0 -0
  811. /package/dist/{memory-value-weights.d.ts → consolidate/memory-value-weights.d.ts} +0 -0
  812. /package/dist/{memory-value-weights.js → consolidate/memory-value-weights.js} +0 -0
  813. /package/dist/{overlap-index.d.ts → consolidate/overlap-index.d.ts} +0 -0
  814. /package/dist/{overlap-index.js → consolidate/overlap-index.js} +0 -0
  815. /package/dist/{trace.d.ts → consolidate/trace.d.ts} +0 -0
  816. /package/dist/{ablation.d.ts → core/ablation.d.ts} +0 -0
  817. /package/dist/{ambient.d.ts → core/ambient.d.ts} +0 -0
  818. /package/dist/{api-errors.d.ts → core/api-errors.d.ts} +0 -0
  819. /package/dist/{api-errors.js → core/api-errors.js} +0 -0
  820. /package/dist/{card.d.ts → core/card.d.ts} +0 -0
  821. /package/dist/{card.js → core/card.js} +0 -0
  822. /package/dist/{handoff.d.ts → core/handoff.d.ts} +0 -0
  823. /package/dist/{memory-quality.d.ts → core/memory-quality.d.ts} +0 -0
  824. /package/dist/{physics-config.d.ts → core/physics-config.d.ts} +0 -0
  825. /package/dist/{physics-config.js → core/physics-config.js} +0 -0
  826. /package/dist/{project-remote.d.ts → core/project-remote.d.ts} +0 -0
  827. /package/dist/{prompt-recall.d.ts → core/prompt-recall.d.ts} +0 -0
  828. /package/dist/{salience.d.ts → core/salience.d.ts} +0 -0
  829. /package/dist/{dashboard-params.d.ts → dashboard/dashboard-params.d.ts} +0 -0
  830. /package/dist/{dashboard-params.js → dashboard/dashboard-params.js} +0 -0
  831. /package/dist/{dashboard-types.d.ts → dashboard/dashboard-types.d.ts} +0 -0
  832. /package/dist/{dashboard-types.js → dashboard/dashboard-types.js} +0 -0
  833. /package/dist/{dashboard.d.ts → dashboard/dashboard.d.ts} +0 -0
  834. /package/dist/{eval-stats.d.ts → eval/eval-stats.d.ts} +0 -0
  835. /package/dist/{cli → hooks}/hook-blocks.d.ts +0 -0
  836. /package/dist/{path-context.d.ts → search/path-context.d.ts} +0 -0
  837. /package/dist/{rrf.d.ts → search/rrf.d.ts} +0 -0
  838. /package/dist/{rrf.js → search/rrf.js} +0 -0
  839. /package/dist/{rate-limit.d.ts → server/rate-limit.d.ts} +0 -0
  840. /package/dist/{rate-limit.js → server/rate-limit.js} +0 -0
  841. /package/dist/{server-detect.d.ts → server/server-detect.d.ts} +0 -0
  842. /package/dist/{scope.d.ts → sharing/scope.d.ts} +0 -0
  843. /package/dist/{summary-dirty.js → store/summary-dirty.js} +0 -0
  844. /package/dist/{yaml.d.ts → store/yaml.d.ts} +0 -0
  845. /package/dist/{yaml.js → store/yaml.js} +0 -0
  846. /package/dist/{escape.d.ts → util/escape.d.ts} +0 -0
  847. /package/dist/{escape.js → util/escape.js} +0 -0
  848. /package/dist/{home-path.d.ts → util/home-path.d.ts} +0 -0
  849. /package/dist/{keyset.d.ts → util/keyset.d.ts} +0 -0
  850. /package/dist/{keyset.js → util/keyset.js} +0 -0
  851. /package/dist/{same-text.js → util/same-text.js} +0 -0
  852. /package/dist/{secret-detect.d.ts → util/secret-detect.d.ts} +0 -0
  853. /package/dist/{db → util}/sqlite-blocked.d.ts +0 -0
  854. /package/dist/{db → util}/sqlite-blocked.js +0 -0
  855. /package/dist/{tokenize.d.ts → util/tokenize.d.ts} +0 -0
  856. /package/dist/{tokenize.js → util/tokenize.js} +0 -0
  857. /package/dist/{transcript-tail.d.ts → util/transcript-tail.d.ts} +0 -0
  858. /package/dist/{transcript-tail.js → util/transcript-tail.js} +0 -0
  859. /package/dist/{write-budget.d.ts → util/write-budget.d.ts} +0 -0
  860. /package/dist/{write-budget.js → util/write-budget.js} +0 -0
package/dist/cli/auth.js CHANGED
@@ -1,20 +1,21 @@
1
1
  // `hippo auth`: create, list, revoke and scope API keys.
2
- import { openHippoDb, closeHippoDb } from '../db.js';
3
- import { listApiKeys } from '../auth.js';
4
- import * as api from '../api.js';
5
- import { resolveTenantId } from '../tenant.js';
2
+ import { listApiKeys } from '../store/auth.js';
3
+ import * as api from '../api/index.js';
4
+ import { resolveTenantId } from '../store/tenant.js';
6
5
  import { printError } from './output.js';
6
+ import { boolFlag, stringFlag } from './flag-values.js';
7
7
  import { resolveAuthRoot } from './shared.js';
8
+ import { errorMessage } from '../util/log.js';
8
9
  // ---------------------------------------------------------------------------
9
10
  // Auth subcommands
10
11
  // ---------------------------------------------------------------------------
11
12
  function cmdAuthCreate(hippoRoot, flags) {
12
13
  const root = resolveAuthRoot(hippoRoot, flags);
13
- const tenantFlag = typeof flags['tenant'] === 'string' ? flags['tenant'] : undefined;
14
- const labelFlag = typeof flags['label'] === 'string' ? flags['label'] : undefined;
15
- const asJson = Boolean(flags['json']);
14
+ const tenantFlag = stringFlag(flags, 'tenant');
15
+ const labelFlag = stringFlag(flags, 'label');
16
+ const asJson = boolFlag(flags, 'json');
16
17
  // Accepts 'admin' | 'member' only; anything else exits 1 so a typo doesn't silently default to admin.
17
- const roleFlag = typeof flags['role'] === 'string' ? flags['role'] : undefined;
18
+ const roleFlag = stringFlag(flags, 'role');
18
19
  let role = 'admin';
19
20
  if (roleFlag !== undefined) {
20
21
  if (roleFlag !== 'admin' && roleFlag !== 'member') {
@@ -23,6 +24,10 @@ function cmdAuthCreate(hippoRoot, flags) {
23
24
  }
24
25
  role = roleFlag;
25
26
  }
27
+ else {
28
+ // The default is the widest key hippo mints, so the operator is told at the moment of choosing. Stderr keeps --json output clean.
29
+ printError('hippo auth create: no --role given, so this is an admin key, and it never expires. Pass --role member for a narrower key; revoke either with `hippo auth revoke <key_id>`.');
30
+ }
26
31
  // The CLI's --tenant flag is the only legitimate cross-tenant override
27
32
  // (admin minting a key for another tenant from the local machine). It
28
33
  // flows through ctx.tenantId, NOT through opts — authCreate's opts no
@@ -60,16 +65,9 @@ function formatKeyRow(item) {
60
65
  }
61
66
  function cmdAuthList(hippoRoot, flags) {
62
67
  const root = resolveAuthRoot(hippoRoot, flags);
63
- const includeRevoked = Boolean(flags['all']);
64
- const asJson = Boolean(flags['json']);
65
- const db = openHippoDb(root);
66
- let items;
67
- try {
68
- items = listApiKeys(db, { active: !includeRevoked });
69
- }
70
- finally {
71
- closeHippoDb(db);
72
- }
68
+ const includeRevoked = boolFlag(flags, 'all');
69
+ const asJson = boolFlag(flags, 'json');
70
+ const items = listApiKeys(root, { active: !includeRevoked });
73
71
  if (asJson) {
74
72
  console.log(JSON.stringify(items));
75
73
  return;
@@ -100,7 +98,7 @@ function cmdAuthRevoke(hippoRoot, keyId, flags) {
100
98
  revokedAt = api.authRevoke(ctx, keyId).revokedAt;
101
99
  }
102
100
  catch (err) {
103
- printError(`Error: ${err instanceof Error ? err.message : String(err)}`);
101
+ printError(`Error: ${errorMessage(err)}`);
104
102
  process.exit(1);
105
103
  }
106
104
  if (flags['json']) {
@@ -119,7 +117,7 @@ function cmdAuthScopeGrant(hippoRoot, keyId, scope, grant, flags) {
119
117
  api.authUngrant(ctx, keyId, scope);
120
118
  }
121
119
  catch (err) {
122
- printError(`Error: ${err instanceof Error ? err.message : String(err)}`);
120
+ printError(`Error: ${errorMessage(err)}`);
123
121
  process.exit(1);
124
122
  }
125
123
  if (flags['json']) {
@@ -1,4 +1,5 @@
1
- export declare function cmdProjectBrief(hippoRoot: string, args: string[], flags: Record<string, string | boolean | string[]>): void;
2
- export declare function cmdGraph(hippoRoot: string, args: string[], flags: Record<string, string | boolean | string[]>): void;
3
- export declare function cmdCustomerNote(hippoRoot: string, args: string[], flags: Record<string, string | boolean | string[]>): void;
1
+ import { type CliFlags } from './flag-values.js';
2
+ export declare function cmdProjectBrief(hippoRoot: string, args: string[], flags: CliFlags): void;
3
+ export declare function cmdGraph(hippoRoot: string, args: string[], flags: CliFlags): void;
4
+ export declare function cmdCustomerNote(hippoRoot: string, args: string[], flags: CliFlags): void;
4
5
  //# sourceMappingURL=briefs.d.ts.map
@@ -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. */