@remnic/core 10.0.92 → 10.0.93

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 (486) hide show
  1. package/dist/access-admin-ops-surface.js +331 -58
  2. package/dist/access-authorization-probe.js +2 -283
  3. package/dist/access-boundary.d.ts +1 -1
  4. package/dist/access-boundary.d.ts.map +1 -1
  5. package/dist/access-boundary.js +1 -282
  6. package/dist/access-cli.js +286 -302
  7. package/dist/access-cli.js.map +1 -1
  8. package/dist/access-coding-context-resolution.js +3 -3
  9. package/dist/access-extraction-force-flush.js +331 -58
  10. package/dist/access-http-briefing.js +331 -59
  11. package/dist/access-http-query.js +331 -60
  12. package/dist/access-http.js +329 -111
  13. package/dist/access-identity-continuity-surface.js +331 -58
  14. package/dist/access-lcm-surface.js +331 -58
  15. package/dist/access-mcp-frames.d.ts +20 -6
  16. package/dist/access-mcp-frames.d.ts.map +1 -1
  17. package/dist/access-mcp-frames.js +1 -1
  18. package/dist/access-mcp.d.ts +5 -0
  19. package/dist/access-mcp.d.ts.map +1 -1
  20. package/dist/access-mcp.js +329 -86
  21. package/dist/access-namespace-preflight.js +2 -282
  22. package/dist/access-observe-transcript.js +3 -3
  23. package/dist/access-observe-write-category.js +6 -6
  24. package/dist/access-observe-write-surface.js +331 -58
  25. package/dist/access-offline-manifest.js +12 -11
  26. package/dist/access-operations-batch.js +329 -63
  27. package/dist/access-operations.js +329 -72
  28. package/dist/access-recall-concurrency.js +331 -58
  29. package/dist/access-recall-diagnostics.js +5 -4
  30. package/dist/access-recall-response.js +331 -58
  31. package/dist/access-recall-surface.js +331 -58
  32. package/dist/access-schema.js +2 -2
  33. package/dist/access-service.js +334 -61
  34. package/dist/access-surface-catalog.js +6 -283
  35. package/dist/access-surface-catalog.js.map +1 -1
  36. package/dist/active-context-transform.js +1 -1
  37. package/dist/active-memory-bridge.js +3 -2
  38. package/dist/active-recall.js +35 -36
  39. package/dist/active-recall.js.map +1 -1
  40. package/dist/activity/journal-extract.d.ts +13 -1
  41. package/dist/activity/journal-extract.d.ts.map +1 -1
  42. package/dist/{auto-sync-3AZW7MXI.js → auto-sync-BO5YZKM6.js} +13 -15
  43. package/dist/{auto-sync-3AZW7MXI.js.map → auto-sync-BO5YZKM6.js.map} +1 -1
  44. package/dist/briefing.js +19 -19
  45. package/dist/buffer.js +16 -16
  46. package/dist/calibration.js +10 -10
  47. package/dist/{capsule-merge-2IIXFXN5.js → capsule-merge-6IDAYTKG.js} +6 -6
  48. package/dist/causal-consolidation.js +22 -22
  49. package/dist/{chunk-ATPWZ4F7.js → chunk-2LMA22UU.js} +5 -5
  50. package/dist/{chunk-RGUUBAT5.js → chunk-2WCLTWV2.js} +3 -3
  51. package/dist/{chunk-BQZEGOZ4.js → chunk-2YODOG2O.js} +2 -2
  52. package/dist/{chunk-WYG5UNDY.js → chunk-3AUDELZL.js} +2 -2
  53. package/dist/{chunk-N4KAE2NB.js → chunk-3CYOCE6U.js} +3 -3
  54. package/dist/{chunk-MB6ZJDN6.js → chunk-3FBAEPCU.js} +2 -2
  55. package/dist/{chunk-PIITB2YZ.js → chunk-3ZS3NUEI.js} +4 -4
  56. package/dist/{chunk-ANZZLRUX.js → chunk-4IVRQMZW.js} +2 -2
  57. package/dist/{chunk-63E37JCN.js → chunk-4RAJT5L2.js} +4 -4
  58. package/dist/{chunk-45VUHDV2.js → chunk-5CO5G4MN.js} +2 -2
  59. package/dist/{chunk-BRLXOZLM.js → chunk-5YT2IIFX.js} +729 -17
  60. package/dist/chunk-5YT2IIFX.js.map +1 -0
  61. package/dist/{chunk-E4IRW2FG.js → chunk-622V2AZA.js} +233 -40
  62. package/dist/chunk-622V2AZA.js.map +1 -0
  63. package/dist/{chunk-LUJCQQ3L.js → chunk-65HWAQ4F.js} +2 -2
  64. package/dist/{chunk-T67LUYCR.js → chunk-77NTFICT.js} +5 -5
  65. package/dist/chunk-A2WFUMUN.js +86 -0
  66. package/dist/chunk-A2WFUMUN.js.map +1 -0
  67. package/dist/{chunk-UE6RRXMF.js → chunk-A4F7OIC5.js} +2 -2
  68. package/dist/chunk-AHA5VQGP.js +117 -0
  69. package/dist/chunk-AHA5VQGP.js.map +1 -0
  70. package/dist/{chunk-SUSW74WU.js → chunk-ATG2PQ4V.js} +56 -5
  71. package/dist/chunk-ATG2PQ4V.js.map +1 -0
  72. package/dist/{chunk-U6UNF5ZS.js → chunk-B33YWUJV.js} +3 -3
  73. package/dist/{chunk-RRJBDXAQ.js → chunk-B377OKUP.js} +2 -2
  74. package/dist/{chunk-IUKYFTGW.js → chunk-B3DR2JBZ.js} +140 -125
  75. package/dist/chunk-B3DR2JBZ.js.map +1 -0
  76. package/dist/{chunk-ETZLQOUR.js → chunk-BGHCSLE5.js} +2 -2
  77. package/dist/{chunk-YYOMGOHB.js → chunk-BOK6BN5M.js} +2 -2
  78. package/dist/{chunk-OH7QLI6W.js → chunk-BPPUH5JM.js} +5 -5
  79. package/dist/{chunk-4J363OAA.js → chunk-BTI4C4MA.js} +2 -2
  80. package/dist/{chunk-O6ZSWHVR.js → chunk-C2KE5DMD.js} +4 -4
  81. package/dist/{chunk-47F6WWLQ.js → chunk-C73N66PR.js} +2 -2
  82. package/dist/{chunk-E3A7ELSG.js → chunk-CGJYL633.js} +2 -2
  83. package/dist/{chunk-WRT7GJ2D.js → chunk-CIWMTNHW.js} +4 -4
  84. package/dist/{chunk-O55EKIEC.js → chunk-D3ZKHLN2.js} +2 -2
  85. package/dist/{chunk-CD4BCCNP.js → chunk-DJ7WVEWX.js} +2 -2
  86. package/dist/{chunk-PWXPRVLK.js → chunk-EFL24KOI.js} +2 -2
  87. package/dist/{chunk-4CJTQHEG.js → chunk-ESLOLCD4.js} +3 -3
  88. package/dist/{chunk-6F42QONS.js → chunk-ETBVCRVL.js} +4 -4
  89. package/dist/{chunk-VILPVT4S.js → chunk-EZ47HOJ6.js} +4 -4
  90. package/dist/{chunk-EFYN5I7Z.js → chunk-F4QFU5IZ.js} +2 -2
  91. package/dist/{chunk-T6OZW2WR.js → chunk-FA7SLQ5X.js} +7 -1
  92. package/dist/chunk-FA7SLQ5X.js.map +1 -0
  93. package/dist/{chunk-7W3RXOIG.js → chunk-FMKILENU.js} +14 -14
  94. package/dist/{chunk-YLXETSAH.js → chunk-GCZJ7XRI.js} +2 -2
  95. package/dist/{chunk-5HFXGXE5.js → chunk-GQXOBKPL.js} +7 -9
  96. package/dist/{chunk-5HFXGXE5.js.map → chunk-GQXOBKPL.js.map} +1 -1
  97. package/dist/{chunk-UDKWFDV2.js → chunk-HLUHEMN4.js} +27 -3
  98. package/dist/chunk-HLUHEMN4.js.map +1 -0
  99. package/dist/{chunk-QFEDITXM.js → chunk-JNDMIAJ4.js} +2 -2
  100. package/dist/chunk-JTSSSR4L.js +359 -0
  101. package/dist/chunk-JTSSSR4L.js.map +1 -0
  102. package/dist/{chunk-5KBIOI4G.js → chunk-JVBAPAWZ.js} +217 -13
  103. package/dist/chunk-JVBAPAWZ.js.map +1 -0
  104. package/dist/{chunk-E5PPE4VA.js → chunk-K2VRKCPA.js} +2 -2
  105. package/dist/{chunk-MKRYQROF.js → chunk-LGEHAQHK.js} +4 -4
  106. package/dist/{chunk-7HTUYFR3.js → chunk-LLPMMMWG.js} +27 -10
  107. package/dist/chunk-LLPMMMWG.js.map +1 -0
  108. package/dist/{chunk-XYTQJD7F.js → chunk-LMJVP5CM.js} +2 -2
  109. package/dist/{chunk-FQKBJJYB.js → chunk-LPV72KRQ.js} +2 -2
  110. package/dist/{chunk-2LCRG2YV.js → chunk-M2XR6B6V.js} +2 -2
  111. package/dist/{chunk-P4WNBSTW.js → chunk-MH632KPO.js} +2 -2
  112. package/dist/{chunk-EQ4U73UH.js → chunk-MLAMXQAW.js} +14 -2
  113. package/dist/chunk-MLAMXQAW.js.map +1 -0
  114. package/dist/{chunk-ZU5JDLOH.js → chunk-MMRTPH3J.js} +2 -2
  115. package/dist/{chunk-PMJFRDJI.js → chunk-MUX7IL77.js} +2 -2
  116. package/dist/{chunk-HF3BKUVV.js → chunk-NAQ4A5IX.js} +7 -7
  117. package/dist/{chunk-TVIVY7KU.js → chunk-NED7IR7B.js} +4 -4
  118. package/dist/{chunk-6F5MJFXY.js → chunk-NHVAX7MH.js} +2 -2
  119. package/dist/{chunk-TG3R2SID.js → chunk-NMGHGTVR.js} +5 -5
  120. package/dist/{chunk-YCNIGRRF.js → chunk-NS7U4ZYU.js} +13 -117
  121. package/dist/chunk-NS7U4ZYU.js.map +1 -0
  122. package/dist/{chunk-NGHDW6UU.js → chunk-NUQEREIP.js} +2 -2
  123. package/dist/{chunk-5IIQU4JZ.js → chunk-OB72KNMF.js} +4 -4
  124. package/dist/{chunk-JV4S6VDH.js → chunk-OJXJWNFY.js} +2 -2
  125. package/dist/{chunk-QJPJXCS4.js → chunk-P3WRNWWM.js} +157 -4
  126. package/dist/chunk-P3WRNWWM.js.map +1 -0
  127. package/dist/{chunk-E6M225BJ.js → chunk-PC5DRBGD.js} +18 -8
  128. package/dist/chunk-PC5DRBGD.js.map +1 -0
  129. package/dist/{chunk-Z7JIZ42P.js → chunk-PRAUN6PN.js} +3 -3
  130. package/dist/{chunk-RWGRSKN5.js → chunk-PT4DZDJA.js} +2 -2
  131. package/dist/{chunk-7EPY3IQL.js → chunk-PZJQ46DH.js} +2 -2
  132. package/dist/{chunk-MXHMNKWG.js → chunk-QDESY76F.js} +3 -3
  133. package/dist/{chunk-I6QGI65T.js → chunk-QRMG4HK4.js} +3 -3
  134. package/dist/{chunk-ZU3NJNO7.js → chunk-QSF5SJAM.js} +4 -4
  135. package/dist/{chunk-5IYOKDM4.js → chunk-R23JWJD3.js} +5 -5
  136. package/dist/{chunk-RHQLIHMB.js → chunk-R4BBGPI2.js} +218 -218
  137. package/dist/chunk-R4BBGPI2.js.map +1 -0
  138. package/dist/{chunk-7GLJMDEQ.js → chunk-RM2YUFH6.js} +6 -6
  139. package/dist/{chunk-IPT2OY4B.js → chunk-RQFXZYTF.js} +35 -33
  140. package/dist/chunk-RQFXZYTF.js.map +1 -0
  141. package/dist/{chunk-AP6NCP3V.js → chunk-S3S72HRM.js} +8 -6
  142. package/dist/chunk-S3S72HRM.js.map +1 -0
  143. package/dist/{chunk-RIMK327Y.js → chunk-SGQPR5SX.js} +7 -7
  144. package/dist/{chunk-ZGFLIK5H.js → chunk-SPAKBUJY.js} +2 -2
  145. package/dist/{chunk-ER7XANP3.js → chunk-SQ3GEIEL.js} +4 -4
  146. package/dist/{chunk-BLJT6JP2.js → chunk-SVT5IA2H.js} +2 -2
  147. package/dist/{chunk-HVX4LPNY.js → chunk-T4KY6UYF.js} +5 -3
  148. package/dist/{chunk-HVX4LPNY.js.map → chunk-T4KY6UYF.js.map} +1 -1
  149. package/dist/{chunk-GVGAO3WV.js → chunk-TJ4F6H4H.js} +3 -3
  150. package/dist/{chunk-R6HMAIKM.js → chunk-TOSPNM4T.js} +2 -2
  151. package/dist/{chunk-HH5LY6RR.js → chunk-TRQE3RYR.js} +5 -5
  152. package/dist/{chunk-RMXS4I66.js → chunk-TVDJEUV5.js} +2 -2
  153. package/dist/{chunk-PLCYKAWH.js → chunk-TYRWSE4B.js} +2 -2
  154. package/dist/{chunk-B4QYQFGY.js → chunk-UBEKET2V.js} +383 -36
  155. package/dist/chunk-UBEKET2V.js.map +1 -0
  156. package/dist/{chunk-IQWUACVG.js → chunk-UHMHJX5G.js} +3 -3
  157. package/dist/{chunk-YODUDA6R.js → chunk-UN4RVUG2.js} +22 -22
  158. package/dist/{chunk-E6Z4FBX6.js → chunk-V2QSNFCT.js} +2 -2
  159. package/dist/{chunk-NBH6K6G5.js → chunk-V65H7MI6.js} +345 -16
  160. package/dist/chunk-V65H7MI6.js.map +1 -0
  161. package/dist/chunk-W54Z2MOP.js +4500 -0
  162. package/dist/chunk-W54Z2MOP.js.map +1 -0
  163. package/dist/{chunk-E7YZXWIS.js → chunk-WKSQTMU7.js} +2 -2
  164. package/dist/{chunk-RIZ5NUNN.js → chunk-WQ4XKIOX.js} +4 -4
  165. package/dist/{chunk-FSO3G4JJ.js → chunk-WQURALGV.js} +4995 -2747
  166. package/dist/chunk-WQURALGV.js.map +1 -0
  167. package/dist/{chunk-QEYTRFR3.js → chunk-X26YOFGS.js} +2 -2
  168. package/dist/{chunk-ITHZFHST.js → chunk-X2BVB74H.js} +2 -2
  169. package/dist/{chunk-XYKBWTWI.js → chunk-XIYLWEXC.js} +2 -2
  170. package/dist/{chunk-IBJ6U753.js → chunk-XKZBZOKV.js} +4 -4
  171. package/dist/{chunk-65AUYLU3.js → chunk-XPXHQI6N.js} +2 -2
  172. package/dist/{chunk-EXHXJETE.js → chunk-XRDYRWZI.js} +2 -2
  173. package/dist/chunk-XRWWCW4H.js +102 -0
  174. package/dist/chunk-XRWWCW4H.js.map +1 -0
  175. package/dist/chunk-YKJBSMMP.js +67137 -0
  176. package/dist/chunk-YKJBSMMP.js.map +1 -0
  177. package/dist/{chunk-2JSDPUKD.js → chunk-YMFPFXEX.js} +2 -2
  178. package/dist/{chunk-645WOU5I.js → chunk-ZDZJNXL6.js} +4 -4
  179. package/dist/{chunk-6TCXIRP5.js → chunk-ZKE4CO6B.js} +4 -4
  180. package/dist/{chunk-FNXQZGUS.js → chunk-ZSE774RV.js} +2 -2
  181. package/dist/cli.js +302 -184
  182. package/dist/coding/export-okf-codegraph.js +28 -28
  183. package/dist/compounding/engine.js +22 -23
  184. package/dist/config.js +35 -36
  185. package/dist/connectors/codex-materialize-runner.js +19 -19
  186. package/dist/connectors/index.js +20 -20
  187. package/dist/connectors/live/google-drive.d.ts +2 -0
  188. package/dist/connectors/live/google-drive.d.ts.map +1 -1
  189. package/dist/consolidation-provenance-check.js +4 -4
  190. package/dist/consolidation-undo.js +5 -5
  191. package/dist/contradiction/index.js +7 -6
  192. package/dist/{contradiction-scan-P2MHYFVG.js → contradiction-scan-IBPYGQZF.js} +4 -3
  193. package/dist/convergence-refresh.js +21 -21
  194. package/dist/corpus-watermark.js +22 -22
  195. package/dist/deep-recall-http-glue.js +2 -2
  196. package/dist/deep-recall-policy-llm.js +4 -4
  197. package/dist/direct-answer-wiring.js +2 -2
  198. package/dist/embedding-fallback.js +1 -1
  199. package/dist/entity-retrieval.js +20 -20
  200. package/dist/eval-trajectory-store.js +2 -2
  201. package/dist/eval-trajectory.js +2 -2
  202. package/dist/event-order-recall.js +2 -2
  203. package/dist/explicit-capture.d.ts +3 -2
  204. package/dist/explicit-capture.d.ts.map +1 -1
  205. package/dist/explicit-capture.js +530 -6
  206. package/dist/explicit-cue-recall.js +2 -2
  207. package/dist/external-wiki-access.js +2 -283
  208. package/dist/extraction-faithfulness.js +4 -4
  209. package/dist/extraction-judge.js +5 -5
  210. package/dist/extraction-normalization.js +1 -1
  211. package/dist/extraction-quote-grounding.d.ts.map +1 -1
  212. package/dist/extraction-quote-grounding.js +1 -1
  213. package/dist/extraction-source-grounding-rules.js +2 -2
  214. package/dist/extraction-source-grounding.js +3 -3
  215. package/dist/extraction.js +42 -43
  216. package/dist/fallback-llm-codex-subscription.js +2 -2
  217. package/dist/fallback-llm.js +3 -3
  218. package/dist/{first-start-migration-QFI7B5SH.js → first-start-migration-FILJH3RO.js} +6 -5
  219. package/dist/{first-start-migration-QFI7B5SH.js.map → first-start-migration-FILJH3RO.js.map} +1 -1
  220. package/dist/focused-list-recall.js +2 -2
  221. package/dist/harmonic-retrieval.js +19 -19
  222. package/dist/index.js +772 -793
  223. package/dist/lcm/index.js +2 -2
  224. package/dist/live-connectors-runner.js +2 -3
  225. package/dist/local-llm-config.js +2 -2
  226. package/dist/local-llm-helpers.d.ts +4 -0
  227. package/dist/local-llm-helpers.d.ts.map +1 -1
  228. package/dist/local-llm-helpers.js +3 -1
  229. package/dist/local-llm.d.ts +4 -1
  230. package/dist/local-llm.d.ts.map +1 -1
  231. package/dist/local-llm.js +4 -4
  232. package/dist/location/index.js +26 -28
  233. package/dist/maintenance/memory-governance.js +19 -19
  234. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +19 -19
  235. package/dist/maintenance/rebuild-memory-projection-runner.js +21 -21
  236. package/dist/maintenance/rebuild-memory-projection.js +20 -20
  237. package/dist/memory-browse-operations.js +2 -283
  238. package/dist/memory-browse.js +8 -7
  239. package/dist/memory-controller.js +2 -2
  240. package/dist/memory-subject.js +2 -2
  241. package/dist/namespaces/migrate.js +20 -20
  242. package/dist/namespaces/search.js +5 -5
  243. package/dist/namespaces/storage.js +19 -19
  244. package/dist/offline-sync-changeset-generations.js +1 -1
  245. package/dist/offline-sync-embedding-generation.js +1 -1
  246. package/dist/offline-sync-impression-drain.js +6 -6
  247. package/dist/offline-sync-snapshot-stream.js +1 -1
  248. package/dist/offline-sync.js +1 -1
  249. package/dist/operator-doctor-corpus.js +23 -23
  250. package/dist/operator-toolkit.js +57 -60
  251. package/dist/orchestration/backlog-scheduler.js +277 -293
  252. package/dist/orchestration/backlog-scheduler.js.map +1 -1
  253. package/dist/orchestration/buffer-drain-runner.js +277 -293
  254. package/dist/orchestration/extraction-run.d.ts +4 -0
  255. package/dist/orchestration/extraction-run.d.ts.map +1 -1
  256. package/dist/orchestration/fact-dedup-window.d.ts +1 -1
  257. package/dist/orchestration/fact-dedup-window.d.ts.map +1 -1
  258. package/dist/orchestration/maintenance.js +38 -41
  259. package/dist/orchestrator.d.ts +9 -11
  260. package/dist/orchestrator.d.ts.map +1 -1
  261. package/dist/orchestrator.js +289 -306
  262. package/dist/page-versioning.js +3 -3
  263. package/dist/qmd-daemon-session.js +2 -2
  264. package/dist/qmd.js +3 -3
  265. package/dist/recall-explain-renderer.js +1 -1
  266. package/dist/recall-navigation-operations.js +2 -283
  267. package/dist/recall-navigation.js +331 -58
  268. package/dist/recall-planner-llm.js +3 -3
  269. package/dist/recall-state-view-admission.js +6 -6
  270. package/dist/recall-why-service.js +10 -9
  271. package/dist/recall-why.js +4 -3
  272. package/dist/recall-xray-cli.js +2 -2
  273. package/dist/recall-xray-renderer.js +1 -1
  274. package/dist/reconcile/manifest.js +3 -3
  275. package/dist/{resolution-N7H3F2E4.js → resolution-OVVIF7ZY.js} +8 -7
  276. package/dist/response-guidance-recall.js +2 -2
  277. package/dist/resume-bundles.js +39 -40
  278. package/dist/salvage-envelope.js +4 -4
  279. package/dist/search/factory.js +4 -4
  280. package/dist/search/index.js +4 -4
  281. package/dist/semantic-consolidation.js +22 -22
  282. package/dist/semantic-rule-promotion.js +19 -19
  283. package/dist/semantic-rule-verifier.js +19 -19
  284. package/dist/shared-context/manager.js +2 -3
  285. package/dist/source-agent-qualifier.js +31 -32
  286. package/dist/standup/build.js +19 -19
  287. package/dist/storage/content-hash-index.d.ts +10 -0
  288. package/dist/storage/content-hash-index.d.ts.map +1 -1
  289. package/dist/storage.js +18 -18
  290. package/dist/subject-config.js +3 -3
  291. package/dist/summarizer.d.ts +4 -1
  292. package/dist/summarizer.d.ts.map +1 -1
  293. package/dist/summarizer.js +6 -6
  294. package/dist/support-passport/index.js +53 -297
  295. package/dist/targeted-fact-recall.js +2 -2
  296. package/dist/tier-routing.js +3 -2
  297. package/dist/{tier-stats-FQGQSFET.js → tier-stats-FXEUJN73.js} +6 -5
  298. package/dist/{tier-stats-FQGQSFET.js.map → tier-stats-FXEUJN73.js.map} +1 -1
  299. package/dist/transcript.js +2 -2
  300. package/dist/transfer/capsule-import.js +4 -4
  301. package/dist/transfer/export-okf.js +19 -19
  302. package/dist/verified-recall.js +19 -19
  303. package/dist/wearables/memory-gen.d.ts +5 -1
  304. package/dist/wearables/memory-gen.d.ts.map +1 -1
  305. package/dist/wearables/service.d.ts.map +1 -1
  306. package/dist/who-knows-cli.js +20 -20
  307. package/dist/who-knows.js +19 -19
  308. package/dist/write-envelope.js +3 -3
  309. package/package.json +2 -2
  310. package/src/access-boundary.ts +5 -1
  311. package/src/access-category-alias.test.ts +5 -0
  312. package/src/access-mcp-frames.test.ts +60 -5
  313. package/src/access-mcp-frames.ts +72 -18
  314. package/src/access-mcp.test.ts +66 -2
  315. package/src/access-mcp.ts +19 -13
  316. package/src/access-service-coding-write.test.ts +7 -0
  317. package/src/activity/journal-extract-storage.test.ts +31 -0
  318. package/src/activity/journal-extract.test.ts +1 -0
  319. package/src/activity/journal-extract.ts +24 -3
  320. package/src/connectors/live/google-drive.test.ts +39 -0
  321. package/src/connectors/live/google-drive.ts +41 -12
  322. package/src/explicit-capture.test.ts +109 -17
  323. package/src/explicit-capture.ts +90 -37
  324. package/src/extraction-quote-grounding.test.ts +20 -0
  325. package/src/extraction-quote-grounding.ts +21 -11
  326. package/src/fact-dedup-window.test.ts +37 -0
  327. package/src/local-llm-helpers.ts +12 -0
  328. package/src/local-llm-shutdown.test.ts +194 -0
  329. package/src/local-llm.ts +32 -30
  330. package/src/orchestration/extraction-run.ts +12 -3
  331. package/src/orchestration/fact-dedup-window.ts +5 -1
  332. package/src/orchestrator-connector-dedup.test.ts +9 -5
  333. package/src/orchestrator.ts +47 -50
  334. package/src/storage/content-hash-index.ts +27 -2
  335. package/src/storage-fact-hash-publish-failure.test.ts +87 -0
  336. package/src/summarizer-shutdown.test.ts +195 -0
  337. package/src/summarizer.ts +15 -2
  338. package/src/wearables/memory-gen.test.ts +20 -0
  339. package/src/wearables/memory-gen.ts +14 -7
  340. package/src/wearables/service.ts +14 -1
  341. package/src/wearables/storage-io.test.ts +25 -0
  342. package/dist/chunk-2FGLEF7C.js +0 -61
  343. package/dist/chunk-2FGLEF7C.js.map +0 -1
  344. package/dist/chunk-3RLK65ZK.js +0 -203
  345. package/dist/chunk-3RLK65ZK.js.map +0 -1
  346. package/dist/chunk-4WR2OD7K.js +0 -43
  347. package/dist/chunk-4WR2OD7K.js.map +0 -1
  348. package/dist/chunk-5KBIOI4G.js.map +0 -1
  349. package/dist/chunk-5M5M22GW.js +0 -346
  350. package/dist/chunk-5M5M22GW.js.map +0 -1
  351. package/dist/chunk-7HTUYFR3.js.map +0 -1
  352. package/dist/chunk-AP6NCP3V.js.map +0 -1
  353. package/dist/chunk-B4QYQFGY.js.map +0 -1
  354. package/dist/chunk-BJRTMNCB.js +0 -1919
  355. package/dist/chunk-BJRTMNCB.js.map +0 -1
  356. package/dist/chunk-BRLXOZLM.js.map +0 -1
  357. package/dist/chunk-BSACVS6R.js +0 -621
  358. package/dist/chunk-BSACVS6R.js.map +0 -1
  359. package/dist/chunk-DKAA2IHQ.js +0 -3644
  360. package/dist/chunk-DKAA2IHQ.js.map +0 -1
  361. package/dist/chunk-E4IRW2FG.js.map +0 -1
  362. package/dist/chunk-E6M225BJ.js.map +0 -1
  363. package/dist/chunk-EQ4U73UH.js.map +0 -1
  364. package/dist/chunk-ETSJD5IV.js +0 -361
  365. package/dist/chunk-ETSJD5IV.js.map +0 -1
  366. package/dist/chunk-F55YQP7N.js +0 -336
  367. package/dist/chunk-F55YQP7N.js.map +0 -1
  368. package/dist/chunk-FHGWKODN.js +0 -2300
  369. package/dist/chunk-FHGWKODN.js.map +0 -1
  370. package/dist/chunk-FLRP63GU.js +0 -32219
  371. package/dist/chunk-FLRP63GU.js.map +0 -1
  372. package/dist/chunk-FSO3G4JJ.js.map +0 -1
  373. package/dist/chunk-ID6JGIMD.js +0 -25
  374. package/dist/chunk-ID6JGIMD.js.map +0 -1
  375. package/dist/chunk-IGLJNHOX.js +0 -62
  376. package/dist/chunk-IGLJNHOX.js.map +0 -1
  377. package/dist/chunk-IPT2OY4B.js.map +0 -1
  378. package/dist/chunk-IUKYFTGW.js.map +0 -1
  379. package/dist/chunk-NBH6K6G5.js.map +0 -1
  380. package/dist/chunk-NTRUKAAE.js +0 -223
  381. package/dist/chunk-NTRUKAAE.js.map +0 -1
  382. package/dist/chunk-OGXXGHW6.js +0 -223
  383. package/dist/chunk-OGXXGHW6.js.map +0 -1
  384. package/dist/chunk-PPCLZ4JU.js +0 -28
  385. package/dist/chunk-PPCLZ4JU.js.map +0 -1
  386. package/dist/chunk-QJPJXCS4.js.map +0 -1
  387. package/dist/chunk-R2LBF4HH.js +0 -729
  388. package/dist/chunk-R2LBF4HH.js.map +0 -1
  389. package/dist/chunk-RHQLIHMB.js.map +0 -1
  390. package/dist/chunk-RRTVGD3J.js +0 -792
  391. package/dist/chunk-RRTVGD3J.js.map +0 -1
  392. package/dist/chunk-SUSW74WU.js.map +0 -1
  393. package/dist/chunk-T6OZW2WR.js.map +0 -1
  394. package/dist/chunk-UDKWFDV2.js.map +0 -1
  395. package/dist/chunk-V7IZKJI3.js +0 -22
  396. package/dist/chunk-V7IZKJI3.js.map +0 -1
  397. package/dist/chunk-X562NQFA.js +0 -10144
  398. package/dist/chunk-X562NQFA.js.map +0 -1
  399. package/dist/chunk-XDSCJOH7.js +0 -3991
  400. package/dist/chunk-XDSCJOH7.js.map +0 -1
  401. package/dist/chunk-YCNIGRRF.js.map +0 -1
  402. package/dist/chunk-ZTTCDQ4I.js +0 -18796
  403. package/dist/chunk-ZTTCDQ4I.js.map +0 -1
  404. /package/dist/{capsule-merge-2IIXFXN5.js.map → capsule-merge-6IDAYTKG.js.map} +0 -0
  405. /package/dist/{chunk-ATPWZ4F7.js.map → chunk-2LMA22UU.js.map} +0 -0
  406. /package/dist/{chunk-RGUUBAT5.js.map → chunk-2WCLTWV2.js.map} +0 -0
  407. /package/dist/{chunk-BQZEGOZ4.js.map → chunk-2YODOG2O.js.map} +0 -0
  408. /package/dist/{chunk-WYG5UNDY.js.map → chunk-3AUDELZL.js.map} +0 -0
  409. /package/dist/{chunk-N4KAE2NB.js.map → chunk-3CYOCE6U.js.map} +0 -0
  410. /package/dist/{chunk-MB6ZJDN6.js.map → chunk-3FBAEPCU.js.map} +0 -0
  411. /package/dist/{chunk-PIITB2YZ.js.map → chunk-3ZS3NUEI.js.map} +0 -0
  412. /package/dist/{chunk-ANZZLRUX.js.map → chunk-4IVRQMZW.js.map} +0 -0
  413. /package/dist/{chunk-63E37JCN.js.map → chunk-4RAJT5L2.js.map} +0 -0
  414. /package/dist/{chunk-45VUHDV2.js.map → chunk-5CO5G4MN.js.map} +0 -0
  415. /package/dist/{chunk-LUJCQQ3L.js.map → chunk-65HWAQ4F.js.map} +0 -0
  416. /package/dist/{chunk-T67LUYCR.js.map → chunk-77NTFICT.js.map} +0 -0
  417. /package/dist/{chunk-UE6RRXMF.js.map → chunk-A4F7OIC5.js.map} +0 -0
  418. /package/dist/{chunk-U6UNF5ZS.js.map → chunk-B33YWUJV.js.map} +0 -0
  419. /package/dist/{chunk-RRJBDXAQ.js.map → chunk-B377OKUP.js.map} +0 -0
  420. /package/dist/{chunk-ETZLQOUR.js.map → chunk-BGHCSLE5.js.map} +0 -0
  421. /package/dist/{chunk-YYOMGOHB.js.map → chunk-BOK6BN5M.js.map} +0 -0
  422. /package/dist/{chunk-OH7QLI6W.js.map → chunk-BPPUH5JM.js.map} +0 -0
  423. /package/dist/{chunk-4J363OAA.js.map → chunk-BTI4C4MA.js.map} +0 -0
  424. /package/dist/{chunk-O6ZSWHVR.js.map → chunk-C2KE5DMD.js.map} +0 -0
  425. /package/dist/{chunk-47F6WWLQ.js.map → chunk-C73N66PR.js.map} +0 -0
  426. /package/dist/{chunk-E3A7ELSG.js.map → chunk-CGJYL633.js.map} +0 -0
  427. /package/dist/{chunk-WRT7GJ2D.js.map → chunk-CIWMTNHW.js.map} +0 -0
  428. /package/dist/{chunk-O55EKIEC.js.map → chunk-D3ZKHLN2.js.map} +0 -0
  429. /package/dist/{chunk-CD4BCCNP.js.map → chunk-DJ7WVEWX.js.map} +0 -0
  430. /package/dist/{chunk-PWXPRVLK.js.map → chunk-EFL24KOI.js.map} +0 -0
  431. /package/dist/{chunk-4CJTQHEG.js.map → chunk-ESLOLCD4.js.map} +0 -0
  432. /package/dist/{chunk-6F42QONS.js.map → chunk-ETBVCRVL.js.map} +0 -0
  433. /package/dist/{chunk-VILPVT4S.js.map → chunk-EZ47HOJ6.js.map} +0 -0
  434. /package/dist/{chunk-EFYN5I7Z.js.map → chunk-F4QFU5IZ.js.map} +0 -0
  435. /package/dist/{chunk-7W3RXOIG.js.map → chunk-FMKILENU.js.map} +0 -0
  436. /package/dist/{chunk-YLXETSAH.js.map → chunk-GCZJ7XRI.js.map} +0 -0
  437. /package/dist/{chunk-QFEDITXM.js.map → chunk-JNDMIAJ4.js.map} +0 -0
  438. /package/dist/{chunk-E5PPE4VA.js.map → chunk-K2VRKCPA.js.map} +0 -0
  439. /package/dist/{chunk-MKRYQROF.js.map → chunk-LGEHAQHK.js.map} +0 -0
  440. /package/dist/{chunk-XYTQJD7F.js.map → chunk-LMJVP5CM.js.map} +0 -0
  441. /package/dist/{chunk-FQKBJJYB.js.map → chunk-LPV72KRQ.js.map} +0 -0
  442. /package/dist/{chunk-2LCRG2YV.js.map → chunk-M2XR6B6V.js.map} +0 -0
  443. /package/dist/{chunk-P4WNBSTW.js.map → chunk-MH632KPO.js.map} +0 -0
  444. /package/dist/{chunk-ZU5JDLOH.js.map → chunk-MMRTPH3J.js.map} +0 -0
  445. /package/dist/{chunk-PMJFRDJI.js.map → chunk-MUX7IL77.js.map} +0 -0
  446. /package/dist/{chunk-HF3BKUVV.js.map → chunk-NAQ4A5IX.js.map} +0 -0
  447. /package/dist/{chunk-TVIVY7KU.js.map → chunk-NED7IR7B.js.map} +0 -0
  448. /package/dist/{chunk-6F5MJFXY.js.map → chunk-NHVAX7MH.js.map} +0 -0
  449. /package/dist/{chunk-TG3R2SID.js.map → chunk-NMGHGTVR.js.map} +0 -0
  450. /package/dist/{chunk-NGHDW6UU.js.map → chunk-NUQEREIP.js.map} +0 -0
  451. /package/dist/{chunk-5IIQU4JZ.js.map → chunk-OB72KNMF.js.map} +0 -0
  452. /package/dist/{chunk-JV4S6VDH.js.map → chunk-OJXJWNFY.js.map} +0 -0
  453. /package/dist/{chunk-Z7JIZ42P.js.map → chunk-PRAUN6PN.js.map} +0 -0
  454. /package/dist/{chunk-RWGRSKN5.js.map → chunk-PT4DZDJA.js.map} +0 -0
  455. /package/dist/{chunk-7EPY3IQL.js.map → chunk-PZJQ46DH.js.map} +0 -0
  456. /package/dist/{chunk-MXHMNKWG.js.map → chunk-QDESY76F.js.map} +0 -0
  457. /package/dist/{chunk-I6QGI65T.js.map → chunk-QRMG4HK4.js.map} +0 -0
  458. /package/dist/{chunk-ZU3NJNO7.js.map → chunk-QSF5SJAM.js.map} +0 -0
  459. /package/dist/{chunk-5IYOKDM4.js.map → chunk-R23JWJD3.js.map} +0 -0
  460. /package/dist/{chunk-7GLJMDEQ.js.map → chunk-RM2YUFH6.js.map} +0 -0
  461. /package/dist/{chunk-RIMK327Y.js.map → chunk-SGQPR5SX.js.map} +0 -0
  462. /package/dist/{chunk-ZGFLIK5H.js.map → chunk-SPAKBUJY.js.map} +0 -0
  463. /package/dist/{chunk-ER7XANP3.js.map → chunk-SQ3GEIEL.js.map} +0 -0
  464. /package/dist/{chunk-BLJT6JP2.js.map → chunk-SVT5IA2H.js.map} +0 -0
  465. /package/dist/{chunk-GVGAO3WV.js.map → chunk-TJ4F6H4H.js.map} +0 -0
  466. /package/dist/{chunk-R6HMAIKM.js.map → chunk-TOSPNM4T.js.map} +0 -0
  467. /package/dist/{chunk-HH5LY6RR.js.map → chunk-TRQE3RYR.js.map} +0 -0
  468. /package/dist/{chunk-RMXS4I66.js.map → chunk-TVDJEUV5.js.map} +0 -0
  469. /package/dist/{chunk-PLCYKAWH.js.map → chunk-TYRWSE4B.js.map} +0 -0
  470. /package/dist/{chunk-IQWUACVG.js.map → chunk-UHMHJX5G.js.map} +0 -0
  471. /package/dist/{chunk-YODUDA6R.js.map → chunk-UN4RVUG2.js.map} +0 -0
  472. /package/dist/{chunk-E6Z4FBX6.js.map → chunk-V2QSNFCT.js.map} +0 -0
  473. /package/dist/{chunk-E7YZXWIS.js.map → chunk-WKSQTMU7.js.map} +0 -0
  474. /package/dist/{chunk-RIZ5NUNN.js.map → chunk-WQ4XKIOX.js.map} +0 -0
  475. /package/dist/{chunk-QEYTRFR3.js.map → chunk-X26YOFGS.js.map} +0 -0
  476. /package/dist/{chunk-ITHZFHST.js.map → chunk-X2BVB74H.js.map} +0 -0
  477. /package/dist/{chunk-XYKBWTWI.js.map → chunk-XIYLWEXC.js.map} +0 -0
  478. /package/dist/{chunk-IBJ6U753.js.map → chunk-XKZBZOKV.js.map} +0 -0
  479. /package/dist/{chunk-65AUYLU3.js.map → chunk-XPXHQI6N.js.map} +0 -0
  480. /package/dist/{chunk-EXHXJETE.js.map → chunk-XRDYRWZI.js.map} +0 -0
  481. /package/dist/{chunk-2JSDPUKD.js.map → chunk-YMFPFXEX.js.map} +0 -0
  482. /package/dist/{chunk-645WOU5I.js.map → chunk-ZDZJNXL6.js.map} +0 -0
  483. /package/dist/{chunk-6TCXIRP5.js.map → chunk-ZKE4CO6B.js.map} +0 -0
  484. /package/dist/{chunk-FNXQZGUS.js.map → chunk-ZSE774RV.js.map} +0 -0
  485. /package/dist/{contradiction-scan-P2MHYFVG.js.map → contradiction-scan-IBPYGQZF.js.map} +0 -0
  486. /package/dist/{resolution-N7H3F2E4.js.map → resolution-OVVIF7ZY.js.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-BT7NVCML.js";
4
4
  import {
5
5
  isMemorySubject
6
- } from "./chunk-R6HMAIKM.js";
6
+ } from "./chunk-TOSPNM4T.js";
7
7
  import {
8
8
  assemblePersistedBody
9
9
  } from "./chunk-JDSVLVCG.js";
@@ -443,4 +443,4 @@ export {
443
443
  buildAccessWriteRequestFingerprint,
444
444
  buildObserveRequestFingerprint
445
445
  };
446
- //# sourceMappingURL=chunk-QEYTRFR3.js.map
446
+ //# sourceMappingURL=chunk-X26YOFGS.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-DBB5JPSL.js";
4
4
  import {
5
5
  isGenericRecallExcludedPath
6
- } from "./chunk-EFYN5I7Z.js";
6
+ } from "./chunk-F4QFU5IZ.js";
7
7
  import {
8
8
  isChangeOrientedQuery
9
9
  } from "./chunk-EH3HNCAM.js";
@@ -69,4 +69,4 @@ export {
69
69
  filterRecentScanMemoriesForStateView,
70
70
  indexStateViewAnnotatedResults
71
71
  };
72
- //# sourceMappingURL=chunk-ITHZFHST.js.map
72
+ //# sourceMappingURL=chunk-X2BVB74H.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseFrontmatter
3
- } from "./chunk-FSO3G4JJ.js";
3
+ } from "./chunk-WQURALGV.js";
4
4
  import {
5
5
  activityDigestPath,
6
6
  isValidActivityDate
@@ -199,4 +199,4 @@ export {
199
199
  buildStandup,
200
200
  standupHelp
201
201
  };
202
- //# sourceMappingURL=chunk-XYKBWTWI.js.map
202
+ //# sourceMappingURL=chunk-XIYLWEXC.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- evaluateMemoryActionPolicy
3
- } from "./chunk-MI2OTWV5.js";
4
1
  import {
5
2
  planRecallMode
6
3
  } from "./chunk-CSAKJVXW.js";
4
+ import {
5
+ evaluateMemoryActionPolicy
6
+ } from "./chunk-MI2OTWV5.js";
7
7
 
8
8
  // src/memory-controller.ts
9
9
  import { createHash, randomUUID } from "crypto";
@@ -322,4 +322,4 @@ export {
322
322
  evaluateActiveGates,
323
323
  MemoryControllerCoordinator
324
324
  };
325
- //# sourceMappingURL=chunk-IBJ6U753.js.map
325
+ //# sourceMappingURL=chunk-XKZBZOKV.js.map
@@ -24,7 +24,7 @@ import {
24
24
  } from "./chunk-F4TWWUMP.js";
25
25
  import {
26
26
  QmdClient
27
- } from "./chunk-5IYOKDM4.js";
27
+ } from "./chunk-R23JWJD3.js";
28
28
  import {
29
29
  resolveIndexingCapabilities,
30
30
  resolvePipelineProcessingCapabilities,
@@ -179,4 +179,4 @@ export {
179
179
  createConversationSearchBackend,
180
180
  createConversationIndexRuntime
181
181
  };
182
- //# sourceMappingURL=chunk-65AUYLU3.js.map
182
+ //# sourceMappingURL=chunk-XPXHQI6N.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseEntityFile
3
- } from "./chunk-FSO3G4JJ.js";
3
+ } from "./chunk-WQURALGV.js";
4
4
  import {
5
5
  inferMemoryStatus
6
6
  } from "./chunk-7RJUVTVF.js";
@@ -253,4 +253,4 @@ export {
253
253
  WHO_KNOWS_MCP_TOOLS,
254
254
  handleWhoKnowsHttpQuery
255
255
  };
256
- //# sourceMappingURL=chunk-EXHXJETE.js.map
256
+ //# sourceMappingURL=chunk-XRDYRWZI.js.map
@@ -0,0 +1,102 @@
1
+ // src/access-mcp-frames.ts
2
+ var MCP_STDIO_MAX_FRAME_BYTES = 131072;
3
+ var HEADER_PREFIX = "content-length:";
4
+ var McpFrameReader = class {
5
+ buffer = Buffer.alloc(0);
6
+ /** Body bytes of a refused oversized header frame that have not arrived yet. */
7
+ skipBytes = 0;
8
+ /** True while the rest of a refused oversized line has not arrived yet. */
9
+ skipLine = false;
10
+ /** Buffer length when `next` last stopped on an incomplete frame. */
11
+ waitingBytes = 0;
12
+ push(chunk) {
13
+ const dropped = Math.min(this.skipBytes, chunk.length);
14
+ this.skipBytes -= dropped;
15
+ let kept = chunk.subarray(dropped);
16
+ if (this.skipLine) {
17
+ const newline = kept.indexOf("\n");
18
+ this.skipLine = newline < 0;
19
+ kept = kept.subarray(newline < 0 ? kept.length : newline + 1);
20
+ }
21
+ if (kept.length > 0) this.buffer = Buffer.concat([this.buffer, kept]);
22
+ }
23
+ /** True when bytes arrived after `next` last examined the buffer. */
24
+ hasUnread() {
25
+ return this.buffer.length > this.waitingBytes;
26
+ }
27
+ next() {
28
+ this.waitingBytes = 0;
29
+ for (; ; ) {
30
+ const frame = this.isHeaderFrame() ? this.nextHeader() : this.nextLine();
31
+ if (frame !== "blank") return frame;
32
+ }
33
+ }
34
+ /** A line frame starts with `{` or `[`, as every JSON-RPC message does. Any other first byte starts a header block. */
35
+ isHeaderFrame() {
36
+ const first = this.buffer.find((byte) => byte > 32);
37
+ return first !== void 0 && first !== 123 && first !== 91;
38
+ }
39
+ nextHeader() {
40
+ this.buffer = this.release(this.buffer.subarray(this.buffer.findIndex((byte) => byte > 32)));
41
+ const headerEnd = this.buffer.indexOf("\r\n\r\n");
42
+ if (headerEnd < 0) {
43
+ if (this.buffer.length <= MCP_STDIO_MAX_FRAME_BYTES) return this.wait();
44
+ return this.discardBuffer("header");
45
+ }
46
+ if (headerEnd > MCP_STDIO_MAX_FRAME_BYTES) return this.discardBuffer("header");
47
+ const headers = this.buffer.subarray(0, headerEnd).toString("utf-8").split("\r\n");
48
+ const lengthHeader = headers.find((line) => line.toLowerCase().startsWith(HEADER_PREFIX));
49
+ const contentLength = lengthHeader ? Number.parseInt(lengthHeader.split(":")[1]?.trim() ?? "0", 10) : NaN;
50
+ if (!Number.isFinite(contentLength) || contentLength < 0) {
51
+ this.buffer = Buffer.alloc(0);
52
+ return null;
53
+ }
54
+ const bodyStart = headerEnd + 4;
55
+ if (contentLength > MCP_STDIO_MAX_FRAME_BYTES) {
56
+ const rest = this.buffer.subarray(bodyStart);
57
+ this.skipBytes = Math.max(0, contentLength - rest.length);
58
+ this.buffer = this.release(rest.subarray(Math.min(contentLength, rest.length)));
59
+ return { kind: "too-large", form: "header" };
60
+ }
61
+ const bodyEnd = bodyStart + contentLength;
62
+ if (this.buffer.length < bodyEnd) return this.wait();
63
+ const text = this.buffer.subarray(bodyStart, bodyEnd).toString("utf-8");
64
+ this.buffer = this.release(this.buffer.subarray(bodyEnd));
65
+ return { kind: "body", text, form: "header" };
66
+ }
67
+ /** A line frame, `"blank"` for an empty line, or `null` when more bytes must arrive. */
68
+ nextLine() {
69
+ const newline = this.buffer.indexOf("\n");
70
+ if (newline < 0) {
71
+ if (this.buffer.length <= MCP_STDIO_MAX_FRAME_BYTES) return this.wait();
72
+ this.skipLine = true;
73
+ return this.discardBuffer("line");
74
+ }
75
+ if (newline > MCP_STDIO_MAX_FRAME_BYTES) {
76
+ this.buffer = this.release(this.buffer.subarray(newline + 1));
77
+ return { kind: "too-large", form: "line" };
78
+ }
79
+ const text = this.buffer.subarray(0, newline).toString("utf-8").replace(/\r$/, "");
80
+ this.buffer = this.release(this.buffer.subarray(newline + 1));
81
+ if (text.trim().length === 0) return "blank";
82
+ return { kind: "body", text, form: "line" };
83
+ }
84
+ /** An empty view would keep the old allocation alive while the connection idles. */
85
+ release(view) {
86
+ return view.length === 0 ? Buffer.alloc(0) : view;
87
+ }
88
+ wait() {
89
+ this.waitingBytes = this.buffer.length;
90
+ return null;
91
+ }
92
+ discardBuffer(form) {
93
+ this.buffer = Buffer.alloc(0);
94
+ return { kind: "too-large", form };
95
+ }
96
+ };
97
+
98
+ export {
99
+ MCP_STDIO_MAX_FRAME_BYTES,
100
+ McpFrameReader
101
+ };
102
+ //# sourceMappingURL=chunk-XRWWCW4H.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/access-mcp-frames.ts"],"sourcesContent":["/**\n * Framing for the MCP stdio transport.\n *\n * The MCP spec sends one JSON message per line. Some clients send a\n * `Content-Length` header instead. `push` appends raw bytes. `next` returns one\n * frame at a time and `null` when the buffered bytes hold no complete frame\n * yet. A buffer whose first non-blank byte is `{` or `[` is read up to the next\n * newline. Any other buffer is a header block. Each form is bounded to\n * MCP_STDIO_MAX_FRAME_BYTES, so a peer cannot grow the buffer without limit.\n */\nexport const MCP_STDIO_MAX_FRAME_BYTES = 131072;\n\nexport type McpFrameForm = \"header\" | \"line\";\n\nexport type McpFrame =\n | { kind: \"body\"; text: string; form: McpFrameForm }\n | { kind: \"too-large\"; form: McpFrameForm };\n\nconst HEADER_PREFIX = \"content-length:\";\n\nexport class McpFrameReader {\n private buffer = Buffer.alloc(0);\n /** Body bytes of a refused oversized header frame that have not arrived yet. */\n private skipBytes = 0;\n /** True while the rest of a refused oversized line has not arrived yet. */\n private skipLine = false;\n /** Buffer length when `next` last stopped on an incomplete frame. */\n private waitingBytes = 0;\n\n push(chunk: Buffer): void {\n const dropped = Math.min(this.skipBytes, chunk.length);\n this.skipBytes -= dropped;\n let kept = chunk.subarray(dropped);\n if (this.skipLine) {\n const newline = kept.indexOf(\"\\n\");\n this.skipLine = newline < 0;\n kept = kept.subarray(newline < 0 ? kept.length : newline + 1);\n }\n if (kept.length > 0) this.buffer = Buffer.concat([this.buffer, kept]);\n }\n\n /** True when bytes arrived after `next` last examined the buffer. */\n hasUnread(): boolean {\n return this.buffer.length > this.waitingBytes;\n }\n\n next(): McpFrame | null {\n this.waitingBytes = 0;\n // A blank line carries no message. Skip it and read the next frame, so a\n // run of blank lines cannot stall the frames that follow in this buffer.\n for (;;) {\n const frame = this.isHeaderFrame() ? this.nextHeader() : this.nextLine();\n if (frame !== \"blank\") return frame;\n }\n }\n\n /** A line frame starts with `{` or `[`, as every JSON-RPC message does. Any other first byte starts a header block. */\n private isHeaderFrame(): boolean {\n const first = this.buffer.find((byte) => byte > 0x20);\n return first !== undefined && first !== 0x7b && first !== 0x5b;\n }\n\n private nextHeader(): McpFrame | null {\n // Blank lines before a header block carry no message; drop them so they\n // cannot end up inside the first header line.\n this.buffer = this.release(this.buffer.subarray(this.buffer.findIndex((byte) => byte > 0x20)));\n const headerEnd = this.buffer.indexOf(\"\\r\\n\\r\\n\");\n if (headerEnd < 0) {\n if (this.buffer.length <= MCP_STDIO_MAX_FRAME_BYTES) return this.wait();\n return this.discardBuffer(\"header\");\n }\n if (headerEnd > MCP_STDIO_MAX_FRAME_BYTES) return this.discardBuffer(\"header\");\n\n const headers = this.buffer.subarray(0, headerEnd).toString(\"utf-8\").split(\"\\r\\n\");\n const lengthHeader = headers.find((line) => line.toLowerCase().startsWith(HEADER_PREFIX));\n const contentLength = lengthHeader ? Number.parseInt(lengthHeader.split(\":\")[1]?.trim() ?? \"0\", 10) : NaN;\n if (!Number.isFinite(contentLength) || contentLength < 0) {\n this.buffer = Buffer.alloc(0);\n return null;\n }\n\n const bodyStart = headerEnd + 4;\n if (contentLength > MCP_STDIO_MAX_FRAME_BYTES) {\n const rest = this.buffer.subarray(bodyStart);\n this.skipBytes = Math.max(0, contentLength - rest.length);\n this.buffer = this.release(rest.subarray(Math.min(contentLength, rest.length)));\n return { kind: \"too-large\", form: \"header\" };\n }\n const bodyEnd = bodyStart + contentLength;\n if (this.buffer.length < bodyEnd) return this.wait();\n const text = this.buffer.subarray(bodyStart, bodyEnd).toString(\"utf-8\");\n this.buffer = this.release(this.buffer.subarray(bodyEnd));\n return { kind: \"body\", text, form: \"header\" };\n }\n\n /** A line frame, `\"blank\"` for an empty line, or `null` when more bytes must arrive. */\n private nextLine(): McpFrame | \"blank\" | null {\n const newline = this.buffer.indexOf(\"\\n\");\n if (newline < 0) {\n if (this.buffer.length <= MCP_STDIO_MAX_FRAME_BYTES) return this.wait();\n this.skipLine = true;\n return this.discardBuffer(\"line\");\n }\n if (newline > MCP_STDIO_MAX_FRAME_BYTES) {\n this.buffer = this.release(this.buffer.subarray(newline + 1));\n return { kind: \"too-large\", form: \"line\" };\n }\n const text = this.buffer.subarray(0, newline).toString(\"utf-8\").replace(/\\r$/, \"\");\n this.buffer = this.release(this.buffer.subarray(newline + 1));\n if (text.trim().length === 0) return \"blank\";\n return { kind: \"body\", text, form: \"line\" };\n }\n\n /** An empty view would keep the old allocation alive while the connection idles. */\n private release(view: Buffer<ArrayBuffer>): Buffer<ArrayBuffer> {\n return view.length === 0 ? Buffer.alloc(0) : view;\n }\n\n private wait(): null {\n this.waitingBytes = this.buffer.length;\n return null;\n }\n\n private discardBuffer(form: McpFrameForm): McpFrame {\n this.buffer = Buffer.alloc(0);\n return { kind: \"too-large\", form };\n }\n}\n"],"mappings":"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","names":[]}