@remnic/core 9.66.8 → 9.66.9

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 (451) hide show
  1. package/dist/access-admin-ops-surface.d.ts +11 -11
  2. package/dist/access-admin-ops-surface.js +20 -20
  3. package/dist/access-authorization-probe.d.ts +11 -11
  4. package/dist/access-authorization-probe.js +21 -21
  5. package/dist/access-boundary.d.ts +11 -11
  6. package/dist/access-boundary.js +20 -20
  7. package/dist/access-cli.js +68 -67
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-coding-context-resolution.d.ts +1 -1
  10. package/dist/access-extraction-force-flush.d.ts +11 -11
  11. package/dist/access-extraction-force-flush.js +20 -20
  12. package/dist/access-health-types.d.ts +1 -1
  13. package/dist/access-http-lcm-compaction.d.ts +11 -11
  14. package/dist/access-http-lifecycle-flush.d.ts +11 -11
  15. package/dist/access-http-offline-stream.d.ts +11 -11
  16. package/dist/access-http-query.d.ts +2 -2
  17. package/dist/access-http-query.js +22 -22
  18. package/dist/access-http.d.ts +12 -12
  19. package/dist/access-http.js +34 -34
  20. package/dist/access-identity-continuity-surface.d.ts +9 -9
  21. package/dist/access-identity-continuity-surface.js +20 -20
  22. package/dist/access-lcm-surface.d.ts +11 -11
  23. package/dist/access-lcm-surface.js +20 -20
  24. package/dist/access-mcp-output-schemas.js +1 -1
  25. package/dist/access-mcp.d.ts +11 -11
  26. package/dist/access-mcp.js +28 -28
  27. package/dist/access-memory-search-fanout.d.ts +2 -2
  28. package/dist/{access-namespace-preflight-50VIkPhB.d.ts → access-namespace-preflight-S8fhQcCo.d.ts} +1 -1
  29. package/dist/access-namespace-preflight.d.ts +3 -3
  30. package/dist/access-namespace-preflight.js +20 -20
  31. package/dist/access-observe-write-surface.d.ts +11 -11
  32. package/dist/access-observe-write-surface.js +20 -20
  33. package/dist/access-offline-manifest.d.ts +9 -9
  34. package/dist/access-operations-batch.js +21 -21
  35. package/dist/access-operations.d.ts +16 -16
  36. package/dist/access-operations.js +26 -26
  37. package/dist/access-recall-concurrency.d.ts +11 -11
  38. package/dist/access-recall-concurrency.js +20 -20
  39. package/dist/access-recall-response.d.ts +11 -11
  40. package/dist/access-recall-response.js +20 -20
  41. package/dist/access-recall-surface.d.ts +11 -11
  42. package/dist/access-recall-surface.js +20 -20
  43. package/dist/access-schema.d.ts +89 -89
  44. package/dist/{access-service-C2tV2-uL.d.ts → access-service-DcfM0Vf0.d.ts} +71 -71
  45. package/dist/access-service-helpers.d.ts +11 -11
  46. package/dist/access-service.d.ts +11 -11
  47. package/dist/access-service.js +20 -20
  48. package/dist/access-surface-catalog.d.ts +11 -11
  49. package/dist/access-surface-catalog.js +22 -22
  50. package/dist/access-wearables-meetings-surface.d.ts +3 -3
  51. package/dist/action-confidence.d.ts +1 -1
  52. package/dist/active-memory-bridge.d.ts +1 -1
  53. package/dist/active-recall.d.ts +1 -1
  54. package/dist/active-recall.js +2 -2
  55. package/dist/ambient-provenance.d.ts +1 -1
  56. package/dist/artifact-search.d.ts +1 -1
  57. package/dist/behavior-learner.d.ts +1 -1
  58. package/dist/behavior-signals.d.ts +1 -1
  59. package/dist/bootstrap.d.ts +9 -9
  60. package/dist/briefing-window.d.ts +2 -2
  61. package/dist/briefing.d.ts +2 -2
  62. package/dist/briefing.js +9 -9
  63. package/dist/buffer-surprise-report.d.ts +1 -1
  64. package/dist/buffer-turn-helpers.d.ts +1 -1
  65. package/dist/buffer.d.ts +2 -2
  66. package/dist/buffer.js +4 -4
  67. package/dist/bulk-import/index.d.ts +3 -3
  68. package/dist/calibration.d.ts +1 -1
  69. package/dist/capabilities.d.ts +1 -1
  70. package/dist/{catalog-C2jA-gLm.d.ts → catalog-BmBXTtOs.d.ts} +1 -1
  71. package/dist/causal-behavior.d.ts +1 -1
  72. package/dist/causal-consolidation.d.ts +1 -1
  73. package/dist/causal-consolidation.js +10 -10
  74. package/dist/causal-trajectory-graph.d.ts +1 -1
  75. package/dist/{chunk-LWI43S46.js → chunk-23F7HGBV.js} +1 -1
  76. package/dist/{chunk-BDGWA5GK.js → chunk-3HHLOKKU.js} +2 -2
  77. package/dist/{chunk-FNK4KIYR.js → chunk-47BX23NA.js} +2 -2
  78. package/dist/{chunk-GO657WPH.js → chunk-52I6AHO6.js} +2 -2
  79. package/dist/{chunk-KKGWB2LG.js → chunk-5CSKIWEB.js} +3 -3
  80. package/dist/{chunk-EKUABFXQ.js → chunk-5GZ6UWY5.js} +6 -6
  81. package/dist/{chunk-MWLBRFLY.js → chunk-5KVMT25I.js} +2 -2
  82. package/dist/{chunk-6BYJQ3L2.js → chunk-5NZIRM4Q.js} +5 -5
  83. package/dist/{chunk-UMSTKKMV.js → chunk-7JPKRZD5.js} +2 -2
  84. package/dist/{chunk-UMZUKOJU.js → chunk-A7GQBJP5.js} +7 -2
  85. package/dist/chunk-A7GQBJP5.js.map +1 -0
  86. package/dist/{chunk-VYIPVLRX.js → chunk-AAJK3PZ6.js} +2 -2
  87. package/dist/{chunk-OERZXNSK.js → chunk-B3TZLAO4.js} +2 -2
  88. package/dist/{chunk-C24UZSFW.js → chunk-CEH2AFXG.js} +6 -6
  89. package/dist/{chunk-S63O62DN.js → chunk-CIWOW2FH.js} +2 -2
  90. package/dist/{chunk-IE7N2YK6.js → chunk-CNZVEU4X.js} +2 -2
  91. package/dist/{chunk-5UP5R37C.js → chunk-DGKVUPBM.js} +3 -3
  92. package/dist/{chunk-2YDU4VR7.js → chunk-FNYVWAIK.js} +18 -18
  93. package/dist/{chunk-XSPVSEAN.js → chunk-FUPIAP6Q.js} +3 -3
  94. package/dist/{chunk-5IYJWCLC.js → chunk-G3TUQJFU.js} +2 -2
  95. package/dist/{chunk-K7NUAY36.js → chunk-G775FE2E.js} +8 -8
  96. package/dist/{chunk-NEWY74GS.js → chunk-GB4R6B5M.js} +2 -2
  97. package/dist/{chunk-RI4CMRTZ.js → chunk-HWWGPS2N.js} +2 -2
  98. package/dist/{chunk-I2TIUGLC.js → chunk-IBHUZEKL.js} +2 -2
  99. package/dist/{chunk-NEDBOZ7G.js → chunk-J67E4JNT.js} +2 -2
  100. package/dist/{chunk-XUKS57W7.js → chunk-JHU543UU.js} +2 -2
  101. package/dist/{chunk-XDUQR5R7.js → chunk-JVGBDNXA.js} +2 -2
  102. package/dist/{chunk-IGOINKTD.js → chunk-K4E3Y3ZX.js} +2 -2
  103. package/dist/chunk-K4E3Y3ZX.js.map +1 -0
  104. package/dist/{chunk-GUG4LW4I.js → chunk-KIJCXLW7.js} +2 -2
  105. package/dist/{chunk-AVYNKPFS.js → chunk-KVXMN33W.js} +4 -4
  106. package/dist/chunk-LD72P4YS.js +29 -0
  107. package/dist/chunk-LD72P4YS.js.map +1 -0
  108. package/dist/chunk-LTDN5WYF.js +202 -0
  109. package/dist/chunk-LTDN5WYF.js.map +1 -0
  110. package/dist/{chunk-FI6FT6YX.js → chunk-MBDUNO7J.js} +2 -2
  111. package/dist/{chunk-MBXTGOFR.js → chunk-MFI4QPW5.js} +2 -2
  112. package/dist/{chunk-UJICQ77Y.js → chunk-MK7EJLB4.js} +2 -2
  113. package/dist/{chunk-UOQZOV2J.js → chunk-NABJLNLU.js} +64 -32
  114. package/dist/chunk-NABJLNLU.js.map +1 -0
  115. package/dist/{chunk-X32ALJQB.js → chunk-NSP3HFJZ.js} +2 -2
  116. package/dist/{chunk-6ULLVM2V.js → chunk-OJSCH7QT.js} +8 -8
  117. package/dist/{chunk-MFIFCXS3.js → chunk-OT7WQ2I3.js} +2 -2
  118. package/dist/{chunk-XVCYV7WQ.js → chunk-Q3UMNZRK.js} +3 -3
  119. package/dist/{chunk-O2RJZR6J.js → chunk-Q5YKVBIV.js} +2 -2
  120. package/dist/{chunk-KMPEBHH5.js → chunk-QU2V4IO3.js} +2 -2
  121. package/dist/{chunk-SVATDJNY.js → chunk-RF3LMSQW.js} +2 -2
  122. package/dist/{chunk-OMA2B7GY.js → chunk-RLEJULGN.js} +2 -2
  123. package/dist/{chunk-KH2LZMD5.js → chunk-SJ5L4ZZX.js} +2 -2
  124. package/dist/{chunk-2MYBDWUY.js → chunk-SOQLXIQX.js} +2 -2
  125. package/dist/{chunk-2V4YPDIX.js → chunk-SRILZVR4.js} +2 -2
  126. package/dist/{chunk-5S6TQ36T.js → chunk-TEJKBBWS.js} +10 -10
  127. package/dist/{chunk-5S6TQ36T.js.map → chunk-TEJKBBWS.js.map} +1 -1
  128. package/dist/{chunk-AZLSFKGU.js → chunk-TKSBOV7N.js} +5 -5
  129. package/dist/{chunk-YSYHSZWD.js → chunk-TWMGWLHD.js} +2 -2
  130. package/dist/{chunk-QK375NXZ.js → chunk-UAWSKMWQ.js} +2 -2
  131. package/dist/{chunk-FY62KW6Q.js → chunk-VCYY7XEL.js} +2 -2
  132. package/dist/{chunk-46XR5FNZ.js → chunk-VSWRJQQW.js} +31 -5
  133. package/dist/chunk-VSWRJQQW.js.map +1 -0
  134. package/dist/{chunk-6ZRLH4VS.js → chunk-VX5YHEGJ.js} +3 -3
  135. package/dist/{chunk-RPHCLGQ7.js → chunk-XVNDP3RO.js} +2 -2
  136. package/dist/{chunk-XORZMKVF.js → chunk-ZC5L6ME2.js} +3 -3
  137. package/dist/{chunk-7X63THIR.js → chunk-ZJGHOPEO.js} +28 -28
  138. package/dist/{chunk-ULTK4NZY.js → chunk-ZVUGRXSY.js} +2 -2
  139. package/dist/{cli-CsfFMe6n.d.ts → cli-CFpMhqz5.d.ts} +5 -5
  140. package/dist/cli.d.ts +13 -13
  141. package/dist/cli.js +51 -51
  142. package/dist/coding/export-okf-codegraph.d.ts +1 -1
  143. package/dist/coding/export-okf-codegraph.js +9 -9
  144. package/dist/coding/pre-action-gate.d.ts +1 -1
  145. package/dist/compounding/engine.d.ts +2 -2
  146. package/dist/compounding/engine.js +9 -9
  147. package/dist/compounding/preference-consolidator.d.ts +1 -1
  148. package/dist/compression-optimizer.d.ts +1 -1
  149. package/dist/config.d.ts +1 -1
  150. package/dist/config.js +2 -2
  151. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  152. package/dist/connectors/codex-materialize-runner.js +9 -9
  153. package/dist/connectors/codex-materialize.d.ts +1 -1
  154. package/dist/connectors/index.d.ts +1 -1
  155. package/dist/connectors/index.js +9 -9
  156. package/dist/consolidation-provenance-check.d.ts +2 -2
  157. package/dist/consolidation-undo.d.ts +2 -2
  158. package/dist/contradiction/index.d.ts +3 -3
  159. package/dist/converge-config.d.ts +1 -1
  160. package/dist/convergence-refresh.d.ts +2 -2
  161. package/dist/convergence-refresh.js +11 -11
  162. package/dist/conversation-index/backend.d.ts +1 -1
  163. package/dist/conversation-index/chunker.d.ts +1 -1
  164. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  165. package/dist/conversation-index/indexer.d.ts +1 -1
  166. package/dist/conversation-index/search.d.ts +1 -1
  167. package/dist/corpus-watermark.d.ts +1 -1
  168. package/dist/corpus-watermark.js +11 -11
  169. package/dist/cross-lingual-recall.d.ts +1 -1
  170. package/dist/day-summary.d.ts +1 -1
  171. package/dist/delinearize.d.ts +1 -1
  172. package/dist/dependency-propagation-config.d.ts +1 -1
  173. package/dist/{dependency-propagation-delivery-D4WMbOwA.d.ts → dependency-propagation-delivery-BC3bCEet.d.ts} +1 -1
  174. package/dist/direct-answer-wiring.d.ts +1 -1
  175. package/dist/direct-answer.d.ts +1 -1
  176. package/dist/embedding-fallback.d.ts +1 -1
  177. package/dist/enrichment/index.d.ts +1 -1
  178. package/dist/entity-origin-fields.d.ts +1 -1
  179. package/dist/entity-retrieval.d.ts +2 -2
  180. package/dist/entity-retrieval.js +9 -9
  181. package/dist/entity-schema.d.ts +1 -1
  182. package/dist/episodic-context.d.ts +1 -1
  183. package/dist/eval-trajectory-contracts.d.ts +1 -1
  184. package/dist/eval-trajectory-store.d.ts +1 -1
  185. package/dist/eval-trajectory.d.ts +1 -1
  186. package/dist/explicit-capture.d.ts +9 -9
  187. package/dist/external-wiki-access.d.ts +11 -11
  188. package/dist/external-wiki-access.js +21 -21
  189. package/dist/external-wiki-collection-registration.d.ts +1 -1
  190. package/dist/external-wiki-collection.d.ts +1 -1
  191. package/dist/external-wiki-mcp-tools.d.ts +11 -11
  192. package/dist/extraction-error-classification.d.ts +1 -1
  193. package/dist/extraction-faithfulness.d.ts +1 -1
  194. package/dist/extraction-judge-telemetry.d.ts +1 -1
  195. package/dist/extraction-judge-training.d.ts +1 -1
  196. package/dist/extraction-judge.d.ts +1 -1
  197. package/dist/extraction-liveness.d.ts +1 -1
  198. package/dist/extraction-normalization.d.ts +1 -1
  199. package/dist/extraction-prompt.d.ts +1 -1
  200. package/dist/extraction-source-grounding-rules.d.ts +1 -1
  201. package/dist/extraction-source-grounding.d.ts +1 -1
  202. package/dist/extraction.d.ts +1 -1
  203. package/dist/extraction.js +12 -12
  204. package/dist/fallback-llm.d.ts +1 -1
  205. package/dist/{first-start-migration-KHIMCBIC.js → first-start-migration-UG32BSG2.js} +4 -4
  206. package/dist/graph-dashboard-diff.d.ts +1 -1
  207. package/dist/graph-dashboard-key.d.ts +1 -1
  208. package/dist/graph-dashboard-parser.d.ts +1 -1
  209. package/dist/graph-edge-reinforcement.d.ts +1 -1
  210. package/dist/graph-path-reconstruction.d.ts +1 -1
  211. package/dist/graph-path-scoring.d.ts +1 -1
  212. package/dist/graph-snapshot.d.ts +1 -1
  213. package/dist/graph.d.ts +1 -1
  214. package/dist/harmonic-retrieval.js +1 -1
  215. package/dist/importance.d.ts +1 -1
  216. package/dist/importers/index.d.ts +1 -1
  217. package/dist/in-flight-reads.d.ts +1 -1
  218. package/dist/{index-DuJnzwHv.d.ts → index-D4hS9uxK.d.ts} +2 -2
  219. package/dist/index.d.ts +719 -700
  220. package/dist/index.js +79 -76
  221. package/dist/intent.d.ts +1 -1
  222. package/dist/lcm/engine.d.ts +1 -1
  223. package/dist/lcm/engine.js +2 -1
  224. package/dist/lcm/index.d.ts +1 -1
  225. package/dist/lcm/index.js +5 -4
  226. package/dist/lcm/tools.d.ts +1 -1
  227. package/dist/lifecycle.d.ts +1 -1
  228. package/dist/live-connectors-runner.d.ts +1 -1
  229. package/dist/local-llm.d.ts +1 -1
  230. package/dist/local-model-endpoint.d.ts +1 -1
  231. package/dist/location/index.d.ts +3 -3
  232. package/dist/location/index.js +11 -11
  233. package/dist/maintenance/memory-governance.d.ts +1 -1
  234. package/dist/maintenance/memory-governance.js +9 -9
  235. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  236. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +9 -9
  237. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  238. package/dist/maintenance/rebuild-memory-projection.js +10 -10
  239. package/dist/{maintenance-BBeaeYRR.d.ts → maintenance-BRcc3Hx8.d.ts} +3 -3
  240. package/dist/mcp-memory-inspector-app.d.ts +11 -11
  241. package/dist/memory-action-policy.d.ts +1 -1
  242. package/dist/memory-cache.d.ts +1 -1
  243. package/dist/memory-controller.d.ts +1 -1
  244. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  245. package/dist/memory-projection-store.d.ts +1 -1
  246. package/dist/memory-provenance.d.ts +1 -1
  247. package/dist/memory-snapshot.d.ts +1 -1
  248. package/dist/memory-subject-cli.d.ts +11 -11
  249. package/dist/memory-subject.d.ts +11 -11
  250. package/dist/memory-worth-outcomes.d.ts +2 -2
  251. package/dist/models-json.d.ts +1 -1
  252. package/dist/namespaces/migrate.d.ts +3 -3
  253. package/dist/namespaces/migrate.js +10 -10
  254. package/dist/namespaces/principal.d.ts +1 -1
  255. package/dist/namespaces/search.d.ts +1 -1
  256. package/dist/namespaces/search.js +6 -6
  257. package/dist/namespaces/storage.d.ts +3 -3
  258. package/dist/namespaces/storage.js +9 -9
  259. package/dist/native-binding-hint.d.ts +24 -0
  260. package/dist/native-binding-hint.js +10 -0
  261. package/dist/native-binding-hint.js.map +1 -0
  262. package/dist/native-knowledge.d.ts +1 -1
  263. package/dist/offline-sync-impression-drain.d.ts +1 -1
  264. package/dist/operator-doctor-corpus.d.ts +1 -1
  265. package/dist/operator-doctor-corpus.js +12 -12
  266. package/dist/operator-doctor-replica.d.ts +1 -1
  267. package/dist/operator-toolkit.d.ts +3 -3
  268. package/dist/operator-toolkit.js +19 -19
  269. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  270. package/dist/orchestration/maintenance.d.ts +4 -4
  271. package/dist/orchestration/maintenance.js +18 -18
  272. package/dist/{orchestrator-CaqnwNwM.d.ts → orchestrator-Btq9lzAN.d.ts} +8 -8
  273. package/dist/orchestrator.d.ts +9 -9
  274. package/dist/orchestrator.js +68 -67
  275. package/dist/patterns-cli.d.ts +1 -1
  276. package/dist/{pipeline-CrxVjlJr.d.ts → pipeline-CZoNdFb5.d.ts} +1 -1
  277. package/dist/policy-runtime.d.ts +1 -1
  278. package/dist/proactive-contention.d.ts +1 -1
  279. package/dist/provenance.d.ts +1 -1
  280. package/dist/{public-http-Cwvl4QZr.d.ts → public-http-C9-CHc40.d.ts} +1 -1
  281. package/dist/{qmd-BZgbJm0g.d.ts → qmd-VIjSCKIE.d.ts} +1 -1
  282. package/dist/qmd-preflight.d.ts +2 -2
  283. package/dist/qmd-recall-cache.d.ts +1 -1
  284. package/dist/qmd.d.ts +2 -2
  285. package/dist/qmd.js +4 -4
  286. package/dist/recall-concurrency-config.d.ts +1 -1
  287. package/dist/recall-disclosure-escalation.d.ts +1 -1
  288. package/dist/recall-explain-renderer.d.ts +1 -1
  289. package/dist/recall-memory-map.d.ts +1 -1
  290. package/dist/recall-navigate-access.d.ts +1 -1
  291. package/dist/recall-navigate.d.ts +1 -1
  292. package/dist/recall-planner-llm.d.ts +1 -1
  293. package/dist/recall-state.d.ts +1 -1
  294. package/dist/recall-tag-filter.d.ts +1 -1
  295. package/dist/recall-timings.d.ts +1 -1
  296. package/dist/recall-xray-cli.d.ts +1 -1
  297. package/dist/recall-xray-renderer.d.ts +1 -1
  298. package/dist/recall-xray.d.ts +1 -1
  299. package/dist/reconcile/cursor.d.ts +1 -1
  300. package/dist/reconcile/manifest.d.ts +1 -1
  301. package/dist/reconcile/plan.d.ts +1 -1
  302. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  303. package/dist/replay/normalizers/claude.d.ts +1 -1
  304. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  305. package/dist/replay/normalizers/shared.d.ts +1 -1
  306. package/dist/replay/runner.d.ts +1 -1
  307. package/dist/replay/types.d.ts +1 -1
  308. package/dist/replica-divergence.d.ts +1 -1
  309. package/dist/replica-peers-config.d.ts +1 -1
  310. package/dist/resolve-auth-token.d.ts +1 -1
  311. package/dist/resume-bundles.js +3 -3
  312. package/dist/retrieval-agents.d.ts +2 -2
  313. package/dist/retrieval-tiers.d.ts +1 -1
  314. package/dist/routing/engine.d.ts +1 -1
  315. package/dist/routing/store.d.ts +1 -1
  316. package/dist/salvage-envelope.d.ts +1 -1
  317. package/dist/schemas.d.ts +176 -176
  318. package/dist/{scope-profiles-DFaojvoP.d.ts → scope-profiles-DqbxQXIS.d.ts} +1 -1
  319. package/dist/search/embed-helper.d.ts +1 -1
  320. package/dist/search/factory.d.ts +1 -1
  321. package/dist/search/factory.js +5 -5
  322. package/dist/search/index.d.ts +1 -1
  323. package/dist/search/index.js +9 -9
  324. package/dist/search/lancedb-backend.d.ts +1 -1
  325. package/dist/search/meilisearch-backend.d.ts +1 -1
  326. package/dist/search/noop-backend.d.ts +1 -1
  327. package/dist/search/orama-backend.d.ts +1 -1
  328. package/dist/search/port.d.ts +1 -1
  329. package/dist/search/remote-backend.d.ts +1 -1
  330. package/dist/{semantic-consolidation-BiX68wZA.d.ts → semantic-consolidation-DW3rEUoW.d.ts} +1 -1
  331. package/dist/semantic-consolidation.d.ts +2 -2
  332. package/dist/semantic-consolidation.js +10 -10
  333. package/dist/semantic-rule-promotion.js +9 -9
  334. package/dist/semantic-rule-verifier.d.ts +1 -1
  335. package/dist/semantic-rule-verifier.js +9 -9
  336. package/dist/{service-D5h2zZ0M.d.ts → service-B2vJU_Bx.d.ts} +2 -2
  337. package/dist/session-observer-bands.d.ts +1 -1
  338. package/dist/session-observer-state.d.ts +1 -1
  339. package/dist/shared-context/manager.d.ts +7 -7
  340. package/dist/signal.d.ts +1 -1
  341. package/dist/source-agent-qualifier.d.ts +1 -1
  342. package/dist/source-agent-qualifier.js +11 -11
  343. package/dist/standup/build.d.ts +9 -3
  344. package/dist/standup/build.js +99 -7
  345. package/dist/{storage-CtsaojWD.d.ts → storage-6fn7BPmb.d.ts} +1 -1
  346. package/dist/storage.d.ts +2 -2
  347. package/dist/storage.js +8 -8
  348. package/dist/subject-config.d.ts +1 -1
  349. package/dist/summarizer.d.ts +1 -1
  350. package/dist/summary-snapshot.d.ts +1 -1
  351. package/dist/support-passport/index.d.ts +14 -14
  352. package/dist/support-passport/index.js +23 -23
  353. package/dist/temporal-supersession.d.ts +2 -2
  354. package/dist/temporal-timeline-recall.d.ts +1 -1
  355. package/dist/temporal-validity.d.ts +1 -1
  356. package/dist/threading.d.ts +1 -1
  357. package/dist/tier-migration.d.ts +2 -2
  358. package/dist/tier-routing.d.ts +1 -1
  359. package/dist/topics.d.ts +1 -1
  360. package/dist/transcript.d.ts +1 -1
  361. package/dist/transfer/export-okf.d.ts +1 -1
  362. package/dist/transfer/export-okf.js +10 -10
  363. package/dist/transfer/types.d.ts +78 -78
  364. package/dist/trust-score-stage.d.ts +1 -1
  365. package/dist/trust-score.d.ts +1 -1
  366. package/dist/{types-CIpfYz1I.d.ts → types-eM7QIcX2.d.ts} +4 -0
  367. package/dist/types.d.ts +1 -1
  368. package/dist/utility-runtime.d.ts +1 -1
  369. package/dist/verified-recall.js +9 -9
  370. package/dist/who-knows-cli.d.ts +11 -11
  371. package/dist/who-knows-cli.js +10 -10
  372. package/dist/who-knows.d.ts +11 -11
  373. package/dist/who-knows.js +9 -9
  374. package/dist/write-envelope.d.ts +1 -1
  375. package/package.json +2 -2
  376. package/scripts/ensure-better-sqlite3.mjs +10 -0
  377. package/src/access-mcp-output-schemas.ts +1 -1
  378. package/src/activity/config.test.ts +1 -1
  379. package/src/activity/config.ts +20 -4
  380. package/src/activity/journal.test.ts +40 -0
  381. package/src/activity/timeline/index.ts +1 -0
  382. package/src/activity/timeline/recap-window.test.ts +129 -0
  383. package/src/activity/timeline/recap-window.ts +55 -0
  384. package/src/activity/types.ts +4 -0
  385. package/src/config.test.ts +1 -1
  386. package/src/dedup/index.ts +7 -0
  387. package/src/dedup/merge-decision.test.ts +157 -0
  388. package/src/dedup/merge-decision.ts +78 -0
  389. package/src/lcm/engine.ts +4 -1
  390. package/src/native-binding-hint.test.ts +38 -0
  391. package/src/native-binding-hint.ts +51 -0
  392. package/src/standup/build.test.ts +138 -12
  393. package/src/standup/build.ts +172 -23
  394. package/src/standup/http-glue.ts +1 -1
  395. package/dist/chunk-46XR5FNZ.js.map +0 -1
  396. package/dist/chunk-IGOINKTD.js.map +0 -1
  397. package/dist/chunk-UMZUKOJU.js.map +0 -1
  398. package/dist/chunk-UOQZOV2J.js.map +0 -1
  399. package/dist/chunk-VOSWUO3K.js +0 -100
  400. package/dist/chunk-VOSWUO3K.js.map +0 -1
  401. /package/dist/{chunk-LWI43S46.js.map → chunk-23F7HGBV.js.map} +0 -0
  402. /package/dist/{chunk-BDGWA5GK.js.map → chunk-3HHLOKKU.js.map} +0 -0
  403. /package/dist/{chunk-FNK4KIYR.js.map → chunk-47BX23NA.js.map} +0 -0
  404. /package/dist/{chunk-GO657WPH.js.map → chunk-52I6AHO6.js.map} +0 -0
  405. /package/dist/{chunk-KKGWB2LG.js.map → chunk-5CSKIWEB.js.map} +0 -0
  406. /package/dist/{chunk-EKUABFXQ.js.map → chunk-5GZ6UWY5.js.map} +0 -0
  407. /package/dist/{chunk-MWLBRFLY.js.map → chunk-5KVMT25I.js.map} +0 -0
  408. /package/dist/{chunk-6BYJQ3L2.js.map → chunk-5NZIRM4Q.js.map} +0 -0
  409. /package/dist/{chunk-UMSTKKMV.js.map → chunk-7JPKRZD5.js.map} +0 -0
  410. /package/dist/{chunk-VYIPVLRX.js.map → chunk-AAJK3PZ6.js.map} +0 -0
  411. /package/dist/{chunk-OERZXNSK.js.map → chunk-B3TZLAO4.js.map} +0 -0
  412. /package/dist/{chunk-C24UZSFW.js.map → chunk-CEH2AFXG.js.map} +0 -0
  413. /package/dist/{chunk-S63O62DN.js.map → chunk-CIWOW2FH.js.map} +0 -0
  414. /package/dist/{chunk-IE7N2YK6.js.map → chunk-CNZVEU4X.js.map} +0 -0
  415. /package/dist/{chunk-5UP5R37C.js.map → chunk-DGKVUPBM.js.map} +0 -0
  416. /package/dist/{chunk-2YDU4VR7.js.map → chunk-FNYVWAIK.js.map} +0 -0
  417. /package/dist/{chunk-XSPVSEAN.js.map → chunk-FUPIAP6Q.js.map} +0 -0
  418. /package/dist/{chunk-5IYJWCLC.js.map → chunk-G3TUQJFU.js.map} +0 -0
  419. /package/dist/{chunk-K7NUAY36.js.map → chunk-G775FE2E.js.map} +0 -0
  420. /package/dist/{chunk-NEWY74GS.js.map → chunk-GB4R6B5M.js.map} +0 -0
  421. /package/dist/{chunk-RI4CMRTZ.js.map → chunk-HWWGPS2N.js.map} +0 -0
  422. /package/dist/{chunk-I2TIUGLC.js.map → chunk-IBHUZEKL.js.map} +0 -0
  423. /package/dist/{chunk-NEDBOZ7G.js.map → chunk-J67E4JNT.js.map} +0 -0
  424. /package/dist/{chunk-XUKS57W7.js.map → chunk-JHU543UU.js.map} +0 -0
  425. /package/dist/{chunk-XDUQR5R7.js.map → chunk-JVGBDNXA.js.map} +0 -0
  426. /package/dist/{chunk-GUG4LW4I.js.map → chunk-KIJCXLW7.js.map} +0 -0
  427. /package/dist/{chunk-AVYNKPFS.js.map → chunk-KVXMN33W.js.map} +0 -0
  428. /package/dist/{chunk-FI6FT6YX.js.map → chunk-MBDUNO7J.js.map} +0 -0
  429. /package/dist/{chunk-MBXTGOFR.js.map → chunk-MFI4QPW5.js.map} +0 -0
  430. /package/dist/{chunk-UJICQ77Y.js.map → chunk-MK7EJLB4.js.map} +0 -0
  431. /package/dist/{chunk-X32ALJQB.js.map → chunk-NSP3HFJZ.js.map} +0 -0
  432. /package/dist/{chunk-6ULLVM2V.js.map → chunk-OJSCH7QT.js.map} +0 -0
  433. /package/dist/{chunk-MFIFCXS3.js.map → chunk-OT7WQ2I3.js.map} +0 -0
  434. /package/dist/{chunk-XVCYV7WQ.js.map → chunk-Q3UMNZRK.js.map} +0 -0
  435. /package/dist/{chunk-O2RJZR6J.js.map → chunk-Q5YKVBIV.js.map} +0 -0
  436. /package/dist/{chunk-KMPEBHH5.js.map → chunk-QU2V4IO3.js.map} +0 -0
  437. /package/dist/{chunk-SVATDJNY.js.map → chunk-RF3LMSQW.js.map} +0 -0
  438. /package/dist/{chunk-OMA2B7GY.js.map → chunk-RLEJULGN.js.map} +0 -0
  439. /package/dist/{chunk-KH2LZMD5.js.map → chunk-SJ5L4ZZX.js.map} +0 -0
  440. /package/dist/{chunk-2MYBDWUY.js.map → chunk-SOQLXIQX.js.map} +0 -0
  441. /package/dist/{chunk-2V4YPDIX.js.map → chunk-SRILZVR4.js.map} +0 -0
  442. /package/dist/{chunk-AZLSFKGU.js.map → chunk-TKSBOV7N.js.map} +0 -0
  443. /package/dist/{chunk-YSYHSZWD.js.map → chunk-TWMGWLHD.js.map} +0 -0
  444. /package/dist/{chunk-QK375NXZ.js.map → chunk-UAWSKMWQ.js.map} +0 -0
  445. /package/dist/{chunk-FY62KW6Q.js.map → chunk-VCYY7XEL.js.map} +0 -0
  446. /package/dist/{chunk-6ZRLH4VS.js.map → chunk-VX5YHEGJ.js.map} +0 -0
  447. /package/dist/{chunk-RPHCLGQ7.js.map → chunk-XVNDP3RO.js.map} +0 -0
  448. /package/dist/{chunk-XORZMKVF.js.map → chunk-ZC5L6ME2.js.map} +0 -0
  449. /package/dist/{chunk-7X63THIR.js.map → chunk-ZJGHOPEO.js.map} +0 -0
  450. /package/dist/{chunk-ULTK4NZY.js.map → chunk-ZVUGRXSY.js.map} +0 -0
  451. /package/dist/{first-start-migration-KHIMCBIC.js.map → first-start-migration-UG32BSG2.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/activity/config.ts"],"sourcesContent":["import { coerceBooleanLike, coerceNumber } from \"../connectors/coerce.js\";\nimport { assertValidTimezone } from \"./digest.js\";\nimport type { ImportanceLevel } from \"../types.js\";\nimport type {\n ActivityConfig,\n ActivityExtractionMode,\n ActivitySourceConfig,\n ActivityTimelineConfig,\n ActivityTimelineJournalConfig,\n ActivityTimelineQaConfig,\n} from \"./types.js\";\n\nconst EXTRACTION_MODES: readonly ActivityExtractionMode[] = [\"off\", \"smart\"];\nconst IMPORTANCE_LEVELS: readonly ImportanceLevel[] = [\"critical\", \"high\", \"normal\", \"low\", \"trivial\"];\nconst LOOPBACK_HOSTS: Record<string, true> = { localhost: true, \"127.0.0.1\": true, \"::1\": true };\n\n/** The inert default: disabled, search-only, no sources, no extraction. */\nexport function defaultActivityConfig(): ActivityConfig {\n return {\n enabled: false,\n timezone: \"UTC\",\n syncDays: 1,\n autoSyncIntervalMinutes: 15,\n sources: [],\n extractionMode: \"off\",\n sourceTrust: 0.6,\n autoApproveTrust: 0.8,\n reviewTrust: 0.5,\n minConfidence: 0.7,\n minImportance: \"normal\",\n maxMemoriesPerDay: 0,\n timeline: { enabled: false, journal: { enabled: false }, qa: { enabled: false, maxRangeDays: 31 } },\n };\n}\n\nfunction asRecord(value: unknown, name: string): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} must be an object`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction optionalString(value: unknown, name: string): string | undefined {\n if (value === undefined) return undefined;\n if (typeof value !== \"string\" || value.length === 0) throw new TypeError(`${name} must be a non-empty string`);\n return value;\n}\n\nfunction parseUnitInterval(value: unknown, key: string, fallback: number): number {\n if (value === undefined) return fallback;\n const parsed = coerceNumber(value);\n if (parsed === undefined || !Number.isFinite(parsed) || parsed < 0 || parsed > 1) {\n throw new RangeError(`activity.${key} must be a number in [0, 1]`);\n }\n return parsed;\n}\n\n/**\n * Parse, protocol-check, and confine an activity source base URL to a local\n * loopback host. Shared with ActivityHttpSourceClient so config-load and client\n * construction reject the exact same shapes with the same prefixed message. The\n * bearer token travels in an Authorization header, so a non-loopback baseUrl\n * would exfiltrate it; the subsystem contract is local capture daemons only.\n */\nexport function validateActivityBaseUrl(baseUrl: string): URL {\n let parsed: URL;\n try {\n parsed = new URL(baseUrl);\n } catch {\n throw new RangeError(`activity source baseUrl must be a valid URL: ${baseUrl}`);\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new RangeError(\"activity source baseUrl must use HTTP or HTTPS\");\n }\n // URL keeps IPv6 hosts bracketed (e.g. \"[::1]\"); normalize before the lookup.\n const host = parsed.hostname.replace(/^\\[|\\]$/g, \"\");\n if (LOOPBACK_HOSTS[host] !== true && !/^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/.test(host)) {\n throw new RangeError(`activity source baseUrl must target a loopback host (got ${parsed.hostname})`);\n }\n return parsed;\n}\n\nfunction parseSource(value: unknown): ActivitySourceConfig {\n const raw = asRecord(value, \"activity source\");\n const machineLabel = optionalString(raw.machineLabel, \"activity source machineLabel\");\n const baseUrl = optionalString(raw.baseUrl, \"activity source baseUrl\");\n if (machineLabel === undefined || baseUrl === undefined) {\n throw new TypeError(\"activity source requires machineLabel and baseUrl\");\n }\n // Reject whitespace-only labels here so config-load fails loudly rather than\n // parsing clean and then failing on the first sync (the client and pipeline\n // both reject a blank label via trim()).\n if (machineLabel.trim().length === 0) {\n throw new RangeError(\"activity source machineLabel must not be blank\");\n }\n validateActivityBaseUrl(baseUrl);\n const token = optionalString(raw.token, \"activity source token\");\n return { machineLabel, baseUrl, ...(token === undefined ? {} : { token }) };\n}\n\n/**\n * Parse the unified `activity.*` block. `enabled` gates source ingestion (and\n * requires at least one source); `extractionMode` independently gates durable\n * trust-gated memory extraction (default `off`, i.e. search-only).\n */\nexport function parseActivityConfig(raw: unknown): ActivityConfig {\n const defaults = defaultActivityConfig();\n if (raw === undefined || raw === null) {\n return { ...defaults };\n }\n const config = asRecord(raw, \"activity\");\n const enabledValue = coerceBooleanLike(config.enabled, \"activity.enabled\");\n if (config.enabled !== undefined && enabledValue === undefined) {\n throw new TypeError(\"activity.enabled must be a boolean\");\n }\n const timezone = optionalString(config.timezone, \"activity.timezone\") ?? \"UTC\";\n // Validate the IANA zone at parse so a typo fails before any daemon is\n // contacted; otherwise activityDayWindow() throws mid-sync after snapshot\n // pages may already be persisted, and every retry replays the same window.\n assertValidTimezone(timezone);\n const syncDaysValue = coerceNumber(config.syncDays, \"activity.syncDays\");\n if (config.syncDays !== undefined && syncDaysValue === undefined) {\n throw new TypeError(\"activity.syncDays must be a finite number\");\n }\n const syncDays = syncDaysValue ?? 1;\n if (!Number.isInteger(syncDays) || syncDays < 1 || syncDays > 90) {\n throw new RangeError(\"activity.syncDays must be an integer from 1 to 90\");\n }\n const intervalValue = coerceNumber(config.autoSyncIntervalMinutes, \"activity.autoSyncIntervalMinutes\");\n if (config.autoSyncIntervalMinutes !== undefined && intervalValue === undefined) {\n throw new TypeError(\"activity.autoSyncIntervalMinutes must be a finite number\");\n }\n const autoSyncIntervalMinutes = intervalValue ?? 15;\n if (!Number.isInteger(autoSyncIntervalMinutes) || autoSyncIntervalMinutes < 1 || autoSyncIntervalMinutes > 1440) {\n throw new RangeError(\"activity.autoSyncIntervalMinutes must be an integer from 1 to 1440\");\n }\n if (config.sources !== undefined && !Array.isArray(config.sources)) {\n throw new TypeError(\"activity.sources must be an array\");\n }\n const sources = (config.sources ?? []).map(parseSource);\n // Cursors and row dedup are keyed on machineLabel alone; two sources sharing\n // a label would share a cursor and dedup namespace, silently skipping or\n // conflating snapshots. Reject the collision at parse.\n const labels = new Set<string>();\n for (const source of sources) {\n if (labels.has(source.machineLabel)) {\n throw new RangeError(`activity source machineLabel must be unique: ${source.machineLabel}`);\n }\n labels.add(source.machineLabel);\n }\n const enabled = enabledValue ?? false;\n if (enabled && sources.length === 0) throw new RangeError(\"activity.enabled requires at least one source\");\n\n // Extraction gate (independent of `enabled` ingestion). Default `off`.\n // Default only for a missing key; an explicit null/non-string is a malformed\n // enum and must fail rather than silently disabling extraction.\n const extractionMode = config.extractionMode === undefined ? defaults.extractionMode : config.extractionMode;\n if (typeof extractionMode !== \"string\" || !EXTRACTION_MODES.includes(extractionMode as ActivityExtractionMode)) {\n throw new RangeError(`activity.extractionMode must be one of: ${EXTRACTION_MODES.join(\", \")}`);\n }\n const minImportance = config.minImportance === undefined ? defaults.minImportance : config.minImportance;\n if (typeof minImportance !== \"string\" || !IMPORTANCE_LEVELS.includes(minImportance as ImportanceLevel)) {\n throw new RangeError(`activity.minImportance must be one of: ${IMPORTANCE_LEVELS.join(\", \")}`);\n }\n // Default only for a missing key; an explicit null/unparseable value must fail\n // rather than silently uncapping (parity with the enum/unit-interval fields).\n const rawMaxMemoriesPerDay =\n config.maxMemoriesPerDay === undefined ? defaults.maxMemoriesPerDay : config.maxMemoriesPerDay;\n const maxMemoriesPerDay = coerceNumber(rawMaxMemoriesPerDay);\n if (maxMemoriesPerDay === undefined || !Number.isInteger(maxMemoriesPerDay) || maxMemoriesPerDay < 0) {\n throw new RangeError(\"activity.maxMemoriesPerDay must be a non-negative integer\");\n }\n const autoApproveTrust = parseUnitInterval(config.autoApproveTrust, \"autoApproveTrust\", defaults.autoApproveTrust);\n const reviewTrust = parseUnitInterval(config.reviewTrust, \"reviewTrust\", defaults.reviewTrust);\n if (reviewTrust >= autoApproveTrust) {\n throw new RangeError(\n `activity.reviewTrust (${reviewTrust}) must be below autoApproveTrust (${autoApproveTrust})`,\n );\n }\n return {\n enabled,\n timezone,\n syncDays,\n autoSyncIntervalMinutes,\n sources,\n extractionMode: extractionMode as ActivityExtractionMode,\n sourceTrust: parseUnitInterval(config.sourceTrust, \"sourceTrust\", defaults.sourceTrust),\n autoApproveTrust,\n reviewTrust,\n minConfidence: parseUnitInterval(config.minConfidence, \"minConfidence\", defaults.minConfidence),\n minImportance: minImportance as ImportanceLevel,\n maxMemoriesPerDay,\n timeline: parseTimelineConfig(config.timeline),\n };\n}\n\n/**\n * Parse the `activity.timeline.*` block. `enabled` is the master gate for\n * timeline-card derivation (issue #2049); default false. A non-object block\n * is malformed and must fail rather than silently disabling the layer.\n */\nfunction parseTimelineConfig(raw: unknown): ActivityTimelineConfig {\n if (raw === undefined) return { enabled: false, journal: { enabled: false }, qa: parseTimelineQaConfig(undefined) };\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) {\n throw new TypeError(\"activity.timeline must be an object\");\n }\n const timeline = raw as Record<string, unknown>;\n const enabledValue = coerceBooleanLike(timeline.enabled, \"activity.timeline.enabled\");\n if (timeline.enabled !== undefined && enabledValue === undefined) {\n throw new TypeError(\"activity.timeline.enabled must be a boolean\");\n }\n return {\n enabled: enabledValue ?? false,\n journal: parseTimelineJournalConfig(timeline.journal),\n qa: parseTimelineQaConfig(timeline.qa),\n };\n}\n\nfunction parseTimelineJournalConfig(raw: unknown): ActivityTimelineJournalConfig {\n if (raw === undefined) return { enabled: false };\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) {\n throw new TypeError(\"activity.timeline.journal must be an object\");\n }\n const journal = raw as Record<string, unknown>;\n const enabledValue = coerceBooleanLike(journal.enabled, \"activity.timeline.journal.enabled\");\n if (journal.enabled !== undefined && enabledValue === undefined) {\n throw new TypeError(\"activity.timeline.journal.enabled must be a boolean\");\n }\n return { enabled: enabledValue ?? false };\n}\n\nfunction parseTimelineQaConfig(raw: unknown): ActivityTimelineQaConfig {\n if (raw === undefined) return { enabled: false, maxRangeDays: 31 };\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) {\n throw new TypeError(\"activity.timeline.qa must be an object\");\n }\n const qa = raw as Record<string, unknown>;\n const enabledValue = coerceBooleanLike(qa.enabled, \"activity.timeline.qa.enabled\");\n if (qa.enabled !== undefined && enabledValue === undefined) {\n throw new TypeError(\"activity.timeline.qa.enabled must be a boolean\");\n }\n const maxRangeDaysValue = coerceNumber(qa.maxRangeDays, \"activity.timeline.qa.maxRangeDays\");\n if (qa.maxRangeDays !== undefined && maxRangeDaysValue === undefined) {\n throw new TypeError(\"activity.timeline.qa.maxRangeDays must be an integer from 1 to 366\");\n }\n const maxRangeDays = maxRangeDaysValue ?? 31;\n if (!Number.isInteger(maxRangeDays) || maxRangeDays < 1 || maxRangeDays > 366) {\n throw new RangeError(\"activity.timeline.qa.maxRangeDays must be an integer from 1 to 366\");\n }\n return { enabled: enabledValue ?? false, maxRangeDays };\n}\n"],"mappings":";;;;;;;;;AAYA,IAAM,mBAAsD,CAAC,OAAO,OAAO;AAC3E,IAAM,oBAAgD,CAAC,YAAY,QAAQ,UAAU,OAAO,SAAS;AACrG,IAAM,iBAAuC,EAAE,WAAW,MAAM,aAAa,MAAM,OAAO,KAAK;AAGxF,SAAS,wBAAwC;AACtD,SAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,yBAAyB;AAAA,IACzB,SAAS,CAAC;AAAA,IACV,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,eAAe;AAAA,IACf,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,UAAU,EAAE,SAAS,OAAO,SAAS,EAAE,SAAS,MAAM,GAAG,IAAI,EAAE,SAAS,OAAO,cAAc,GAAG,EAAE;AAAA,EACpG;AACF;AAEA,SAAS,SAAS,OAAgB,MAAuC;AACvE,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AACvE,UAAM,IAAI,UAAU,GAAG,IAAI,oBAAoB;AAAA,EACjD;AACA,SAAO;AACT;AAEA,SAAS,eAAe,OAAgB,MAAkC;AACxE,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,OAAO,UAAU,YAAY,MAAM,WAAW,EAAG,OAAM,IAAI,UAAU,GAAG,IAAI,6BAA6B;AAC7G,SAAO;AACT;AAEA,SAAS,kBAAkB,OAAgB,KAAa,UAA0B;AAChF,MAAI,UAAU,OAAW,QAAO;AAChC,QAAM,SAAS,aAAa,KAAK;AACjC,MAAI,WAAW,UAAa,CAAC,OAAO,SAAS,MAAM,KAAK,SAAS,KAAK,SAAS,GAAG;AAChF,UAAM,IAAI,WAAW,YAAY,GAAG,6BAA6B;AAAA,EACnE;AACA,SAAO;AACT;AASO,SAAS,wBAAwB,SAAsB;AAC5D,MAAI;AACJ,MAAI;AACF,aAAS,IAAI,IAAI,OAAO;AAAA,EAC1B,QAAQ;AACN,UAAM,IAAI,WAAW,gDAAgD,OAAO,EAAE;AAAA,EAChF;AACA,MAAI,OAAO,aAAa,WAAW,OAAO,aAAa,UAAU;AAC/D,UAAM,IAAI,WAAW,gDAAgD;AAAA,EACvE;AAEA,QAAM,OAAO,OAAO,SAAS,QAAQ,YAAY,EAAE;AACnD,MAAI,eAAe,IAAI,MAAM,QAAQ,CAAC,mCAAmC,KAAK,IAAI,GAAG;AACnF,UAAM,IAAI,WAAW,4DAA4D,OAAO,QAAQ,GAAG;AAAA,EACrG;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAsC;AACzD,QAAM,MAAM,SAAS,OAAO,iBAAiB;AAC7C,QAAM,eAAe,eAAe,IAAI,cAAc,8BAA8B;AACpF,QAAM,UAAU,eAAe,IAAI,SAAS,yBAAyB;AACrE,MAAI,iBAAiB,UAAa,YAAY,QAAW;AACvD,UAAM,IAAI,UAAU,mDAAmD;AAAA,EACzE;AAIA,MAAI,aAAa,KAAK,EAAE,WAAW,GAAG;AACpC,UAAM,IAAI,WAAW,gDAAgD;AAAA,EACvE;AACA,0BAAwB,OAAO;AAC/B,QAAM,QAAQ,eAAe,IAAI,OAAO,uBAAuB;AAC/D,SAAO,EAAE,cAAc,SAAS,GAAI,UAAU,SAAY,CAAC,IAAI,EAAE,MAAM,EAAG;AAC5E;AAOO,SAAS,oBAAoB,KAA8B;AAChE,QAAM,WAAW,sBAAsB;AACvC,MAAI,QAAQ,UAAa,QAAQ,MAAM;AACrC,WAAO,EAAE,GAAG,SAAS;AAAA,EACvB;AACA,QAAM,SAAS,SAAS,KAAK,UAAU;AACvC,QAAM,eAAe,kBAAkB,OAAO,SAAS,kBAAkB;AACzE,MAAI,OAAO,YAAY,UAAa,iBAAiB,QAAW;AAC9D,UAAM,IAAI,UAAU,oCAAoC;AAAA,EAC1D;AACA,QAAM,WAAW,eAAe,OAAO,UAAU,mBAAmB,KAAK;AAIzE,sBAAoB,QAAQ;AAC5B,QAAM,gBAAgB,aAAa,OAAO,UAAU,mBAAmB;AACvE,MAAI,OAAO,aAAa,UAAa,kBAAkB,QAAW;AAChE,UAAM,IAAI,UAAU,2CAA2C;AAAA,EACjE;AACA,QAAM,WAAW,iBAAiB;AAClC,MAAI,CAAC,OAAO,UAAU,QAAQ,KAAK,WAAW,KAAK,WAAW,IAAI;AAChE,UAAM,IAAI,WAAW,mDAAmD;AAAA,EAC1E;AACA,QAAM,gBAAgB,aAAa,OAAO,yBAAyB,kCAAkC;AACrG,MAAI,OAAO,4BAA4B,UAAa,kBAAkB,QAAW;AAC/E,UAAM,IAAI,UAAU,0DAA0D;AAAA,EAChF;AACA,QAAM,0BAA0B,iBAAiB;AACjD,MAAI,CAAC,OAAO,UAAU,uBAAuB,KAAK,0BAA0B,KAAK,0BAA0B,MAAM;AAC/G,UAAM,IAAI,WAAW,oEAAoE;AAAA,EAC3F;AACA,MAAI,OAAO,YAAY,UAAa,CAAC,MAAM,QAAQ,OAAO,OAAO,GAAG;AAClE,UAAM,IAAI,UAAU,mCAAmC;AAAA,EACzD;AACA,QAAM,WAAW,OAAO,WAAW,CAAC,GAAG,IAAI,WAAW;AAItD,QAAM,SAAS,oBAAI,IAAY;AAC/B,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,IAAI,OAAO,YAAY,GAAG;AACnC,YAAM,IAAI,WAAW,gDAAgD,OAAO,YAAY,EAAE;AAAA,IAC5F;AACA,WAAO,IAAI,OAAO,YAAY;AAAA,EAChC;AACA,QAAM,UAAU,gBAAgB;AAChC,MAAI,WAAW,QAAQ,WAAW,EAAG,OAAM,IAAI,WAAW,+CAA+C;AAKzG,QAAM,iBAAiB,OAAO,mBAAmB,SAAY,SAAS,iBAAiB,OAAO;AAC9F,MAAI,OAAO,mBAAmB,YAAY,CAAC,iBAAiB,SAAS,cAAwC,GAAG;AAC9G,UAAM,IAAI,WAAW,2CAA2C,iBAAiB,KAAK,IAAI,CAAC,EAAE;AAAA,EAC/F;AACA,QAAM,gBAAgB,OAAO,kBAAkB,SAAY,SAAS,gBAAgB,OAAO;AAC3F,MAAI,OAAO,kBAAkB,YAAY,CAAC,kBAAkB,SAAS,aAAgC,GAAG;AACtG,UAAM,IAAI,WAAW,0CAA0C,kBAAkB,KAAK,IAAI,CAAC,EAAE;AAAA,EAC/F;AAGA,QAAM,uBACJ,OAAO,sBAAsB,SAAY,SAAS,oBAAoB,OAAO;AAC/E,QAAM,oBAAoB,aAAa,oBAAoB;AAC3D,MAAI,sBAAsB,UAAa,CAAC,OAAO,UAAU,iBAAiB,KAAK,oBAAoB,GAAG;AACpG,UAAM,IAAI,WAAW,2DAA2D;AAAA,EAClF;AACA,QAAM,mBAAmB,kBAAkB,OAAO,kBAAkB,oBAAoB,SAAS,gBAAgB;AACjH,QAAM,cAAc,kBAAkB,OAAO,aAAa,eAAe,SAAS,WAAW;AAC7F,MAAI,eAAe,kBAAkB;AACnC,UAAM,IAAI;AAAA,MACR,yBAAyB,WAAW,qCAAqC,gBAAgB;AAAA,IAC3F;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,kBAAkB,OAAO,aAAa,eAAe,SAAS,WAAW;AAAA,IACtF;AAAA,IACA;AAAA,IACA,eAAe,kBAAkB,OAAO,eAAe,iBAAiB,SAAS,aAAa;AAAA,IAC9F;AAAA,IACA;AAAA,IACA,UAAU,oBAAoB,OAAO,QAAQ;AAAA,EAC/C;AACF;AAOA,SAAS,oBAAoB,KAAsC;AACjE,MAAI,QAAQ,OAAW,QAAO,EAAE,SAAS,OAAO,SAAS,EAAE,SAAS,MAAM,GAAG,IAAI,sBAAsB,MAAS,EAAE;AAClH,MAAI,OAAO,QAAQ,YAAY,QAAQ,QAAQ,MAAM,QAAQ,GAAG,GAAG;AACjE,UAAM,IAAI,UAAU,qCAAqC;AAAA,EAC3D;AACA,QAAM,WAAW;AACjB,QAAM,eAAe,kBAAkB,SAAS,SAAS,2BAA2B;AACpF,MAAI,SAAS,YAAY,UAAa,iBAAiB,QAAW;AAChE,UAAM,IAAI,UAAU,6CAA6C;AAAA,EACnE;AACA,SAAO;AAAA,IACL,SAAS,gBAAgB;AAAA,IACzB,SAAS,2BAA2B,SAAS,OAAO;AAAA,IACpD,IAAI,sBAAsB,SAAS,EAAE;AAAA,EACvC;AACF;AAEA,SAAS,2BAA2B,KAA6C;AAC/E,MAAI,QAAQ,OAAW,QAAO,EAAE,SAAS,MAAM;AAC/C,MAAI,OAAO,QAAQ,YAAY,QAAQ,QAAQ,MAAM,QAAQ,GAAG,GAAG;AACjE,UAAM,IAAI,UAAU,6CAA6C;AAAA,EACnE;AACA,QAAM,UAAU;AAChB,QAAM,eAAe,kBAAkB,QAAQ,SAAS,mCAAmC;AAC3F,MAAI,QAAQ,YAAY,UAAa,iBAAiB,QAAW;AAC/D,UAAM,IAAI,UAAU,qDAAqD;AAAA,EAC3E;AACA,SAAO,EAAE,SAAS,gBAAgB,MAAM;AAC1C;AAEA,SAAS,sBAAsB,KAAwC;AACrE,MAAI,QAAQ,OAAW,QAAO,EAAE,SAAS,OAAO,cAAc,GAAG;AACjE,MAAI,OAAO,QAAQ,YAAY,QAAQ,QAAQ,MAAM,QAAQ,GAAG,GAAG;AACjE,UAAM,IAAI,UAAU,wCAAwC;AAAA,EAC9D;AACA,QAAM,KAAK;AACX,QAAM,eAAe,kBAAkB,GAAG,SAAS,8BAA8B;AACjF,MAAI,GAAG,YAAY,UAAa,iBAAiB,QAAW;AAC1D,UAAM,IAAI,UAAU,gDAAgD;AAAA,EACtE;AACA,QAAM,oBAAoB,aAAa,GAAG,cAAc,mCAAmC;AAC3F,MAAI,GAAG,iBAAiB,UAAa,sBAAsB,QAAW;AACpE,UAAM,IAAI,UAAU,oEAAoE;AAAA,EAC1F;AACA,QAAM,eAAe,qBAAqB;AAC1C,MAAI,CAAC,OAAO,UAAU,YAAY,KAAK,eAAe,KAAK,eAAe,KAAK;AAC7E,UAAM,IAAI,WAAW,oEAAoE;AAAA,EAC3F;AACA,SAAO,EAAE,SAAS,gBAAgB,OAAO,aAAa;AACxD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/access-mcp-output-schemas.ts"],"sourcesContent":["/**\n * Output-schema registry for MCP tools — extracted from access-mcp.ts to\n * keep that file under the 3000-LOC structural ratchet.\n *\n * Contains the per-suffix JSON-Schema declarations (derived from\n * production TS return contracts) and the application helper that\n * assigns schemas to tool objects.\n */\n\nconst T_STRING = { type: \"string\" } as const;\nconst T_NUMBER = { type: \"number\" } as const;\nconst T_BOOLEAN = { type: \"boolean\" } as const;\nconst T_ARRAY = { type: \"array\" } as const;\nconst T_OBJECT = { type: \"object\" } as const;\nconst T_NULLABLE_OBJECT = { type: [\"object\", \"null\"] } as const;\nconst T_NULLABLE_STRING = { type: [\"string\", \"null\"] } as const;\n\n/** Build a JSON Schema object type with the given properties. */\nfunction objectSchema(\n properties: Record<string, Readonly<Record<string, unknown>>>,\n required?: readonly string[],\n): Record<string, unknown> {\n return {\n type: \"object\",\n properties,\n ...(required && required.length > 0 ? { required } : {}),\n additionalProperties: true,\n };\n}\n\n/**\n * Per-suffix outputSchema registry. Tools not present here fall back to\n * `{ type: \"object\", additionalProperties: true }` in the constructor pass.\n * The `chatgpt_memory_inspector` tool ships its own precise schema and is\n * intentionally absent — the apply pass skips tools that already have one.\n */\nconst TOOL_OUTPUT_SCHEMAS: Readonly<Record<string, Record<string, unknown>>> = {\n recall: objectSchema({\n query: T_STRING,\n namespace: T_STRING,\n context: T_STRING,\n contextComposition: objectSchema({ context: T_STRING, footer: T_STRING }),\n count: T_NUMBER,\n memoryIds: T_ARRAY,\n results: T_ARRAY,\n fallbackUsed: T_BOOLEAN,\n sourcesUsed: T_ARRAY,\n }),\n recall_explain: objectSchema({\n found: T_BOOLEAN,\n snapshot: T_OBJECT,\n intent: T_NULLABLE_OBJECT,\n graph: T_NULLABLE_OBJECT,\n }),\n recall_tier_explain: objectSchema({ snapshotFound: T_BOOLEAN, tierExplain: T_NULLABLE_OBJECT }),\n recall_xray: objectSchema({ snapshotFound: T_BOOLEAN, snapshot: T_OBJECT }),\n who_knows: objectSchema({ topic: T_STRING, results: T_ARRAY }),\n promotion_candidates: objectSchema({ namespace: T_STRING, targetNamespace: T_STRING, candidates: T_ARRAY }),\n set_coding_context: objectSchema({ ok: T_BOOLEAN }),\n wearables_status: objectSchema({\n enabled: T_BOOLEAN,\n timezone: T_STRING,\n sources: T_ARRAY,\n connectorsInstalled: T_ARRAY,\n }),\n wearables_sync: objectSchema({ summaries: T_ARRAY }, [\"summaries\"]),\n transcript_day: objectSchema({ transcripts: T_ARRAY }, [\"transcripts\"]),\n transcript_search: objectSchema({ results: T_ARRAY }, [\"results\"]),\n transcript_memories: objectSchema({ memories: T_ARRAY }, [\"memories\"]),\n location_status: objectSchema({ enabled: T_BOOLEAN, timezone: T_STRING, sources: T_ARRAY, recentDays: T_ARRAY }),\n location_check: objectSchema({ results: T_ARRAY }, [\"results\"]),\n location_sync: objectSchema({ days: T_ARRAY }, [\"days\"]),\n location_backfill: objectSchema({ days: T_ARRAY }, [\"days\"]),\n location_day: objectSchema({ date: T_STRING, found: T_BOOLEAN, sources: T_ARRAY, observationCount: T_NUMBER }),\n meetings_list: objectSchema({ enabled: T_BOOLEAN, days: T_ARRAY }),\n meetings_get: objectSchema({ enabled: T_BOOLEAN, found: T_BOOLEAN, id: T_STRING, record: T_NULLABLE_STRING }),\n meetings_build: objectSchema({\n date: T_STRING,\n enabled: T_BOOLEAN,\n meetings: T_ARRAY,\n built: T_NUMBER,\n skipped: T_NUMBER,\n removed: T_ARRAY,\n }),\n standup: objectSchema({ date: T_STRING, yesterday: T_STRING, today: T_STRING, highlights: T_ARRAY, blockers: T_ARRAY, activityGrid: T_STRING, markdown: T_STRING }),\n action_confidence: objectSchema({\n schemaVersion: T_NUMBER,\n decision: T_STRING,\n confidence: T_NUMBER,\n risk: T_STRING,\n contextReadiness: T_STRING,\n intendedAction: T_STRING,\n attentionPolicy: T_STRING,\n principle: T_STRING,\n reasons: T_ARRAY,\n blockers: T_ARRAY,\n factors: T_ARRAY,\n retrievedMemoryCount: T_NUMBER,\n scopeMismatchCount: T_NUMBER,\n safeToAct: T_BOOLEAN,\n }),\n day_summary: objectSchema({\n summary: T_STRING,\n bullets: T_ARRAY,\n next_actions: T_ARRAY,\n risks_or_open_loops: T_ARRAY,\n }),\n capsule_export: objectSchema({\n archivePath: T_STRING,\n manifestPath: T_STRING,\n encryptedArchivePath: T_NULLABLE_STRING,\n manifest: T_OBJECT,\n }),\n capsule_import: objectSchema({ imported: T_ARRAY, skipped: T_ARRAY, manifest: T_OBJECT }),\n capsule_list: objectSchema({ namespace: T_STRING, capsulesDir: T_STRING, capsules: T_ARRAY }),\n entity_synthesis_run: objectSchema({\n namespace: T_STRING,\n requested: T_NUMBER,\n processed: T_NUMBER,\n remaining: T_NUMBER,\n }),\n memory_governance_run: objectSchema({\n namespace: T_STRING,\n runId: T_STRING,\n traceId: T_STRING,\n mode: T_STRING,\n reviewQueueCount: T_NUMBER,\n proposedActionCount: T_NUMBER,\n appliedActionCount: T_NUMBER,\n summaryPath: T_STRING,\n reportPath: T_STRING,\n }),\n procedure_mining_run: objectSchema({ namespace: T_STRING, clustersProcessed: T_NUMBER, proceduresWritten: T_NUMBER }),\n pattern_reinforcement_run: objectSchema({\n namespace: T_STRING,\n ran: T_BOOLEAN,\n clustersFound: T_NUMBER,\n canonicalsUpdated: T_NUMBER,\n duplicatesSuperseded: T_NUMBER,\n }),\n procedural_stats: objectSchema({ namespace: T_STRING, counts: T_OBJECT, recent: T_OBJECT }),\n procedure_library_maintenance: objectSchema({\n enabled: T_BOOLEAN,\n namespace: T_STRING,\n report: T_OBJECT,\n }),\n memory_get: objectSchema({ found: T_BOOLEAN, namespace: T_STRING, memory: T_NULLABLE_OBJECT }),\n memory_timeline: objectSchema({ found: T_BOOLEAN, namespace: T_STRING, count: T_NUMBER, timeline: T_ARRAY }),\n memory_store: objectSchema({\n schemaVersion: T_NUMBER,\n operation: T_STRING,\n namespace: T_STRING,\n dryRun: T_BOOLEAN,\n accepted: T_BOOLEAN,\n queued: T_BOOLEAN,\n status: T_STRING,\n memoryId: T_STRING,\n }),\n suggestion_submit: objectSchema({\n schemaVersion: T_NUMBER,\n operation: T_STRING,\n namespace: T_STRING,\n dryRun: T_BOOLEAN,\n accepted: T_BOOLEAN,\n queued: T_BOOLEAN,\n status: T_STRING,\n memoryId: T_STRING,\n }),\n entity_get: objectSchema({ found: T_BOOLEAN, namespace: T_STRING, entity: T_NULLABLE_OBJECT }),\n review_queue_list: objectSchema({ found: T_BOOLEAN, runId: T_STRING, reviewQueue: T_ARRAY }),\n observe: objectSchema({\n accepted: T_NUMBER,\n sessionKey: T_STRING,\n namespace: T_STRING,\n effectiveNamespace: T_STRING,\n lcmArchived: T_BOOLEAN,\n extractionQueued: T_BOOLEAN,\n }),\n lcm_search: objectSchema({\n query: T_STRING,\n namespace: T_STRING,\n results: T_ARRAY,\n count: T_NUMBER,\n lcmEnabled: T_BOOLEAN,\n }),\n lcm_compaction_flush: objectSchema({\n enabled: T_BOOLEAN,\n flushed: T_BOOLEAN,\n sessionKey: T_STRING,\n namespace: T_STRING,\n }),\n extraction_force_flush: objectSchema({\n flushed: T_BOOLEAN,\n sessionKey: T_STRING,\n namespace: T_STRING,\n effectiveNamespace: T_STRING,\n }),\n lcm_compaction_record: objectSchema({\n enabled: T_BOOLEAN,\n recorded: T_BOOLEAN,\n sessionKey: T_STRING,\n namespace: T_STRING,\n }),\n continuity_audit_generate: objectSchema({ enabled: T_BOOLEAN, period: T_STRING, reportPath: T_STRING }),\n continuity_incident_open: objectSchema({ created: T_BOOLEAN, incident: T_NULLABLE_OBJECT }),\n continuity_incident_close: objectSchema({ closed: T_BOOLEAN, incident: T_NULLABLE_OBJECT }),\n continuity_incident_list: objectSchema({ incidents: T_ARRAY }),\n continuity_loop_add_or_update: objectSchema({ saved: T_BOOLEAN, loop: T_NULLABLE_OBJECT }),\n continuity_loop_review: objectSchema({ reviewed: T_BOOLEAN, loop: T_NULLABLE_OBJECT }),\n identity_anchor_get: objectSchema({ found: T_BOOLEAN, anchor: T_NULLABLE_STRING }),\n identity_anchor_update: objectSchema({ updated: T_BOOLEAN, sections: T_ARRAY }),\n memory_identity: objectSchema({ found: T_BOOLEAN, identity: T_NULLABLE_STRING, message: T_STRING }),\n work_task: objectSchema({\n action: T_STRING,\n task: T_NULLABLE_OBJECT,\n tasks: T_ARRAY,\n count: T_NUMBER,\n deleted: T_BOOLEAN,\n }),\n work_project: objectSchema({\n action: T_STRING,\n project: T_NULLABLE_OBJECT,\n projects: T_ARRAY,\n count: T_NUMBER,\n deleted: T_BOOLEAN,\n }),\n work_board: objectSchema({ action: T_STRING, markdown: T_STRING, snapshot: T_OBJECT, result: T_OBJECT }),\n shared_context_write_output: objectSchema({ written: T_BOOLEAN, path: T_STRING }),\n shared_feedback_record: objectSchema({ recorded: T_BOOLEAN }),\n shared_priorities_append: objectSchema({ appended: T_BOOLEAN }),\n shared_context_cross_signals_run: objectSchema({\n crossSignalsMarkdownPath: T_STRING,\n crossSignalsPath: T_STRING,\n sourceCount: T_NUMBER,\n feedbackCount: T_NUMBER,\n overlapCount: T_NUMBER,\n }),\n shared_context_curate_daily: objectSchema({\n roundtablePath: T_STRING,\n crossSignalsMarkdownPath: T_STRING,\n crossSignalsPath: T_STRING,\n overlapCount: T_NUMBER,\n }),\n compounding_weekly_synthesize: objectSchema({\n weekId: T_STRING,\n reportPath: T_STRING,\n reportJsonPath: T_STRING,\n rubricsPath: T_STRING,\n rubricsIndexPath: T_STRING,\n mistakesCount: T_NUMBER,\n promotionCandidateCount: T_NUMBER,\n }),\n compounding_promote_candidate: objectSchema({\n enabled: T_BOOLEAN,\n dryRun: T_BOOLEAN,\n weekId: T_STRING,\n promoted: T_ARRAY,\n skipped: T_ARRAY,\n tombstoneBlocked: T_ARRAY,\n }),\n compression_guidelines_optimize: objectSchema({\n enabled: T_BOOLEAN,\n dryRun: T_BOOLEAN,\n eventCount: T_NUMBER,\n nextGuidelineVersion: T_NUMBER,\n changedRules: T_NUMBER,\n semanticRefinementApplied: T_BOOLEAN,\n persisted: T_BOOLEAN,\n }),\n compression_guidelines_activate: objectSchema({\n enabled: T_BOOLEAN,\n activated: T_BOOLEAN,\n guidelineVersion: { type: [\"number\", \"null\"] } as const,\n }),\n memory_search: objectSchema({ query: T_STRING, results: T_ARRAY, count: T_NUMBER }),\n external_wiki_search: objectSchema({\n query: T_STRING,\n hits: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n wikiId: T_STRING,\n title: T_STRING,\n path: T_STRING,\n snippet: T_STRING,\n score: T_NUMBER,\n rank: T_NUMBER,\n citations: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n path: T_STRING,\n lineStart: T_NUMBER,\n lineEnd: T_NUMBER,\n note: T_STRING,\n },\n required: [\"path\", \"lineStart\", \"lineEnd\", \"note\"],\n additionalProperties: false,\n },\n },\n indexBlurb: T_STRING,\n },\n required: [\"wikiId\", \"title\", \"path\", \"snippet\", \"score\", \"rank\", \"citations\"],\n additionalProperties: false,\n },\n },\n count: T_NUMBER,\n degradedWikiIds: T_ARRAY,\n }, [\"query\", \"hits\", \"count\", \"degradedWikiIds\"]),\n memory_profile: objectSchema({ profile: T_STRING }),\n memory_entities_list: objectSchema({ entities: T_ARRAY, count: T_NUMBER }),\n memory_questions: objectSchema({ questions: T_ARRAY, count: T_NUMBER }),\n memory_last_recall: objectSchema({\n sessionKey: T_STRING,\n recordedAt: T_STRING,\n queryHash: T_STRING,\n queryLen: T_NUMBER,\n memoryIds: T_ARRAY,\n namespace: T_STRING,\n recallNamespaces: T_ARRAY,\n plannerMode: T_STRING,\n requestedMode: T_STRING,\n source: T_STRING,\n fallbackUsed: T_BOOLEAN,\n sourcesUsed: T_ARRAY,\n latencyMs: T_NUMBER,\n includedMemories: T_ARRAY,\n message: T_NULLABLE_STRING,\n }),\n memory_intent_debug: objectSchema({\n recordedAt: T_STRING,\n promptHash: T_STRING,\n promptLength: T_NUMBER,\n retrievalQueryHash: T_STRING,\n retrievalQueryLength: T_NUMBER,\n plannerEnabled: T_BOOLEAN,\n plannedMode: T_STRING,\n effectiveMode: T_STRING,\n recallResultLimit: T_NUMBER,\n queryIntent: T_OBJECT,\n graphExpandedIntentDetected: T_BOOLEAN,\n graphDecision: T_OBJECT,\n message: T_NULLABLE_STRING,\n }),\n memory_qmd_debug: objectSchema({\n recordedAt: T_STRING,\n queryHash: T_STRING,\n queryLength: T_NUMBER,\n collection: T_STRING,\n namespaces: T_ARRAY,\n fetchLimit: T_NUMBER,\n primaryResultCount: T_NUMBER,\n hybridResultCount: T_NUMBER,\n queryAwareSeedCount: T_NUMBER,\n resultCount: T_NUMBER,\n intentHint: T_STRING,\n explainEnabled: T_BOOLEAN,\n hybridTopUpUsed: T_BOOLEAN,\n hybridTopUpSkippedReason: T_STRING,\n results: T_ARRAY,\n message: T_NULLABLE_STRING,\n }),\n memory_graph_explain: objectSchema({ explanation: T_STRING }),\n graph_snapshot: objectSchema({ nodes: T_ARRAY, edges: T_ARRAY }),\n memory_feedback: objectSchema({ recorded: T_BOOLEAN, enabled: T_BOOLEAN }),\n memory_promote: objectSchema({ promoted: T_BOOLEAN, memoryId: T_STRING }),\n memory_outcome: objectSchema({\n ok: T_BOOLEAN,\n memoryId: T_STRING,\n mw_success: T_NUMBER,\n mw_fail: T_NUMBER,\n reason: T_STRING,\n message: T_STRING,\n }),\n memory_action_apply: objectSchema({ recorded: T_BOOLEAN, event: T_OBJECT }),\n context_checkpoint: objectSchema({ saved: T_BOOLEAN }),\n briefing: objectSchema({\n markdown: T_STRING,\n json: T_OBJECT,\n window: T_OBJECT,\n format: T_STRING,\n namespace: T_STRING,\n }),\n review_list: objectSchema({ pairs: T_ARRAY, total: T_NUMBER, durationMs: T_NUMBER }),\n review_resolve: objectSchema({ pairId: T_STRING, verb: T_STRING, affectedIds: T_ARRAY, message: T_STRING }),\n contradiction_scan_run: objectSchema({\n scanned: T_NUMBER,\n candidates: T_NUMBER,\n judged: T_NUMBER,\n queued: T_NUMBER,\n cooledDown: T_NUMBER,\n elapsedMs: T_NUMBER,\n }),\n preference_drift_scan: objectSchema({\n schemaVersion: T_NUMBER,\n generatedAt: T_STRING,\n mode: T_STRING,\n namespace: T_STRING,\n scanned: T_NUMBER,\n eligible: T_NUMBER,\n findings: T_ARRAY,\n counts: T_OBJECT,\n appliedCount: T_NUMBER,\n reviewItemsOpened: T_NUMBER,\n elapsedMs: T_NUMBER,\n skippedReason: T_STRING,\n }),\n memory_summarize_hourly: objectSchema({ ok: T_BOOLEAN, message: T_STRING }),\n conversation_index_update: objectSchema({\n enabled: T_BOOLEAN,\n sessions: T_NUMBER,\n chunks: T_NUMBER,\n skipped: T_NUMBER,\n embeddedRuns: T_NUMBER,\n }),\n profiling_report: objectSchema({\n enabled: T_BOOLEAN,\n format: T_STRING,\n traces: T_ARRAY,\n stats: T_OBJECT,\n bottleneck: T_NULLABLE_STRING,\n }),\n graph_edge_decay_run: objectSchema({ ranAt: T_STRING, disabled: T_BOOLEAN, reason: T_STRING, results: T_ARRAY }),\n live_connectors_run: objectSchema({\n ranAt: T_STRING,\n force: T_BOOLEAN,\n totalDocsImported: T_NUMBER,\n ranCount: T_NUMBER,\n skippedCount: T_NUMBER,\n errorCount: T_NUMBER,\n results: T_ARRAY,\n }),\n peer_list: objectSchema({ peers: T_ARRAY }),\n peer_get: objectSchema({ found: T_BOOLEAN, peer: T_NULLABLE_OBJECT }),\n peer_set: objectSchema({ ok: T_BOOLEAN, created: T_BOOLEAN, peer: T_OBJECT }),\n peer_delete: objectSchema({ ok: T_BOOLEAN, deleted: T_BOOLEAN }),\n peer_profile_get: objectSchema({\n found: T_BOOLEAN,\n profile: {\n type: \"object\",\n properties: {\n peerId: T_STRING,\n updatedAt: T_STRING,\n fields: { type: \"object\", additionalProperties: T_STRING },\n provenance: {\n type: \"object\",\n additionalProperties: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n observedAt: T_STRING,\n signal: T_STRING,\n sourceSessionId: T_STRING,\n note: T_STRING,\n },\n required: [\"observedAt\", \"signal\"],\n additionalProperties: true,\n },\n },\n },\n },\n required: [\"peerId\", \"updatedAt\", \"fields\", \"provenance\"],\n additionalProperties: true,\n },\n }),\n peer_forget: objectSchema({ ok: T_BOOLEAN, purged: T_BOOLEAN }),\n console_state: objectSchema({\n capturedAt: T_STRING,\n bufferState: T_OBJECT,\n extractionQueue: T_OBJECT,\n dedupRecent: T_ARRAY,\n maintenanceLedgerTail: T_ARRAY,\n qmdProbe: T_OBJECT,\n daemon: T_OBJECT,\n errors: T_ARRAY,\n }),\n dreams_status: objectSchema({ phases: T_OBJECT, windowStart: T_STRING, windowEnd: T_STRING }),\n dreams_run: objectSchema({ phase: T_STRING, durationMs: T_NUMBER, itemsProcessed: T_NUMBER }),\n coding_decision: objectSchema({\n subcommand: T_STRING,\n records: T_ARRAY,\n count: T_NUMBER,\n found: T_BOOLEAN,\n memoryId: T_STRING,\n status: T_STRING,\n supersededMemoryId: T_STRING,\n replacementMemoryId: T_STRING,\n }),\n coding_architecture: objectSchema({\n subcommand: T_STRING,\n found: T_BOOLEAN,\n refreshed: T_BOOLEAN,\n memoryId: T_STRING,\n }),\n coding_delta: objectSchema({\n subcommand: T_STRING,\n ok: T_BOOLEAN,\n kind: T_STRING,\n delta: T_OBJECT,\n nextState: T_OBJECT,\n }),\n memory_correct_plan: objectSchema({\n planId: T_STRING,\n namespace: T_STRING,\n diff: T_STRING,\n actions: T_ARRAY,\n confidence: T_NUMBER,\n }),\n memory_correct_apply: objectSchema({\n planId: T_STRING,\n status: T_STRING,\n results: T_ARRAY,\n auditMemoryId: T_STRING,\n appliedAt: T_STRING,\n }),\n memory_chat: objectSchema({\n reply: T_STRING,\n chatSessionId: T_STRING,\n pendingPlan: {\n type: \"object\",\n properties: { planId: T_STRING, preview: T_STRING },\n required: [\"planId\", \"preview\"],\n additionalProperties: true,\n },\n skippedTools: { type: \"array\", items: T_STRING },\n }),\n codegraph_index: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_list_projects: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_delete_project: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_index_status: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_search_graph: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_trace_path: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_detect_changes: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_query_graph: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_get_schema: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_get_snippet: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_get_architecture: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_search_code: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_manage_adr: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n codegraph_ingest_traces: objectSchema({ ok: T_BOOLEAN, result: T_OBJECT }),\n};\n\n/**\n * Apply outputSchema from the registry to every tool that lacks one.\n * Suffix resolution strips the canonical or legacy prefix so both\n * `remnic_*` and `engram.*` aliases inherit the same schema.\n * Tools that already have an explicit outputSchema are skipped.\n */\nexport function applyToolOutputSchemas<T extends { name: string; outputSchema?: unknown }>(\n tools: ReadonlyArray<T>,\n canonicalPrefix: string,\n legacyPrefix: string\n): T[] {\n return tools.map((tool) => {\n if (tool.outputSchema) return tool;\n const name = tool.name as string;\n const suffix = name.startsWith(canonicalPrefix)\n ? name.slice(canonicalPrefix.length)\n : name.startsWith(legacyPrefix)\n ? name.slice(legacyPrefix.length)\n : name;\n return { ...tool, outputSchema: TOOL_OUTPUT_SCHEMAS[suffix] ?? { type: \"object\", additionalProperties: true } };\n });\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lcm/engine.ts"],"sourcesContent":["import type Database from \"better-sqlite3\";\nimport { openLcmDatabase, ensureLcmStateDir } from \"./schema.js\";\nimport { LcmArchive, type LcmMessage, type LcmStructuredRecallMatch } from \"./archive.js\";\nimport { LcmDag } from \"./dag.js\";\nimport { LcmSummarizer, type SummarizeFn } from \"./summarizer.js\";\nimport {\n assembleCompressedHistoryWithTrace,\n type LcmRecallConfig,\n type LcmRecallWithTraceResult,\n} from \"./recall.js\";\nimport { LcmWorkQueue, type LcmObserveMessage } from \"./queue.js\";\nimport type { PluginConfig } from \"../types.js\";\nimport { estimateTokenCount } from \"../token-estimate.js\";\nimport { log } from \"../logger.js\";\nexport interface LcmEngineConfig {\n enabled: boolean;\n leafBatchSize: number;\n rollupFanIn: number;\n freshTailTurns: number;\n maxDepth: number;\n deterministicMaxTokens: number;\n archiveRetentionDays: number;\n recallBudgetShare: number;\n observeConcurrency: number;\n telemetryPrefilterEnabled: boolean;\n messagePartsEnabled: boolean;\n messagePartsRecallMaxResults: number;\n}\n\n/** An expanded archive row with stable lineage identity; content may be budget-truncated. */\nexport interface LcmExpandedMessage {\n id: number;\n session_id: string;\n turn_index: number;\n role: string;\n content: string;\n}\n\nfunction positiveInteger(value: unknown, fallback: number, min = 1): number {\n if (typeof value !== \"number\" || !Number.isFinite(value)) return fallback;\n return Math.max(min, Math.floor(value));\n}\n\nexport function extractLcmConfig(cfg: PluginConfig): LcmEngineConfig {\n return {\n enabled: (cfg as any).lcmEnabled === true,\n leafBatchSize: positiveInteger((cfg as any).lcmLeafBatchSize, 8),\n rollupFanIn: positiveInteger((cfg as any).lcmRollupFanIn, 4, 2),\n freshTailTurns: positiveInteger((cfg as any).lcmFreshTailTurns, 16),\n maxDepth: positiveInteger((cfg as any).lcmMaxDepth, 5),\n deterministicMaxTokens: positiveInteger((cfg as any).lcmDeterministicMaxTokens, 512),\n archiveRetentionDays: positiveInteger((cfg as any).lcmArchiveRetentionDays, 90, 0),\n recallBudgetShare: (cfg as any).lcmRecallBudgetShare ?? 0.15,\n observeConcurrency:\n typeof (cfg as any).lcmObserveConcurrency === \"number\" &&\n Number.isFinite((cfg as any).lcmObserveConcurrency)\n ? Math.max(1, Math.floor((cfg as any).lcmObserveConcurrency))\n : 1,\n telemetryPrefilterEnabled: (cfg as any).lcmTelemetryPrefilterEnabled !== false,\n messagePartsEnabled: (cfg as any).messagePartsEnabled === true,\n messagePartsRecallMaxResults:\n typeof (cfg as any).messagePartsRecallMaxResults === \"number\"\n ? Math.max(0, Math.floor((cfg as any).messagePartsRecallMaxResults))\n : 6,\n };\n}\n\nfunction normalizeLcmSessionId(sessionId: string): string {\n return sessionId.trim();\n}\n\nfunction normalizeOptionalLcmSessionId(sessionId?: string): string | undefined {\n if (sessionId === undefined) {\n return undefined;\n }\n const normalized = normalizeLcmSessionId(sessionId);\n return normalized.length > 0 ? normalized : undefined;\n}\n\nconst EMPTY_LCM_STATS = {\n totalMessages: 0,\n totalSummaryNodes: 0,\n maxDepth: -1,\n} as const;\n\nexport class LcmEngine {\n private db: Database.Database | null = null;\n private archive: LcmArchive | null = null;\n private dag: LcmDag | null = null;\n private summarizer: LcmSummarizer | null = null;\n private observeQueue: LcmWorkQueue | null = null;\n private closed = false;\n private readonly config: LcmEngineConfig;\n private readonly memoryDir: string;\n private initPromise: Promise<void> | null = null;\n private readonly pendingObserveInitCounts = new Map<string, number>();\n private readonly pendingObserveInitWaiters = new Map<string, Array<() => void>>();\n private readonly pendingObserveInitIdleWaiters: Array<() => void> = [];\n\n constructor(\n pluginConfig: PluginConfig,\n private readonly summarizeFn: SummarizeFn,\n ) {\n this.config = extractLcmConfig(pluginConfig);\n this.memoryDir = pluginConfig.memoryDir;\n }\n\n get enabled(): boolean {\n return this.config.enabled;\n }\n\n /** Lazy init — open database on first use. */\n async ensureInitialized(): Promise<void> {\n if (this.closed) return;\n if (this.db) return;\n if (this.initPromise) {\n await this.initPromise;\n return;\n }\n this.initPromise = this.doInit().catch((err) => {\n // Reset so next call retries instead of caching the failure\n this.initPromise = null;\n throw err;\n });\n await this.initPromise;\n }\n\n private async doInit(): Promise<void> {\n await ensureLcmStateDir(this.memoryDir);\n const db = openLcmDatabase(this.memoryDir);\n const archive = new LcmArchive(db);\n const dag = new LcmDag(db);\n const { telemetryPrefilterEnabled } = this.config;\n const summarizer = new LcmSummarizer(\n archive,\n dag,\n this.summarizeFn,\n {\n leafBatchSize: this.config.leafBatchSize,\n rollupFanIn: this.config.rollupFanIn,\n maxDepth: this.config.maxDepth,\n deterministicMaxTokens: this.config.deterministicMaxTokens,\n telemetryPrefilterEnabled,\n },\n );\n const observeQueue = new LcmWorkQueue({\n concurrency: this.config.observeConcurrency,\n worker: async (sessionId, messages) => {\n await this.processObserveMessages(sessionId, messages);\n },\n hooks: {\n onJobStart: ({ sessionId, depth, inFlight, waitMs }) => {\n log.debug(\n `LCM observe queue start: session=${sessionId}, depth=${depth}, inFlight=${inFlight}, wait=${waitMs}ms`,\n );\n },\n onJobFinish: ({\n sessionId,\n depth,\n inFlight,\n waitMs,\n runMs,\n totalMs,\n error,\n }) => {\n if (error) {\n log.error(\n `LCM observe queue failure: session=${sessionId}, depth=${depth}, inFlight=${inFlight}, wait=${waitMs}ms, run=${runMs}ms, total=${totalMs}ms, error=${error}`,\n );\n return;\n }\n\n log.debug(\n `LCM observe queue finish: session=${sessionId}, depth=${depth}, inFlight=${inFlight}, wait=${waitMs}ms, run=${runMs}ms, total=${totalMs}ms`,\n );\n },\n },\n });\n\n if (this.closed) {\n db.close();\n return;\n }\n\n this.db = db;\n this.archive = archive;\n this.dag = dag;\n this.summarizer = summarizer;\n this.observeQueue = observeQueue;\n log.info(\"LCM engine initialized\");\n }\n\n /**\n * Enqueue messages from agent_end hook.\n * The queue worker performs the archive append and incremental summarization.\n */\n async observeMessages(\n sessionId: string,\n messages: LcmObserveMessage[],\n ): Promise<void> {\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return;\n this.enqueueObserveMessages(normalizedSessionId, messages);\n }\n\n /** Enqueue an observe job without waiting for worker completion. */\n enqueueObserveMessages(\n sessionId: string,\n messages: LcmObserveMessage[],\n ): void {\n if (!this.config.enabled || this.closed) return;\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return;\n if (messages.length === 0) return;\n\n this.reservePendingObserveInit(normalizedSessionId);\n\n void this.ensureInitialized()\n .then(() => {\n if (this.closed || !this.observeQueue) return;\n this.observeQueue.enqueue(normalizedSessionId, messages);\n log.debug(\n `LCM observe enqueued: session=${normalizedSessionId}, depth=${this.observeQueue.depth}, inFlight=${this.observeQueue.inFlightCount}`,\n );\n })\n .catch((err) => {\n if (this.closed) return;\n log.error(`LCM observe enqueue initialization error: ${err}`);\n })\n .finally(() => {\n this.releasePendingObserveInit(normalizedSessionId);\n });\n }\n\n private async processObserveMessages(\n sessionId: string,\n messages: LcmObserveMessage[],\n ): Promise<void> {\n if (this.closed) return;\n await this.ensureInitialized();\n if (this.closed || !this.archive || !this.summarizer) return;\n\n if (messages.length === 0) return;\n\n const currentMax = this.archive.getMaxTurnIndex(sessionId);\n const { messagePartsEnabled } = this.config;\n const newMessages = messages.map((m, i) => ({\n turnIndex: currentMax + 1 + i,\n role: m.role,\n content: m.content,\n parts: messagePartsEnabled ? m.parts : undefined,\n rawContent: messagePartsEnabled ? m.rawContent : undefined,\n sourceFormat: messagePartsEnabled ? m.sourceFormat : undefined,\n }));\n\n this.archive.appendMessages(sessionId, newMessages, {\n messagePartsEnabled,\n });\n\n // Trigger incremental summarization inside the worker, after append.\n try {\n await this.summarizer.summarizeIncremental(sessionId);\n } catch (err) {\n log.debug(`LCM incremental summarization error: ${err}`);\n }\n }\n\n get observeQueueDepth(): number {\n return this.observeQueue?.depth ?? 0;\n }\n\n get observeQueueInFlightCount(): number {\n return this.observeQueue?.inFlightCount ?? 0;\n }\n\n async waitForObserveQueueIdle(): Promise<void> {\n if (!this.config.enabled || this.closed) return;\n await this.ensureInitialized();\n if (this.closed) return;\n await this.waitForPendingObserveInitIdle();\n await this.observeQueue?.whenIdle();\n }\n\n async waitForSessionObserveIdle(sessionId: string): Promise<void> {\n if (!this.config.enabled || this.closed) return;\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return;\n await this.ensureInitialized();\n if (this.closed) return;\n await this.waitForPendingObserveInitIdle(normalizedSessionId);\n await this.observeQueue?.whenSessionIdle(normalizedSessionId);\n }\n\n private reservePendingObserveInit(sessionId: string): void {\n const count = this.pendingObserveInitCounts.get(sessionId) ?? 0;\n this.pendingObserveInitCounts.set(sessionId, count + 1);\n }\n\n private releasePendingObserveInit(sessionId: string): void {\n const count = this.pendingObserveInitCounts.get(sessionId);\n if (!count) return;\n\n if (count === 1) {\n this.pendingObserveInitCounts.delete(sessionId);\n const waiters = this.pendingObserveInitWaiters.get(sessionId) ?? [];\n this.pendingObserveInitWaiters.delete(sessionId);\n for (const resolve of waiters) resolve();\n if (this.pendingObserveInitCounts.size === 0) {\n const idleWaiters = this.pendingObserveInitIdleWaiters.splice(\n 0,\n this.pendingObserveInitIdleWaiters.length,\n );\n for (const resolve of idleWaiters) resolve();\n }\n return;\n }\n\n this.pendingObserveInitCounts.set(sessionId, count - 1);\n }\n\n private async waitForPendingObserveInitIdle(sessionId?: string): Promise<void> {\n if (sessionId) {\n if (!this.pendingObserveInitCounts.has(sessionId)) return;\n await new Promise<void>((resolve) => {\n const waiters = this.pendingObserveInitWaiters.get(sessionId) ?? [];\n waiters.push(resolve);\n this.pendingObserveInitWaiters.set(sessionId, waiters);\n });\n return;\n }\n\n if (this.pendingObserveInitCounts.size === 0) return;\n await new Promise<void>((resolve) => {\n this.pendingObserveInitIdleWaiters.push(resolve);\n });\n }\n\n /** Build the compressed history recall section for a session. */\n async assembleRecall(\n sessionId: string,\n budgetChars: number,\n ): Promise<string> {\n return (await this.assembleRecallWithTrace(sessionId, budgetChars)).text;\n }\n\n /** Build compressed recall plus content-free selected-summary receipts. */\n async assembleRecallWithTrace(\n sessionId: string,\n budgetChars: number,\n ): Promise<LcmRecallWithTraceResult> {\n if (!this.config.enabled) return { text: \"\", selectedSummaries: [] };\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return { text: \"\", selectedSummaries: [] };\n await this.ensureInitialized();\n\n const effectiveBudget = Math.ceil(\n budgetChars * this.config.recallBudgetShare,\n );\n if (effectiveBudget <= 0) return { text: \"\", selectedSummaries: [] };\n\n return assembleCompressedHistoryWithTrace(this.dag!, this.archive!, normalizedSessionId, {\n freshTailTurns: this.config.freshTailTurns,\n budgetChars: effectiveBudget,\n });\n }\n\n async searchStructuredParts(\n sessionId: string,\n query: string,\n limit = this.config.messagePartsRecallMaxResults,\n ): Promise<LcmStructuredRecallMatch[]> {\n const { messagePartsEnabled } = this.config;\n if (!this.config.enabled || !messagePartsEnabled) return [];\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return [];\n await this.ensureInitialized();\n if (!this.archive) return [];\n return this.archive.searchStructuredParts(query, limit, normalizedSessionId);\n }\n\n formatStructuredRecall(\n matches: LcmStructuredRecallMatch[],\n budgetChars: number,\n ): string {\n if (matches.length === 0 || budgetChars <= 0) return \"\";\n const lines: string[] = [];\n let used = \"## Structured Session Matches\\n\\n\".length;\n for (const match of matches) {\n const label = match.file_path\n ? `${match.kind} ${match.file_path}`\n : match.tool_name\n ? `${match.kind} ${match.tool_name}`\n : match.kind;\n const excerpt = match.content.replace(/\\s+/g, \" \").slice(0, 220);\n const line = `- turn ${match.turn_index} (${match.role}): ${label} — ${excerpt}`;\n if (used + line.length + 1 > budgetChars) break;\n lines.push(line);\n used += line.length + 1;\n }\n return lines.length > 0 ? `## Structured Session Matches\\n\\n${lines.join(\"\\n\")}` : \"\";\n }\n\n /** Flush pending summaries before compaction (called from before_compaction hook). */\n async preCompactionFlush(sessionId: string): Promise<void> {\n if (!this.config.enabled) return;\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return;\n await this.ensureInitialized();\n await this.waitForSessionObserveIdle(normalizedSessionId);\n\n try {\n await this.summarizer!.summarizeIncremental(normalizedSessionId);\n } catch (err) {\n log.debug(`LCM pre-compaction flush error: ${err}`);\n }\n }\n\n /** Record a compaction event with real token counts (called from after_compaction hook). */\n async recordCompaction(\n sessionId: string,\n tokensBefore: number,\n tokensAfter: number,\n ): Promise<void> {\n if (!this.config.enabled) return;\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return;\n await this.ensureInitialized();\n await this.waitForSessionObserveIdle(normalizedSessionId);\n\n const maxTurn = this.archive!.getMaxTurnIndex(normalizedSessionId);\n\n this.dag!.recordCompaction(normalizedSessionId, maxTurn, tokensBefore, tokensAfter);\n log.info(\n `LCM compaction recorded: session=${normalizedSessionId}, turn=${maxTurn}, tokens ${tokensBefore}→${tokensAfter}`,\n );\n }\n\n /** Verify archive coverage after compaction. */\n async verifyPostCompaction(sessionId: string): Promise<void> {\n if (!this.config.enabled) return;\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return;\n await this.ensureInitialized();\n\n const msgCount = this.archive!.getMessageCount(normalizedSessionId);\n const nodeCount = this.dag!.getNodeCount(normalizedSessionId);\n log.debug(\n `LCM post-compaction verify: session=${normalizedSessionId}, messages=${msgCount}, summaryNodes=${nodeCount}`,\n );\n }\n\n // ── MCP Tool implementations ──\n\n /** Search across all conversation history via FTS (snippet mode). */\n async searchContext(\n query: string,\n limit: number,\n sessionId?: string,\n sessionPrefix?: string,\n ): Promise<\n Array<{\n turn_index: number;\n role: string;\n snippet: string;\n session_id: string;\n }>\n > {\n if (!this.config.enabled) return [];\n const normalizedSessionId = normalizeOptionalLcmSessionId(sessionId);\n if (sessionId !== undefined && !normalizedSessionId) return [];\n const normalizedSessionPrefix = normalizeOptionalLcmSessionId(sessionPrefix);\n if (sessionPrefix !== undefined && !normalizedSessionPrefix) return [];\n await this.ensureInitialized();\n return this.archive!.search(query, limit, normalizedSessionId, normalizedSessionPrefix);\n }\n\n /** Search via FTS returning full message content (not snippets). */\n async searchContextFull(\n query: string,\n limit: number,\n sessionId?: string,\n sessionPrefix?: string,\n ): Promise<\n Array<{\n id: number;\n turn_index: number;\n role: string;\n content: string;\n session_id: string;\n score: number;\n }>\n > {\n if (!this.config.enabled) return [];\n const normalizedSessionId = normalizeOptionalLcmSessionId(sessionId);\n if (sessionId !== undefined && !normalizedSessionId) return [];\n const normalizedSessionPrefix = normalizeOptionalLcmSessionId(sessionPrefix);\n if (sessionPrefix !== undefined && !normalizedSessionPrefix) return [];\n await this.ensureInitialized();\n return this.archive!.searchWithContent(\n query,\n limit,\n normalizedSessionId,\n 1000,\n normalizedSessionPrefix,\n );\n }\n\n /** Get a compressed summary of a turn range. */\n async describeContext(\n sessionId: string,\n fromTurn: number,\n toTurn: number,\n ): Promise<{ summary: string; turn_count: number; depth: number } | null> {\n if (!this.config.enabled) return null;\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return null;\n await this.ensureInitialized();\n\n const nodes = this.dag!.getCoveringNodes(normalizedSessionId, fromTurn, toTurn);\n if (nodes.length === 0) {\n // No summary exists — build a description from raw messages\n const messages = this.archive!.getMessages(normalizedSessionId, fromTurn, toTurn);\n if (messages.length === 0) return null;\n const preview = messages\n .slice(0, 5)\n .map((m) => `[${m.role}] ${m.content.slice(0, 100)}`)\n .join(\"\\n\");\n return {\n summary: `No summary available for this range. Preview of ${messages.length} messages:\\n${preview}`,\n turn_count: messages.length,\n depth: -1,\n };\n }\n\n // Use the deepest covering node\n const best = nodes[0]; // Already sorted by depth DESC\n return {\n summary: best.summary_text,\n turn_count: best.msg_end - best.msg_start + 1,\n depth: best.depth,\n };\n }\n\n /**\n * Retrieve raw archived messages for a turn range (inclusive bounds),\n * read-only and unshaped — no token-budget trimming (issue #2331\n * episodic-context). Callers own truncation and cleaning.\n */\n async getTurnRange(\n sessionId: string,\n fromTurn: number,\n toTurn: number,\n ): Promise<LcmMessage[]> {\n if (!this.config.enabled) return [];\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return [];\n await this.ensureInitialized();\n return this.archive!.getMessages(normalizedSessionId, fromTurn, toTurn);\n }\n\n /** Retrieve raw messages for a turn range (lossless expansion). */\n async expandContext(\n sessionId: string,\n fromTurn: number,\n toTurn: number,\n maxTokens: number,\n ): Promise<LcmExpandedMessage[]> {\n if (!this.config.enabled) return [];\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return [];\n await this.ensureInitialized();\n\n const messages = this.archive!.getMessages(normalizedSessionId, fromTurn, toTurn);\n if (messages.length === 0) return [];\n\n // Enforce the token budget while keeping the existing first/last shape.\n const tokenBudget = Math.max(0, Math.floor(maxTokens));\n if (tokenBudget === 0) return [];\n const totalTokens = messages.reduce(\n (sum, message) => sum + estimateTokenCount(message.content),\n 0,\n );\n if (totalTokens <= tokenBudget) {\n return messages.map((m) => ({\n id: m.id,\n session_id: m.session_id,\n turn_index: m.turn_index,\n role: m.role,\n content: m.content,\n }));\n }\n\n const result: LcmExpandedMessage[] = [];\n const lastMsg = messages[messages.length - 1];\n const reservedLastTokens = Math.min(\n estimateTokenCount(lastMsg.content),\n Math.max(1, Math.floor(tokenBudget * 0.3)),\n );\n let remainingTokens = tokenBudget - reservedLastTokens;\n\n for (let i = 0; i < messages.length - 1; i++) {\n if (remainingTokens <= 0) break;\n const content = truncateToTokenBudget(\n messages[i].content,\n remainingTokens,\n );\n if (!content) continue;\n result.push({\n id: messages[i].id,\n session_id: messages[i].session_id,\n turn_index: messages[i].turn_index,\n role: messages[i].role,\n content,\n });\n remainingTokens -= estimateTokenCount(content);\n }\n\n const lastContent = truncateToTokenBudget(\n lastMsg.content,\n reservedLastTokens + remainingTokens,\n );\n if (lastContent) {\n result.push({\n id: lastMsg.id,\n session_id: lastMsg.session_id,\n turn_index: lastMsg.turn_index,\n role: lastMsg.role,\n content: lastContent,\n });\n }\n return result;\n }\n\n\n /** Get statistics about the LCM archive. */\n async getStats(sessionId?: string): Promise<{\n totalMessages: number;\n totalSummaryNodes: number;\n maxDepth: number;\n maxTurnIndex?: number;\n }> {\n if (!this.config.enabled)\n return { totalMessages: 0, totalSummaryNodes: 0, maxDepth: -1 };\n const normalizedSessionId = normalizeOptionalLcmSessionId(sessionId);\n if (sessionId !== undefined && !normalizedSessionId) {\n return { ...EMPTY_LCM_STATS };\n }\n await this.ensureInitialized();\n\n if (normalizedSessionId) {\n return {\n totalMessages: this.archive!.getMessageCount(normalizedSessionId),\n totalSummaryNodes: this.dag!.getNodeCount(normalizedSessionId),\n maxDepth: this.dag!.getMaxDepth(normalizedSessionId),\n maxTurnIndex: this.archive!.getMaxTurnIndex(normalizedSessionId),\n };\n }\n\n return {\n totalMessages: this.archive!.getTotalMessageCount(),\n totalSummaryNodes: 0, // Would need a global count query\n maxDepth: -1,\n };\n }\n\n /** Clear all LCM archive and summary state for one session. */\n async clearSession(sessionId: string): Promise<void> {\n if (!this.config.enabled || this.closed) return;\n const normalizedSessionId = normalizeLcmSessionId(sessionId);\n if (!normalizedSessionId) return;\n await this.ensureInitialized();\n if (this.closed || !this.archive || !this.dag) return;\n await this.waitForSessionObserveIdle(normalizedSessionId);\n this.dag.deleteSession(normalizedSessionId);\n this.archive.deleteSession(normalizedSessionId);\n }\n\n /** Clear all LCM archive and summary state without closing the engine. */\n async clearAll(): Promise<void> {\n if (!this.config.enabled || this.closed) return;\n await this.ensureInitialized();\n if (this.closed || !this.archive || !this.dag) return;\n await this.waitForObserveQueueIdle();\n this.dag.deleteAll();\n this.archive.deleteAll();\n }\n\n /** Prune old data beyond retention period. */\n async prune(): Promise<{ messagesPruned: number; nodesPruned: number }> {\n if (!this.config.enabled) return { messagesPruned: 0, nodesPruned: 0 };\n await this.ensureInitialized();\n\n const messagesPruned = this.archive!.pruneOldMessages(\n this.config.archiveRetentionDays,\n );\n const nodesPruned = this.dag!.pruneOldNodes(\n this.config.archiveRetentionDays,\n );\n return { messagesPruned, nodesPruned };\n }\n\n /** Close the database connection. */\n close(): void {\n this.closed = true;\n if (this.db) {\n this.db.close();\n }\n this.db = null;\n this.archive = null;\n this.dag = null;\n this.summarizer = null;\n this.observeQueue = null;\n this.initPromise = null;\n }\n}\nfunction truncateToTokenBudget(text: string, maxTokens: number): string {\n if (maxTokens <= 0) return \"\";\n if (estimateTokenCount(text) <= maxTokens) return text;\n const codePoints = [...text];\n let low = 0;\n let high = codePoints.length;\n while (low < high) {\n const mid = Math.ceil((low + high) / 2);\n if (estimateTokenCount(codePoints.slice(0, mid).join(\"\")) <= maxTokens) {\n low = mid;\n } else {\n high = mid - 1;\n }\n }\n return codePoints.slice(0, low).join(\"\");\n}\n"],"mappings":"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","names":[]}