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
@@ -1,22 +1,17 @@
1
1
  // First-class object verbs for processes, policies and skills.
2
- import { extractPathTags } from '../path-context.js';
3
- import * as processesModule from '../processes.js';
4
- import * as policiesModule from '../policies.js';
5
- import * as skillsModule from '../skills.js';
6
- import { resolveTenantId } from '../tenant.js';
2
+ import { extractPathTags } from '../search/path-context.js';
3
+ import * as processesModule from '../objects/processes.js';
4
+ import * as policiesModule from '../objects/policies.js';
5
+ import * as skillsModule from '../objects/skills.js';
6
+ import { resolveTenantId } from '../store/tenant.js';
7
7
  import { printError } from './output.js';
8
+ import { nonEmptyStringFlag, stringFlag } from './flag-values.js';
8
9
  import { requireInit } from './shared.js';
9
- // parseInt alone accepts trailing junk ('1abc' -> 1), which would let `process close 1abc`
10
- // silently hit the wrong row; require the whole arg to be digits.
11
- function parsePositiveProcessId(idRaw) {
12
- const s = String(idRaw ?? '').trim();
13
- const id = parseInt(s, 10);
14
- if (!/^\d+$/.test(s) || id <= 0) {
15
- printError(`Invalid process id: "${idRaw}" (expected a positive integer).`);
16
- process.exit(1);
17
- }
18
- return id;
19
- }
10
+ import { closeObject, foundOrExit, idArgOrExit, listObjects, printLifecycleTail } from './object-verbs.js';
11
+ import { errorMessage } from '../util/log.js';
12
+ const PROCESS = { cmd: 'process', noun: 'Process', idLabel: 'process' };
13
+ const POLICY = { cmd: 'policy', noun: 'Policy', idLabel: 'policy' };
14
+ const SKILL = { cmd: 'skill', noun: 'Skill', idLabel: 'skill' };
20
15
  // --step is a repeatable flag (collected into an array by parseArgs). A single
21
16
  // --step yields a string; normalize both to string[]. A value-less --step errors.
22
17
  function collectProcessSteps(stepRaw) {
@@ -30,57 +25,23 @@ function collectProcessSteps(stepRaw) {
30
25
  }
31
26
  return [];
32
27
  }
33
- function parseListLimit(flags) {
34
- const limitRaw = flags['limit'];
35
- const limit = limitRaw !== undefined ? parseInt(String(limitRaw), 10) : 100;
36
- if (!Number.isFinite(limit) || limit <= 0) {
37
- printError(`Invalid --limit: "${limitRaw}". Must be a positive integer.`);
38
- process.exit(1);
39
- }
40
- return limit;
28
+ function printProcessRow(proc) {
29
+ console.log(`#${proc.id} [${proc.status}] v${proc.version} steps=${proc.steps.length} memory=${proc.memoryId ?? '-'}`);
30
+ console.log(` ${proc.processName}`);
31
+ if (proc.changeSummary)
32
+ console.log(` change: ${proc.changeSummary}`);
41
33
  }
42
34
  function processList(hippoRoot, tenantId, flags) {
43
- const statusRaw = flags['status'];
44
- const status = typeof statusRaw === 'string' ? statusRaw.trim() : 'all';
45
- const limit = parseListLimit(flags);
46
- let results;
47
- if (status === 'all') {
48
- results = processesModule.loadProcesses(hippoRoot, tenantId, { limit });
49
- }
50
- else {
51
- if (!processesModule.VALID_PROCESS_STATES.has(status)) {
52
- printError(`Invalid --status: "${status}". Must be one of: active | superseded | closed | all.`);
53
- process.exit(1);
54
- }
55
- results = processesModule.loadProcesses(hippoRoot, tenantId, {
56
- status: status,
57
- limit,
58
- });
59
- }
60
- if (results.length === 0) {
61
- console.log('No processes.');
62
- return;
63
- }
64
- console.log(`Found ${results.length} processes:\n`);
65
- for (const proc of results) {
66
- console.log(`#${proc.id} [${proc.status}] v${proc.version} steps=${proc.steps.length} memory=${proc.memoryId ?? '-'}`);
67
- console.log(` ${proc.processName}`);
68
- if (proc.changeSummary)
69
- console.log(` change: ${proc.changeSummary}`);
70
- }
35
+ listObjects(flags, {
36
+ plural: 'processes',
37
+ states: processesModule.VALID_PROCESS_STATES,
38
+ load: (opts) => processesModule.loadProcesses(hippoRoot, tenantId, opts),
39
+ printRow: printProcessRow,
40
+ });
71
41
  }
72
42
  function processGet(hippoRoot, tenantId, args) {
73
- const idRaw = args[1];
74
- if (!idRaw) {
75
- printError('Usage: hippo process get <id>');
76
- process.exit(1);
77
- }
78
- const id = parsePositiveProcessId(idRaw);
79
- const proc = processesModule.loadProcessById(hippoRoot, tenantId, id);
80
- if (!proc) {
81
- printError(`Process ${id} not found.`);
82
- process.exit(1);
83
- }
43
+ const id = idArgOrExit(args, 'Usage: hippo process get <id>', PROCESS.idLabel);
44
+ const proc = foundOrExit(processesModule.loadProcessById(hippoRoot, tenantId, id), PROCESS.noun, id);
84
45
  console.log(`Process #${proc.id}`);
85
46
  console.log(` name: ${proc.processName}`);
86
47
  console.log(` status: ${proc.status}`);
@@ -91,25 +52,10 @@ function processGet(hippoRoot, tenantId, args) {
91
52
  console.log(` steps:`);
92
53
  proc.steps.forEach((s, i) => console.log(` ${i + 1}. ${s}`));
93
54
  }
94
- if (proc.changeSummary)
95
- console.log(` change_summary: ${proc.changeSummary}`);
96
- if (proc.supersededBy !== null)
97
- console.log(` superseded_by: #${proc.supersededBy}`);
98
- if (proc.supersededAt)
99
- console.log(` superseded_at: ${proc.supersededAt}`);
100
- if (proc.closedAt)
101
- console.log(` closed_at: ${proc.closedAt}`);
102
- if (proc.memoryId)
103
- console.log(` memory: ${proc.memoryId}`);
104
- console.log(` created: ${proc.createdAt}`);
55
+ printLifecycleTail(proc);
105
56
  }
106
57
  function processSupersede(hippoRoot, tenantId, args, flags) {
107
- const idRaw = args[1];
108
- if (!idRaw) {
109
- printError('Usage: hippo process supersede <id> --step "<text>" [--step ...] [--change "<summary>"] [--description "<text>"]');
110
- process.exit(1);
111
- }
112
- const id = parsePositiveProcessId(idRaw);
58
+ const id = idArgOrExit(args, 'Usage: hippo process supersede <id> --step "<text>" [--step ...] [--change "<summary>"] [--description "<text>"]', PROCESS.idLabel);
113
59
  const steps = collectProcessSteps(flags['step']);
114
60
  if (steps.length === 0) {
115
61
  printError('hippo process supersede requires at least one --step "<text>" for the new version.');
@@ -118,15 +64,9 @@ function processSupersede(hippoRoot, tenantId, args, flags) {
118
64
  // A supersession is a new version of the SAME process, so the new row reuses the predecessor's name (stable identity
119
65
  // across versions). loadProcessById gives an early not-found before the write; saveProcess's in-SAVEPOINT preflight
120
66
  // is the authoritative active-state check.
121
- const existing = processesModule.loadProcessById(hippoRoot, tenantId, id);
122
- if (!existing) {
123
- printError(`Process ${id} not found.`);
124
- process.exit(1);
125
- }
126
- const changeRaw = flags['change'];
127
- const changeSummary = typeof changeRaw === 'string' && changeRaw ? changeRaw : undefined;
128
- const descRaw = flags['description'];
129
- const description = typeof descRaw === 'string' && descRaw ? descRaw : undefined;
67
+ const existing = foundOrExit(processesModule.loadProcessById(hippoRoot, tenantId, id), PROCESS.noun, id);
68
+ const changeSummary = nonEmptyStringFlag(flags, 'change');
69
+ const description = nonEmptyStringFlag(flags, 'description');
130
70
  const procPathTags = extractPathTags(process.cwd());
131
71
  const created = processesModule.saveProcess(hippoRoot, tenantId, {
132
72
  processName: existing.processName,
@@ -141,14 +81,7 @@ function processSupersede(hippoRoot, tenantId, args, flags) {
141
81
  console.log(` memory: ${created.memoryId}`);
142
82
  }
143
83
  function processClose(hippoRoot, tenantId, args) {
144
- const idRaw = args[1];
145
- if (!idRaw) {
146
- printError('Usage: hippo process close <id>');
147
- process.exit(1);
148
- }
149
- const id = parsePositiveProcessId(idRaw);
150
- const closed = processesModule.closeProcess(hippoRoot, tenantId, id);
151
- console.log(`Process #${closed.id} closed.`);
84
+ closeObject(args, PROCESS, (id) => processesModule.closeProcess(hippoRoot, tenantId, id));
152
85
  }
153
86
  export function cmdProcess(hippoRoot, args, flags) {
154
87
  requireInit(hippoRoot);
@@ -177,8 +110,7 @@ function processCreate(hippoRoot, tenantId, processName, flags) {
177
110
  process.exit(1);
178
111
  }
179
112
  const steps = collectProcessSteps(flags['step']);
180
- const descRaw = flags['description'];
181
- const description = typeof descRaw === 'string' && descRaw ? descRaw : undefined;
113
+ const description = nonEmptyStringFlag(flags, 'description');
182
114
  const procPathTags = extractPathTags(process.cwd());
183
115
  const created = processesModule.saveProcess(hippoRoot, tenantId, {
184
116
  processName,
@@ -190,16 +122,6 @@ function processCreate(hippoRoot, tenantId, processName, flags) {
190
122
  if (created.memoryId)
191
123
  console.log(` memory: ${created.memoryId}`);
192
124
  }
193
- // Strict positive-integer id parse for the mutating policy subcommands: parseInt alone accepts '1abc' -> 1.
194
- function parsePositivePolicyId(idRaw) {
195
- const s = String(idRaw ?? '').trim();
196
- const id = parseInt(s, 10);
197
- if (!/^\d+$/.test(s) || id <= 0) {
198
- printError(`Invalid policy id: "${idRaw}" (expected a positive integer).`);
199
- process.exit(1);
200
- }
201
- return id;
202
- }
203
125
  function printPolicyRow(p) {
204
126
  const range = p.validTo ? `${p.validFrom}..${p.validTo}` : `${p.validFrom}..(open)`;
205
127
  console.log(`#${p.id} [${p.status}] v${p.version} ${range} memory=${p.memoryId ?? '-'}`);
@@ -208,30 +130,12 @@ function printPolicyRow(p) {
208
130
  console.log(` change: ${p.changeSummary}`);
209
131
  }
210
132
  function policyList(hippoRoot, tenantId, flags) {
211
- const statusRaw = flags['status'];
212
- const status = typeof statusRaw === 'string' ? statusRaw.trim() : 'all';
213
- const limit = parseListLimit(flags);
214
- let results;
215
- if (status === 'all') {
216
- results = policiesModule.loadPolicies(hippoRoot, tenantId, { limit });
217
- }
218
- else {
219
- if (!policiesModule.VALID_POLICY_STATES.has(status)) {
220
- printError(`Invalid --status: "${status}". Must be one of: active | superseded | closed | all.`);
221
- process.exit(1);
222
- }
223
- results = policiesModule.loadPolicies(hippoRoot, tenantId, {
224
- status: status,
225
- limit,
226
- });
227
- }
228
- if (results.length === 0) {
229
- console.log('No policies.');
230
- return;
231
- }
232
- console.log(`Found ${results.length} policies:\n`);
233
- for (const p of results)
234
- printPolicyRow(p);
133
+ listObjects(flags, {
134
+ plural: 'policies',
135
+ states: policiesModule.VALID_POLICY_STATES,
136
+ load: (opts) => policiesModule.loadPolicies(hippoRoot, tenantId, opts),
137
+ printRow: printPolicyRow,
138
+ });
235
139
  }
236
140
  function policyAsOf(hippoRoot, tenantId, args, flags) {
237
141
  const dateRaw = args[1];
@@ -239,14 +143,13 @@ function policyAsOf(hippoRoot, tenantId, args, flags) {
239
143
  printError('Usage: hippo policy asof <iso-date> [--name "<policy>"]');
240
144
  process.exit(1);
241
145
  }
242
- const nameRaw = flags['name'];
243
- const name = typeof nameRaw === 'string' && nameRaw ? nameRaw : undefined;
146
+ const name = nonEmptyStringFlag(flags, 'name');
244
147
  let results;
245
148
  try {
246
149
  results = policiesModule.loadPoliciesAsOf(hippoRoot, tenantId, dateRaw, { name });
247
150
  }
248
151
  catch (e) {
249
- printError(e.message);
152
+ printError(errorMessage(e));
250
153
  process.exit(1);
251
154
  }
252
155
  if (results.length === 0) {
@@ -258,17 +161,8 @@ function policyAsOf(hippoRoot, tenantId, args, flags) {
258
161
  printPolicyRow(p);
259
162
  }
260
163
  function policyGet(hippoRoot, tenantId, args) {
261
- const idRaw = args[1];
262
- if (!idRaw) {
263
- printError('Usage: hippo policy get <id>');
264
- process.exit(1);
265
- }
266
- const id = parsePositivePolicyId(idRaw);
267
- const p = policiesModule.loadPolicyById(hippoRoot, tenantId, id);
268
- if (!p) {
269
- printError(`Policy ${id} not found.`);
270
- process.exit(1);
271
- }
164
+ const id = idArgOrExit(args, 'Usage: hippo policy get <id>', POLICY.idLabel);
165
+ const p = foundOrExit(policiesModule.loadPolicyById(hippoRoot, tenantId, id), POLICY.noun, id);
272
166
  console.log(`Policy #${p.id}`);
273
167
  console.log(` name: ${p.policyName}`);
274
168
  console.log(` text: ${p.policyText}`);
@@ -276,45 +170,23 @@ function policyGet(hippoRoot, tenantId, args) {
276
170
  console.log(` version: ${p.version}`);
277
171
  console.log(` valid_from: ${p.validFrom}`);
278
172
  console.log(` valid_to: ${p.validTo ?? '(open-ended)'}`);
279
- if (p.changeSummary)
280
- console.log(` change_summary: ${p.changeSummary}`);
281
- if (p.supersededBy !== null)
282
- console.log(` superseded_by: #${p.supersededBy}`);
283
- if (p.supersededAt)
284
- console.log(` superseded_at: ${p.supersededAt}`);
285
- if (p.closedAt)
286
- console.log(` closed_at: ${p.closedAt}`);
287
- if (p.memoryId)
288
- console.log(` memory: ${p.memoryId}`);
289
- console.log(` created: ${p.createdAt}`);
173
+ printLifecycleTail(p);
290
174
  }
291
175
  function policySupersede(hippoRoot, tenantId, args, flags) {
292
- const idRaw = args[1];
293
- if (!idRaw) {
294
- printError('Usage: hippo policy supersede <id> --text "<rule>" [--from <iso>] [--to <iso>] [--change "<summary>"]');
295
- process.exit(1);
296
- }
297
- const id = parsePositivePolicyId(idRaw);
298
- const textRaw = flags['text'];
299
- if (typeof textRaw !== 'string' || !textRaw.trim()) {
176
+ const id = idArgOrExit(args, 'Usage: hippo policy supersede <id> --text "<rule>" [--from <iso>] [--to <iso>] [--change "<summary>"]', POLICY.idLabel);
177
+ const textRaw = stringFlag(flags, 'text');
178
+ if (!textRaw?.trim()) {
300
179
  printError('hippo policy supersede requires --text "<rule>" for the new version.');
301
180
  process.exit(1);
302
181
  }
303
- const existing = policiesModule.loadPolicyById(hippoRoot, tenantId, id);
304
- if (!existing) {
305
- printError(`Policy ${id} not found.`);
306
- process.exit(1);
307
- }
308
- const fromRaw = flags['from'];
309
- const toRaw = flags['to'];
310
- const changeRaw = flags['change'];
182
+ const existing = foundOrExit(policiesModule.loadPolicyById(hippoRoot, tenantId, id), POLICY.noun, id);
311
183
  try {
312
184
  const created = policiesModule.savePolicy(hippoRoot, tenantId, {
313
185
  policyName: existing.policyName,
314
186
  policyText: textRaw,
315
- validFrom: typeof fromRaw === 'string' && fromRaw ? fromRaw : undefined,
316
- validTo: typeof toRaw === 'string' && toRaw ? toRaw : undefined,
317
- changeSummary: typeof changeRaw === 'string' && changeRaw ? changeRaw : undefined,
187
+ validFrom: nonEmptyStringFlag(flags, 'from'),
188
+ validTo: nonEmptyStringFlag(flags, 'to'),
189
+ changeSummary: nonEmptyStringFlag(flags, 'change'),
318
190
  supersedesPolicyId: id,
319
191
  extraTags: extractPathTags(process.cwd()),
320
192
  });
@@ -323,19 +195,12 @@ function policySupersede(hippoRoot, tenantId, args, flags) {
323
195
  console.log(` memory: ${created.memoryId}`);
324
196
  }
325
197
  catch (e) {
326
- printError(e.message);
198
+ printError(errorMessage(e));
327
199
  process.exit(1);
328
200
  }
329
201
  }
330
202
  function policyClose(hippoRoot, tenantId, args) {
331
- const idRaw = args[1];
332
- if (!idRaw) {
333
- printError('Usage: hippo policy close <id>');
334
- process.exit(1);
335
- }
336
- const id = parsePositivePolicyId(idRaw);
337
- const closed = policiesModule.closePolicy(hippoRoot, tenantId, id);
338
- console.log(`Policy #${closed.id} closed.`);
203
+ closeObject(args, POLICY, (id) => policiesModule.closePolicy(hippoRoot, tenantId, id));
339
204
  }
340
205
  export function cmdPolicy(hippoRoot, args, flags) {
341
206
  requireInit(hippoRoot);
@@ -358,8 +223,8 @@ function policyCreate(hippoRoot, tenantId, args, flags) {
358
223
  // Default subcommand: new (create). Accept both `policy new "<name>"` and the
359
224
  // bare `policy "<name>"` form: for the `new` keyword the name is args[1].
360
225
  const policyName = subcommand === 'new' ? (args[1] ?? '') : subcommand;
361
- const textRaw = flags['text'];
362
- if (!policyName || typeof textRaw !== 'string' || !textRaw.trim()) {
226
+ const textRaw = stringFlag(flags, 'text');
227
+ if (!policyName || !textRaw?.trim()) {
363
228
  printError('Usage: hippo policy new "<name>" --text "<rule>" [--from <iso>] [--to <iso>]');
364
229
  printError(' hippo policy list [--status active|superseded|closed|all] [--limit N]');
365
230
  printError(' hippo policy get <id>');
@@ -368,14 +233,12 @@ function policyCreate(hippoRoot, tenantId, args, flags) {
368
233
  printError(' hippo policy close <id>');
369
234
  process.exit(1);
370
235
  }
371
- const fromRaw = flags['from'];
372
- const toRaw = flags['to'];
373
236
  try {
374
237
  const created = policiesModule.savePolicy(hippoRoot, tenantId, {
375
238
  policyName,
376
239
  policyText: textRaw,
377
- validFrom: typeof fromRaw === 'string' && fromRaw ? fromRaw : undefined,
378
- validTo: typeof toRaw === 'string' && toRaw ? toRaw : undefined,
240
+ validFrom: nonEmptyStringFlag(flags, 'from'),
241
+ validTo: nonEmptyStringFlag(flags, 'to'),
379
242
  extraTags: extractPathTags(process.cwd()),
380
243
  });
381
244
  const range = created.validTo ? `${created.validFrom}..${created.validTo}` : `${created.validFrom}..(open)`;
@@ -384,20 +247,10 @@ function policyCreate(hippoRoot, tenantId, args, flags) {
384
247
  console.log(` memory: ${created.memoryId}`);
385
248
  }
386
249
  catch (e) {
387
- printError(e.message);
250
+ printError(errorMessage(e));
388
251
  process.exit(1);
389
252
  }
390
253
  }
391
- // Strict positive-integer id parse for the mutating skill subcommands: parseInt accepts '1abc' -> 1.
392
- function parsePositiveSkillId(idRaw) {
393
- const s = String(idRaw ?? '').trim();
394
- const id = parseInt(s, 10);
395
- if (!/^\d+$/.test(s) || id <= 0) {
396
- printError(`Invalid skill id: "${idRaw}" (expected a positive integer).`);
397
- process.exit(1);
398
- }
399
- return id;
400
- }
401
254
  function printSkillRow(s) {
402
255
  const trig = s.trigger ? ` when="${s.trigger}"` : '';
403
256
  console.log(`#${s.id} [${s.status}] v${s.version}${trig} memory=${s.memoryId ?? '-'}`);
@@ -406,30 +259,12 @@ function printSkillRow(s) {
406
259
  console.log(` change: ${s.changeSummary}`);
407
260
  }
408
261
  function skillList(hippoRoot, tenantId, flags) {
409
- const statusRaw = flags['status'];
410
- const status = typeof statusRaw === 'string' ? statusRaw.trim() : 'all';
411
- const limit = parseListLimit(flags);
412
- let results;
413
- if (status === 'all') {
414
- results = skillsModule.loadSkills(hippoRoot, tenantId, { limit });
415
- }
416
- else {
417
- if (!skillsModule.VALID_SKILL_STATES.has(status)) {
418
- printError(`Invalid --status: "${status}". Must be one of: active | superseded | closed | all.`);
419
- process.exit(1);
420
- }
421
- results = skillsModule.loadSkills(hippoRoot, tenantId, {
422
- status: status,
423
- limit,
424
- });
425
- }
426
- if (results.length === 0) {
427
- console.log('No skills.');
428
- return;
429
- }
430
- console.log(`Found ${results.length} skills:\n`);
431
- for (const s of results)
432
- printSkillRow(s);
262
+ listObjects(flags, {
263
+ plural: 'skills',
264
+ states: skillsModule.VALID_SKILL_STATES,
265
+ load: (opts) => skillsModule.loadSkills(hippoRoot, tenantId, opts),
266
+ printRow: printSkillRow,
267
+ });
433
268
  }
434
269
  function skillExport(hippoRoot, tenantId) {
435
270
  const md = skillsModule.exportSkills(hippoRoot, tenantId);
@@ -440,17 +275,8 @@ function skillExport(hippoRoot, tenantId) {
440
275
  console.log(md);
441
276
  }
442
277
  function skillGet(hippoRoot, tenantId, args) {
443
- const idRaw = args[1];
444
- if (!idRaw) {
445
- printError('Usage: hippo skill get <id>');
446
- process.exit(1);
447
- }
448
- const id = parsePositiveSkillId(idRaw);
449
- const s = skillsModule.loadSkillById(hippoRoot, tenantId, id);
450
- if (!s) {
451
- printError(`Skill ${id} not found.`);
452
- process.exit(1);
453
- }
278
+ const id = idArgOrExit(args, 'Usage: hippo skill get <id>', SKILL.idLabel);
279
+ const s = foundOrExit(skillsModule.loadSkillById(hippoRoot, tenantId, id), SKILL.noun, id);
454
280
  console.log(`Skill #${s.id}`);
455
281
  console.log(` name: ${s.skillName}`);
456
282
  console.log(` status: ${s.status}`);
@@ -458,43 +284,22 @@ function skillGet(hippoRoot, tenantId, args) {
458
284
  if (s.trigger)
459
285
  console.log(` when: ${s.trigger}`);
460
286
  console.log(` instructions: ${s.instructions}`);
461
- if (s.changeSummary)
462
- console.log(` change_summary: ${s.changeSummary}`);
463
- if (s.supersededBy !== null)
464
- console.log(` superseded_by: #${s.supersededBy}`);
465
- if (s.supersededAt)
466
- console.log(` superseded_at: ${s.supersededAt}`);
467
- if (s.closedAt)
468
- console.log(` closed_at: ${s.closedAt}`);
469
- if (s.memoryId)
470
- console.log(` memory: ${s.memoryId}`);
471
- console.log(` created: ${s.createdAt}`);
287
+ printLifecycleTail(s);
472
288
  }
473
289
  function skillSupersede(hippoRoot, tenantId, args, flags) {
474
- const idRaw = args[1];
475
- if (!idRaw) {
476
- printError('Usage: hippo skill supersede <id> --instructions "<text>" [--trigger "<when>"] [--change "<summary>"]');
477
- process.exit(1);
478
- }
479
- const id = parsePositiveSkillId(idRaw);
480
- const instrRaw = flags['instructions'];
481
- if (typeof instrRaw !== 'string' || !instrRaw.trim()) {
290
+ const id = idArgOrExit(args, 'Usage: hippo skill supersede <id> --instructions "<text>" [--trigger "<when>"] [--change "<summary>"]', SKILL.idLabel);
291
+ const instrRaw = stringFlag(flags, 'instructions');
292
+ if (!instrRaw?.trim()) {
482
293
  printError('hippo skill supersede requires --instructions "<text>" for the new version.');
483
294
  process.exit(1);
484
295
  }
485
- const existing = skillsModule.loadSkillById(hippoRoot, tenantId, id);
486
- if (!existing) {
487
- printError(`Skill ${id} not found.`);
488
- process.exit(1);
489
- }
490
- const trigRaw = flags['trigger'];
491
- const changeRaw = flags['change'];
296
+ const existing = foundOrExit(skillsModule.loadSkillById(hippoRoot, tenantId, id), SKILL.noun, id);
492
297
  try {
493
298
  const created = skillsModule.saveSkill(hippoRoot, tenantId, {
494
299
  skillName: existing.skillName,
495
300
  instructions: instrRaw,
496
- trigger: typeof trigRaw === 'string' && trigRaw ? trigRaw : undefined,
497
- changeSummary: typeof changeRaw === 'string' && changeRaw ? changeRaw : undefined,
301
+ trigger: nonEmptyStringFlag(flags, 'trigger'),
302
+ changeSummary: nonEmptyStringFlag(flags, 'change'),
498
303
  supersedesSkillId: id,
499
304
  extraTags: extractPathTags(process.cwd()),
500
305
  });
@@ -503,19 +308,12 @@ function skillSupersede(hippoRoot, tenantId, args, flags) {
503
308
  console.log(` memory: ${created.memoryId}`);
504
309
  }
505
310
  catch (e) {
506
- printError(e.message);
311
+ printError(errorMessage(e));
507
312
  process.exit(1);
508
313
  }
509
314
  }
510
315
  function skillClose(hippoRoot, tenantId, args) {
511
- const idRaw = args[1];
512
- if (!idRaw) {
513
- printError('Usage: hippo skill close <id>');
514
- process.exit(1);
515
- }
516
- const id = parsePositiveSkillId(idRaw);
517
- const closed = skillsModule.closeSkill(hippoRoot, tenantId, id);
518
- console.log(`Skill #${closed.id} closed.`);
316
+ closeObject(args, SKILL, (id) => skillsModule.closeSkill(hippoRoot, tenantId, id));
519
317
  }
520
318
  export function cmdSkill(hippoRoot, args, flags) {
521
319
  requireInit(hippoRoot);
@@ -538,8 +336,8 @@ function skillCreate(hippoRoot, tenantId, args, flags) {
538
336
  // Default subcommand: new (create). Accept both `skill new "<name>"` and the
539
337
  // bare `skill "<name>"` form: for the `new` keyword the name is args[1].
540
338
  const skillName = subcommand === 'new' ? (args[1] ?? '') : subcommand;
541
- const instrRaw = flags['instructions'];
542
- if (!skillName || typeof instrRaw !== 'string' || !instrRaw.trim()) {
339
+ const instrRaw = stringFlag(flags, 'instructions');
340
+ if (!skillName || !instrRaw?.trim()) {
543
341
  printError('Usage: hippo skill new "<name>" --instructions "<text>" [--trigger "<when>"]');
544
342
  printError(' hippo skill list [--status active|superseded|closed|all] [--limit N]');
545
343
  printError(' hippo skill get <id>');
@@ -548,12 +346,11 @@ function skillCreate(hippoRoot, tenantId, args, flags) {
548
346
  printError(' hippo skill close <id>');
549
347
  process.exit(1);
550
348
  }
551
- const trigRaw = flags['trigger'];
552
349
  try {
553
350
  const created = skillsModule.saveSkill(hippoRoot, tenantId, {
554
351
  skillName,
555
352
  instructions: instrRaw,
556
- trigger: typeof trigRaw === 'string' && trigRaw ? trigRaw : undefined,
353
+ trigger: nonEmptyStringFlag(flags, 'trigger'),
557
354
  extraTags: extractPathTags(process.cwd()),
558
355
  });
559
356
  console.log(`Skill recorded: #${created.id} (v${created.version})`);
@@ -561,7 +358,7 @@ function skillCreate(hippoRoot, tenantId, args, flags) {
561
358
  console.log(` memory: ${created.memoryId}`);
562
359
  }
563
360
  catch (e) {
564
- printError(e.message);
361
+ printError(errorMessage(e));
565
362
  process.exit(1);
566
363
  }
567
364
  }
@@ -0,0 +1,18 @@
1
+ import { TaskSnapshot, SessionEvent } from '../store/rows.js';
2
+ import type { SessionHandoff } from '../core/handoff.js';
3
+ import type { SearchResult } from '../core/search-types.js';
4
+ import { type ImportReport } from '../agent-memories/report.js';
5
+ export declare function fmt(n: number, digits?: number): string;
6
+ export declare function recallEntryText(r: SearchResult, query: string, showWhy: boolean, isGlobal: boolean): string;
7
+ export declare function recallHeading(entries: number, tokens: number, query: string): string;
8
+ /** One line when an agent memory import moved anything; its warnings go to stderr. */
9
+ export declare function printAgentImport(report: ImportReport, indent?: string): void;
10
+ export declare function printActiveTaskSnapshot(snapshot: TaskSnapshot): void;
11
+ export declare function printSessionEvents(events: SessionEvent[]): void;
12
+ export declare function printHandoff(handoff: SessionHandoff): void;
13
+ /**
14
+ * Run `fn` with console.log captured; returns the captured lines joined by
15
+ * newlines (what the same calls would have printed, minus the final newline).
16
+ */
17
+ export declare function captureConsole(fn: () => void): string;
18
+ //# sourceMappingURL=print.d.ts.map
@@ -0,0 +1,85 @@
1
+ // Text printers for recall results, agent imports, task snapshots, session trails and handoffs.
2
+ import { confidenceLabel } from '../core/memory.js';
3
+ import { explainMatch } from '../search/explain.js';
4
+ import { summaryLine } from '../agent-memories/report.js';
5
+ import { snapshotText, sessionTrailText, handoffText } from '../api/context-render.js';
6
+ import { printError } from './output.js';
7
+ export function fmt(n, digits = 2) {
8
+ return n.toFixed(digits);
9
+ }
10
+ // What `hippo recall` prints for one result; the budget prices this same text.
11
+ export function recallEntryText(r, query, showWhy, isGlobal) {
12
+ const e = r.entry;
13
+ const label = confidenceLabel(e);
14
+ const confLabel = label.warn ? `[${label.text}] ⚠️` : `[${label.text}]`;
15
+ const bars = Math.round(e.strength * 10);
16
+ const graphMark = r.graphVia ? ` [graph: ${r.graphVia.hops}hop ${r.graphVia.relType}]` : '';
17
+ const lines = [
18
+ `--- ${e.id} [${e.layer}] ${confLabel}${isGlobal ? ' [global]' : ''}${e.superseded_by ? ' [superseded]' : ''}${graphMark} score=${fmt(r.score, 3)} strength=${fmt(e.strength)}`,
19
+ ` [${'█'.repeat(bars)}${'░'.repeat(10 - bars)}] tags: ${e.tags.join(', ') || 'none'} | retrieved: ${e.retrieval_count}x`,
20
+ ];
21
+ if (showWhy) {
22
+ const explanation = explainMatch(query, r);
23
+ lines.push(` source:${isGlobal ? ' [global]' : ' [local]'} | layer: [${e.layer}] | confidence: [${label.text}]`, ` reason: ${explanation.reason}`);
24
+ const env = explanation.envelope;
25
+ if (env) {
26
+ lines.push(` kind: ${env.kind}`);
27
+ if (env.scope)
28
+ lines.push(` scope: ${env.scope}`);
29
+ if (env.owner)
30
+ lines.push(` owner: ${env.owner}`);
31
+ if (env.artifact_ref)
32
+ lines.push(` artifact_ref: ${env.artifact_ref}`);
33
+ if (env.session_id)
34
+ lines.push(` session_id: ${env.session_id}`);
35
+ lines.push(` confidence: ${env.confidence}`);
36
+ }
37
+ // The recall trace, e.g. "ranking: base 0.420 -> interference x0.30 -> 0.126 -> goal-boost x1.50 -> 0.189".
38
+ if (r.rerankTrace && r.rerankTrace.length > 0) {
39
+ const parts = [`base ${fmt(r.rerankTrace[0].scoreBefore, 3)}`];
40
+ for (const step of r.rerankTrace) {
41
+ parts.push(`${step.stage}${step.multiplier !== undefined ? ` x${fmt(step.multiplier, 2)}` : ''}`, fmt(step.scoreAfter, 3));
42
+ }
43
+ lines.push(` ranking: ${parts.join(' -> ')}`);
44
+ }
45
+ }
46
+ lines.push('', e.content, '');
47
+ return lines.join('\n');
48
+ }
49
+ export function recallHeading(entries, tokens, query) {
50
+ return `Found ${entries} memories (${tokens} tokens) for: "${query}"\n`;
51
+ }
52
+ /** One line when an agent memory import moved anything; its warnings go to stderr. */
53
+ export function printAgentImport(report, indent = ' ') {
54
+ const line = summaryLine(report);
55
+ if (line !== null)
56
+ console.log(`${indent}${line}`);
57
+ for (const warning of report.warnings)
58
+ printError(`hippo: agent memories: ${warning}`);
59
+ }
60
+ export function printActiveTaskSnapshot(snapshot) {
61
+ console.log(snapshotText(snapshot));
62
+ }
63
+ export function printSessionEvents(events) {
64
+ console.log(events.length === 0 ? 'No session events found.' : sessionTrailText(events));
65
+ }
66
+ export function printHandoff(handoff) {
67
+ console.log(handoffText(handoff));
68
+ }
69
+ /**
70
+ * Run `fn` with console.log captured; returns the captured lines joined by
71
+ * newlines (what the same calls would have printed, minus the final newline).
72
+ */
73
+ export function captureConsole(fn) {
74
+ const lines = [];
75
+ const realLog = console.log;
76
+ console.log = (...parts) => { lines.push(parts.map(String).join(' ')); };
77
+ try {
78
+ fn();
79
+ }
80
+ finally {
81
+ console.log = realLog;
82
+ }
83
+ return lines.join('\n');
84
+ }
85
+ //# sourceMappingURL=print.js.map
@@ -1,4 +1,3 @@
1
- type Flags = Record<string, string | boolean | string[]>;
2
- export declare function cmdProjects(hippoRoot: string, args: string[], flags: Flags): void;
3
- export {};
1
+ import { type CliFlags } from './flag-values.js';
2
+ export declare function cmdProjects(hippoRoot: string, args: string[], flags: CliFlags): void;
4
3
  //# sourceMappingURL=projects.d.ts.map