nlm-memory 0.20.1 → 0.21.12

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 (475) hide show
  1. package/README.md +69 -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 +69 -4
  5. package/dist/cli/digest.js.map +1 -1
  6. package/dist/cli/nlm.d.ts +14 -0
  7. package/dist/cli/nlm.js +556 -71
  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-backfill.d.ts +34 -0
  13. package/dist/cli/scope-backfill.js +237 -0
  14. package/dist/cli/scope-backfill.js.map +1 -0
  15. package/dist/cli/scope-coverage.d.ts +44 -0
  16. package/dist/cli/scope-coverage.js +208 -0
  17. package/dist/cli/scope-coverage.js.map +1 -0
  18. package/dist/cli/supersede.js +8 -7
  19. package/dist/cli/supersede.js.map +1 -1
  20. package/dist/core/actions/actions-log.d.ts +65 -8
  21. package/dist/core/actions/actions-log.js +134 -17
  22. package/dist/core/actions/actions-log.js.map +1 -1
  23. package/dist/core/actions/overlay.d.ts +11 -2
  24. package/dist/core/actions/overlay.js +18 -6
  25. package/dist/core/actions/overlay.js.map +1 -1
  26. package/dist/core/adapters/claude-code.d.ts +14 -0
  27. package/dist/core/adapters/claude-code.js +30 -0
  28. package/dist/core/adapters/claude-code.js.map +1 -1
  29. package/dist/core/adapters/from-source.js +11 -3
  30. package/dist/core/adapters/from-source.js.map +1 -1
  31. package/dist/core/adapters/fs-wiki-writer.d.ts +44 -0
  32. package/dist/core/adapters/fs-wiki-writer.js +132 -0
  33. package/dist/core/adapters/fs-wiki-writer.js.map +1 -0
  34. package/dist/core/adapters/hermes-agent.d.ts +15 -2
  35. package/dist/core/adapters/hermes-agent.js +57 -11
  36. package/dist/core/adapters/hermes-agent.js.map +1 -1
  37. package/dist/core/adapters/memory-wiki-writer.d.ts +8 -0
  38. package/dist/core/adapters/memory-wiki-writer.js +16 -0
  39. package/dist/core/adapters/memory-wiki-writer.js.map +1 -0
  40. package/dist/core/adapters/muse.d.ts +51 -0
  41. package/dist/core/adapters/muse.js +271 -0
  42. package/dist/core/adapters/muse.js.map +1 -0
  43. package/dist/core/adapters/opencode.d.ts +11 -4
  44. package/dist/core/adapters/opencode.js +41 -7
  45. package/dist/core/adapters/opencode.js.map +1 -1
  46. package/dist/core/alerts/alert-state.d.ts +17 -0
  47. package/dist/core/alerts/alert-state.js +45 -0
  48. package/dist/core/alerts/alert-state.js.map +1 -0
  49. package/dist/core/alerts/check-and-alert.d.ts +28 -0
  50. package/dist/core/alerts/check-and-alert.js +53 -0
  51. package/dist/core/alerts/check-and-alert.js.map +1 -0
  52. package/dist/core/alerts/drift-transition.d.ts +27 -0
  53. package/dist/core/alerts/drift-transition.js +56 -0
  54. package/dist/core/alerts/drift-transition.js.map +1 -0
  55. package/dist/core/alerts/embedder-transition.d.ts +23 -0
  56. package/dist/core/alerts/embedder-transition.js +40 -0
  57. package/dist/core/alerts/embedder-transition.js.map +1 -0
  58. package/dist/core/alerts/fire-alert.d.ts +24 -0
  59. package/dist/core/alerts/fire-alert.js +72 -0
  60. package/dist/core/alerts/fire-alert.js.map +1 -0
  61. package/dist/core/alerts/job-alert.d.ts +12 -0
  62. package/dist/core/alerts/job-alert.js +37 -0
  63. package/dist/core/alerts/job-alert.js.map +1 -0
  64. package/dist/core/alerts/types.d.ts +104 -0
  65. package/dist/core/alerts/types.js +11 -0
  66. package/dist/core/alerts/types.js.map +1 -0
  67. package/dist/core/alerts/wiki-alert.d.ts +15 -0
  68. package/dist/core/alerts/wiki-alert.js +31 -0
  69. package/dist/core/alerts/wiki-alert.js.map +1 -0
  70. package/dist/core/classifier/prompt.d.ts +13 -0
  71. package/dist/core/classifier/prompt.js +52 -2
  72. package/dist/core/classifier/prompt.js.map +1 -1
  73. package/dist/core/dataset/build-dataset.d.ts +16 -1
  74. package/dist/core/dataset/build-dataset.js +46 -13
  75. package/dist/core/dataset/build-dataset.js.map +1 -1
  76. package/dist/core/digest/compose.d.ts +11 -3
  77. package/dist/core/digest/compose.js +70 -17
  78. package/dist/core/digest/compose.js.map +1 -1
  79. package/dist/core/digest/hook-injection.d.ts +43 -0
  80. package/dist/core/digest/hook-injection.js +87 -0
  81. package/dist/core/digest/hook-injection.js.map +1 -0
  82. package/dist/core/digest/hook-version-parity.d.ts +31 -0
  83. package/dist/core/digest/hook-version-parity.js +56 -0
  84. package/dist/core/digest/hook-version-parity.js.map +1 -0
  85. package/dist/core/embedding/pg-embed-backfill.js +1 -1
  86. package/dist/core/embedding/pg-embed-backfill.js.map +1 -1
  87. package/dist/core/exemplars/capture-from-session.d.ts +2 -1
  88. package/dist/core/exemplars/capture-from-session.js +4 -4
  89. package/dist/core/exemplars/capture-from-session.js.map +1 -1
  90. package/dist/core/exemplars/embed-backfill.d.ts +9 -0
  91. package/dist/core/exemplars/embed-backfill.js +9 -1
  92. package/dist/core/exemplars/embed-backfill.js.map +1 -1
  93. package/dist/core/exemplars/extract-exemplar.d.ts +2 -0
  94. package/dist/core/exemplars/extract-exemplar.js +7 -1
  95. package/dist/core/exemplars/extract-exemplar.js.map +1 -1
  96. package/dist/core/exemplars/ingest-exemplar.d.ts +1 -0
  97. package/dist/core/exemplars/ingest-exemplar.js +1 -0
  98. package/dist/core/exemplars/ingest-exemplar.js.map +1 -1
  99. package/dist/core/exemplars/recall-code.d.ts +1 -1
  100. package/dist/core/exemplars/recall-code.js +2 -2
  101. package/dist/core/exemplars/recall-code.js.map +1 -1
  102. package/dist/core/facts/backfill-facts.d.ts +1 -1
  103. package/dist/core/facts/backfill-facts.js +4 -4
  104. package/dist/core/facts/backfill-facts.js.map +1 -1
  105. package/dist/core/facts/embed-backfill.d.ts +54 -0
  106. package/dist/core/facts/embed-backfill.js +109 -0
  107. package/dist/core/facts/embed-backfill.js.map +1 -0
  108. package/dist/core/facts/reconcile-facts.d.ts +42 -0
  109. package/dist/core/facts/reconcile-facts.js +133 -0
  110. package/dist/core/facts/reconcile-facts.js.map +1 -0
  111. package/dist/core/health/embed-failure-state.d.ts +4 -0
  112. package/dist/core/health/embed-failure-state.js +12 -0
  113. package/dist/core/health/embed-failure-state.js.map +1 -0
  114. package/dist/core/health/warmup-retry.d.ts +27 -0
  115. package/dist/core/health/warmup-retry.js +53 -0
  116. package/dist/core/health/warmup-retry.js.map +1 -0
  117. package/dist/core/health/warmup-state.d.ts +15 -0
  118. package/dist/core/health/warmup-state.js +15 -1
  119. package/dist/core/health/warmup-state.js.map +1 -1
  120. package/dist/core/hook/cite-memo.d.ts +11 -7
  121. package/dist/core/hook/cite-memo.js +25 -17
  122. package/dist/core/hook/cite-memo.js.map +1 -1
  123. package/dist/core/hook/claude-settings.d.ts +1 -1
  124. package/dist/core/hook/claude-settings.js +0 -1
  125. package/dist/core/hook/claude-settings.js.map +1 -1
  126. package/dist/core/hook/hook-log.d.ts +13 -2
  127. package/dist/core/hook/hook-log.js +16 -8
  128. package/dist/core/hook/hook-log.js.map +1 -1
  129. package/dist/core/hook/memo.d.ts +10 -6
  130. package/dist/core/hook/memo.js +25 -17
  131. package/dist/core/hook/memo.js.map +1 -1
  132. package/dist/core/hook/pointer-block.d.ts +8 -1
  133. package/dist/core/hook/pointer-block.js +17 -4
  134. package/dist/core/hook/pointer-block.js.map +1 -1
  135. package/dist/core/hook/resolve-conversation-by-query.d.ts +6 -5
  136. package/dist/core/hook/resolve-conversation-by-query.js +24 -12
  137. package/dist/core/hook/resolve-conversation-by-query.js.map +1 -1
  138. package/dist/core/ingest/backfill-derivables.d.ts +92 -0
  139. package/dist/core/ingest/backfill-derivables.js +175 -0
  140. package/dist/core/ingest/backfill-derivables.js.map +1 -0
  141. package/dist/core/ingest/ingest-session.d.ts +1 -1
  142. package/dist/core/ingest/ingest-session.js +23 -3
  143. package/dist/core/ingest/ingest-session.js.map +1 -1
  144. package/dist/core/ingest/reclassify-oversized.d.ts +1 -1
  145. package/dist/core/ingest/reclassify-oversized.js +8 -2
  146. package/dist/core/ingest/reclassify-oversized.js.map +1 -1
  147. package/dist/core/ingest/reprocess.d.ts +1 -1
  148. package/dist/core/ingest/reprocess.js +7 -2
  149. package/dist/core/ingest/reprocess.js.map +1 -1
  150. package/dist/core/ingest/transcript-derivables.d.ts +27 -0
  151. package/dist/core/ingest/transcript-derivables.js +138 -0
  152. package/dist/core/ingest/transcript-derivables.js.map +1 -0
  153. package/dist/core/jobs/job-supervisor.d.ts +168 -0
  154. package/dist/core/jobs/job-supervisor.js +335 -0
  155. package/dist/core/jobs/job-supervisor.js.map +1 -0
  156. package/dist/core/learner/model.d.ts +63 -0
  157. package/dist/core/learner/model.js +30 -0
  158. package/dist/core/learner/model.js.map +1 -0
  159. package/dist/core/learner/service.d.ts +42 -0
  160. package/dist/core/learner/service.js +74 -0
  161. package/dist/core/learner/service.js.map +1 -0
  162. package/dist/core/learner/summary.d.ts +28 -0
  163. package/dist/core/learner/summary.js +70 -0
  164. package/dist/core/learner/summary.js.map +1 -0
  165. package/dist/core/learner/validate.d.ts +18 -0
  166. package/dist/core/learner/validate.js +95 -0
  167. package/dist/core/learner/validate.js.map +1 -0
  168. package/dist/core/metrics/re-derivation.d.ts +31 -2
  169. package/dist/core/metrics/re-derivation.js +36 -4
  170. package/dist/core/metrics/re-derivation.js.map +1 -1
  171. package/dist/core/outcome/coverage.d.ts +33 -0
  172. package/dist/core/outcome/coverage.js +46 -0
  173. package/dist/core/outcome/coverage.js.map +1 -0
  174. package/dist/core/outcome/rollup.d.ts +33 -0
  175. package/dist/core/outcome/rollup.js +113 -0
  176. package/dist/core/outcome/rollup.js.map +1 -0
  177. package/dist/core/providers/provider-registry.d.ts +40 -23
  178. package/dist/core/providers/provider-registry.js +99 -81
  179. package/dist/core/providers/provider-registry.js.map +1 -1
  180. package/dist/core/recall/citation-log.d.ts +10 -5
  181. package/dist/core/recall/citation-log.js +21 -10
  182. package/dist/core/recall/citation-log.js.map +1 -1
  183. package/dist/core/recall/hook-recall-log.d.ts +7 -4
  184. package/dist/core/recall/hook-recall-log.js +14 -8
  185. package/dist/core/recall/hook-recall-log.js.map +1 -1
  186. package/dist/core/recall/miss-log.d.ts +7 -4
  187. package/dist/core/recall/miss-log.js +18 -11
  188. package/dist/core/recall/miss-log.js.map +1 -1
  189. package/dist/core/recall/query-log.d.ts +8 -5
  190. package/dist/core/recall/query-log.js +16 -9
  191. package/dist/core/recall/query-log.js.map +1 -1
  192. package/dist/core/recall/recall-service.d.ts +10 -1
  193. package/dist/core/recall/recall-service.js +31 -12
  194. package/dist/core/recall/recall-service.js.map +1 -1
  195. package/dist/core/recall/recent-log.d.ts +6 -1
  196. package/dist/core/recall/recent-log.js +13 -5
  197. package/dist/core/recall/recent-log.js.map +1 -1
  198. package/dist/core/recall/related-concepts.d.ts +29 -0
  199. package/dist/core/recall/related-concepts.js +67 -0
  200. package/dist/core/recall/related-concepts.js.map +1 -0
  201. package/dist/core/recall/related-exemplars.d.ts +1 -1
  202. package/dist/core/recall/related-exemplars.js +2 -2
  203. package/dist/core/recall/related-exemplars.js.map +1 -1
  204. package/dist/core/recall/related-facts.d.ts +1 -1
  205. package/dist/core/recall/related-facts.js +3 -3
  206. package/dist/core/recall/related-facts.js.map +1 -1
  207. package/dist/core/recall-facts/fact-query-log.d.ts +8 -4
  208. package/dist/core/recall-facts/fact-query-log.js +16 -8
  209. package/dist/core/recall-facts/fact-query-log.js.map +1 -1
  210. package/dist/core/recall-facts/fact-recall-service.d.ts +2 -2
  211. package/dist/core/recall-facts/fact-recall-service.js +13 -12
  212. package/dist/core/recall-facts/fact-recall-service.js.map +1 -1
  213. package/dist/core/scheduler/scan-once.js +15 -12
  214. package/dist/core/scheduler/scan-once.js.map +1 -1
  215. package/dist/core/scheduler/scheduler.d.ts +3 -0
  216. package/dist/core/scheduler/scheduler.js +45 -10
  217. package/dist/core/scheduler/scheduler.js.map +1 -1
  218. package/dist/core/scope/alias-map.d.ts +10 -0
  219. package/dist/core/scope/alias-map.js +41 -0
  220. package/dist/core/scope/alias-map.js.map +1 -0
  221. package/dist/core/scope/derive-scope.d.ts +8 -0
  222. package/dist/core/scope/derive-scope.js +54 -0
  223. package/dist/core/scope/derive-scope.js.map +1 -0
  224. package/dist/core/scope/scope-clause.d.ts +16 -0
  225. package/dist/core/scope/scope-clause.js +21 -0
  226. package/dist/core/scope/scope-clause.js.map +1 -0
  227. package/dist/core/scope/stamp-flag.d.ts +1 -0
  228. package/dist/core/scope/stamp-flag.js +4 -0
  229. package/dist/core/scope/stamp-flag.js.map +1 -0
  230. package/dist/core/signals/code-signal.d.ts +1 -0
  231. package/dist/core/signals/code-signal.js +1 -0
  232. package/dist/core/signals/code-signal.js.map +1 -1
  233. package/dist/core/signals/failure-mode-recall.d.ts +1 -1
  234. package/dist/core/signals/failure-mode-recall.js +2 -2
  235. package/dist/core/signals/failure-mode-recall.js.map +1 -1
  236. package/dist/core/signals/ingest-signal.d.ts +1 -1
  237. package/dist/core/signals/ingest-signal.js +3 -1
  238. package/dist/core/signals/ingest-signal.js.map +1 -1
  239. package/dist/core/signals/stamp-scope.d.ts +18 -0
  240. package/dist/core/signals/stamp-scope.js +28 -0
  241. package/dist/core/signals/stamp-scope.js.map +1 -0
  242. package/dist/core/sources/source-registry.d.ts +49 -28
  243. package/dist/core/sources/source-registry.js +113 -70
  244. package/dist/core/sources/source-registry.js.map +1 -1
  245. package/dist/core/storage/pg-code-exemplar-store.d.ts +19 -10
  246. package/dist/core/storage/pg-code-exemplar-store.js +62 -27
  247. package/dist/core/storage/pg-code-exemplar-store.js.map +1 -1
  248. package/dist/core/storage/pg-entity-store.d.ts +6 -1
  249. package/dist/core/storage/pg-entity-store.js +33 -18
  250. package/dist/core/storage/pg-entity-store.js.map +1 -1
  251. package/dist/core/storage/pg-fact-ingest.d.ts +1 -1
  252. package/dist/core/storage/pg-fact-ingest.js +10 -7
  253. package/dist/core/storage/pg-fact-ingest.js.map +1 -1
  254. package/dist/core/storage/pg-fact-store.d.ts +29 -17
  255. package/dist/core/storage/pg-fact-store.js +99 -46
  256. package/dist/core/storage/pg-fact-store.js.map +1 -1
  257. package/dist/core/storage/pg-learner-store.d.ts +27 -0
  258. package/dist/core/storage/pg-learner-store.js +174 -0
  259. package/dist/core/storage/pg-learner-store.js.map +1 -0
  260. package/dist/core/storage/pg-session-store.d.ts +25 -21
  261. package/dist/core/storage/pg-session-store.js +186 -114
  262. package/dist/core/storage/pg-session-store.js.map +1 -1
  263. package/dist/core/storage/pg-signal-store.d.ts +10 -5
  264. package/dist/core/storage/pg-signal-store.js +26 -13
  265. package/dist/core/storage/pg-signal-store.js.map +1 -1
  266. package/dist/core/storage/pg-storage.d.ts +4 -0
  267. package/dist/core/storage/pg-storage.js +6 -0
  268. package/dist/core/storage/pg-storage.js.map +1 -1
  269. package/dist/core/storage/pg-workstream-store.d.ts +17 -11
  270. package/dist/core/storage/pg-workstream-store.js +47 -29
  271. package/dist/core/storage/pg-workstream-store.js.map +1 -1
  272. package/dist/core/storage/sqlite-code-exemplar-store.d.ts +24 -10
  273. package/dist/core/storage/sqlite-code-exemplar-store.js +86 -40
  274. package/dist/core/storage/sqlite-code-exemplar-store.js.map +1 -1
  275. package/dist/core/storage/sqlite-entity-store.d.ts +8 -1
  276. package/dist/core/storage/sqlite-entity-store.js +46 -27
  277. package/dist/core/storage/sqlite-entity-store.js.map +1 -1
  278. package/dist/core/storage/sqlite-fact-store.d.ts +45 -19
  279. package/dist/core/storage/sqlite-fact-store.js +175 -64
  280. package/dist/core/storage/sqlite-fact-store.js.map +1 -1
  281. package/dist/core/storage/sqlite-learner-store.d.ts +33 -0
  282. package/dist/core/storage/sqlite-learner-store.js +178 -0
  283. package/dist/core/storage/sqlite-learner-store.js.map +1 -0
  284. package/dist/core/storage/sqlite-outcome-store.d.ts +104 -0
  285. package/dist/core/storage/sqlite-outcome-store.js +211 -0
  286. package/dist/core/storage/sqlite-outcome-store.js.map +1 -0
  287. package/dist/core/storage/sqlite-session-store.d.ts +50 -21
  288. package/dist/core/storage/sqlite-session-store.js +233 -149
  289. package/dist/core/storage/sqlite-session-store.js.map +1 -1
  290. package/dist/core/storage/sqlite-signal-store.d.ts +12 -5
  291. package/dist/core/storage/sqlite-signal-store.js +29 -15
  292. package/dist/core/storage/sqlite-signal-store.js.map +1 -1
  293. package/dist/core/storage/sqlite-storage.d.ts +4 -0
  294. package/dist/core/storage/sqlite-storage.js +10 -2
  295. package/dist/core/storage/sqlite-storage.js.map +1 -1
  296. package/dist/core/storage/sqlite-workstream-store.d.ts +17 -11
  297. package/dist/core/storage/sqlite-workstream-store.js +53 -31
  298. package/dist/core/storage/sqlite-workstream-store.js.map +1 -1
  299. package/dist/core/storage/supersedence-log.d.ts +10 -7
  300. package/dist/core/storage/supersedence-log.js +21 -14
  301. package/dist/core/storage/supersedence-log.js.map +1 -1
  302. package/dist/core/telemetry/probe-filter.d.ts +35 -0
  303. package/dist/core/telemetry/probe-filter.js +56 -0
  304. package/dist/core/telemetry/probe-filter.js.map +1 -0
  305. package/dist/core/tenancy/default-team.d.ts +6 -0
  306. package/dist/core/tenancy/default-team.js +7 -0
  307. package/dist/core/tenancy/default-team.js.map +1 -0
  308. package/dist/core/tenancy/hosted-mode.d.ts +9 -0
  309. package/dist/core/tenancy/hosted-mode.js +12 -0
  310. package/dist/core/tenancy/hosted-mode.js.map +1 -0
  311. package/dist/core/tenancy/team-auth.d.ts +16 -0
  312. package/dist/core/tenancy/team-auth.js +22 -0
  313. package/dist/core/tenancy/team-auth.js.map +1 -0
  314. package/dist/core/tenancy/team-token-store.d.ts +45 -0
  315. package/dist/core/tenancy/team-token-store.js +52 -0
  316. package/dist/core/tenancy/team-token-store.js.map +1 -0
  317. package/dist/core/tenancy/tenant-clause.d.ts +37 -0
  318. package/dist/core/tenancy/tenant-clause.js +11 -0
  319. package/dist/core/tenancy/tenant-clause.js.map +1 -0
  320. package/dist/core/tenancy/tenant-state-path.d.ts +28 -0
  321. package/dist/core/tenancy/tenant-state-path.js +49 -0
  322. package/dist/core/tenancy/tenant-state-path.js.map +1 -0
  323. package/dist/core/update-check/check.d.ts +6 -0
  324. package/dist/core/update-check/check.js +35 -0
  325. package/dist/core/update-check/check.js.map +1 -1
  326. package/dist/core/wiki/project.d.ts +17 -0
  327. package/dist/core/wiki/project.js +37 -0
  328. package/dist/core/wiki/project.js.map +1 -0
  329. package/dist/core/wiki/reconcile.d.ts +15 -0
  330. package/dist/core/wiki/reconcile.js +14 -0
  331. package/dist/core/wiki/reconcile.js.map +1 -0
  332. package/dist/core/wiki/render.d.ts +5 -0
  333. package/dist/core/wiki/render.js +84 -0
  334. package/dist/core/wiki/render.js.map +1 -0
  335. package/dist/core/wiki/rollup.d.ts +28 -0
  336. package/dist/core/wiki/rollup.js +91 -0
  337. package/dist/core/wiki/rollup.js.map +1 -0
  338. package/dist/core/wiki/select.d.ts +8 -0
  339. package/dist/core/wiki/select.js +7 -0
  340. package/dist/core/wiki/select.js.map +1 -0
  341. package/dist/core/wiki/slug.d.ts +36 -0
  342. package/dist/core/wiki/slug.js +71 -0
  343. package/dist/core/wiki/slug.js.map +1 -0
  344. package/dist/core/wiki/types.d.ts +37 -0
  345. package/dist/core/wiki/types.js +2 -0
  346. package/dist/core/wiki/types.js.map +1 -0
  347. package/dist/core/work-digest/build-work-digest.d.ts +1 -1
  348. package/dist/core/work-digest/build-work-digest.js +3 -3
  349. package/dist/core/work-digest/build-work-digest.js.map +1 -1
  350. package/dist/core/workstream/bind.d.ts +3 -2
  351. package/dist/core/workstream/bind.js +29 -10
  352. package/dist/core/workstream/bind.js.map +1 -1
  353. package/dist/core/workstream/model.d.ts +1 -0
  354. package/dist/core/workstream/model.js.map +1 -1
  355. package/dist/core/workstream/rollup.d.ts +1 -1
  356. package/dist/core/workstream/rollup.js +6 -6
  357. package/dist/core/workstream/rollup.js.map +1 -1
  358. package/dist/hook/hook-helpers.d.ts +14 -0
  359. package/dist/hook/hook-helpers.js +29 -2
  360. package/dist/hook/hook-helpers.js.map +1 -1
  361. package/dist/hook/pre-compact-hook.js +8 -5
  362. package/dist/hook/pre-compact-hook.js.map +1 -1
  363. package/dist/hook/prompt-recall-hook.d.ts +7 -3
  364. package/dist/hook/prompt-recall-hook.js +35 -20
  365. package/dist/hook/prompt-recall-hook.js.map +1 -1
  366. package/dist/hook/recall-over-http.d.ts +28 -3
  367. package/dist/hook/recall-over-http.js +58 -12
  368. package/dist/hook/recall-over-http.js.map +1 -1
  369. package/dist/hook/session-end-hook.js +7 -5
  370. package/dist/hook/session-end-hook.js.map +1 -1
  371. package/dist/hook/session-start-hook.d.ts +14 -1
  372. package/dist/hook/session-start-hook.js +57 -16
  373. package/dist/hook/session-start-hook.js.map +1 -1
  374. package/dist/hook/stop-hook.js +11 -8
  375. package/dist/hook/stop-hook.js.map +1 -1
  376. package/dist/http/app.d.ts +47 -3
  377. package/dist/http/app.js +379 -132
  378. package/dist/http/app.js.map +1 -1
  379. package/dist/install/claude-code.d.ts +17 -0
  380. package/dist/install/claude-code.js +44 -5
  381. package/dist/install/claude-code.js.map +1 -1
  382. package/dist/install/codex.d.ts +23 -2
  383. package/dist/install/codex.js +111 -14
  384. package/dist/install/codex.js.map +1 -1
  385. package/dist/install/cursor.d.ts +2 -2
  386. package/dist/install/cursor.js +7 -7
  387. package/dist/install/cursor.js.map +1 -1
  388. package/dist/install/hermes.d.ts +8 -0
  389. package/dist/install/hermes.js +28 -5
  390. package/dist/install/hermes.js.map +1 -1
  391. package/dist/install/local-source.d.ts +20 -0
  392. package/dist/install/local-source.js +28 -0
  393. package/dist/install/local-source.js.map +1 -0
  394. package/dist/install/mcp-block.d.ts +77 -0
  395. package/dist/install/mcp-block.js +99 -0
  396. package/dist/install/mcp-block.js.map +1 -0
  397. package/dist/install/pi.d.ts +26 -0
  398. package/dist/install/pi.js +43 -0
  399. package/dist/install/pi.js.map +1 -1
  400. package/dist/install/setup.js +6 -0
  401. package/dist/install/setup.js.map +1 -1
  402. package/dist/install/windsurf.d.ts +2 -2
  403. package/dist/install/windsurf.js +7 -7
  404. package/dist/install/windsurf.js.map +1 -1
  405. package/dist/llm/classifier-box.d.ts +5 -0
  406. package/dist/llm/classifier-box.js +5 -0
  407. package/dist/llm/classifier-box.js.map +1 -1
  408. package/dist/mcp/server.d.ts +94 -15
  409. package/dist/mcp/server.js +402 -79
  410. package/dist/mcp/server.js.map +1 -1
  411. package/dist/ports/clock.d.ts +12 -0
  412. package/dist/ports/clock.js +10 -0
  413. package/dist/ports/clock.js.map +1 -0
  414. package/dist/ports/code-exemplar-store.d.ts +13 -13
  415. package/dist/ports/entity-store.d.ts +5 -1
  416. package/dist/ports/fact-store.d.ts +0 -0
  417. package/dist/ports/fact-store.js +0 -0
  418. package/dist/ports/fact-store.js.map +1 -1
  419. package/dist/ports/learner-store.d.ts +80 -0
  420. package/dist/ports/learner-store.js +19 -0
  421. package/dist/ports/learner-store.js.map +1 -0
  422. package/dist/ports/outcome.d.ts +85 -0
  423. package/dist/ports/outcome.js +11 -0
  424. package/dist/ports/outcome.js.map +1 -0
  425. package/dist/ports/session-store.d.ts +20 -20
  426. package/dist/ports/session-store.js +5 -0
  427. package/dist/ports/session-store.js.map +1 -1
  428. package/dist/ports/signal-store.d.ts +12 -8
  429. package/dist/ports/spawn-child.d.ts +14 -0
  430. package/dist/ports/spawn-child.js +10 -0
  431. package/dist/ports/spawn-child.js.map +1 -0
  432. package/dist/ports/storage.d.ts +6 -0
  433. package/dist/ports/transcript-adapter.d.ts +11 -0
  434. package/dist/ports/wiki-writer.d.ts +19 -0
  435. package/dist/ports/wiki-writer.js +12 -0
  436. package/dist/ports/wiki-writer.js.map +1 -0
  437. package/dist/ports/workstream-store.d.ts +20 -12
  438. package/dist/shared/net.d.ts +3 -0
  439. package/dist/shared/net.js +4 -0
  440. package/dist/shared/net.js.map +1 -0
  441. package/dist/shared/types.d.ts +55 -0
  442. package/dist/shared/types.js +4 -1
  443. package/dist/shared/types.js.map +1 -1
  444. package/dist/shared/version.d.ts +9 -0
  445. package/dist/shared/version.js +11 -0
  446. package/dist/shared/version.js.map +1 -0
  447. package/dist/ui/assets/index-D6F3xAis.js +11 -0
  448. package/dist/ui/index.html +1 -1
  449. package/migrations/029_project_scope.sql +21 -0
  450. package/migrations/032_session_derivables.sql +11 -0
  451. package/migrations/033_actions_kind_check.sql +58 -0
  452. package/migrations/034_tenancy_teams_and_stamps.sql +40 -0
  453. package/migrations/035_tenancy_entity_rekey.sql +75 -0
  454. package/migrations/036_tenant_name_uniqueness.sql +59 -0
  455. package/migrations/037_sessions_covering_index.sql +25 -0
  456. package/migrations/038_sources_muse.sql +33 -0
  457. package/migrations/039_learner_evidence.sql +51 -0
  458. package/migrations/pg/030_project_scope.sql +23 -0
  459. package/migrations/pg/031_widen_session_edges_kind.sql +11 -0
  460. package/migrations/pg/032_session_derivables.sql +17 -0
  461. package/migrations/pg/033_actions_kind_check.sql +17 -0
  462. package/migrations/pg/034_tenancy.sql +77 -0
  463. package/migrations/pg/035_tenant_name_uniqueness.sql +15 -0
  464. package/migrations/pg/036_sources_muse.sql +12 -0
  465. package/migrations/pg/037_learner_evidence.sql +55 -0
  466. package/nlm/index.js +258 -59
  467. package/package.json +10 -5
  468. package/plugin/.codex-plugin/plugin.json +1 -1
  469. package/plugin/scripts/prompt-recall-hook.mjs +256 -58
  470. package/plugin/scripts/session-start-hook.mjs +283 -55
  471. package/plugin/scripts/stop-hook.mjs +199 -38
  472. package/dist/hook/subagent-start-hook.d.ts +0 -28
  473. package/dist/hook/subagent-start-hook.js +0 -81
  474. package/dist/hook/subagent-start-hook.js.map +0 -1
  475. package/dist/ui/assets/index-CMpQkbQy.js +0 -11
@@ -0,0 +1,10 @@
1
+ /**
2
+ * ChildHandle/SpawnChild — injected child-process port for job supervision.
3
+ *
4
+ * Real adapter (daemon composition root) wraps child_process.spawn with a
5
+ * line-buffered stdout/stderr reader; tests substitute a fake that lets
6
+ * them drive onLine/onExit directly, no real child_process involved.
7
+ * First consumer: core/jobs/job-supervisor.ts.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=spawn-child.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-child.js","sourceRoot":"","sources":["../../src/ports/spawn-child.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -9,11 +9,13 @@
9
9
  import type { CodeExemplarStore } from "./code-exemplar-store.js";
10
10
  import type { EntityStore } from "./entity-store.js";
11
11
  import type { FactStore } from "./fact-store.js";
12
+ import type { LearnerStore } from "./learner-store.js";
12
13
  import type { SessionStore } from "./session-store.js";
13
14
  import type { SignalStore } from "./signal-store.js";
14
15
  import type { WorkstreamStore } from "./workstream-store.js";
15
16
  import type { SourceRegistryPort } from "../core/sources/source-registry.js";
16
17
  import type { ProviderRegistryPort } from "../core/providers/provider-registry.js";
18
+ import type { TeamTokenStorePort } from "../core/tenancy/team-token-store.js";
17
19
  export interface Storage {
18
20
  readonly facts: FactStore;
19
21
  readonly sessions: SessionStore;
@@ -21,10 +23,14 @@ export interface Storage {
21
23
  readonly exemplars: CodeExemplarStore;
22
24
  readonly workstreams: WorkstreamStore;
23
25
  readonly entities: EntityStore;
26
+ /** Learner evidence (Gnos-style concept tracking; spec 2026-10-06). */
27
+ readonly learners: LearnerStore;
24
28
  /** Transcript-source registry (claude-code/hermes/webhook/…). */
25
29
  readonly sources: SourceRegistryPort;
26
30
  /** LLM-provider registry (ollama/deepseek/openai/…). */
27
31
  readonly providers: ProviderRegistryPort;
32
+ /** Bearer-token -> team resolution (the tenancy registry itself). */
33
+ readonly teamTokens: TeamTokenStorePort;
28
34
  /** Apply migrations / install extensions. Idempotent. */
29
35
  init(): Promise<void>;
30
36
  /** Release the underlying connection or pool. */
@@ -53,4 +53,15 @@ export interface TranscriptAdapter {
53
53
  discover(options?: DiscoverOptions): Promise<ReadonlyArray<string>>;
54
54
  /** Parse one transcript into a SessionChunk, or null if it's empty/garbage. */
55
55
  parseSession(path: string): Promise<SessionChunk | null>;
56
+ /**
57
+ * For adapters whose discovered sources are not files (rows in a runtime's
58
+ * own database). scanOnce uses it in place of statSync: `mtimeMs` drives
59
+ * the idle gate, `size` is a change marker compared against adapter_state.
60
+ * Null means the source is gone.
61
+ */
62
+ stat?(source: string): SourceStat | null;
63
+ }
64
+ export interface SourceStat {
65
+ readonly mtimeMs: number;
66
+ readonly size: number;
56
67
  }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * WikiWriter — the projection's only IO seam.
3
+ *
4
+ * Core wiki modules never touch node:fs; they emit rendered strings and this
5
+ * port persists them. Tests substitute MemoryWikiWriter so the idempotence
6
+ * contract is verified without a disk.
7
+ *
8
+ * Paths are relative to a writer-owned root. An implementation must reject a
9
+ * path that escapes it.
10
+ */
11
+ export interface WikiWriter {
12
+ write(relPath: string, content: string): Promise<void>;
13
+ /** Current content, or null when absent. Reconcile compares against this to
14
+ * skip byte-identical files, which is what makes a repeat run free. */
15
+ read(relPath: string): Promise<string | null>;
16
+ remove(relPath: string): Promise<void>;
17
+ /** Markdown files currently present, relative paths, sentinel excluded. */
18
+ list(): Promise<ReadonlyArray<string>>;
19
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * WikiWriter — the projection's only IO seam.
3
+ *
4
+ * Core wiki modules never touch node:fs; they emit rendered strings and this
5
+ * port persists them. Tests substitute MemoryWikiWriter so the idempotence
6
+ * contract is verified without a disk.
7
+ *
8
+ * Paths are relative to a writer-owned root. An implementation must reject a
9
+ * path that escapes it.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=wiki-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki-writer.js","sourceRoot":"","sources":["../../src/ports/wiki-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -1,20 +1,28 @@
1
1
  import type { Workstream } from "../core/workstream/model.js";
2
+ /**
3
+ * Tenancy (program spec §4, M2 plan Wave B4): every method takes `tenantId`
4
+ * as its non-optional first parameter. `workstreams` and `workstream_entities`
5
+ * are both STAMP tables. Reads/mutations never cross tenants — merge,
6
+ * rebind, and candidatesByEntityOverlap all resolve and act within one
7
+ * tenant only.
8
+ */
2
9
  export interface WorkstreamStore {
3
- create(input: {
10
+ create(tenantId: string, input: {
4
11
  id: string;
5
12
  label: string;
13
+ scope: string | null;
6
14
  }): Promise<Workstream>;
7
- getById(id: string): Promise<Workstream | null>;
8
- findByNormalizedLabel(normalizedLabel: string): Promise<Workstream | null>;
9
- listAll(): Promise<ReadonlyArray<Workstream>>;
10
- touchLastSession(id: string, atIso: string): Promise<void>;
11
- setLabel(id: string, label: string): Promise<void>;
12
- setStatus(id: string, status: import("../core/workstream/model.js").WorkstreamStatus): Promise<void>;
13
- /** Supersede fromId into intoId: set merged_into + status="merged", union entities, clear from's entity rows. */
14
- merge(fromId: string, intoId: string): Promise<void>;
15
- upsertEntities(workstreamId: string, entities: ReadonlyArray<string>): Promise<void>;
16
- entitiesFor(workstreamIds: ReadonlyArray<string>): Promise<Map<string, string[]>>;
17
- candidatesByEntityOverlap(entities: ReadonlyArray<string>, limit: number): Promise<ReadonlyArray<{
15
+ getById(tenantId: string, id: string): Promise<Workstream | null>;
16
+ findByNormalizedLabel(tenantId: string, normalizedLabel: string): Promise<Workstream | null>;
17
+ listAll(tenantId: string): Promise<ReadonlyArray<Workstream>>;
18
+ touchLastSession(tenantId: string, id: string, atIso: string): Promise<void>;
19
+ setLabel(tenantId: string, id: string, label: string): Promise<void>;
20
+ setStatus(tenantId: string, id: string, status: import("../core/workstream/model.js").WorkstreamStatus): Promise<void>;
21
+ /** Supersede fromId into intoId: set merged_into + status="merged", union entities, clear from's entity rows. Both ids must resolve within tenantId. */
22
+ merge(tenantId: string, fromId: string, intoId: string): Promise<void>;
23
+ upsertEntities(tenantId: string, workstreamId: string, entities: ReadonlyArray<string>): Promise<void>;
24
+ entitiesFor(tenantId: string, workstreamIds: ReadonlyArray<string>): Promise<Map<string, string[]>>;
25
+ candidatesByEntityOverlap(tenantId: string, entities: ReadonlyArray<string>, limit: number): Promise<ReadonlyArray<{
18
26
  workstreamId: string;
19
27
  entities: string[];
20
28
  }>>;
@@ -0,0 +1,3 @@
1
+ /** Single source of truth for the daemon's default port. A hook and the
2
+ * daemon disagreeing on this default silently splits the system. */
3
+ export declare const DEFAULT_NLM_PORT = "3940";
@@ -0,0 +1,4 @@
1
+ /** Single source of truth for the daemon's default port. A hook and the
2
+ * daemon disagreeing on this default silently splits the system. */
3
+ export const DEFAULT_NLM_PORT = "3940";
4
+ //# sourceMappingURL=net.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/shared/net.ts"],"names":[],"mappings":"AAAA;qEACqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC"}
@@ -42,6 +42,33 @@ export interface Session {
42
42
  readonly classifierProvider?: string | null;
43
43
  readonly classifierModel?: string | null;
44
44
  readonly classifierConfidence?: number | null;
45
+ /**
46
+ * Subagent persona slug for claude-code subagent sessions (e.g. "code-reviewer"),
47
+ * "orchestrator" for top-level claude-code sessions, or the runtime name for
48
+ * every other adapter. NULL when not derivable. Populated by getById; absent
49
+ * on bulk reads. See docs/superpowers/plans/2026-07-21-352-phase2-tierb.md.
50
+ */
51
+ readonly agentPersona?: string | null;
52
+ /**
53
+ * RUNTIME parent session id (join key against `sessions.runtime_session_id`,
54
+ * not the internal `sessions.id`) for claude-code subagent sessions; NULL
55
+ * for top-level or non-claude-code sessions. Populated by getById; absent
56
+ * on bulk reads.
57
+ */
58
+ readonly parentSessionId?: string | null;
59
+ /**
60
+ * Majority model across assistant messages in the transcript (claude-code
61
+ * jsonl only, v1). NULL when not derivable (missing/unreadable transcript,
62
+ * non-claude-code kind). Populated by getById; absent on bulk reads. See
63
+ * docs/superpowers/plans/2026-07-21-352-phase2-tierb.md.
64
+ */
65
+ readonly primaryModel?: string | null;
66
+ /** Sum of input_tokens + output_tokens across assistant messages. Same
67
+ * derivability/absence contract as primaryModel. */
68
+ readonly totalTokens?: number | null;
69
+ /** Slug of the first Skill-tool invocation in the transcript, or NULL.
70
+ * Same derivability/absence contract as primaryModel. */
71
+ readonly skill?: string | null;
45
72
  }
46
73
  /**
47
74
  * Supersedence-relation edge kinds in `session_edges.kind`.
@@ -91,6 +118,14 @@ export interface RecallQuery {
91
118
  * set this true to inject code examples into the pointer block.
92
119
  */
93
120
  readonly withRelatedExemplars?: boolean;
121
+ /**
122
+ * If true, RecallService attaches a `relatedConcepts` array of learner
123
+ * concept statuses for enrollments bound to the top hits' workstreams.
124
+ * Defaults to true for the HTTP hook caller; other callers opt in via
125
+ * `?withConcepts=true`. Disable globally via NLM_HOOK_INJECT_CONCEPTS=false.
126
+ * Spec 2026-10-06 (learner evidence).
127
+ */
128
+ readonly withRelatedConcepts?: boolean;
94
129
  /**
95
130
  * If true, superseded sessions are included in recall results, down-ranked
96
131
  * and carrying a `supersededBy` pointer to their successor. Replaced
@@ -154,6 +189,13 @@ export interface RecallResult {
154
189
  * alongside session pointers and facts.
155
190
  */
156
191
  readonly relatedExemplars?: ReadonlyArray<RelatedExemplar>;
192
+ /**
193
+ * Optional learner-concept rows for enrollments bound to the top hits'
194
+ * workstreams. Present only when the caller requested
195
+ * `withRelatedConcepts`. The pointer-block formatter renders these as a
196
+ * "Learning state" section. Spec 2026-10-06 (learner evidence).
197
+ */
198
+ readonly relatedConcepts?: ReadonlyArray<RelatedConcept>;
157
199
  }
158
200
  /**
159
201
  * Fact — a single normalized claim derived from a session.
@@ -241,6 +283,13 @@ export interface RelatedFact {
241
283
  readonly value: string;
242
284
  readonly corroborationCount: number;
243
285
  }
286
+ export interface RelatedConcept {
287
+ readonly concept: string;
288
+ readonly status: "exposed" | "practicing" | "demonstrated" | "retained";
289
+ readonly attemptCount: number;
290
+ /** Owning enrollment's latest next_step (shared across its concepts). */
291
+ readonly nextStep: string | null;
292
+ }
244
293
  export interface FactHistoryChain {
245
294
  readonly subject: string;
246
295
  readonly predicate: string;
@@ -248,6 +297,10 @@ export interface FactHistoryChain {
248
297
  }
249
298
  export type SignalKind = "gate" | "eval" | "review" | "test";
250
299
  export type SignalOutcome = "pass" | "fail" | "fix" | "exhausted";
300
+ /** Canonical outcome vocabulary as a runtime array: the single source of truth
301
+ * for both ingest validation (`ingest-signal.ts`) and any boundary (e.g. the
302
+ * MCP `report_outcome` tool) that needs to enumerate/validate the set. */
303
+ export declare const SIGNAL_OUTCOMES: readonly ["pass", "fail", "fix", "exhausted"];
251
304
  /** Producer-side payload. `install_scope` and `id` are stamped server-side. */
252
305
  export interface SignalInput {
253
306
  readonly v?: number;
@@ -274,6 +327,7 @@ export interface Signal {
274
327
  readonly step: string | null;
275
328
  readonly detail: Record<string, unknown> | null;
276
329
  readonly sessionId: string | null;
330
+ readonly scope: string | null;
277
331
  readonly ts: string;
278
332
  readonly createdAt: string;
279
333
  }
@@ -292,6 +346,7 @@ export interface CodeExemplarInput {
292
346
  readonly outcome: CodeExemplarOutcome;
293
347
  readonly gitSha: string | null;
294
348
  readonly survived: 0 | 1 | null;
349
+ readonly scope: string | null;
295
350
  readonly ts: string;
296
351
  }
297
352
  /** Stored exemplar. */
@@ -2,5 +2,8 @@
2
2
  * Shared domain types crossed by core, http, mcp, and ui layers.
3
3
  * No runtime behavior here — types only.
4
4
  */
5
- export {};
5
+ /** Canonical outcome vocabulary as a runtime array: the single source of truth
6
+ * for both ingest validation (`ingest-signal.ts`) and any boundary (e.g. the
7
+ * MCP `report_outcome` tool) that needs to enumerate/validate the set. */
8
+ export const SIGNAL_OUTCOMES = ["pass", "fail", "fix", "exhausted"];
6
9
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmUH;;2EAE2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAA6C,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The running build's own version, for stamping into telemetry.
3
+ *
4
+ * Exists so a hook can report which build actually executed. "The hook fired"
5
+ * and "the current hook fired" are different claims, and only the second one
6
+ * catches an install pointing at a stale `dist/` — see
7
+ * core/digest/hook-version-parity.ts.
8
+ */
9
+ export declare const NLM_VERSION: string;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The running build's own version, for stamping into telemetry.
3
+ *
4
+ * Exists so a hook can report which build actually executed. "The hook fired"
5
+ * and "the current hook fired" are different claims, and only the second one
6
+ * catches an install pointing at a stale `dist/` — see
7
+ * core/digest/hook-version-parity.ts.
8
+ */
9
+ import pkg from "../../package.json" with { type: "json" };
10
+ export const NLM_VERSION = pkg.version;
11
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/shared/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAW,GAAG,CAAC,OAAO,CAAC"}