nlm-memory 0.21.0 → 0.21.13

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 (413) hide show
  1. package/README.md +67 -12
  2. package/assets/replay-eval-dark.svg +26 -0
  3. package/assets/replay-eval-light.svg +26 -0
  4. package/dist/cli/digest.js +34 -7
  5. package/dist/cli/digest.js.map +1 -1
  6. package/dist/cli/nlm.d.ts +14 -0
  7. package/dist/cli/nlm.js +450 -65
  8. package/dist/cli/nlm.js.map +1 -1
  9. package/dist/cli/reprocess-job-adapters.d.ts +35 -0
  10. package/dist/cli/reprocess-job-adapters.js +80 -0
  11. package/dist/cli/reprocess-job-adapters.js.map +1 -0
  12. package/dist/cli/scope-coverage.js +4 -1
  13. package/dist/cli/scope-coverage.js.map +1 -1
  14. package/dist/cli/supersede.js +8 -7
  15. package/dist/cli/supersede.js.map +1 -1
  16. package/dist/core/actions/actions-log.d.ts +65 -8
  17. package/dist/core/actions/actions-log.js +134 -17
  18. package/dist/core/actions/actions-log.js.map +1 -1
  19. package/dist/core/actions/overlay.d.ts +11 -2
  20. package/dist/core/actions/overlay.js +18 -6
  21. package/dist/core/actions/overlay.js.map +1 -1
  22. package/dist/core/adapters/from-source.js +11 -3
  23. package/dist/core/adapters/from-source.js.map +1 -1
  24. package/dist/core/adapters/fs-wiki-writer.d.ts +44 -0
  25. package/dist/core/adapters/fs-wiki-writer.js +132 -0
  26. package/dist/core/adapters/fs-wiki-writer.js.map +1 -0
  27. package/dist/core/adapters/hermes-agent.d.ts +15 -2
  28. package/dist/core/adapters/hermes-agent.js +57 -11
  29. package/dist/core/adapters/hermes-agent.js.map +1 -1
  30. package/dist/core/adapters/memory-wiki-writer.d.ts +8 -0
  31. package/dist/core/adapters/memory-wiki-writer.js +16 -0
  32. package/dist/core/adapters/memory-wiki-writer.js.map +1 -0
  33. package/dist/core/adapters/muse.d.ts +51 -0
  34. package/dist/core/adapters/muse.js +271 -0
  35. package/dist/core/adapters/muse.js.map +1 -0
  36. package/dist/core/adapters/opencode.d.ts +11 -4
  37. package/dist/core/adapters/opencode.js +41 -7
  38. package/dist/core/adapters/opencode.js.map +1 -1
  39. package/dist/core/alerts/alert-state.d.ts +17 -0
  40. package/dist/core/alerts/alert-state.js +45 -0
  41. package/dist/core/alerts/alert-state.js.map +1 -0
  42. package/dist/core/alerts/check-and-alert.d.ts +28 -0
  43. package/dist/core/alerts/check-and-alert.js +53 -0
  44. package/dist/core/alerts/check-and-alert.js.map +1 -0
  45. package/dist/core/alerts/drift-transition.d.ts +27 -0
  46. package/dist/core/alerts/drift-transition.js +56 -0
  47. package/dist/core/alerts/drift-transition.js.map +1 -0
  48. package/dist/core/alerts/embedder-transition.d.ts +23 -0
  49. package/dist/core/alerts/embedder-transition.js +40 -0
  50. package/dist/core/alerts/embedder-transition.js.map +1 -0
  51. package/dist/core/alerts/fire-alert.d.ts +24 -0
  52. package/dist/core/alerts/fire-alert.js +72 -0
  53. package/dist/core/alerts/fire-alert.js.map +1 -0
  54. package/dist/core/alerts/job-alert.d.ts +12 -0
  55. package/dist/core/alerts/job-alert.js +37 -0
  56. package/dist/core/alerts/job-alert.js.map +1 -0
  57. package/dist/core/alerts/types.d.ts +104 -0
  58. package/dist/core/alerts/types.js +11 -0
  59. package/dist/core/alerts/types.js.map +1 -0
  60. package/dist/core/alerts/wiki-alert.d.ts +15 -0
  61. package/dist/core/alerts/wiki-alert.js +31 -0
  62. package/dist/core/alerts/wiki-alert.js.map +1 -0
  63. package/dist/core/classifier/prompt.d.ts +13 -0
  64. package/dist/core/classifier/prompt.js +52 -2
  65. package/dist/core/classifier/prompt.js.map +1 -1
  66. package/dist/core/dataset/build-dataset.d.ts +16 -1
  67. package/dist/core/dataset/build-dataset.js +105 -45
  68. package/dist/core/dataset/build-dataset.js.map +1 -1
  69. package/dist/core/digest/compose.d.ts +8 -0
  70. package/dist/core/digest/compose.js +54 -0
  71. package/dist/core/digest/compose.js.map +1 -1
  72. package/dist/core/digest/hook-injection.d.ts +1 -1
  73. package/dist/core/digest/hook-injection.js +9 -1
  74. package/dist/core/digest/hook-injection.js.map +1 -1
  75. package/dist/core/digest/hook-version-parity.d.ts +31 -0
  76. package/dist/core/digest/hook-version-parity.js +56 -0
  77. package/dist/core/digest/hook-version-parity.js.map +1 -0
  78. package/dist/core/embedding/pg-embed-backfill.js +1 -1
  79. package/dist/core/embedding/pg-embed-backfill.js.map +1 -1
  80. package/dist/core/exemplars/capture-from-session.d.ts +1 -1
  81. package/dist/core/exemplars/capture-from-session.js +3 -3
  82. package/dist/core/exemplars/capture-from-session.js.map +1 -1
  83. package/dist/core/exemplars/embed-backfill.d.ts +9 -0
  84. package/dist/core/exemplars/embed-backfill.js +9 -1
  85. package/dist/core/exemplars/embed-backfill.js.map +1 -1
  86. package/dist/core/exemplars/recall-code.d.ts +1 -1
  87. package/dist/core/exemplars/recall-code.js +2 -2
  88. package/dist/core/exemplars/recall-code.js.map +1 -1
  89. package/dist/core/facts/backfill-facts.d.ts +1 -1
  90. package/dist/core/facts/backfill-facts.js +4 -4
  91. package/dist/core/facts/backfill-facts.js.map +1 -1
  92. package/dist/core/facts/embed-backfill.d.ts +54 -0
  93. package/dist/core/facts/embed-backfill.js +109 -0
  94. package/dist/core/facts/embed-backfill.js.map +1 -0
  95. package/dist/core/facts/reconcile-facts.d.ts +42 -0
  96. package/dist/core/facts/reconcile-facts.js +133 -0
  97. package/dist/core/facts/reconcile-facts.js.map +1 -0
  98. package/dist/core/health/embed-failure-state.d.ts +4 -0
  99. package/dist/core/health/embed-failure-state.js +12 -0
  100. package/dist/core/health/embed-failure-state.js.map +1 -0
  101. package/dist/core/health/warmup-retry.d.ts +27 -0
  102. package/dist/core/health/warmup-retry.js +53 -0
  103. package/dist/core/health/warmup-retry.js.map +1 -0
  104. package/dist/core/health/warmup-state.d.ts +15 -0
  105. package/dist/core/health/warmup-state.js +15 -1
  106. package/dist/core/health/warmup-state.js.map +1 -1
  107. package/dist/core/hook/cite-memo.d.ts +11 -7
  108. package/dist/core/hook/cite-memo.js +25 -17
  109. package/dist/core/hook/cite-memo.js.map +1 -1
  110. package/dist/core/hook/hook-log.d.ts +13 -2
  111. package/dist/core/hook/hook-log.js +16 -8
  112. package/dist/core/hook/hook-log.js.map +1 -1
  113. package/dist/core/hook/memo.d.ts +10 -6
  114. package/dist/core/hook/memo.js +25 -17
  115. package/dist/core/hook/memo.js.map +1 -1
  116. package/dist/core/hook/pointer-block.d.ts +8 -1
  117. package/dist/core/hook/pointer-block.js +17 -4
  118. package/dist/core/hook/pointer-block.js.map +1 -1
  119. package/dist/core/hook/resolve-conversation-by-query.d.ts +6 -5
  120. package/dist/core/hook/resolve-conversation-by-query.js +24 -12
  121. package/dist/core/hook/resolve-conversation-by-query.js.map +1 -1
  122. package/dist/core/ingest/ingest-session.d.ts +1 -1
  123. package/dist/core/ingest/ingest-session.js +3 -3
  124. package/dist/core/ingest/ingest-session.js.map +1 -1
  125. package/dist/core/ingest/reclassify-oversized.d.ts +1 -1
  126. package/dist/core/ingest/reclassify-oversized.js +2 -2
  127. package/dist/core/ingest/reclassify-oversized.js.map +1 -1
  128. package/dist/core/ingest/reprocess.d.ts +1 -1
  129. package/dist/core/ingest/reprocess.js +2 -2
  130. package/dist/core/ingest/reprocess.js.map +1 -1
  131. package/dist/core/jobs/job-supervisor.d.ts +168 -0
  132. package/dist/core/jobs/job-supervisor.js +335 -0
  133. package/dist/core/jobs/job-supervisor.js.map +1 -0
  134. package/dist/core/learner/model.d.ts +63 -0
  135. package/dist/core/learner/model.js +30 -0
  136. package/dist/core/learner/model.js.map +1 -0
  137. package/dist/core/learner/service.d.ts +42 -0
  138. package/dist/core/learner/service.js +74 -0
  139. package/dist/core/learner/service.js.map +1 -0
  140. package/dist/core/learner/summary.d.ts +28 -0
  141. package/dist/core/learner/summary.js +70 -0
  142. package/dist/core/learner/summary.js.map +1 -0
  143. package/dist/core/learner/validate.d.ts +18 -0
  144. package/dist/core/learner/validate.js +95 -0
  145. package/dist/core/learner/validate.js.map +1 -0
  146. package/dist/core/metrics/re-derivation.d.ts +31 -2
  147. package/dist/core/metrics/re-derivation.js +36 -4
  148. package/dist/core/metrics/re-derivation.js.map +1 -1
  149. package/dist/core/outcome/coverage.d.ts +1 -1
  150. package/dist/core/outcome/coverage.js +2 -2
  151. package/dist/core/outcome/coverage.js.map +1 -1
  152. package/dist/core/outcome/rollup.d.ts +1 -1
  153. package/dist/core/outcome/rollup.js +4 -4
  154. package/dist/core/outcome/rollup.js.map +1 -1
  155. package/dist/core/providers/provider-registry.d.ts +40 -23
  156. package/dist/core/providers/provider-registry.js +99 -81
  157. package/dist/core/providers/provider-registry.js.map +1 -1
  158. package/dist/core/recall/citation-log.d.ts +10 -5
  159. package/dist/core/recall/citation-log.js +21 -10
  160. package/dist/core/recall/citation-log.js.map +1 -1
  161. package/dist/core/recall/hook-recall-log.d.ts +5 -2
  162. package/dist/core/recall/hook-recall-log.js +12 -6
  163. package/dist/core/recall/hook-recall-log.js.map +1 -1
  164. package/dist/core/recall/miss-log.d.ts +7 -4
  165. package/dist/core/recall/miss-log.js +18 -11
  166. package/dist/core/recall/miss-log.js.map +1 -1
  167. package/dist/core/recall/query-log.d.ts +8 -5
  168. package/dist/core/recall/query-log.js +16 -9
  169. package/dist/core/recall/query-log.js.map +1 -1
  170. package/dist/core/recall/recall-service.d.ts +10 -1
  171. package/dist/core/recall/recall-service.js +31 -12
  172. package/dist/core/recall/recall-service.js.map +1 -1
  173. package/dist/core/recall/recent-log.d.ts +6 -1
  174. package/dist/core/recall/recent-log.js +13 -5
  175. package/dist/core/recall/recent-log.js.map +1 -1
  176. package/dist/core/recall/related-concepts.d.ts +29 -0
  177. package/dist/core/recall/related-concepts.js +67 -0
  178. package/dist/core/recall/related-concepts.js.map +1 -0
  179. package/dist/core/recall/related-exemplars.d.ts +1 -1
  180. package/dist/core/recall/related-exemplars.js +2 -2
  181. package/dist/core/recall/related-exemplars.js.map +1 -1
  182. package/dist/core/recall/related-facts.d.ts +1 -1
  183. package/dist/core/recall/related-facts.js +3 -3
  184. package/dist/core/recall/related-facts.js.map +1 -1
  185. package/dist/core/recall-facts/fact-query-log.d.ts +8 -4
  186. package/dist/core/recall-facts/fact-query-log.js +16 -8
  187. package/dist/core/recall-facts/fact-query-log.js.map +1 -1
  188. package/dist/core/recall-facts/fact-recall-service.d.ts +2 -2
  189. package/dist/core/recall-facts/fact-recall-service.js +12 -12
  190. package/dist/core/recall-facts/fact-recall-service.js.map +1 -1
  191. package/dist/core/scheduler/scan-once.js +15 -14
  192. package/dist/core/scheduler/scan-once.js.map +1 -1
  193. package/dist/core/scheduler/scheduler.d.ts +3 -0
  194. package/dist/core/scheduler/scheduler.js +15 -11
  195. package/dist/core/scheduler/scheduler.js.map +1 -1
  196. package/dist/core/signals/failure-mode-recall.d.ts +1 -1
  197. package/dist/core/signals/failure-mode-recall.js +2 -2
  198. package/dist/core/signals/failure-mode-recall.js.map +1 -1
  199. package/dist/core/signals/stamp-scope.d.ts +2 -2
  200. package/dist/core/signals/stamp-scope.js +2 -2
  201. package/dist/core/signals/stamp-scope.js.map +1 -1
  202. package/dist/core/sources/source-registry.d.ts +49 -28
  203. package/dist/core/sources/source-registry.js +113 -70
  204. package/dist/core/sources/source-registry.js.map +1 -1
  205. package/dist/core/storage/pg-code-exemplar-store.d.ts +19 -10
  206. package/dist/core/storage/pg-code-exemplar-store.js +58 -27
  207. package/dist/core/storage/pg-code-exemplar-store.js.map +1 -1
  208. package/dist/core/storage/pg-entity-store.d.ts +6 -1
  209. package/dist/core/storage/pg-entity-store.js +33 -18
  210. package/dist/core/storage/pg-entity-store.js.map +1 -1
  211. package/dist/core/storage/pg-fact-ingest.d.ts +1 -1
  212. package/dist/core/storage/pg-fact-ingest.js +10 -7
  213. package/dist/core/storage/pg-fact-ingest.js.map +1 -1
  214. package/dist/core/storage/pg-fact-store.d.ts +29 -17
  215. package/dist/core/storage/pg-fact-store.js +99 -46
  216. package/dist/core/storage/pg-fact-store.js.map +1 -1
  217. package/dist/core/storage/pg-learner-store.d.ts +27 -0
  218. package/dist/core/storage/pg-learner-store.js +174 -0
  219. package/dist/core/storage/pg-learner-store.js.map +1 -0
  220. package/dist/core/storage/pg-session-store.d.ts +24 -20
  221. package/dist/core/storage/pg-session-store.js +162 -90
  222. package/dist/core/storage/pg-session-store.js.map +1 -1
  223. package/dist/core/storage/pg-signal-store.d.ts +10 -5
  224. package/dist/core/storage/pg-signal-store.js +24 -12
  225. package/dist/core/storage/pg-signal-store.js.map +1 -1
  226. package/dist/core/storage/pg-storage.d.ts +4 -0
  227. package/dist/core/storage/pg-storage.js +6 -0
  228. package/dist/core/storage/pg-storage.js.map +1 -1
  229. package/dist/core/storage/pg-workstream-store.d.ts +16 -11
  230. package/dist/core/storage/pg-workstream-store.js +46 -29
  231. package/dist/core/storage/pg-workstream-store.js.map +1 -1
  232. package/dist/core/storage/sqlite-code-exemplar-store.d.ts +24 -10
  233. package/dist/core/storage/sqlite-code-exemplar-store.js +84 -40
  234. package/dist/core/storage/sqlite-code-exemplar-store.js.map +1 -1
  235. package/dist/core/storage/sqlite-entity-store.d.ts +8 -1
  236. package/dist/core/storage/sqlite-entity-store.js +46 -27
  237. package/dist/core/storage/sqlite-entity-store.js.map +1 -1
  238. package/dist/core/storage/sqlite-fact-store.d.ts +45 -19
  239. package/dist/core/storage/sqlite-fact-store.js +172 -64
  240. package/dist/core/storage/sqlite-fact-store.js.map +1 -1
  241. package/dist/core/storage/sqlite-learner-store.d.ts +33 -0
  242. package/dist/core/storage/sqlite-learner-store.js +178 -0
  243. package/dist/core/storage/sqlite-learner-store.js.map +1 -0
  244. package/dist/core/storage/sqlite-outcome-store.d.ts +37 -22
  245. package/dist/core/storage/sqlite-outcome-store.js +90 -37
  246. package/dist/core/storage/sqlite-outcome-store.js.map +1 -1
  247. package/dist/core/storage/sqlite-session-store.d.ts +29 -20
  248. package/dist/core/storage/sqlite-session-store.js +207 -121
  249. package/dist/core/storage/sqlite-session-store.js.map +1 -1
  250. package/dist/core/storage/sqlite-signal-store.d.ts +12 -5
  251. package/dist/core/storage/sqlite-signal-store.js +27 -15
  252. package/dist/core/storage/sqlite-signal-store.js.map +1 -1
  253. package/dist/core/storage/sqlite-storage.d.ts +4 -0
  254. package/dist/core/storage/sqlite-storage.js +10 -2
  255. package/dist/core/storage/sqlite-storage.js.map +1 -1
  256. package/dist/core/storage/sqlite-workstream-store.d.ts +16 -11
  257. package/dist/core/storage/sqlite-workstream-store.js +52 -31
  258. package/dist/core/storage/sqlite-workstream-store.js.map +1 -1
  259. package/dist/core/storage/supersedence-log.d.ts +10 -7
  260. package/dist/core/storage/supersedence-log.js +19 -14
  261. package/dist/core/storage/supersedence-log.js.map +1 -1
  262. package/dist/core/tenancy/default-team.d.ts +6 -0
  263. package/dist/core/tenancy/default-team.js +7 -0
  264. package/dist/core/tenancy/default-team.js.map +1 -0
  265. package/dist/core/tenancy/hosted-mode.d.ts +9 -0
  266. package/dist/core/tenancy/hosted-mode.js +12 -0
  267. package/dist/core/tenancy/hosted-mode.js.map +1 -0
  268. package/dist/core/tenancy/team-auth.d.ts +16 -0
  269. package/dist/core/tenancy/team-auth.js +22 -0
  270. package/dist/core/tenancy/team-auth.js.map +1 -0
  271. package/dist/core/tenancy/team-token-store.d.ts +45 -0
  272. package/dist/core/tenancy/team-token-store.js +52 -0
  273. package/dist/core/tenancy/team-token-store.js.map +1 -0
  274. package/dist/core/tenancy/tenant-clause.d.ts +37 -0
  275. package/dist/core/tenancy/tenant-clause.js +11 -0
  276. package/dist/core/tenancy/tenant-clause.js.map +1 -0
  277. package/dist/core/tenancy/tenant-state-path.d.ts +28 -0
  278. package/dist/core/tenancy/tenant-state-path.js +49 -0
  279. package/dist/core/tenancy/tenant-state-path.js.map +1 -0
  280. package/dist/core/wiki/project.d.ts +17 -0
  281. package/dist/core/wiki/project.js +37 -0
  282. package/dist/core/wiki/project.js.map +1 -0
  283. package/dist/core/wiki/reconcile.d.ts +15 -0
  284. package/dist/core/wiki/reconcile.js +14 -0
  285. package/dist/core/wiki/reconcile.js.map +1 -0
  286. package/dist/core/wiki/render.d.ts +5 -0
  287. package/dist/core/wiki/render.js +84 -0
  288. package/dist/core/wiki/render.js.map +1 -0
  289. package/dist/core/wiki/rollup.d.ts +28 -0
  290. package/dist/core/wiki/rollup.js +91 -0
  291. package/dist/core/wiki/rollup.js.map +1 -0
  292. package/dist/core/wiki/select.d.ts +8 -0
  293. package/dist/core/wiki/select.js +7 -0
  294. package/dist/core/wiki/select.js.map +1 -0
  295. package/dist/core/wiki/slug.d.ts +36 -0
  296. package/dist/core/wiki/slug.js +71 -0
  297. package/dist/core/wiki/slug.js.map +1 -0
  298. package/dist/core/wiki/types.d.ts +37 -0
  299. package/dist/core/wiki/types.js +2 -0
  300. package/dist/core/wiki/types.js.map +1 -0
  301. package/dist/core/work-digest/build-work-digest.d.ts +1 -1
  302. package/dist/core/work-digest/build-work-digest.js +3 -3
  303. package/dist/core/work-digest/build-work-digest.js.map +1 -1
  304. package/dist/core/workstream/bind.d.ts +1 -1
  305. package/dist/core/workstream/bind.js +10 -10
  306. package/dist/core/workstream/bind.js.map +1 -1
  307. package/dist/core/workstream/rollup.d.ts +1 -1
  308. package/dist/core/workstream/rollup.js +6 -6
  309. package/dist/core/workstream/rollup.js.map +1 -1
  310. package/dist/hook/hook-helpers.d.ts +14 -0
  311. package/dist/hook/hook-helpers.js +29 -2
  312. package/dist/hook/hook-helpers.js.map +1 -1
  313. package/dist/hook/pre-compact-hook.js +6 -4
  314. package/dist/hook/pre-compact-hook.js.map +1 -1
  315. package/dist/hook/prompt-recall-hook.d.ts +5 -2
  316. package/dist/hook/prompt-recall-hook.js +28 -17
  317. package/dist/hook/prompt-recall-hook.js.map +1 -1
  318. package/dist/hook/recall-over-http.d.ts +27 -3
  319. package/dist/hook/recall-over-http.js +44 -11
  320. package/dist/hook/recall-over-http.js.map +1 -1
  321. package/dist/hook/session-end-hook.js +7 -5
  322. package/dist/hook/session-end-hook.js.map +1 -1
  323. package/dist/hook/session-start-hook.d.ts +14 -1
  324. package/dist/hook/session-start-hook.js +55 -15
  325. package/dist/hook/session-start-hook.js.map +1 -1
  326. package/dist/hook/stop-hook.js +9 -7
  327. package/dist/hook/stop-hook.js.map +1 -1
  328. package/dist/http/app.d.ts +41 -3
  329. package/dist/http/app.js +355 -96
  330. package/dist/http/app.js.map +1 -1
  331. package/dist/install/claude-code.d.ts +17 -0
  332. package/dist/install/claude-code.js +44 -5
  333. package/dist/install/claude-code.js.map +1 -1
  334. package/dist/install/codex.d.ts +23 -2
  335. package/dist/install/codex.js +111 -14
  336. package/dist/install/codex.js.map +1 -1
  337. package/dist/install/cursor.d.ts +2 -2
  338. package/dist/install/cursor.js +7 -7
  339. package/dist/install/cursor.js.map +1 -1
  340. package/dist/install/hermes.d.ts +8 -0
  341. package/dist/install/hermes.js +28 -5
  342. package/dist/install/hermes.js.map +1 -1
  343. package/dist/install/local-source.d.ts +20 -0
  344. package/dist/install/local-source.js +28 -0
  345. package/dist/install/local-source.js.map +1 -0
  346. package/dist/install/mcp-block.d.ts +77 -0
  347. package/dist/install/mcp-block.js +99 -0
  348. package/dist/install/mcp-block.js.map +1 -0
  349. package/dist/install/pi.d.ts +26 -0
  350. package/dist/install/pi.js +43 -0
  351. package/dist/install/pi.js.map +1 -1
  352. package/dist/install/setup.js +6 -0
  353. package/dist/install/setup.js.map +1 -1
  354. package/dist/install/windsurf.d.ts +2 -2
  355. package/dist/install/windsurf.js +7 -7
  356. package/dist/install/windsurf.js.map +1 -1
  357. package/dist/llm/classifier-box.d.ts +5 -0
  358. package/dist/llm/classifier-box.js +5 -0
  359. package/dist/llm/classifier-box.js.map +1 -1
  360. package/dist/mcp/server.d.ts +73 -16
  361. package/dist/mcp/server.js +306 -83
  362. package/dist/mcp/server.js.map +1 -1
  363. package/dist/ports/clock.d.ts +12 -0
  364. package/dist/ports/clock.js +10 -0
  365. package/dist/ports/clock.js.map +1 -0
  366. package/dist/ports/code-exemplar-store.d.ts +13 -13
  367. package/dist/ports/entity-store.d.ts +5 -1
  368. package/dist/ports/fact-store.d.ts +0 -0
  369. package/dist/ports/fact-store.js +0 -0
  370. package/dist/ports/fact-store.js.map +1 -1
  371. package/dist/ports/learner-store.d.ts +80 -0
  372. package/dist/ports/learner-store.js +19 -0
  373. package/dist/ports/learner-store.js.map +1 -0
  374. package/dist/ports/outcome.d.ts +3 -3
  375. package/dist/ports/session-store.d.ts +20 -14
  376. package/dist/ports/session-store.js +5 -0
  377. package/dist/ports/session-store.js.map +1 -1
  378. package/dist/ports/signal-store.d.ts +12 -8
  379. package/dist/ports/spawn-child.d.ts +14 -0
  380. package/dist/ports/spawn-child.js +10 -0
  381. package/dist/ports/spawn-child.js.map +1 -0
  382. package/dist/ports/storage.d.ts +6 -0
  383. package/dist/ports/transcript-adapter.d.ts +11 -0
  384. package/dist/ports/wiki-writer.d.ts +19 -0
  385. package/dist/ports/wiki-writer.js +12 -0
  386. package/dist/ports/wiki-writer.js.map +1 -0
  387. package/dist/ports/workstream-store.d.ts +19 -12
  388. package/dist/shared/types.d.ts +22 -0
  389. package/dist/shared/types.js.map +1 -1
  390. package/dist/shared/version.d.ts +9 -0
  391. package/dist/shared/version.js +11 -0
  392. package/dist/shared/version.js.map +1 -0
  393. package/dist/ui/assets/index-D6F3xAis.js +11 -0
  394. package/dist/ui/index.html +1 -1
  395. package/migrations/033_actions_kind_check.sql +58 -0
  396. package/migrations/034_tenancy_teams_and_stamps.sql +40 -0
  397. package/migrations/035_tenancy_entity_rekey.sql +75 -0
  398. package/migrations/036_tenant_name_uniqueness.sql +59 -0
  399. package/migrations/037_sessions_covering_index.sql +25 -0
  400. package/migrations/038_sources_muse.sql +33 -0
  401. package/migrations/039_learner_evidence.sql +51 -0
  402. package/migrations/pg/033_actions_kind_check.sql +17 -0
  403. package/migrations/pg/034_tenancy.sql +77 -0
  404. package/migrations/pg/035_tenant_name_uniqueness.sql +15 -0
  405. package/migrations/pg/036_sources_muse.sql +12 -0
  406. package/migrations/pg/037_learner_evidence.sql +55 -0
  407. package/nlm/index.js +246 -55
  408. package/package.json +10 -5
  409. package/plugin/.codex-plugin/plugin.json +2 -2
  410. package/plugin/scripts/prompt-recall-hook.mjs +244 -55
  411. package/plugin/scripts/session-start-hook.mjs +273 -53
  412. package/plugin/scripts/stop-hook.mjs +195 -37
  413. package/dist/ui/assets/index-CSaBtgXD.js +0 -11
@@ -11,11 +11,21 @@
11
11
  * which adapter to dispatch by reading `kind`.
12
12
  *
13
13
  * See docs/plans/desktop-product.md (Phase 0).
14
+ *
15
+ * Tenancy (program spec §4, M2 plan Wave B5): `sources` is a STAMP table.
16
+ * Every method except `findByToken` takes `tenantId` as its non-optional
17
+ * first parameter and routes its WHERE fragment through `tenantClause`;
18
+ * INSERTs stamp `tenant_id`. `findByToken` is the one pinned exception — it
19
+ * is an AUTH lookup, not a corpus read: it takes no tenantId because its job
20
+ * is to RESOLVE the tenant from the bearer token. The returned row carries
21
+ * its own `tenantId` field so callers (M4 ingest attribution) derive the
22
+ * tenant from the resolved row rather than being handed one.
14
23
  */
15
24
  import type Database from "better-sqlite3";
16
- export type SourceKind = "claude-code" | "codex" | "hermes" | "hermes-agent" | "aider" | "cursor" | "windsurf" | "opencode" | "pi" | "jsonl-generic" | "webhook";
25
+ export type SourceKind = "claude-code" | "codex" | "hermes" | "hermes-agent" | "muse" | "aider" | "cursor" | "windsurf" | "opencode" | "pi" | "jsonl-generic" | "webhook";
17
26
  export interface SourceRow {
18
27
  readonly id: number;
28
+ readonly tenantId: string;
19
29
  readonly kind: SourceKind;
20
30
  readonly name: string;
21
31
  readonly pathOrUrl: string | null;
@@ -52,38 +62,44 @@ export interface SourceUpdate {
52
62
  * port — only the not-yet-ported scheduler reads it, via rawDb directly.
53
63
  */
54
64
  export interface SourceRegistryPort {
55
- list(): Promise<SourceRow[]>;
56
- get(id: number): Promise<SourceRow | null>;
57
- getByName(name: string): Promise<SourceRow | null>;
58
- insert(input: SourceInsert): Promise<SourceRow>;
65
+ list(tenantId: string): Promise<SourceRow[]>;
66
+ get(tenantId: string, id: number): Promise<SourceRow | null>;
67
+ getByName(tenantId: string, name: string): Promise<SourceRow | null>;
68
+ insert(tenantId: string, input: SourceInsert): Promise<SourceRow>;
69
+ /** AUTH lookup, not a corpus read — resolves the tenant, takes none. */
59
70
  findByToken(token: string): Promise<SourceRow | null>;
60
- regenerateToken(id: number): Promise<string | null>;
61
- update(id: number, patch: SourceUpdate): Promise<SourceRow | null>;
62
- delete(id: number): Promise<boolean>;
63
- seedDefaults(): Promise<void>;
71
+ regenerateToken(tenantId: string, id: number): Promise<string | null>;
72
+ update(tenantId: string, id: number, patch: SourceUpdate): Promise<SourceRow | null>;
73
+ delete(tenantId: string, id: number): Promise<boolean>;
74
+ seedDefaults(tenantId: string): Promise<void>;
64
75
  }
65
76
  export declare class SourceRegistry implements SourceRegistryPort {
66
77
  private readonly db;
67
78
  constructor(db: Database.Database);
68
- list(): Promise<SourceRow[]>;
69
- get(id: number): Promise<SourceRow | null>;
70
- getByName(name: string): Promise<SourceRow | null>;
71
- insert(input: SourceInsert): Promise<SourceRow>;
72
- /** Daemon-internal: resolve a bearer token to its owning source. */
79
+ list(tenantId: string): Promise<SourceRow[]>;
80
+ get(tenantId: string, id: number): Promise<SourceRow | null>;
81
+ getByName(tenantId: string, name: string): Promise<SourceRow | null>;
82
+ insert(tenantId: string, input: SourceInsert): Promise<SourceRow>;
83
+ /**
84
+ * Daemon-internal: resolve a bearer token to its owning source. AUTH
85
+ * lookup, not a corpus read — no tenantId param by design (program spec
86
+ * §3, M2 plan Wave B5 pinned semantics): this RESOLVES the tenant. The
87
+ * returned row's `tenantId` field is the caller's derivation point.
88
+ */
73
89
  findByToken(token: string): Promise<SourceRow | null>;
74
90
  /** Daemon-internal: returns the raw token. Never echo to HTTP responses.
75
91
  * Not on SourceRegistryPort — only the (unported) scheduler reads it. */
76
- getToken(id: number): string | null;
92
+ getToken(tenantId: string, id: number): string | null;
77
93
  /** Mint a fresh token, invalidating any previous one. */
78
- regenerateToken(id: number): Promise<string | null>;
79
- update(id: number, patch: SourceUpdate): Promise<SourceRow | null>;
80
- delete(id: number): Promise<boolean>;
94
+ regenerateToken(tenantId: string, id: number): Promise<string | null>;
95
+ update(tenantId: string, id: number, patch: SourceUpdate): Promise<SourceRow | null>;
96
+ delete(tenantId: string, id: number): Promise<boolean>;
81
97
  /**
82
98
  * Seed the three legacy adapter presets on first boot of an empty
83
99
  * registry. Subsequent boots are no-ops. Respects per-runtime env
84
100
  * overrides so existing installs don't lose their custom paths.
85
101
  */
86
- seedDefaults(): Promise<void>;
102
+ seedDefaults(tenantId: string): Promise<void>;
87
103
  }
88
104
  import type { Pool } from "pg";
89
105
  /**
@@ -94,15 +110,20 @@ import type { Pool } from "pg";
94
110
  export declare class PgSourceRegistry implements SourceRegistryPort {
95
111
  private readonly pool;
96
112
  constructor(pool: Pool);
97
- list(): Promise<SourceRow[]>;
98
- get(id: number): Promise<SourceRow | null>;
99
- getByName(name: string): Promise<SourceRow | null>;
100
- /** Daemon-internal: resolve a bearer token to its owning source. */
113
+ list(tenantId: string): Promise<SourceRow[]>;
114
+ get(tenantId: string, id: number): Promise<SourceRow | null>;
115
+ getByName(tenantId: string, name: string): Promise<SourceRow | null>;
116
+ /**
117
+ * Daemon-internal: resolve a bearer token to its owning source. AUTH
118
+ * lookup, not a corpus read — no tenantId param by design (program spec
119
+ * §3, M2 plan Wave B5 pinned semantics): this RESOLVES the tenant. The
120
+ * returned row's `tenantId` field is the caller's derivation point.
121
+ */
101
122
  findByToken(token: string): Promise<SourceRow | null>;
102
123
  /** Mint a fresh token, invalidating any previous one. Webhook sources only. */
103
- regenerateToken(id: number): Promise<string | null>;
104
- insert(input: SourceInsert): Promise<SourceRow>;
105
- update(id: number, patch: SourceUpdate): Promise<SourceRow | null>;
106
- delete(id: number): Promise<boolean>;
107
- seedDefaults(): Promise<void>;
124
+ regenerateToken(tenantId: string, id: number): Promise<string | null>;
125
+ insert(tenantId: string, input: SourceInsert): Promise<SourceRow>;
126
+ update(tenantId: string, id: number, patch: SourceUpdate): Promise<SourceRow | null>;
127
+ delete(tenantId: string, id: number): Promise<boolean>;
128
+ seedDefaults(tenantId: string): Promise<void>;
108
129
  }
@@ -11,11 +11,21 @@
11
11
  * which adapter to dispatch by reading `kind`.
12
12
  *
13
13
  * See docs/plans/desktop-product.md (Phase 0).
14
+ *
15
+ * Tenancy (program spec §4, M2 plan Wave B5): `sources` is a STAMP table.
16
+ * Every method except `findByToken` takes `tenantId` as its non-optional
17
+ * first parameter and routes its WHERE fragment through `tenantClause`;
18
+ * INSERTs stamp `tenant_id`. `findByToken` is the one pinned exception — it
19
+ * is an AUTH lookup, not a corpus read: it takes no tenantId because its job
20
+ * is to RESOLVE the tenant from the bearer token. The returned row carries
21
+ * its own `tenantId` field so callers (M4 ingest attribution) derive the
22
+ * tenant from the resolved row rather than being handed one.
14
23
  */
15
24
  import { randomBytes } from "node:crypto";
16
25
  import { existsSync } from "node:fs";
17
26
  import { homedir } from "node:os";
18
27
  import { join } from "node:path";
28
+ import { tenantClause, tenantClausePg } from "../tenancy/tenant-clause.js";
19
29
  import { defaultHistoryFile as defaultAiderHistoryFile } from "../adapters/aider.js";
20
30
  import { defaultDbPath as defaultCursorDbPath } from "../adapters/cursor.js";
21
31
  import { defaultDbPath as defaultHermesAgentDbPath } from "../adapters/hermes-agent.js";
@@ -31,6 +41,7 @@ function rowFromDb(r, revealedToken = null) {
31
41
  }
32
42
  return {
33
43
  id: r.id,
44
+ tenantId: r.tenant_id,
34
45
  kind: r.kind,
35
46
  name: r.name,
36
47
  pathOrUrl: r.path_or_url,
@@ -51,23 +62,26 @@ export class SourceRegistry {
51
62
  constructor(db) {
52
63
  this.db = db;
53
64
  }
54
- async list() {
55
- const rows = this.db.prepare(`SELECT * FROM sources ORDER BY id ASC`).all();
65
+ async list(tenantId) {
66
+ const tc = tenantClause(tenantId);
67
+ const rows = this.db.prepare(`SELECT * FROM sources WHERE ${tc.sql} ORDER BY id ASC`).all(tc.param);
56
68
  return rows.map((r) => rowFromDb(r));
57
69
  }
58
- async get(id) {
59
- const row = this.db.prepare(`SELECT * FROM sources WHERE id = ?`).get(id);
70
+ async get(tenantId, id) {
71
+ const tc = tenantClause(tenantId);
72
+ const row = this.db.prepare(`SELECT * FROM sources WHERE id = ? AND ${tc.sql}`).get(id, tc.param);
60
73
  return row ? rowFromDb(row) : null;
61
74
  }
62
- async getByName(name) {
63
- const row = this.db.prepare(`SELECT * FROM sources WHERE name = ?`).get(name);
75
+ async getByName(tenantId, name) {
76
+ const tc = tenantClause(tenantId);
77
+ const row = this.db.prepare(`SELECT * FROM sources WHERE name = ? AND ${tc.sql}`).get(name, tc.param);
64
78
  return row ? rowFromDb(row) : null;
65
79
  }
66
- async insert(input) {
80
+ async insert(tenantId, input) {
67
81
  const token = input.kind === "webhook" ? mintToken() : null;
68
82
  const stmt = this.db.prepare(`
69
- INSERT INTO sources (kind, name, path_or_url, runtime_label, parse_config, enabled, token)
70
- VALUES (@kind, @name, @path_or_url, @runtime_label, @parse_config, @enabled, @token)
83
+ INSERT INTO sources (kind, name, path_or_url, runtime_label, parse_config, enabled, token, tenant_id)
84
+ VALUES (@kind, @name, @path_or_url, @runtime_label, @parse_config, @enabled, @token, @tenant_id)
71
85
  `);
72
86
  const result = stmt.run({
73
87
  kind: input.kind,
@@ -77,6 +91,7 @@ export class SourceRegistry {
77
91
  parse_config: JSON.stringify(input.parseConfig ?? {}),
78
92
  enabled: input.enabled === false ? 0 : 1,
79
93
  token,
94
+ tenant_id: tenantId,
80
95
  });
81
96
  const id = Number(result.lastInsertRowid);
82
97
  const dbRow = this.db.prepare(`SELECT * FROM sources WHERE id = ?`).get(id);
@@ -86,7 +101,12 @@ export class SourceRegistry {
86
101
  // one chance to copy it. Subsequent list/get redact.
87
102
  return rowFromDb(dbRow, token);
88
103
  }
89
- /** Daemon-internal: resolve a bearer token to its owning source. */
104
+ /**
105
+ * Daemon-internal: resolve a bearer token to its owning source. AUTH
106
+ * lookup, not a corpus read — no tenantId param by design (program spec
107
+ * §3, M2 plan Wave B5 pinned semantics): this RESOLVES the tenant. The
108
+ * returned row's `tenantId` field is the caller's derivation point.
109
+ */
90
110
  async findByToken(token) {
91
111
  if (!token)
92
112
  return null;
@@ -95,51 +115,55 @@ export class SourceRegistry {
95
115
  }
96
116
  /** Daemon-internal: returns the raw token. Never echo to HTTP responses.
97
117
  * Not on SourceRegistryPort — only the (unported) scheduler reads it. */
98
- getToken(id) {
99
- const row = this.db.prepare(`SELECT token FROM sources WHERE id = ?`).get(id);
118
+ getToken(tenantId, id) {
119
+ const tc = tenantClause(tenantId);
120
+ const row = this.db.prepare(`SELECT token FROM sources WHERE id = ? AND ${tc.sql}`).get(id, tc.param);
100
121
  return row?.token ?? null;
101
122
  }
102
123
  /** Mint a fresh token, invalidating any previous one. */
103
- async regenerateToken(id) {
104
- const current = await this.get(id);
124
+ async regenerateToken(tenantId, id) {
125
+ const current = await this.get(tenantId, id);
105
126
  if (!current || current.kind !== "webhook")
106
127
  return null;
107
128
  const token = mintToken();
108
- this.db.prepare(`UPDATE sources SET token = ?, updated_at = datetime('now') WHERE id = ?`)
109
- .run(token, id);
129
+ const tc = tenantClause(tenantId);
130
+ this.db.prepare(`UPDATE sources SET token = ?, updated_at = datetime('now') WHERE id = ? AND ${tc.sql}`)
131
+ .run(token, id, tc.param);
110
132
  return token;
111
133
  }
112
- async update(id, patch) {
134
+ async update(tenantId, id, patch) {
113
135
  const fields = [];
114
- const params = { id };
136
+ const params = [];
115
137
  if (patch.name !== undefined) {
116
- fields.push("name = @name");
117
- params["name"] = patch.name;
138
+ fields.push("name = ?");
139
+ params.push(patch.name);
118
140
  }
119
141
  if (patch.pathOrUrl !== undefined) {
120
- fields.push("path_or_url = @path");
121
- params["path"] = patch.pathOrUrl;
142
+ fields.push("path_or_url = ?");
143
+ params.push(patch.pathOrUrl);
122
144
  }
123
145
  if (patch.runtimeLabel !== undefined) {
124
- fields.push("runtime_label = @rt");
125
- params["rt"] = patch.runtimeLabel;
146
+ fields.push("runtime_label = ?");
147
+ params.push(patch.runtimeLabel);
126
148
  }
127
149
  if (patch.parseConfig !== undefined) {
128
- fields.push("parse_config = @cfg");
129
- params["cfg"] = JSON.stringify(patch.parseConfig);
150
+ fields.push("parse_config = ?");
151
+ params.push(JSON.stringify(patch.parseConfig));
130
152
  }
131
153
  if (patch.enabled !== undefined) {
132
- fields.push("enabled = @en");
133
- params["en"] = patch.enabled ? 1 : 0;
154
+ fields.push("enabled = ?");
155
+ params.push(patch.enabled ? 1 : 0);
134
156
  }
135
157
  if (fields.length === 0)
136
- return this.get(id);
158
+ return this.get(tenantId, id);
137
159
  fields.push("updated_at = datetime('now')");
138
- this.db.prepare(`UPDATE sources SET ${fields.join(", ")} WHERE id = @id`).run(params);
139
- return this.get(id);
160
+ const tc = tenantClause(tenantId);
161
+ this.db.prepare(`UPDATE sources SET ${fields.join(", ")} WHERE id = ? AND ${tc.sql}`).run(...params, id, tc.param);
162
+ return this.get(tenantId, id);
140
163
  }
141
- async delete(id) {
142
- const result = this.db.prepare(`DELETE FROM sources WHERE id = ?`).run(id);
164
+ async delete(tenantId, id) {
165
+ const tc = tenantClause(tenantId);
166
+ const result = this.db.prepare(`DELETE FROM sources WHERE id = ? AND ${tc.sql}`).run(id, tc.param);
143
167
  return result.changes > 0;
144
168
  }
145
169
  /**
@@ -147,8 +171,9 @@ export class SourceRegistry {
147
171
  * registry. Subsequent boots are no-ops. Respects per-runtime env
148
172
  * overrides so existing installs don't lose their custom paths.
149
173
  */
150
- async seedDefaults() {
151
- const count = this.db.prepare(`SELECT COUNT(*) AS c FROM sources`).get();
174
+ async seedDefaults(tenantId) {
175
+ const tc = tenantClause(tenantId);
176
+ const count = this.db.prepare(`SELECT COUNT(*) AS c FROM sources WHERE ${tc.sql}`).get(tc.param);
152
177
  if ((count?.c ?? 0) > 0)
153
178
  return;
154
179
  const claudePath = process.env["NLM_CLAUDE_PROJECTS_PATH"]
@@ -159,6 +184,10 @@ export class SourceRegistry {
159
184
  ?? join(homedir(), ".hermes", "sessions");
160
185
  const piPath = process.env["PI_SESSIONS_PATH"]
161
186
  ?? join(homedir(), ".pi", "agent", "sessions");
187
+ const museDataHome = process.env["XDG_DATA_HOME"]
188
+ ?? join(homedir(), ".local", "share");
189
+ const musePath = process.env["NLM_MUSE_SESSIONS_PATH"]
190
+ ?? join(museDataHome, "muse", "sessions");
162
191
  const openCodeDbPath = defaultOpenCodeDbPath();
163
192
  const hermesAgentDbPath = defaultHermesAgentDbPath();
164
193
  const aiderHistoryFile = defaultAiderHistoryFile();
@@ -193,6 +222,13 @@ export class SourceRegistry {
193
222
  runtimeLabel: "hermes-agent/1.0",
194
223
  enabled: existsSync(hermesAgentDbPath),
195
224
  },
225
+ {
226
+ kind: "muse",
227
+ name: "Muse",
228
+ pathOrUrl: musePath,
229
+ runtimeLabel: "muse/1.0",
230
+ enabled: existsSync(musePath),
231
+ },
196
232
  {
197
233
  kind: "aider",
198
234
  name: "Aider",
@@ -230,12 +266,13 @@ export class SourceRegistry {
230
266
  },
231
267
  ];
232
268
  for (const p of presets)
233
- await this.insert(p);
269
+ await this.insert(tenantId, p);
234
270
  }
235
271
  }
236
272
  function pgRowToSource(r) {
237
273
  return {
238
274
  id: r.id,
275
+ tenantId: r.tenant_id,
239
276
  kind: r.kind,
240
277
  name: r.name,
241
278
  pathOrUrl: r.path_or_url,
@@ -253,6 +290,8 @@ function pgRowToSource(r) {
253
290
  updatedAt: r.updated_at,
254
291
  };
255
292
  }
293
+ const PG_SOURCE_COLUMNS = `id, tenant_id, kind, name, path_or_url, runtime_label, parse_config,
294
+ enabled, token, created_at, updated_at`;
256
295
  /**
257
296
  * PgSourceRegistry — CRUD over `sources` for the PG storage path.
258
297
  * Takes a pg.Pool instead of better-sqlite3.Database.
@@ -263,59 +302,60 @@ export class PgSourceRegistry {
263
302
  constructor(pool) {
264
303
  this.pool = pool;
265
304
  }
266
- async list() {
267
- const result = await this.pool.query(`SELECT id, kind, name, path_or_url, runtime_label, parse_config,
268
- enabled, token, created_at, updated_at
269
- FROM sources ORDER BY id`);
305
+ async list(tenantId) {
306
+ const tc = tenantClausePg(tenantId, 1);
307
+ const result = await this.pool.query(`SELECT ${PG_SOURCE_COLUMNS} FROM sources WHERE ${tc.sql} ORDER BY id`, [tc.param]);
270
308
  return result.rows.map(pgRowToSource);
271
309
  }
272
- async get(id) {
273
- const result = await this.pool.query(`SELECT id, kind, name, path_or_url, runtime_label, parse_config,
274
- enabled, token, created_at, updated_at
275
- FROM sources WHERE id = $1`, [id]);
310
+ async get(tenantId, id) {
311
+ const tc = tenantClausePg(tenantId, 2);
312
+ const result = await this.pool.query(`SELECT ${PG_SOURCE_COLUMNS} FROM sources WHERE id = $1 AND ${tc.sql}`, [id, tc.param]);
276
313
  if (!result.rows[0])
277
314
  return null;
278
315
  return pgRowToSource(result.rows[0]);
279
316
  }
280
- async getByName(name) {
281
- const result = await this.pool.query(`SELECT id, kind, name, path_or_url, runtime_label, parse_config,
282
- enabled, token, created_at, updated_at
283
- FROM sources WHERE name = $1`, [name]);
317
+ async getByName(tenantId, name) {
318
+ const tc = tenantClausePg(tenantId, 2);
319
+ const result = await this.pool.query(`SELECT ${PG_SOURCE_COLUMNS} FROM sources WHERE name = $1 AND ${tc.sql}`, [name, tc.param]);
284
320
  return result.rows[0] ? pgRowToSource(result.rows[0]) : null;
285
321
  }
286
- /** Daemon-internal: resolve a bearer token to its owning source. */
322
+ /**
323
+ * Daemon-internal: resolve a bearer token to its owning source. AUTH
324
+ * lookup, not a corpus read — no tenantId param by design (program spec
325
+ * §3, M2 plan Wave B5 pinned semantics): this RESOLVES the tenant. The
326
+ * returned row's `tenantId` field is the caller's derivation point.
327
+ */
287
328
  async findByToken(token) {
288
329
  if (!token)
289
330
  return null;
290
- const result = await this.pool.query(`SELECT id, kind, name, path_or_url, runtime_label, parse_config,
291
- enabled, token, created_at, updated_at
292
- FROM sources WHERE token = $1`, [token]);
331
+ const result = await this.pool.query(`SELECT ${PG_SOURCE_COLUMNS} FROM sources WHERE token = $1`, [token]);
293
332
  return result.rows[0] ? pgRowToSource(result.rows[0]) : null;
294
333
  }
295
334
  /** Mint a fresh token, invalidating any previous one. Webhook sources only. */
296
- async regenerateToken(id) {
297
- const current = await this.get(id);
335
+ async regenerateToken(tenantId, id) {
336
+ const current = await this.get(tenantId, id);
298
337
  if (!current || current.kind !== "webhook")
299
338
  return null;
300
339
  const token = mintToken();
301
- await this.pool.query("UPDATE sources SET token = $1, updated_at = NOW() WHERE id = $2", [token, id]);
340
+ const tc = tenantClausePg(tenantId, 3);
341
+ await this.pool.query(`UPDATE sources SET token = $1, updated_at = NOW() WHERE id = $2 AND ${tc.sql}`, [token, id, tc.param]);
302
342
  return token;
303
343
  }
304
- async insert(input) {
344
+ async insert(tenantId, input) {
305
345
  // Webhook sources get a token minted at insert time — revealed once on the
306
346
  // insert response only. Subsequent list()/get() always return token: null.
307
347
  const token = input.kind === "webhook" ? mintToken() : null;
308
- const result = await this.pool.query(`INSERT INTO sources (kind, name, path_or_url, runtime_label, parse_config, enabled, token)
309
- VALUES ($1, $2, $3, $4, $5, $6, $7)
348
+ const result = await this.pool.query(`INSERT INTO sources (kind, name, path_or_url, runtime_label, parse_config, enabled, token, tenant_id)
349
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
310
350
  RETURNING id, created_at, updated_at`, [
311
351
  input.kind, input.name, input.pathOrUrl ?? null, input.runtimeLabel,
312
- JSON.stringify(input.parseConfig ?? {}), input.enabled ?? true, token,
352
+ JSON.stringify(input.parseConfig ?? {}), input.enabled ?? true, token, tenantId,
313
353
  ]);
314
354
  const row = result.rows[0];
315
355
  if (!row)
316
356
  throw new Error("PgSourceRegistry.insert: RETURNING yielded no row");
317
357
  return {
318
- id: row.id, kind: input.kind, name: input.name, pathOrUrl: input.pathOrUrl ?? null,
358
+ id: row.id, tenantId, kind: input.kind, name: input.name, pathOrUrl: input.pathOrUrl ?? null,
319
359
  runtimeLabel: input.runtimeLabel,
320
360
  parseConfig: input.parseConfig ?? {},
321
361
  enabled: input.enabled ?? true,
@@ -323,7 +363,7 @@ export class PgSourceRegistry {
323
363
  createdAt: row.created_at, updatedAt: row.updated_at,
324
364
  };
325
365
  }
326
- async update(id, patch) {
366
+ async update(tenantId, id, patch) {
327
367
  const sets = ["updated_at = NOW()"];
328
368
  const params = [];
329
369
  let idx = 1;
@@ -348,25 +388,28 @@ export class PgSourceRegistry {
348
388
  params.push(patch.enabled);
349
389
  }
350
390
  if (sets.length === 1)
351
- return this.get(id);
391
+ return this.get(tenantId, id);
352
392
  params.push(id);
353
- await this.pool.query(`UPDATE sources SET ${sets.join(", ")} WHERE id = $${idx}`, params);
354
- return this.get(id);
393
+ const tc = tenantClausePg(tenantId, idx + 1);
394
+ params.push(tc.param);
395
+ await this.pool.query(`UPDATE sources SET ${sets.join(", ")} WHERE id = $${idx} AND ${tc.sql}`, params);
396
+ return this.get(tenantId, id);
355
397
  }
356
- async delete(id) {
357
- const result = await this.pool.query("DELETE FROM sources WHERE id = $1", [id]);
398
+ async delete(tenantId, id) {
399
+ const tc = tenantClausePg(tenantId, 2);
400
+ const result = await this.pool.query(`DELETE FROM sources WHERE id = $1 AND ${tc.sql}`, [id, tc.param]);
358
401
  return (result.rowCount ?? 0) > 0;
359
402
  }
360
- async seedDefaults() {
403
+ async seedDefaults(tenantId) {
361
404
  const presets = [
362
405
  { kind: "claude-code", name: "claude-code", path_or_url: null, runtime_label: "claude-code" },
363
406
  { kind: "hermes", name: "hermes", path_or_url: null, runtime_label: "hermes" },
364
407
  { kind: "pi", name: "pi", path_or_url: null, runtime_label: "pi" },
365
408
  ];
366
409
  for (const p of presets) {
367
- await this.pool.query(`INSERT INTO sources (kind, name, path_or_url, runtime_label, parse_config, enabled)
368
- VALUES ($1, $2, $3, $4, '{}', TRUE)
369
- ON CONFLICT (name) DO NOTHING`, [p.kind, p.name, p.path_or_url, p.runtime_label]);
410
+ await this.pool.query(`INSERT INTO sources (kind, name, path_or_url, runtime_label, parse_config, enabled, tenant_id)
411
+ VALUES ($1, $2, $3, $4, '{}', TRUE, $5)
412
+ ON CONFLICT (tenant_id, name) DO NOTHING`, [p.kind, p.name, p.path_or_url, p.runtime_label, tenantId]);
370
413
  }
371
414
  }
372
415
  }
@@ -1 +1 @@
1
- {"version":3,"file":"source-registry.js","sourceRoot":"","sources":["../../../src/core/sources/source-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source-registry.js","sourceRoot":"","sources":["../../../src/core/sources/source-registry.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,11 @@
9
9
  * Embeddings live in code_exemplar_embeddings with ON DELETE CASCADE, so the
10
10
  * prune/cap deletes here don't need separate vec bookkeeping (unlike the
11
11
  * SQLite store, which deletes from code_exemplars_vec explicitly).
12
+ *
13
+ * Tenancy: mirrors SqliteCodeExemplarStore — every method takes `tenantId`
14
+ * as its non-optional first parameter and routes STAMP-table WHERE
15
+ * fragments through `tenantClausePg`. See that file's header comment for
16
+ * the vector-path rationale.
12
17
  */
13
18
  import type { Pool } from "pg";
14
19
  import type { CodeExemplarSearchFilter, CodeExemplarStore, ExemplarVerdictPatch, ExemplarVerdictResult, ExemplarVerdictSource } from "../../ports/code-exemplar-store.js";
@@ -16,18 +21,22 @@ import type { CodeExemplar, CodeExemplarHit, CodeExemplarInput } from "../../sha
16
21
  export declare class PgCodeExemplarStore implements CodeExemplarStore {
17
22
  private readonly pool;
18
23
  constructor(pool: Pool);
19
- insert(input: CodeExemplarInput): Promise<{
24
+ insert(tenantId: string, input: CodeExemplarInput): Promise<{
20
25
  id: string;
21
26
  skipped: boolean;
22
27
  }>;
23
- insertMany(inputs: ReadonlyArray<CodeExemplarInput>): Promise<number>;
24
- upsertEmbedding(exemplarId: string, vector: Float32Array): Promise<void>;
25
- searchByVector(queryVector: Float32Array, filter: CodeExemplarSearchFilter): Promise<ReadonlyArray<CodeExemplarHit>>;
26
- getById(id: string): Promise<CodeExemplar | null>;
27
- listBySessions(sessionIds: ReadonlyArray<string>): Promise<ReadonlyArray<CodeExemplar>>;
28
- applyBucketCap(installScope: string, maxPerBucket: number): Promise<number>;
29
- pruneReverted(installScope: string): Promise<number>;
30
- setVerdict(id: string, patch: ExemplarVerdictPatch, source: ExemplarVerdictSource): Promise<ExemplarVerdictResult>;
31
- pruneOlderThan(olderThanTs: string): Promise<number>;
28
+ insertMany(tenantId: string, inputs: ReadonlyArray<CodeExemplarInput>): Promise<number>;
29
+ /**
30
+ * No-op if exemplarId isn't owned by tenantId — writing an embedding for
31
+ * another tenant's exemplar must never fall through to a write.
32
+ */
33
+ upsertEmbedding(tenantId: string, exemplarId: string, vector: Float32Array): Promise<void>;
34
+ searchByVector(tenantId: string, queryVector: Float32Array, filter: CodeExemplarSearchFilter): Promise<ReadonlyArray<CodeExemplarHit>>;
35
+ getById(tenantId: string, id: string): Promise<CodeExemplar | null>;
36
+ listBySessions(tenantId: string, sessionIds: ReadonlyArray<string>): Promise<ReadonlyArray<CodeExemplar>>;
37
+ applyBucketCap(tenantId: string, installScope: string, maxPerBucket: number): Promise<number>;
38
+ pruneReverted(tenantId: string, installScope: string): Promise<number>;
39
+ setVerdict(tenantId: string, id: string, patch: ExemplarVerdictPatch, source: ExemplarVerdictSource): Promise<ExemplarVerdictResult>;
40
+ pruneOlderThan(tenantId: string, olderThanTs: string): Promise<number>;
32
41
  private rowToExemplar;
33
42
  }