@remnic/core 9.69.10 → 9.69.11

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 (578) hide show
  1. package/dist/access-admin-ops-surface.d.ts +15 -13
  2. package/dist/access-admin-ops-surface.js +46 -34
  3. package/dist/access-authorization-probe.d.ts +13 -11
  4. package/dist/access-authorization-probe.js +47 -35
  5. package/dist/access-boundary.d.ts +13 -11
  6. package/dist/access-boundary.js +46 -34
  7. package/dist/access-cli.js +108 -97
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-coding-context-resolution.d.ts +2 -1
  10. package/dist/access-extraction-force-flush.d.ts +13 -11
  11. package/dist/access-extraction-force-flush.js +46 -34
  12. package/dist/access-health-types.d.ts +2 -1
  13. package/dist/access-http-lcm-compaction.d.ts +13 -11
  14. package/dist/access-http-lifecycle-flush.d.ts +13 -11
  15. package/dist/access-http-offline-stream.d.ts +13 -11
  16. package/dist/access-http-query.d.ts +3 -2
  17. package/dist/access-http-query.js +48 -36
  18. package/dist/access-http.d.ts +14 -12
  19. package/dist/access-http.js +67 -53
  20. package/dist/access-identity-continuity-surface.d.ts +10 -9
  21. package/dist/access-identity-continuity-surface.js +46 -34
  22. package/dist/access-lcm-surface.d.ts +13 -11
  23. package/dist/access-lcm-surface.js +46 -34
  24. package/dist/access-mcp-output-schemas.js +1 -1
  25. package/dist/access-mcp.d.ts +13 -11
  26. package/dist/access-mcp.js +58 -45
  27. package/dist/access-memory-search-fanout.d.ts +3 -2
  28. package/dist/{access-namespace-preflight-S8fhQcCo.d.ts → access-namespace-preflight-Cy0yPsaE.d.ts} +1 -1
  29. package/dist/access-namespace-preflight.d.ts +4 -3
  30. package/dist/access-namespace-preflight.js +46 -34
  31. package/dist/access-observe-write-surface.d.ts +15 -13
  32. package/dist/access-observe-write-surface.js +46 -34
  33. package/dist/access-offline-manifest.d.ts +10 -9
  34. package/dist/access-offline-manifest.js +3 -3
  35. package/dist/access-operations-batch.js +49 -37
  36. package/dist/access-operations.d.ts +14 -12
  37. package/dist/access-operations.js +54 -42
  38. package/dist/access-recall-concurrency.d.ts +13 -11
  39. package/dist/access-recall-concurrency.js +46 -34
  40. package/dist/access-recall-response.d.ts +13 -11
  41. package/dist/access-recall-response.js +46 -34
  42. package/dist/access-recall-surface.d.ts +13 -11
  43. package/dist/access-recall-surface.js +46 -34
  44. package/dist/access-schema.d.ts +18 -1
  45. package/dist/access-schema.js +7 -5
  46. package/dist/{access-service-DcfM0Vf0.d.ts → access-service-Cqfk3dD1.d.ts} +25 -8
  47. package/dist/access-service-helpers.d.ts +13 -11
  48. package/dist/access-service.d.ts +13 -11
  49. package/dist/access-service.js +46 -34
  50. package/dist/access-surface-catalog.d.ts +13 -11
  51. package/dist/access-surface-catalog.js +50 -36
  52. package/dist/access-surface-catalog.js.map +1 -1
  53. package/dist/access-wearables-meetings-surface.d.ts +4 -3
  54. package/dist/action-confidence.d.ts +2 -1
  55. package/dist/active-memory-bridge.d.ts +2 -1
  56. package/dist/active-recall.d.ts +2 -1
  57. package/dist/active-recall.js +6 -5
  58. package/dist/active-recall.js.map +1 -1
  59. package/dist/adapters/index.js +4 -4
  60. package/dist/adapters/registry.js +2 -2
  61. package/dist/ambient-provenance.d.ts +2 -1
  62. package/dist/artifact-search.d.ts +2 -1
  63. package/dist/behavior-learner.d.ts +2 -1
  64. package/dist/behavior-signals.d.ts +2 -1
  65. package/dist/bootstrap.d.ts +10 -9
  66. package/dist/briefing-window.d.ts +3 -2
  67. package/dist/briefing.d.ts +3 -2
  68. package/dist/briefing.js +13 -13
  69. package/dist/buffer-surprise-report.d.ts +2 -1
  70. package/dist/buffer-turn-helpers.d.ts +2 -1
  71. package/dist/buffer.d.ts +3 -2
  72. package/dist/bulk-import/index.d.ts +4 -3
  73. package/dist/calibration.d.ts +2 -1
  74. package/dist/capabilities.d.ts +2 -1
  75. package/dist/{catalog-BmBXTtOs.d.ts → catalog-9X8WpZNO.d.ts} +1 -1
  76. package/dist/causal-behavior.d.ts +2 -1
  77. package/dist/causal-behavior.js +2 -2
  78. package/dist/causal-chain.js +2 -2
  79. package/dist/causal-consolidation.d.ts +2 -1
  80. package/dist/causal-consolidation.js +16 -16
  81. package/dist/causal-retrieval.js +2 -2
  82. package/dist/causal-trajectory-graph.d.ts +2 -1
  83. package/dist/causal-trajectory-graph.js +2 -2
  84. package/dist/causal-trajectory.js +1 -1
  85. package/dist/{chunk-D5VPIJN3.js → chunk-227WJVPY.js} +2 -2
  86. package/dist/{chunk-Y3BWCIY2.js → chunk-2EHDPHMD.js} +2 -2
  87. package/dist/{chunk-2LKW6OO7.js → chunk-2XJDAEAM.js} +2 -2
  88. package/dist/{chunk-P23JWI3D.js → chunk-3ITTF7YH.js} +52 -52
  89. package/dist/{chunk-3DT2F5OI.js → chunk-3YKOFCKP.js} +11 -6
  90. package/dist/chunk-3YKOFCKP.js.map +1 -0
  91. package/dist/{chunk-NGP2FPB2.js → chunk-4UVDLNHQ.js} +2 -2
  92. package/dist/{chunk-HXWOVCS6.js → chunk-4WIKMOE3.js} +44 -22
  93. package/dist/chunk-4WIKMOE3.js.map +1 -0
  94. package/dist/{chunk-6RPB2TDG.js → chunk-5HO3QBAD.js} +11 -6
  95. package/dist/chunk-5HO3QBAD.js.map +1 -0
  96. package/dist/{chunk-AYWPIH4M.js → chunk-5P2KNFJZ.js} +149 -25
  97. package/dist/chunk-5P2KNFJZ.js.map +1 -0
  98. package/dist/{chunk-FJMIQTMH.js → chunk-5YQ7RFSO.js} +2 -2
  99. package/dist/{chunk-KQAFEZQX.js → chunk-7LCGFUMB.js} +4 -4
  100. package/dist/{chunk-EESYTBXV.js → chunk-7NCUHD5U.js} +2 -2
  101. package/dist/{chunk-X574KX52.js → chunk-7ZMU4XQT.js} +2 -2
  102. package/dist/{chunk-SG3Z67FB.js → chunk-APZXA4WI.js} +2 -2
  103. package/dist/{chunk-2QSZNTDO.js → chunk-AU7Q3LSC.js} +4 -4
  104. package/dist/{chunk-VGMRI4J6.js → chunk-B75VCEX5.js} +4 -4
  105. package/dist/{chunk-D35XLYQ7.js → chunk-BE4Y6GK6.js} +11 -11
  106. package/dist/{chunk-ELKD5PCD.js → chunk-BEXFNGQ3.js} +3 -3
  107. package/dist/{chunk-U5SRTYFS.js → chunk-BFDOBESV.js} +2 -2
  108. package/dist/{chunk-OLT3YTDH.js → chunk-BIJAWZYW.js} +4 -4
  109. package/dist/{chunk-FU2NYFX6.js → chunk-BO4PWIJY.js} +3 -3
  110. package/dist/{chunk-JMAG7WZ7.js → chunk-BX6GW4KC.js} +2 -2
  111. package/dist/chunk-CC37E3QM.js +198 -0
  112. package/dist/chunk-CC37E3QM.js.map +1 -0
  113. package/dist/{chunk-J2R275FN.js → chunk-CTCGHNWN.js} +4 -4
  114. package/dist/{chunk-X5PIDJ3L.js → chunk-DA4ZMCBU.js} +3 -3
  115. package/dist/{chunk-IVAW3HBF.js → chunk-DH3V7RCQ.js} +21 -13
  116. package/dist/chunk-DH3V7RCQ.js.map +1 -0
  117. package/dist/chunk-DXFG2VGN.js +50 -0
  118. package/dist/chunk-DXFG2VGN.js.map +1 -0
  119. package/dist/{chunk-4OFKZAJG.js → chunk-EAARGPWI.js} +2 -1
  120. package/dist/chunk-EAARGPWI.js.map +1 -0
  121. package/dist/{chunk-H6RSANGQ.js → chunk-ETZ7KKOS.js} +2 -2
  122. package/dist/{chunk-K4E3Y3ZX.js → chunk-G7VEQEMG.js} +2 -1
  123. package/dist/chunk-G7VEQEMG.js.map +1 -0
  124. package/dist/{chunk-XZBXINXZ.js → chunk-GIC6BASP.js} +4 -4
  125. package/dist/{chunk-SXQZMC7R.js → chunk-GR4C3FHT.js} +2 -2
  126. package/dist/{chunk-7DYGPGCT.js → chunk-H5IIBGDM.js} +2 -2
  127. package/dist/{chunk-CNNXMIS6.js → chunk-HFRGCNFY.js} +10 -10
  128. package/dist/chunk-HRATODNO.js +28 -0
  129. package/dist/chunk-HRATODNO.js.map +1 -0
  130. package/dist/{chunk-MAG6M3B6.js → chunk-HTOWFFAI.js} +2 -2
  131. package/dist/chunk-HUSTM6PU.js +27 -0
  132. package/dist/chunk-HUSTM6PU.js.map +1 -0
  133. package/dist/{chunk-FOCMJEHH.js → chunk-I4QAH4SY.js} +3 -3
  134. package/dist/{chunk-FSGCXGK6.js → chunk-I6DUKBUI.js} +2 -2
  135. package/dist/{chunk-VI637ILW.js → chunk-IN673LEP.js} +48 -15
  136. package/dist/chunk-IN673LEP.js.map +1 -0
  137. package/dist/{chunk-6FUMA6AA.js → chunk-JGXMA6HL.js} +2 -2
  138. package/dist/{chunk-TA7UZZMW.js → chunk-JHTF22NQ.js} +2 -2
  139. package/dist/{chunk-DZ3CNJPB.js → chunk-LDOQE34V.js} +2 -2
  140. package/dist/{chunk-MEW53VQJ.js → chunk-LDWIPYJ6.js} +7 -7
  141. package/dist/{chunk-227UFSEQ.js → chunk-LEPOP46W.js} +4 -4
  142. package/dist/{chunk-KJTSWJZN.js → chunk-LF6SHWVV.js} +2 -2
  143. package/dist/{chunk-G6OZZX7P.js → chunk-LJAP4KSW.js} +2 -2
  144. package/dist/{chunk-NV6BTBUI.js → chunk-LJNLLNEM.js} +2 -2
  145. package/dist/{chunk-FFFZEF6B.js → chunk-LUDXSSTW.js} +2 -2
  146. package/dist/{chunk-PCH2CVCS.js → chunk-LWBSEYW3.js} +6 -6
  147. package/dist/chunk-M6RORUO5.js +59 -0
  148. package/dist/chunk-M6RORUO5.js.map +1 -0
  149. package/dist/{chunk-FMUJGGKW.js → chunk-M7DGN6JZ.js} +3 -3
  150. package/dist/{chunk-TZIHB2LP.js → chunk-MNH2GM4O.js} +5 -5
  151. package/dist/{chunk-RACZB5HT.js → chunk-N37X5RU7.js} +4 -4
  152. package/dist/{chunk-LK4TOYPU.js → chunk-NF3NMAG7.js} +2 -2
  153. package/dist/{chunk-QL4U3SJA.js → chunk-NHLEFBE2.js} +11 -3
  154. package/dist/chunk-NHLEFBE2.js.map +1 -0
  155. package/dist/chunk-NN5CQTAJ.js +42 -0
  156. package/dist/chunk-NN5CQTAJ.js.map +1 -0
  157. package/dist/{chunk-AG46P24C.js → chunk-NNBZS3DY.js} +4 -4
  158. package/dist/{chunk-LZ2JTO7N.js → chunk-OASGWNYL.js} +2 -2
  159. package/dist/chunk-OEDW4ER7.js +62 -0
  160. package/dist/chunk-OEDW4ER7.js.map +1 -0
  161. package/dist/{chunk-C2JCVZWX.js → chunk-OLBZ2WGG.js} +2 -2
  162. package/dist/{chunk-Z3SQEEB6.js → chunk-OUKBMQ2O.js} +2 -2
  163. package/dist/{chunk-XXW32OL7.js → chunk-OYV6RKPM.js} +1 -1
  164. package/dist/chunk-OYV6RKPM.js.map +1 -0
  165. package/dist/{chunk-2Z3DG5CQ.js → chunk-P6GKRT2H.js} +1 -1
  166. package/dist/{chunk-UGA6PZTX.js → chunk-P7LVYPIX.js} +3 -3
  167. package/dist/{chunk-26JWBSWD.js → chunk-PGCZLHRB.js} +11 -3
  168. package/dist/chunk-PGCZLHRB.js.map +1 -0
  169. package/dist/{chunk-VE45LRCE.js → chunk-QRDSXR3V.js} +2 -2
  170. package/dist/{chunk-KS67VHXA.js → chunk-QUVWFZOU.js} +2 -2
  171. package/dist/{chunk-AI4QFDPR.js → chunk-R7FXPG4T.js} +2 -2
  172. package/dist/chunk-RF2SMMPP.js +37 -0
  173. package/dist/chunk-RF2SMMPP.js.map +1 -0
  174. package/dist/{chunk-X66BHMAU.js → chunk-RJ57OOCD.js} +2 -2
  175. package/dist/chunk-S5G2LAL7.js +354 -0
  176. package/dist/chunk-S5G2LAL7.js.map +1 -0
  177. package/dist/{chunk-VXMKW7YN.js → chunk-TRLCMLX7.js} +2 -2
  178. package/dist/{chunk-ELCMVOQT.js → chunk-V3HUBF7T.js} +2 -2
  179. package/dist/{chunk-KMIAD7JR.js → chunk-VHAKBUBD.js} +2 -2
  180. package/dist/{chunk-GS5IFIVE.js → chunk-VYD63IFH.js} +3 -3
  181. package/dist/chunk-VZIAVM72.js +49 -0
  182. package/dist/chunk-VZIAVM72.js.map +1 -0
  183. package/dist/chunk-WTWQA7BB.js +28 -0
  184. package/dist/chunk-WTWQA7BB.js.map +1 -0
  185. package/dist/{chunk-TBRG2SYY.js → chunk-X4FIZAVQ.js} +94 -52
  186. package/dist/chunk-X4FIZAVQ.js.map +1 -0
  187. package/dist/{chunk-WSFPNCRA.js → chunk-XFPHV65N.js} +2 -2
  188. package/dist/{chunk-JCUG7AXZ.js → chunk-XJJYSX6F.js} +4 -4
  189. package/dist/{chunk-I6DURYZI.js → chunk-XMIAU4CO.js} +2 -2
  190. package/dist/{chunk-PJIGYPO5.js → chunk-XQGFIAG7.js} +2 -2
  191. package/dist/{chunk-B2URC6LJ.js → chunk-YWN3GYI2.js} +2 -2
  192. package/dist/{chunk-TG6JEJDV.js → chunk-Z33VUMKY.js} +3 -3
  193. package/dist/{cli-CFpMhqz5.d.ts → cli-Dk-lM_tI.d.ts} +5 -5
  194. package/dist/cli.d.ts +15 -13
  195. package/dist/cli.js +88 -77
  196. package/dist/coding/export-okf-codegraph.d.ts +2 -1
  197. package/dist/coding/export-okf-codegraph.js +13 -13
  198. package/dist/coding/pre-action-gate.d.ts +2 -1
  199. package/dist/coding/pre-action-gate.js +2 -2
  200. package/dist/compounding/engine.d.ts +3 -2
  201. package/dist/compounding/engine.js +15 -14
  202. package/dist/compounding/preference-consolidator.d.ts +2 -1
  203. package/dist/compression-optimizer.d.ts +2 -1
  204. package/dist/config.d.ts +2 -1
  205. package/dist/config.js +6 -5
  206. package/dist/connectors/codex-materialize-runner.d.ts +2 -1
  207. package/dist/connectors/codex-materialize-runner.js +13 -13
  208. package/dist/connectors/codex-materialize.d.ts +2 -1
  209. package/dist/connectors/index.d.ts +2 -1
  210. package/dist/connectors/index.js +13 -13
  211. package/dist/consolidation-provenance-check.d.ts +3 -2
  212. package/dist/consolidation-undo.d.ts +3 -2
  213. package/dist/contradiction/index.d.ts +4 -3
  214. package/dist/converge-config.d.ts +2 -1
  215. package/dist/convergence-refresh.d.ts +3 -2
  216. package/dist/convergence-refresh.js +15 -15
  217. package/dist/conversation-index/backend.d.ts +2 -1
  218. package/dist/conversation-index/backend.js +2 -2
  219. package/dist/conversation-index/chunker.d.ts +2 -1
  220. package/dist/conversation-index/faiss-adapter.d.ts +2 -1
  221. package/dist/conversation-index/indexer.d.ts +2 -1
  222. package/dist/conversation-index/search.d.ts +2 -1
  223. package/dist/corpus-watermark.d.ts +2 -1
  224. package/dist/corpus-watermark.js +15 -15
  225. package/dist/cross-lingual-recall.d.ts +2 -1
  226. package/dist/day-summary.d.ts +2 -1
  227. package/dist/deep-recall-config.d.ts +32 -0
  228. package/dist/deep-recall-config.js +12 -0
  229. package/dist/deep-recall-http-glue.d.ts +170 -0
  230. package/dist/deep-recall-http-glue.js +31 -0
  231. package/dist/deep-recall-http-glue.js.map +1 -0
  232. package/dist/deep-recall-mcp-tools.d.ts +144 -0
  233. package/dist/deep-recall-mcp-tools.js +8 -0
  234. package/dist/deep-recall-mcp-tools.js.map +1 -0
  235. package/dist/deep-recall-policy-llm.d.ts +37 -0
  236. package/dist/deep-recall-policy-llm.js +19 -0
  237. package/dist/deep-recall-policy-llm.js.map +1 -0
  238. package/dist/deep-recall-renderer.d.ts +16 -0
  239. package/dist/deep-recall-renderer.js +8 -0
  240. package/dist/deep-recall-renderer.js.map +1 -0
  241. package/dist/deep-recall-seeds.d.ts +83 -0
  242. package/dist/deep-recall-seeds.js +8 -0
  243. package/dist/deep-recall-seeds.js.map +1 -0
  244. package/dist/deep-recall.d.ts +97 -0
  245. package/dist/deep-recall.js +13 -0
  246. package/dist/deep-recall.js.map +1 -0
  247. package/dist/delinearize.d.ts +2 -1
  248. package/dist/dependency-propagation-config.d.ts +2 -1
  249. package/dist/{dependency-propagation-delivery-BC3bCEet.d.ts → dependency-propagation-delivery-BZGUecZf.d.ts} +1 -1
  250. package/dist/direct-answer-wiring.d.ts +2 -1
  251. package/dist/direct-answer.d.ts +2 -1
  252. package/dist/embedding-fallback.d.ts +2 -1
  253. package/dist/enrichment/index.d.ts +2 -1
  254. package/dist/entity-origin-fields.d.ts +2 -1
  255. package/dist/entity-retrieval.d.ts +3 -2
  256. package/dist/entity-retrieval.js +13 -13
  257. package/dist/entity-schema.d.ts +2 -1
  258. package/dist/episodic-context.d.ts +2 -1
  259. package/dist/eval-trajectory-contracts.d.ts +2 -1
  260. package/dist/eval-trajectory-store.d.ts +2 -1
  261. package/dist/eval-trajectory.d.ts +2 -1
  262. package/dist/explicit-capture.d.ts +10 -9
  263. package/dist/external-wiki-access.d.ts +13 -11
  264. package/dist/external-wiki-access.js +47 -35
  265. package/dist/external-wiki-collection-registration.d.ts +2 -1
  266. package/dist/external-wiki-collection.d.ts +2 -1
  267. package/dist/external-wiki-mcp-tools.d.ts +13 -11
  268. package/dist/extraction-error-classification.d.ts +2 -1
  269. package/dist/extraction-faithfulness.d.ts +2 -1
  270. package/dist/extraction-judge-telemetry.d.ts +2 -1
  271. package/dist/extraction-judge-training.d.ts +2 -1
  272. package/dist/extraction-judge.d.ts +2 -1
  273. package/dist/extraction-liveness.d.ts +2 -1
  274. package/dist/extraction-normalization.d.ts +2 -1
  275. package/dist/extraction-prompt.d.ts +2 -1
  276. package/dist/extraction-source-grounding-rules.d.ts +2 -1
  277. package/dist/extraction-source-grounding.d.ts +2 -1
  278. package/dist/extraction.d.ts +2 -1
  279. package/dist/extraction.js +15 -15
  280. package/dist/fallback-llm.d.ts +2 -1
  281. package/dist/graph-dashboard-diff.d.ts +2 -1
  282. package/dist/graph-dashboard-key.d.ts +2 -1
  283. package/dist/graph-dashboard-parser.d.ts +2 -1
  284. package/dist/{graph-edge-decay-DGTBFALQ.js → graph-edge-decay-FXGELBFA.js} +4 -4
  285. package/dist/graph-edge-decay-FXGELBFA.js.map +1 -0
  286. package/dist/graph-edge-reinforcement.d.ts +2 -1
  287. package/dist/graph-path-reconstruction.d.ts +2 -1
  288. package/dist/graph-path-scoring.d.ts +2 -1
  289. package/dist/graph-snapshot.d.ts +2 -1
  290. package/dist/graph-snapshot.js +3 -3
  291. package/dist/graph.d.ts +2 -1
  292. package/dist/graph.js +2 -2
  293. package/dist/harmonic-construction.js +3 -3
  294. package/dist/harmonic-retrieval.d.ts +38 -2
  295. package/dist/harmonic-retrieval.js +12 -3
  296. package/dist/importance.d.ts +2 -1
  297. package/dist/importers/index.d.ts +2 -1
  298. package/dist/in-flight-reads.d.ts +2 -1
  299. package/dist/{index-D4hS9uxK.d.ts → index-B4iTvT-w.d.ts} +2 -2
  300. package/dist/index.d.ts +25 -23
  301. package/dist/index.js +126 -115
  302. package/dist/intent.d.ts +2 -1
  303. package/dist/lcm/engine.d.ts +2 -1
  304. package/dist/lcm/index.d.ts +2 -1
  305. package/dist/lcm/tools.d.ts +2 -1
  306. package/dist/lifecycle.d.ts +2 -1
  307. package/dist/live-connectors-runner.d.ts +2 -1
  308. package/dist/local-llm.d.ts +2 -1
  309. package/dist/local-model-endpoint.d.ts +2 -1
  310. package/dist/location/index.d.ts +4 -3
  311. package/dist/location/index.js +15 -15
  312. package/dist/maintenance/memory-governance.d.ts +2 -1
  313. package/dist/maintenance/memory-governance.js +13 -13
  314. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
  315. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +13 -13
  316. package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
  317. package/dist/maintenance/rebuild-memory-projection.js +14 -14
  318. package/dist/{maintenance-BRcc3Hx8.d.ts → maintenance-BBpNqEeJ.d.ts} +3 -3
  319. package/dist/mcp-memory-inspector-app.d.ts +13 -11
  320. package/dist/mcp-read-only-tools.js +1 -1
  321. package/dist/memory-action-policy.d.ts +2 -1
  322. package/dist/memory-cache.d.ts +2 -1
  323. package/dist/memory-controller.d.ts +2 -1
  324. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  325. package/dist/memory-projection-store.d.ts +2 -1
  326. package/dist/memory-provenance.d.ts +2 -1
  327. package/dist/memory-snapshot.d.ts +2 -1
  328. package/dist/memory-subject-cli.d.ts +13 -11
  329. package/dist/memory-subject.d.ts +13 -11
  330. package/dist/memory-worth-outcomes.d.ts +3 -2
  331. package/dist/models-json.d.ts +2 -1
  332. package/dist/namespaces/migrate.d.ts +4 -3
  333. package/dist/namespaces/migrate.js +14 -14
  334. package/dist/namespaces/principal.d.ts +2 -1
  335. package/dist/namespaces/search.d.ts +2 -1
  336. package/dist/namespaces/search.js +9 -9
  337. package/dist/namespaces/storage.d.ts +4 -3
  338. package/dist/namespaces/storage.js +13 -13
  339. package/dist/native-knowledge.d.ts +2 -1
  340. package/dist/offline-sync-impression-drain.d.ts +2 -1
  341. package/dist/offline-sync.js +2 -2
  342. package/dist/operator-doctor-corpus.d.ts +2 -1
  343. package/dist/operator-doctor-corpus.js +16 -16
  344. package/dist/operator-doctor-replica.d.ts +2 -1
  345. package/dist/operator-toolkit.d.ts +4 -3
  346. package/dist/operator-toolkit.js +29 -28
  347. package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
  348. package/dist/orchestration/maintenance.d.ts +5 -4
  349. package/dist/orchestration/maintenance.js +21 -21
  350. package/dist/{orchestrator-Btq9lzAN.d.ts → orchestrator-DglY1H0w.d.ts} +8 -8
  351. package/dist/orchestrator.d.ts +10 -9
  352. package/dist/orchestrator.js +108 -97
  353. package/dist/patterns-cli.d.ts +2 -1
  354. package/dist/{pipeline-CZoNdFb5.d.ts → pipeline-C7qRsy6g.d.ts} +1 -1
  355. package/dist/policy-runtime.d.ts +2 -1
  356. package/dist/proactive-contention.d.ts +2 -1
  357. package/dist/provenance.d.ts +2 -1
  358. package/dist/{public-http-C9-CHc40.d.ts → public-http-CPpCsi35.d.ts} +1 -1
  359. package/dist/{qmd-VIjSCKIE.d.ts → qmd-YRLTa3AE.d.ts} +1 -1
  360. package/dist/qmd-preflight.d.ts +3 -2
  361. package/dist/qmd-recall-cache.d.ts +2 -1
  362. package/dist/qmd.d.ts +3 -2
  363. package/dist/recall-concurrency-config.d.ts +2 -1
  364. package/dist/recall-deep-expand-select.js +4 -44
  365. package/dist/recall-deep-expand-select.js.map +1 -1
  366. package/dist/recall-deep-frontier.js +4 -23
  367. package/dist/recall-deep-frontier.js.map +1 -1
  368. package/dist/recall-deep-rewrite.js +4 -23
  369. package/dist/recall-deep-rewrite.js.map +1 -1
  370. package/dist/recall-disclosure-escalation.d.ts +2 -1
  371. package/dist/recall-explain-renderer.d.ts +2 -1
  372. package/dist/recall-explain-renderer.js +3 -3
  373. package/dist/recall-memory-map.d.ts +2 -1
  374. package/dist/recall-navigate-access.d.ts +2 -1
  375. package/dist/recall-navigate-access.js +2 -2
  376. package/dist/recall-navigate-disclosure.d.ts +2 -1
  377. package/dist/recall-navigate-disclosure.js +1 -1
  378. package/dist/recall-navigate.d.ts +2 -1
  379. package/dist/recall-navigate.js +2 -2
  380. package/dist/recall-planner-llm.d.ts +2 -1
  381. package/dist/recall-state.d.ts +2 -1
  382. package/dist/recall-tag-filter.d.ts +2 -1
  383. package/dist/recall-timings.d.ts +2 -1
  384. package/dist/recall-xray-cli.d.ts +2 -1
  385. package/dist/recall-xray-cli.js +4 -4
  386. package/dist/recall-xray-renderer.d.ts +2 -1
  387. package/dist/recall-xray-renderer.js +3 -3
  388. package/dist/recall-xray.d.ts +2 -1
  389. package/dist/recall-xray.js +2 -2
  390. package/dist/reconcile/cursor.d.ts +2 -1
  391. package/dist/reconcile/manifest.d.ts +2 -1
  392. package/dist/reconcile/plan.d.ts +2 -1
  393. package/dist/replay/normalizers/chatgpt.d.ts +2 -1
  394. package/dist/replay/normalizers/claude.d.ts +2 -1
  395. package/dist/replay/normalizers/openclaw.d.ts +2 -1
  396. package/dist/replay/normalizers/shared.d.ts +2 -1
  397. package/dist/replay/runner.d.ts +2 -1
  398. package/dist/replay/types.d.ts +2 -1
  399. package/dist/replica-divergence.d.ts +2 -1
  400. package/dist/replica-peers-config.d.ts +2 -1
  401. package/dist/resolve-auth-token.d.ts +2 -1
  402. package/dist/resume-bundles.js +7 -6
  403. package/dist/retrieval-agents.d.ts +3 -2
  404. package/dist/retrieval-tiers.d.ts +2 -1
  405. package/dist/routing/engine.d.ts +2 -1
  406. package/dist/routing/store.d.ts +2 -1
  407. package/dist/salvage-envelope.d.ts +2 -1
  408. package/dist/{scope-profiles-DqbxQXIS.d.ts → scope-profiles-BVvqVzJX.d.ts} +1 -1
  409. package/dist/search/embed-helper.d.ts +2 -1
  410. package/dist/search/factory.d.ts +2 -1
  411. package/dist/search/factory.js +8 -8
  412. package/dist/search/index.d.ts +2 -1
  413. package/dist/search/index.js +13 -13
  414. package/dist/search/lancedb-backend.d.ts +2 -1
  415. package/dist/search/lancedb-backend.js +2 -2
  416. package/dist/search/meilisearch-backend.d.ts +2 -1
  417. package/dist/search/meilisearch-backend.js +2 -2
  418. package/dist/search/noop-backend.d.ts +2 -1
  419. package/dist/search/orama-backend.d.ts +2 -1
  420. package/dist/search/orama-backend.js +2 -2
  421. package/dist/search/port.d.ts +2 -1
  422. package/dist/search/remote-backend.d.ts +2 -1
  423. package/dist/{semantic-consolidation-DW3rEUoW.d.ts → semantic-consolidation-BzCI6Kuu.d.ts} +1 -1
  424. package/dist/semantic-consolidation.d.ts +3 -2
  425. package/dist/semantic-consolidation.js +14 -14
  426. package/dist/semantic-rule-promotion.js +13 -13
  427. package/dist/semantic-rule-verifier.d.ts +2 -1
  428. package/dist/semantic-rule-verifier.js +13 -13
  429. package/dist/{service-B2vJU_Bx.d.ts → service-DQ3Gscy5.d.ts} +2 -2
  430. package/dist/session-observer-bands.d.ts +2 -1
  431. package/dist/session-observer-state.d.ts +2 -1
  432. package/dist/shared-context/manager.d.ts +37 -1
  433. package/dist/shared-context/manager.js +2 -1
  434. package/dist/signal.d.ts +2 -1
  435. package/dist/source-agent-qualifier.d.ts +2 -1
  436. package/dist/source-agent-qualifier.js +13 -13
  437. package/dist/standup/build.js +13 -13
  438. package/dist/{storage-6fn7BPmb.d.ts → storage-DmTbQdD0.d.ts} +1 -1
  439. package/dist/storage.d.ts +3 -2
  440. package/dist/storage.js +12 -12
  441. package/dist/subject-config.d.ts +2 -1
  442. package/dist/summarizer.d.ts +2 -1
  443. package/dist/summary-snapshot.d.ts +2 -1
  444. package/dist/support-passport/index.d.ts +16 -14
  445. package/dist/support-passport/index.js +49 -37
  446. package/dist/temporal-supersession.d.ts +3 -2
  447. package/dist/temporal-timeline-recall.d.ts +2 -1
  448. package/dist/temporal-validity.d.ts +2 -1
  449. package/dist/threading.d.ts +2 -1
  450. package/dist/tier-migration.d.ts +3 -2
  451. package/dist/tier-routing.d.ts +2 -1
  452. package/dist/topics.d.ts +2 -1
  453. package/dist/transcript.d.ts +2 -1
  454. package/dist/transfer/capsule-export.js +2 -2
  455. package/dist/transfer/capsule-import.js +2 -2
  456. package/dist/transfer/export-okf.d.ts +2 -1
  457. package/dist/transfer/export-okf.js +14 -14
  458. package/dist/trust-score-stage.d.ts +2 -1
  459. package/dist/trust-score.d.ts +2 -1
  460. package/dist/{types-eM7QIcX2.d.ts → types-CLRTESSD.d.ts} +3 -1
  461. package/dist/types.d.ts +2 -1
  462. package/dist/types.js +1 -1
  463. package/dist/utility-runtime.d.ts +2 -1
  464. package/dist/verified-recall.js +13 -13
  465. package/dist/who-knows-cli.d.ts +13 -11
  466. package/dist/who-knows-cli.js +14 -14
  467. package/dist/who-knows.d.ts +13 -11
  468. package/dist/who-knows.js +13 -13
  469. package/dist/write-envelope.d.ts +2 -1
  470. package/package.json +2 -2
  471. package/src/access-boundary.ts +1 -0
  472. package/src/access-http.ts +5 -5
  473. package/src/access-mcp-output-schemas.ts +1 -0
  474. package/src/access-mcp.ts +3 -3
  475. package/src/access-operations-batch.ts +3 -1
  476. package/src/access-schema.ts +12 -0
  477. package/src/access-service.ts +162 -5
  478. package/src/access-surface-catalog.ts +2 -0
  479. package/src/cli/deep-recall-commands.ts +60 -0
  480. package/src/cli.ts +2 -2
  481. package/src/config.test.ts +19 -0
  482. package/src/config.ts +7 -0
  483. package/src/deep-recall-config.ts +83 -0
  484. package/src/deep-recall-http-glue.ts +75 -0
  485. package/src/deep-recall-mcp-tools.ts +33 -0
  486. package/src/deep-recall-policy-llm.ts +65 -0
  487. package/src/deep-recall-renderer.ts +41 -0
  488. package/src/deep-recall-seeds.ts +134 -0
  489. package/src/deep-recall-surface.test.ts +902 -0
  490. package/src/deep-recall.test.ts +348 -0
  491. package/src/deep-recall.ts +572 -0
  492. package/src/harmonic-retrieval.ts +78 -25
  493. package/src/mcp-read-only-tools.ts +1 -0
  494. package/src/shared-context/envelope-at.test.ts +23 -0
  495. package/src/shared-context/envelope-at.ts +12 -6
  496. package/src/shared-context/envelope-io.ts +184 -0
  497. package/src/shared-context/envelope-wiring.test.ts +193 -0
  498. package/src/shared-context/governance.ts +28 -9
  499. package/src/shared-context/iso-instant.ts +43 -0
  500. package/src/shared-context/manager.ts +74 -15
  501. package/src/shared-context/provenance.ts +3 -26
  502. package/src/shared-context/write-origin.test.ts +145 -0
  503. package/src/types.ts +3 -1
  504. package/dist/chunk-26JWBSWD.js.map +0 -1
  505. package/dist/chunk-3DT2F5OI.js.map +0 -1
  506. package/dist/chunk-4OFKZAJG.js.map +0 -1
  507. package/dist/chunk-6RPB2TDG.js.map +0 -1
  508. package/dist/chunk-AYWPIH4M.js.map +0 -1
  509. package/dist/chunk-HXWOVCS6.js.map +0 -1
  510. package/dist/chunk-IVAW3HBF.js.map +0 -1
  511. package/dist/chunk-K4E3Y3ZX.js.map +0 -1
  512. package/dist/chunk-QL4U3SJA.js.map +0 -1
  513. package/dist/chunk-TBRG2SYY.js.map +0 -1
  514. package/dist/chunk-VI637ILW.js.map +0 -1
  515. package/dist/chunk-XXW32OL7.js.map +0 -1
  516. /package/dist/{chunk-D5VPIJN3.js.map → chunk-227WJVPY.js.map} +0 -0
  517. /package/dist/{chunk-Y3BWCIY2.js.map → chunk-2EHDPHMD.js.map} +0 -0
  518. /package/dist/{chunk-2LKW6OO7.js.map → chunk-2XJDAEAM.js.map} +0 -0
  519. /package/dist/{chunk-P23JWI3D.js.map → chunk-3ITTF7YH.js.map} +0 -0
  520. /package/dist/{chunk-NGP2FPB2.js.map → chunk-4UVDLNHQ.js.map} +0 -0
  521. /package/dist/{chunk-FJMIQTMH.js.map → chunk-5YQ7RFSO.js.map} +0 -0
  522. /package/dist/{chunk-KQAFEZQX.js.map → chunk-7LCGFUMB.js.map} +0 -0
  523. /package/dist/{chunk-EESYTBXV.js.map → chunk-7NCUHD5U.js.map} +0 -0
  524. /package/dist/{chunk-X574KX52.js.map → chunk-7ZMU4XQT.js.map} +0 -0
  525. /package/dist/{chunk-SG3Z67FB.js.map → chunk-APZXA4WI.js.map} +0 -0
  526. /package/dist/{chunk-2QSZNTDO.js.map → chunk-AU7Q3LSC.js.map} +0 -0
  527. /package/dist/{chunk-VGMRI4J6.js.map → chunk-B75VCEX5.js.map} +0 -0
  528. /package/dist/{chunk-D35XLYQ7.js.map → chunk-BE4Y6GK6.js.map} +0 -0
  529. /package/dist/{chunk-ELKD5PCD.js.map → chunk-BEXFNGQ3.js.map} +0 -0
  530. /package/dist/{chunk-U5SRTYFS.js.map → chunk-BFDOBESV.js.map} +0 -0
  531. /package/dist/{chunk-OLT3YTDH.js.map → chunk-BIJAWZYW.js.map} +0 -0
  532. /package/dist/{chunk-FU2NYFX6.js.map → chunk-BO4PWIJY.js.map} +0 -0
  533. /package/dist/{chunk-JMAG7WZ7.js.map → chunk-BX6GW4KC.js.map} +0 -0
  534. /package/dist/{chunk-J2R275FN.js.map → chunk-CTCGHNWN.js.map} +0 -0
  535. /package/dist/{chunk-X5PIDJ3L.js.map → chunk-DA4ZMCBU.js.map} +0 -0
  536. /package/dist/{chunk-H6RSANGQ.js.map → chunk-ETZ7KKOS.js.map} +0 -0
  537. /package/dist/{chunk-XZBXINXZ.js.map → chunk-GIC6BASP.js.map} +0 -0
  538. /package/dist/{chunk-SXQZMC7R.js.map → chunk-GR4C3FHT.js.map} +0 -0
  539. /package/dist/{chunk-7DYGPGCT.js.map → chunk-H5IIBGDM.js.map} +0 -0
  540. /package/dist/{chunk-CNNXMIS6.js.map → chunk-HFRGCNFY.js.map} +0 -0
  541. /package/dist/{chunk-MAG6M3B6.js.map → chunk-HTOWFFAI.js.map} +0 -0
  542. /package/dist/{chunk-FOCMJEHH.js.map → chunk-I4QAH4SY.js.map} +0 -0
  543. /package/dist/{chunk-FSGCXGK6.js.map → chunk-I6DUKBUI.js.map} +0 -0
  544. /package/dist/{chunk-6FUMA6AA.js.map → chunk-JGXMA6HL.js.map} +0 -0
  545. /package/dist/{chunk-TA7UZZMW.js.map → chunk-JHTF22NQ.js.map} +0 -0
  546. /package/dist/{chunk-DZ3CNJPB.js.map → chunk-LDOQE34V.js.map} +0 -0
  547. /package/dist/{chunk-MEW53VQJ.js.map → chunk-LDWIPYJ6.js.map} +0 -0
  548. /package/dist/{chunk-227UFSEQ.js.map → chunk-LEPOP46W.js.map} +0 -0
  549. /package/dist/{chunk-KJTSWJZN.js.map → chunk-LF6SHWVV.js.map} +0 -0
  550. /package/dist/{chunk-G6OZZX7P.js.map → chunk-LJAP4KSW.js.map} +0 -0
  551. /package/dist/{chunk-NV6BTBUI.js.map → chunk-LJNLLNEM.js.map} +0 -0
  552. /package/dist/{chunk-FFFZEF6B.js.map → chunk-LUDXSSTW.js.map} +0 -0
  553. /package/dist/{chunk-PCH2CVCS.js.map → chunk-LWBSEYW3.js.map} +0 -0
  554. /package/dist/{chunk-FMUJGGKW.js.map → chunk-M7DGN6JZ.js.map} +0 -0
  555. /package/dist/{chunk-TZIHB2LP.js.map → chunk-MNH2GM4O.js.map} +0 -0
  556. /package/dist/{chunk-RACZB5HT.js.map → chunk-N37X5RU7.js.map} +0 -0
  557. /package/dist/{chunk-LK4TOYPU.js.map → chunk-NF3NMAG7.js.map} +0 -0
  558. /package/dist/{chunk-AG46P24C.js.map → chunk-NNBZS3DY.js.map} +0 -0
  559. /package/dist/{chunk-LZ2JTO7N.js.map → chunk-OASGWNYL.js.map} +0 -0
  560. /package/dist/{chunk-C2JCVZWX.js.map → chunk-OLBZ2WGG.js.map} +0 -0
  561. /package/dist/{chunk-Z3SQEEB6.js.map → chunk-OUKBMQ2O.js.map} +0 -0
  562. /package/dist/{chunk-2Z3DG5CQ.js.map → chunk-P6GKRT2H.js.map} +0 -0
  563. /package/dist/{chunk-UGA6PZTX.js.map → chunk-P7LVYPIX.js.map} +0 -0
  564. /package/dist/{chunk-VE45LRCE.js.map → chunk-QRDSXR3V.js.map} +0 -0
  565. /package/dist/{chunk-KS67VHXA.js.map → chunk-QUVWFZOU.js.map} +0 -0
  566. /package/dist/{chunk-AI4QFDPR.js.map → chunk-R7FXPG4T.js.map} +0 -0
  567. /package/dist/{chunk-X66BHMAU.js.map → chunk-RJ57OOCD.js.map} +0 -0
  568. /package/dist/{chunk-VXMKW7YN.js.map → chunk-TRLCMLX7.js.map} +0 -0
  569. /package/dist/{chunk-ELCMVOQT.js.map → chunk-V3HUBF7T.js.map} +0 -0
  570. /package/dist/{chunk-KMIAD7JR.js.map → chunk-VHAKBUBD.js.map} +0 -0
  571. /package/dist/{chunk-GS5IFIVE.js.map → chunk-VYD63IFH.js.map} +0 -0
  572. /package/dist/{chunk-WSFPNCRA.js.map → chunk-XFPHV65N.js.map} +0 -0
  573. /package/dist/{chunk-JCUG7AXZ.js.map → chunk-XJJYSX6F.js.map} +0 -0
  574. /package/dist/{chunk-I6DURYZI.js.map → chunk-XMIAU4CO.js.map} +0 -0
  575. /package/dist/{chunk-PJIGYPO5.js.map → chunk-XQGFIAG7.js.map} +0 -0
  576. /package/dist/{chunk-B2URC6LJ.js.map → chunk-YWN3GYI2.js.map} +0 -0
  577. /package/dist/{chunk-TG6JEJDV.js.map → chunk-Z33VUMKY.js.map} +0 -0
  578. /package/dist/{graph-edge-decay-DGTBFALQ.js.map → deep-recall-config.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/access-schema.ts"],"sourcesContent":["// Request/response schema validation for the Remnic HTTP API.\n// Uses zod for runtime validation — returns structured 400 errors with\n// field-level detail so consumers get clear feedback on malformed requests.\n\nimport { z } from \"zod\";\nimport {\n ACTION_CONFIDENCE_CONTEXT_READINESS,\n ACTION_CONFIDENCE_RISK_CATEGORIES,\n ACTION_CONFIDENCE_RULE_KINDS,\n} from \"./action-confidence.js\";\nimport { isValidCapsuleSince } from \"./transfer/capsule-export.js\";\nimport { validateArchiveRelativePath } from \"./transfer/fs-utils.js\";\nimport { CAPSULE_ID_PATTERN } from \"./transfer/types.js\";\nimport {\n OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES,\n OFFLINE_SYNC_MAX_MTIME_MS,\n} from \"./offline-sync.js\";\n\n// ---------------------------------------------------------------------------\n// Error formatting\n// ---------------------------------------------------------------------------\n\nexport interface SchemaValidationError {\n error: string;\n code: \"validation_error\";\n details: Array<{ field: string; message: string }>;\n}\n\nexport function formatZodError(error: z.ZodError): SchemaValidationError {\n return {\n error: \"request validation failed\",\n code: \"validation_error\",\n details: error.issues.map((issue) => ({\n field: issue.path.join(\".\") || \"(root)\",\n message: issue.message,\n })),\n };\n}\n\n// ---------------------------------------------------------------------------\n// Shared fields\n// ---------------------------------------------------------------------------\n\nconst namespaceSchema = z.string().trim().max(256).optional();\nconst sessionKeySchema = z.string().trim().min(1).max(512).optional();\nconst idempotencyKeySchema = z.string().trim().min(1).max(256).optional();\nconst cwdSchema = z.string().trim().min(1, \"cwd must be non-empty when provided\").max(2048).optional();\nconst projectTagSchema = z\n .string()\n .trim()\n .min(1, \"projectTag must be non-empty when provided\")\n .max(256)\n .optional();\nconst deadlineMsSchema = z.number().finite().min(0).max(Number.MAX_SAFE_INTEGER).optional();\nconst dryRunSchema = z.boolean().optional();\nconst schemaVersionSchema = z.number().int().optional();\nconst timeZoneSchema = z\n .string()\n .trim()\n .min(1)\n .max(128)\n .refine((value) => {\n try {\n Intl.DateTimeFormat(undefined, { timeZone: value });\n return true;\n } catch {\n return false;\n }\n }, \"must be a valid IANA timezone\");\n\n// ---------------------------------------------------------------------------\n// Recall\n// ---------------------------------------------------------------------------\n\n/**\n * Coding-agent context (issue #569). Optional payload that connectors may\n * ship with a recall request so the project/branch namespace overlay\n * applies to that recall. All fields are validated per CLAUDE.md #51 —\n * empty-string projectId / rootPath is rejected, not silently accepted.\n */\nexport const codingContextSchema = z\n .object({\n projectId: z.string().trim().min(1, \"codingContext.projectId is required\").max(128),\n branch: z.string().trim().max(256).nullable(),\n rootPath: z.string().trim().min(1, \"codingContext.rootPath is required\").max(1024),\n defaultBranch: z.string().trim().max(256).nullable(),\n })\n .nullable();\n\n/**\n * Recall disclosure depth (issue #677). Mirrors the `RecallDisclosure`\n * type in `types.ts` — keep these in sync. Default-application happens\n * inside `EngramAccessService.recall()`; the schema only accepts/rejects.\n * Invalid values throw a structured 400 instead of silently defaulting,\n * per CLAUDE.md rule 51.\n */\nexport const recallDisclosureSchema = z.enum([\"chunk\", \"section\", \"raw\"]);\n\n/**\n * Tag-match semantics (issue #689). `any` (default when `tags` is provided\n * and `tagMatch` is omitted) admits a result when it carries at least one\n * of the filter tags. `all` requires every filter tag to be present.\n * Schema rejects unknown values up front — never silently defaults\n * (CLAUDE.md rule 51).\n */\nexport const tagMatchSchema = z.enum([\"any\", \"all\"]);\n\nexport const recallRequestSchema = z.object({\n query: z.string().min(1, \"query is required\"),\n sessionKey: sessionKeySchema,\n namespace: namespaceSchema,\n topK: z.number().int().min(0).max(200).optional(),\n mode: z.enum([\"auto\", \"no_recall\", \"minimal\", \"full\", \"graph_mode\"]).optional(),\n includeDebug: z.boolean().optional(),\n idempotencyKey: idempotencyKeySchema,\n disclosure: recallDisclosureSchema.optional(),\n codingContext: codingContextSchema.optional(),\n /** Working directory for auto git-context resolution (issue #569). */\n cwd: cwdSchema,\n /**\n * Arbitrary project tag for non-git-based project scoping (issue #569).\n * Creates a coding context with `projectId: \"tag:<projectTag>\"`.\n */\n projectTag: projectTagSchema,\n /**\n * Historical recall pin (issue #680). ISO 8601 timestamp. The\n * schema only enforces the basic shape; the access service runs\n * `Date.parse` and emits a structured 400 on malformed input\n * (CLAUDE.md rule 51).\n */\n asOf: z.string().trim().min(1, \"asOf must be a non-empty ISO 8601 timestamp\").max(64).optional(),\n /**\n * Free-form recall tag filter (issue #689). When provided, recall results\n * whose frontmatter `tags` do not match the filter are removed before the\n * response is returned. Comparison is case-sensitive exact match.\n */\n tags: z.array(z.string().trim().min(1).max(256)).max(50).optional(),\n /**\n * Match mode for `tags` (issue #689). Defaults to `\"any\"` when `tags` is\n * provided and `tagMatch` is omitted. Ignored when `tags` is absent.\n */\n tagMatch: tagMatchSchema.optional(),\n /**\n * Include graph edges below `graphTraversalConfidenceFloor` for diagnostic\n * recall traversal (issue #681). Defaults to false.\n */\n includeLowConfidence: z.boolean().optional(),\n});\n\nexport const recallExplainRequestSchema = z.object({\n sessionKey: sessionKeySchema,\n namespace: namespaceSchema,\n});\n\n/**\n * Standalone \"set coding context\" request. Used by the HTTP endpoint\n * `POST /engram/v1/coding-context` and the MCP `remnic.set_coding_context`\n * tool (PR 7). `codingContext: null` clears the attached context.\n */\nexport const setCodingContextRequestSchema = z\n .object({\n sessionKey: z.string().trim().min(1, \"sessionKey is required\").max(512),\n codingContext: codingContextSchema.optional(),\n /**\n * Project tag shorthand for non-git-based project scoping. When\n * `codingContext` is omitted, this becomes\n * `{ projectId: \"tag:<projectTag>\", branch: null, rootPath: \"tag:<projectTag>\", defaultBranch: null }`.\n */\n projectTag: z.string().trim().min(1, \"projectTag must be non-empty when provided\").max(256).optional(),\n })\n .superRefine((value, ctx) => {\n if (value.codingContext === undefined && value.projectTag === undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"codingContext or projectTag is required\",\n path: [\"codingContext\"],\n });\n }\n });\n\n// ---------------------------------------------------------------------------\n// Observe\n// ---------------------------------------------------------------------------\n\nconst messageSchema = z.object({\n role: z.enum([\"user\", \"assistant\"]),\n content: z.string().min(1, \"message content must be non-empty\"),\n sourceFormat: z\n .enum([\"openai\", \"anthropic\", \"openclaw\", \"pi\", \"lossless-claw\", \"remnic\"])\n .nullable()\n .optional(),\n rawContent: z.unknown().nullable().optional(),\n parts: z\n .array(\n z.object({\n ordinal: z.number().int().min(0).nullable().optional(),\n kind: z.enum([\n \"text\",\n \"tool_call\",\n \"tool_result\",\n \"patch\",\n \"file_read\",\n \"file_write\",\n \"step_start\",\n \"step_finish\",\n \"snapshot\",\n \"retry\",\n ]),\n payload: z.record(z.string(), z.unknown()),\n toolName: z.string().nullable().optional(),\n tool_name: z.string().nullable().optional(),\n filePath: z.string().nullable().optional(),\n file_path: z.string().nullable().optional(),\n createdAt: z.string().nullable().optional(),\n created_at: z.string().nullable().optional(),\n }),\n )\n .nullable()\n .optional(),\n});\n\nexport const observeRequestSchema = z.object({\n sessionKey: z.string().trim().min(1, \"sessionKey is required\").max(512),\n messages: z.array(messageSchema).min(1, \"messages must be a non-empty array\"),\n namespace: namespaceSchema,\n skipExtraction: z.boolean().optional(),\n /**\n * Optional idempotency key for server-side dedup of retried observe POSTs\n * (issue #1649). A retry that reaches the daemon after the first attempt\n * already processed is replayed from cache instead of re-ingested. When the\n * key is reused with a DIFFERENT payload the request is rejected as a\n * conflict (same contract as memory_store/suggestion_submit).\n */\n idempotencyKey: idempotencyKeySchema,\n /** Working directory for auto git-context resolution (issue #569). */\n cwd: cwdSchema,\n /**\n * Arbitrary project tag for non-git-based project scoping (issue #569).\n * Creates a coding context with `projectId: \"tag:<projectTag>\"`.\n */\n projectTag: projectTagSchema,\n});\n\n// ---------------------------------------------------------------------------\n// Deep recall (issue #2332)\n// ---------------------------------------------------------------------------\n\nexport const deepRecallRequestSchema = z.object({\n query: z.string().trim().min(1, \"query is required\").max(2000),\n /** Optional policy-step ceiling; validated against the configured maximum in the service. */\n maxSteps: z.union([z.number().int().min(0), z.string()]).optional(),\n namespace: namespaceSchema,\n sessionKey: z.string().optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Memory store / suggestion submit\n// ---------------------------------------------------------------------------\n\nconst writeContentSchema = z.string().min(1, \"content is required\").max(50000);\nconst categorySchema = z\n .enum([\n \"fact\", \"preference\", \"correction\", \"entity\", \"decision\",\n \"relationship\", \"principle\", \"commitment\", \"moment\", \"skill\", \"rule\", \"procedure\",\n \"reasoning_trace\",\n ])\n .optional();\nconst confidenceSchema = z.number().min(0).max(1).optional();\nconst tagsSchema = z.array(z.string().max(256)).max(50).optional();\nconst entityRefSchema = z.string().trim().max(512).optional();\nconst ttlSchema = z.string().trim().max(128).optional();\nconst sourceReasonSchema = z.string().trim().max(2000).optional();\n\nexport const memoryStoreRequestSchema = z.object({\n schemaVersion: schemaVersionSchema,\n idempotencyKey: idempotencyKeySchema,\n dryRun: dryRunSchema,\n sessionKey: sessionKeySchema,\n content: writeContentSchema,\n category: categorySchema,\n confidence: confidenceSchema,\n namespace: namespaceSchema,\n tags: tagsSchema,\n entityRef: entityRefSchema,\n ttl: ttlSchema,\n sourceReason: sourceReasonSchema,\n // Git/project context for project-scoped writes (#1434). When no explicit\n // `namespace` is given, these route the write to the same project namespace\n // recall/observe resolve from `cwd`/`projectTag` (issue #569, rule 42). Also\n // lets MCP clients that auto-inject `cwd` (e.g. Pi MCPorter) call write tools.\n cwd: cwdSchema,\n projectTag: projectTagSchema,\n});\n\nexport const suggestionSubmitRequestSchema = memoryStoreRequestSchema;\n\n// ---------------------------------------------------------------------------\n// Review disposition\n// ---------------------------------------------------------------------------\n\nexport const reviewDispositionRequestSchema = z.object({\n memoryId: z.string().trim().min(1, \"memoryId is required\"),\n status: z.enum([\n \"active\", \"pending_review\", \"quarantined\", \"rejected\", \"superseded\", \"archived\",\n ]),\n reasonCode: z.string().trim().min(1, \"reasonCode is required\"),\n namespace: namespaceSchema,\n});\n\n// ---------------------------------------------------------------------------\n// Trust-zone promote\n// ---------------------------------------------------------------------------\n\nexport const trustZonePromoteRequestSchema = z.object({\n recordId: z.string().trim().min(1, \"recordId is required\"),\n targetZone: z.enum([\"working\", \"trusted\"], {\n errorMap: () => ({ message: \"targetZone must be 'working' or 'trusted'\" }),\n }),\n promotionReason: z.string().trim().min(1, \"promotionReason is required\"),\n recordedAt: z.string().trim().optional(),\n summary: z.string().trim().max(5000).optional(),\n dryRun: dryRunSchema,\n namespace: namespaceSchema,\n});\n\n// ---------------------------------------------------------------------------\n// Trust-zone demo-seed\n// ---------------------------------------------------------------------------\n\nexport const trustZoneDemoSeedRequestSchema = z.object({\n scenario: z.string().trim().max(256).optional(),\n recordedAt: z.string().trim().optional(),\n dryRun: dryRunSchema,\n namespace: namespaceSchema,\n});\n\n// ---------------------------------------------------------------------------\n// LCM search\n// ---------------------------------------------------------------------------\n\nexport const lcmSearchRequestSchema = z.object({\n query: z.string().min(1, \"query is required\"),\n sessionKey: sessionKeySchema,\n sessionPrefix: z.string().trim().min(1).max(512).optional(),\n namespace: namespaceSchema,\n limit: z.number().int().min(1).max(100).optional(),\n});\n\nexport const lcmCompactionFlushRequestSchema = z\n .object({\n sessionKey: z.string().trim().min(1, \"sessionKey is required\").max(512),\n namespace: namespaceSchema,\n cwd: cwdSchema,\n projectTag: projectTagSchema,\n /**\n * Optional multi-namespace flush used by delegate lifecycle replay. The\n * server handles the whole list as one quota-counted write.\n */\n namespaces: z.array(z.string().trim().max(256)).min(1).max(64).optional(),\n })\n .superRefine((value, ctx) => {\n if (value.namespace !== undefined && value.namespaces !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"namespace and namespaces are mutually exclusive\",\n path: [\"namespaces\"],\n });\n }\n if (\n value.namespaces !== undefined &&\n new Set(value.namespaces).size !== value.namespaces.length\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"namespaces must not contain duplicates\",\n path: [\"namespaces\"],\n });\n }\n });\n\nexport const extractionForceFlushRequestSchema = z.object({\n sessionKey: z.string().trim().min(1, \"sessionKey is required\").max(512),\n namespace: namespaceSchema,\n cwd: cwdSchema,\n projectTag: projectTagSchema,\n deadlineMs: deadlineMsSchema,\n});\n\nexport const lcmCompactionRecordRequestSchema = z.object({\n sessionKey: z.string().trim().min(1, \"sessionKey is required\").max(512),\n namespace: namespaceSchema,\n tokensBefore: z.number().int().min(0, \"tokensBefore must be a non-negative integer\"),\n tokensAfter: z.number().int().min(0, \"tokensAfter must be a non-negative integer\"),\n});\n\n// ---------------------------------------------------------------------------\n// Day summary\n// ---------------------------------------------------------------------------\n\nexport const daySummaryRequestSchema = z.object({\n memories: z.string().max(100000).optional(),\n sessionKey: sessionKeySchema,\n namespace: namespaceSchema,\n timeZone: timeZoneSchema.optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Capsule export\n// ---------------------------------------------------------------------------\n\nconst capsuleTopLevelSegmentSchema = z\n .string()\n .trim()\n .min(1)\n .max(128)\n .refine(\n (value) => !value.includes(\"/\") && !value.includes(\"\\\\\"),\n \"must be a top-level directory name without path separators\",\n );\n\nconst capsulePeerIdSchema = z\n .string()\n .trim()\n .min(1)\n .max(256)\n .refine(\n (value) => value !== \".\" && value !== \"..\" && !value.includes(\"/\") && !value.includes(\"\\\\\"),\n \"must be a plain peer id without path separators\",\n );\n\nconst capsuleIsoSinceSchema = z\n .string()\n .trim()\n .min(1, \"since must be a non-empty ISO 8601 timestamp\")\n .max(128)\n .refine(\n isValidCapsuleSince,\n \"since must be a valid ISO 8601 timestamp with no calendar overflow\",\n );\n\nexport const capsuleExportRequestSchema = z\n .object({\n name: z\n .string()\n .trim()\n .min(1, \"name is required\")\n .max(64, \"name must be 64 characters or fewer\")\n .regex(\n CAPSULE_ID_PATTERN,\n \"name must be alphanumeric with single dashes (no spaces, no leading/trailing dashes)\",\n ),\n namespace: namespaceSchema,\n since: capsuleIsoSinceSchema.optional(),\n includeKinds: z.array(capsuleTopLevelSegmentSchema).max(50).optional(),\n peerIds: z.array(capsulePeerIdSchema).max(100).optional(),\n includeTranscripts: z.boolean().optional(),\n encrypt: z.boolean().optional(),\n });\n\nexport const capsuleImportRequestSchema = z\n .object({\n archivePath: z.string().trim().min(1, \"archivePath is required\").max(4096),\n namespace: namespaceSchema,\n mode: z.enum([\"skip\", \"overwrite\", \"fork\"]).optional(),\n passphrase: z.string().min(1, \"passphrase must not be empty\").max(4096).optional(),\n });\n\nexport const capsuleListRequestSchema = z\n .object({\n namespace: namespaceSchema,\n sessionKey: sessionKeySchema,\n });\n\n// ---------------------------------------------------------------------------\n// Offline sync\n// ---------------------------------------------------------------------------\n\nfunction isValidOfflineSyncPath(value: string): boolean {\n try {\n validateArchiveRelativePath(value, \"path\");\n return true;\n } catch {\n return false;\n }\n}\n\nconst offlineSyncPathSchema = z\n .string()\n .trim()\n .min(1, \"path must be non-empty\")\n .max(4096)\n .refine(\n isValidOfflineSyncPath,\n \"path must be a POSIX relative path without unsafe segments\",\n );\n\nconst offlineSyncFileStateSchema = z.object({\n path: offlineSyncPathSchema,\n sha256: z.string().regex(/^[a-f0-9]{64}$/i, \"sha256 must be a 64-character hex digest\"),\n bytes: z.number().int().min(0),\n mtimeMs: z.number().finite().min(0).max(OFFLINE_SYNC_MAX_MTIME_MS),\n});\n\nconst offlineSyncBaseCapturedAtSchema = z\n .string()\n .trim()\n .min(1, \"baseCapturedAt must be non-empty when provided\")\n .max(64)\n .refine((value) => Number.isFinite(Date.parse(value)), {\n message: \"baseCapturedAt must be a valid ISO 8601 timestamp\",\n });\n\nexport const offlineSyncSnapshotRequestSchema = z.object({\n namespace: namespaceSchema,\n includeTranscripts: z.boolean().optional(),\n includeContent: z.boolean().optional(),\n baseCapturedAt: offlineSyncBaseCapturedAtSchema.optional(),\n baseFiles: z\n .array(offlineSyncFileStateSchema)\n .max(300_000, \"baseFiles must contain 300000 or fewer entries\")\n .optional(),\n});\n\nexport const offlineSyncApplyRequestSchema = z\n .object({\n namespace: namespaceSchema,\n changeset: z.unknown(),\n returnCurrentFiles: z.boolean().optional(),\n })\n .refine((value) => value.changeset !== undefined && value.changeset !== null, {\n message: \"changeset is required\",\n path: [\"changeset\"],\n });\n\nexport const offlineSyncFilesRequestSchema = z.object({\n namespace: namespaceSchema,\n includeTranscripts: z.boolean().optional(),\n paths: z\n .array(offlineSyncPathSchema)\n .max(5000, \"paths must contain 5000 or fewer entries\"),\n});\n\nexport const offlineSyncFileContentRequestSchema = z.object({\n namespace: namespaceSchema,\n includeTranscripts: z.boolean().optional(),\n path: offlineSyncPathSchema,\n offset: z.number().int().min(0).optional(),\n length: z.number().int().min(1).max(OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Action confidence\n// ---------------------------------------------------------------------------\n\nconst nullableOptional = <T extends z.ZodTypeAny>(schema: T) =>\n schema.optional().nullable().transform((value) => value ?? undefined);\n\nconst actionConfidenceRuleSchema = z\n .object({\n kind: z.enum(ACTION_CONFIDENCE_RULE_KINDS),\n description: nullableOptional(z.string().trim().min(1).max(2000)),\n matched: nullableOptional(z.boolean()),\n })\n .strict();\n\nconst actionConfidenceMemorySchema = z\n .object({\n source: nullableOptional(z.string().trim().min(1).max(256)),\n created: nullableOptional(z.string().trim().min(1).max(128)),\n updated: nullableOptional(z.string().trim().min(1).max(128)),\n scope: nullableOptional(z.string().trim().min(1).max(512)),\n userContextScopes: nullableOptional(z.array(z.string().trim().min(1).max(128)).max(50)),\n retrievalReason: nullableOptional(z.string().trim().min(1).max(2000)),\n confidence: nullableOptional(z.number().min(0).max(1)),\n stale: nullableOptional(z.boolean()),\n corrected: nullableOptional(z.boolean()),\n correctionState: nullableOptional(z.enum([\"none\", \"correction\", \"superseded\", \"disputed\", \"forgotten\"])),\n safeToUse: nullableOptional(z.boolean()),\n safety: nullableOptional(z.enum([\"safe\", \"requires-review\", \"blocked\"])),\n safetyReasons: nullableOptional(z.array(z.string().trim().min(1).max(1000)).max(50)),\n })\n .strict();\n\nexport const actionConfidenceRequestSchema = z\n .object({\n intendedAction: nullableOptional(z.string().trim().min(1).max(1000)),\n confidence: nullableOptional(z.number().min(0).max(1)),\n risk: nullableOptional(z.enum(ACTION_CONFIDENCE_RISK_CATEGORIES)),\n contextReadiness: nullableOptional(z.enum(ACTION_CONFIDENCE_CONTEXT_READINESS)),\n currentContextScopes: nullableOptional(z.array(z.string().trim().min(1).max(128)).max(50)),\n userRules: nullableOptional(z.array(actionConfidenceRuleSchema).max(100)),\n retrievedMemories: nullableOptional(z.array(actionConfidenceMemorySchema).max(200)),\n })\n .strict();\n\n// ---------------------------------------------------------------------------\n// Inferred types\n// ---------------------------------------------------------------------------\n\nexport type RecallRequest = z.infer<typeof recallRequestSchema>;\nexport type RecallExplainRequest = z.infer<typeof recallExplainRequestSchema>;\nexport type SetCodingContextRequest = z.infer<typeof setCodingContextRequestSchema>;\nexport type ObserveRequest = z.infer<typeof observeRequestSchema>;\nexport type MemoryStoreRequest = z.infer<typeof memoryStoreRequestSchema>;\nexport type SuggestionSubmitRequest = z.infer<typeof suggestionSubmitRequestSchema>;\nexport type ReviewDispositionRequest = z.infer<typeof reviewDispositionRequestSchema>;\nexport type TrustZonePromoteRequest = z.infer<typeof trustZonePromoteRequestSchema>;\nexport type TrustZoneDemoSeedRequest = z.infer<typeof trustZoneDemoSeedRequestSchema>;\nexport type LcmSearchRequest = z.infer<typeof lcmSearchRequestSchema>;\nexport type LcmCompactionFlushRequest = z.infer<typeof lcmCompactionFlushRequestSchema>;\nexport type ExtractionForceFlushRequest = z.infer<typeof extractionForceFlushRequestSchema>;\nexport type LcmCompactionRecordRequest = z.infer<typeof lcmCompactionRecordRequestSchema>;\nexport type DaySummaryRequest = z.infer<typeof daySummaryRequestSchema>;\nexport type CapsuleExportRequest = z.infer<typeof capsuleExportRequestSchema>;\nexport type CapsuleImportRequest = z.infer<typeof capsuleImportRequestSchema>;\nexport type CapsuleListRequest = z.infer<typeof capsuleListRequestSchema>;\nexport type OfflineSyncApplyRequest = z.infer<typeof offlineSyncApplyRequestSchema>;\nexport type OfflineSyncSnapshotRequest = z.infer<typeof offlineSyncSnapshotRequestSchema>;\nexport type OfflineSyncFilesRequest = z.infer<typeof offlineSyncFilesRequestSchema>;\nexport type OfflineSyncFileContentRequest = z.infer<typeof offlineSyncFileContentRequestSchema>;\nexport type ActionConfidenceRequest = z.infer<typeof actionConfidenceRequestSchema>;\n\n// ---------------------------------------------------------------------------\n// Validation helper\n// ---------------------------------------------------------------------------\n\nexport type SchemaName =\n | \"recall\"\n | \"recallExplain\"\n | \"setCodingContext\"\n | \"observe\"\n | \"memoryStore\"\n | \"suggestionSubmit\"\n | \"reviewDisposition\"\n | \"trustZonePromote\"\n | \"trustZoneDemoSeed\"\n | \"lcmSearch\"\n | \"lcmCompactionFlush\"\n | \"extractionForceFlush\"\n | \"lcmCompactionRecord\"\n | \"daySummary\"\n | \"capsuleExport\"\n | \"capsuleImport\"\n | \"capsuleList\"\n | \"offlineSyncSnapshot\"\n | \"offlineSyncFiles\"\n | \"offlineSyncFileContent\"\n | \"offlineSyncApply\"\n | \"actionConfidence\";\n\nexport type SchemaTypeFor<N extends SchemaName> =\n N extends \"recall\" ? RecallRequest\n : N extends \"recallExplain\" ? RecallExplainRequest\n : N extends \"setCodingContext\" ? SetCodingContextRequest\n : N extends \"observe\" ? ObserveRequest\n : N extends \"memoryStore\" ? MemoryStoreRequest\n : N extends \"suggestionSubmit\" ? SuggestionSubmitRequest\n : N extends \"reviewDisposition\" ? ReviewDispositionRequest\n : N extends \"trustZonePromote\" ? TrustZonePromoteRequest\n : N extends \"trustZoneDemoSeed\" ? TrustZoneDemoSeedRequest\n : N extends \"lcmSearch\" ? LcmSearchRequest\n : N extends \"lcmCompactionFlush\" ? LcmCompactionFlushRequest\n : N extends \"extractionForceFlush\" ? ExtractionForceFlushRequest\n : N extends \"lcmCompactionRecord\" ? LcmCompactionRecordRequest\n : N extends \"daySummary\" ? DaySummaryRequest\n : N extends \"capsuleExport\" ? CapsuleExportRequest\n : N extends \"capsuleImport\" ? CapsuleImportRequest\n : N extends \"capsuleList\" ? CapsuleListRequest\n : N extends \"offlineSyncSnapshot\" ? OfflineSyncSnapshotRequest\n : N extends \"offlineSyncFiles\" ? OfflineSyncFilesRequest\n : N extends \"offlineSyncFileContent\" ? OfflineSyncFileContentRequest\n : N extends \"offlineSyncApply\" ? OfflineSyncApplyRequest\n : N extends \"actionConfidence\" ? ActionConfidenceRequest\n : never;\n\nconst schemas: Record<SchemaName, z.ZodTypeAny> = {\n recall: recallRequestSchema,\n recallExplain: recallExplainRequestSchema,\n setCodingContext: setCodingContextRequestSchema,\n observe: observeRequestSchema,\n memoryStore: memoryStoreRequestSchema,\n suggestionSubmit: suggestionSubmitRequestSchema,\n reviewDisposition: reviewDispositionRequestSchema,\n trustZonePromote: trustZonePromoteRequestSchema,\n trustZoneDemoSeed: trustZoneDemoSeedRequestSchema,\n lcmSearch: lcmSearchRequestSchema,\n lcmCompactionFlush: lcmCompactionFlushRequestSchema,\n extractionForceFlush: extractionForceFlushRequestSchema,\n lcmCompactionRecord: lcmCompactionRecordRequestSchema,\n daySummary: daySummaryRequestSchema,\n capsuleExport: capsuleExportRequestSchema,\n capsuleImport: capsuleImportRequestSchema,\n capsuleList: capsuleListRequestSchema,\n offlineSyncSnapshot: offlineSyncSnapshotRequestSchema,\n offlineSyncFiles: offlineSyncFilesRequestSchema,\n offlineSyncFileContent: offlineSyncFileContentRequestSchema,\n offlineSyncApply: offlineSyncApplyRequestSchema,\n actionConfidence: actionConfidenceRequestSchema,\n};\n\n/**\n * Validate a request body against the named schema.\n * Returns `{ success: true, data }` on pass or\n * `{ success: false, error }` on failure with field-level detail.\n */\nexport function validateRequest<T = unknown>(\n schemaName: SchemaName,\n body: unknown,\n): { success: true; data: T } | { success: false; error: SchemaValidationError } {\n const schema = schemas[schemaName];\n if (!schema) {\n return {\n success: false,\n error: {\n error: `unknown schema: ${schemaName}`,\n code: \"validation_error\",\n details: [],\n },\n };\n }\n const result = schema.safeParse(stripNullsExceptCodingContext(body));\n if (result.success) {\n return { success: true, data: result.data as T };\n }\n return { success: false, error: formatZodError(result.error) };\n}\n\nfunction stripNullsExceptCodingContext(data: unknown): unknown {\n if (!data || typeof data !== \"object\" || Array.isArray(data)) return data;\n const cleaned: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data as Record<string, unknown>)) {\n if (value === null && key !== \"codingContext\") continue;\n cleaned[key] = value;\n }\n return cleaned;\n}\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAIA,SAAS,SAAS;AAwBX,SAAS,eAAe,OAA0C;AACvE,SAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS,MAAM,OAAO,IAAI,CAAC,WAAW;AAAA,MACpC,OAAO,MAAM,KAAK,KAAK,GAAG,KAAK;AAAA,MAC/B,SAAS,MAAM;AAAA,IACjB,EAAE;AAAA,EACJ;AACF;AAMA,IAAM,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAC5D,IAAM,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AACpE,IAAM,uBAAuB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AACxE,IAAM,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,qCAAqC,EAAE,IAAI,IAAI,EAAE,SAAS;AACrG,IAAM,mBAAmB,EACtB,OAAO,EACP,KAAK,EACL,IAAI,GAAG,4CAA4C,EACnD,IAAI,GAAG,EACP,SAAS;AACZ,IAAM,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,OAAO,gBAAgB,EAAE,SAAS;AAC1F,IAAM,eAAe,EAAE,QAAQ,EAAE,SAAS;AAC1C,IAAM,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACtD,IAAM,iBAAiB,EACpB,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,IAAI,GAAG,EACP,OAAO,CAAC,UAAU;AACjB,MAAI;AACF,SAAK,eAAe,QAAW,EAAE,UAAU,MAAM,CAAC;AAClD,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAAG,+BAA+B;AAY7B,IAAM,sBAAsB,EAChC,OAAO;AAAA,EACN,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,qCAAqC,EAAE,IAAI,GAAG;AAAA,EAClF,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC5C,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,oCAAoC,EAAE,IAAI,IAAI;AAAA,EACjF,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AACrD,CAAC,EACA,SAAS;AASL,IAAM,yBAAyB,EAAE,KAAK,CAAC,SAAS,WAAW,KAAK,CAAC;AASjE,IAAM,iBAAiB,EAAE,KAAK,CAAC,OAAO,KAAK,CAAC;AAE5C,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,mBAAmB;AAAA,EAC5C,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAChD,MAAM,EAAE,KAAK,CAAC,QAAQ,aAAa,WAAW,QAAQ,YAAY,CAAC,EAAE,SAAS;AAAA,EAC9E,cAAc,EAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,gBAAgB;AAAA,EAChB,YAAY,uBAAuB,SAAS;AAAA,EAC5C,eAAe,oBAAoB,SAAS;AAAA;AAAA,EAE5C,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,EAKL,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOZ,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,6CAA6C,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/F,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlE,UAAU,eAAe,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlC,sBAAsB,EAAE,QAAQ,EAAE,SAAS;AAC7C,CAAC;AAEM,IAAM,6BAA6B,EAAE,OAAO;AAAA,EACjD,YAAY;AAAA,EACZ,WAAW;AACb,CAAC;AAOM,IAAM,gCAAgC,EAC1C,OAAO;AAAA,EACN,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,wBAAwB,EAAE,IAAI,GAAG;AAAA,EACtE,eAAe,oBAAoB,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5C,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,4CAA4C,EAAE,IAAI,GAAG,EAAE,SAAS;AACvG,CAAC,EACA,YAAY,CAAC,OAAO,QAAQ;AAC3B,MAAI,MAAM,kBAAkB,UAAa,MAAM,eAAe,QAAW;AACvE,QAAI,SAAS;AAAA,MACX,MAAM,EAAE,aAAa;AAAA,MACrB,SAAS;AAAA,MACT,MAAM,CAAC,eAAe;AAAA,IACxB,CAAC;AAAA,EACH;AACF,CAAC;AAMH,IAAM,gBAAgB,EAAE,OAAO;AAAA,EAC7B,MAAM,EAAE,KAAK,CAAC,QAAQ,WAAW,CAAC;AAAA,EAClC,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,mCAAmC;AAAA,EAC9D,cAAc,EACX,KAAK,CAAC,UAAU,aAAa,YAAY,MAAM,iBAAiB,QAAQ,CAAC,EACzE,SAAS,EACT,SAAS;AAAA,EACZ,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,OAAO,EACJ;AAAA,IACC,EAAE,OAAO;AAAA,MACP,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,MACrD,MAAM,EAAE,KAAK;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,MACD,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC;AAAA,MACzC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MACzC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC1C,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MACzC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC1C,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,MAC1C,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAC7C,CAAC;AAAA,EACH,EACC,SAAS,EACT,SAAS;AACd,CAAC;AAEM,IAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,wBAAwB,EAAE,IAAI,GAAG;AAAA,EACtE,UAAU,EAAE,MAAM,aAAa,EAAE,IAAI,GAAG,oCAAoC;AAAA,EAC5E,WAAW;AAAA,EACX,gBAAgB,EAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrC,gBAAgB;AAAA;AAAA,EAEhB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,EAKL,YAAY;AACd,CAAC;AAMM,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,mBAAmB,EAAE,IAAI,GAAI;AAAA;AAAA,EAE7D,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAClE,WAAW;AAAA,EACX,YAAY,EAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAMD,IAAM,qBAAqB,EAAE,OAAO,EAAE,IAAI,GAAG,qBAAqB,EAAE,IAAI,GAAK;AAC7E,IAAM,iBAAiB,EACpB,KAAK;AAAA,EACJ;AAAA,EAAQ;AAAA,EAAc;AAAA,EAAc;AAAA,EAAU;AAAA,EAC9C;AAAA,EAAgB;AAAA,EAAa;AAAA,EAAc;AAAA,EAAU;AAAA,EAAS;AAAA,EAAQ;AAAA,EACtE;AACF,CAAC,EACA,SAAS;AACZ,IAAM,mBAAmB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAC3D,IAAM,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AACjE,IAAM,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAC5D,IAAM,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AACtD,IAAM,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAEzD,IAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,WAAW;AAAA,EACX,KAAK;AAAA,EACL,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,EAKd,KAAK;AAAA,EACL,YAAY;AACd,CAAC;AAEM,IAAM,gCAAgC;AAMtC,IAAM,iCAAiC,EAAE,OAAO;AAAA,EACrD,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,sBAAsB;AAAA,EACzD,QAAQ,EAAE,KAAK;AAAA,IACb;AAAA,IAAU;AAAA,IAAkB;AAAA,IAAe;AAAA,IAAY;AAAA,IAAc;AAAA,EACvE,CAAC;AAAA,EACD,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,wBAAwB;AAAA,EAC7D,WAAW;AACb,CAAC;AAMM,IAAM,gCAAgC,EAAE,OAAO;AAAA,EACpD,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,sBAAsB;AAAA,EACzD,YAAY,EAAE,KAAK,CAAC,WAAW,SAAS,GAAG;AAAA,IACzC,UAAU,OAAO,EAAE,SAAS,4CAA4C;AAAA,EAC1E,CAAC;AAAA,EACD,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,6BAA6B;AAAA,EACvE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,EACvC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAC9C,QAAQ;AAAA,EACR,WAAW;AACb,CAAC;AAMM,IAAM,iCAAiC,EAAE,OAAO;AAAA,EACrD,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC9C,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,EACvC,QAAQ;AAAA,EACR,WAAW;AACb,CAAC;AAMM,IAAM,yBAAyB,EAAE,OAAO;AAAA,EAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,mBAAmB;AAAA,EAC5C,YAAY;AAAA,EACZ,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC1D,WAAW;AAAA,EACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AACnD,CAAC;AAEM,IAAM,kCAAkC,EAC5C,OAAO;AAAA,EACN,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,wBAAwB,EAAE,IAAI,GAAG;AAAA,EACtE,WAAW;AAAA,EACX,KAAK;AAAA,EACL,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAKZ,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAC1E,CAAC,EACA,YAAY,CAAC,OAAO,QAAQ;AAC3B,MAAI,MAAM,cAAc,UAAa,MAAM,eAAe,QAAW;AACnE,QAAI,SAAS;AAAA,MACX,MAAM,EAAE,aAAa;AAAA,MACrB,SAAS;AAAA,MACT,MAAM,CAAC,YAAY;AAAA,IACrB,CAAC;AAAA,EACH;AACA,MACE,MAAM,eAAe,UACrB,IAAI,IAAI,MAAM,UAAU,EAAE,SAAS,MAAM,WAAW,QACpD;AACA,QAAI,SAAS;AAAA,MACX,MAAM,EAAE,aAAa;AAAA,MACrB,SAAS;AAAA,MACT,MAAM,CAAC,YAAY;AAAA,IACrB,CAAC;AAAA,EACH;AACF,CAAC;AAEI,IAAM,oCAAoC,EAAE,OAAO;AAAA,EACxD,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,wBAAwB,EAAE,IAAI,GAAG;AAAA,EACtE,WAAW;AAAA,EACX,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,YAAY;AACd,CAAC;AAEM,IAAM,mCAAmC,EAAE,OAAO;AAAA,EACvD,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,wBAAwB,EAAE,IAAI,GAAG;AAAA,EACtE,WAAW;AAAA,EACX,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,6CAA6C;AAAA,EACnF,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,4CAA4C;AACnF,CAAC;AAMM,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,UAAU,EAAE,OAAO,EAAE,IAAI,GAAM,EAAE,SAAS;AAAA,EAC1C,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU,eAAe,SAAS;AACpC,CAAC;AAMD,IAAM,+BAA+B,EAClC,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,IAAI,GAAG,EACP;AAAA,EACC,CAAC,UAAU,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,SAAS,IAAI;AAAA,EACvD;AACF;AAEF,IAAM,sBAAsB,EACzB,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,IAAI,GAAG,EACP;AAAA,EACC,CAAC,UAAU,UAAU,OAAO,UAAU,QAAQ,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,SAAS,IAAI;AAAA,EAC1F;AACF;AAEF,IAAM,wBAAwB,EAC3B,OAAO,EACP,KAAK,EACL,IAAI,GAAG,8CAA8C,EACrD,IAAI,GAAG,EACP;AAAA,EACC;AAAA,EACA;AACF;AAEK,IAAM,6BAA6B,EACvC,OAAO;AAAA,EACN,MAAM,EACH,OAAO,EACP,KAAK,EACL,IAAI,GAAG,kBAAkB,EACzB,IAAI,IAAI,qCAAqC,EAC7C;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,WAAW;AAAA,EACX,OAAO,sBAAsB,SAAS;AAAA,EACtC,cAAc,EAAE,MAAM,4BAA4B,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,EACrE,SAAS,EAAE,MAAM,mBAAmB,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACxD,oBAAoB,EAAE,QAAQ,EAAE,SAAS;AAAA,EACzC,SAAS,EAAE,QAAQ,EAAE,SAAS;AAChC,CAAC;AAEI,IAAM,6BAA6B,EACvC,OAAO;AAAA,EACN,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,yBAAyB,EAAE,IAAI,IAAI;AAAA,EACzE,WAAW;AAAA,EACX,MAAM,EAAE,KAAK,CAAC,QAAQ,aAAa,MAAM,CAAC,EAAE,SAAS;AAAA,EACrD,YAAY,EAAE,OAAO,EAAE,IAAI,GAAG,8BAA8B,EAAE,IAAI,IAAI,EAAE,SAAS;AACnF,CAAC;AAEI,IAAM,2BAA2B,EACrC,OAAO;AAAA,EACN,WAAW;AAAA,EACX,YAAY;AACd,CAAC;AAMH,SAAS,uBAAuB,OAAwB;AACtD,MAAI;AACF,gCAA4B,OAAO,MAAM;AACzC,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,IAAM,wBAAwB,EAC3B,OAAO,EACP,KAAK,EACL,IAAI,GAAG,wBAAwB,EAC/B,IAAI,IAAI,EACR;AAAA,EACC;AAAA,EACA;AACF;AAEF,IAAM,6BAA6B,EAAE,OAAO;AAAA,EAC1C,MAAM;AAAA,EACN,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,0CAA0C;AAAA,EACtF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAAA,EAC7B,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,yBAAyB;AACnE,CAAC;AAED,IAAM,kCAAkC,EACrC,OAAO,EACP,KAAK,EACL,IAAI,GAAG,gDAAgD,EACvD,IAAI,EAAE,EACN,OAAO,CAAC,UAAU,OAAO,SAAS,KAAK,MAAM,KAAK,CAAC,GAAG;AAAA,EACrD,SAAS;AACX,CAAC;AAEI,IAAM,mCAAmC,EAAE,OAAO;AAAA,EACvD,WAAW;AAAA,EACX,oBAAoB,EAAE,QAAQ,EAAE,SAAS;AAAA,EACzC,gBAAgB,EAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,gBAAgB,gCAAgC,SAAS;AAAA,EACzD,WAAW,EACR,MAAM,0BAA0B,EAChC,IAAI,KAAS,gDAAgD,EAC7D,SAAS;AACd,CAAC;AAEM,IAAM,gCAAgC,EAC1C,OAAO;AAAA,EACN,WAAW;AAAA,EACX,WAAW,EAAE,QAAQ;AAAA,EACrB,oBAAoB,EAAE,QAAQ,EAAE,SAAS;AAC3C,CAAC,EACA,OAAO,CAAC,UAAU,MAAM,cAAc,UAAa,MAAM,cAAc,MAAM;AAAA,EAC5E,SAAS;AAAA,EACT,MAAM,CAAC,WAAW;AACpB,CAAC;AAEI,IAAM,gCAAgC,EAAE,OAAO;AAAA,EACpD,WAAW;AAAA,EACX,oBAAoB,EAAE,QAAQ,EAAE,SAAS;AAAA,EACzC,OAAO,EACJ,MAAM,qBAAqB,EAC3B,IAAI,KAAM,0CAA0C;AACzD,CAAC;AAEM,IAAM,sCAAsC,EAAE,OAAO;AAAA,EAC1D,WAAW;AAAA,EACX,oBAAoB,EAAE,QAAQ,EAAE,SAAS;AAAA,EACzC,MAAM;AAAA,EACN,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACzC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,yCAAyC,EAAE,SAAS;AAC1F,CAAC;AAMD,IAAM,mBAAmB,CAAyB,WAChD,OAAO,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,SAAS,MAAS;AAEtE,IAAM,6BAA6B,EAChC,OAAO;AAAA,EACN,MAAM,EAAE,KAAK,4BAA4B;AAAA,EACzC,aAAa,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,CAAC;AAAA,EAChE,SAAS,iBAAiB,EAAE,QAAQ,CAAC;AACvC,CAAC,EACA,OAAO;AAEV,IAAM,+BAA+B,EAClC,OAAO;AAAA,EACN,QAAQ,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;AAAA,EAC1D,SAAS,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;AAAA,EAC3D,SAAS,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;AAAA,EAC3D,OAAO,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;AAAA,EACzD,mBAAmB,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;AAAA,EACtF,iBAAiB,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,CAAC;AAAA,EACpE,YAAY,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAAA,EACrD,OAAO,iBAAiB,EAAE,QAAQ,CAAC;AAAA,EACnC,WAAW,iBAAiB,EAAE,QAAQ,CAAC;AAAA,EACvC,iBAAiB,iBAAiB,EAAE,KAAK,CAAC,QAAQ,cAAc,cAAc,YAAY,WAAW,CAAC,CAAC;AAAA,EACvG,WAAW,iBAAiB,EAAE,QAAQ,CAAC;AAAA,EACvC,QAAQ,iBAAiB,EAAE,KAAK,CAAC,QAAQ,mBAAmB,SAAS,CAAC,CAAC;AAAA,EACvE,eAAe,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,CAAC,EAAE,IAAI,EAAE,CAAC;AACrF,CAAC,EACA,OAAO;AAEH,IAAM,gCAAgC,EAC1C,OAAO;AAAA,EACN,gBAAgB,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,CAAC;AAAA,EACnE,YAAY,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAAA,EACrD,MAAM,iBAAiB,EAAE,KAAK,iCAAiC,CAAC;AAAA,EAChE,kBAAkB,iBAAiB,EAAE,KAAK,mCAAmC,CAAC;AAAA,EAC9E,sBAAsB,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;AAAA,EACzF,WAAW,iBAAiB,EAAE,MAAM,0BAA0B,EAAE,IAAI,GAAG,CAAC;AAAA,EACxE,mBAAmB,iBAAiB,EAAE,MAAM,4BAA4B,EAAE,IAAI,GAAG,CAAC;AACpF,CAAC,EACA,OAAO;AAkFV,IAAM,UAA4C;AAAA,EAChD,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,SAAS;AAAA,EACT,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,eAAe;AAAA,EACf,aAAa;AAAA,EACb,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,kBAAkB;AACpB;AAOO,SAAS,gBACd,YACA,MAC+E;AAC/E,QAAM,SAAS,QAAQ,UAAU;AACjC,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,QACL,OAAO,mBAAmB,UAAU;AAAA,QACpC,MAAM;AAAA,QACN,SAAS,CAAC;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACA,QAAM,SAAS,OAAO,UAAU,8BAA8B,IAAI,CAAC;AACnE,MAAI,OAAO,SAAS;AAClB,WAAO,EAAE,SAAS,MAAM,MAAM,OAAO,KAAU;AAAA,EACjD;AACA,SAAO,EAAE,SAAS,OAAO,OAAO,eAAe,OAAO,KAAK,EAAE;AAC/D;AAEA,SAAS,8BAA8B,MAAwB;AAC7D,MAAI,CAAC,QAAQ,OAAO,SAAS,YAAY,MAAM,QAAQ,IAAI,EAAG,QAAO;AACrE,QAAM,UAAmC,CAAC;AAC1C,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAA+B,GAAG;AAC1E,QAAI,UAAU,QAAQ,QAAQ,gBAAiB;AAC/C,YAAQ,GAAG,IAAI;AAAA,EACjB;AACA,SAAO;AACT;","names":[]}
@@ -0,0 +1,42 @@
1
+ import {
2
+ deepRecallRequestSchema
3
+ } from "./chunk-NHLEFBE2.js";
4
+ import {
5
+ EngramAccessInputError
6
+ } from "./chunk-2Z24E5W2.js";
7
+
8
+ // src/deep-recall-http-glue.ts
9
+ function coerceMaxSteps(raw) {
10
+ if (raw === void 0 || raw === null) return void 0;
11
+ const value = typeof raw === "string" ? Number(raw) : raw;
12
+ if (typeof value !== "number" || !Number.isFinite(value) || !Number.isInteger(value) || value < 0) {
13
+ throw new EngramAccessInputError("maxSteps must be a non-negative integer");
14
+ }
15
+ return value;
16
+ }
17
+ async function respondDeepRecall(req, res, respondJson, readJsonBody, service, scopeFor) {
18
+ const parsed = deepRecallRequestSchema.safeParse(await readJsonBody(req));
19
+ if (!parsed.success) {
20
+ respondJson(
21
+ res,
22
+ 400,
23
+ { error: "invalid_request", detail: parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ") }
24
+ );
25
+ return;
26
+ }
27
+ const maxSteps = coerceMaxSteps(parsed.data.maxSteps);
28
+ const scope = scopeFor(parsed.data.namespace, parsed.data.sessionKey);
29
+ const result = await service.deepRecall({
30
+ query: parsed.data.query,
31
+ ...maxSteps !== void 0 ? { maxSteps } : {},
32
+ namespace: scope.namespace,
33
+ sessionKey: scope.sessionKey,
34
+ authenticatedPrincipal: scope.authenticatedPrincipal
35
+ });
36
+ respondJson(res, 200, result);
37
+ }
38
+
39
+ export {
40
+ respondDeepRecall
41
+ };
42
+ //# sourceMappingURL=chunk-NN5CQTAJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/deep-recall-http-glue.ts"],"sourcesContent":["/**\n * Deep-recall HTTP glue (issue #2332) — route body lives here so\n * access-http.ts stays at its structural ceiling (same seam as\n * meetings/http-glue.ts and location/http-glue.ts).\n *\n * Input errors map to 400; everything else rethrows so backend faults keep\n * flowing to the global 500 handler. `deepRecall.enabled` gating lives in\n * EngramAccessService — this module only translates transport shape.\n */\n\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport { deepRecallRequestSchema } from \"./access-schema.js\";\nimport { EngramAccessInputError } from \"./access-errors.js\";\nimport type { EngramAccessService } from \"./access-service.js\";\n\ntype RespondJson = (res: ServerResponse, status: number, payload: unknown) => void;\ntype ReadJsonBody = (req: IncomingMessage) => Promise<unknown>;\n\nfunction coerceMaxSteps(raw: unknown): number | undefined {\n if (raw === undefined || raw === null) return undefined;\n const value = typeof raw === \"string\" ? Number(raw) : raw;\n if (typeof value !== \"number\" || !Number.isFinite(value) || !Number.isInteger(value) || value < 0) {\n throw new EngramAccessInputError(\"maxSteps must be a non-negative integer\");\n }\n return value;\n}\n\nexport async function respondDeepRecall(\n req: IncomingMessage,\n res: ServerResponse,\n respondJson: RespondJson,\n readJsonBody: ReadJsonBody,\n service: EngramAccessService,\n /**\n * Resolve the caller scope for a body-supplied namespace/sessionKey. The\n * body `namespace` is user-controlled, so it MUST flow through the SAME\n * effective-namespace allow-list gate as the query-string value (issue\n * #1850 finding 2 / #2332 review): a scoped bearer that passes an allowed\n * `?namespace=` while setting a different `namespace` in the body would\n * otherwise read another tenant. access-http supplies the gate and applies\n * the query-string fallback, so this module never selects a namespace of\n * its own. Throws 403 when the effective namespace is not permitted.\n *\n * `authenticatedPrincipal` is the identity the transport authenticated, and\n * it MUST reach the service: authorization and the audit trail derive from\n * the presenting principal, never from the client-supplied `sessionKey`.\n * Dropping it let a crafted key matching another principal rule read that\n * principal's namespaces, and made a legitimate namespace-enabled request\n * with no session key fail as unauthenticated.\n */\n scopeFor: (\n bodyNamespace?: string,\n bodySessionKey?: string,\n ) => { namespace?: string; sessionKey?: string; authenticatedPrincipal?: string },\n): Promise<void> {\n const parsed = deepRecallRequestSchema.safeParse(await readJsonBody(req));\n if (!parsed.success) {\n respondJson(\n res,\n 400,\n { error: \"invalid_request\", detail: parsed.error.issues.map((i) => `${i.path.join(\".\")}: ${i.message}`).join(\"; \") },\n );\n return;\n }\n const maxSteps = coerceMaxSteps(parsed.data.maxSteps);\n const scope = scopeFor(parsed.data.namespace, parsed.data.sessionKey);\n const result = await service.deepRecall({\n query: parsed.data.query,\n ...(maxSteps !== undefined ? { maxSteps } : {}),\n namespace: scope.namespace,\n sessionKey: scope.sessionKey,\n authenticatedPrincipal: scope.authenticatedPrincipal,\n });\n respondJson(res, 200, result);\n}\n"],"mappings":";;;;;;;;AAkBA,SAAS,eAAe,KAAkC;AACxD,MAAI,QAAQ,UAAa,QAAQ,KAAM,QAAO;AAC9C,QAAM,QAAQ,OAAO,QAAQ,WAAW,OAAO,GAAG,IAAI;AACtD,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,KAAK,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,GAAG;AACjG,UAAM,IAAI,uBAAuB,yCAAyC;AAAA,EAC5E;AACA,SAAO;AACT;AAEA,eAAsB,kBACpB,KACA,KACA,aACA,cACA,SAkBA,UAIe;AACf,QAAM,SAAS,wBAAwB,UAAU,MAAM,aAAa,GAAG,CAAC;AACxE,MAAI,CAAC,OAAO,SAAS;AACnB;AAAA,MACE;AAAA,MACA;AAAA,MACA,EAAE,OAAO,mBAAmB,QAAQ,OAAO,MAAM,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,IAAI,EAAE;AAAA,IACrH;AACA;AAAA,EACF;AACA,QAAM,WAAW,eAAe,OAAO,KAAK,QAAQ;AACpD,QAAM,QAAQ,SAAS,OAAO,KAAK,WAAW,OAAO,KAAK,UAAU;AACpE,QAAM,SAAS,MAAM,QAAQ,WAAW;AAAA,IACtC,OAAO,OAAO,KAAK;AAAA,IACnB,GAAI,aAAa,SAAY,EAAE,SAAS,IAAI,CAAC;AAAA,IAC7C,WAAW,MAAM;AAAA,IACjB,YAAY,MAAM;AAAA,IAClB,wBAAwB,MAAM;AAAA,EAChC,CAAC;AACD,cAAY,KAAK,KAAK,MAAM;AAC9B;","names":[]}
@@ -1,10 +1,10 @@
1
+ import {
2
+ scanMemoryDir
3
+ } from "./chunk-W7IGLX4G.js";
1
4
  import {
2
5
  isSearchAborted,
3
6
  throwIfSearchAborted
4
7
  } from "./chunk-GUMZC2BO.js";
5
- import {
6
- scanMemoryDir
7
- } from "./chunk-W7IGLX4G.js";
8
8
  import {
9
9
  reportSearchDegradation,
10
10
  resolveEnsureCollectionArgs
@@ -253,4 +253,4 @@ function isMeilisearchIndexNotFoundError(err) {
253
253
  export {
254
254
  MeilisearchBackend
255
255
  };
256
- //# sourceMappingURL=chunk-AG46P24C.js.map
256
+ //# sourceMappingURL=chunk-NNBZS3DY.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportCreateGrantRequestSchema,
3
3
  defineOperation
4
- } from "./chunk-AYWPIH4M.js";
4
+ } from "./chunk-5P2KNFJZ.js";
5
5
  import {
6
6
  SupportPassportCardCategorySchema,
7
7
  SupportPassportMemoryIdSchema,
@@ -220,4 +220,4 @@ var supportPassportGrantAskOperation = defineOperation({
220
220
  result: await ctx.service.supportPassportAskGrant(grantId, secret, question, ctx.abortSignal)
221
221
  })
222
222
  });
223
- //# sourceMappingURL=chunk-LZ2JTO7N.js.map
223
+ //# sourceMappingURL=chunk-OASGWNYL.js.map
@@ -0,0 +1,62 @@
1
+ // src/deep-recall-seeds.ts
2
+ function collectionPrefixStrippedPath(resultPath) {
3
+ const trimmed = resultPath.trim();
4
+ if (trimmed.startsWith("qmd:///")) {
5
+ const relative = trimmed.slice("qmd:///".length).replace(/^\/+/, "");
6
+ return relative.length > 0 ? relative : null;
7
+ }
8
+ if (trimmed.startsWith("/")) {
9
+ const relative = trimmed.replace(/^\/+/, "");
10
+ return relative.length > 0 ? relative : null;
11
+ }
12
+ return null;
13
+ }
14
+ async function resolveSeedMemoryId(resolver, storage, namespace, resultPath) {
15
+ if (typeof resultPath !== "string" || resultPath.length === 0) return null;
16
+ const attempts = [resultPath];
17
+ const stripped = collectionPrefixStrippedPath(resultPath);
18
+ if (stripped !== null) attempts.push(stripped);
19
+ for (const attempt of attempts) {
20
+ const memory = await resolver.readQmdResultMemory(attempt, storage, [namespace]);
21
+ const id = memory?.frontmatter?.id;
22
+ if (typeof id === "string" && id.length > 0) return id;
23
+ }
24
+ return null;
25
+ }
26
+ function createDeepRecallSeedSearch(deps) {
27
+ return async (query, limit) => {
28
+ if (limit <= 0) return [];
29
+ const unavailable = [];
30
+ const hits = await deps.router.searchAcrossNamespaces({
31
+ query,
32
+ namespaces: [deps.namespace],
33
+ maxResults: limit,
34
+ execution: {
35
+ onDegradation: (degradation) => {
36
+ if (degradation.code === "backend_unavailable") unavailable.push(degradation);
37
+ }
38
+ }
39
+ });
40
+ if (unavailable.length > 0) {
41
+ throw new Error(
42
+ `deep recall seed search unavailable: ${unavailable.map((d) => d.detail ?? d.code).join("; ")}`
43
+ );
44
+ }
45
+ const seeds = [];
46
+ for (const hit of hits) {
47
+ if (typeof hit.path !== "string" || hit.path.length === 0) continue;
48
+ const memoryId = await resolveSeedMemoryId(deps.resolver, deps.storage, deps.namespace, hit.path) ?? hit.docid;
49
+ if (typeof memoryId !== "string" || memoryId.length === 0) continue;
50
+ seeds.push({
51
+ memoryId,
52
+ score: typeof hit.score === "number" && Number.isFinite(hit.score) ? hit.score : 0
53
+ });
54
+ }
55
+ return seeds;
56
+ };
57
+ }
58
+
59
+ export {
60
+ createDeepRecallSeedSearch
61
+ };
62
+ //# sourceMappingURL=chunk-OEDW4ER7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/deep-recall-seeds.ts"],"sourcesContent":["/**\n * Deep-recall seed retrieval (issue #2332 review).\n *\n * Seeds route through the SAME namespace search router the rest of the read\n * path uses, so a non-default caller searches its own suffixed collection\n * instead of the base (default-namespace) collection — read and write resolve\n * through one resolver, never two (§30).\n *\n * Each hit is resolved to a real memory id through the shared QMD result\n * resolver (`QmdResultResolver.readQmdResultMemory`), per hit and bounded by\n * the requested limit, instead of pre-scanning the whole namespace corpus to\n * build a path index. With namespaces disabled the fanout queries the QMD\n * backend directly, so hits keep the indexer's raw path forms; the resolver\n * decodes `qmd://<collection>/` URIs and `<collection>/`-prefixed relatives,\n * and the two forms it cannot decode (`qmd:///`, a leading `/`) are stripped\n * for one retry. A hit with no path is dropped: its namespace membership\n * cannot be verified, and a bare docid from a foreign collection must never\n * enter the working set as a resolved memory.\n *\n * An unavailable namespace backend (or a missing collection) contributes an\n * empty result set and reports itself only through `execution.onDegradation`,\n * so the observer is REQUIRED here: without it a dead index is indistinguishable\n * from a healthy empty one and deep recall would answer `ok: true` with zero\n * entries instead of the advertised `backend_unavailable` failure.\n */\n\nimport type { DeepRecallSeedHit } from \"./deep-recall.js\";\nimport type { SearchDegradation } from \"./search/port.js\";\n\n/** Namespace-scoped search entrypoint (satisfied by `Orchestrator.searchAcrossNamespaces`). */\nexport interface DeepRecallSeedRouter {\n searchAcrossNamespaces(options: {\n query: string;\n namespaces: string[];\n maxResults?: number;\n execution?: { onDegradation?: (degradation: SearchDegradation) => void };\n }): Promise<ReadonlyArray<{ path?: string; docid?: string; score?: number }>>;\n}\n\n/** Namespace-scoped storage read (satisfied by `StorageManager`). */\nexport interface DeepRecallSeedStorage {\n readonly dir: string;\n readMemoryByPath(filePath: string): Promise<{ frontmatter: { id?: string } } | null>;\n}\n\n/** Full QMD hit -> memory resolver (satisfied by `QmdResultResolver#readQmdResultMemory`). */\nexport interface DeepRecallSeedResultResolver {\n readQmdResultMemory(\n resultPath: string,\n fallbackStorage: DeepRecallSeedStorage,\n recallNamespaces?: readonly string[],\n preferredNamespace?: string,\n ): Promise<{ frontmatter: { id?: string } } | null>;\n}\n\n/**\n * Strip the collection-qualified forms the indexer can emit but\n * `readQmdResultMemory` cannot decode: the empty-hostname `qmd:///` URI and\n * the root-relative `/` path both reach its fallback probe still prefixed and\n * miss. Returns `null` when the path carries no such prefix — including a\n * decodable `qmd://<collection>/` or `<collection>/` form, which the resolver\n * owns, and a foreign collection prefix, which must stay a miss.\n */\nfunction collectionPrefixStrippedPath(resultPath: string): string | null {\n const trimmed = resultPath.trim();\n if (trimmed.startsWith(\"qmd:///\")) {\n const relative = trimmed.slice(\"qmd:///\".length).replace(/^\\/+/, \"\");\n return relative.length > 0 ? relative : null;\n }\n if (trimmed.startsWith(\"/\")) {\n const relative = trimmed.replace(/^\\/+/, \"\");\n return relative.length > 0 ? relative : null;\n }\n return null;\n}\n\nasync function resolveSeedMemoryId(\n resolver: DeepRecallSeedResultResolver,\n storage: DeepRecallSeedStorage,\n namespace: string,\n resultPath: string | undefined,\n): Promise<string | null> {\n if (typeof resultPath !== \"string\" || resultPath.length === 0) return null;\n const attempts = [resultPath];\n const stripped = collectionPrefixStrippedPath(resultPath);\n if (stripped !== null) attempts.push(stripped);\n for (const attempt of attempts) {\n const memory = await resolver.readQmdResultMemory(attempt, storage, [namespace]);\n const id = memory?.frontmatter?.id;\n if (typeof id === \"string\" && id.length > 0) return id;\n }\n return null;\n}\n\nexport function createDeepRecallSeedSearch(deps: {\n namespace: string;\n storage: DeepRecallSeedStorage;\n router: DeepRecallSeedRouter;\n resolver: DeepRecallSeedResultResolver;\n}): (query: string, limit: number) => Promise<DeepRecallSeedHit[]> {\n return async (query, limit) => {\n if (limit <= 0) return [];\n const unavailable: SearchDegradation[] = [];\n const hits = await deps.router.searchAcrossNamespaces({\n query,\n namespaces: [deps.namespace],\n maxResults: limit,\n execution: {\n onDegradation: (degradation) => {\n if (degradation.code === \"backend_unavailable\") unavailable.push(degradation);\n },\n },\n });\n // The requested namespace has no usable index: a seed-search failure, which\n // is the one condition deep recall reports as `backend_unavailable`.\n if (unavailable.length > 0) {\n throw new Error(\n `deep recall seed search unavailable: ${unavailable.map((d) => d.detail ?? d.code).join(\"; \")}`,\n );\n }\n const seeds: DeepRecallSeedHit[] = [];\n for (const hit of hits) {\n if (typeof hit.path !== \"string\" || hit.path.length === 0) continue;\n const memoryId =\n (await resolveSeedMemoryId(deps.resolver, deps.storage, deps.namespace, hit.path)) ?? hit.docid;\n if (typeof memoryId !== \"string\" || memoryId.length === 0) continue;\n seeds.push({\n memoryId,\n score: typeof hit.score === \"number\" && Number.isFinite(hit.score) ? hit.score : 0,\n });\n }\n return seeds;\n };\n}\n"],"mappings":";AA+DA,SAAS,6BAA6B,YAAmC;AACvE,QAAM,UAAU,WAAW,KAAK;AAChC,MAAI,QAAQ,WAAW,SAAS,GAAG;AACjC,UAAM,WAAW,QAAQ,MAAM,UAAU,MAAM,EAAE,QAAQ,QAAQ,EAAE;AACnE,WAAO,SAAS,SAAS,IAAI,WAAW;AAAA,EAC1C;AACA,MAAI,QAAQ,WAAW,GAAG,GAAG;AAC3B,UAAM,WAAW,QAAQ,QAAQ,QAAQ,EAAE;AAC3C,WAAO,SAAS,SAAS,IAAI,WAAW;AAAA,EAC1C;AACA,SAAO;AACT;AAEA,eAAe,oBACb,UACA,SACA,WACA,YACwB;AACxB,MAAI,OAAO,eAAe,YAAY,WAAW,WAAW,EAAG,QAAO;AACtE,QAAM,WAAW,CAAC,UAAU;AAC5B,QAAM,WAAW,6BAA6B,UAAU;AACxD,MAAI,aAAa,KAAM,UAAS,KAAK,QAAQ;AAC7C,aAAW,WAAW,UAAU;AAC9B,UAAM,SAAS,MAAM,SAAS,oBAAoB,SAAS,SAAS,CAAC,SAAS,CAAC;AAC/E,UAAM,KAAK,QAAQ,aAAa;AAChC,QAAI,OAAO,OAAO,YAAY,GAAG,SAAS,EAAG,QAAO;AAAA,EACtD;AACA,SAAO;AACT;AAEO,SAAS,2BAA2B,MAKwB;AACjE,SAAO,OAAO,OAAO,UAAU;AAC7B,QAAI,SAAS,EAAG,QAAO,CAAC;AACxB,UAAM,cAAmC,CAAC;AAC1C,UAAM,OAAO,MAAM,KAAK,OAAO,uBAAuB;AAAA,MACpD;AAAA,MACA,YAAY,CAAC,KAAK,SAAS;AAAA,MAC3B,YAAY;AAAA,MACZ,WAAW;AAAA,QACT,eAAe,CAAC,gBAAgB;AAC9B,cAAI,YAAY,SAAS,sBAAuB,aAAY,KAAK,WAAW;AAAA,QAC9E;AAAA,MACF;AAAA,IACF,CAAC;AAGD,QAAI,YAAY,SAAS,GAAG;AAC1B,YAAM,IAAI;AAAA,QACR,wCAAwC,YAAY,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA,MAC/F;AAAA,IACF;AACA,UAAM,QAA6B,CAAC;AACpC,eAAW,OAAO,MAAM;AACtB,UAAI,OAAO,IAAI,SAAS,YAAY,IAAI,KAAK,WAAW,EAAG;AAC3D,YAAM,WACH,MAAM,oBAAoB,KAAK,UAAU,KAAK,SAAS,KAAK,WAAW,IAAI,IAAI,KAAM,IAAI;AAC5F,UAAI,OAAO,aAAa,YAAY,SAAS,WAAW,EAAG;AAC3D,YAAM,KAAK;AAAA,QACT;AAAA,QACA,OAAO,OAAO,IAAI,UAAU,YAAY,OAAO,SAAS,IAAI,KAAK,IAAI,IAAI,QAAQ;AAAA,MACnF,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  graphsDir,
4
4
  readEdgesStrict,
5
5
  withGraphWriteLock
6
- } from "./chunk-OLT3YTDH.js";
6
+ } from "./chunk-BIJAWZYW.js";
7
7
  import {
8
8
  DEFAULT_DECAY_FLOOR,
9
9
  DEFAULT_DECAY_PER_WINDOW,
@@ -203,4 +203,4 @@ export {
203
203
  discoverGraphNamespaceRoots,
204
204
  runGraphEdgeDecayMaintenanceAcrossNamespaces
205
205
  };
206
- //# sourceMappingURL=chunk-C2JCVZWX.js.map
206
+ //# sourceMappingURL=chunk-OLBZ2WGG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readAllEdges
3
- } from "./chunk-OLT3YTDH.js";
3
+ } from "./chunk-BIJAWZYW.js";
4
4
  import {
5
5
  readEdgeConfidence
6
6
  } from "./chunk-2LSZVONP.js";
@@ -162,4 +162,4 @@ export {
162
162
  parseGraphSnapshotSince,
163
163
  buildGraphSnapshot
164
164
  };
165
- //# sourceMappingURL=chunk-Z3SQEEB6.js.map
165
+ //# sourceMappingURL=chunk-OUKBMQ2O.js.map
@@ -23,4 +23,4 @@ export {
23
23
  confidenceTier,
24
24
  SPECULATIVE_TTL_DAYS
25
25
  };
26
- //# sourceMappingURL=chunk-XXW32OL7.js.map
26
+ //# sourceMappingURL=chunk-OYV6RKPM.js.map