@remnic/core 10.0.91 → 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 (522) hide show
  1. package/dist/access-admin-ops-surface.js +334 -61
  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 +288 -304
  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 +334 -61
  10. package/dist/access-http-briefing.js +334 -62
  11. package/dist/access-http-query.js +334 -63
  12. package/dist/access-http.js +332 -114
  13. package/dist/access-identity-continuity-surface.js +334 -61
  14. package/dist/access-lcm-surface.js +334 -61
  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 +332 -89
  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 +334 -61
  25. package/dist/access-offline-manifest.js +12 -11
  26. package/dist/access-operations-batch.js +332 -66
  27. package/dist/access-operations.js +332 -75
  28. package/dist/access-recall-concurrency.js +334 -61
  29. package/dist/access-recall-diagnostics.js +6 -5
  30. package/dist/access-recall-response.js +334 -61
  31. package/dist/access-recall-surface.js +334 -61
  32. package/dist/access-schema.js +2 -2
  33. package/dist/access-service.d.ts +1 -0
  34. package/dist/access-service.d.ts.map +1 -1
  35. package/dist/access-service.js +337 -64
  36. package/dist/access-surface-catalog.js +6 -283
  37. package/dist/access-surface-catalog.js.map +1 -1
  38. package/dist/active-context-transform.js +1 -1
  39. package/dist/active-memory-bridge.js +3 -2
  40. package/dist/active-recall.js +36 -37
  41. package/dist/active-recall.js.map +1 -1
  42. package/dist/activity/journal-extract.d.ts +13 -1
  43. package/dist/activity/journal-extract.d.ts.map +1 -1
  44. package/dist/{auto-sync-3AZW7MXI.js → auto-sync-BO5YZKM6.js} +13 -15
  45. package/dist/{auto-sync-3AZW7MXI.js.map → auto-sync-BO5YZKM6.js.map} +1 -1
  46. package/dist/briefing.js +20 -20
  47. package/dist/buffer.js +16 -16
  48. package/dist/calibration.js +10 -10
  49. package/dist/{capsule-merge-2IIXFXN5.js → capsule-merge-6IDAYTKG.js} +6 -6
  50. package/dist/causal-consolidation.js +23 -23
  51. package/dist/{chunk-QL7RHYK6.js → chunk-2LMA22UU.js} +5 -5
  52. package/dist/{chunk-RGUUBAT5.js → chunk-2WCLTWV2.js} +3 -3
  53. package/dist/{chunk-RSK2WIEM.js → chunk-2YODOG2O.js} +2 -2
  54. package/dist/{chunk-WYG5UNDY.js → chunk-3AUDELZL.js} +2 -2
  55. package/dist/{chunk-OFVCFKDH.js → chunk-3CYOCE6U.js} +3 -3
  56. package/dist/{chunk-6HM6HARE.js → chunk-3FBAEPCU.js} +2 -2
  57. package/dist/{chunk-PIITB2YZ.js → chunk-3ZS3NUEI.js} +4 -4
  58. package/dist/{chunk-V4XE263I.js → chunk-43AA5FVD.js} +1 -1
  59. package/dist/chunk-43AA5FVD.js.map +1 -0
  60. package/dist/{chunk-ANZZLRUX.js → chunk-4IVRQMZW.js} +2 -2
  61. package/dist/{chunk-63E37JCN.js → chunk-4RAJT5L2.js} +4 -4
  62. package/dist/{chunk-45VUHDV2.js → chunk-5CO5G4MN.js} +2 -2
  63. package/dist/{chunk-PUEO37QG.js → chunk-5YT2IIFX.js} +729 -17
  64. package/dist/chunk-5YT2IIFX.js.map +1 -0
  65. package/dist/{chunk-P5VZSSYL.js → chunk-622V2AZA.js} +233 -40
  66. package/dist/chunk-622V2AZA.js.map +1 -0
  67. package/dist/{chunk-3UMDRGFS.js → chunk-65HWAQ4F.js} +3 -3
  68. package/dist/{chunk-T67LUYCR.js → chunk-77NTFICT.js} +5 -5
  69. package/dist/chunk-A2WFUMUN.js +86 -0
  70. package/dist/chunk-A2WFUMUN.js.map +1 -0
  71. package/dist/{chunk-UE6RRXMF.js → chunk-A4F7OIC5.js} +2 -2
  72. package/dist/chunk-AHA5VQGP.js +117 -0
  73. package/dist/chunk-AHA5VQGP.js.map +1 -0
  74. package/dist/{chunk-AOFEMUHG.js → chunk-ATG2PQ4V.js} +56 -5
  75. package/dist/chunk-ATG2PQ4V.js.map +1 -0
  76. package/dist/{chunk-63O7LVMN.js → chunk-B33YWUJV.js} +3 -3
  77. package/dist/{chunk-QVMOCJRV.js → chunk-B377OKUP.js} +2 -2
  78. package/dist/{chunk-IUKYFTGW.js → chunk-B3DR2JBZ.js} +140 -125
  79. package/dist/chunk-B3DR2JBZ.js.map +1 -0
  80. package/dist/{chunk-ZT6WPSII.js → chunk-BGHCSLE5.js} +2 -2
  81. package/dist/{chunk-YYOMGOHB.js → chunk-BOK6BN5M.js} +2 -2
  82. package/dist/{chunk-OH7QLI6W.js → chunk-BPPUH5JM.js} +5 -5
  83. package/dist/{chunk-EV76IZ37.js → chunk-BTI4C4MA.js} +2 -2
  84. package/dist/{chunk-O6ZSWHVR.js → chunk-C2KE5DMD.js} +4 -4
  85. package/dist/{chunk-47F6WWLQ.js → chunk-C73N66PR.js} +2 -2
  86. package/dist/{chunk-3XIWW4TB.js → chunk-CGJYL633.js} +2 -2
  87. package/dist/{chunk-WRT7GJ2D.js → chunk-CIWMTNHW.js} +4 -4
  88. package/dist/{chunk-O55EKIEC.js → chunk-D3ZKHLN2.js} +2 -2
  89. package/dist/{chunk-CD4BCCNP.js → chunk-DJ7WVEWX.js} +2 -2
  90. package/dist/{chunk-RO7RUBLD.js → chunk-EFL24KOI.js} +2 -2
  91. package/dist/{chunk-4CJTQHEG.js → chunk-ESLOLCD4.js} +3 -3
  92. package/dist/{chunk-Z4Q6USKJ.js → chunk-ETBVCRVL.js} +4 -4
  93. package/dist/{chunk-VILPVT4S.js → chunk-EZ47HOJ6.js} +4 -4
  94. package/dist/{chunk-EFYN5I7Z.js → chunk-F4QFU5IZ.js} +2 -2
  95. package/dist/{chunk-T6OZW2WR.js → chunk-FA7SLQ5X.js} +7 -1
  96. package/dist/chunk-FA7SLQ5X.js.map +1 -0
  97. package/dist/{chunk-SHUBTAY2.js → chunk-FMKILENU.js} +14 -14
  98. package/dist/{chunk-YLXETSAH.js → chunk-GCZJ7XRI.js} +2 -2
  99. package/dist/{chunk-J4MMPQ7Q.js → chunk-GQXOBKPL.js} +7 -9
  100. package/dist/{chunk-J4MMPQ7Q.js.map → chunk-GQXOBKPL.js.map} +1 -1
  101. package/dist/{chunk-UDKWFDV2.js → chunk-HLUHEMN4.js} +27 -3
  102. package/dist/chunk-HLUHEMN4.js.map +1 -0
  103. package/dist/{chunk-QFEDITXM.js → chunk-JNDMIAJ4.js} +2 -2
  104. package/dist/chunk-JTSSSR4L.js +359 -0
  105. package/dist/chunk-JTSSSR4L.js.map +1 -0
  106. package/dist/{chunk-5KBIOI4G.js → chunk-JVBAPAWZ.js} +217 -13
  107. package/dist/chunk-JVBAPAWZ.js.map +1 -0
  108. package/dist/{chunk-E5PPE4VA.js → chunk-K2VRKCPA.js} +2 -2
  109. package/dist/{chunk-MKRYQROF.js → chunk-LGEHAQHK.js} +4 -4
  110. package/dist/{chunk-7HTUYFR3.js → chunk-LLPMMMWG.js} +27 -10
  111. package/dist/chunk-LLPMMMWG.js.map +1 -0
  112. package/dist/{chunk-XYTQJD7F.js → chunk-LMJVP5CM.js} +2 -2
  113. package/dist/{chunk-JC36FPQ5.js → chunk-LPV72KRQ.js} +2 -2
  114. package/dist/{chunk-2LCRG2YV.js → chunk-M2XR6B6V.js} +2 -2
  115. package/dist/{chunk-GGRRF4PZ.js → chunk-MDPT6QFK.js} +1 -1
  116. package/dist/{chunk-GGRRF4PZ.js.map → chunk-MDPT6QFK.js.map} +1 -1
  117. package/dist/{chunk-VPQFK63H.js → chunk-MH632KPO.js} +2 -2
  118. package/dist/{chunk-EQ4U73UH.js → chunk-MLAMXQAW.js} +14 -2
  119. package/dist/chunk-MLAMXQAW.js.map +1 -0
  120. package/dist/{chunk-ZU5JDLOH.js → chunk-MMRTPH3J.js} +2 -2
  121. package/dist/{chunk-ZZ67UTQX.js → chunk-MUX7IL77.js} +2 -2
  122. package/dist/{chunk-RYWROSL5.js → chunk-NAQ4A5IX.js} +7 -7
  123. package/dist/{chunk-TVIVY7KU.js → chunk-NED7IR7B.js} +4 -4
  124. package/dist/{chunk-ADYP7HXE.js → chunk-NHVAX7MH.js} +3 -3
  125. package/dist/{chunk-TG3R2SID.js → chunk-NMGHGTVR.js} +5 -5
  126. package/dist/{chunk-YCNIGRRF.js → chunk-NS7U4ZYU.js} +13 -117
  127. package/dist/chunk-NS7U4ZYU.js.map +1 -0
  128. package/dist/{chunk-NGHDW6UU.js → chunk-NUQEREIP.js} +2 -2
  129. package/dist/{chunk-5IIQU4JZ.js → chunk-OB72KNMF.js} +4 -4
  130. package/dist/{chunk-7L3TODI7.js → chunk-OJXJWNFY.js} +2 -2
  131. package/dist/{chunk-66L5ZRJC.js → chunk-P3WRNWWM.js} +157 -4
  132. package/dist/chunk-P3WRNWWM.js.map +1 -0
  133. package/dist/{chunk-E6M225BJ.js → chunk-PC5DRBGD.js} +18 -8
  134. package/dist/chunk-PC5DRBGD.js.map +1 -0
  135. package/dist/{chunk-EURPSF4Y.js → chunk-PH5ZQM35.js} +2 -2
  136. package/dist/{chunk-BMWMTAQF.js → chunk-PRAUN6PN.js} +3 -3
  137. package/dist/{chunk-RWGRSKN5.js → chunk-PT4DZDJA.js} +2 -2
  138. package/dist/{chunk-7EPY3IQL.js → chunk-PZJQ46DH.js} +2 -2
  139. package/dist/{chunk-AH637HZ5.js → chunk-QDESY76F.js} +3 -3
  140. package/dist/{chunk-I6QGI65T.js → chunk-QRMG4HK4.js} +3 -3
  141. package/dist/{chunk-ZU3NJNO7.js → chunk-QSF5SJAM.js} +4 -4
  142. package/dist/{chunk-5IYOKDM4.js → chunk-R23JWJD3.js} +5 -5
  143. package/dist/{chunk-EWJZZDRG.js → chunk-R4BBGPI2.js} +219 -219
  144. package/dist/chunk-R4BBGPI2.js.map +1 -0
  145. package/dist/{chunk-LJQFJF4J.js → chunk-RM2YUFH6.js} +6 -6
  146. package/dist/{chunk-IPT2OY4B.js → chunk-RQFXZYTF.js} +35 -33
  147. package/dist/chunk-RQFXZYTF.js.map +1 -0
  148. package/dist/{chunk-AP6NCP3V.js → chunk-S3S72HRM.js} +8 -6
  149. package/dist/chunk-S3S72HRM.js.map +1 -0
  150. package/dist/{chunk-6QMWECO5.js → chunk-SGQPR5SX.js} +7 -7
  151. package/dist/{chunk-ZGFLIK5H.js → chunk-SPAKBUJY.js} +2 -2
  152. package/dist/{chunk-ER7XANP3.js → chunk-SQ3GEIEL.js} +4 -4
  153. package/dist/{chunk-5UCMYPVF.js → chunk-SVT5IA2H.js} +2 -2
  154. package/dist/{chunk-HVKUCT3W.js → chunk-T4KY6UYF.js} +5 -3
  155. package/dist/{chunk-HVKUCT3W.js.map → chunk-T4KY6UYF.js.map} +1 -1
  156. package/dist/{chunk-FRSHF6FU.js → chunk-TJ4F6H4H.js} +3 -3
  157. package/dist/{chunk-R6HMAIKM.js → chunk-TOSPNM4T.js} +2 -2
  158. package/dist/{chunk-NJJMVS5Y.js → chunk-TRQE3RYR.js} +5 -5
  159. package/dist/{chunk-RMXS4I66.js → chunk-TVDJEUV5.js} +2 -2
  160. package/dist/{chunk-PLCYKAWH.js → chunk-TYRWSE4B.js} +2 -2
  161. package/dist/{chunk-YS2GHSWN.js → chunk-UBEKET2V.js} +389 -39
  162. package/dist/chunk-UBEKET2V.js.map +1 -0
  163. package/dist/{chunk-IQWUACVG.js → chunk-UHMHJX5G.js} +3 -3
  164. package/dist/{chunk-YODUDA6R.js → chunk-UN4RVUG2.js} +22 -22
  165. package/dist/{chunk-KZSGBWOJ.js → chunk-V2KGDESV.js} +2 -2
  166. package/dist/{chunk-E6Z4FBX6.js → chunk-V2QSNFCT.js} +2 -2
  167. package/dist/{chunk-BCCG7VWM.js → chunk-V65H7MI6.js} +396 -13
  168. package/dist/chunk-V65H7MI6.js.map +1 -0
  169. package/dist/chunk-W54Z2MOP.js +4500 -0
  170. package/dist/chunk-W54Z2MOP.js.map +1 -0
  171. package/dist/{chunk-N74SGESS.js → chunk-WKSQTMU7.js} +2 -2
  172. package/dist/{chunk-RIZ5NUNN.js → chunk-WQ4XKIOX.js} +4 -4
  173. package/dist/{chunk-WWK6J6SE.js → chunk-WQURALGV.js} +4996 -2748
  174. package/dist/chunk-WQURALGV.js.map +1 -0
  175. package/dist/{chunk-QEYTRFR3.js → chunk-X26YOFGS.js} +2 -2
  176. package/dist/{chunk-ITHZFHST.js → chunk-X2BVB74H.js} +2 -2
  177. package/dist/{chunk-GNXGJBCA.js → chunk-XIYLWEXC.js} +2 -2
  178. package/dist/{chunk-IBJ6U753.js → chunk-XKZBZOKV.js} +4 -4
  179. package/dist/{chunk-7O2MC42R.js → chunk-XNRLRNQF.js} +2 -2
  180. package/dist/{chunk-65AUYLU3.js → chunk-XPXHQI6N.js} +2 -2
  181. package/dist/{chunk-JBCCWVU2.js → chunk-XRDYRWZI.js} +2 -2
  182. package/dist/chunk-XRWWCW4H.js +102 -0
  183. package/dist/chunk-XRWWCW4H.js.map +1 -0
  184. package/dist/chunk-YKJBSMMP.js +67137 -0
  185. package/dist/chunk-YKJBSMMP.js.map +1 -0
  186. package/dist/{chunk-2JSDPUKD.js → chunk-YMFPFXEX.js} +2 -2
  187. package/dist/{chunk-645WOU5I.js → chunk-ZDZJNXL6.js} +4 -4
  188. package/dist/{chunk-6TCXIRP5.js → chunk-ZKE4CO6B.js} +4 -4
  189. package/dist/{chunk-KEPXC4KN.js → chunk-ZSE774RV.js} +2 -2
  190. package/dist/cli.d.ts.map +1 -1
  191. package/dist/cli.js +305 -187
  192. package/dist/coding/export-okf-codegraph.js +29 -29
  193. package/dist/compounding/engine.js +23 -24
  194. package/dist/config.d.ts.map +1 -1
  195. package/dist/config.js +36 -37
  196. package/dist/connectors/codex-materialize-runner.js +20 -20
  197. package/dist/connectors/index.js +21 -21
  198. package/dist/connectors/live/framework.d.ts +7 -0
  199. package/dist/connectors/live/framework.d.ts.map +1 -1
  200. package/dist/connectors/live/google-drive.d.ts +17 -3
  201. package/dist/connectors/live/google-drive.d.ts.map +1 -1
  202. package/dist/consolidation-provenance-check.js +4 -4
  203. package/dist/consolidation-undo.js +5 -5
  204. package/dist/contradiction/index.js +7 -6
  205. package/dist/{contradiction-scan-P2MHYFVG.js → contradiction-scan-IBPYGQZF.js} +4 -3
  206. package/dist/convergence-refresh.js +22 -22
  207. package/dist/corpus-watermark.js +23 -23
  208. package/dist/deep-recall-http-glue.js +2 -2
  209. package/dist/deep-recall-policy-llm.js +4 -4
  210. package/dist/direct-answer-wiring.js +2 -2
  211. package/dist/embedding-fallback.js +1 -1
  212. package/dist/entity-retrieval.js +21 -21
  213. package/dist/eval-trajectory-store.js +2 -2
  214. package/dist/eval-trajectory.js +2 -2
  215. package/dist/event-order-recall.js +2 -2
  216. package/dist/explicit-capture.d.ts +3 -2
  217. package/dist/explicit-capture.d.ts.map +1 -1
  218. package/dist/explicit-capture.js +530 -6
  219. package/dist/explicit-cue-recall.js +2 -2
  220. package/dist/external-wiki-access.js +2 -283
  221. package/dist/extraction-faithfulness.js +4 -4
  222. package/dist/extraction-judge.js +5 -5
  223. package/dist/extraction-normalization.js +1 -1
  224. package/dist/extraction-quote-grounding.d.ts.map +1 -1
  225. package/dist/extraction-quote-grounding.js +1 -1
  226. package/dist/extraction-source-grounding-rules.js +2 -2
  227. package/dist/extraction-source-grounding.js +3 -3
  228. package/dist/extraction.js +43 -44
  229. package/dist/fallback-llm-codex-subscription.js +2 -2
  230. package/dist/fallback-llm.js +3 -3
  231. package/dist/{first-start-migration-QFI7B5SH.js → first-start-migration-FILJH3RO.js} +6 -5
  232. package/dist/{first-start-migration-QFI7B5SH.js.map → first-start-migration-FILJH3RO.js.map} +1 -1
  233. package/dist/focused-list-recall.js +2 -2
  234. package/dist/harmonic-retrieval.js +20 -20
  235. package/dist/index.js +776 -797
  236. package/dist/lcm/index.js +2 -2
  237. package/dist/live-connectors-runner.d.ts +2 -0
  238. package/dist/live-connectors-runner.d.ts.map +1 -1
  239. package/dist/live-connectors-runner.js +3 -4
  240. package/dist/local-llm-config.js +2 -2
  241. package/dist/local-llm-helpers.d.ts +4 -0
  242. package/dist/local-llm-helpers.d.ts.map +1 -1
  243. package/dist/local-llm-helpers.js +3 -1
  244. package/dist/local-llm.d.ts +4 -1
  245. package/dist/local-llm.d.ts.map +1 -1
  246. package/dist/local-llm.js +4 -4
  247. package/dist/location/index.js +27 -29
  248. package/dist/maintenance/memory-governance.js +20 -20
  249. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +20 -20
  250. package/dist/maintenance/rebuild-memory-projection-runner.js +22 -22
  251. package/dist/maintenance/rebuild-memory-projection.js +21 -21
  252. package/dist/memory-browse-operations.js +2 -283
  253. package/dist/memory-browse.js +8 -7
  254. package/dist/memory-controller.js +2 -2
  255. package/dist/memory-subject.js +2 -2
  256. package/dist/namespaces/migrate.js +21 -21
  257. package/dist/namespaces/search.js +5 -5
  258. package/dist/namespaces/storage.js +20 -20
  259. package/dist/offline-sync-changeset-generations.js +1 -1
  260. package/dist/offline-sync-embedding-generation.js +1 -1
  261. package/dist/offline-sync-impression-drain.js +6 -6
  262. package/dist/offline-sync-snapshot-stream.js +1 -1
  263. package/dist/offline-sync.js +1 -1
  264. package/dist/operator-doctor-corpus.js +24 -24
  265. package/dist/operator-toolkit.js +58 -61
  266. package/dist/orchestration/backlog-scheduler.js +279 -295
  267. package/dist/orchestration/backlog-scheduler.js.map +1 -1
  268. package/dist/orchestration/buffer-drain-runner.js +279 -295
  269. package/dist/orchestration/extraction-run.d.ts +4 -0
  270. package/dist/orchestration/extraction-run.d.ts.map +1 -1
  271. package/dist/orchestration/fact-dedup-window.d.ts +1 -1
  272. package/dist/orchestration/fact-dedup-window.d.ts.map +1 -1
  273. package/dist/orchestration/maintenance.js +39 -42
  274. package/dist/orchestrator.d.ts +11 -11
  275. package/dist/orchestrator.d.ts.map +1 -1
  276. package/dist/orchestrator.js +291 -308
  277. package/dist/page-versioning.js +3 -3
  278. package/dist/qmd-daemon-session.js +2 -2
  279. package/dist/qmd.js +3 -3
  280. package/dist/recall-explain-renderer.js +3 -3
  281. package/dist/recall-navigate-access.js +2 -2
  282. package/dist/recall-navigate-disclosure.js +2 -2
  283. package/dist/recall-navigate.js +2 -2
  284. package/dist/recall-navigation-operations.js +2 -283
  285. package/dist/recall-navigation.js +334 -61
  286. package/dist/recall-planner-llm.js +3 -3
  287. package/dist/recall-state-view-admission.js +6 -6
  288. package/dist/recall-why-service.js +10 -9
  289. package/dist/recall-why.js +4 -3
  290. package/dist/recall-xray-cli.js +4 -4
  291. package/dist/recall-xray-renderer.js +3 -3
  292. package/dist/recall-xray.js +2 -2
  293. package/dist/reconcile/manifest.js +3 -3
  294. package/dist/{resolution-N7H3F2E4.js → resolution-OVVIF7ZY.js} +8 -7
  295. package/dist/response-guidance-recall.js +2 -2
  296. package/dist/resume-bundles.js +40 -41
  297. package/dist/salvage-envelope.js +4 -4
  298. package/dist/search/factory.js +4 -4
  299. package/dist/search/index.js +4 -4
  300. package/dist/semantic-consolidation.js +23 -23
  301. package/dist/semantic-rule-promotion.js +20 -20
  302. package/dist/semantic-rule-verifier.js +20 -20
  303. package/dist/shared-context/manager.js +2 -3
  304. package/dist/source-agent-qualifier.js +32 -33
  305. package/dist/standup/build.js +20 -20
  306. package/dist/{state-store-I5HLZTZT.js → state-store-EEAX2MBS.js} +2 -2
  307. package/dist/storage/content-hash-index.d.ts +10 -0
  308. package/dist/storage/content-hash-index.d.ts.map +1 -1
  309. package/dist/storage.js +19 -19
  310. package/dist/subject-config.js +3 -3
  311. package/dist/summarizer.d.ts +4 -1
  312. package/dist/summarizer.d.ts.map +1 -1
  313. package/dist/summarizer.js +6 -6
  314. package/dist/support-passport/index.js +53 -297
  315. package/dist/targeted-fact-recall.js +2 -2
  316. package/dist/tier-routing.js +3 -2
  317. package/dist/{tier-stats-FQGQSFET.js → tier-stats-FXEUJN73.js} +6 -5
  318. package/dist/{tier-stats-FQGQSFET.js.map → tier-stats-FXEUJN73.js.map} +1 -1
  319. package/dist/transcript.js +2 -2
  320. package/dist/transfer/capsule-import.js +4 -4
  321. package/dist/transfer/export-okf.js +20 -20
  322. package/dist/types.d.ts +10 -10
  323. package/dist/types.d.ts.map +1 -1
  324. package/dist/types.js +1 -1
  325. package/dist/verified-recall.js +20 -20
  326. package/dist/wearables/memory-gen.d.ts +5 -1
  327. package/dist/wearables/memory-gen.d.ts.map +1 -1
  328. package/dist/wearables/service.d.ts.map +1 -1
  329. package/dist/who-knows-cli.js +21 -21
  330. package/dist/who-knows.js +20 -20
  331. package/dist/write-envelope.js +3 -3
  332. package/package.json +2 -2
  333. package/src/access-boundary.ts +5 -1
  334. package/src/access-category-alias.test.ts +5 -0
  335. package/src/access-mcp-frames.test.ts +60 -5
  336. package/src/access-mcp-frames.ts +72 -18
  337. package/src/access-mcp.test.ts +66 -2
  338. package/src/access-mcp.ts +19 -13
  339. package/src/access-service-coding-write.test.ts +7 -0
  340. package/src/access-service.ts +3 -0
  341. package/src/activity/journal-extract-storage.test.ts +31 -0
  342. package/src/activity/journal-extract.test.ts +1 -0
  343. package/src/activity/journal-extract.ts +24 -3
  344. package/src/cli.ts +1 -2
  345. package/src/config.test.ts +17 -0
  346. package/src/config.ts +25 -7
  347. package/src/connectors/live/framework.ts +8 -0
  348. package/src/connectors/live/google-drive.test.ts +74 -0
  349. package/src/connectors/live/google-drive.ts +138 -11
  350. package/src/explicit-capture.test.ts +109 -17
  351. package/src/explicit-capture.ts +90 -37
  352. package/src/extraction-quote-grounding.test.ts +20 -0
  353. package/src/extraction-quote-grounding.ts +21 -11
  354. package/src/fact-dedup-window.test.ts +37 -0
  355. package/src/live-connectors-runner.ts +3 -0
  356. package/src/live-connectors-secretref.test.ts +126 -0
  357. package/src/local-llm-helpers.ts +12 -0
  358. package/src/local-llm-shutdown.test.ts +194 -0
  359. package/src/local-llm.ts +32 -30
  360. package/src/orchestration/extraction-run.ts +12 -3
  361. package/src/orchestration/fact-dedup-window.ts +5 -1
  362. package/src/orchestrator-connector-dedup.test.ts +9 -5
  363. package/src/orchestrator.ts +52 -55
  364. package/src/storage/content-hash-index.ts +27 -2
  365. package/src/storage-fact-hash-publish-failure.test.ts +87 -0
  366. package/src/summarizer-shutdown.test.ts +195 -0
  367. package/src/summarizer.ts +15 -2
  368. package/src/types.ts +10 -10
  369. package/src/wearables/memory-gen.test.ts +20 -0
  370. package/src/wearables/memory-gen.ts +14 -7
  371. package/src/wearables/service.ts +14 -1
  372. package/src/wearables/storage-io.test.ts +25 -0
  373. package/dist/chunk-27XYV2XL.js +0 -43
  374. package/dist/chunk-27XYV2XL.js.map +0 -1
  375. package/dist/chunk-5KBIOI4G.js.map +0 -1
  376. package/dist/chunk-66L5ZRJC.js.map +0 -1
  377. package/dist/chunk-7HTUYFR3.js.map +0 -1
  378. package/dist/chunk-AOFEMUHG.js.map +0 -1
  379. package/dist/chunk-AP6NCP3V.js.map +0 -1
  380. package/dist/chunk-APYY5CX3.js +0 -335
  381. package/dist/chunk-APYY5CX3.js.map +0 -1
  382. package/dist/chunk-ATPWMT2E.js +0 -223
  383. package/dist/chunk-ATPWMT2E.js.map +0 -1
  384. package/dist/chunk-BCCG7VWM.js.map +0 -1
  385. package/dist/chunk-E6M225BJ.js.map +0 -1
  386. package/dist/chunk-EQ4U73UH.js.map +0 -1
  387. package/dist/chunk-ETSJD5IV.js +0 -361
  388. package/dist/chunk-ETSJD5IV.js.map +0 -1
  389. package/dist/chunk-EWJZZDRG.js.map +0 -1
  390. package/dist/chunk-FHGWKODN.js +0 -2300
  391. package/dist/chunk-FHGWKODN.js.map +0 -1
  392. package/dist/chunk-GRTKLWYX.js +0 -621
  393. package/dist/chunk-GRTKLWYX.js.map +0 -1
  394. package/dist/chunk-IGLJNHOX.js +0 -62
  395. package/dist/chunk-IGLJNHOX.js.map +0 -1
  396. package/dist/chunk-IPT2OY4B.js.map +0 -1
  397. package/dist/chunk-IUKYFTGW.js.map +0 -1
  398. package/dist/chunk-KUIRDD74.js +0 -3991
  399. package/dist/chunk-KUIRDD74.js.map +0 -1
  400. package/dist/chunk-MVMRUGBH.js +0 -1919
  401. package/dist/chunk-MVMRUGBH.js.map +0 -1
  402. package/dist/chunk-ODL4ZTNI.js +0 -3644
  403. package/dist/chunk-ODL4ZTNI.js.map +0 -1
  404. package/dist/chunk-OGXXGHW6.js +0 -223
  405. package/dist/chunk-OGXXGHW6.js.map +0 -1
  406. package/dist/chunk-P5VZSSYL.js.map +0 -1
  407. package/dist/chunk-PPCLZ4JU.js +0 -28
  408. package/dist/chunk-PPCLZ4JU.js.map +0 -1
  409. package/dist/chunk-PUEO37QG.js.map +0 -1
  410. package/dist/chunk-RRTVGD3J.js +0 -792
  411. package/dist/chunk-RRTVGD3J.js.map +0 -1
  412. package/dist/chunk-STSLB4HT.js +0 -18793
  413. package/dist/chunk-STSLB4HT.js.map +0 -1
  414. package/dist/chunk-T6OZW2WR.js.map +0 -1
  415. package/dist/chunk-TRBGGJKZ.js +0 -32218
  416. package/dist/chunk-TRBGGJKZ.js.map +0 -1
  417. package/dist/chunk-UDKWFDV2.js.map +0 -1
  418. package/dist/chunk-V4XE263I.js.map +0 -1
  419. package/dist/chunk-V7IZKJI3.js +0 -22
  420. package/dist/chunk-V7IZKJI3.js.map +0 -1
  421. package/dist/chunk-VMVVSZTD.js +0 -61
  422. package/dist/chunk-VMVVSZTD.js.map +0 -1
  423. package/dist/chunk-VNUOAXWP.js +0 -203
  424. package/dist/chunk-VNUOAXWP.js.map +0 -1
  425. package/dist/chunk-WLBEZZK5.js +0 -729
  426. package/dist/chunk-WLBEZZK5.js.map +0 -1
  427. package/dist/chunk-WUUES6CU.js +0 -25
  428. package/dist/chunk-WUUES6CU.js.map +0 -1
  429. package/dist/chunk-WWK6J6SE.js.map +0 -1
  430. package/dist/chunk-XICOH5HT.js +0 -346
  431. package/dist/chunk-XICOH5HT.js.map +0 -1
  432. package/dist/chunk-YCNIGRRF.js.map +0 -1
  433. package/dist/chunk-YS2GHSWN.js.map +0 -1
  434. package/dist/chunk-ZCLEYJPB.js +0 -10143
  435. package/dist/chunk-ZCLEYJPB.js.map +0 -1
  436. /package/dist/{capsule-merge-2IIXFXN5.js.map → capsule-merge-6IDAYTKG.js.map} +0 -0
  437. /package/dist/{chunk-QL7RHYK6.js.map → chunk-2LMA22UU.js.map} +0 -0
  438. /package/dist/{chunk-RGUUBAT5.js.map → chunk-2WCLTWV2.js.map} +0 -0
  439. /package/dist/{chunk-RSK2WIEM.js.map → chunk-2YODOG2O.js.map} +0 -0
  440. /package/dist/{chunk-WYG5UNDY.js.map → chunk-3AUDELZL.js.map} +0 -0
  441. /package/dist/{chunk-OFVCFKDH.js.map → chunk-3CYOCE6U.js.map} +0 -0
  442. /package/dist/{chunk-6HM6HARE.js.map → chunk-3FBAEPCU.js.map} +0 -0
  443. /package/dist/{chunk-PIITB2YZ.js.map → chunk-3ZS3NUEI.js.map} +0 -0
  444. /package/dist/{chunk-ANZZLRUX.js.map → chunk-4IVRQMZW.js.map} +0 -0
  445. /package/dist/{chunk-63E37JCN.js.map → chunk-4RAJT5L2.js.map} +0 -0
  446. /package/dist/{chunk-45VUHDV2.js.map → chunk-5CO5G4MN.js.map} +0 -0
  447. /package/dist/{chunk-3UMDRGFS.js.map → chunk-65HWAQ4F.js.map} +0 -0
  448. /package/dist/{chunk-T67LUYCR.js.map → chunk-77NTFICT.js.map} +0 -0
  449. /package/dist/{chunk-UE6RRXMF.js.map → chunk-A4F7OIC5.js.map} +0 -0
  450. /package/dist/{chunk-63O7LVMN.js.map → chunk-B33YWUJV.js.map} +0 -0
  451. /package/dist/{chunk-QVMOCJRV.js.map → chunk-B377OKUP.js.map} +0 -0
  452. /package/dist/{chunk-ZT6WPSII.js.map → chunk-BGHCSLE5.js.map} +0 -0
  453. /package/dist/{chunk-YYOMGOHB.js.map → chunk-BOK6BN5M.js.map} +0 -0
  454. /package/dist/{chunk-OH7QLI6W.js.map → chunk-BPPUH5JM.js.map} +0 -0
  455. /package/dist/{chunk-EV76IZ37.js.map → chunk-BTI4C4MA.js.map} +0 -0
  456. /package/dist/{chunk-O6ZSWHVR.js.map → chunk-C2KE5DMD.js.map} +0 -0
  457. /package/dist/{chunk-47F6WWLQ.js.map → chunk-C73N66PR.js.map} +0 -0
  458. /package/dist/{chunk-3XIWW4TB.js.map → chunk-CGJYL633.js.map} +0 -0
  459. /package/dist/{chunk-WRT7GJ2D.js.map → chunk-CIWMTNHW.js.map} +0 -0
  460. /package/dist/{chunk-O55EKIEC.js.map → chunk-D3ZKHLN2.js.map} +0 -0
  461. /package/dist/{chunk-CD4BCCNP.js.map → chunk-DJ7WVEWX.js.map} +0 -0
  462. /package/dist/{chunk-RO7RUBLD.js.map → chunk-EFL24KOI.js.map} +0 -0
  463. /package/dist/{chunk-4CJTQHEG.js.map → chunk-ESLOLCD4.js.map} +0 -0
  464. /package/dist/{chunk-Z4Q6USKJ.js.map → chunk-ETBVCRVL.js.map} +0 -0
  465. /package/dist/{chunk-VILPVT4S.js.map → chunk-EZ47HOJ6.js.map} +0 -0
  466. /package/dist/{chunk-EFYN5I7Z.js.map → chunk-F4QFU5IZ.js.map} +0 -0
  467. /package/dist/{chunk-SHUBTAY2.js.map → chunk-FMKILENU.js.map} +0 -0
  468. /package/dist/{chunk-YLXETSAH.js.map → chunk-GCZJ7XRI.js.map} +0 -0
  469. /package/dist/{chunk-QFEDITXM.js.map → chunk-JNDMIAJ4.js.map} +0 -0
  470. /package/dist/{chunk-E5PPE4VA.js.map → chunk-K2VRKCPA.js.map} +0 -0
  471. /package/dist/{chunk-MKRYQROF.js.map → chunk-LGEHAQHK.js.map} +0 -0
  472. /package/dist/{chunk-XYTQJD7F.js.map → chunk-LMJVP5CM.js.map} +0 -0
  473. /package/dist/{chunk-JC36FPQ5.js.map → chunk-LPV72KRQ.js.map} +0 -0
  474. /package/dist/{chunk-2LCRG2YV.js.map → chunk-M2XR6B6V.js.map} +0 -0
  475. /package/dist/{chunk-VPQFK63H.js.map → chunk-MH632KPO.js.map} +0 -0
  476. /package/dist/{chunk-ZU5JDLOH.js.map → chunk-MMRTPH3J.js.map} +0 -0
  477. /package/dist/{chunk-ZZ67UTQX.js.map → chunk-MUX7IL77.js.map} +0 -0
  478. /package/dist/{chunk-RYWROSL5.js.map → chunk-NAQ4A5IX.js.map} +0 -0
  479. /package/dist/{chunk-TVIVY7KU.js.map → chunk-NED7IR7B.js.map} +0 -0
  480. /package/dist/{chunk-ADYP7HXE.js.map → chunk-NHVAX7MH.js.map} +0 -0
  481. /package/dist/{chunk-TG3R2SID.js.map → chunk-NMGHGTVR.js.map} +0 -0
  482. /package/dist/{chunk-NGHDW6UU.js.map → chunk-NUQEREIP.js.map} +0 -0
  483. /package/dist/{chunk-5IIQU4JZ.js.map → chunk-OB72KNMF.js.map} +0 -0
  484. /package/dist/{chunk-7L3TODI7.js.map → chunk-OJXJWNFY.js.map} +0 -0
  485. /package/dist/{chunk-EURPSF4Y.js.map → chunk-PH5ZQM35.js.map} +0 -0
  486. /package/dist/{chunk-BMWMTAQF.js.map → chunk-PRAUN6PN.js.map} +0 -0
  487. /package/dist/{chunk-RWGRSKN5.js.map → chunk-PT4DZDJA.js.map} +0 -0
  488. /package/dist/{chunk-7EPY3IQL.js.map → chunk-PZJQ46DH.js.map} +0 -0
  489. /package/dist/{chunk-AH637HZ5.js.map → chunk-QDESY76F.js.map} +0 -0
  490. /package/dist/{chunk-I6QGI65T.js.map → chunk-QRMG4HK4.js.map} +0 -0
  491. /package/dist/{chunk-ZU3NJNO7.js.map → chunk-QSF5SJAM.js.map} +0 -0
  492. /package/dist/{chunk-5IYOKDM4.js.map → chunk-R23JWJD3.js.map} +0 -0
  493. /package/dist/{chunk-LJQFJF4J.js.map → chunk-RM2YUFH6.js.map} +0 -0
  494. /package/dist/{chunk-6QMWECO5.js.map → chunk-SGQPR5SX.js.map} +0 -0
  495. /package/dist/{chunk-ZGFLIK5H.js.map → chunk-SPAKBUJY.js.map} +0 -0
  496. /package/dist/{chunk-ER7XANP3.js.map → chunk-SQ3GEIEL.js.map} +0 -0
  497. /package/dist/{chunk-5UCMYPVF.js.map → chunk-SVT5IA2H.js.map} +0 -0
  498. /package/dist/{chunk-FRSHF6FU.js.map → chunk-TJ4F6H4H.js.map} +0 -0
  499. /package/dist/{chunk-R6HMAIKM.js.map → chunk-TOSPNM4T.js.map} +0 -0
  500. /package/dist/{chunk-NJJMVS5Y.js.map → chunk-TRQE3RYR.js.map} +0 -0
  501. /package/dist/{chunk-RMXS4I66.js.map → chunk-TVDJEUV5.js.map} +0 -0
  502. /package/dist/{chunk-PLCYKAWH.js.map → chunk-TYRWSE4B.js.map} +0 -0
  503. /package/dist/{chunk-IQWUACVG.js.map → chunk-UHMHJX5G.js.map} +0 -0
  504. /package/dist/{chunk-YODUDA6R.js.map → chunk-UN4RVUG2.js.map} +0 -0
  505. /package/dist/{chunk-KZSGBWOJ.js.map → chunk-V2KGDESV.js.map} +0 -0
  506. /package/dist/{chunk-E6Z4FBX6.js.map → chunk-V2QSNFCT.js.map} +0 -0
  507. /package/dist/{chunk-N74SGESS.js.map → chunk-WKSQTMU7.js.map} +0 -0
  508. /package/dist/{chunk-RIZ5NUNN.js.map → chunk-WQ4XKIOX.js.map} +0 -0
  509. /package/dist/{chunk-QEYTRFR3.js.map → chunk-X26YOFGS.js.map} +0 -0
  510. /package/dist/{chunk-ITHZFHST.js.map → chunk-X2BVB74H.js.map} +0 -0
  511. /package/dist/{chunk-GNXGJBCA.js.map → chunk-XIYLWEXC.js.map} +0 -0
  512. /package/dist/{chunk-IBJ6U753.js.map → chunk-XKZBZOKV.js.map} +0 -0
  513. /package/dist/{chunk-7O2MC42R.js.map → chunk-XNRLRNQF.js.map} +0 -0
  514. /package/dist/{chunk-65AUYLU3.js.map → chunk-XPXHQI6N.js.map} +0 -0
  515. /package/dist/{chunk-JBCCWVU2.js.map → chunk-XRDYRWZI.js.map} +0 -0
  516. /package/dist/{chunk-2JSDPUKD.js.map → chunk-YMFPFXEX.js.map} +0 -0
  517. /package/dist/{chunk-645WOU5I.js.map → chunk-ZDZJNXL6.js.map} +0 -0
  518. /package/dist/{chunk-6TCXIRP5.js.map → chunk-ZKE4CO6B.js.map} +0 -0
  519. /package/dist/{chunk-KEPXC4KN.js.map → chunk-ZSE774RV.js.map} +0 -0
  520. /package/dist/{contradiction-scan-P2MHYFVG.js.map → contradiction-scan-IBPYGQZF.js.map} +0 -0
  521. /package/dist/{resolution-N7H3F2E4.js.map → resolution-OVVIF7ZY.js.map} +0 -0
  522. /package/dist/{state-store-I5HLZTZT.js.map → state-store-EEAX2MBS.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/wearables/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/wearables/service.ts"],"names":[],"mappings":"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"}
@@ -4,16 +4,16 @@ import {
4
4
  renderWhoKnows,
5
5
  renderWhoKnowsJson,
6
6
  renderWhoKnowsText
7
- } from "./chunk-EV76IZ37.js";
8
- import "./chunk-JBCCWVU2.js";
9
- import "./chunk-WWK6J6SE.js";
7
+ } from "./chunk-BTI4C4MA.js";
8
+ import "./chunk-XRDYRWZI.js";
9
+ import "./chunk-WQURALGV.js";
10
10
  import "./chunk-QGVCFVX6.js";
11
11
  import "./chunk-UHVXE24Y.js";
12
12
  import "./chunk-IGOW4TJE.js";
13
13
  import "./chunk-NT7F7WJQ.js";
14
14
  import "./chunk-G6OFEGUR.js";
15
- import "./chunk-UE6RRXMF.js";
16
- import "./chunk-65AUYLU3.js";
15
+ import "./chunk-A4F7OIC5.js";
16
+ import "./chunk-XPXHQI6N.js";
17
17
  import "./chunk-DOJBV6WR.js";
18
18
  import "./chunk-PFUXPTBT.js";
19
19
  import "./chunk-CYEPCZN5.js";
@@ -34,9 +34,8 @@ import "./chunk-S2HLHAZ4.js";
34
34
  import "./chunk-DM2T26WE.js";
35
35
  import "./chunk-LDXUBPMO.js";
36
36
  import "./chunk-FF6N7BXC.js";
37
- import "./chunk-QFEDITXM.js";
37
+ import "./chunk-JNDMIAJ4.js";
38
38
  import "./chunk-AAD2ZS6P.js";
39
- import "./chunk-FHGWKODN.js";
40
39
  import "./chunk-ZIKENA2C.js";
41
40
  import "./chunk-YXZG5TVN.js";
42
41
  import "./chunk-3OUGSOJP.js";
@@ -46,30 +45,30 @@ import "./chunk-3WU7XOFN.js";
46
45
  import "./chunk-P4GUQSK3.js";
47
46
  import "./chunk-4LZ7SVKM.js";
48
47
  import "./chunk-YHTG64XV.js";
49
- import "./chunk-ER7XANP3.js";
50
- import "./chunk-M5GVCJSJ.js";
51
- import "./chunk-RBOJCG4T.js";
48
+ import "./chunk-SQ3GEIEL.js";
52
49
  import "./chunk-IAYUTGF2.js";
53
50
  import "./chunk-5WITETWU.js";
51
+ import "./chunk-M5GVCJSJ.js";
52
+ import "./chunk-RBOJCG4T.js";
54
53
  import "./chunk-6CIAGZ6X.js";
55
54
  import "./chunk-7CT3AI52.js";
56
55
  import "./chunk-G7D6GZ5J.js";
57
56
  import "./chunk-7VLBZKNB.js";
58
57
  import "./chunk-Y33KJ556.js";
59
- import "./chunk-5IYOKDM4.js";
58
+ import "./chunk-R23JWJD3.js";
60
59
  import "./chunk-NWA6IXR3.js";
61
60
  import "./chunk-OR42ZI54.js";
62
61
  import "./chunk-IUM3VSHI.js";
63
- import "./chunk-VILPVT4S.js";
62
+ import "./chunk-EZ47HOJ6.js";
64
63
  import "./chunk-AF2XMJKD.js";
65
64
  import "./chunk-23G5P7TA.js";
66
65
  import "./chunk-C64XATK7.js";
67
66
  import "./chunk-42JKGUFJ.js";
68
- import "./chunk-ZU5JDLOH.js";
67
+ import "./chunk-MMRTPH3J.js";
69
68
  import "./chunk-I55KAVET.js";
70
69
  import "./chunk-L2EXJQJP.js";
71
70
  import "./chunk-45GF7Y3V.js";
72
- import "./chunk-ZU3NJNO7.js";
71
+ import "./chunk-QSF5SJAM.js";
73
72
  import "./chunk-E2AWJ7KQ.js";
74
73
  import "./chunk-UXXK523X.js";
75
74
  import "./chunk-YCVB7X56.js";
@@ -85,18 +84,19 @@ import "./chunk-7RJUVTVF.js";
85
84
  import "./chunk-AL3UYZ5N.js";
86
85
  import "./chunk-RL6NEVXT.js";
87
86
  import "./chunk-YET735EZ.js";
88
- import "./chunk-V4XE263I.js";
87
+ import "./chunk-43AA5FVD.js";
89
88
  import "./chunk-YBA52OKG.js";
90
- import "./chunk-YCNIGRRF.js";
89
+ import "./chunk-NS7U4ZYU.js";
90
+ import "./chunk-AHA5VQGP.js";
91
91
  import "./chunk-VUFL7X3H.js";
92
92
  import "./chunk-C5LWPYS3.js";
93
- import "./chunk-QEYTRFR3.js";
93
+ import "./chunk-X26YOFGS.js";
94
94
  import "./chunk-BT7NVCML.js";
95
- import "./chunk-R6HMAIKM.js";
95
+ import "./chunk-TOSPNM4T.js";
96
96
  import "./chunk-BJMBJZ2Y.js";
97
97
  import "./chunk-UKJAGEXH.js";
98
98
  import "./chunk-FP2373TW.js";
99
- import "./chunk-UDKWFDV2.js";
99
+ import "./chunk-HLUHEMN4.js";
100
100
  import "./chunk-5FVVY2EB.js";
101
101
  import "./chunk-BTNNL7ZW.js";
102
102
  import "./chunk-EBV6VXKF.js";
@@ -106,11 +106,11 @@ import "./chunk-JAKIDQB2.js";
106
106
  import "./chunk-P7FMDTKL.js";
107
107
  import "./chunk-X4OZMANG.js";
108
108
  import "./chunk-ZEFVK7XC.js";
109
+ import "./chunk-R2MBW2S4.js";
110
+ import "./chunk-QUIRIG2P.js";
109
111
  import "./chunk-6KH5NLQS.js";
110
112
  import "./chunk-P2QRMMVQ.js";
111
113
  import "./chunk-CJCTKL6Y.js";
112
- import "./chunk-R2MBW2S4.js";
113
- import "./chunk-QUIRIG2P.js";
114
114
  import "./chunk-LDPPTPO5.js";
115
115
  import "./chunk-EYGOM6AI.js";
116
116
  import "./chunk-A6XUJE5D.js";
package/dist/who-knows.js CHANGED
@@ -9,15 +9,15 @@ import {
9
9
  loadWhoKnowsEntities,
10
10
  tokenizeTopic,
11
11
  validateWhoKnowsInput
12
- } from "./chunk-JBCCWVU2.js";
13
- import "./chunk-WWK6J6SE.js";
12
+ } from "./chunk-XRDYRWZI.js";
13
+ import "./chunk-WQURALGV.js";
14
14
  import "./chunk-QGVCFVX6.js";
15
15
  import "./chunk-UHVXE24Y.js";
16
16
  import "./chunk-IGOW4TJE.js";
17
17
  import "./chunk-NT7F7WJQ.js";
18
18
  import "./chunk-G6OFEGUR.js";
19
- import "./chunk-UE6RRXMF.js";
20
- import "./chunk-65AUYLU3.js";
19
+ import "./chunk-A4F7OIC5.js";
20
+ import "./chunk-XPXHQI6N.js";
21
21
  import "./chunk-DOJBV6WR.js";
22
22
  import "./chunk-PFUXPTBT.js";
23
23
  import "./chunk-CYEPCZN5.js";
@@ -38,9 +38,8 @@ import "./chunk-S2HLHAZ4.js";
38
38
  import "./chunk-DM2T26WE.js";
39
39
  import "./chunk-LDXUBPMO.js";
40
40
  import "./chunk-FF6N7BXC.js";
41
- import "./chunk-QFEDITXM.js";
41
+ import "./chunk-JNDMIAJ4.js";
42
42
  import "./chunk-AAD2ZS6P.js";
43
- import "./chunk-FHGWKODN.js";
44
43
  import "./chunk-ZIKENA2C.js";
45
44
  import "./chunk-YXZG5TVN.js";
46
45
  import "./chunk-3OUGSOJP.js";
@@ -50,30 +49,30 @@ import "./chunk-3WU7XOFN.js";
50
49
  import "./chunk-P4GUQSK3.js";
51
50
  import "./chunk-4LZ7SVKM.js";
52
51
  import "./chunk-YHTG64XV.js";
53
- import "./chunk-ER7XANP3.js";
54
- import "./chunk-M5GVCJSJ.js";
55
- import "./chunk-RBOJCG4T.js";
52
+ import "./chunk-SQ3GEIEL.js";
56
53
  import "./chunk-IAYUTGF2.js";
57
54
  import "./chunk-5WITETWU.js";
55
+ import "./chunk-M5GVCJSJ.js";
56
+ import "./chunk-RBOJCG4T.js";
58
57
  import "./chunk-6CIAGZ6X.js";
59
58
  import "./chunk-7CT3AI52.js";
60
59
  import "./chunk-G7D6GZ5J.js";
61
60
  import "./chunk-7VLBZKNB.js";
62
61
  import "./chunk-Y33KJ556.js";
63
- import "./chunk-5IYOKDM4.js";
62
+ import "./chunk-R23JWJD3.js";
64
63
  import "./chunk-NWA6IXR3.js";
65
64
  import "./chunk-OR42ZI54.js";
66
65
  import "./chunk-IUM3VSHI.js";
67
- import "./chunk-VILPVT4S.js";
66
+ import "./chunk-EZ47HOJ6.js";
68
67
  import "./chunk-AF2XMJKD.js";
69
68
  import "./chunk-23G5P7TA.js";
70
69
  import "./chunk-C64XATK7.js";
71
70
  import "./chunk-42JKGUFJ.js";
72
- import "./chunk-ZU5JDLOH.js";
71
+ import "./chunk-MMRTPH3J.js";
73
72
  import "./chunk-I55KAVET.js";
74
73
  import "./chunk-L2EXJQJP.js";
75
74
  import "./chunk-45GF7Y3V.js";
76
- import "./chunk-ZU3NJNO7.js";
75
+ import "./chunk-QSF5SJAM.js";
77
76
  import "./chunk-E2AWJ7KQ.js";
78
77
  import "./chunk-UXXK523X.js";
79
78
  import "./chunk-YCVB7X56.js";
@@ -89,18 +88,19 @@ import "./chunk-7RJUVTVF.js";
89
88
  import "./chunk-AL3UYZ5N.js";
90
89
  import "./chunk-RL6NEVXT.js";
91
90
  import "./chunk-YET735EZ.js";
92
- import "./chunk-V4XE263I.js";
91
+ import "./chunk-43AA5FVD.js";
93
92
  import "./chunk-YBA52OKG.js";
94
- import "./chunk-YCNIGRRF.js";
93
+ import "./chunk-NS7U4ZYU.js";
94
+ import "./chunk-AHA5VQGP.js";
95
95
  import "./chunk-VUFL7X3H.js";
96
96
  import "./chunk-C5LWPYS3.js";
97
- import "./chunk-QEYTRFR3.js";
97
+ import "./chunk-X26YOFGS.js";
98
98
  import "./chunk-BT7NVCML.js";
99
- import "./chunk-R6HMAIKM.js";
99
+ import "./chunk-TOSPNM4T.js";
100
100
  import "./chunk-BJMBJZ2Y.js";
101
101
  import "./chunk-UKJAGEXH.js";
102
102
  import "./chunk-FP2373TW.js";
103
- import "./chunk-UDKWFDV2.js";
103
+ import "./chunk-HLUHEMN4.js";
104
104
  import "./chunk-5FVVY2EB.js";
105
105
  import "./chunk-BTNNL7ZW.js";
106
106
  import "./chunk-EBV6VXKF.js";
@@ -110,11 +110,11 @@ import "./chunk-JAKIDQB2.js";
110
110
  import "./chunk-P7FMDTKL.js";
111
111
  import "./chunk-X4OZMANG.js";
112
112
  import "./chunk-ZEFVK7XC.js";
113
+ import "./chunk-R2MBW2S4.js";
114
+ import "./chunk-QUIRIG2P.js";
113
115
  import "./chunk-6KH5NLQS.js";
114
116
  import "./chunk-P2QRMMVQ.js";
115
117
  import "./chunk-CJCTKL6Y.js";
116
- import "./chunk-R2MBW2S4.js";
117
- import "./chunk-QUIRIG2P.js";
118
118
  import "./chunk-LDPPTPO5.js";
119
119
  import "./chunk-EYGOM6AI.js";
120
120
  import "./chunk-A6XUJE5D.js";
@@ -12,10 +12,10 @@ import {
12
12
  isMemoryCategory,
13
13
  isSealedMemoryEnvelope,
14
14
  sealedWriteToLegacyArgs
15
- } from "./chunk-QEYTRFR3.js";
15
+ } from "./chunk-X26YOFGS.js";
16
16
  import "./chunk-BT7NVCML.js";
17
- import "./chunk-R6HMAIKM.js";
18
- import "./chunk-UDKWFDV2.js";
17
+ import "./chunk-TOSPNM4T.js";
18
+ import "./chunk-HLUHEMN4.js";
19
19
  import "./chunk-5FVVY2EB.js";
20
20
  import "./chunk-EBV6VXKF.js";
21
21
  import "./chunk-JDSVLVCG.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "10.0.91",
3
+ "version": "10.0.93",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3386,7 +3386,7 @@
3386
3386
  "core"
3387
3387
  ],
3388
3388
  "peerDependencies": {
3389
- "@remnic/coding-graph": "^10.0.91"
3389
+ "@remnic/coding-graph": "^10.0.93"
3390
3390
  },
3391
3391
  "peerDependenciesMeta": {
3392
3392
  "@remnic/coding-graph": {
@@ -16,7 +16,11 @@
16
16
  */
17
17
 
18
18
  import { z } from "zod";
19
- import { EngramAccessInputError, type EngramAccessService } from "./access-service.js";
19
+ // The input error lives in the leaf module; importing it from access-service
20
+ // here (a re-export) drags the whole service hub into this module's init and
21
+ // leaves `registry` TDZ-uninitialized when the cycle re-enters (#3354).
22
+ import { EngramAccessInputError } from "./access-errors.js";
23
+ import type { EngramAccessService } from "./access-service.js";
20
24
  import {
21
25
  assertNamespaceAllowed,
22
26
  assertOperationAuthorizationAllowed,
@@ -309,6 +309,8 @@ function makePersistService(memoryDir: string): PersistProbe {
309
309
  (orch as unknown as { getStorage: () => Promise<unknown> }).getStorage = async () => ({
310
310
  readAllMemories: async () => [],
311
311
  readAllColdMemories: async () => [],
312
+ // #3354: the fact-dedup window takes a real per-dir lock on storage.dir.
313
+ dir: memoryDir,
312
314
  appendMemoryLifecycleEvents: async () => {},
313
315
  writeSealedMemory: async (envelope: SealedMemoryEnvelope) => {
314
316
  const { category, content } = sealedWriteToLegacyArgs(envelope);
@@ -617,9 +619,12 @@ function makeService(persisted: { category?: string; writes?: number }, memoryDi
617
619
  memoryDir: memoryDir ?? "/synthetic/remnic-2780",
618
620
  } as unknown as PluginConfig;
619
621
  internals._codingContextBySession = new Map();
622
+ // SAFETY: memory_store through this fake reads memories and writes sealed memories only; the rest of the StorageManager surface is unused here.
620
623
  orch.getStorage = async () =>
621
624
  ({
622
625
  readAllMemories: async () => [],
626
+ // #3354: the fact-dedup window takes a real per-dir lock on storage.dir.
627
+ dir: memoryDir ?? path.join(tmpdir(), `remnic-2780-fake-${process.pid}`),
623
628
  writeSealedMemory: async (envelope: SealedMemoryEnvelope) => {
624
629
  persisted.category = envelope.category;
625
630
  persisted.writes = (persisted.writes ?? 0) + 1;
@@ -16,32 +16,87 @@ test("a frame that arrives in two reads is returned once, without re-reading the
16
16
 
17
17
  reader.push(whole.subarray(10));
18
18
  assert.equal(reader.hasUnread(), true);
19
- assert.deepEqual(reader.next(), { kind: "body", text: '{"id":1}' });
19
+ assert.deepEqual(reader.next(), { kind: "body", text: '{"id":1}', form: "header" });
20
20
  assert.equal(reader.next(), null);
21
21
  });
22
22
 
23
23
  test("bytes that arrive after the reader stopped on an empty buffer are unread", () => {
24
24
  const reader = new McpFrameReader();
25
25
  reader.push(frame("first"));
26
- assert.deepEqual(reader.next(), { kind: "body", text: "first" });
26
+ assert.deepEqual(reader.next(), { kind: "body", text: "first", form: "header" });
27
27
  assert.equal(reader.next(), null);
28
28
  assert.equal(reader.hasUnread(), false);
29
29
 
30
30
  reader.push(frame("second"));
31
31
  assert.equal(reader.hasUnread(), true);
32
- assert.deepEqual(reader.next(), { kind: "body", text: "second" });
32
+ assert.deepEqual(reader.next(), { kind: "body", text: "second", form: "header" });
33
33
  });
34
34
 
35
35
  test("the body of an oversized frame is dropped across reads and the next frame is read", () => {
36
36
  const reader = new McpFrameReader();
37
37
  const declared = MCP_STDIO_MAX_FRAME_BYTES + 5;
38
38
  reader.push(Buffer.from(`Content-Length: ${declared}\r\n\r\n${"A".repeat(100)}`, "utf-8"));
39
- assert.deepEqual(reader.next(), { kind: "too-large" });
39
+ assert.deepEqual(reader.next(), { kind: "too-large", form: "header" });
40
40
  assert.equal(reader.next(), null);
41
41
 
42
42
  reader.push(Buffer.from("B".repeat(declared - 100), "utf-8"));
43
43
  assert.equal(reader.hasUnread(), false);
44
44
 
45
45
  reader.push(frame("after"));
46
- assert.deepEqual(reader.next(), { kind: "body", text: "after" });
46
+ assert.deepEqual(reader.next(), { kind: "body", text: "after", form: "header" });
47
+ });
48
+
49
+ test("a newline-delimited message is a line frame, and a blank line is skipped", () => {
50
+ const reader = new McpFrameReader();
51
+ reader.push(Buffer.from('\n{"id":1}\n{"id":2}\n', "utf-8"));
52
+ assert.deepEqual(reader.next(), { kind: "body", text: '{"id":1}', form: "line" });
53
+ assert.deepEqual(reader.next(), { kind: "body", text: '{"id":2}', form: "line" });
54
+ assert.equal(reader.next(), null);
55
+ });
56
+
57
+ test("a newline-delimited line longer than the bound is refused and the buffer does not keep it", () => {
58
+ const reader = new McpFrameReader();
59
+ reader.push(Buffer.from(`{${"A".repeat(MCP_STDIO_MAX_FRAME_BYTES + 1)}\n`, "utf-8"));
60
+ assert.deepEqual(reader.next(), { kind: "too-large", form: "line" });
61
+ assert.equal(reader.next(), null);
62
+ assert.equal(reader.hasUnread(), false);
63
+ });
64
+
65
+ test("a header block that starts with another header is still a header frame", () => {
66
+ const reader = new McpFrameReader();
67
+ const body = '{"jsonrpc":"2.0","id":1,"method":"ping"}';
68
+ reader.push(Buffer.from(`Content-Type: application/json\r\nContent-Length: ${body.length}\r\n\r\n${body}`, "utf-8"));
69
+ assert.deepEqual(reader.next(), { kind: "body", text: body, form: "header" });
70
+ assert.equal(reader.next(), null);
71
+ });
72
+
73
+ test("the tail of an oversized line that arrives over several reads is dropped", () => {
74
+ const reader = new McpFrameReader();
75
+ const huge = Buffer.from(`{"x":"${"A".repeat(2 * MCP_STDIO_MAX_FRAME_BYTES + 1000)}"}\n`, "utf-8");
76
+ const frames: unknown[] = [];
77
+ for (let at = 0; at < huge.length; at += 65536) {
78
+ reader.push(huge.subarray(at, at + 65536));
79
+ for (let one = reader.next(); one !== null; one = reader.next()) frames.push(one);
80
+ }
81
+ reader.push(Buffer.from('{"id":2}\n', "utf-8"));
82
+ for (let one = reader.next(); one !== null; one = reader.next()) frames.push(one);
83
+ assert.deepEqual(frames, [
84
+ { kind: "too-large", form: "line" },
85
+ { kind: "body", text: '{"id":2}', form: "line" },
86
+ ]);
87
+ });
88
+
89
+ test("an oversized line that is complete in the buffer does not drop the line after it", () => {
90
+ const reader = new McpFrameReader();
91
+ reader.push(Buffer.from(`{"x":"${"A".repeat(MCP_STDIO_MAX_FRAME_BYTES)}"}\n{"id":2}\n`, "utf-8"));
92
+ assert.deepEqual(reader.next(), { kind: "too-large", form: "line" });
93
+ assert.deepEqual(reader.next(), { kind: "body", text: '{"id":2}', form: "line" });
94
+ assert.equal(reader.next(), null);
95
+ });
96
+
97
+ test("a blank line in the same read as a header block does not swallow the request", () => {
98
+ const reader = new McpFrameReader();
99
+ reader.push(Buffer.from(`\r\n\nContent-Length: 2\r\n\r\n{}`, "utf-8"));
100
+ assert.deepEqual(reader.next(), { kind: "body", text: "{}", form: "header" });
101
+ assert.equal(reader.next(), null);
47
102
  });
@@ -1,28 +1,41 @@
1
1
  /**
2
- * Content-Length framing for the MCP stdio transport.
2
+ * Framing for the MCP stdio transport.
3
3
  *
4
- * `push` appends raw bytes. `next` returns one frame at a time and `null` when
5
- * the buffered bytes hold no complete frame yet. The header and the body are
6
- * each bounded to MCP_STDIO_MAX_FRAME_BYTES, which matches the HTTP access
7
- * default `maxBodyBytes`, so a peer cannot grow the buffer without limit.
4
+ * The MCP spec sends one JSON message per line. Some clients send a
5
+ * `Content-Length` header instead. `push` appends raw bytes. `next` returns one
6
+ * frame at a time and `null` when the buffered bytes hold no complete frame
7
+ * yet. A buffer whose first non-blank byte is `{` or `[` is read up to the next
8
+ * newline. Any other buffer is a header block. Each form is bounded to
9
+ * MCP_STDIO_MAX_FRAME_BYTES, so a peer cannot grow the buffer without limit.
8
10
  */
9
11
  export const MCP_STDIO_MAX_FRAME_BYTES = 131072;
10
12
 
11
- export type McpFrame = { kind: "body"; text: string } | { kind: "too-large" };
13
+ export type McpFrameForm = "header" | "line";
12
14
 
13
- const TOO_LARGE: McpFrame = { kind: "too-large" };
15
+ export type McpFrame =
16
+ | { kind: "body"; text: string; form: McpFrameForm }
17
+ | { kind: "too-large"; form: McpFrameForm };
18
+
19
+ const HEADER_PREFIX = "content-length:";
14
20
 
15
21
  export class McpFrameReader {
16
22
  private buffer = Buffer.alloc(0);
17
- /** Body bytes of a refused oversized frame that have not arrived yet. */
23
+ /** Body bytes of a refused oversized header frame that have not arrived yet. */
18
24
  private skipBytes = 0;
25
+ /** True while the rest of a refused oversized line has not arrived yet. */
26
+ private skipLine = false;
19
27
  /** Buffer length when `next` last stopped on an incomplete frame. */
20
28
  private waitingBytes = 0;
21
29
 
22
30
  push(chunk: Buffer): void {
23
31
  const dropped = Math.min(this.skipBytes, chunk.length);
24
32
  this.skipBytes -= dropped;
25
- const kept = chunk.subarray(dropped);
33
+ let kept = chunk.subarray(dropped);
34
+ if (this.skipLine) {
35
+ const newline = kept.indexOf("\n");
36
+ this.skipLine = newline < 0;
37
+ kept = kept.subarray(newline < 0 ? kept.length : newline + 1);
38
+ }
26
39
  if (kept.length > 0) this.buffer = Buffer.concat([this.buffer, kept]);
27
40
  }
28
41
 
@@ -33,15 +46,33 @@ export class McpFrameReader {
33
46
 
34
47
  next(): McpFrame | null {
35
48
  this.waitingBytes = 0;
49
+ // A blank line carries no message. Skip it and read the next frame, so a
50
+ // run of blank lines cannot stall the frames that follow in this buffer.
51
+ for (;;) {
52
+ const frame = this.isHeaderFrame() ? this.nextHeader() : this.nextLine();
53
+ if (frame !== "blank") return frame;
54
+ }
55
+ }
56
+
57
+ /** A line frame starts with `{` or `[`, as every JSON-RPC message does. Any other first byte starts a header block. */
58
+ private isHeaderFrame(): boolean {
59
+ const first = this.buffer.find((byte) => byte > 0x20);
60
+ return first !== undefined && first !== 0x7b && first !== 0x5b;
61
+ }
62
+
63
+ private nextHeader(): McpFrame | null {
64
+ // Blank lines before a header block carry no message; drop them so they
65
+ // cannot end up inside the first header line.
66
+ this.buffer = this.release(this.buffer.subarray(this.buffer.findIndex((byte) => byte > 0x20)));
36
67
  const headerEnd = this.buffer.indexOf("\r\n\r\n");
37
68
  if (headerEnd < 0) {
38
69
  if (this.buffer.length <= MCP_STDIO_MAX_FRAME_BYTES) return this.wait();
39
- return this.discardBuffer();
70
+ return this.discardBuffer("header");
40
71
  }
41
- if (headerEnd > MCP_STDIO_MAX_FRAME_BYTES) return this.discardBuffer();
72
+ if (headerEnd > MCP_STDIO_MAX_FRAME_BYTES) return this.discardBuffer("header");
42
73
 
43
74
  const headers = this.buffer.subarray(0, headerEnd).toString("utf-8").split("\r\n");
44
- const lengthHeader = headers.find((line) => line.toLowerCase().startsWith("content-length:"));
75
+ const lengthHeader = headers.find((line) => line.toLowerCase().startsWith(HEADER_PREFIX));
45
76
  const contentLength = lengthHeader ? Number.parseInt(lengthHeader.split(":")[1]?.trim() ?? "0", 10) : NaN;
46
77
  if (!Number.isFinite(contentLength) || contentLength < 0) {
47
78
  this.buffer = Buffer.alloc(0);
@@ -52,14 +83,37 @@ export class McpFrameReader {
52
83
  if (contentLength > MCP_STDIO_MAX_FRAME_BYTES) {
53
84
  const rest = this.buffer.subarray(bodyStart);
54
85
  this.skipBytes = Math.max(0, contentLength - rest.length);
55
- this.buffer = rest.subarray(Math.min(contentLength, rest.length));
56
- return TOO_LARGE;
86
+ this.buffer = this.release(rest.subarray(Math.min(contentLength, rest.length)));
87
+ return { kind: "too-large", form: "header" };
57
88
  }
58
89
  const bodyEnd = bodyStart + contentLength;
59
90
  if (this.buffer.length < bodyEnd) return this.wait();
60
91
  const text = this.buffer.subarray(bodyStart, bodyEnd).toString("utf-8");
61
- this.buffer = this.buffer.subarray(bodyEnd);
62
- return { kind: "body", text };
92
+ this.buffer = this.release(this.buffer.subarray(bodyEnd));
93
+ return { kind: "body", text, form: "header" };
94
+ }
95
+
96
+ /** A line frame, `"blank"` for an empty line, or `null` when more bytes must arrive. */
97
+ private nextLine(): McpFrame | "blank" | null {
98
+ const newline = this.buffer.indexOf("\n");
99
+ if (newline < 0) {
100
+ if (this.buffer.length <= MCP_STDIO_MAX_FRAME_BYTES) return this.wait();
101
+ this.skipLine = true;
102
+ return this.discardBuffer("line");
103
+ }
104
+ if (newline > MCP_STDIO_MAX_FRAME_BYTES) {
105
+ this.buffer = this.release(this.buffer.subarray(newline + 1));
106
+ return { kind: "too-large", form: "line" };
107
+ }
108
+ const text = this.buffer.subarray(0, newline).toString("utf-8").replace(/\r$/, "");
109
+ this.buffer = this.release(this.buffer.subarray(newline + 1));
110
+ if (text.trim().length === 0) return "blank";
111
+ return { kind: "body", text, form: "line" };
112
+ }
113
+
114
+ /** An empty view would keep the old allocation alive while the connection idles. */
115
+ private release(view: Buffer<ArrayBuffer>): Buffer<ArrayBuffer> {
116
+ return view.length === 0 ? Buffer.alloc(0) : view;
63
117
  }
64
118
 
65
119
  private wait(): null {
@@ -67,8 +121,8 @@ export class McpFrameReader {
67
121
  return null;
68
122
  }
69
123
 
70
- private discardBuffer(): McpFrame {
124
+ private discardBuffer(form: McpFrameForm): McpFrame {
71
125
  this.buffer = Buffer.alloc(0);
72
- return TOO_LARGE;
126
+ return { kind: "too-large", form };
73
127
  }
74
128
  }
@@ -1624,6 +1624,15 @@ function stdioFrame(payload: StdioRequest): string {
1624
1624
  }
1625
1625
 
1626
1626
  function readStdioMessages(raw: string): StdioMessage[] {
1627
+ if (!raw.toLowerCase().startsWith("content-length:")) {
1628
+ return raw
1629
+ .split("\n")
1630
+ .filter((line) => line.trim().length > 0)
1631
+ .map((line) => {
1632
+ const message: StdioMessage = JSON.parse(line);
1633
+ return message;
1634
+ });
1635
+ }
1627
1636
  const messages: StdioMessage[] = [];
1628
1637
  let rest = raw;
1629
1638
  while (rest.length > 0) {
@@ -1638,7 +1647,7 @@ function readStdioMessages(raw: string): StdioMessage[] {
1638
1647
  }
1639
1648
 
1640
1649
  /** Feeds each chunk in its own tick so the server sees separate data events. */
1641
- async function runStdioChunks(chunks: string[]): Promise<StdioMessage[]> {
1650
+ async function runStdioRaw(chunks: string[]): Promise<string> {
1642
1651
  const input = new PassThrough();
1643
1652
  const output = new PassThrough();
1644
1653
  output.setEncoding("utf8");
@@ -1653,7 +1662,11 @@ async function runStdioChunks(chunks: string[]): Promise<StdioMessage[]> {
1653
1662
  }
1654
1663
  input.end();
1655
1664
  await running;
1656
- return readStdioMessages(raw);
1665
+ return raw;
1666
+ }
1667
+
1668
+ async function runStdioChunks(chunks: string[]): Promise<StdioMessage[]> {
1669
+ return readStdioMessages(await runStdioRaw(chunks));
1657
1670
  }
1658
1671
 
1659
1672
  const stdioPing = (id: number) => stdioFrame({ jsonrpc: "2.0", id, method: "ping" });
@@ -1685,3 +1698,54 @@ test("MCP stdio reassembles a frame split inside its header and inside its body"
1685
1698
  assert.equal(messages.length, 1);
1686
1699
  assert.equal(messages[0]?.id, 9);
1687
1700
  });
1701
+
1702
+ // Issue #3357: a spec client sends one JSON message per line and reads the
1703
+ // reply in the same form. The server keeps Content-Length for a header client.
1704
+ type StdioLineRequest = { jsonrpc: "2.0"; id: number; method: string; params?: { protocolVersion?: string } };
1705
+ const stdioInit: StdioLineRequest = { jsonrpc: "2.0", id: 1, method: "initialize", params: { protocolVersion: "2025-06-18" } };
1706
+ const stdioTools: StdioLineRequest = { jsonrpc: "2.0", id: 2, method: "tools/list" };
1707
+
1708
+ function stdioLine(payload: StdioLineRequest): string {
1709
+ return `${JSON.stringify(payload)}\n`;
1710
+ }
1711
+
1712
+ test("MCP stdio answers a newline-delimited initialize and tools/list with newline-delimited replies", async () => {
1713
+ const messages = await runStdioChunks([stdioLine(stdioInit), stdioLine(stdioTools)]);
1714
+ assert.equal(messages.length, 2);
1715
+ assert.equal(messages[0]?.id, 1);
1716
+ assert.equal(messages[1]?.id, 2);
1717
+ assert.ok(messages[1]?.result, "tools/list returns a result");
1718
+ });
1719
+
1720
+ test("MCP stdio answers a Content-Length initialize and tools/list with Content-Length replies", async () => {
1721
+ const header = (payload: StdioLineRequest): string => {
1722
+ const body = JSON.stringify(payload);
1723
+ return `Content-Length: ${Buffer.byteLength(body, "utf-8")}\r\n\r\n${body}`;
1724
+ };
1725
+ const messages = await runStdioChunks([header(stdioInit), header(stdioTools)]);
1726
+ assert.equal(messages.length, 2);
1727
+ assert.equal(messages[0]?.id, 1);
1728
+ assert.equal(messages[1]?.id, 2);
1729
+ });
1730
+
1731
+ test("MCP stdio refuses an oversized newline-delimited line and answers the next line", async () => {
1732
+ const messages = await runStdioChunks([
1733
+ `{${"A".repeat(MCP_STDIO_MAX_FRAME_BYTES + 1)}\n`,
1734
+ stdioLine({ jsonrpc: "2.0", id: 4, method: "ping" }),
1735
+ ]);
1736
+ assert.equal(messages.length, 2);
1737
+ assert.match(messages[0]?.error?.message ?? "", /frame too large/);
1738
+ assert.equal(messages[1]?.id, 4);
1739
+ });
1740
+
1741
+ test("MCP stdio takes the reply form from the first JSON frame, not from a refused first frame", async () => {
1742
+ const raw = await runStdioRaw([
1743
+ "A".repeat(MCP_STDIO_MAX_FRAME_BYTES + 1),
1744
+ stdioLine({ jsonrpc: "2.0", id: 5, method: "ping" }),
1745
+ stdioLine({ jsonrpc: "2.0", id: 6, method: "ping" }),
1746
+ ]);
1747
+ assert.equal(raw.split("Content-Length").length - 1, 1, "only the reply to the refused frame is Content-Length framed");
1748
+ const afterHeader = raw.slice(raw.indexOf("\r\n\r\n") + 4);
1749
+ const replies = afterHeader.slice(afterHeader.indexOf("}}") + 2).split("\n").filter((line) => line.length > 0);
1750
+ assert.deepEqual(replies.map((line) => JSON.parse(line).id), [5, 6]);
1751
+ });