@graphrefly/ts 0.0.1 → 0.0.2

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 (330) hide show
  1. package/dist/actions-types-CSC3NMDl.d.ts +657 -0
  2. package/dist/actions-types-wl9Mgkmr.d.cts +657 -0
  3. package/dist/adapters/index.cjs +5157 -2951
  4. package/dist/adapters/index.cjs.map +1 -1
  5. package/dist/adapters/index.d.cts +207 -70
  6. package/dist/adapters/index.d.ts +207 -70
  7. package/dist/adapters/index.js +3738 -1688
  8. package/dist/adapters/index.js.map +1 -1
  9. package/dist/adapters/nestjs/microservices.cjs +841 -0
  10. package/dist/adapters/nestjs/microservices.cjs.map +1 -0
  11. package/dist/adapters/nestjs/microservices.d.cts +45 -0
  12. package/dist/adapters/nestjs/microservices.d.ts +45 -0
  13. package/dist/adapters/nestjs/microservices.js +206 -0
  14. package/dist/adapters/nestjs/microservices.js.map +1 -0
  15. package/dist/adapters/nestjs/native.cjs +1391 -0
  16. package/dist/adapters/nestjs/native.cjs.map +1 -0
  17. package/dist/adapters/nestjs/native.d.cts +111 -0
  18. package/dist/adapters/nestjs/native.d.ts +111 -0
  19. package/dist/adapters/nestjs/native.js +577 -0
  20. package/dist/adapters/nestjs/native.js.map +1 -0
  21. package/dist/adapters/nestjs/websockets.cjs +924 -0
  22. package/dist/adapters/nestjs/websockets.cjs.map +1 -0
  23. package/dist/adapters/nestjs/websockets.d.cts +47 -0
  24. package/dist/adapters/nestjs/websockets.d.ts +47 -0
  25. package/dist/adapters/nestjs/websockets.js +286 -0
  26. package/dist/adapters/nestjs/websockets.js.map +1 -0
  27. package/dist/adapters/nestjs.cjs +1085 -0
  28. package/dist/adapters/nestjs.cjs.map +1 -0
  29. package/dist/adapters/nestjs.d.cts +385 -0
  30. package/dist/adapters/nestjs.d.ts +385 -0
  31. package/dist/adapters/nestjs.js +112 -0
  32. package/dist/adapters/nestjs.js.map +1 -0
  33. package/dist/adapters/observe-storage.d.cts +3 -3
  34. package/dist/adapters/observe-storage.d.ts +3 -3
  35. package/dist/adapters/observe-storage.js +4 -4
  36. package/dist/adapters/react.cjs.map +1 -1
  37. package/dist/adapters/react.d.cts +2 -2
  38. package/dist/adapters/react.d.ts +2 -2
  39. package/dist/adapters/react.js +1 -1
  40. package/dist/adapters/solid.cjs.map +1 -1
  41. package/dist/adapters/solid.d.cts +2 -2
  42. package/dist/adapters/solid.d.ts +2 -2
  43. package/dist/adapters/solid.js +1 -1
  44. package/dist/adapters/svelte.cjs.map +1 -1
  45. package/dist/adapters/svelte.d.cts +2 -2
  46. package/dist/adapters/svelte.d.ts +2 -2
  47. package/dist/adapters/svelte.js +1 -1
  48. package/dist/adapters/vue.cjs.map +1 -1
  49. package/dist/adapters/vue.d.cts +2 -2
  50. package/dist/adapters/vue.d.ts +2 -2
  51. package/dist/adapters/vue.js +1 -1
  52. package/dist/{agent-runtime-DZTJ3C-p.d.cts → agent-runtime-types-core-CaXfKNtY.d.cts} +171 -320
  53. package/dist/{agent-runtime-BesGDZcB.d.ts → agent-runtime-types-core-hU299uIC.d.ts} +171 -320
  54. package/dist/agent-runtime-types-tool-BEpSINol.d.ts +695 -0
  55. package/dist/agent-runtime-types-tool-DninPEzk.d.cts +695 -0
  56. package/dist/agentic-memory-retention-BmGX368S.d.ts +14 -0
  57. package/dist/agentic-memory-retention-Ih1qhX9Z.d.cts +14 -0
  58. package/dist/{agentic-memory-BmRCvh0d.d.ts → agentic-memory-types-CVSUS6XR.d.ts} +13 -57
  59. package/dist/{agentic-memory-DfuVZ-lY.d.cts → agentic-memory-types-FnnYlVUs.d.cts} +13 -57
  60. package/dist/{capability-admission-g0mn9hpq.d.ts → capability-admission-BW2CziT6.d.ts} +3 -3
  61. package/dist/{capability-admission-B0BzqAm5.d.cts → capability-admission-lwSecxXs.d.cts} +3 -3
  62. package/dist/chunk-2KUAG2GZ.js +9693 -0
  63. package/dist/chunk-2KUAG2GZ.js.map +1 -0
  64. package/dist/chunk-2NJP6GO4.js +1320 -0
  65. package/dist/chunk-2NJP6GO4.js.map +1 -0
  66. package/dist/{chunk-YDSIVHRR.js → chunk-4NWSNI4K.js} +1598 -1584
  67. package/dist/chunk-4NWSNI4K.js.map +1 -0
  68. package/dist/{chunk-Z2ANQ6JW.js → chunk-4Q77MMJY.js} +2 -2
  69. package/dist/chunk-6E76H4OU.js +132 -0
  70. package/dist/chunk-6E76H4OU.js.map +1 -0
  71. package/dist/chunk-7GOTIIQ7.js +819 -0
  72. package/dist/chunk-7GOTIIQ7.js.map +1 -0
  73. package/dist/{chunk-IXZBUWSP.js → chunk-7HZRJMN6.js} +2 -2
  74. package/dist/{chunk-SS2A464I.js → chunk-CJIFGJQG.js} +3 -3
  75. package/dist/{chunk-V7CIJE4B.js → chunk-CX6B6PO2.js} +92 -9
  76. package/dist/chunk-CX6B6PO2.js.map +1 -0
  77. package/dist/{chunk-FBUU43PM.js → chunk-E4QCH32M.js} +448 -446
  78. package/dist/chunk-E4QCH32M.js.map +1 -0
  79. package/dist/{chunk-HKK2JD7Z.js → chunk-ECURQ3HD.js} +12 -125
  80. package/dist/chunk-ECURQ3HD.js.map +1 -0
  81. package/dist/{chunk-3JR3EDB2.js → chunk-EOKT4QFF.js} +121 -115
  82. package/dist/chunk-EOKT4QFF.js.map +1 -0
  83. package/dist/{chunk-K3FXTC3I.js → chunk-HJACH5PU.js} +3 -3
  84. package/dist/{chunk-GTPCOEOZ.js → chunk-IDMLXLLG.js} +3 -3
  85. package/dist/{chunk-DKP56CSW.js → chunk-JKAYLDQV.js} +2 -2
  86. package/dist/{chunk-4VLAQHZI.js → chunk-K7FB3JTD.js} +17 -1
  87. package/dist/chunk-K7FB3JTD.js.map +1 -0
  88. package/dist/{chunk-H75VXTGT.js → chunk-L6LDXRWE.js} +3 -3
  89. package/dist/{chunk-H75VXTGT.js.map → chunk-L6LDXRWE.js.map} +1 -1
  90. package/dist/{chunk-YXMZ2N6J.js → chunk-M7J6Z4IJ.js} +1071 -1025
  91. package/dist/chunk-M7J6Z4IJ.js.map +1 -0
  92. package/dist/chunk-MQEQMS7B.js +1009 -0
  93. package/dist/chunk-MQEQMS7B.js.map +1 -0
  94. package/dist/chunk-MTELVIYR.js +1421 -0
  95. package/dist/chunk-MTELVIYR.js.map +1 -0
  96. package/dist/{chunk-QFY4AFY4.js → chunk-PVC7WDKI.js} +58 -52
  97. package/dist/chunk-PVC7WDKI.js.map +1 -0
  98. package/dist/{chunk-VTHLCFN4.js → chunk-RAHNUYA5.js} +2 -2
  99. package/dist/{chunk-XKXWK2KP.js → chunk-SHZDP2MQ.js} +1157 -1021
  100. package/dist/chunk-SHZDP2MQ.js.map +1 -0
  101. package/dist/{chunk-CZNV3VXM.js → chunk-SIDJO2T4.js} +11 -11
  102. package/dist/chunk-STXRMPW4.js +4131 -0
  103. package/dist/chunk-STXRMPW4.js.map +1 -0
  104. package/dist/{chunk-2747WN4Y.js → chunk-TPND5MJS.js} +3 -3
  105. package/dist/chunk-TQPCAIQI.js +612 -0
  106. package/dist/chunk-TQPCAIQI.js.map +1 -0
  107. package/dist/{chunk-43BKLFZU.js → chunk-YDWBXXQZ.js} +10 -10
  108. package/dist/{chunk-6PHB5CJS.js → chunk-ZLFRB6FI.js} +2 -2
  109. package/dist/composition/index.cjs +1228 -1076
  110. package/dist/composition/index.cjs.map +1 -1
  111. package/dist/composition/index.d.cts +3 -3
  112. package/dist/composition/index.d.ts +3 -3
  113. package/dist/composition/index.js +4 -4
  114. package/dist/core/index.cjs +1198 -1046
  115. package/dist/core/index.cjs.map +1 -1
  116. package/dist/core/index.d.cts +1 -1
  117. package/dist/core/index.d.ts +1 -1
  118. package/dist/core/index.js +2 -2
  119. package/dist/cqrs/index.d.cts +3 -3
  120. package/dist/cqrs/index.d.ts +3 -3
  121. package/dist/cqrs/messaging.d.cts +4 -4
  122. package/dist/cqrs/messaging.d.ts +4 -4
  123. package/dist/cqrs/work-queue.d.cts +5 -5
  124. package/dist/cqrs/work-queue.d.ts +5 -5
  125. package/dist/data-structures/index.cjs +1226 -1074
  126. package/dist/data-structures/index.cjs.map +1 -1
  127. package/dist/data-structures/index.d.cts +8 -7
  128. package/dist/data-structures/index.d.ts +8 -7
  129. package/dist/data-structures/index.js +6 -5
  130. package/dist/{describe-BpyJuWkw.d.ts → describe-B_A5fbXH.d.ts} +1 -1
  131. package/dist/{describe-DYMw_l1C.d.cts → describe-CQRrkv-Q.d.cts} +1 -1
  132. package/dist/executors/tool-provider-adapters.cjs +3091 -0
  133. package/dist/executors/tool-provider-adapters.cjs.map +1 -0
  134. package/dist/executors/tool-provider-adapters.d.cts +174 -0
  135. package/dist/executors/tool-provider-adapters.d.ts +174 -0
  136. package/dist/executors/tool-provider-adapters.js +1336 -0
  137. package/dist/executors/tool-provider-adapters.js.map +1 -0
  138. package/dist/executors/tool-provider-runtime.cjs +5178 -0
  139. package/dist/executors/tool-provider-runtime.cjs.map +1 -0
  140. package/dist/executors/tool-provider-runtime.d.cts +17 -0
  141. package/dist/executors/tool-provider-runtime.d.ts +17 -0
  142. package/dist/executors/tool-provider-runtime.js +15 -0
  143. package/dist/executors/tool-provider-runtime.js.map +1 -0
  144. package/dist/executors/tool-provider.cjs +6392 -0
  145. package/dist/executors/tool-provider.cjs.map +1 -0
  146. package/dist/executors/tool-provider.d.cts +60 -0
  147. package/dist/executors/tool-provider.d.ts +60 -0
  148. package/dist/executors/tool-provider.js +89 -0
  149. package/dist/executors/tool-provider.js.map +1 -0
  150. package/dist/executors/work-queue.d.cts +6 -6
  151. package/dist/executors/work-queue.d.ts +6 -6
  152. package/dist/graph/index.cjs +1499 -1341
  153. package/dist/graph/index.cjs.map +1 -1
  154. package/dist/graph/index.d.cts +9 -8
  155. package/dist/graph/index.d.ts +9 -8
  156. package/dist/graph/index.js +23 -22
  157. package/dist/{graph-DCEWh4T2.d.cts → graph-CWK3HLPB.d.cts} +133 -131
  158. package/dist/{graph-D-1-SQeC.d.ts → graph-ho5sotHP.d.ts} +133 -131
  159. package/dist/{index-Bmxeu0nK.d.ts → index-CQWcE0Dw.d.ts} +18 -4
  160. package/dist/{index-72VZC0-E.d.cts → index-DHA1i67c.d.cts} +18 -4
  161. package/dist/index.cjs +3397 -3140
  162. package/dist/index.cjs.map +1 -1
  163. package/dist/index.d.cts +12 -9
  164. package/dist/index.d.ts +12 -9
  165. package/dist/index.js +110 -109
  166. package/dist/inspection/boundary.d.cts +4 -4
  167. package/dist/inspection/boundary.d.ts +4 -4
  168. package/dist/measurements-C0mAvWU1.d.cts +164 -0
  169. package/dist/measurements-OMpCeBwh.d.ts +164 -0
  170. package/dist/messaging/index.cjs +57 -51
  171. package/dist/messaging/index.cjs.map +1 -1
  172. package/dist/messaging/index.d.cts +11 -276
  173. package/dist/messaging/index.d.ts +11 -276
  174. package/dist/messaging/index.js +1 -1
  175. package/dist/operators/index.cjs +1228 -1076
  176. package/dist/operators/index.cjs.map +1 -1
  177. package/dist/operators/index.d.cts +5 -5
  178. package/dist/operators/index.d.ts +5 -5
  179. package/dist/operators/index.js +5 -5
  180. package/dist/orchestration/index.cjs +8844 -6071
  181. package/dist/orchestration/index.cjs.map +1 -1
  182. package/dist/orchestration/index.d.cts +171 -224
  183. package/dist/orchestration/index.d.ts +171 -224
  184. package/dist/orchestration/index.js +42 -991
  185. package/dist/orchestration/index.js.map +1 -1
  186. package/dist/orchestration/messaging.d.cts +5 -8
  187. package/dist/orchestration/messaging.d.ts +5 -8
  188. package/dist/orchestration/work-queue.cjs +1243 -5
  189. package/dist/orchestration/work-queue.cjs.map +1 -1
  190. package/dist/orchestration/work-queue.d.cts +121 -10
  191. package/dist/orchestration/work-queue.d.ts +121 -10
  192. package/dist/orchestration/work-queue.js +1067 -4
  193. package/dist/orchestration/work-queue.js.map +1 -1
  194. package/dist/patterns/event-flow.cjs +6 -20
  195. package/dist/patterns/event-flow.cjs.map +1 -1
  196. package/dist/patterns/event-flow.d.cts +4 -4
  197. package/dist/patterns/event-flow.d.ts +4 -4
  198. package/dist/patterns/event-flow.js +2 -2
  199. package/dist/patterns/index.cjs +453 -465
  200. package/dist/patterns/index.cjs.map +1 -1
  201. package/dist/patterns/index.d.cts +6 -5
  202. package/dist/patterns/index.d.ts +6 -5
  203. package/dist/patterns/index.js +3 -3
  204. package/dist/process-types-C9uMYz3i.d.ts +200 -0
  205. package/dist/process-types-h3uRlzDc.d.cts +200 -0
  206. package/dist/{reactive-collection-DNV0-gFi.d.cts → reactive-collection-B9R0Bl1P.d.cts} +4 -34
  207. package/dist/{reactive-collection-BAmfrGjd.d.ts → reactive-collection-BXFrH0U2.d.ts} +4 -34
  208. package/dist/{reactive-collection-storage-BNEldDyi.d.cts → reactive-collection-storage-BLGv8Xp8.d.cts} +5 -5
  209. package/dist/{reactive-collection-storage-YZsAQsWK.d.ts → reactive-collection-storage-a4zD3665.d.ts} +5 -5
  210. package/dist/{reactive-map-DRD1LJ2H.d.cts → reactive-map-C_8sOfdS.d.cts} +3 -2
  211. package/dist/{reactive-map-EsDiCmJk.d.ts → reactive-map-jle5dnok.d.ts} +3 -2
  212. package/dist/render/index.d.cts +2 -2
  213. package/dist/render/index.d.ts +2 -2
  214. package/dist/scheduled-readiness-5rwQlyjV.d.ts +91 -0
  215. package/dist/scheduled-readiness-DpRY8jI0.d.cts +91 -0
  216. package/dist/semantic-memory-graph-C2ZUwIlq.d.ts +30 -0
  217. package/dist/semantic-memory-graph-DlZBD_Eu.d.cts +30 -0
  218. package/dist/{semantic-memory-graph-DKuNzuWw.d.cts → semantic-memory-graph-types-BvzdqmkY.d.cts} +2 -28
  219. package/dist/{semantic-memory-graph-uwbwJdhe.d.ts → semantic-memory-graph-types-Ci-OtahO.d.ts} +2 -28
  220. package/dist/solutions/index.cjs +6353 -6169
  221. package/dist/solutions/index.cjs.map +1 -1
  222. package/dist/solutions/index.d.cts +12 -10
  223. package/dist/solutions/index.d.ts +12 -10
  224. package/dist/solutions/index.js +5 -5
  225. package/dist/solutions/reactive-layout/browser/index.cjs +116 -108
  226. package/dist/solutions/reactive-layout/browser/index.cjs.map +1 -1
  227. package/dist/solutions/reactive-layout/browser/index.d.cts +4 -4
  228. package/dist/solutions/reactive-layout/browser/index.d.ts +4 -4
  229. package/dist/solutions/reactive-layout/browser/index.js +3 -3
  230. package/dist/solutions/reactive-layout/index.cjs +3578 -3350
  231. package/dist/solutions/reactive-layout/index.cjs.map +1 -1
  232. package/dist/solutions/reactive-layout/index.d.cts +32 -576
  233. package/dist/solutions/reactive-layout/index.d.ts +32 -576
  234. package/dist/solutions/reactive-layout/index.js +65 -5
  235. package/dist/solutions/reactive-layout/node-canvas/index.cjs +127 -117
  236. package/dist/solutions/reactive-layout/node-canvas/index.cjs.map +1 -1
  237. package/dist/solutions/reactive-layout/node-canvas/index.d.cts +4 -4
  238. package/dist/solutions/reactive-layout/node-canvas/index.d.ts +4 -4
  239. package/dist/solutions/reactive-layout/node-canvas/index.js +3 -3
  240. package/dist/solutions/reactive-layout/react-native/index.cjs +127 -117
  241. package/dist/solutions/reactive-layout/react-native/index.cjs.map +1 -1
  242. package/dist/solutions/reactive-layout/react-native/index.d.cts +4 -4
  243. package/dist/solutions/reactive-layout/react-native/index.d.ts +4 -4
  244. package/dist/solutions/reactive-layout/react-native/index.js +3 -3
  245. package/dist/solutions/reactive-layout/skia/index.cjs +127 -117
  246. package/dist/solutions/reactive-layout/skia/index.cjs.map +1 -1
  247. package/dist/solutions/reactive-layout/skia/index.d.cts +4 -4
  248. package/dist/solutions/reactive-layout/skia/index.d.ts +4 -4
  249. package/dist/solutions/reactive-layout/skia/index.js +3 -3
  250. package/dist/solutions/work-item/actions.cjs +1609 -1428
  251. package/dist/solutions/work-item/actions.cjs.map +1 -1
  252. package/dist/solutions/work-item/actions.d.cts +23 -184
  253. package/dist/solutions/work-item/actions.d.ts +23 -184
  254. package/dist/solutions/work-item/actions.js +1558 -934
  255. package/dist/solutions/work-item/actions.js.map +1 -1
  256. package/dist/solutions/work-item/scheduling.cjs +9181 -1838
  257. package/dist/solutions/work-item/scheduling.cjs.map +1 -1
  258. package/dist/solutions/work-item/scheduling.d.cts +1763 -328
  259. package/dist/solutions/work-item/scheduling.d.ts +1763 -328
  260. package/dist/solutions/work-item/scheduling.js +117 -3
  261. package/dist/solutions/work-item/work-queue.d.cts +7 -7
  262. package/dist/solutions/work-item/work-queue.d.ts +7 -7
  263. package/dist/sources/browser.cjs +1318 -1083
  264. package/dist/sources/browser.cjs.map +1 -1
  265. package/dist/sources/browser.d.cts +4 -4
  266. package/dist/sources/browser.d.ts +4 -4
  267. package/dist/sources/browser.js +4 -4
  268. package/dist/sources/index.cjs +1318 -1083
  269. package/dist/sources/index.cjs.map +1 -1
  270. package/dist/sources/index.d.cts +4 -4
  271. package/dist/sources/index.d.ts +4 -4
  272. package/dist/sources/index.js +4 -4
  273. package/dist/sources/node.d.cts +3 -3
  274. package/dist/sources/node.d.ts +3 -3
  275. package/dist/storage/browser.cjs +16 -0
  276. package/dist/storage/browser.cjs.map +1 -1
  277. package/dist/storage/browser.js +3 -3
  278. package/dist/storage/index.cjs +16 -0
  279. package/dist/storage/index.cjs.map +1 -1
  280. package/dist/storage/index.d.cts +5 -4
  281. package/dist/storage/index.d.ts +5 -4
  282. package/dist/storage/index.js +6 -6
  283. package/dist/storage/node.cjs +16 -0
  284. package/dist/storage/node.cjs.map +1 -1
  285. package/dist/storage/node.js +3 -3
  286. package/dist/{store-C-joM4gh.d.ts → store-BmtEs9mG.d.ts} +1 -1
  287. package/dist/{store-CNJwmT-h.d.cts → store-PAAsYvML.d.cts} +1 -1
  288. package/dist/types-BRNKoFHj.d.ts +357 -0
  289. package/dist/{types-CcPIn7sy.d.cts → types-BS6CyR-x.d.cts} +27 -108
  290. package/dist/types-BWK2ay3e.d.cts +457 -0
  291. package/dist/types-BXKSAoE1.d.cts +357 -0
  292. package/dist/types-BaPpZItj.d.ts +457 -0
  293. package/dist/types-BhveCMg5.d.cts +274 -0
  294. package/dist/{types-BsJvElYZ.d.ts → types-C9NOgNJw.d.ts} +27 -108
  295. package/dist/types-CTsQ8Ww4.d.ts +274 -0
  296. package/dist/types-DL_05n2M.d.ts +34 -0
  297. package/dist/types-XDoqxYO9.d.cts +34 -0
  298. package/dist/{work-item-runtime-C3M79vE9.d.ts → work-item-runtime-types-BqtWnSCS.d.ts} +3 -93
  299. package/dist/{work-item-runtime-qaVgsL0T.d.cts → work-item-runtime-types-CHO03AKh.d.cts} +3 -93
  300. package/dist/work-queue/index.cjs +957 -953
  301. package/dist/work-queue/index.cjs.map +1 -1
  302. package/dist/work-queue/index.d.cts +9 -357
  303. package/dist/work-queue/index.d.ts +9 -357
  304. package/dist/work-queue/index.js +957 -953
  305. package/dist/work-queue/index.js.map +1 -1
  306. package/package.json +603 -513
  307. package/dist/chunk-3JR3EDB2.js.map +0 -1
  308. package/dist/chunk-4VLAQHZI.js.map +0 -1
  309. package/dist/chunk-6XAIOL3X.js +0 -2407
  310. package/dist/chunk-6XAIOL3X.js.map +0 -1
  311. package/dist/chunk-FBUU43PM.js.map +0 -1
  312. package/dist/chunk-HKK2JD7Z.js.map +0 -1
  313. package/dist/chunk-PC3BTTBE.js +0 -3217
  314. package/dist/chunk-PC3BTTBE.js.map +0 -1
  315. package/dist/chunk-QFY4AFY4.js.map +0 -1
  316. package/dist/chunk-V7CIJE4B.js.map +0 -1
  317. package/dist/chunk-XKXWK2KP.js.map +0 -1
  318. package/dist/chunk-YDSIVHRR.js.map +0 -1
  319. package/dist/chunk-YXMZ2N6J.js.map +0 -1
  320. /package/dist/{chunk-Z2ANQ6JW.js.map → chunk-4Q77MMJY.js.map} +0 -0
  321. /package/dist/{chunk-IXZBUWSP.js.map → chunk-7HZRJMN6.js.map} +0 -0
  322. /package/dist/{chunk-SS2A464I.js.map → chunk-CJIFGJQG.js.map} +0 -0
  323. /package/dist/{chunk-K3FXTC3I.js.map → chunk-HJACH5PU.js.map} +0 -0
  324. /package/dist/{chunk-GTPCOEOZ.js.map → chunk-IDMLXLLG.js.map} +0 -0
  325. /package/dist/{chunk-DKP56CSW.js.map → chunk-JKAYLDQV.js.map} +0 -0
  326. /package/dist/{chunk-VTHLCFN4.js.map → chunk-RAHNUYA5.js.map} +0 -0
  327. /package/dist/{chunk-CZNV3VXM.js.map → chunk-SIDJO2T4.js.map} +0 -0
  328. /package/dist/{chunk-2747WN4Y.js.map → chunk-TPND5MJS.js.map} +0 -0
  329. /package/dist/{chunk-43BKLFZU.js.map → chunk-YDWBXXQZ.js.map} +0 -0
  330. /package/dist/{chunk-6PHB5CJS.js.map → chunk-ZLFRB6FI.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/patterns/semantic-memory.ts","../src/patterns/semantic-memory-graph.ts"],"sourcesContent":["/**\n * Passive semantic-memory vocabulary and deterministic helpers.\n *\n * D158 splits semantic memory into horizontal patterns and vertical solutions.\n * This module intentionally owns no graph nodes, storage restore, timers,\n * subscriptions, vector indexes, knowledge graphs, or agentic runtime.\n */\n\nimport type { StrictJsonValue } from \"../json/codec.js\";\n\n/** Stable identity for a semantic-memory fact. */\nexport type FactId = string;\n\n/** Shard partition key used by passive sharding helpers. */\nexport type ShardKey = string | number;\n\n/**\n * A single semantic-memory fact. Pattern convention only: this is not a\n * protocol message, storage record owner, restore contract, or graph runtime.\n */\nexport interface MemoryFragment<T = unknown> {\n\treadonly id: FactId;\n\treadonly payload: T;\n\t/** Transaction time, typically monotonic nanoseconds. */\n\treadonly tNs: bigint;\n\t/** Valid-time start. Undefined means unbounded past. */\n\treadonly validFrom?: bigint;\n\t/** Valid-time end. Undefined means currently valid. */\n\treadonly validTo?: bigint;\n\t/** Confidence score in the closed interval [0, 1]. */\n\treadonly confidence: number;\n\treadonly tags: readonly string[];\n\t/** Fact ids this fragment derives from or depends on. */\n\treadonly sources: readonly FactId[];\n\treadonly embedding?: readonly number[];\n\treadonly parentFragmentId?: FactId;\n\treadonly provenance?: string;\n}\n\n/** Columnar passive store vocabulary for callers that keep memory facts outside GraphReFly. */\nexport interface FactStore<T = unknown> {\n\treadonly byId: ReadonlyMap<FactId, MemoryFragment<T>>;\n}\n\n/** Read-only projection passed to scoring policies; it exposes no mutation surface. */\nexport interface StoreReadHandle<T = unknown> {\n\tget(id: FactId): MemoryFragment<T> | undefined;\n\thas(id: FactId): boolean;\n\treadonly size: number;\n\tvalues(): IterableIterator<MemoryFragment<T>>;\n}\n\nexport type ScoringPolicy<T = unknown> = (\n\tfragment: MemoryFragment<T>,\n\tstore: StoreReadHandle<T>,\n) => number;\nexport type DecayPolicy = (confidence: number, ageNs: bigint) => number;\nexport type AdmissionFilter<T = unknown> = (fragment: MemoryFragment<T>) => boolean;\n\n/** Outcome signal for policy learning. This is an application fact, not a protocol event. */\nexport interface OutcomeSignal {\n\treadonly factId: FactId;\n\treadonly reward: number;\n}\n\n/** Passive structured query over semantic-memory facts. */\nexport interface MemoryQuery {\n\treadonly tags?: readonly string[];\n\treadonly asOf?: bigint;\n\treadonly minConfidence?: number;\n\treadonly limit?: number;\n}\n\nexport interface MemoryAnswer<T = unknown> {\n\treadonly query: MemoryQuery;\n\treadonly results: readonly MemoryFragment<T>[];\n}\n\nexport type KnowledgeAssertionStrictJsonValue = StrictJsonValue;\n\n/** Passive KG endpoint vocabulary. Entity ids are DATA keys, not graph node ids. */\nexport interface KnowledgeAssertionSubject {\n\treadonly id: FactId;\n\treadonly type?: string;\n}\n\n/** Passive KG object/value vocabulary. */\nexport type KnowledgeAssertionObject =\n\t| {\n\t\t\treadonly kind: \"entity\";\n\t\t\treadonly id: FactId;\n\t\t\treadonly type?: string;\n\t }\n\t| {\n\t\t\treadonly kind: \"value\";\n\t\t\treadonly value: KnowledgeAssertionStrictJsonValue;\n\t\t\treadonly valueType?: string;\n\t };\n\n/** Passive KG assertion fact consumed by lower semantic-memory graph patterns. */\nexport interface KnowledgeAssertion {\n\treadonly id: FactId;\n\treadonly recordId?: FactId;\n\treadonly fragmentId?: FactId;\n\treadonly subject: KnowledgeAssertionSubject;\n\treadonly predicate: string;\n\treadonly object: KnowledgeAssertionObject;\n\treadonly confidence?: number;\n\treadonly sources?: readonly FactId[];\n\treadonly provenance?: string;\n}\n\n/** Entry vocabulary for ranked collection-like memory views. */\nexport interface CollectionEntry<T = unknown> {\n\treadonly id: string;\n\treadonly value: T;\n\treadonly createdAtNs: bigint;\n\treadonly lastAccessNs: bigint;\n\treadonly baseScore: number;\n}\n\nexport type RankedCollectionEntry<T = unknown> = CollectionEntry<T> & {\n\treadonly score: number;\n};\n\nexport type CollectionScoreFn<T = unknown> = (value: T) => number;\n\n/** Query shape shared by passive retrieval/ranking helpers. */\nexport interface RetrievalQuery {\n\treadonly text?: string;\n\treadonly vector?: readonly number[];\n\treadonly entityIds?: readonly string[];\n\treadonly context?: readonly string[];\n}\n\nexport interface VectorSearchResult<TMeta = unknown> {\n\treadonly id: string;\n\treadonly score: number;\n\treadonly meta?: TMeta;\n}\n\nexport interface RetrievalEntry<TMem = unknown> {\n\treadonly key: string;\n\treadonly value: TMem;\n\treadonly score: number;\n\treadonly sources: ReadonlyArray<\"vector\" | \"graph\" | \"store\">;\n\treadonly context?: readonly string[];\n}\n\nexport interface RetrievalTrace<TMem = unknown> {\n\treadonly vectorCandidates: ReadonlyArray<VectorSearchResult<TMem>>;\n\treadonly graphExpanded: ReadonlyArray<string>;\n\treadonly ranked: ReadonlyArray<RetrievalEntry<TMem>>;\n\treadonly packed: ReadonlyArray<RetrievalEntry<TMem>>;\n}\n\n/** Generic per-dimension thresholds. Any configured dimension below threshold is rejected. */\nexport type AdmissionThresholds<Dims extends string> = Partial<Record<Dims, number>>;\n\nexport interface AdmissionScoredOptions<Dims extends string, TRaw = unknown> {\n\treadonly scoreFn: (raw: TRaw) => Readonly<Record<Dims, number>>;\n\treadonly thresholds?: AdmissionThresholds<Dims>;\n}\n\nexport interface AdmissionScores {\n\treadonly persistence: number;\n\treadonly structure: number;\n\treadonly personalValue: number;\n}\n\nexport interface AdmissionScore3DOptions {\n\treadonly scoreFn: (raw: unknown) => AdmissionScores;\n\treadonly persistenceThreshold?: number;\n\treadonly personalValueThreshold?: number;\n\treadonly requireStructured?: boolean;\n}\n\nexport interface ShardByTenantOptions {\n\treadonly tenants?: readonly string[];\n\treadonly shardCount?: number;\n}\n\nexport interface ShardByTenantConfig<T = unknown> {\n\treadonly shardBy: (fragment: MemoryFragment<T>) => ShardKey;\n\treadonly shardCount: number;\n}\n\nexport interface MemoryFragmentValidation {\n\treadonly ok: boolean;\n\treadonly errors: readonly string[];\n}\n\n/** Cosine similarity over zero-padded vectors. Non-finite results normalize to 0. */\nexport function cosineSimilarity(a: readonly number[], b: readonly number[]): number {\n\tconst n = Math.max(a.length, b.length);\n\tlet dot = 0;\n\tlet na = 0;\n\tlet nb = 0;\n\tfor (let i = 0; i < n; i += 1) {\n\t\tconst av = a[i] ?? 0;\n\t\tconst bv = b[i] ?? 0;\n\t\tdot += av * bv;\n\t\tna += av * av;\n\t\tnb += bv * bv;\n\t}\n\tif (na === 0 || nb === 0) return 0;\n\tconst score = dot / Math.sqrt(na * nb);\n\treturn Number.isFinite(score) ? score : 0;\n}\n\n/**\n * Returns true when a fragment is valid at `asOf`.\n *\n * Omitted `asOf` has no clock to compare against, so it admits only fragments\n * that are live and not valid-time delayed.\n */\nexport function memoryFragmentValidAt(fragment: MemoryFragment, asOf?: bigint): boolean {\n\tif (asOf === undefined) return fragment.validTo === undefined && fragment.validFrom === undefined;\n\tif (fragment.validFrom !== undefined && fragment.validFrom > asOf) return false;\n\tif (fragment.validTo !== undefined && fragment.validTo <= asOf) return false;\n\treturn true;\n}\n\n/** Pure structured-query predicate over a single fragment. */\nexport function memoryFragmentMatchesQuery(\n\tfragment: MemoryFragment,\n\tquery: MemoryQuery = {},\n): boolean {\n\tif (!memoryFragmentValidAt(fragment, query.asOf)) return false;\n\tif (query.minConfidence !== undefined && fragment.confidence < query.minConfidence) return false;\n\tif (\n\t\tquery.tags &&\n\t\tquery.tags.length > 0 &&\n\t\t!query.tags.some((tag) => fragment.tags.includes(tag))\n\t) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n/** Filter and rank fragments by confidence desc, then transaction time desc. */\nexport function filterMemoryFragments<T>(\n\tfragments: Iterable<MemoryFragment<T>>,\n\tquery: MemoryQuery = {},\n): readonly MemoryFragment<T>[] {\n\tconst results = [...fragments].filter((fragment) => memoryFragmentMatchesQuery(fragment, query));\n\tresults.sort((a, b) => b.confidence - a.confidence || compareBigIntDesc(a.tNs, b.tNs));\n\treturn query.limit === undefined ? results : results.slice(0, Math.max(0, query.limit));\n}\n\n/** Validate the passive MemoryFragment shape without throwing. */\nexport function validateMemoryFragment(value: unknown): MemoryFragmentValidation {\n\tconst errors: string[] = [];\n\tif (typeof value !== \"object\" || value === null) {\n\t\treturn { ok: false, errors: [\"fragment must be an object\"] };\n\t}\n\tconst fragment = value as Partial<MemoryFragment>;\n\tif (typeof fragment.id !== \"string\" || fragment.id.length === 0) {\n\t\terrors.push(\"id must be a non-empty string\");\n\t}\n\tif (!Object.hasOwn(fragment, \"payload\")) {\n\t\terrors.push(\"payload must be present\");\n\t}\n\tif (typeof fragment.tNs !== \"bigint\") {\n\t\terrors.push(\"tNs must be a bigint\");\n\t}\n\tconst confidence = fragment.confidence;\n\tif (\n\t\t!Number.isFinite(confidence) ||\n\t\tconfidence === undefined ||\n\t\tconfidence < 0 ||\n\t\tconfidence > 1\n\t) {\n\t\terrors.push(\"confidence must be a finite number in [0, 1]\");\n\t}\n\tif (!isDenseArrayOf(fragment.tags, (tag): tag is string => typeof tag === \"string\")) {\n\t\terrors.push(\"tags must be a readonly string array\");\n\t}\n\tif (!isDenseArrayOf(fragment.sources, (source): source is string => typeof source === \"string\")) {\n\t\terrors.push(\"sources must be a readonly string array\");\n\t}\n\tif (fragment.validFrom !== undefined && typeof fragment.validFrom !== \"bigint\") {\n\t\terrors.push(\"validFrom must be a bigint when present\");\n\t}\n\tif (fragment.validTo !== undefined && typeof fragment.validTo !== \"bigint\") {\n\t\terrors.push(\"validTo must be a bigint when present\");\n\t}\n\tif (\n\t\ttypeof fragment.validFrom === \"bigint\" &&\n\t\ttypeof fragment.validTo === \"bigint\" &&\n\t\tfragment.validFrom >= fragment.validTo\n\t) {\n\t\terrors.push(\"validFrom must be earlier than validTo\");\n\t}\n\tif (\n\t\tfragment.embedding !== undefined &&\n\t\t!isDenseArrayOf(fragment.embedding, (component): component is number =>\n\t\t\tNumber.isFinite(component),\n\t\t)\n\t) {\n\t\terrors.push(\"embedding must be a finite number array when present\");\n\t}\n\tif (fragment.parentFragmentId !== undefined && typeof fragment.parentFragmentId !== \"string\") {\n\t\terrors.push(\"parentFragmentId must be a string when present\");\n\t}\n\tif (fragment.provenance !== undefined && typeof fragment.provenance !== \"string\") {\n\t\terrors.push(\"provenance must be a string when present\");\n\t}\n\treturn { ok: errors.length === 0, errors };\n}\n\nexport function isMemoryFragment(value: unknown): value is MemoryFragment {\n\treturn validateMemoryFragment(value).ok;\n}\n\n/**\n * Generic N-dimension admission filter. Missing or non-finite thresholded scores reject.\n */\nexport function admissionScored<Dims extends string, TRaw = unknown>(\n\topts: AdmissionScoredOptions<Dims, TRaw>,\n): (raw: TRaw) => boolean {\n\tconst thresholds = opts.thresholds ?? ({} as AdmissionThresholds<Dims>);\n\treturn (raw: TRaw): boolean => {\n\t\tconst scores = opts.scoreFn(raw);\n\t\tfor (const dim of Object.keys(thresholds) as Dims[]) {\n\t\t\tconst min = thresholds[dim];\n\t\t\tif (min === undefined) continue;\n\t\t\tconst score = scores[dim];\n\t\t\tconst safe = Number.isFinite(score) ? (score as number) : Number.NEGATIVE_INFINITY;\n\t\t\tif (safe < min) return false;\n\t\t}\n\t\treturn true;\n\t};\n}\n\n/** Three-axis admission sugar for persistence / structure / personal-value scoring. */\nexport function admissionFilter3D(opts: AdmissionScore3DOptions): (raw: unknown) => boolean {\n\treturn (raw: unknown): boolean => {\n\t\tconst scores = opts.scoreFn(raw);\n\t\tif (!scoreAtLeast(scores.persistence, opts.persistenceThreshold ?? 0.3)) return false;\n\t\tif (!scoreAtLeast(scores.personalValue, opts.personalValueThreshold ?? 0.3)) return false;\n\t\tif (!opts.requireStructured) return true;\n\t\treturn scoreAtLeast(scores.structure, Number.MIN_VALUE);\n\t};\n}\n\n/** Build a passive `{ shardBy, shardCount }` pair for tenant-isolated sharding. */\nexport function shardByTenant<T>(\n\ttenantOf: (fragment: MemoryFragment<T>) => string,\n\topts: ShardByTenantOptions = {},\n): ShardByTenantConfig<T> {\n\tif (opts.tenants && opts.tenants.length > 0) {\n\t\tconst tenants = [...new Set(opts.tenants)];\n\t\tconst index = new Map(tenants.map((tenant, i) => [tenant, i] as const));\n\t\tconst overflow = tenants.length;\n\t\treturn {\n\t\t\tshardBy: (fragment) => index.get(tenantOf(fragment)) ?? overflow,\n\t\t\tshardCount: tenants.length + 1,\n\t\t};\n\t}\n\tconst configuredShardCount = opts.shardCount ?? 4;\n\tconst shardCount = Number.isSafeInteger(configuredShardCount)\n\t\t? Math.max(1, configuredShardCount)\n\t\t: 4;\n\treturn { shardBy: (fragment) => tenantOf(fragment), shardCount };\n}\n\nfunction compareBigIntDesc(a: bigint, b: bigint): number {\n\tif (a === b) return 0;\n\treturn a > b ? -1 : 1;\n}\n\nfunction isDenseArrayOf<T>(value: unknown, predicate: (item: unknown) => item is T): value is T[] {\n\tif (!Array.isArray(value)) return false;\n\tfor (let i = 0; i < value.length; i += 1) {\n\t\tif (!Object.hasOwn(value, i) || !predicate(value[i])) return false;\n\t}\n\treturn true;\n}\n\nfunction scoreAtLeast(score: number, min: number): boolean {\n\treturn Number.isFinite(score) && score >= min;\n}\n","/**\n * Graph-visible semantic-memory retrieval patterns.\n *\n * D158 allows horizontal semantic-memory patterns when they are ordinary graph\n * nodes with declared deps and graph-visible facts. This file intentionally\n * owns no storage restore/hydration, scheduler, hidden subscription, vector DB,\n * retention loop, consolidation loop, Graph subclass, or protocol behavior.\n */\n\nimport { depBatch, depLatest } from \"../ctx/types.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport {\n\tcosineSimilarity,\n\ttype FactId,\n\tfilterMemoryFragments,\n\ttype KnowledgeAssertion,\n\ttype KnowledgeAssertionObject,\n\ttype KnowledgeAssertionSubject,\n\ttype MemoryAnswer,\n\ttype MemoryFragment,\n\ttype MemoryQuery,\n\tmemoryFragmentMatchesQuery,\n\tvalidateMemoryFragment,\n} from \"./semantic-memory.js\";\n\n/** Query shape for the first graph-visible retrieval bundle. */\nexport interface MemoryRetrievalQuery extends MemoryQuery {\n\t/** Optional dense embedding used only for deterministic in-memory ranking. */\n\treadonly vector?: readonly number[];\n}\n\nexport interface MemoryRetrievalCursor {\n\treadonly evaluation: number;\n\treadonly validFragments: number;\n\treadonly invalidFragments: number;\n\treadonly resultCount: number;\n}\n\nexport type MemoryRetrievalStatusState = \"ready\" | \"empty\" | \"partial\" | \"error\";\n\nexport interface MemoryRetrievalStatus {\n\treadonly state: MemoryRetrievalStatusState;\n\treadonly query: MemoryRetrievalQuery;\n\treadonly cursor: MemoryRetrievalCursor;\n}\n\nexport interface MemoryRetrievalIndex<T = unknown> {\n\treadonly ids: readonly FactId[];\n\treadonly byId: Readonly<Record<FactId, MemoryFragment<T>>>;\n\treadonly cursor: MemoryRetrievalCursor;\n}\n\nexport type MemoryRetrievalErrorCode =\n\t| \"duplicate-fragment-id\"\n\t| \"invalid-fragments-input\"\n\t| \"invalid-fragment\"\n\t| \"invalid-query\"\n\t| \"invalid-query-vector\";\n\nexport interface MemoryRetrievalError {\n\treadonly code: MemoryRetrievalErrorCode;\n\treadonly message: string;\n\treadonly index?: number;\n\treadonly fragment?: unknown;\n\treadonly validationErrors?: readonly string[];\n\treadonly cursor: MemoryRetrievalCursor;\n}\n\nexport interface MemoryRetrievalSnapshot<T = unknown> {\n\treadonly fragments: readonly MemoryFragment<T>[];\n\treadonly indexed: MemoryRetrievalIndex<T>;\n\treadonly ranked: MemoryAnswer<T>;\n\treadonly status: MemoryRetrievalStatus;\n\treadonly errors: readonly MemoryRetrievalError[];\n\treadonly cursor: MemoryRetrievalCursor;\n}\n\nexport type MemoryRetrievalFact<T = unknown> = MemoryRetrievalSnapshot<T>;\n\nexport interface KnowledgeGraphEntity {\n\treadonly id: FactId;\n\treadonly type?: string;\n\treadonly assertionIds: readonly FactId[];\n\treadonly subjectAssertionIds: readonly FactId[];\n\treadonly objectAssertionIds: readonly FactId[];\n}\n\nexport interface KnowledgeGraphRelation {\n\treadonly assertionId: FactId;\n\treadonly subject: KnowledgeAssertionSubject;\n\treadonly predicate: string;\n\treadonly object: KnowledgeAssertionObject;\n\treadonly confidence?: number;\n\treadonly sources: readonly FactId[];\n\treadonly provenance?: string;\n}\n\nexport interface KnowledgeGraphTopic {\n\treadonly predicate: string;\n\treadonly assertionIds: readonly FactId[];\n\treadonly entityIds: readonly FactId[];\n}\n\nexport interface KnowledgeGraphIndex {\n\treadonly assertionIds: readonly FactId[];\n\treadonly entityIds: readonly FactId[];\n\treadonly relationIds: readonly FactId[];\n\treadonly predicates: readonly string[];\n}\n\nexport interface KnowledgeGraphPolicy {\n\treadonly allowedPredicates?: readonly string[];\n\treadonly requireEntityTypes?: boolean;\n}\n\nexport interface KnowledgeGraphCursor {\n\treadonly evaluation: number;\n\treadonly validAssertions: number;\n\treadonly invalidAssertions: number;\n\treadonly entityCount: number;\n\treadonly relationCount: number;\n\treadonly predicateCount: number;\n}\n\nexport type KnowledgeGraphStatusState = \"ready\" | \"empty\" | \"partial\" | \"error\";\n\nexport interface KnowledgeGraphStatus {\n\treadonly state: KnowledgeGraphStatusState;\n\treadonly cursor: KnowledgeGraphCursor;\n}\n\nexport type KnowledgeGraphErrorCode =\n\t| \"invalid-assertions-input\"\n\t| \"invalid-assertion\"\n\t| \"duplicate-assertion-id\"\n\t| \"invalid-policy\"\n\t| \"policy-conflict\";\n\nexport interface KnowledgeGraphError {\n\treadonly code: KnowledgeGraphErrorCode;\n\treadonly message: string;\n\treadonly index?: number;\n\treadonly assertionId?: FactId;\n\treadonly assertion?: unknown;\n\treadonly validationErrors?: readonly string[];\n\treadonly cursor: KnowledgeGraphCursor;\n}\n\nexport interface KnowledgeGraphSnapshot {\n\treadonly assertions: readonly KnowledgeAssertion[];\n\treadonly entities: readonly KnowledgeGraphEntity[];\n\treadonly relations: readonly KnowledgeGraphRelation[];\n\treadonly topics: readonly KnowledgeGraphTopic[];\n\treadonly index: KnowledgeGraphIndex;\n\treadonly status: KnowledgeGraphStatus;\n\treadonly errors: readonly KnowledgeGraphError[];\n\treadonly cursor: KnowledgeGraphCursor;\n}\n\nexport interface KnowledgeGraphReducerBundle {\n\treadonly input: {\n\t\treadonly assertions: Node<readonly unknown[]>;\n\t\treadonly policy?: Node<KnowledgeGraphPolicy>;\n\t};\n\treadonly snapshot: Node<KnowledgeGraphSnapshot>;\n\treadonly assertions: Node<readonly KnowledgeAssertion[]>;\n\treadonly entities: Node<readonly KnowledgeGraphEntity[]>;\n\treadonly relations: Node<readonly KnowledgeGraphRelation[]>;\n\treadonly topics: Node<readonly KnowledgeGraphTopic[]>;\n\treadonly index: Node<KnowledgeGraphIndex>;\n\treadonly status: Node<KnowledgeGraphStatus>;\n\treadonly errors: Node<readonly KnowledgeGraphError[]>;\n\treadonly cursor: Node<KnowledgeGraphCursor>;\n}\n\nexport interface KnowledgeGraphReducerBundleOptions {\n\treadonly name?: string;\n\treadonly assertions: Node<readonly unknown[]>;\n\treadonly policy?: Node<KnowledgeGraphPolicy>;\n}\n\nexport interface MemoryRetrievalBundle<T = unknown> {\n\treadonly input: {\n\t\treadonly fragments: Node<readonly unknown[]>;\n\t\treadonly query: Node<MemoryRetrievalQuery>;\n\t};\n\treadonly snapshot: Node<MemoryRetrievalSnapshot<T>>;\n\treadonly fragments: Node<readonly MemoryFragment<T>[]>;\n\treadonly indexed: Node<MemoryRetrievalIndex<T>>;\n\treadonly ranked: Node<MemoryAnswer<T>>;\n\treadonly status: Node<MemoryRetrievalStatus>;\n\treadonly errors: Node<readonly MemoryRetrievalError[]>;\n\treadonly cursor: Node<MemoryRetrievalCursor>;\n}\n\nexport interface MemoryRetrievalBundleOptions {\n\treadonly name?: string;\n\treadonly fragments: Node<readonly unknown[]>;\n\treadonly query: Node<MemoryRetrievalQuery>;\n}\n\ninterface MemoryRetrievalRuntimeState {\n\tevaluation: number;\n}\n\ninterface MemoryRetrievalQueryValidation {\n\treadonly ok: boolean;\n\treadonly query: MemoryRetrievalQuery;\n\treadonly errors: readonly Omit<MemoryRetrievalError, \"cursor\">[];\n}\n\ninterface FragmentValidationResult<T> {\n\treadonly fragment?: MemoryFragment<T>;\n\treadonly error?: Omit<MemoryRetrievalError, \"cursor\">;\n}\n\n/**\n * Build a graph-visible memory retrieval bundle from explicit fragment/query deps.\n *\n * Invalid fragments and ranking status are emitted as ordinary DATA facts. The\n * bundle never owns storage restore or hidden mutation; callers that need\n * persistence compose D161 collection/storage sidecars outside this pattern.\n */\nexport function memoryRetrievalBundle<T = unknown>(\n\tgraph: Graph,\n\topts: MemoryRetrievalBundleOptions,\n): MemoryRetrievalBundle<T> {\n\tconst name = opts.name ?? \"memoryRetrieval\";\n\tconst { fragments, query } = opts;\n\tconst snapshot = graph.node<MemoryRetrievalSnapshot<T>>(\n\t\t[fragments, query],\n\t\t(ctx) => {\n\t\t\tconst state =\n\t\t\t\tctx.state.get<MemoryRetrievalRuntimeState>() ??\n\t\t\t\t({ evaluation: 0 } satisfies MemoryRetrievalRuntimeState);\n\t\t\tstate.evaluation += 1;\n\t\t\tconst rawFragments = depLatest(ctx, 0);\n\t\t\tconst rawQuery = depLatest(ctx, 1);\n\t\t\tconst queryValidation = validateMemoryRetrievalQuery(rawQuery);\n\t\t\tconst currentQuery = queryValidation.query;\n\t\t\tconst valid: MemoryFragment<T>[] = [];\n\t\t\tconst seenIds = new Set<FactId>();\n\t\t\tconst errors: Omit<MemoryRetrievalError, \"cursor\">[] = [...queryValidation.errors];\n\n\t\t\tif (!Array.isArray(rawFragments)) {\n\t\t\t\terrors.push({\n\t\t\t\t\tcode: \"invalid-fragments-input\",\n\t\t\t\t\tmessage: \"memoryRetrievalBundle: fragments input must be an array\",\n\t\t\t\t\tfragment: rawFragments,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst length = safeArrayLength(rawFragments);\n\t\t\t\tif (length === undefined) {\n\t\t\t\t\terrors.push({\n\t\t\t\t\t\tcode: \"invalid-fragments-input\",\n\t\t\t\t\t\tmessage: \"memoryRetrievalBundle: fragments input length could not be read\",\n\t\t\t\t\t\tfragment: rawFragments,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tfor (let i = 0; i < (length ?? 0); i += 1) {\n\t\t\t\t\tconst result = validateAndSnapshotFragment<T>(rawFragments, i);\n\t\t\t\t\tif (result.error !== undefined) {\n\t\t\t\t\t\terrors.push(result.error);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst fragment = result.fragment as MemoryFragment<T>;\n\t\t\t\t\tif (seenIds.has(fragment.id)) {\n\t\t\t\t\t\terrors.push({\n\t\t\t\t\t\t\tcode: \"duplicate-fragment-id\",\n\t\t\t\t\t\t\tmessage: \"memoryRetrievalBundle: duplicate fragment id\",\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tfragment,\n\t\t\t\t\t\t\tvalidationErrors: [`duplicate fragment id '${fragment.id}'`],\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tseenIds.add(fragment.id);\n\t\t\t\t\tvalid.push(fragment);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst ranked = errors.some((error) => !isRecoverableFragmentError(error))\n\t\t\t\t? []\n\t\t\t\t: rankFragments(valid, currentQuery);\n\t\t\tconst cursor: MemoryRetrievalCursor = Object.freeze({\n\t\t\t\tevaluation: state.evaluation,\n\t\t\t\tvalidFragments: valid.length,\n\t\t\t\tinvalidFragments: errors.filter(\n\t\t\t\t\t(error) => error.code === \"invalid-fragment\" || error.code === \"duplicate-fragment-id\",\n\t\t\t\t).length,\n\t\t\t\tresultCount: ranked.length,\n\t\t\t});\n\t\t\tctx.state.set(state);\n\t\t\tconst answer: MemoryAnswer<T> = Object.freeze({\n\t\t\t\tquery: currentQuery,\n\t\t\t\tresults: Object.freeze(ranked),\n\t\t\t});\n\t\t\tconst status: MemoryRetrievalStatus = Object.freeze({\n\t\t\t\tstate: statusState(errors, ranked.length),\n\t\t\t\tquery: currentQuery,\n\t\t\t\tcursor,\n\t\t\t});\n\t\t\tconst indexed: MemoryRetrievalIndex<T> = Object.freeze({\n\t\t\t\tids: Object.freeze(valid.map((fragment) => fragment.id)),\n\t\t\t\tbyId: indexById(valid),\n\t\t\t\tcursor,\n\t\t\t});\n\t\t\tconst errorFacts = Object.freeze(\n\t\t\t\terrors.map((error) =>\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\t...error,\n\t\t\t\t\t\t...(error.validationErrors === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: { validationErrors: Object.freeze([...error.validationErrors]) }),\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\tctx.down([\n\t\t\t\t[\n\t\t\t\t\t\"DATA\",\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\tfragments: Object.freeze([...valid]),\n\t\t\t\t\t\tindexed,\n\t\t\t\t\t\tranked: answer,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\terrors: errorFacts,\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t]);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/snapshot`,\n\t\t\tfactory: \"memoryRetrievalSnapshot\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tinput: { fragments, query },\n\t\tsnapshot,\n\t\tfragments: retrievalProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/fragments`,\n\t\t\t\"memoryRetrievalFragments\",\n\t\t\t(fact) => fact.fragments,\n\t\t),\n\t\tindexed: retrievalProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/indexed`,\n\t\t\t\"memoryRetrievalIndexed\",\n\t\t\t(fact) => fact.indexed,\n\t\t),\n\t\tranked: retrievalProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/ranked`,\n\t\t\t\"memoryRetrievalRanked\",\n\t\t\t(fact) => fact.ranked,\n\t\t),\n\t\tstatus: retrievalProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/status`,\n\t\t\t\"memoryRetrievalStatus\",\n\t\t\t(fact) => fact.status,\n\t\t),\n\t\terrors: retrievalProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/errors`,\n\t\t\t\"memoryRetrievalErrors\",\n\t\t\t(fact) => fact.errors,\n\t\t),\n\t\tcursor: retrievalProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/cursor`,\n\t\t\t\"memoryRetrievalCursor\",\n\t\t\t(fact) => fact.cursor,\n\t\t),\n\t};\n}\n\n/**\n * D170 lower semantic-memory KG materializer.\n *\n * Assertion, entity, relation, and topic ids remain DATA keys. The bundle has\n * static describe-visible topology and owns no storage, LLM extraction,\n * scheduler, agent runtime, or dynamic graph node lifecycle.\n */\nexport function knowledgeGraphReducerBundle(\n\tgraph: Graph,\n\topts: KnowledgeGraphReducerBundleOptions,\n): KnowledgeGraphReducerBundle {\n\tconst name = opts.name ?? \"knowledgeGraph\";\n\tconst deps = opts.policy === undefined ? [opts.assertions] : [opts.assertions, opts.policy];\n\tconst snapshot = graph.node<KnowledgeGraphSnapshot>(\n\t\tdeps,\n\t\t(ctx) => {\n\t\t\tconst state =\n\t\t\t\tctx.state.get<{ evaluation: number }>() ??\n\t\t\t\t({ evaluation: 0 } satisfies { evaluation: number });\n\t\t\tstate.evaluation += 1;\n\t\t\tconst policy = validateKnowledgeGraphPolicy(\n\t\t\t\topts.policy === undefined ? undefined : depLatest(ctx, 1),\n\t\t\t);\n\t\t\tconst reduced = reduceKnowledgeAssertions(depLatest(ctx, 0), policy.policy);\n\t\t\tconst pendingErrors = [...policy.errors, ...reduced.errors];\n\t\t\tconst cursor: KnowledgeGraphCursor = Object.freeze({\n\t\t\t\tevaluation: state.evaluation,\n\t\t\t\tvalidAssertions: reduced.assertions.length,\n\t\t\t\tinvalidAssertions: reduced.invalidAssertions,\n\t\t\t\tentityCount: reduced.entities.length,\n\t\t\t\trelationCount: reduced.relations.length,\n\t\t\t\tpredicateCount: reduced.topics.length,\n\t\t\t});\n\t\t\tconst errors = Object.freeze(\n\t\t\t\tpendingErrors.map((error) =>\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\t...error,\n\t\t\t\t\t\t...(error.validationErrors === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: { validationErrors: Object.freeze([...error.validationErrors]) }),\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\t\t\tconst status: KnowledgeGraphStatus = Object.freeze({\n\t\t\t\tstate:\n\t\t\t\t\treduced.assertions.length === 0 && errors.length === 0\n\t\t\t\t\t\t? \"empty\"\n\t\t\t\t\t\t: errors.length === 0\n\t\t\t\t\t\t\t? \"ready\"\n\t\t\t\t\t\t\t: reduced.assertions.length > 0\n\t\t\t\t\t\t\t\t? \"partial\"\n\t\t\t\t\t\t\t\t: \"error\",\n\t\t\t\tcursor,\n\t\t\t});\n\t\t\tctx.state.set(state);\n\t\t\tctx.down([\n\t\t\t\t[\n\t\t\t\t\t\"DATA\",\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\tassertions: Object.freeze(reduced.assertions),\n\t\t\t\t\t\tentities: Object.freeze(reduced.entities),\n\t\t\t\t\t\trelations: Object.freeze(reduced.relations),\n\t\t\t\t\t\ttopics: Object.freeze(reduced.topics),\n\t\t\t\t\t\tindex: reduced.index,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\terrors,\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t]);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/snapshot`,\n\t\t\tfactory: \"knowledgeGraphReducerSnapshot\",\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\treturn {\n\t\tinput: {\n\t\t\tassertions: opts.assertions,\n\t\t\t...(opts.policy === undefined ? {} : { policy: opts.policy }),\n\t\t},\n\t\tsnapshot,\n\t\tassertions: kgProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/assertions`,\n\t\t\t\"knowledgeGraphAssertions\",\n\t\t\t(fact) => fact.assertions,\n\t\t),\n\t\tentities: kgProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/entities`,\n\t\t\t\"knowledgeGraphEntities\",\n\t\t\t(fact) => fact.entities,\n\t\t),\n\t\trelations: kgProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/relations`,\n\t\t\t\"knowledgeGraphRelations\",\n\t\t\t(fact) => fact.relations,\n\t\t),\n\t\ttopics: kgProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/topics`,\n\t\t\t\"knowledgeGraphTopics\",\n\t\t\t(fact) => fact.topics,\n\t\t),\n\t\tindex: kgProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/index`,\n\t\t\t\"knowledgeGraphIndex\",\n\t\t\t(fact) => fact.index,\n\t\t),\n\t\tstatus: kgProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/status`,\n\t\t\t\"knowledgeGraphStatus\",\n\t\t\t(fact) => fact.status,\n\t\t),\n\t\terrors: kgProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/errors`,\n\t\t\t\"knowledgeGraphErrors\",\n\t\t\t(fact) => fact.errors,\n\t\t),\n\t\tcursor: kgProjection(\n\t\t\tgraph,\n\t\t\tsnapshot,\n\t\t\t`${name}/cursor`,\n\t\t\t\"knowledgeGraphCursor\",\n\t\t\t(fact) => fact.cursor,\n\t\t),\n\t};\n}\n\nfunction retrievalProjection<TFact, T>(\n\tgraph: Graph,\n\tsnapshot: Node<MemoryRetrievalSnapshot<T>>,\n\tname: string,\n\tfactory: string,\n\tselect: (fact: MemoryRetrievalSnapshot<T>) => TFact | undefined,\n): Node<TFact> {\n\treturn graph.node<TFact>(\n\t\t[snapshot],\n\t\t(ctx) => {\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst fact = raw as MemoryRetrievalSnapshot<T>;\n\t\t\t\tconst selected = select(fact);\n\t\t\t\tif (selected !== undefined) ctx.down([[\"DATA\", selected]]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname,\n\t\t\tfactory,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n}\n\nfunction kgProjection<TFact>(\n\tgraph: Graph,\n\tsnapshot: Node<KnowledgeGraphSnapshot>,\n\tname: string,\n\tfactory: string,\n\tselect: (fact: KnowledgeGraphSnapshot) => TFact,\n): Node<TFact> {\n\treturn graph.node<TFact>(\n\t\t[snapshot],\n\t\t(ctx) => {\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tctx.down([[\"DATA\", select(raw as KnowledgeGraphSnapshot)]]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname,\n\t\t\tfactory,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n}\n\nfunction validateKnowledgeGraphPolicy(value: unknown): {\n\treadonly policy?: KnowledgeGraphPolicy;\n\treadonly errors: readonly Omit<KnowledgeGraphError, \"cursor\">[];\n} {\n\tif (value === undefined) return { policy: undefined, errors: [] };\n\tif (!isPlainObject(value)) {\n\t\treturn {\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-policy\",\n\t\t\t\t\tmessage: \"knowledgeGraphReducerBundle: policy must be an object\",\n\t\t\t\t\tassertion: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\tconst errors: string[] = [];\n\tconst policy = value as Partial<KnowledgeGraphPolicy>;\n\tif (\n\t\tpolicy.allowedPredicates !== undefined &&\n\t\t!isDenseArrayOf(policy.allowedPredicates, (item): item is string => typeof item === \"string\")\n\t) {\n\t\terrors.push(\"allowedPredicates must be a readonly string array\");\n\t}\n\tif (policy.requireEntityTypes !== undefined && typeof policy.requireEntityTypes !== \"boolean\") {\n\t\terrors.push(\"requireEntityTypes must be a boolean when present\");\n\t}\n\tif (errors.length > 0) {\n\t\treturn {\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-policy\",\n\t\t\t\t\tmessage: \"knowledgeGraphReducerBundle: policy is invalid\",\n\t\t\t\t\tassertion: value,\n\t\t\t\t\tvalidationErrors: Object.freeze(errors),\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\treturn {\n\t\tpolicy: Object.freeze({\n\t\t\t...(policy.allowedPredicates === undefined\n\t\t\t\t? {}\n\t\t\t\t: { allowedPredicates: Object.freeze([...policy.allowedPredicates]) }),\n\t\t\t...(policy.requireEntityTypes === undefined\n\t\t\t\t? {}\n\t\t\t\t: { requireEntityTypes: policy.requireEntityTypes }),\n\t\t}),\n\t\terrors: [],\n\t};\n}\n\nfunction reduceKnowledgeAssertions(\n\tvalue: unknown,\n\tpolicy?: KnowledgeGraphPolicy,\n): {\n\treadonly assertions: readonly KnowledgeAssertion[];\n\treadonly entities: readonly KnowledgeGraphEntity[];\n\treadonly relations: readonly KnowledgeGraphRelation[];\n\treadonly topics: readonly KnowledgeGraphTopic[];\n\treadonly index: KnowledgeGraphIndex;\n\treadonly errors: readonly Omit<KnowledgeGraphError, \"cursor\">[];\n\treadonly invalidAssertions: number;\n} {\n\tconst assertions: KnowledgeAssertion[] = [];\n\tconst errors: Omit<KnowledgeGraphError, \"cursor\">[] = [];\n\tconst seenAssertions = new Set<FactId>();\n\tif (!Array.isArray(value)) {\n\t\treturn {\n\t\t\tassertions,\n\t\t\tentities: [],\n\t\t\trelations: [],\n\t\t\ttopics: [],\n\t\t\tindex: emptyKnowledgeGraphIndex(),\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-assertions-input\",\n\t\t\t\t\tmessage: \"knowledgeGraphReducerBundle: assertions input must be an array\",\n\t\t\t\t\tassertion: value,\n\t\t\t\t},\n\t\t\t],\n\t\t\tinvalidAssertions: 0,\n\t\t};\n\t}\n\tconst length = safeArrayLength(value);\n\tif (length === undefined) {\n\t\treturn {\n\t\t\tassertions,\n\t\t\tentities: [],\n\t\t\trelations: [],\n\t\t\ttopics: [],\n\t\t\tindex: emptyKnowledgeGraphIndex(),\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-assertions-input\",\n\t\t\t\t\tmessage: \"knowledgeGraphReducerBundle: assertions input length could not be read\",\n\t\t\t\t\tassertion: value,\n\t\t\t\t},\n\t\t\t],\n\t\t\tinvalidAssertions: 0,\n\t\t};\n\t}\n\tfor (let i = 0; i < length; i += 1) {\n\t\tconst result = validateKnowledgeAssertion(value[i], i, policy);\n\t\tif (result.error !== undefined) {\n\t\t\terrors.push(result.error);\n\t\t\tcontinue;\n\t\t}\n\t\tconst assertion = result.assertion as KnowledgeAssertion;\n\t\tif (seenAssertions.has(assertion.id)) {\n\t\t\terrors.push({\n\t\t\t\tcode: \"duplicate-assertion-id\",\n\t\t\t\tmessage: \"knowledgeGraphReducerBundle: duplicate assertion id\",\n\t\t\t\tindex: i,\n\t\t\t\tassertionId: assertion.id,\n\t\t\t\tassertion,\n\t\t\t\tvalidationErrors: Object.freeze([`duplicate assertion id '${assertion.id}'`]),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tseenAssertions.add(assertion.id);\n\t\tassertions.push(assertion);\n\t}\n\tconst materialized = materializeKnowledgeGraph(assertions);\n\treturn {\n\t\tassertions: Object.freeze(assertions),\n\t\t...materialized,\n\t\terrors,\n\t\tinvalidAssertions: errors.filter((error) => error.code !== \"invalid-policy\").length,\n\t};\n}\n\nfunction validateKnowledgeAssertion(\n\tvalue: unknown,\n\tindex: number,\n\tpolicy?: KnowledgeGraphPolicy,\n): {\n\treadonly assertion?: KnowledgeAssertion;\n\treadonly error?: Omit<KnowledgeGraphError, \"cursor\">;\n} {\n\tif (!isPlainObject(value)) {\n\t\treturn invalidKnowledgeAssertion(index, value, [\"assertion must be an object\"]);\n\t}\n\tconst raw = value as Partial<KnowledgeAssertion>;\n\tconst errors: string[] = [];\n\tif (!isNonEmptyString(raw.id)) errors.push(\"id must be a non-empty string\");\n\tif (!isKnowledgeSubject(raw.subject)) errors.push(\"subject.id must be a non-empty string\");\n\tif (!isNonEmptyString(raw.predicate)) errors.push(\"predicate must be a non-empty string\");\n\tif (!isKnowledgeObject(raw.object)) errors.push(\"object shape is invalid\");\n\tif (\n\t\traw.confidence !== undefined &&\n\t\t(!Number.isFinite(raw.confidence) || raw.confidence < 0 || raw.confidence > 1)\n\t) {\n\t\terrors.push(\"confidence must be a finite number in [0, 1] when present\");\n\t}\n\tif (raw.sources !== undefined && !isDenseArrayOf(raw.sources, isNonEmptyString)) {\n\t\terrors.push(\"sources must be a readonly non-empty string array when present\");\n\t}\n\tif (\n\t\tpolicy?.allowedPredicates !== undefined &&\n\t\t!policy.allowedPredicates.includes(raw.predicate ?? \"\")\n\t) {\n\t\terrors.push(`predicate '${String(raw.predicate)}' is not allowed by policy`);\n\t}\n\tif (policy?.requireEntityTypes === true) {\n\t\tif (isKnowledgeSubject(raw.subject) && raw.subject.type === undefined) {\n\t\t\terrors.push(\"subject.type is required by policy\");\n\t\t}\n\t\tif (\n\t\t\tisKnowledgeObject(raw.object) &&\n\t\t\traw.object.kind === \"entity\" &&\n\t\t\traw.object.type === undefined\n\t\t) {\n\t\t\terrors.push(\"object.type is required by policy for entity objects\");\n\t\t}\n\t}\n\tif (errors.length > 0) {\n\t\treturn invalidKnowledgeAssertion(index, value, errors, raw.id);\n\t}\n\treturn {\n\t\tassertion: Object.freeze({\n\t\t\tid: raw.id as FactId,\n\t\t\t...(raw.recordId === undefined ? {} : { recordId: raw.recordId }),\n\t\t\t...(raw.fragmentId === undefined ? {} : { fragmentId: raw.fragmentId }),\n\t\t\tsubject: snapshotSubject(raw.subject as KnowledgeAssertionSubject),\n\t\t\tpredicate: raw.predicate as string,\n\t\t\tobject: snapshotObject(raw.object as KnowledgeAssertionObject),\n\t\t\t...(raw.confidence === undefined ? {} : { confidence: raw.confidence }),\n\t\t\tsources: Object.freeze([...(raw.sources ?? [])]),\n\t\t\t...(raw.provenance === undefined ? {} : { provenance: raw.provenance }),\n\t\t}),\n\t};\n}\n\nfunction invalidKnowledgeAssertion(\n\tindex: number,\n\tassertion: unknown,\n\tvalidationErrors: readonly string[],\n\tassertionId?: unknown,\n): { readonly error: Omit<KnowledgeGraphError, \"cursor\"> } {\n\treturn {\n\t\terror: {\n\t\t\tcode: \"invalid-assertion\",\n\t\t\tmessage: \"knowledgeGraphReducerBundle: assertion is invalid\",\n\t\t\tindex,\n\t\t\tassertionId: typeof assertionId === \"string\" ? assertionId : undefined,\n\t\t\tassertion,\n\t\t\tvalidationErrors: Object.freeze([...validationErrors]),\n\t\t},\n\t};\n}\n\nfunction materializeKnowledgeGraph(assertions: readonly KnowledgeAssertion[]): {\n\treadonly entities: readonly KnowledgeGraphEntity[];\n\treadonly relations: readonly KnowledgeGraphRelation[];\n\treadonly topics: readonly KnowledgeGraphTopic[];\n\treadonly index: KnowledgeGraphIndex;\n} {\n\tconst entityAssertions = new Map<\n\t\tFactId,\n\t\t{\n\t\t\ttype?: string;\n\t\t\tassertionIds: Set<FactId>;\n\t\t\tsubjectAssertionIds: Set<FactId>;\n\t\t\tobjectAssertionIds: Set<FactId>;\n\t\t}\n\t>();\n\tconst topics = new Map<FactId, { assertionIds: Set<FactId>; entityIds: Set<FactId> }>();\n\tconst relations: KnowledgeGraphRelation[] = [];\n\tfor (const assertion of assertions) {\n\t\tconst subject = touchEntity(entityAssertions, assertion.subject.id, assertion.subject.type);\n\t\tsubject.assertionIds.add(assertion.id);\n\t\tsubject.subjectAssertionIds.add(assertion.id);\n\t\tlet topic = topics.get(assertion.predicate);\n\t\tif (topic === undefined) {\n\t\t\ttopic = { assertionIds: new Set(), entityIds: new Set() };\n\t\t\ttopics.set(assertion.predicate, topic);\n\t\t}\n\t\ttopic.assertionIds.add(assertion.id);\n\t\ttopic.entityIds.add(assertion.subject.id);\n\t\tif (assertion.object.kind === \"entity\") {\n\t\t\tconst object = touchEntity(entityAssertions, assertion.object.id, assertion.object.type);\n\t\t\tobject.assertionIds.add(assertion.id);\n\t\t\tobject.objectAssertionIds.add(assertion.id);\n\t\t\ttopic.entityIds.add(assertion.object.id);\n\t\t}\n\t\trelations.push(\n\t\t\tObject.freeze({\n\t\t\t\tassertionId: assertion.id,\n\t\t\t\tsubject: assertion.subject,\n\t\t\t\tpredicate: assertion.predicate,\n\t\t\t\tobject: assertion.object,\n\t\t\t\t...(assertion.confidence === undefined ? {} : { confidence: assertion.confidence }),\n\t\t\t\tsources: Object.freeze([...(assertion.sources ?? [])]),\n\t\t\t\t...(assertion.provenance === undefined ? {} : { provenance: assertion.provenance }),\n\t\t\t}),\n\t\t);\n\t}\n\tconst entities = [...entityAssertions.entries()].map(([id, entity]) =>\n\t\tObject.freeze({\n\t\t\tid,\n\t\t\t...(entity.type === undefined ? {} : { type: entity.type }),\n\t\t\tassertionIds: freezeSortedSet(entity.assertionIds),\n\t\t\tsubjectAssertionIds: freezeSortedSet(entity.subjectAssertionIds),\n\t\t\tobjectAssertionIds: freezeSortedSet(entity.objectAssertionIds),\n\t\t}),\n\t);\n\tentities.sort((a, b) => compareString(a.id, b.id));\n\trelations.sort((a, b) => compareString(a.assertionId, b.assertionId));\n\tconst topicFacts = [...topics.entries()].map(([predicate, topic]) =>\n\t\tObject.freeze({\n\t\t\tpredicate,\n\t\t\tassertionIds: freezeSortedSet(topic.assertionIds),\n\t\t\tentityIds: freezeSortedSet(topic.entityIds),\n\t\t}),\n\t);\n\ttopicFacts.sort((a, b) => compareString(a.predicate, b.predicate));\n\tconst index: KnowledgeGraphIndex = Object.freeze({\n\t\tassertionIds: Object.freeze(assertions.map((assertion) => assertion.id).sort(compareString)),\n\t\tentityIds: Object.freeze(entities.map((entity) => entity.id)),\n\t\trelationIds: Object.freeze(relations.map((relation) => relation.assertionId)),\n\t\tpredicates: Object.freeze(topicFacts.map((topic) => topic.predicate)),\n\t});\n\treturn {\n\t\tentities: Object.freeze(entities),\n\t\trelations: Object.freeze(relations),\n\t\ttopics: Object.freeze(topicFacts),\n\t\tindex,\n\t};\n}\n\nfunction touchEntity(\n\tentities: Map<\n\t\tFactId,\n\t\t{\n\t\t\ttype?: string;\n\t\t\tassertionIds: Set<FactId>;\n\t\t\tsubjectAssertionIds: Set<FactId>;\n\t\t\tobjectAssertionIds: Set<FactId>;\n\t\t}\n\t>,\n\tid: FactId,\n\ttype?: string,\n) {\n\tlet entity = entities.get(id);\n\tif (entity === undefined) {\n\t\tentity = {\n\t\t\t...(type === undefined ? {} : { type }),\n\t\t\tassertionIds: new Set(),\n\t\t\tsubjectAssertionIds: new Set(),\n\t\t\tobjectAssertionIds: new Set(),\n\t\t};\n\t\tentities.set(id, entity);\n\t} else if (entity.type === undefined && type !== undefined) {\n\t\tentity.type = type;\n\t}\n\treturn entity;\n}\n\nfunction emptyKnowledgeGraphIndex(): KnowledgeGraphIndex {\n\treturn Object.freeze({\n\t\tassertionIds: Object.freeze([]),\n\t\tentityIds: Object.freeze([]),\n\t\trelationIds: Object.freeze([]),\n\t\tpredicates: Object.freeze([]),\n\t});\n}\n\nfunction snapshotSubject(subject: KnowledgeAssertionSubject): KnowledgeAssertionSubject {\n\treturn Object.freeze({\n\t\tid: subject.id,\n\t\t...(subject.type === undefined ? {} : { type: subject.type }),\n\t});\n}\n\nfunction snapshotObject(object: KnowledgeAssertionObject): KnowledgeAssertionObject {\n\treturn object.kind === \"entity\"\n\t\t? Object.freeze({\n\t\t\t\tkind: \"entity\",\n\t\t\t\tid: object.id,\n\t\t\t\t...(object.type === undefined ? {} : { type: object.type }),\n\t\t\t})\n\t\t: Object.freeze({\n\t\t\t\tkind: \"value\",\n\t\t\t\tvalue: object.value,\n\t\t\t\t...(object.valueType === undefined ? {} : { valueType: object.valueType }),\n\t\t\t});\n}\n\nfunction isKnowledgeSubject(value: unknown): value is KnowledgeAssertionSubject {\n\treturn (\n\t\tisPlainObject(value) &&\n\t\tisNonEmptyString(value.id) &&\n\t\t(value.type === undefined || isNonEmptyString(value.type))\n\t);\n}\n\nfunction isKnowledgeObject(value: unknown): value is KnowledgeAssertionObject {\n\tif (!isPlainObject(value)) return false;\n\tif (value.kind === \"entity\") {\n\t\treturn isNonEmptyString(value.id) && (value.type === undefined || isNonEmptyString(value.type));\n\t}\n\tif (value.kind !== \"value\") return false;\n\treturn (\n\t\tisStrictJsonValue(value.value) &&\n\t\t(value.valueType === undefined || isNonEmptyString(value.valueType))\n\t);\n}\n\nfunction isStrictJsonValue(value: unknown): boolean {\n\tif (value === null || typeof value === \"string\" || typeof value === \"boolean\") return true;\n\tif (typeof value === \"number\") return Number.isFinite(value);\n\tif (Array.isArray(value)) {\n\t\tfor (let i = 0; i < value.length; i += 1) {\n\t\t\tif (!Object.hasOwn(value, i) || !isStrictJsonValue(value[i])) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tif (!isPlainObject(value)) return false;\n\tfor (const key of Object.keys(value)) {\n\t\tif (!isStrictJsonValue(value[key])) return false;\n\t}\n\treturn Object.getOwnPropertySymbols(value).length === 0;\n}\n\nfunction freezeSortedSet(value: ReadonlySet<FactId>): readonly FactId[] {\n\treturn Object.freeze([...value].sort(compareString));\n}\n\nfunction rankFragments<T>(\n\tfragments: readonly MemoryFragment<T>[],\n\tquery: MemoryRetrievalQuery,\n): readonly MemoryFragment<T>[] {\n\tif (query.vector === undefined) return filterMemoryFragments(fragments, query);\n\tconst ranked = fragments.filter((fragment) => memoryFragmentMatchesQuery(fragment, query));\n\tranked.sort((a, b) => {\n\t\tconst vectorDelta = vectorScore(b, query) - vectorScore(a, query);\n\t\tif (vectorDelta !== 0) return vectorDelta;\n\t\tconst confidenceDelta = b.confidence - a.confidence;\n\t\tif (confidenceDelta !== 0) return confidenceDelta;\n\t\treturn compareBigIntDesc(a.tNs, b.tNs);\n\t});\n\treturn query.limit === undefined ? ranked : ranked.slice(0, Math.max(0, query.limit));\n}\n\nfunction vectorScore(fragment: MemoryFragment, query: MemoryRetrievalQuery): number {\n\tif (query.vector === undefined || fragment.embedding === undefined) return 0;\n\treturn cosineSimilarity(query.vector, fragment.embedding);\n}\n\nfunction statusState(\n\terrors: readonly Omit<MemoryRetrievalError, \"cursor\">[],\n\tresultCount: number,\n): MemoryRetrievalStatusState {\n\tif (errors.some((error) => !isRecoverableFragmentError(error))) return \"error\";\n\tif (errors.length > 0) return \"partial\";\n\treturn resultCount > 0 ? \"ready\" : \"empty\";\n}\n\nfunction isRecoverableFragmentError(error: Omit<MemoryRetrievalError, \"cursor\">): boolean {\n\treturn error.code === \"invalid-fragment\" || error.code === \"duplicate-fragment-id\";\n}\n\nfunction indexById<T>(\n\tfragments: readonly MemoryFragment<T>[],\n): Readonly<Record<FactId, MemoryFragment<T>>> {\n\tconst byId = Object.create(null) as Record<FactId, MemoryFragment<T>>;\n\tfor (const fragment of fragments) byId[fragment.id] = fragment;\n\treturn Object.freeze(byId);\n}\n\nfunction isFiniteVector(value: unknown): value is readonly number[] {\n\tif (!Array.isArray(value)) return false;\n\tfor (let i = 0; i < value.length; i += 1) {\n\t\tif (!Object.hasOwn(value, i) || !Number.isFinite(value[i])) return false;\n\t}\n\treturn true;\n}\n\nfunction validateMemoryRetrievalQuery(value: unknown): MemoryRetrievalQueryValidation {\n\ttry {\n\t\treturn validateMemoryRetrievalQueryInner(value);\n\t} catch (error) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tquery: {},\n\t\t\terrors: [\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid-query\",\n\t\t\t\t\tmessage: `memoryRetrievalBundle: query access failed: ${errorMessage(error)}`,\n\t\t\t\t\tfragment: value,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n}\n\nfunction validateMemoryRetrievalQueryInner(value: unknown): MemoryRetrievalQueryValidation {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\treturn invalidQuery(value, \"memoryRetrievalBundle: query must be an object\");\n\t}\n\tconst query = value as Partial<MemoryRetrievalQuery>;\n\tconst errors: Omit<MemoryRetrievalError, \"cursor\">[] = [];\n\tif (\n\t\tquery.tags !== undefined &&\n\t\t!isDenseArrayOf(query.tags, (tag): tag is string => typeof tag === \"string\")\n\t) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-query\",\n\t\t\tmessage: \"memoryRetrievalBundle: query.tags must be a readonly string array\",\n\t\t\tfragment: value,\n\t\t\tvalidationErrors: [\"tags must be a readonly string array\"],\n\t\t});\n\t}\n\tif (query.asOf !== undefined && typeof query.asOf !== \"bigint\") {\n\t\terrors.push({\n\t\t\tcode: \"invalid-query\",\n\t\t\tmessage: \"memoryRetrievalBundle: query.asOf must be a bigint\",\n\t\t\tfragment: value,\n\t\t\tvalidationErrors: [\"asOf must be a bigint when present\"],\n\t\t});\n\t}\n\tif (\n\t\tquery.minConfidence !== undefined &&\n\t\t(!Number.isFinite(query.minConfidence) || query.minConfidence < 0 || query.minConfidence > 1)\n\t) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-query\",\n\t\t\tmessage: \"memoryRetrievalBundle: query.minConfidence must be a finite number in [0, 1]\",\n\t\t\tfragment: value,\n\t\t\tvalidationErrors: [\"minConfidence must be a finite number in [0, 1]\"],\n\t\t});\n\t}\n\tif (query.limit !== undefined && (!Number.isSafeInteger(query.limit) || query.limit < 0)) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-query\",\n\t\t\tmessage: \"memoryRetrievalBundle: query.limit must be a non-negative safe integer\",\n\t\t\tfragment: value,\n\t\t\tvalidationErrors: [\"limit must be a non-negative safe integer\"],\n\t\t});\n\t}\n\tif (query.vector !== undefined && !isFiniteVector(query.vector)) {\n\t\terrors.push({\n\t\t\tcode: \"invalid-query-vector\",\n\t\t\tmessage: \"memoryRetrievalBundle: query.vector must be a finite number array\",\n\t\t\tfragment: value,\n\t\t\tvalidationErrors: [\"vector must be a finite number array\"],\n\t\t});\n\t}\n\tif (errors.length > 0) return { ok: false, query: {}, errors };\n\treturn { ok: true, query: snapshotQuery(query), errors };\n}\n\nfunction invalidQuery(value: unknown, message: string): MemoryRetrievalQueryValidation {\n\treturn {\n\t\tok: false,\n\t\tquery: {},\n\t\terrors: [\n\t\t\t{\n\t\t\t\tcode: \"invalid-query\",\n\t\t\t\tmessage,\n\t\t\t\tfragment: value,\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction snapshotQuery(query: Partial<MemoryRetrievalQuery>): MemoryRetrievalQuery {\n\treturn Object.freeze({\n\t\t...(query.tags === undefined ? {} : { tags: Object.freeze([...query.tags]) }),\n\t\t...(query.asOf === undefined ? {} : { asOf: query.asOf }),\n\t\t...(query.minConfidence === undefined ? {} : { minConfidence: query.minConfidence }),\n\t\t...(query.limit === undefined ? {} : { limit: query.limit }),\n\t\t...(query.vector === undefined ? {} : { vector: Object.freeze([...query.vector]) }),\n\t});\n}\n\nfunction safeArrayLength(value: readonly unknown[]): number | undefined {\n\ttry {\n\t\treturn value.length;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction validateAndSnapshotFragment<T>(\n\trawFragments: readonly unknown[],\n\tindex: number,\n): FragmentValidationResult<T> {\n\tlet raw: unknown;\n\ttry {\n\t\traw = rawFragments[index];\n\t\tconst validation = validateMemoryFragment(raw);\n\t\tif (!validation.ok) {\n\t\t\treturn {\n\t\t\t\terror: {\n\t\t\t\t\tcode: \"invalid-fragment\",\n\t\t\t\t\tmessage: \"memoryRetrievalBundle: invalid memory fragment\",\n\t\t\t\t\tindex,\n\t\t\t\t\tfragment: raw,\n\t\t\t\t\tvalidationErrors: Object.freeze([...validation.errors]),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn { fragment: snapshotFragment(raw as MemoryFragment<T>) };\n\t} catch (error) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tcode: \"invalid-fragment\",\n\t\t\t\tmessage: `memoryRetrievalBundle: fragment access failed: ${errorMessage(error)}`,\n\t\t\t\tindex,\n\t\t\t\tfragment: raw,\n\t\t\t\tvalidationErrors: Object.freeze([\"fragment access failed\"]),\n\t\t\t},\n\t\t};\n\t}\n}\n\nfunction snapshotFragment<T>(fragment: MemoryFragment<T>): MemoryFragment<T> {\n\treturn Object.freeze({\n\t\tid: fragment.id,\n\t\tpayload: fragment.payload,\n\t\ttNs: fragment.tNs,\n\t\t...(fragment.validFrom === undefined ? {} : { validFrom: fragment.validFrom }),\n\t\t...(fragment.validTo === undefined ? {} : { validTo: fragment.validTo }),\n\t\tconfidence: fragment.confidence,\n\t\ttags: Object.freeze([...fragment.tags]),\n\t\tsources: Object.freeze([...fragment.sources]),\n\t\t...(fragment.embedding === undefined\n\t\t\t? {}\n\t\t\t: { embedding: Object.freeze([...fragment.embedding]) }),\n\t\t...(fragment.parentFragmentId === undefined\n\t\t\t? {}\n\t\t\t: { parentFragmentId: fragment.parentFragmentId }),\n\t\t...(fragment.provenance === undefined ? {} : { provenance: fragment.provenance }),\n\t});\n}\n\nfunction isDenseArrayOf<T>(value: unknown, predicate: (item: unknown) => item is T): value is T[] {\n\tif (!Array.isArray(value)) return false;\n\tfor (let i = 0; i < value.length; i += 1) {\n\t\tif (!Object.hasOwn(value, i) || !predicate(value[i])) return false;\n\t}\n\treturn true;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.length > 0;\n}\n\nfunction errorMessage(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nfunction compareString(a: string, b: string): number {\n\treturn a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction compareBigIntDesc(a: bigint, b: bigint): number {\n\tif (a === b) return 0;\n\treturn a > b ? -1 : 1;\n}\n"],"mappings":"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","names":["isDenseArrayOf","compareBigIntDesc"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/graph/data-structures/core.ts","../src/graph/data-structures/reactive-index.ts","../src/graph/policies/collection.ts","../src/graph/data-structures/reactive-list.ts","../src/graph/data-structures/reactive-log.ts","../src/graph/data-structures/reactive-map.ts","../src/data-structures/persistence.ts"],"sourcesContent":["/**\n * The shared reactiveCollection core (CSP-2.8, D60).\n *\n * Every reactive data structure (list/map/index/log) is `collectionCore(backend) + a typed method\n * surface` (D60 #5). The core owns the TWO output ports and nothing else:\n *\n * - BACKEND — the single materialized state (D60 #1): a plain mutable object with a monotonic\n * `version` + a `snapshot()`. It applies deltas and IS the materialized state; there is NO ACC\n * node and NO effect bridge re-deriving it (the misdesign D60 rejected — the backend already\n * integrates, its cost is intrinsic). The backend is a closure object, not a graph node, so its\n * durability is structural (survives last-subscriber disconnect; node ROM/RAM is moot, D60 #1).\n *\n * - DELTA port (D60 #2a) — an always-on bare source ({@link CollectionCore.delta}); each mutation\n * pushes ONE change payload (O(1)/mutation). Downstream watches events anytime. It is the\n * structure's BACKBONE: the snapshot node declares it as its dep (D60 reactiveList topology).\n *\n * - SNAPSHOT port (D60 #2b) — a pull-mode node ({@link CollectionCore.snapshot}, R-pull/D269) that\n * is QUIET by default and, on a cone-routed PULL demand, LAZILY reads `backend.snapshot()`\n * (one O(n) materialization) and pushes it once, then re-quiets. The O(n) build happens ONLY on\n * demand — never eagerly per mutation (D60 #2b: lazy is P·O(n), not M·O(n)). It has NO value of\n * its own — its fn reads the backend on demand, so the backend stays the single source of truth\n * (D60 #3). Coalesce-on-no-change is free: the delta-dep's DIRTY/DATA arms the pull node via\n * R-pull's quiet-absorb accounting; a demand with no intervening delta emits no duplicate DATA.\n *\n * Demand path: a downstream consumer issues `ctx.upNext([[\"PULL\", { pullId: core.pullId }]])`\n * (boundary-deferred self-demand, R-up-routing/D269) — it needs the snapshot node upstream in its\n * declared cone, NOT its reference. Cold-start (a demand before any mutation) emits no DATA; for an\n * initial/imperative read use the structure's synchronous quick-read (the deliberately-non-reactive\n * peek, D60) — the reactive pull serves the watch-delta-then-demand pattern.\n *\n * Per-language (D6/D24, never in parity, no conformance — the substrate pull is already C-16).\n */\n\nimport { type Ctx, depBatch } from \"../../ctx/types.js\";\nimport type { Dispatcher } from \"../../dispatcher/index.js\";\nimport { Node, releaseRuntimeOfNode } from \"../../node/node.js\";\nimport { errorPayload } from \"../../protocol/messages.js\";\nimport { type GraphCheckpointJson, registerBackendStateContributor } from \"../checkpoint.js\";\nimport type { Graph } from \"../graph.js\";\nimport type { Operator } from \"../operators.js\";\nimport type { ViewCachePolicy } from \"../policies/types.js\";\n\n/** The materialized-state contract a structure's backend must satisfy (D60 #1). */\nexport interface CollectionBackend<S> {\n\t/** Monotonic mutation counter; advances on every visible state change (idempotency, D49). */\n\treadonly version: number;\n\t/** A fresh defensive materialization of the current state (D60: first-cut defensive copy). */\n\tsnapshot(): S;\n}\n\nexport interface CollectionCoreOptions {\n\t/** Debug/inspection name; the delta/snapshot nodes derive `${name}.delta` / `${name}.snapshot`. */\n\tname?: string;\n\t/** Dispatcher for the core's nodes (default = process-global, D26). */\n\tdispatcher?: Dispatcher;\n\t/** Graph funnel for describe-visible input folds (D61). Required by *From/attach methods. */\n\tgraph?: Graph;\n}\n\nexport interface CollectionCore<S, C> {\n\t/** DELTA backbone (D60 #2a): a bare source; every {@link CollectionCore.emit} pushes one change. */\n\treadonly delta: Node<C>;\n\t/** SNAPSHOT pull node (D60 #2b): demand via `ctx.upNext([[\"PULL\", { pullId }]])`; lazy O(n) on demand. */\n\treadonly snapshot: Node<S>;\n\t/** The snapshot node's pullId — the author writes it verbatim into the demander's fn (D269). */\n\treadonly pullId: symbol;\n\t/** Push one delta event (the imperative path: a method mutates the backend, then calls this). */\n\temit(change: C): void;\n\t/**\n\t * D54 widening: fold an in-graph producer `src` into the backend. `apply` mutates the backend +\n\t * `emit`s the change(s). The folder is a DECLARED-dep node (describe shows `src → folder`, NOT a\n\t * D45 island); its emit is the structure's plumbing (D54-sanctioned). Returns a disposer.\n\t */\n\tbindSource<V>(src: Node<V>, apply: (value: V) => void): () => void;\n}\n\n/**\n * Public D121 collection-view surface. A view is a derived surface: `delta` is the pushed update\n * port, `snapshot` is a lazy pull node, and neither port is writable authority.\n */\nexport interface ReactiveView<C, S> {\n\t/** Derived DELTA/update stream for the view. For light views this is recomputed from the parent backend. */\n\treadonly delta: Node<C>;\n\t/** Derived SNAPSHOT pull node: demand via `pullId` to materialize the current view. */\n\treadonly snapshot: Node<S>;\n\t/** The snapshot node's pullId (R-pull/D269), minted per view instance. */\n\treadonly pullId: symbol;\n\t/** Release memoized/light-view resources owned by the parent collection. */\n\tdispose(): void;\n}\n\ninterface LightReactiveViewOptions<S> extends CollectionCoreOptions {\n\treadonly factory: string;\n\treadonly materializeSnapshot: () => S;\n\treadonly onDispose?: () => void;\n}\n\ninterface CollectionRestoreSpec {\n\treadonly deltaRef: string;\n\treadonly snapshotRef: string;\n\treadonly config?: GraphCheckpointJson;\n\treadonly backendState: () => unknown;\n}\n\nfunction validateViewCacheMaxEntries(policy: ViewCachePolicy | undefined): number | undefined {\n\tconst maxEntries = policy?.maxEntries;\n\tif (maxEntries === undefined) return undefined;\n\tif (!Number.isInteger(maxEntries) || maxEntries < 0) {\n\t\tthrow new RangeError(`viewCache.maxEntries must be a non-negative integer (got ${maxEntries})`);\n\t}\n\treturn maxEntries;\n}\n\n/**\n * Internal D80 memo manager for derived views. Eviction drops only the structure's memo lookup;\n * returned ReactiveView handles remain live until explicitly disposed or their parent releases all\n * live views.\n */\nexport class ViewMemoCache<K, V extends { dispose(): void }> {\n\tprivate readonly maxEntries: number | undefined;\n\tprivate readonly equals: (a: K, b: K) => boolean;\n\tprivate readonly memo: Array<{ key: K; value: V }> = [];\n\tprivate readonly live = new Set<V>();\n\n\tconstructor(policy: ViewCachePolicy | undefined, equals: (a: K, b: K) => boolean = Object.is) {\n\t\tthis.maxEntries = validateViewCacheMaxEntries(policy);\n\t\tthis.equals = equals;\n\t}\n\n\tget(key: K): V | undefined {\n\t\tconst index = this.memo.findIndex((entry) => this.equals(entry.key, key));\n\t\tif (index < 0) return undefined;\n\t\tconst [entry] = this.memo.splice(index, 1);\n\t\tif (entry === undefined) return undefined;\n\t\tthis.memo.push(entry);\n\t\treturn entry.value;\n\t}\n\n\tset(key: K, value: V): void {\n\t\tthis.deleteValue(value);\n\t\tthis.live.add(value);\n\t\tif (this.maxEntries === 0) return;\n\t\tthis.memo.push({ key, value });\n\t\twhile (this.maxEntries !== undefined && this.memo.length > this.maxEntries) {\n\t\t\tthis.memo.shift();\n\t\t}\n\t}\n\n\tdeleteValue(value: V): void {\n\t\tfor (let i = this.memo.length - 1; i >= 0; i -= 1) {\n\t\t\tif (this.memo[i]?.value === value) this.memo.splice(i, 1);\n\t\t}\n\t\tthis.live.delete(value);\n\t}\n\n\tdisposeAll(): void {\n\t\tfor (const view of [...this.live]) view.dispose();\n\t\tthis.memo.length = 0;\n\t\tthis.live.clear();\n\t}\n}\n\n/**\n * Build a D121 first-cut light view. The view declares `parent.delta -> view.delta ->\n * view.snapshot`; the pushed `delta` forwards parent delta events as the view's arm/update stream,\n * while `snapshot` reads the parent collection backend through the supplied materializer on demand.\n * No writable state/cache is exposed (D120).\n */\nexport function lightReactiveView<C, S>(\n\tparentDelta: Node<unknown>,\n\topts: LightReactiveViewOptions<S>,\n): ReactiveView<C, S> {\n\tconst { dispatcher, factory, graph, materializeSnapshot, name, onDispose } = opts;\n\tconst base = dispatcher ? { dispatcher } : {};\n\tconst group = graph?.topologyGroup({ name: name ?? factory });\n\tconst deltaBody = (ctx: Ctx): void => {\n\t\tfor (const change of (depBatch(ctx, 0) ?? []) as readonly C[]) {\n\t\t\tctx.down([[\"DATA\", change]]);\n\t\t}\n\t};\n\tconst delta = group\n\t\t? group.node<C>([parentDelta], deltaBody, {\n\t\t\t\tfactory: `${factory}.delta`,\n\t\t\t\tname: name ? `${name}.delta` : undefined,\n\t\t\t\tmeta: { kind: \"collection_view_delta\", factory },\n\t\t\t\tpartial: true,\n\t\t\t})\n\t\t: new Node<C>([parentDelta], deltaBody, {\n\t\t\t\t...base,\n\t\t\t\tfactory: `${factory}.delta`,\n\t\t\t\tname: name ? `${name}.delta` : undefined,\n\t\t\t\tpartial: true,\n\t\t\t});\n\n\tconst pullId = Symbol(name ? `${name}.snapshot` : `${factory}.snapshot`);\n\tconst snapshotBody = (ctx: Ctx): void => {\n\t\ttry {\n\t\t\tctx.down([[\"DATA\", materializeSnapshot()]]);\n\t\t} catch (e) {\n\t\t\tctx.down([[\"ERROR\", errorPayload(e, `${factory}.snapshot materializer failed`)]]);\n\t\t}\n\t};\n\tconst snapshot = group\n\t\t? group.node<S>([delta as Node<unknown>], snapshotBody, {\n\t\t\t\tfactory: `${factory}.snapshot`,\n\t\t\t\tname: name ? `${name}.snapshot` : undefined,\n\t\t\t\tmeta: { kind: \"collection_view_snapshot\", factory },\n\t\t\t\tpartial: true,\n\t\t\t\tpullId,\n\t\t\t})\n\t\t: new Node<S>([delta as Node<unknown>], snapshotBody, {\n\t\t\t\t...base,\n\t\t\t\tfactory: `${factory}.snapshot`,\n\t\t\t\tname: name ? `${name}.snapshot` : undefined,\n\t\t\t\tpartial: true,\n\t\t\t\tpullId,\n\t\t\t});\n\n\tlet disposed = false;\n\treturn {\n\t\tdelta,\n\t\tsnapshot,\n\t\tpullId,\n\t\tdispose(): void {\n\t\t\tif (disposed) return;\n\t\t\tif (group) {\n\t\t\t\tgroup.release({ reason: factory });\n\t\t\t} else {\n\t\t\t\treleaseRuntimeOfNode(delta as Node<unknown>);\n\t\t\t\treleaseRuntimeOfNode(snapshot as Node<unknown>);\n\t\t\t}\n\t\t\tdisposed = true;\n\t\t\tonDispose?.();\n\t\t},\n\t};\n}\n\n/**\n * Build the shared core for a reactive structure (D60). `factory` names the nodes for describe\n * (D6/D51 auto-discovery). The structure passes its `backend` (any {@link CollectionBackend}) and\n * layers a typed method surface on top.\n */\nexport function collectionCore<S, C>(\n\tbackend: CollectionBackend<S>,\n\tfactory: string,\n\topts: CollectionCoreOptions = {},\n\trestore?: CollectionRestoreSpec,\n): CollectionCore<S, C> {\n\tconst { name, dispatcher, graph } = opts;\n\tconst base: { dispatcher?: Dispatcher } = dispatcher ? { dispatcher } : {};\n\tlet bindSeq = 0;\n\n\t// DELTA backbone: a bare source (D60 #2a / review #2 — node([], null), no `initial`, so a late\n\t// subscriber gets no fake \"initial change\"; state is the snapshot port's job).\n\tconst delta = graph\n\t\t? graph.node<C>([], null, {\n\t\t\t\tfactory: `${factory}.delta`,\n\t\t\t\tname: name ? `${name}.delta` : undefined,\n\t\t\t\tmeta: { kind: \"collection_delta\", collection: factory },\n\t\t\t\t...(restore ? { restore: { ref: restore.deltaRef, config: restore.config } } : {}),\n\t\t\t})\n\t\t: new Node<C>([], null, {\n\t\t\t\t...base,\n\t\t\t\tfactory: `${factory}.delta`,\n\t\t\t\tname: name ? `${name}.delta` : undefined,\n\t\t\t});\n\n\t// SNAPSHOT pull node: dep=[delta] (the backbone arms it via quiet-absorb so coalesce is free,\n\t// D60). The fn IGNORES the delta value — it reads `backend.snapshot()` on demand (D60 #3). The\n\t// pullId is a unique Symbol (R-pull/D269: matched by identity, zero collision with pause locks).\n\t// `partial:true`: the fn does not need the delta's value, so it must not gate on \"all deps\n\t// settled\" — it fires whenever armed (a mutation since the last delivery).\n\tconst pullId = Symbol(name ? `${name}.snapshot` : `${factory}.snapshot`);\n\tlet deliveredVersion = backend.version;\n\tconst snapFn = (ctx: Ctx): void => {\n\t\tif (ctx.pull !== undefined && backend.version === deliveredVersion) return;\n\t\tdeliveredVersion = backend.version;\n\t\tctx.down([[\"DATA\", backend.snapshot()]]);\n\t};\n\tconst snapshot = graph\n\t\t? graph.node<S>([delta as Node<unknown>], snapFn, {\n\t\t\t\tpullId,\n\t\t\t\tpartial: true,\n\t\t\t\tfactory: `${factory}.snapshot`,\n\t\t\t\tname: name ? `${name}.snapshot` : undefined,\n\t\t\t\tmeta: { kind: \"collection_snapshot\", collection: factory },\n\t\t\t\t...(restore ? { restore: { ref: restore.snapshotRef, config: restore.config } } : {}),\n\t\t\t})\n\t\t: new Node<S>([delta as Node<unknown>], snapFn, {\n\t\t\t\t...base,\n\t\t\t\tpullId,\n\t\t\t\tpartial: true,\n\t\t\t\tfactory: `${factory}.snapshot`,\n\t\t\t\tname: name ? `${name}.snapshot` : undefined,\n\t\t\t});\n\n\tif (restore !== undefined) {\n\t\tregisterBackendStateContributor(delta as Node<unknown>, restore.backendState);\n\t}\n\n\tfunction emit(change: C): void {\n\t\t// External tier-3 emit → the substrate synthesizes the leading DIRTY (R-dirty-before-data),\n\t\t// which the quiet snapshot node absorbs (R-pull) and uses to arm its next demand delivery.\n\t\tdelta.down([[\"DATA\", change]]);\n\t}\n\n\tfunction bindSource<V>(src: Node<V>, apply: (value: V) => void): () => void {\n\t\tif (graph === undefined)\n\t\t\tthrow new Error(\n\t\t\t\t\"collectionCore.bindSource requires options.graph so the input fold is describe-visible (D61)\",\n\t\t\t);\n\t\t// A graph-bound declared-dep folder (effect-shaped): reads each src batch value, applies it\n\t\t// to the backend (apply mutates + emits the delta). src → folder is a real edge describe\n\t\t// shows (D54/D61), not an internal subscribe island.\n\t\tconst op: Operator<V, void> = {\n\t\t\tfactory: `${factory}.bindSource`,\n\t\t\tbody: (ctx: Ctx) => {\n\t\t\t\tconst b = depBatch(ctx, 0);\n\t\t\t\ttry {\n\t\t\t\t\tif (b) for (const v of b) apply(v as V);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tctx.down([[\"ERROR\", errorPayload(e, \"collectionCore.bindSource failed\")]]);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\tconst folder = graph.initNode(op, [src], {\n\t\t\tname: name ? `${name}.bind#${bindSeq++}` : undefined,\n\t\t\tmeta: { kind: \"collection_bind_source\", collection: factory },\n\t\t});\n\t\treturn graph.retain(folder, { reason: `${factory}.bindSource` });\n\t}\n\n\treturn { delta, snapshot, pullId, emit, bindSource };\n}\n","/**\n * Reactive dual-key index (CSP-2.8, D54/D60) — unique primary key, rows sorted by (secondary, primary).\n *\n * Shape = the shared {@link collectionCore} two ports over a sorted-array + parallel-Map BACKEND\n * (D60). The SNAPSHOT port delivers the ordered `IndexRow[]`. Secondary/reverse lookup = \"Z\"\n * (review #4): `has`/`get`/`rangeByPrimary` are SYNCHRONOUS point-reads over the backend's parallel\n * Map (NOT topology, like `.cache`); `byPrimary` is an OPTIONAL reactive derived over the delta\n * backbone (a pushed primary→value map), LAZILY created on first access (no default keepalive,\n * R-rom-ram). The two coexist: the derived is the reactive reverse-lookup port; the sync reads are\n * the point query.\n *\n * Per-language (D6/D24, never in parity, no conformance — the substrate pull is already C-16).\n */\n\nimport { type Ctx, depBatch, depCount, depLatest } from \"../../ctx/types.js\";\nimport { Node, node } from \"../../node/node.js\";\nimport { errorPayload } from \"../../protocol/messages.js\";\nimport type { Operator } from \"../operators.js\";\nimport type { OrderedCapacityPolicy, ReactiveOpt, ViewCachePolicy } from \"../policies/types.js\";\nimport type { IndexChange } from \"./change.js\";\nimport {\n\ttype CollectionCore,\n\ttype CollectionCoreOptions,\n\tcollectionCore,\n\tlightReactiveView,\n\ttype ReactiveView,\n\tViewMemoCache,\n} from \"./core.js\";\n\nexport type ReactiveIndexOpt<T> = ReactiveOpt<T>;\nexport type ReactiveIndexCapacityOrder = \"secondary\" | \"primary\" | \"lru\";\n\nexport interface ReactiveIndexCapacityPolicy\n\textends OrderedCapacityPolicy<ReactiveIndexCapacityOrder> {}\n\nexport interface ReactiveIndexOptions extends CollectionCoreOptions {\n\t/**\n\t * D73 explicit capacity policy: no implicit eviction default.\n\t * `order` chooses eviction semantics and `maxSize` may be static or node-valued (D68).\n\t */\n\treadonly capacity?: ReactiveIndexCapacityPolicy;\n\t/** Static D80 memo policy for D121 light views. Eviction does not dispose returned views. */\n\treadonly viewCache?: ViewCachePolicy;\n}\n\nexport interface IndexRow<K, V = unknown> {\n\treadonly primary: K;\n\treadonly secondary: unknown;\n\treadonly value: V;\n}\n\nexport interface ReactiveIndex<K, V = unknown> {\n\treadonly delta: Node<IndexChange<K, V>>;\n\t/** SNAPSHOT pull node: demand → rows sorted by (secondary, primary) (lazy O(n)). */\n\treadonly snapshot: Node<readonly IndexRow<K, V>[]>;\n\treadonly pullId: symbol;\n\t/** Row count (O(1)). Sync non-reactive read. */\n\treadonly size: number;\n\t/** O(1) primary-key existence. Sync read (Z). */\n\thas(primary: K): boolean;\n\t/** O(1) value lookup by primary key. Sync read (Z). */\n\tget(primary: K): V | undefined;\n\t/** Values whose primary sorts within `[start, end)`, ascending primary order. Sync read (Z). */\n\trangeByPrimary(start: K, end: K): V[];\n\t/**\n\t * D121 light range view over the primary axis. `delta` forwards parent index mutations, and\n\t * `snapshot` is a pull node that materializes the current range on demand.\n\t */\n\trange(start: K, end: K): ReactiveView<IndexChange<K, V>, readonly V[]>;\n\t/** Ordered rows (fresh copy). Sync non-reactive read (cold-start peek). */\n\ttoArray(): readonly IndexRow<K, V>[];\n\t/** Primary→value map (fresh copy). Sync non-reactive read. */\n\ttoPrimaryMap(): ReadonlyMap<K, V>;\n\t/**\n\t * OPTIONAL reactive reverse-lookup port (Z): a derived primary→value map, pushed on every\n\t * mutation. Lazily created on first access (no keepalive — live only while subscribed). Use the\n\t * synchronous {@link ReactiveIndex.get} for a one-shot point query.\n\t */\n\treadonly byPrimary: Node<ReadonlyMap<K, V>>;\n\t/** Insert/replace a row. Returns `true` if a NEW row was inserted (primary was absent). */\n\tupsert(primary: K, secondary: unknown, value: V): boolean;\n\t/** Bulk upsert; one delta per row. No-op if empty. */\n\tupsertMany(rows: Iterable<{ primary: K; secondary: unknown; value: V }>): void;\n\tdelete(primary: K): void;\n\t/** Bulk delete; one delta event. No-op if nothing removed. */\n\tdeleteMany(primaries: Iterable<K>): void;\n\tclear(): void;\n\t/** D54 widening: every row from `src` is upserted. Returns a disposer. */\n\tupsertFrom(src: Node<{ primary: K; secondary: unknown; value: V }>): () => void;\n\tdispose(): void;\n}\n\n// ── ordering helpers (pure; backend-internal) ──\nfunction cmpOrd(a: unknown, b: unknown): number {\n\tif (a === b) return 0;\n\tconst ta = typeof a;\n\tif (\n\t\tta === typeof b &&\n\t\t(ta === \"number\" || ta === \"string\" || ta === \"boolean\" || ta === \"bigint\")\n\t) {\n\t\tconst ax = a as number | string;\n\t\tconst bx = b as number | string;\n\t\treturn ax < bx ? -1 : ax > bx ? 1 : 0;\n\t}\n\treturn String(a).localeCompare(String(b));\n}\nfunction compareRows<K, V>(a: IndexRow<K, V>, b: IndexRow<K, V>): number {\n\tconst c = cmpOrd(a.secondary, b.secondary);\n\treturn c !== 0 ? c : cmpOrd(a.primary, b.primary);\n}\nfunction bisectLeft<K, V>(rows: readonly IndexRow<K, V>[], row: IndexRow<K, V>): number {\n\tlet lo = 0;\n\tlet hi = rows.length;\n\twhile (lo < hi) {\n\t\tconst mid = (lo + hi) >> 1;\n\t\tif (compareRows(rows[mid] as IndexRow<K, V>, row) < 0) lo = mid + 1;\n\t\telse hi = mid;\n\t}\n\treturn lo;\n}\n\n/** Default sorted-array + parallel-Map backend (D60 first-cut; B-tree/persistent backend deferred). */\nclass IndexBackend<K, V> {\n\tprivate _version = 0;\n\tprivate readonly buf: IndexRow<K, V>[] = [];\n\tprivate readonly byKey = new Map<K, IndexRow<K, V>>();\n\tprivate readonly trackLru: boolean;\n\n\tconstructor(trackLru: boolean, initialRows: readonly IndexRow<K, V>[] = []) {\n\t\tthis.trackLru = trackLru;\n\t\tfor (const row of initialRows) {\n\t\t\tthis.upsert(row.primary, row.secondary, row.value);\n\t\t}\n\t\tthis._version = 0;\n\t}\n\n\tget version(): number {\n\t\treturn this._version;\n\t}\n\tget size(): number {\n\t\treturn this.buf.length;\n\t}\n\thas(primary: K): boolean {\n\t\tconst row = this.byKey.get(primary);\n\t\tif (row === undefined) return false;\n\t\tthis.touchLru(row);\n\t\treturn true;\n\t}\n\tget(primary: K): V | undefined {\n\t\tconst row = this.byKey.get(primary);\n\t\tif (row === undefined) return undefined;\n\t\tthis.touchLru(row);\n\t\treturn row.value;\n\t}\n\n\tprivate touchLru(row: IndexRow<K, V>): void {\n\t\tif (!this.trackLru) return;\n\t\tthis.byKey.delete(row.primary);\n\t\tthis.byKey.set(row.primary, row);\n\t}\n\n\tprivate removeRow(row: IndexRow<K, V>): void {\n\t\tconst start = bisectLeft(this.buf, row);\n\t\tfor (\n\t\t\tlet i = start;\n\t\t\ti < this.buf.length && compareRows(this.buf[i] as IndexRow<K, V>, row) === 0;\n\t\t\ti++\n\t\t) {\n\t\t\tif (this.buf[i] === row) {\n\t\t\t\tthis.buf.splice(i, 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tconst fallback = this.buf.indexOf(row);\n\t\tif (fallback >= 0) {\n\t\t\tthis.buf.splice(fallback, 1);\n\t\t\treturn;\n\t\t}\n\t\tthrow new Error(\"reactiveIndex: internal row index desynchronized\");\n\t}\n\n\tupsert(primary: K, secondary: unknown, value: V): boolean {\n\t\tconst existing = this.byKey.get(primary);\n\t\tconst row: IndexRow<K, V> = { primary, secondary, value };\n\t\tif (existing !== undefined) {\n\t\t\tthis.removeRow(existing);\n\t\t\tthis.byKey.delete(primary);\n\t\t}\n\t\tthis.buf.splice(bisectLeft(this.buf, row), 0, row);\n\t\tthis.byKey.set(primary, row);\n\t\tthis._version += 1;\n\t\treturn existing === undefined;\n\t}\n\n\tdelete(primary: K): boolean {\n\t\tconst existing = this.byKey.get(primary);\n\t\tif (existing === undefined) return false;\n\t\tthis.removeRow(existing);\n\t\tthis.byKey.delete(primary);\n\t\tthis._version += 1;\n\t\treturn true;\n\t}\n\n\tclear(): number {\n\t\tconst n = this.buf.length;\n\t\tif (n === 0) return 0;\n\t\tthis.buf.length = 0;\n\t\tthis.byKey.clear();\n\t\tthis._version += 1;\n\t\treturn n;\n\t}\n\n\trangeByPrimary(start: K, end: K): V[] {\n\t\tif (cmpOrd(start, end) >= 0) return [];\n\t\tconst rows = [...this.byKey.entries()].filter(\n\t\t\t([p]) => cmpOrd(p, start) >= 0 && cmpOrd(p, end) < 0,\n\t\t);\n\t\trows.sort(([a], [b]) => cmpOrd(a, b));\n\t\treturn rows.map(([, r]) => r.value);\n\t}\n\n\tevictOneForCapacity(order: ReactiveIndexCapacityOrder, maxSize?: number): K | undefined {\n\t\tif (maxSize === undefined) return undefined;\n\t\tif (!Number.isInteger(maxSize) || maxSize < 1)\n\t\t\tthrow new RangeError(`reactiveIndex: maxSize must be a positive integer (got ${maxSize})`);\n\t\tconst overflow = this.buf.length - maxSize;\n\t\tif (overflow <= 0) return undefined;\n\n\t\tswitch (order) {\n\t\t\tcase \"secondary\": {\n\t\t\t\tconst row = this.buf[0] as IndexRow<K, V> | undefined;\n\t\t\t\tif (row === undefined) return undefined;\n\t\t\t\tthis.buf.shift();\n\t\t\t\tthis.byKey.delete(row.primary);\n\t\t\t\tthis._version += 1;\n\t\t\t\treturn row.primary;\n\t\t\t}\n\t\t\tcase \"primary\": {\n\t\t\t\tlet victim: K | undefined;\n\t\t\t\tfor (const key of this.byKey.keys()) {\n\t\t\t\t\tif (victim === undefined || cmpOrd(key, victim) < 0) victim = key;\n\t\t\t\t}\n\t\t\t\tif (victim === undefined) return undefined;\n\t\t\t\tconst row = this.byKey.get(victim);\n\t\t\t\tif (row !== undefined) this.removeRow(row);\n\t\t\t\tthis.byKey.delete(victim);\n\t\t\t\tthis._version += 1;\n\t\t\t\treturn victim;\n\t\t\t}\n\t\t\tcase \"lru\": {\n\t\t\t\tconst oldest = this.byKey.keys().next().value as K | undefined;\n\t\t\t\tif (oldest === undefined) return undefined;\n\t\t\t\tconst row = this.byKey.get(oldest);\n\t\t\t\tif (row !== undefined) this.removeRow(row);\n\t\t\t\tthis.byKey.delete(oldest);\n\t\t\t\tthis._version += 1;\n\t\t\t\treturn oldest;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tthrow new Error(`reactiveIndex: unknown capacity order '${String(order)}'`);\n\t\t\t}\n\t\t}\n\t}\n\n\tsnapshot(): readonly IndexRow<K, V>[] {\n\t\treturn [...this.buf];\n\t}\n\ttoPrimaryMap(): ReadonlyMap<K, V> {\n\t\tconst m = new Map<K, V>();\n\t\tfor (const r of this.buf) m.set(r.primary, r.value);\n\t\treturn m;\n\t}\n}\n\nfunction assertCheckpointableIndexRows(rows: readonly IndexRow<unknown, unknown>[]): void {\n\tfor (const [i, row] of rows.entries()) {\n\t\tconst primary = row.primary;\n\t\tif (\n\t\t\tprimary === null ||\n\t\t\ttypeof primary === \"string\" ||\n\t\t\ttypeof primary === \"number\" ||\n\t\t\ttypeof primary === \"boolean\"\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new TypeError(\n\t\t\t`reactiveIndex checkpoint backendState[${i}].primary must be a JSON primitive primary key for D160 restore`,\n\t\t);\n\t}\n}\n\n/**\n * Create a reactive dual-key index (D54/D60). DELTA + lazy pull SNAPSHOT + pullId via\n * {@link collectionCore}; this layer adds the sorted backend + Z reverse-lookup surface.\n */\nexport function reactiveIndex<K, V = unknown>(\n\toptions: ReactiveIndexOptions = {},\n): ReactiveIndex<K, V> {\n\treturn createReactiveIndex(options);\n}\n\n/** @internal D160 restore path: seed the backend without replaying public deltas. */\nexport function restoreReactiveIndexFromBackendState<K, V = unknown>(\n\tinitialRows: readonly IndexRow<K, V>[],\n\toptions: ReactiveIndexOptions = {},\n): ReactiveIndex<K, V> {\n\treturn createReactiveIndex(options, initialRows);\n}\n\nfunction createReactiveIndex<K, V = unknown>(\n\toptions: ReactiveIndexOptions = {},\n\tinitialRows: readonly IndexRow<K, V>[] = [],\n): ReactiveIndex<K, V> {\n\tconst { capacity, graph, dispatcher, name } = options;\n\tconst lruEnabled = capacity?.order === \"lru\";\n\tconst backend = new IndexBackend<K, V>(lruEnabled, initialRows);\n\tconst core: CollectionCore<readonly IndexRow<K, V>[], IndexChange<K, V>> = collectionCore(\n\t\tbackend,\n\t\t\"reactiveIndex\",\n\t\toptions,\n\t\tgraph !== undefined && name !== undefined && capacity === undefined\n\t\t\t? {\n\t\t\t\t\tdeltaRef: \"reactiveIndex.delta\",\n\t\t\t\t\tsnapshotRef: \"reactiveIndex.snapshot\",\n\t\t\t\t\tbackendState: () => {\n\t\t\t\t\t\tconst rows = backend.snapshot();\n\t\t\t\t\t\tassertCheckpointableIndexRows(rows);\n\t\t\t\t\t\treturn rows;\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: undefined,\n\t);\n\tconst binds: Array<() => void> = [];\n\tconst base = dispatcher ? { dispatcher } : {};\n\tconst bindDeps = new WeakSet<Node<unknown>>();\n\tconst rangeMemo = new ViewMemoCache<\n\t\treadonly [K, K],\n\t\tReactiveView<IndexChange<K, V>, readonly V[]>\n\t>(options.viewCache, ([aStart, aEnd], [bStart, bEnd]) => {\n\t\treturn cmpOrd(aStart, bStart) === 0 && cmpOrd(aEnd, bEnd) === 0;\n\t});\n\tlet bindSeq = 0;\n\tlet rangeSeq = 0;\n\tlet capacityPolicy: Node<number> | undefined;\n\tlet apply: Node<IndexChange<K, V>> | undefined;\n\tlet releaseApply = () => {};\n\n\tfunction isNodeOpt<T>(x: ReactiveIndexOpt<T>): x is Node<T> {\n\t\treturn x instanceof Node;\n\t}\n\n\tfunction validateMaxSize(v: number): number {\n\t\tif (!Number.isFinite(v) || !Number.isInteger(v) || v < 1)\n\t\t\tthrow new RangeError(`reactiveIndex: maxSize must be a positive integer (got ${v})`);\n\t\treturn v;\n\t}\n\n\tfunction enforceCapacity(): void {\n\t\tif (currentCapacityOrder === undefined) return;\n\t\tfor (;;) {\n\t\t\tconst primary = backend.evictOneForCapacity(currentCapacityOrder, currentMaxSize);\n\t\t\tif (primary === undefined) return;\n\t\t\tcore.emit({ kind: \"delete\", primary });\n\t\t}\n\t}\n\n\tconst applyBody = (ctx: Ctx): void => {\n\t\tconst deps = apply?.deps ?? [];\n\t\tfor (let i = 0; i < depCount(ctx); i++) {\n\t\t\tconst dep = deps[i];\n\t\t\tif (dep === capacityPolicy) {\n\t\t\t\tconst latest = depLatest(ctx, i);\n\t\t\t\tif (latest !== undefined) currentMaxSize = validateMaxSize(latest as number);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (dep && bindDeps.has(dep)) {\n\t\t\t\tfor (const r of (depBatch(ctx, i) ?? []) as readonly {\n\t\t\t\t\tprimary: K;\n\t\t\t\t\tsecondary: unknown;\n\t\t\t\t\tvalue: V;\n\t\t\t\t}[]) {\n\t\t\t\t\tbackend.upsert(r.primary, r.secondary, r.value);\n\t\t\t\t\tcore.emit({ kind: \"upsert\", primary: r.primary, secondary: r.secondary, value: r.value });\n\t\t\t\t\tenforceCapacity();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tenforceCapacity();\n\t};\n\n\tfunction ensureApply(): Node<IndexChange<K, V>> {\n\t\tif (apply !== undefined) return apply;\n\t\tconst op: Operator<unknown, IndexChange<K, V>> = {\n\t\t\tfactory: \"reactiveIndex.capacityPolicy\",\n\t\t\tbody: applyBody,\n\t\t\topts: { partial: true },\n\t\t};\n\t\tconst deps = capacityPolicy ? [capacityPolicy as Node<unknown>] : [];\n\t\tapply = graph\n\t\t\t? graph.initNode(op, deps, {\n\t\t\t\t\tname: name ? `${name}.capacityPolicy` : undefined,\n\t\t\t\t\tmeta: { kind: \"collection_policy_apply\", collection: \"reactiveIndex\" },\n\t\t\t\t})\n\t\t\t: new Node<IndexChange<K, V>>(deps, op.body, {\n\t\t\t\t\t...base,\n\t\t\t\t\tfactory: \"reactiveIndex.capacityPolicy\",\n\t\t\t\t\tpartial: true,\n\t\t\t\t\tname: name ? `${name}.capacityPolicy` : undefined,\n\t\t\t\t});\n\t\treleaseApply = graph\n\t\t\t? graph.retain(apply, { reason: \"reactiveIndex.capacityPolicy\" })\n\t\t\t: apply.subscribe(() => {});\n\t\treturn apply;\n\t}\n\n\tlet currentMaxSize: number | undefined;\n\tconst currentCapacityOrder: ReactiveIndexCapacityOrder | undefined = capacity?.order;\n\tif (capacity !== undefined) {\n\t\tif (\n\t\t\tcurrentCapacityOrder !== \"secondary\" &&\n\t\t\tcurrentCapacityOrder !== \"primary\" &&\n\t\t\tcurrentCapacityOrder !== \"lru\"\n\t\t) {\n\t\t\tthrow new Error(\"reactiveIndex: capacity.order must be one of secondary|primary|lru (D73)\");\n\t\t}\n\n\t\tconst maxSize = capacity.maxSize;\n\t\tif (isNodeOpt(maxSize) && graph === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t\"reactiveIndex capacity.maxSize Node option requires options.graph so the policy edge is describe-visible (D73)\",\n\t\t\t);\n\t\t}\n\n\t\tcapacityPolicy = isNodeOpt(maxSize)\n\t\t\t? maxSize\n\t\t\t: graph\n\t\t\t\t? graph.initNode<number, number>(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfactory: \"reactiveIndex.maxSizePolicy\",\n\t\t\t\t\t\t\tbody: () => {},\n\t\t\t\t\t\t\topts: { initial: validateMaxSize(maxSize) },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: name ? `${name}.maxSizePolicy` : undefined,\n\t\t\t\t\t\t\tmeta: { kind: \"collection_policy\", collection: \"reactiveIndex\", policy: \"maxSize\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t: undefined;\n\n\t\tif (!isNodeOpt(maxSize)) currentMaxSize = validateMaxSize(maxSize);\n\n\t\tif (capacityPolicy instanceof Node) ensureApply();\n\t}\n\n\t// Lazy reactive reverse-lookup port (Z): a delta-driven pushed primary→value map. Created on\n\t// first access so an index that never uses it pays nothing (no keepalive — R-rom-ram).\n\tlet byPrimaryNode: Node<ReadonlyMap<K, V>> | undefined;\n\tfunction getByPrimary(): Node<ReadonlyMap<K, V>> {\n\t\tif (byPrimaryNode === undefined) {\n\t\t\tbyPrimaryNode = node<ReadonlyMap<K, V>>(\n\t\t\t\t[core.delta as Node<unknown>],\n\t\t\t\t(ctx: Ctx) => {\n\t\t\t\t\t// pushed reverse-lookup: re-read the backend's primary map on each delta (the\n\t\t\t\t\t// structure's own backend, D60 #1 — not a foreign .cache peek).\n\t\t\t\t\tctx.down([[\"DATA\", backend.toPrimaryMap()]]);\n\t\t\t\t},\n\t\t\t\t{ factory: \"reactiveIndex.byPrimary\", partial: true },\n\t\t\t);\n\t\t}\n\t\treturn byPrimaryNode;\n\t}\n\n\tfunction getRange(start: K, end: K): ReactiveView<IndexChange<K, V>, readonly V[]> {\n\t\tconst key = [start, end] as const;\n\t\tconst hit = rangeMemo.get(key);\n\t\tif (hit !== undefined) return hit;\n\t\tconst materialize = (): readonly V[] => backend.rangeByPrimary(start, end);\n\t\tlet view: ReactiveView<IndexChange<K, V>, readonly V[]>;\n\t\tview = lightReactiveView<IndexChange<K, V>, readonly V[]>(core.delta as Node<unknown>, {\n\t\t\t...options,\n\t\t\tfactory: \"reactiveIndex.range\",\n\t\t\tname: name ? `${name}.range#${rangeSeq++}` : undefined,\n\t\t\tmaterializeSnapshot: materialize,\n\t\t\tonDispose: () => {\n\t\t\t\trangeMemo.deleteValue(view);\n\t\t\t},\n\t\t});\n\t\trangeMemo.set(key, view);\n\t\treturn view;\n\t}\n\n\treturn {\n\t\tdelta: core.delta,\n\t\tsnapshot: core.snapshot,\n\t\tpullId: core.pullId,\n\n\t\tget size(): number {\n\t\t\treturn backend.size;\n\t\t},\n\t\thas(primary: K): boolean {\n\t\t\treturn backend.has(primary);\n\t\t},\n\t\tget(primary: K): V | undefined {\n\t\t\treturn backend.get(primary);\n\t\t},\n\t\trangeByPrimary(start: K, end: K): V[] {\n\t\t\treturn backend.rangeByPrimary(start, end);\n\t\t},\n\t\trange(start: K, end: K): ReactiveView<IndexChange<K, V>, readonly V[]> {\n\t\t\treturn getRange(start, end);\n\t\t},\n\t\ttoArray(): readonly IndexRow<K, V>[] {\n\t\t\treturn backend.snapshot();\n\t\t},\n\t\ttoPrimaryMap(): ReadonlyMap<K, V> {\n\t\t\treturn backend.toPrimaryMap();\n\t\t},\n\t\tget byPrimary(): Node<ReadonlyMap<K, V>> {\n\t\t\treturn getByPrimary();\n\t\t},\n\n\t\tupsert(primary: K, secondary: unknown, value: V): boolean {\n\t\t\tconst inserted = backend.upsert(primary, secondary, value);\n\t\t\tcore.emit({ kind: \"upsert\", primary, secondary, value });\n\t\t\tenforceCapacity();\n\t\t\treturn inserted;\n\t\t},\n\t\tupsertMany(rows: Iterable<{ primary: K; secondary: unknown; value: V }>): void {\n\t\t\tfor (const r of rows) {\n\t\t\t\tbackend.upsert(r.primary, r.secondary, r.value);\n\t\t\t\tcore.emit({ kind: \"upsert\", primary: r.primary, secondary: r.secondary, value: r.value });\n\t\t\t\tenforceCapacity();\n\t\t\t}\n\t\t},\n\t\tdelete(primary: K): void {\n\t\t\tif (backend.delete(primary)) core.emit({ kind: \"delete\", primary });\n\t\t},\n\t\tdeleteMany(primaries: Iterable<K>): void {\n\t\t\tconst removed: K[] = [];\n\t\t\tfor (const p of primaries) if (backend.delete(p)) removed.push(p);\n\t\t\tif (removed.length > 0) core.emit({ kind: \"deleteMany\", primaries: removed });\n\t\t},\n\t\tclear(): void {\n\t\t\tconst count = backend.clear();\n\t\t\tif (count > 0) core.emit({ kind: \"clear\", count });\n\t\t},\n\n\t\tupsertFrom(src: Node<{ primary: K; secondary: unknown; value: V }>): () => void {\n\t\t\tif (graph === undefined)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"reactiveIndex.upsertFrom requires options.graph so the input fold is describe-visible (D61)\",\n\t\t\t\t);\n\t\t\tconst op: Operator<\n\t\t\t\t{ primary: K; secondary: unknown; value: V },\n\t\t\t\t{ primary: K; secondary: unknown; value: V }\n\t\t\t> = {\n\t\t\t\tfactory: \"reactiveIndex.bindSource\",\n\t\t\t\tbody: (ctx: Ctx) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (const r of (depBatch(ctx, 0) ?? []) as readonly {\n\t\t\t\t\t\t\tprimary: K;\n\t\t\t\t\t\t\tsecondary: unknown;\n\t\t\t\t\t\t\tvalue: V;\n\t\t\t\t\t\t}[]) {\n\t\t\t\t\t\t\tctx.down([[\"DATA\", r]]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tctx.down([[\"ERROR\", errorPayload(e, \"reactiveIndex.bindSource failed\")]]);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t\tconst folder = graph.initNode(op, [src], {\n\t\t\t\tname: name ? `${name}.bind#${bindSeq++}` : undefined,\n\t\t\t\tmeta: { kind: \"collection_bind_source\", collection: \"reactiveIndex\" },\n\t\t\t});\n\t\t\tbindDeps.add(folder as Node<unknown>);\n\t\t\tconst applyNode = ensureApply();\n\t\t\tapplyNode.subscribeDep(folder as Node<unknown>, applyBody);\n\t\t\tlet active = true;\n\t\t\tconst dispose = () => {\n\t\t\t\tif (!active) return;\n\t\t\t\tactive = false;\n\t\t\t\tapplyNode.unsubscribeDep(folder as Node<unknown>, applyBody);\n\t\t\t};\n\t\t\tbinds.push(dispose);\n\t\t\treturn dispose;\n\t\t},\n\t\tdispose(): void {\n\t\t\tfor (const d of binds) d();\n\t\t\tbinds.length = 0;\n\t\t\treleaseApply();\n\t\t\trangeMemo.disposeAll();\n\t\t},\n\t};\n}\n","/**\n * Internal graph-layer policy helpers (D70).\n *\n * This module is deliberately NOT exported from the package index. It centralizes policy plumbing\n * shared by collection structures while each structure still owns backend mutation + delta emission\n * in its apply/mutation path (D60/D61/D68/D69).\n */\n\nimport { type Ctx, depLatest } from \"../../ctx/types.js\";\nimport type { Node } from \"../../node/node.js\";\n\nexport type PolicyOpt<T> = T | Node<T>;\n\nexport interface PolicyReader<T> {\n\treadonly index: number;\n\tread(ctx: Ctx, current: T | undefined): T | undefined;\n}\n\nexport class PolicyInputs {\n\treadonly deps: Node<unknown>[];\n\n\tconstructor(initial: readonly Node<unknown>[] = []) {\n\t\tthis.deps = [...initial];\n\t}\n\n\tadd<T>(node: Node<T> | undefined): PolicyReader<T> {\n\t\tif (node === undefined) return missingPolicyReader<T>();\n\t\tconst index = this.deps.push(node as Node<unknown>) - 1;\n\t\treturn policyReader<T>(index);\n\t}\n}\n\nfunction missingPolicyReader<T>(): PolicyReader<T> {\n\treturn {\n\t\tindex: -1,\n\t\tread: (_ctx, current) => current,\n\t};\n}\n\nfunction policyReader<T>(index: number): PolicyReader<T> {\n\treturn {\n\t\tindex,\n\t\tread(ctx, current) {\n\t\t\tconst latest = depLatest(ctx, index);\n\t\t\treturn latest === undefined ? current : (latest as T);\n\t\t},\n\t};\n}\n\nexport interface KeyOrderPolicy<K> {\n\tkeys(): Iterable<K>;\n}\n\nexport function lruKeys<K>(keys: Iterable<K>): KeyOrderPolicy<K> {\n\treturn {\n\t\tkeys: () => keys,\n\t};\n}\n\nexport interface CapacityConfig {\n\treadonly maxSize?: number;\n}\n\nexport interface SizedCapacityConfig extends CapacityConfig {\n\treadonly size: number;\n}\n\nexport function trimHeadOverflow<T>(items: T[], config: CapacityConfig): T[];\nexport function trimHeadOverflow<T>(items: Iterable<T>, config: SizedCapacityConfig): T[];\nexport function trimHeadOverflow<T>(\n\titems: T[] | Iterable<T>,\n\tconfig: CapacityConfig | SizedCapacityConfig,\n): T[] {\n\tconst { maxSize } = config;\n\tif (maxSize === undefined) return [];\n\tif (!Number.isInteger(maxSize) || maxSize < 1)\n\t\tthrow new RangeError(`maxSize must be a positive integer (got ${maxSize})`);\n\n\tconst size = \"size\" in config ? config.size : Array.isArray(items) ? items.length : undefined;\n\tif (size === undefined) throw new Error(\"trimHeadOverflow requires size for non-array iterables\");\n\tconst overflow = size - maxSize;\n\tif (overflow <= 0) return [];\n\n\tif (Array.isArray(items) && !(\"size\" in config)) return items.splice(0, overflow);\n\n\tconst victims: T[] = [];\n\tfor (const item of items) {\n\t\tvictims.push(item);\n\t\tif (victims.length === overflow) break;\n\t}\n\treturn victims;\n}\n\nexport interface DeadlineEntry<K> {\n\treadonly key: K;\n\treadonly expiresAt: number;\n}\n\nexport interface DeadlinePolicy<K> {\n\treadonly size: number;\n\tpush(item: DeadlineEntry<K>): void;\n\tpeek(): DeadlineEntry<K> | undefined;\n\tpop(): DeadlineEntry<K> | undefined;\n}\n\nexport function deadlines<K>(): DeadlinePolicy<K> {\n\treturn new MinDeadlineHeap<K>();\n}\n\nclass MinDeadlineHeap<K> implements DeadlinePolicy<K> {\n\tprivate readonly items: DeadlineEntry<K>[] = [];\n\n\tget size(): number {\n\t\treturn this.items.length;\n\t}\n\n\tpush(item: DeadlineEntry<K>): void {\n\t\tthis.items.push(item);\n\t\tthis.up(this.items.length - 1);\n\t}\n\n\tpeek(): DeadlineEntry<K> | undefined {\n\t\treturn this.items[0];\n\t}\n\n\tpop(): DeadlineEntry<K> | undefined {\n\t\tconst top = this.items[0];\n\t\tconst last = this.items.pop();\n\t\tif (top !== undefined && last !== undefined && this.items.length > 0) {\n\t\t\tthis.items[0] = last;\n\t\t\tthis.down(0);\n\t\t}\n\t\treturn top;\n\t}\n\n\tprivate up(i: number): void {\n\t\twhile (i > 0) {\n\t\t\tconst p = (i - 1) >> 1;\n\t\t\tif (\n\t\t\t\t(this.items[p] as DeadlineEntry<K>).expiresAt <=\n\t\t\t\t(this.items[i] as DeadlineEntry<K>).expiresAt\n\t\t\t)\n\t\t\t\treturn;\n\t\t\t[this.items[p], this.items[i]] = [\n\t\t\t\tthis.items[i] as DeadlineEntry<K>,\n\t\t\t\tthis.items[p] as DeadlineEntry<K>,\n\t\t\t];\n\t\t\ti = p;\n\t\t}\n\t}\n\n\tprivate down(i: number): void {\n\t\tfor (;;) {\n\t\t\tconst left = i * 2 + 1;\n\t\t\tconst right = left + 1;\n\t\t\tlet smallest = i;\n\t\t\tif (left < this.items.length && this.expiresAt(left) < this.expiresAt(smallest))\n\t\t\t\tsmallest = left;\n\t\t\tif (right < this.items.length && this.expiresAt(right) < this.expiresAt(smallest))\n\t\t\t\tsmallest = right;\n\t\t\tif (smallest === i) return;\n\t\t\t[this.items[i], this.items[smallest]] = [\n\t\t\t\tthis.items[smallest] as DeadlineEntry<K>,\n\t\t\t\tthis.items[i] as DeadlineEntry<K>,\n\t\t\t];\n\t\t\ti = smallest;\n\t\t}\n\t}\n\n\tprivate expiresAt(i: number): number {\n\t\treturn (this.items[i] as DeadlineEntry<K>).expiresAt;\n\t}\n}\n\nexport interface ScoredEntry<T> {\n\treadonly entry: T;\n\treadonly score: number;\n}\n\nexport interface RetentionSelectionConfig {\n\treadonly maxSize?: number;\n}\n\nexport function selectRetentionVictims<T>(\n\tscoredEntries: readonly ScoredEntry<T>[],\n\tconfig: RetentionSelectionConfig,\n): T[] {\n\tconst { maxSize } = config;\n\tif (maxSize === undefined) return [];\n\tif (!Number.isInteger(maxSize) || maxSize < 0)\n\t\tthrow new RangeError(`retention maxSize must be a non-negative integer (got ${maxSize})`);\n\tconst overflow = scoredEntries.length - maxSize;\n\tif (overflow <= 0) return [];\n\n\treturn scoredEntries\n\t\t.map((item, index) => {\n\t\t\tif (!Number.isFinite(item.score))\n\t\t\t\tthrow new RangeError(`retention score must be finite (got ${item.score})`);\n\t\t\treturn { ...item, index };\n\t\t})\n\t\t.sort((a, b) => a.score - b.score || a.index - b.index)\n\t\t.slice(0, overflow)\n\t\t.map((item) => item.entry);\n}\n","/**\n * Reactive positional list (CSP-2.8, D54/D60) — the two-port collection template.\n *\n * Shape (D60 + review #2): a mutable array BACKEND (the single materialized state) + the shared\n * {@link collectionCore} two ports — a DELTA stream ({@link ReactiveList.delta}, one event per\n * mutation, O(1)) and a lazy pull SNAPSHOT ({@link ReactiveList.snapshot}, materialized only on a\n * cone-routed PULL demand). Mutation input is D54 A3 hybrid: ergonomic imperative methods (the\n * external boundary, state-verb-legitimate, D4) + `appendFrom(src)` widening (an in-graph producer\n * drives the list with zero imperative glue). Synchronous quick-reads (`at`/`size`/`toArray`) are\n * the deliberately-non-reactive peek for cold/imperative reads (D60).\n *\n * Per-language (D6/D24, never in parity, no conformance — the substrate pull is already C-16).\n */\n\nimport { type Ctx, depBatch, depCount, depLatest } from \"../../ctx/types.js\";\nimport { Node } from \"../../node/node.js\";\nimport { errorPayload } from \"../../protocol/messages.js\";\nimport type { Operator } from \"../operators.js\";\nimport { trimHeadOverflow } from \"../policies/collection.js\";\nimport type { ReactiveOpt } from \"../policies/types.js\";\nimport type { ListChange } from \"./change.js\";\nimport { type CollectionCore, type CollectionCoreOptions, collectionCore } from \"./core.js\";\n\nexport type ReactiveListOpt<T> = ReactiveOpt<T>;\n\nexport interface ReactiveListOptions extends CollectionCoreOptions {\n\t/**\n\t * Head-trim capacity policy (D72). A static number caps the list locally; a Node-valued maxSize\n\t * must be graph-bound and becomes a declared policy dep that trims on policy changes.\n\t */\n\tmaxSize?: ReactiveListOpt<number>;\n}\n\nexport interface ReactiveList<T> {\n\t/** DELTA stream: one {@link ListChange} per mutation (O(1)). Subscribe to observe events. */\n\treadonly delta: Node<ListChange<T>>;\n\t/** SNAPSHOT pull node: demand via `ctx.upNext([[\"PULL\", { pullId }]])` → one `readonly T[]` (lazy O(n)). */\n\treadonly snapshot: Node<readonly T[]>;\n\t/** The snapshot node's pullId — write it verbatim into the demander's fn (D269). */\n\treadonly pullId: symbol;\n\t/** Current entry count (O(1), synchronous non-reactive read). */\n\treadonly size: number;\n\t/** Positional access (O(1)); negative indices Python-style; `undefined` out of range. Sync read. */\n\tat(index: number): T | undefined;\n\t/** Full current contents (O(n), fresh defensive copy). Sync non-reactive read (cold-start peek). */\n\ttoArray(): readonly T[];\n\tappend(value: T): void;\n\t/** Append all values; one delta event + one snapshot-arm. No-op if `values` is empty. */\n\tappendMany(values: readonly T[]): void;\n\t/** Insert at `index` (0..size). Throws `RangeError` out of range. */\n\tinsert(index: number, value: T): void;\n\t/** Insert all at `index` as one op. No-op if `values` is empty. Throws out of range. */\n\tinsertMany(index: number, values: readonly T[]): void;\n\t/** Remove and return the value at `index` (default last; negative Python-style). Throws if empty/out of range. */\n\tpop(index?: number): T;\n\tclear(): void;\n\t/** D54 widening: every value from `src` is appended. Returns a disposer. */\n\tappendFrom(src: Node<T>): () => void;\n\t/** Release the widening subscriptions (idempotent). */\n\tdispose(): void;\n}\n\n/** Default mutable-array backend (D60 first-cut; pluggable persistent/immutable backend deferred). */\nclass ListBackend<T> {\n\tprivate _version = 0;\n\tprivate readonly buf: T[];\n\n\tconstructor(initial?: readonly T[], maxSize?: number) {\n\t\tthis.buf = initial ? [...initial] : [];\n\t\ttrimHeadOverflow(this.buf, { maxSize });\n\t}\n\n\tget version(): number {\n\t\treturn this._version;\n\t}\n\n\tget size(): number {\n\t\treturn this.buf.length;\n\t}\n\n\tat(index: number): T | undefined {\n\t\tif (!Number.isInteger(index)) return undefined;\n\t\tconst i = index >= 0 ? index : this.buf.length + index;\n\t\treturn i < 0 || i >= this.buf.length ? undefined : this.buf[i];\n\t}\n\n\tsnapshot(): readonly T[] {\n\t\treturn [...this.buf];\n\t}\n\n\tappend(value: T): void {\n\t\tthis.buf.push(value);\n\t\tthis._version += 1;\n\t}\n\n\tappendMany(values: readonly T[]): void {\n\t\tif (values.length === 0) return;\n\t\tfor (const v of values) this.buf.push(v);\n\t\tthis._version += 1;\n\t}\n\n\tinsert(index: number, value: T): void {\n\t\tif (!Number.isInteger(index) || index < 0 || index > this.buf.length)\n\t\t\tthrow new RangeError(`insert: index ${index} out of range [0, ${this.buf.length}]`);\n\t\tthis.buf.splice(index, 0, value);\n\t\tthis._version += 1;\n\t}\n\n\tinsertMany(index: number, values: readonly T[]): void {\n\t\tif (!Number.isInteger(index) || index < 0 || index > this.buf.length)\n\t\t\tthrow new RangeError(`insertMany: index ${index} out of range [0, ${this.buf.length}]`);\n\t\tif (values.length === 0) return;\n\t\tthis.buf.splice(index, 0, ...values);\n\t\tthis._version += 1;\n\t}\n\n\tpop(index: number): T {\n\t\tif (this.buf.length === 0) throw new RangeError(\"pop from empty list\");\n\t\tif (!Number.isInteger(index)) throw new RangeError(`pop: index ${index} must be an integer`);\n\t\tconst i = index >= 0 ? index : this.buf.length + index;\n\t\tif (i < 0 || i >= this.buf.length) throw new RangeError(`pop: index ${index} out of range`);\n\t\tconst [v] = this.buf.splice(i, 1);\n\t\tthis._version += 1;\n\t\treturn v as T;\n\t}\n\n\tclear(): number {\n\t\tconst n = this.buf.length;\n\t\tif (n === 0) return 0;\n\t\tthis.buf.length = 0;\n\t\tthis._version += 1;\n\t\treturn n;\n\t}\n\n\tenforceMaxSize(maxSize?: number): number {\n\t\tconst removed = trimHeadOverflow(this.buf, { maxSize }).length;\n\t\tif (removed > 0) this._version += 1;\n\t\treturn removed;\n\t}\n}\n\n/**\n * Create a reactive list (D54/D60). The DELTA + SNAPSHOT ports + pullId come from the shared\n * {@link collectionCore}; this layer adds the typed list method surface + backend.\n *\n * @example\n * ```ts\n * const list = reactiveList<number>([1]);\n * // observe events:\n * list.delta.subscribe((m) => { if (m[0] === \"DATA\") console.log(\"Δ\", m[1]); });\n * list.append(2); // delta: {kind:\"append\", value:2}\n * // demand the snapshot (a downstream consumer, holding `list.snapshot` upstream, runs):\n * // ctx.upNext([[\"PULL\", { pullId: list.pullId }]]); → SNAPSHOT delivers [1, 2]\n * list.toArray(); // [1, 2] (synchronous non-reactive read)\n * ```\n */\nexport function reactiveList<T>(\n\tinitial?: readonly T[],\n\toptions: ReactiveListOptions = {},\n): ReactiveList<T> {\n\tconst { maxSize, graph, dispatcher } = options;\n\tconst base = dispatcher ? { dispatcher } : {};\n\n\tfunction isNodeOpt(x: ReactiveListOpt<number> | undefined): x is Node<number> {\n\t\treturn x instanceof Node;\n\t}\n\n\tfunction validateMaxSize(v: number): number {\n\t\tif (!Number.isFinite(v) || !Number.isInteger(v) || v < 1)\n\t\t\tthrow new RangeError(`reactiveList: maxSize must be a positive integer (got ${v})`);\n\t\treturn v;\n\t}\n\n\tconst initialMaxSize = isNodeOpt(maxSize) ? undefined : maxSize;\n\tconst backend = new ListBackend<T>(\n\t\tinitial,\n\t\tinitialMaxSize === undefined ? undefined : validateMaxSize(initialMaxSize),\n\t);\n\tconst restorable = graph !== undefined && options.name !== undefined && maxSize === undefined;\n\tconst core: CollectionCore<readonly T[], ListChange<T>> = collectionCore(\n\t\tbackend,\n\t\t\"reactiveList\",\n\t\toptions,\n\t\trestorable\n\t\t\t? {\n\t\t\t\t\tdeltaRef: \"reactiveList.delta\",\n\t\t\t\t\tsnapshotRef: \"reactiveList.snapshot\",\n\t\t\t\t\tbackendState: () => backend.snapshot(),\n\t\t\t\t}\n\t\t\t: undefined,\n\t);\n\tconst binds: Array<() => void> = [];\n\tconst bindDeps = new WeakSet<Node<unknown>>();\n\tlet bindSeq = 0;\n\tlet capacityPolicy: Node<number> | undefined;\n\tlet apply: Node<ListChange<T>> | undefined;\n\tlet releaseApply = () => {};\n\tlet currentMaxSize = initialMaxSize;\n\n\tfunction emitTrimmed(n: number): void {\n\t\tif (n > 0) core.emit({ kind: \"trimHead\", n });\n\t}\n\n\tfunction enforceCapacity(): void {\n\t\temitTrimmed(backend.enforceMaxSize(currentMaxSize));\n\t}\n\n\tconst applyBody = (ctx: Ctx): void => {\n\t\tconst deps = apply?.deps ?? [];\n\t\tfor (let i = 0; i < depCount(ctx); i++) {\n\t\t\tconst dep = deps[i];\n\t\t\tif (dep === capacityPolicy) {\n\t\t\t\tconst latest = depLatest(ctx, i);\n\t\t\t\tif (latest !== undefined) currentMaxSize = validateMaxSize(latest as number);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (dep && bindDeps.has(dep)) {\n\t\t\t\tfor (const value of (depBatch(ctx, i) ?? []) as readonly T[]) {\n\t\t\t\t\tbackend.append(value);\n\t\t\t\t\tcore.emit({ kind: \"append\", value });\n\t\t\t\t\tenforceCapacity();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tenforceCapacity();\n\t};\n\n\tfunction ensureApply(): Node<ListChange<T>> {\n\t\tif (apply !== undefined) return apply;\n\t\tconst op: Operator<unknown, ListChange<T>> = {\n\t\t\tfactory: \"reactiveList.capacityPolicy\",\n\t\t\tbody: applyBody,\n\t\t\topts: { partial: true },\n\t\t};\n\t\tconst deps = capacityPolicy ? [capacityPolicy as Node<unknown>] : [];\n\t\tapply = graph\n\t\t\t? graph.initNode(op, deps, {\n\t\t\t\t\tname: options.name ? `${options.name}.capacityPolicy` : undefined,\n\t\t\t\t\tmeta: { kind: \"collection_policy_apply\", collection: \"reactiveList\" },\n\t\t\t\t})\n\t\t\t: new Node<ListChange<T>>(deps, op.body, {\n\t\t\t\t\t...base,\n\t\t\t\t\tfactory: \"reactiveList.capacityPolicy\",\n\t\t\t\t\tpartial: true,\n\t\t\t\t\tname: options.name ? `${options.name}.capacityPolicy` : undefined,\n\t\t\t\t});\n\t\treleaseApply = graph\n\t\t\t? graph.retain(apply, { reason: \"reactiveList.capacityPolicy\" })\n\t\t\t: apply.subscribe(() => {});\n\t\treturn apply;\n\t}\n\n\tfunction constPolicyNode(value: number): Node<number> {\n\t\tconst op: Operator<never, number> = {\n\t\t\tfactory: \"reactiveList.maxSizePolicy\",\n\t\t\tbody: () => {},\n\t\t\topts: { initial: value },\n\t\t};\n\t\tif (graph) {\n\t\t\treturn graph.initNode(op, [], {\n\t\t\t\tname: options.name ? `${options.name}.maxSizePolicy` : undefined,\n\t\t\t\tmeta: { kind: \"collection_policy\", collection: \"reactiveList\", policy: \"maxSize\" },\n\t\t\t});\n\t\t}\n\t\treturn new Node<number>([], null, {\n\t\t\t...base,\n\t\t\tinitial: value,\n\t\t\tfactory: \"reactiveList.maxSizePolicy\",\n\t\t\tname: options.name ? `${options.name}.maxSizePolicy` : undefined,\n\t\t});\n\t}\n\n\tif (maxSize !== undefined) {\n\t\tif (isNodeOpt(maxSize) && graph === undefined)\n\t\t\tthrow new Error(\n\t\t\t\t\"reactiveList maxSize Node option requires options.graph so the policy edge is describe-visible (D72)\",\n\t\t\t);\n\t\tcapacityPolicy = isNodeOpt(maxSize)\n\t\t\t? maxSize\n\t\t\t: graph\n\t\t\t\t? constPolicyNode(validateMaxSize(maxSize))\n\t\t\t\t: undefined;\n\t\tif (capacityPolicy !== undefined) ensureApply();\n\t}\n\n\treturn {\n\t\tdelta: core.delta,\n\t\tsnapshot: core.snapshot,\n\t\tpullId: core.pullId,\n\n\t\tget size(): number {\n\t\t\treturn backend.size;\n\t\t},\n\t\tat(index: number): T | undefined {\n\t\t\treturn backend.at(index);\n\t\t},\n\t\ttoArray(): readonly T[] {\n\t\t\treturn backend.snapshot();\n\t\t},\n\n\t\tappend(value: T): void {\n\t\t\tbackend.append(value);\n\t\t\tcore.emit({ kind: \"append\", value });\n\t\t\tenforceCapacity();\n\t\t},\n\t\tappendMany(values: readonly T[]): void {\n\t\t\tif (values.length === 0) return;\n\t\t\tconst copy = [...values];\n\t\t\tbackend.appendMany(copy);\n\t\t\tcore.emit({ kind: \"appendMany\", values: copy });\n\t\t\tenforceCapacity();\n\t\t},\n\t\tinsert(index: number, value: T): void {\n\t\t\tbackend.insert(index, value);\n\t\t\tcore.emit({ kind: \"insert\", index, value });\n\t\t\tenforceCapacity();\n\t\t},\n\t\tinsertMany(index: number, values: readonly T[]): void {\n\t\t\tif (values.length === 0) {\n\t\t\t\t// still validate the index (mirror backend) so an out-of-range empty insert throws\n\t\t\t\tbackend.insertMany(index, values);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst copy = [...values];\n\t\t\tbackend.insertMany(index, copy);\n\t\t\tcore.emit({ kind: \"insertMany\", index, values: copy });\n\t\t\tenforceCapacity();\n\t\t},\n\t\tpop(index = -1): T {\n\t\t\tconst resolved = index < 0 ? backend.size + index : index;\n\t\t\tconst value = backend.pop(index);\n\t\t\tcore.emit({ kind: \"pop\", index: resolved, value });\n\t\t\treturn value;\n\t\t},\n\t\tclear(): void {\n\t\t\tconst count = backend.clear();\n\t\t\tif (count > 0) core.emit({ kind: \"clear\", count });\n\t\t},\n\n\t\tappendFrom(src: Node<T>): () => void {\n\t\t\tif (graph === undefined)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"reactiveList.appendFrom requires options.graph so the input fold is describe-visible (D61)\",\n\t\t\t\t);\n\t\t\tconst op: Operator<T, T> = {\n\t\t\t\tfactory: \"reactiveList.bindSource\",\n\t\t\t\tbody: (ctx: Ctx) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (const value of (depBatch(ctx, 0) ?? []) as readonly T[]) {\n\t\t\t\t\t\t\tctx.down([[\"DATA\", value]]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tctx.down([[\"ERROR\", errorPayload(e, \"reactiveList.bindSource failed\")]]);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t\tconst folder = graph.initNode(op, [src], {\n\t\t\t\tname: options.name ? `${options.name}.bind#${bindSeq++}` : undefined,\n\t\t\t\tmeta: { kind: \"collection_bind_source\", collection: \"reactiveList\" },\n\t\t\t});\n\t\t\tbindDeps.add(folder as Node<unknown>);\n\t\t\tconst applyNode = ensureApply();\n\t\t\tapplyNode.subscribeDep(folder as Node<unknown>, applyBody);\n\t\t\tlet active = true;\n\t\t\tconst dispose = () => {\n\t\t\t\tif (!active) return;\n\t\t\t\tactive = false;\n\t\t\t\tapplyNode.unsubscribeDep(folder as Node<unknown>, applyBody);\n\t\t\t};\n\t\t\tbinds.push(dispose);\n\t\t\treturn dispose;\n\t\t},\n\t\tdispose(): void {\n\t\t\tfor (const d of binds) d();\n\t\t\tbinds.length = 0;\n\t\t\treleaseApply();\n\t\t},\n\t};\n}\n","/**\n * Reactive append-only log (CSP-2.8, D54/D60) — two-port collection with incremental views.\n *\n * Shape = the shared {@link collectionCore} two ports over an array (or ring-buffer if `maxSize`)\n * BACKEND (D60). Specializations (D60 #5 / review #5):\n * - SNAPSHOT (the full `readonly T[]`) is the lazy pull port like the others, BUT the log's main\n * consumption is INCREMENTAL: `tail()` / `slice()` / `scan()` re-derive on the DELTA backbone\n * (dep=[delta]), folding each appended value as it arrives — NOT re-scanning a pushed full array.\n * - `append(undefined)` throws: `undefined` is the substrate SENTINEL (R-data-payload / R-sentinel),\n * not a valid value.\n * - empty log: the snapshot is `[]` (a real empty array); a never-appended `scan` seeds its initial.\n * There is NO `[[RESOLVED]]`-for-empty dual role (D49 narrowed RESOLVED to undirty-only, D60 #5b).\n * - `attach(upstream)` = the D54 widening (a declared input-fold dep), NOT an imperative subscribe.\n * - {@link mergeReactiveLogs} is a DECLARED-DEP merge (deps=[...delta streams]), NOT the old\n * internal-subscribe island (D45 must-fix, D60 #5e).\n * - storage persistence = D57 (binding-layer observe-sink), out of scope here.\n *\n * Per-language (D6/D24, never in parity, no conformance — the substrate pull is already C-16).\n */\n\nimport { type Ctx, depBatch, depCount } from \"../../ctx/types.js\";\nimport { type Node, node } from \"../../node/node.js\";\nimport type { GraphCheckpointJson } from \"../checkpoint.js\";\nimport { trimHeadOverflow } from \"../policies/collection.js\";\nimport type { ViewCachePolicy } from \"../policies/types.js\";\nimport type { LogChange } from \"./change.js\";\nimport {\n\ttype CollectionCore,\n\ttype CollectionCoreOptions,\n\tcollectionCore,\n\tlightReactiveView,\n\ttype ReactiveView,\n\tViewMemoCache,\n} from \"./core.js\";\n\nexport interface ReactiveLogOptions extends CollectionCoreOptions {\n\t/** Ring-buffer cap: appends past `maxSize` evict the oldest (head-trim, append-only-safe). */\n\tmaxSize?: number;\n\t/** Static D80 memo policy for D121 light views. Eviction does not dispose returned views. */\n\tviewCache?: ViewCachePolicy;\n}\n\nexport interface ReactiveLog<T> {\n\treadonly delta: Node<LogChange<T>>;\n\t/** SNAPSHOT pull node: demand → full `readonly T[]` (lazy O(n)). For incremental use {@link tail}, {@link slice}, or {@link scan}. */\n\treadonly snapshot: Node<readonly T[]>;\n\treadonly pullId: symbol;\n\t/** Entry count (O(1)). Sync non-reactive read. */\n\treadonly size: number;\n\t/** Positional access (O(1)); negative Python-style; `undefined` out of range. Sync read. */\n\tat(index: number): T | undefined;\n\t/** Full contents (O(n) fresh copy). Sync non-reactive read (cold-start peek). */\n\ttoArray(): readonly T[];\n\t/** Append one value. Throws on `undefined` (substrate SENTINEL, R-data-payload). */\n\tappend(value: T): void;\n\t/** Append many; one delta event. No-op if empty. Throws if any value is `undefined`. */\n\tappendMany(values: readonly T[]): void;\n\tclear(): void;\n\t/** Remove the first `n` entries (clamped to size). */\n\ttrimHead(n: number): void;\n\t/**\n\t * Incremental tail view: a derived node emitting the last `n` entries, recomputed on each delta\n\t * (dep=[delta], D60 #5a). Memoized per `n` until {@link dispose}; use stable ranges for\n\t * long-lived logs. Subscribe to keep it live.\n\t */\n\ttail(n: number): Node<readonly T[]>;\n\t/**\n\t * Incremental positional view: a derived node emitting `toArray().slice(start, stop)`,\n\t * recomputed on each delta (dep=[delta], D60 #5a). Memoized per `[start, stop]` until\n\t * {@link dispose}; use stable ranges for long-lived logs.\n\t */\n\tslice(start: number, stop?: number): Node<readonly T[]>;\n\t/**\n\t * D121 light page view: `delta` forwards parent log mutations, and `snapshot` is a pull node\n\t * that materializes the current page on demand.\n\t */\n\tpage(offset: number, limit: number): ReactiveView<LogChange<T>, readonly T[]>;\n\t/**\n\t * Incremental running aggregate over appended values (dep=[delta], D60 #5a). O(1) per append —\n\t * folds only the new values each delta; resets on `clear`/`trimHead` (a non-append delta) via a\n\t * full re-fold. Emits the current accumulator on every mutation; seeds `initial` on an empty log.\n\t */\n\tscan<A>(initial: A, step: (acc: A, value: T) => A): Node<A>;\n\t/** D54 widening: every value from `src` is appended. Returns a disposer. */\n\tattach(src: Node<T>): () => void;\n\tdispose(): void;\n}\n\n/** Default array / ring-buffer backend (D60 first-cut; persistent backend deferred). */\nclass LogBackend<T> {\n\tprivate _version = 0;\n\tprivate buf: T[];\n\tprivate readonly maxSize?: number;\n\n\tconstructor(initial?: readonly T[], maxSize?: number) {\n\t\tif (maxSize !== undefined && maxSize < 1)\n\t\t\tthrow new RangeError(\"reactiveLog: maxSize must be >= 1\");\n\t\tthis.maxSize = maxSize;\n\t\tthis.buf = initial ? [...initial] : [];\n\t\ttrimHeadOverflow(this.buf, { maxSize });\n\t}\n\n\tget version(): number {\n\t\treturn this._version;\n\t}\n\tget size(): number {\n\t\treturn this.buf.length;\n\t}\n\tat(index: number): T | undefined {\n\t\tif (!Number.isInteger(index)) return undefined;\n\t\tconst i = index >= 0 ? index : this.buf.length + index;\n\t\treturn i < 0 || i >= this.buf.length ? undefined : this.buf[i];\n\t}\n\tsnapshot(): readonly T[] {\n\t\treturn [...this.buf];\n\t}\n\n\tappend(value: T): void {\n\t\tthis.buf.push(value);\n\t\ttrimHeadOverflow(this.buf, { maxSize: this.maxSize });\n\t\tthis._version += 1;\n\t}\n\tappendMany(values: readonly T[]): void {\n\t\tif (values.length === 0) return;\n\t\tfor (const v of values) this.buf.push(v);\n\t\ttrimHeadOverflow(this.buf, { maxSize: this.maxSize });\n\t\tthis._version += 1;\n\t}\n\tclear(): number {\n\t\tconst n = this.buf.length;\n\t\tif (n === 0) return 0;\n\t\tthis.buf.length = 0;\n\t\tthis._version += 1;\n\t\treturn n;\n\t}\n\ttrimHead(n: number): number {\n\t\tif (!Number.isInteger(n) || n < 0)\n\t\t\tthrow new RangeError(`trimHead: n must be a non-negative integer (got ${n})`);\n\t\tif (n === 0 || this.buf.length === 0) return 0;\n\t\tconst removed = Math.min(n, this.buf.length);\n\t\tthis.buf.splice(0, removed);\n\t\tthis._version += 1;\n\t\treturn removed;\n\t}\n}\n\nfunction rejectUndefined<T>(value: T, ctx: string): void {\n\t// R-data-payload / R-sentinel (D60 #5): undefined is the substrate SENTINEL, not a valid value.\n\tif (value === undefined)\n\t\tthrow new TypeError(\n\t\t\t`${ctx}: undefined is the substrate SENTINEL, not a valid value — use null`,\n\t\t);\n}\n\n/**\n * Create an append-only reactive log (D54/D60). DELTA + lazy pull SNAPSHOT + pullId via\n * {@link collectionCore}; this layer adds the typed append surface + incremental view/scan.\n */\nexport function reactiveLog<T>(\n\tinitial?: readonly T[],\n\toptions: ReactiveLogOptions = {},\n): ReactiveLog<T> {\n\tconst { maxSize, viewCache, ...coreOpts } = options;\n\tconst base = coreOpts.dispatcher ? { dispatcher: coreOpts.dispatcher } : {};\n\tconst backend = new LogBackend<T>(initial, maxSize);\n\tconst restoreConfig =\n\t\tcoreOpts.graph !== undefined && coreOpts.name !== undefined\n\t\t\t? ({\n\t\t\t\t\t...(maxSize !== undefined ? { maxSize } : {}),\n\t\t\t\t} as GraphCheckpointJson)\n\t\t\t: undefined;\n\tconst core: CollectionCore<readonly T[], LogChange<T>> = collectionCore(\n\t\tbackend,\n\t\t\"reactiveLog\",\n\t\tcoreOpts,\n\t\trestoreConfig !== undefined\n\t\t\t? {\n\t\t\t\t\tdeltaRef: \"reactiveLog.delta\",\n\t\t\t\t\tsnapshotRef: \"reactiveLog.snapshot\",\n\t\t\t\t\tconfig: restoreConfig,\n\t\t\t\t\tbackendState: () => backend.snapshot(),\n\t\t\t\t}\n\t\t\t: undefined,\n\t);\n\tconst binds: Array<() => void> = [];\n\tconst tailMemo = new Map<number, Node<readonly T[]>>();\n\tconst sliceMemo = new Map<string, Node<readonly T[]>>();\n\tconst pageMemo = new ViewMemoCache<string, ReactiveView<LogChange<T>, readonly T[]>>(viewCache);\n\tlet pageSeq = 0;\n\n\treturn {\n\t\tdelta: core.delta,\n\t\tsnapshot: core.snapshot,\n\t\tpullId: core.pullId,\n\n\t\tget size(): number {\n\t\t\treturn backend.size;\n\t\t},\n\t\tat(index: number): T | undefined {\n\t\t\treturn backend.at(index);\n\t\t},\n\t\ttoArray(): readonly T[] {\n\t\t\treturn backend.snapshot();\n\t\t},\n\n\t\tappend(value: T): void {\n\t\t\trejectUndefined(value, \"reactiveLog.append\");\n\t\t\tbackend.append(value);\n\t\t\tcore.emit({ kind: \"append\", value });\n\t\t},\n\t\tappendMany(values: readonly T[]): void {\n\t\t\tif (values.length === 0) return;\n\t\t\tfor (const v of values) rejectUndefined(v, \"reactiveLog.appendMany\");\n\t\t\tconst copy = [...values];\n\t\t\tbackend.appendMany(copy);\n\t\t\tcore.emit({ kind: \"appendMany\", values: copy });\n\t\t},\n\t\tclear(): void {\n\t\t\tconst count = backend.clear();\n\t\t\tif (count > 0) core.emit({ kind: \"clear\", count });\n\t\t},\n\t\ttrimHead(n: number): void {\n\t\t\tconst removed = backend.trimHead(n);\n\t\t\tif (removed > 0) core.emit({ kind: \"trimHead\", n: removed });\n\t\t},\n\n\t\ttail(n: number): Node<readonly T[]> {\n\t\t\tif (!Number.isInteger(n) || n < 0)\n\t\t\t\tthrow new RangeError(`tail: n must be a non-negative integer (got ${n})`);\n\t\t\tconst hit = tailMemo.get(n);\n\t\t\tif (hit !== undefined) return hit;\n\t\t\t// Incremental on the DELTA backbone (D60 #5a): each delta re-reads the backend's current\n\t\t\t// tail (the backend is this structure's own materialized state, D60 #1 — not a foreign\n\t\t\t// .cache peek). `partial:true` — the tail does not consume the delta value, it fires on arm.\n\t\t\tconst tnode = node<readonly T[]>(\n\t\t\t\t[core.delta as Node<unknown>],\n\t\t\t\t(ctx: Ctx) => {\n\t\t\t\t\tconst all = backend.snapshot();\n\t\t\t\t\tctx.down([[\"DATA\", n === 0 ? [] : all.slice(Math.max(0, all.length - n))]]);\n\t\t\t\t},\n\t\t\t\t{ ...base, factory: \"reactiveLog.tail\", partial: true },\n\t\t\t);\n\t\t\ttailMemo.set(n, tnode);\n\t\t\treturn tnode;\n\t\t},\n\n\t\tslice(start: number, stop?: number): Node<readonly T[]> {\n\t\t\tif (!Number.isInteger(start) || start < 0) {\n\t\t\t\tthrow new RangeError(`slice: start must be a non-negative integer (got ${start})`);\n\t\t\t}\n\t\t\tif (stop !== undefined && (!Number.isInteger(stop) || stop < 0)) {\n\t\t\t\tthrow new RangeError(`slice: stop must be a non-negative integer (got ${stop})`);\n\t\t\t}\n\t\t\tconst key = `${start}:${stop ?? \"\"}`;\n\t\t\tconst hit = sliceMemo.get(key);\n\t\t\tif (hit !== undefined) return hit;\n\t\t\t// Incremental on the DELTA backbone (D60 #5a): each delta re-reads this log's own\n\t\t\t// backend slice. The backend is the single materialized state (D60), not a dep cache.\n\t\t\tconst snode = node<readonly T[]>(\n\t\t\t\t[core.delta as Node<unknown>],\n\t\t\t\t(ctx: Ctx) => {\n\t\t\t\t\tctx.down([[\"DATA\", backend.snapshot().slice(start, stop)]]);\n\t\t\t\t},\n\t\t\t\t{ ...base, factory: \"reactiveLog.slice\", partial: true },\n\t\t\t);\n\t\t\tsliceMemo.set(key, snode);\n\t\t\treturn snode;\n\t\t},\n\n\t\tpage(offset: number, limit: number): ReactiveView<LogChange<T>, readonly T[]> {\n\t\t\tif (!Number.isInteger(offset) || offset < 0) {\n\t\t\t\tthrow new RangeError(`page: offset must be a non-negative integer (got ${offset})`);\n\t\t\t}\n\t\t\tif (!Number.isInteger(limit) || limit < 0) {\n\t\t\t\tthrow new RangeError(`page: limit must be a non-negative integer (got ${limit})`);\n\t\t\t}\n\t\t\tconst key = `${offset}:${limit}`;\n\t\t\tconst hit = pageMemo.get(key);\n\t\t\tif (hit !== undefined) return hit;\n\t\t\tconst materialize = (): readonly T[] => backend.snapshot().slice(offset, offset + limit);\n\t\t\tlet view: ReactiveView<LogChange<T>, readonly T[]>;\n\t\t\tview = lightReactiveView<LogChange<T>, readonly T[]>(core.delta as Node<unknown>, {\n\t\t\t\t...coreOpts,\n\t\t\t\tfactory: \"reactiveLog.page\",\n\t\t\t\tname: coreOpts.name ? `${coreOpts.name}.page#${pageSeq++}` : undefined,\n\t\t\t\tmaterializeSnapshot: materialize,\n\t\t\t\tonDispose: () => {\n\t\t\t\t\tpageMemo.deleteValue(view);\n\t\t\t\t},\n\t\t\t});\n\t\t\tpageMemo.set(key, view);\n\t\t\treturn view;\n\t\t},\n\n\t\tscan<A>(initial: A, step: (acc: A, value: T) => A): Node<A> {\n\t\t\t// Incremental fold on the delta backbone: keep the accumulator + processed-count in\n\t\t\t// ctx.state; fold only the new tail each append; full re-fold on a shrink (clear/trimHead).\n\t\t\treturn node<A>(\n\t\t\t\t[core.delta as Node<unknown>],\n\t\t\t\t(ctx: Ctx) => {\n\t\t\t\t\tconst st = ctx.state.get<{ acc: A; processed: number }>() ?? {\n\t\t\t\t\t\tacc: initial,\n\t\t\t\t\t\tprocessed: 0,\n\t\t\t\t\t};\n\t\t\t\t\tconst all = backend.snapshot();\n\t\t\t\t\tif (all.length < st.processed || (maxSize !== undefined && all.length <= st.processed)) {\n\t\t\t\t\t\t// Shrink or ring-buffer overwrite: re-fold from the current backend snapshot.\n\t\t\t\t\t\tlet acc = initial;\n\t\t\t\t\t\tfor (const v of all) acc = step(acc, v);\n\t\t\t\t\t\tst.acc = acc;\n\t\t\t\t\t\tst.processed = all.length;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let i = st.processed; i < all.length; i++) st.acc = step(st.acc, all[i] as T);\n\t\t\t\t\t\tst.processed = all.length;\n\t\t\t\t\t}\n\t\t\t\t\tctx.state.set(st);\n\t\t\t\t\tctx.down([[\"DATA\", st.acc]]);\n\t\t\t\t},\n\t\t\t\t{ ...base, factory: \"reactiveLog.scan\", partial: true },\n\t\t\t);\n\t\t},\n\n\t\tattach(src: Node<T>): () => void {\n\t\t\tconst dispose = core.bindSource(src, (value: T) => {\n\t\t\t\trejectUndefined(value, \"reactiveLog.attach\");\n\t\t\t\tbackend.append(value);\n\t\t\t\tcore.emit({ kind: \"append\", value });\n\t\t\t});\n\t\t\tbinds.push(dispose);\n\t\t\treturn dispose;\n\t\t},\n\t\tdispose(): void {\n\t\t\tfor (const d of binds) d();\n\t\t\tbinds.length = 0;\n\t\t\ttailMemo.clear();\n\t\t\tsliceMemo.clear();\n\t\t\tpageMemo.disposeAll();\n\t\t},\n\t};\n}\n\n/**\n * Fan-in N reactive logs into one merged DELTA stream (D60 #5e — a DECLARED-DEP merge, NOT the old\n * internal-subscribe island). The returned node declares each log's `delta` as a dep (`partial`)\n * and re-emits every change it sees — describe shows `log[i].delta → merged` truthfully (D45).\n * For the merged SNAPSHOT, fold the merged delta with {@link ReactiveLog.scan}-style logic, or\n * demand each source's snapshot independently.\n */\nexport function mergeReactiveLogs<T>(logs: readonly ReactiveLog<T>[]): Node<LogChange<T>> {\n\tconst deps = logs.map((l) => l.delta as Node<unknown>);\n\treturn node<LogChange<T>>(\n\t\tdeps,\n\t\t(ctx: Ctx) => {\n\t\t\tfor (let i = 0; i < depCount(ctx); i++) {\n\t\t\t\tconst b = depBatch(ctx, i);\n\t\t\t\tif (b) for (const c of b) ctx.down([[\"DATA\", c as LogChange<T>]]);\n\t\t\t}\n\t\t},\n\t\t{ factory: \"mergeReactiveLogs\", partial: true },\n\t);\n}\n\n/**\n * Standalone incremental scan over a reactive log. Equivalent to `log.scan(initial, step)`;\n * provided for pipe-builder and helper-composition call sites.\n */\nexport function scanLog<T, A>(\n\tlog: ReactiveLog<T>,\n\tinitial: A,\n\tstep: (acc: A, value: T) => A,\n): Node<A> {\n\treturn log.scan(initial, step);\n}\n","/**\n * Reactive key–value map (CSP-2.8, D54/D60/D68) — two-port collection with policy opts.\n *\n * Shape = the shared {@link collectionCore} two ports over a `Map` BACKEND (D60). Specializations\n * (D60 #3 / review #3):\n * - TTL/LRU are node-as-opt policies (D68). Static `maxSize` / `defaultTtl` values become constant\n * policy deps; Node-valued opts are declared deps. The graph-visible `reactiveMap.apply` node is\n * the normal backend mutation path and emits the public delta payloads it materializes.\n * - LAZY TTL (no background timer): expiry is checked at read (`get`/`has`) + at synchronous\n * snapshot materialization (`toMap`/`pruneExpired`). A read/prune that deletes an expired key\n * emits the normal delta `delete{reason:\"expired\"}` (D61). Snapshot demand uses an internal pull\n * `snapshotPrep` node: it prunes expired entries and reads the backend once, then public\n * `snapshot` and `delta` derive from that declared prep payload. No snapshot fn drives its own\n * dep (D37).\n * - delete-reason enum {expired|lru-evict|archived|explicit} on the delta (D60 #3c).\n * - LRU `maxSize`: an over-cap `set` evicts the oldest, emitting a `delete{reason:\"lru-evict\"}`.\n * A live-key `get`/`has` touches LRU order WITHOUT a version bump (internal, D60 #3d).\n * - retention (score-archive, D72): `retention.maxSize` is a value-or-Node numeric policy and\n * the static scorer selects archive victims through the normal `reactiveMap.apply` path.\n *\n * Per-language (D6/D24, never in parity, no conformance — the substrate pull is already C-16).\n */\n\nimport {\n\ttype Ctx,\n\tdepBatch,\n\tdepCount,\n\tdepTerminal,\n\tisTerminalComplete,\n\ttype NodeFn,\n} from \"../../ctx/types.js\";\nimport { strictCanonicalJsonBytes } from \"../../json/codec.js\";\nimport { Node } from \"../../node/node.js\";\nimport { errorPayload } from \"../../protocol/messages.js\";\nimport { registerBackendStateContributor } from \"../checkpoint.js\";\nimport { initNode, type Operator } from \"../operators.js\";\nimport {\n\tdeadlines,\n\tlruKeys,\n\tPolicyInputs,\n\ttype PolicyOpt,\n\ttype ScoredEntry,\n\tselectRetentionVictims,\n\ttrimHeadOverflow,\n} from \"../policies/collection.js\";\nimport type { ReactiveOpt, RetentionPolicy, ViewCachePolicy } from \"../policies/types.js\";\nimport { timer } from \"../sources.js\";\nimport type { MapChange } from \"./change.js\";\nimport {\n\ttype CollectionCoreOptions,\n\tlightReactiveView,\n\ttype ReactiveView,\n\tViewMemoCache,\n} from \"./core.js\";\n\nexport type ReactiveMapOpt<T> = ReactiveOpt<T>;\n\nexport interface ReactiveMapRetentionEntry<K, V> {\n\treadonly key: K;\n\treadonly value: V;\n}\n\nexport interface ReactiveMapRetentionPolicy<K, V>\n\textends RetentionPolicy<ReactiveMapRetentionEntry<K, V>> {\n\t/** Archive capacity. Unlike LRU, zero is allowed and archives every live entry. */\n\treadonly maxSize?: ReactiveMapOpt<number>;\n\t/** Higher scores are retained; lowest finite scores are archived first. */\n\tscore(entry: ReactiveMapRetentionEntry<K, V>): number;\n}\n\ninterface ResolvedRetentionPolicy<K, V> {\n\treadonly maxSize?: number;\n\tscore(entry: ReactiveMapRetentionEntry<K, V>): number;\n}\n\nexport interface ReactiveMapOptions<K = unknown, V = unknown> extends CollectionCoreOptions {\n\t/**\n\t * LRU cap as a node-as-opt policy (D68). A static number is a constant policy config; a Node must\n\t * be graph-bound and becomes a declared dep of `reactiveMap.apply`.\n\t */\n\tmaxSize?: ReactiveMapOpt<number>;\n\t/**\n\t * Default TTL in milliseconds as a node-as-opt policy (D68). Per-call `set(...,{ttl})` overrides.\n\t * Lazy expiry only; no active timer in this cut.\n\t */\n\tdefaultTtl?: ReactiveMapOpt<number>;\n\t/**\n\t * Score-based retention/archive policy (D72). The scorer is static local code; only maxSize can be\n\t * a Node-valued policy, keeping graph describe data serializable while apply owns the mutation.\n\t */\n\tretention?: ReactiveMapRetentionPolicy<K, V>;\n\t/** Static D80 memo policy for D121 light views. Eviction does not dispose returned views. */\n\tviewCache?: ViewCachePolicy;\n\t/** Injectable monotonic-ish clock for TTL (default `Date.now`). Graph-local clock = follow-up (D26). */\n\tnow?: () => number;\n}\n\nexport interface ReactiveMap<K, V> {\n\treadonly delta: Node<MapChange<K, V>>;\n\treadonly snapshot: Node<ReadonlyMap<K, V>>;\n\treadonly pullId: symbol;\n\t/** Raw entry count (O(1)); may include not-yet-pruned expired entries. Sync non-reactive read. */\n\treadonly size: number;\n\t/** Get a live value (prunes the key if expired). Sync read. */\n\tget(key: K): V | undefined;\n\t/** Live-key existence (prunes if expired). Sync read. */\n\thas(key: K): boolean;\n\t/** Current live (non-expired) entries (fresh copy). Sync non-reactive read (cold-start peek). */\n\ttoMap(): ReadonlyMap<K, V>;\n\t/**\n\t * D121 light selected-map view. `delta` forwards parent map mutations, and `snapshot` is a pull\n\t * node that materializes the currently matching live entries on demand.\n\t */\n\tselect(\n\t\tpredicate: (value: V, key: K) => boolean,\n\t): ReactiveView<MapChange<K, V>, ReadonlyMap<K, V>>;\n\tset(key: K, value: V, opts?: { ttl?: number }): void;\n\t/** Bulk set; one delta event per entry, one snapshot-arm. No-op if empty. */\n\tsetMany(entries: Iterable<readonly [K, V]>, opts?: { ttl?: number }): void;\n\tdelete(key: K): void;\n\t/** Bulk delete; one delta per removed key. No-op if none present. */\n\tdeleteMany(keys: Iterable<K>): void;\n\tclear(): void;\n\t/** Explicitly prune expired entries; every removed key emits `delete{reason:\"expired\"}` (D61). */\n\tpruneExpired(): void;\n\t/** D54 widening: every `[key, value]` from `src` is set. Returns a disposer. */\n\tsetFrom(src: Node<readonly [K, V]>): () => void;\n\tdispose(): void;\n}\n\ninterface Entry<V> {\n\tvalue: V;\n\texpiresAt?: number;\n}\n\nfunction strictJsonIdentity(value: unknown): string {\n\treturn Array.from(strictCanonicalJsonBytes(value)).join(\",\");\n}\n\ntype Lookup<V> =\n\t| { found: true; value: V }\n\t| { found: false; expired?: false }\n\t| { found: false; expired: true; previous: V };\n\ninterface SnapshotPrep<K, V> {\n\treadonly snapshot: ReadonlyMap<K, V>;\n\treadonly expired: readonly MapChange<K, V>[];\n}\n\ntype MapIntent<K, V> =\n\t| { kind: \"set\"; key: K; value: V; ttl?: number }\n\t| { kind: \"delete\"; key: K }\n\t| { kind: \"clear\" }\n\t| { kind: \"pruneExpired\" }\n\t| { kind: \"pruneKey\"; key: K };\n\n/** Default `Map`-backed store. TTL/LRU policy lives in graph-visible policy/apply nodes (D68). */\nclass MapBackend<K, V> {\n\tprivate _version = 0;\n\tprivate readonly store = new Map<K, Entry<V>>();\n\tprivate readonly now: () => number;\n\n\tconstructor(opts: { now?: () => number }) {\n\t\tthis.now = opts.now ?? Date.now;\n\t}\n\n\tget version(): number {\n\t\treturn this._version;\n\t}\n\n\tget size(): number {\n\t\treturn this.store.size;\n\t}\n\n\tnowMs(): number {\n\t\treturn this.now();\n\t}\n\n\texpiresAtOf(key: K): number | undefined {\n\t\treturn this.store.get(key)?.expiresAt;\n\t}\n\n\tprivate isExpired(e: Entry<V>): boolean {\n\t\treturn e.expiresAt !== undefined && this.now() >= e.expiresAt;\n\t}\n\n\tresolveExpiresAt(ttl?: number): number | undefined {\n\t\tif (ttl === undefined) return undefined;\n\t\tif (!Number.isFinite(ttl) || ttl <= 0)\n\t\t\tthrow new RangeError(`reactiveMap: ttl must be a positive finite number (got ${ttl})`);\n\t\treturn this.now() + ttl;\n\t}\n\n\tprivate deleteExpired(key: K, e: Entry<V>): Array<[K, V]> {\n\t\tthis.store.delete(key);\n\t\tthis._version += 1;\n\t\treturn [[key, e.value]];\n\t}\n\n\t/** Read without materializing expiry. Caller routes expired deletes through the apply node (D68). */\n\tlookup(key: K): Lookup<V> {\n\t\tconst e = this.store.get(key);\n\t\tif (e === undefined) return { found: false };\n\t\tif (this.isExpired(e)) return { found: false, expired: true, previous: e.value };\n\t\t// LRU touch (no version bump — internal, D60 #3d).\n\t\tthis.store.delete(key);\n\t\tthis.store.set(key, e);\n\t\treturn { found: true, value: e.value };\n\t}\n\n\t/** Set; returns the entries evicted by LRU overflow (the caller emits their delete deltas). */\n\tset(key: K, value: V, expiresAt?: number): void {\n\t\tif (this.store.has(key)) this.store.delete(key); // re-insert at LRU end\n\t\tthis.store.set(key, { value, expiresAt });\n\t\tthis._version += 1;\n\t}\n\n\tenforceLru(maxSize?: number): Array<[K, V]> {\n\t\tconst evicted: Array<[K, V]> = [];\n\t\tfor (const oldest of trimHeadOverflow(lruKeys(this.store.keys()).keys(), {\n\t\t\tmaxSize,\n\t\t\tsize: this.store.size,\n\t\t})) {\n\t\t\tconst e = this.store.get(oldest);\n\t\t\tif (e !== undefined) evicted.push([oldest, e.value]);\n\t\t\tthis.store.delete(oldest);\n\t\t}\n\t\tif (evicted.length > 0) this._version += 1;\n\t\treturn evicted;\n\t}\n\n\tenforceRetention(policy?: ResolvedRetentionPolicy<K, V>): Array<[K, V]> {\n\t\tif (policy === undefined || policy.maxSize === undefined) return [];\n\t\tconst scored: ScoredEntry<readonly [K, V]>[] = [];\n\t\tfor (const [key, entry] of this.store) {\n\t\t\tif (!this.isExpired(entry)) {\n\t\t\t\tscored.push({\n\t\t\t\t\tentry: [key, entry.value] as const,\n\t\t\t\t\tscore: policy.score({ key, value: entry.value }),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst archived = selectRetentionVictims(scored, { maxSize: policy.maxSize });\n\t\tfor (const [key] of archived) this.store.delete(key);\n\t\tif (archived.length > 0) this._version += 1;\n\t\treturn archived.map(([key, value]) => [key, value]);\n\t}\n\n\tdelete(key: K): Lookup<V> {\n\t\tconst e = this.store.get(key);\n\t\tif (e === undefined) return { found: false };\n\t\tthis.store.delete(key);\n\t\tthis._version += 1;\n\t\treturn { found: true, value: e.value };\n\t}\n\n\tclear(): number {\n\t\tconst n = this.store.size;\n\t\tif (n === 0) return 0;\n\t\tthis.store.clear();\n\t\tthis._version += 1;\n\t\treturn n;\n\t}\n\n\tpruneExpired(): Array<[K, V]> {\n\t\tconst removed: Array<[K, V]> = [];\n\t\tfor (const [k, e] of this.store) {\n\t\t\tif (this.isExpired(e)) {\n\t\t\t\tthis.store.delete(k);\n\t\t\t\tremoved.push([k, e.value]);\n\t\t\t}\n\t\t}\n\t\tif (removed.length > 0) this._version += 1;\n\t\treturn removed;\n\t}\n\n\tpruneKeyIfExpired(key: K): Array<[K, V]> {\n\t\tconst e = this.store.get(key);\n\t\tif (e === undefined || !this.isExpired(e)) return [];\n\t\treturn this.deleteExpired(key, e);\n\t}\n\n\t/** Fresh snapshot of live entries. Does not prune; callers choose whether to materialize expiry. */\n\tsnapshot(): ReadonlyMap<K, V> {\n\t\tconst out = new Map<K, V>();\n\t\tfor (const [k, e] of this.store) if (!this.isExpired(e)) out.set(k, e.value);\n\t\treturn out;\n\t}\n\n\t/** D160 checkpoint payload: exact restorable map entries, excluding TTL-bearing state. */\n\tcheckpointEntries(): readonly (readonly [K, V])[] {\n\t\tconst out: Array<readonly [K, V]> = [];\n\t\tconst seen = new Set<string>();\n\t\tfor (const [key, entry] of this.store) {\n\t\t\tif (entry.expiresAt !== undefined) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"reactiveMap checkpoint backendState cannot preserve per-entry TTL; persist the map externally or clear TTL state before graph checkpoint (D160)\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst stableKey = strictJsonIdentity(key);\n\t\t\tif (seen.has(stableKey)) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"reactiveMap checkpoint backendState contains duplicate strict-JSON keys (D160)\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tseen.add(stableKey);\n\t\t\tout.push([key, entry.value] as const);\n\t\t}\n\t\treturn out;\n\t}\n}\n\n/**\n * Create a reactive map (D54/D60). DELTA stream of {@link MapChange} + lazy pull SNAPSHOT (a\n * `ReadonlyMap`) + pullId via {@link collectionCore}; this layer adds the typed map surface.\n */\nexport function reactiveMap<K, V>(options: ReactiveMapOptions<K, V> = {}): ReactiveMap<K, V> {\n\treturn createReactiveMap(options);\n}\n\n/** @internal D161 restore path: seed the backend without replaying public deltas. */\nexport function restoreReactiveMapFromBackendState<K, V>(\n\tinitialEntries: readonly (readonly [K, V])[],\n\toptions: ReactiveMapOptions<K, V> = {},\n): ReactiveMap<K, V> {\n\treturn createReactiveMap(options, initialEntries);\n}\n\nfunction createReactiveMap<K, V>(\n\toptions: ReactiveMapOptions<K, V> = {},\n\tinitialEntries: readonly (readonly [K, V])[] = [],\n): ReactiveMap<K, V> {\n\tconst { maxSize, defaultTtl, retention, viewCache, now, name, dispatcher, graph } = options;\n\tconst backend = new MapBackend<K, V>({ now });\n\tfor (const [key, value] of initialEntries) backend.set(key, value);\n\tconst base = dispatcher ? { dispatcher } : {};\n\tconst restorable =\n\t\tgraph !== undefined &&\n\t\tname !== undefined &&\n\t\tmaxSize === undefined &&\n\t\tdefaultTtl === undefined &&\n\t\tretention === undefined;\n\n\tfunction isNodeOpt<T>(x: PolicyOpt<T> | undefined): x is Node<T> {\n\t\treturn x instanceof Node;\n\t}\n\n\tfunction validateMaxSize(v: number): number {\n\t\tif (!Number.isFinite(v) || !Number.isInteger(v) || v < 1)\n\t\t\tthrow new RangeError(`reactiveMap: maxSize must be a positive integer (got ${v})`);\n\t\treturn v;\n\t}\n\n\tfunction validateTtl(v: number): number {\n\t\tif (!Number.isFinite(v) || v <= 0)\n\t\t\tthrow new RangeError(`reactiveMap: defaultTtl must be a positive finite number (got ${v})`);\n\t\treturn v;\n\t}\n\n\tfunction validateRetentionMaxSize(v: number): number {\n\t\tif (!Number.isFinite(v) || !Number.isInteger(v) || v < 0)\n\t\t\tthrow new RangeError(\n\t\t\t\t`reactiveMap: retention.maxSize must be a non-negative integer (got ${v})`,\n\t\t\t);\n\t\treturn v;\n\t}\n\n\tif (retention !== undefined && typeof retention.score !== \"function\")\n\t\tthrow new TypeError(\"reactiveMap: retention.score must be a function\");\n\n\ttype PolicyLabel = \"lruPolicy\" | \"ttlPolicy\" | \"retentionPolicy\";\n\n\tfunction constPolicyNode(label: PolicyLabel, value: number): Node<number> {\n\t\tconst op: Operator<never, number> = {\n\t\t\tfactory: `reactiveMap.${label}`,\n\t\t\tbody: () => {},\n\t\t\topts: { initial: value },\n\t\t};\n\t\tif (graph) {\n\t\t\treturn graph.initNode(op, [], {\n\t\t\t\tname: name ? `${name}.${label}` : undefined,\n\t\t\t\tmeta: { kind: \"collection_policy\", collection: \"reactiveMap\", policy: label },\n\t\t\t});\n\t\t}\n\t\treturn new Node<number>([], null, {\n\t\t\t...base,\n\t\t\tinitial: value,\n\t\t\tfactory: `reactiveMap.${label}`,\n\t\t\tname: name ? `${name}.${label}` : undefined,\n\t\t});\n\t}\n\n\tfunction policyNode(\n\t\tlabel: PolicyLabel,\n\t\topt: PolicyOpt<number> | undefined,\n\t\tvalidate: (v: number) => number,\n\t): Node<number> | undefined {\n\t\tif (opt === undefined) return undefined;\n\t\tif (isNodeOpt(opt)) {\n\t\t\tif (graph === undefined)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`reactiveMap ${label} Node option requires options.graph so the policy edge is describe-visible (${label === \"retentionPolicy\" ? \"D72\" : \"D68\"})`,\n\t\t\t\t);\n\t\t\treturn opt;\n\t\t}\n\t\treturn constPolicyNode(label, validate(opt));\n\t}\n\n\tconst intentOp: Operator<never, MapIntent<K, V>> = {\n\t\tfactory: \"reactiveMap.intent\",\n\t\tbody: () => {},\n\t};\n\tconst intent = graph\n\t\t? graph.initNode(intentOp, [], {\n\t\t\t\tname: name ? `${name}.intent` : undefined,\n\t\t\t\tmeta: { kind: \"collection_intent\", collection: \"reactiveMap\" },\n\t\t\t\t...(restorable ? { restore: { ref: \"reactiveMap.intent\" } } : {}),\n\t\t\t})\n\t\t: new Node<MapIntent<K, V>>([], null, {\n\t\t\t\t...base,\n\t\t\t\tfactory: \"reactiveMap.intent\",\n\t\t\t\tname: name ? `${name}.intent` : undefined,\n\t\t\t});\n\tconst lruPolicy = policyNode(\"lruPolicy\", maxSize, validateMaxSize);\n\tconst ttlPolicy = policyNode(\"ttlPolicy\", defaultTtl, validateTtl);\n\tconst retentionPolicy = policyNode(\n\t\t\"retentionPolicy\",\n\t\tretention?.maxSize,\n\t\tvalidateRetentionMaxSize,\n\t);\n\n\tlet currentMaxSize = isNodeOpt(maxSize) ? undefined : maxSize;\n\tlet currentDefaultTtl = isNodeOpt(defaultTtl) ? undefined : defaultTtl;\n\tlet currentRetentionMaxSize = isNodeOpt(retention?.maxSize)\n\t\t? undefined\n\t\t: retention?.maxSize === undefined\n\t\t\t? undefined\n\t\t\t: validateRetentionMaxSize(retention.maxSize);\n\tconst ttlHeap = deadlines<K>();\n\tlet ttlTimer: Node<unknown> | null = null;\n\tlet ttlTimerDue: number | undefined;\n\tconst bindDeps = new WeakSet<Node<unknown>>();\n\tlet bindSeq = 0;\n\tlet apply: Node<MapChange<K, V>>;\n\tconst selectMemo = new ViewMemoCache<\n\t\t(value: V, key: K) => boolean,\n\t\tReactiveView<MapChange<K, V>, ReadonlyMap<K, V>>\n\t>(viewCache);\n\tlet selectSeq = 0;\n\n\tconst policyInputs = new PolicyInputs([intent as Node<unknown>]);\n\tconst lruReader = policyInputs.add(lruPolicy);\n\tconst ttlReader = policyInputs.add(ttlPolicy);\n\tconst retentionReader = policyInputs.add(retentionPolicy);\n\n\tfunction emitExpired(ctx: Ctx, entries: Array<[K, V]>): void {\n\t\tfor (const [key, previous] of entries)\n\t\t\tctx.down([[\"DATA\", { kind: \"delete\", key, previous, reason: \"expired\" }]]);\n\t}\n\n\tfunction emitLruEvicted(ctx: Ctx, entries: Array<[K, V]>): void {\n\t\tfor (const [key, previous] of entries)\n\t\t\tctx.down([[\"DATA\", { kind: \"delete\", key, previous, reason: \"lru-evict\" }]]);\n\t}\n\n\tfunction emitArchived(ctx: Ctx, entries: Array<[K, V]>): void {\n\t\tfor (const [key, previous] of entries)\n\t\t\tctx.down([[\"DATA\", { kind: \"delete\", key, previous, reason: \"archived\" }]]);\n\t}\n\n\tfunction nextValidExpiry(): { readonly key: K; readonly expiresAt: number } | undefined {\n\t\tfor (;;) {\n\t\t\tconst top = ttlHeap.peek();\n\t\t\tif (top === undefined) return undefined;\n\t\t\tif (backend.expiresAtOf(top.key) === top.expiresAt) return top;\n\t\t\tttlHeap.pop();\n\t\t}\n\t}\n\n\tfunction scheduleTtl(ctx: Ctx, body: NodeFn): void {\n\t\tfor (;;) {\n\t\t\tconst next = nextValidExpiry();\n\t\t\tif (next === undefined) {\n\t\t\t\tif (ttlTimer) ctx.rewireNext.unsubscribeDep(ttlTimer, body);\n\t\t\t\tttlTimer = null;\n\t\t\t\tttlTimerDue = undefined;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (next.expiresAt <= backend.nowMs()) {\n\t\t\t\temitExpired(ctx, backend.pruneExpired());\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ttlTimerDue === next.expiresAt) return;\n\t\t\tif (ttlTimer) ctx.rewireNext.unsubscribeDep(ttlTimer, body);\n\t\t\tttlTimerDue = next.expiresAt;\n\t\t\tttlTimer = initNode(timer(Math.max(0, next.expiresAt - backend.nowMs())), [], base);\n\t\t\tctx.rewireNext.subscribeDep(ttlTimer, body);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tfunction applyIntent(ctx: Ctx, intentValue: MapIntent<K, V>): void {\n\t\tif (intentValue.kind === \"set\") {\n\t\t\tconst ttl = intentValue.ttl ?? currentDefaultTtl;\n\t\t\tconst expiresAt = backend.resolveExpiresAt(ttl);\n\t\t\tbackend.set(intentValue.key, intentValue.value, expiresAt);\n\t\t\tif (expiresAt !== undefined) ttlHeap.push({ key: intentValue.key, expiresAt });\n\t\t\tctx.down([[\"DATA\", { kind: \"set\", key: intentValue.key, value: intentValue.value }]]);\n\t\t\temitLruEvicted(ctx, backend.enforceLru(currentMaxSize));\n\t\t\temitArchived(\n\t\t\t\tctx,\n\t\t\t\tbackend.enforceRetention(\n\t\t\t\t\tretention ? { maxSize: currentRetentionMaxSize, score: retention.score } : undefined,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tif (intentValue.kind === \"delete\") {\n\t\t\tconst previous = backend.delete(intentValue.key);\n\t\t\tif (previous.found)\n\t\t\t\tctx.down([\n\t\t\t\t\t[\n\t\t\t\t\t\t\"DATA\",\n\t\t\t\t\t\t{ kind: \"delete\", key: intentValue.key, previous: previous.value, reason: \"explicit\" },\n\t\t\t\t\t],\n\t\t\t\t]);\n\t\t\treturn;\n\t\t}\n\t\tif (intentValue.kind === \"clear\") {\n\t\t\tconst count = backend.clear();\n\t\t\tif (count > 0) ctx.down([[\"DATA\", { kind: \"clear\", count }]]);\n\t\t\treturn;\n\t\t}\n\t\tif (intentValue.kind === \"pruneExpired\") {\n\t\t\temitExpired(ctx, backend.pruneExpired());\n\t\t\treturn;\n\t\t}\n\t\temitExpired(ctx, backend.pruneKeyIfExpired(intentValue.key));\n\t}\n\n\tconst applyBody: NodeFn = (ctx: Ctx) => {\n\t\tconst nextMaxSize = lruReader.read(ctx, currentMaxSize);\n\t\tcurrentMaxSize = nextMaxSize === undefined ? undefined : validateMaxSize(nextMaxSize);\n\t\tconst nextTtl = ttlReader.read(ctx, currentDefaultTtl);\n\t\tcurrentDefaultTtl = nextTtl === undefined ? undefined : validateTtl(nextTtl);\n\t\tconst nextRetentionMaxSize = retentionReader.read(ctx, currentRetentionMaxSize);\n\t\tcurrentRetentionMaxSize =\n\t\t\tnextRetentionMaxSize === undefined\n\t\t\t\t? undefined\n\t\t\t\t: validateRetentionMaxSize(nextRetentionMaxSize);\n\n\t\tfor (const item of (depBatch(ctx, 0) ?? []) as readonly MapIntent<K, V>[]) {\n\t\t\tapplyIntent(ctx, item);\n\t\t}\n\t\tconst deps = apply.deps;\n\t\tfor (let i = 1; i < depCount(ctx); i++) {\n\t\t\tif (i === lruReader.index || i === ttlReader.index || i === retentionReader.index) continue;\n\t\t\tconst dep = deps[i];\n\t\t\tif (dep && bindDeps.has(dep)) {\n\t\t\t\tfor (const item of (depBatch(ctx, i) ?? []) as readonly MapIntent<K, V>[]) {\n\t\t\t\t\tapplyIntent(ctx, item);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tdep === ttlTimer &&\n\t\t\t\t((depBatch(ctx, i)?.length ?? 0) > 0 || isTerminalComplete(depTerminal(ctx, i)))\n\t\t\t) {\n\t\t\t\tif (ttlTimer) ctx.rewireNext.unsubscribeDep(ttlTimer, applyBody);\n\t\t\t\tttlTimer = null;\n\t\t\t\tttlTimerDue = undefined;\n\t\t\t\temitExpired(ctx, backend.pruneExpired());\n\t\t\t}\n\t\t}\n\t\t// Lowering a reactive maxSize is itself a policy-driven backend mutation (D68).\n\t\temitLruEvicted(ctx, backend.enforceLru(currentMaxSize));\n\t\temitArchived(\n\t\t\tctx,\n\t\t\tbackend.enforceRetention(\n\t\t\t\tretention ? { maxSize: currentRetentionMaxSize, score: retention.score } : undefined,\n\t\t\t),\n\t\t);\n\t\tscheduleTtl(ctx, applyBody);\n\t};\n\n\tconst applyOp: Operator<unknown, MapChange<K, V>> = {\n\t\tfactory: \"reactiveMap.apply\",\n\t\tbody: applyBody,\n\t\topts: { partial: true },\n\t};\n\tapply = graph\n\t\t? graph.initNode(applyOp, policyInputs.deps as readonly Node<unknown>[], {\n\t\t\t\tname: name ? `${name}.apply` : undefined,\n\t\t\t\tmeta: { kind: \"collection_policy_apply\", collection: \"reactiveMap\" },\n\t\t\t\t...(restorable ? { restore: { ref: \"reactiveMap.apply\" } } : {}),\n\t\t\t})\n\t\t: initNode(applyOp, policyInputs.deps, {\n\t\t\t\t...base,\n\t\t\t\tname: name ? `${name}.apply` : undefined,\n\t\t\t});\n\n\tconst pullId = Symbol(name ? `${name}.snapshot` : \"reactiveMap.snapshot\");\n\tconst snapshotPrepOp: Operator<unknown, SnapshotPrep<K, V>> = {\n\t\tfactory: \"reactiveMap.snapshotPrep\",\n\t\tbody: (ctx: Ctx) => {\n\t\t\tconst expired = backend.pruneExpired().map(\n\t\t\t\t([key, previous]): MapChange<K, V> => ({\n\t\t\t\t\tkind: \"delete\",\n\t\t\t\t\tkey,\n\t\t\t\t\tprevious,\n\t\t\t\t\treason: \"expired\",\n\t\t\t\t}),\n\t\t\t);\n\t\t\tctx.down([[\"DATA\", { snapshot: backend.snapshot(), expired }]]);\n\t\t},\n\t\topts: {\n\t\t\t...base,\n\t\t\tpullId,\n\t\t\tpartial: true,\n\t\t},\n\t};\n\tconst snapshotPrep = graph\n\t\t? graph.initNode(snapshotPrepOp, [apply as Node<unknown>], {\n\t\t\t\tname: name ? `${name}.snapshotPrep` : undefined,\n\t\t\t\tmeta: { kind: \"collection_snapshot_prep\", collection: \"reactiveMap\" },\n\t\t\t\t...(restorable ? { restore: { ref: \"reactiveMap.snapshotPrep\" } } : {}),\n\t\t\t})\n\t\t: initNode(snapshotPrepOp, [apply as Node<unknown>], {\n\t\t\t\t...base,\n\t\t\t\tname: name ? `${name}.snapshotPrep` : undefined,\n\t\t\t});\n\tconst deltaOp: Operator<unknown, MapChange<K, V>> = {\n\t\tfactory: \"reactiveMap.delta\",\n\t\tbody: (ctx: Ctx) => {\n\t\t\tfor (const change of depBatch(ctx, 0) ?? []) {\n\t\t\t\tctx.down([[\"DATA\", change as MapChange<K, V>]]);\n\t\t\t}\n\t\t\tfor (const prep of depBatch(ctx, 1) ?? []) {\n\t\t\t\tfor (const change of (prep as SnapshotPrep<K, V>).expired) ctx.down([[\"DATA\", change]]);\n\t\t\t}\n\t\t},\n\t\topts: { partial: true },\n\t};\n\tconst delta = graph\n\t\t? graph.initNode(deltaOp, [apply as Node<unknown>, snapshotPrep as Node<unknown>], {\n\t\t\t\tname: name ? `${name}.delta` : undefined,\n\t\t\t\tmeta: { kind: \"collection_delta\", collection: \"reactiveMap\" },\n\t\t\t\t...(restorable ? { restore: { ref: \"reactiveMap.delta\" } } : {}),\n\t\t\t})\n\t\t: initNode(deltaOp, [apply as Node<unknown>, snapshotPrep as Node<unknown>], {\n\t\t\t\t...base,\n\t\t\t\tname: name ? `${name}.delta` : undefined,\n\t\t\t});\n\tconst snapshotOp: Operator<unknown, ReadonlyMap<K, V>> = {\n\t\tfactory: \"reactiveMap.snapshot\",\n\t\tbody: (ctx: Ctx) => {\n\t\t\tfor (const prep of depBatch(ctx, 0) ?? []) {\n\t\t\t\tctx.down([[\"DATA\", (prep as SnapshotPrep<K, V>).snapshot]]);\n\t\t\t}\n\t\t},\n\t\topts: { partial: true },\n\t};\n\tconst snapshot = graph\n\t\t? graph.initNode(snapshotOp, [snapshotPrep as Node<unknown>], {\n\t\t\t\tname: name ? `${name}.snapshot` : undefined,\n\t\t\t\tmeta: { kind: \"collection_snapshot\", collection: \"reactiveMap\" },\n\t\t\t\t...(restorable ? { restore: { ref: \"reactiveMap.snapshot\" } } : {}),\n\t\t\t})\n\t\t: initNode(snapshotOp, [snapshotPrep as Node<unknown>], {\n\t\t\t\t...base,\n\t\t\t\tname: name ? `${name}.snapshot` : undefined,\n\t\t\t});\n\tif (restorable) {\n\t\tregisterBackendStateContributor(intent as Node<unknown>, () => backend.checkpointEntries());\n\t}\n\tconst releaseApply = graph\n\t\t? graph.retain(apply, { reason: \"reactiveMap.apply\" })\n\t\t: apply.subscribe(() => {});\n\tconst binds: Array<() => void> = [];\n\n\tfunction doSet(key: K, value: V, ttl?: number): void {\n\t\tif (ttl !== undefined) validateTtl(ttl);\n\t\tintent.down([\n\t\t\t[\"DATA\", ttl === undefined ? { kind: \"set\", key, value } : { kind: \"set\", key, value, ttl }],\n\t\t]);\n\t}\n\n\tfunction read(key: K): Lookup<V> {\n\t\tconst r = backend.lookup(key);\n\t\tif (!r.found && r.expired) intent.down([[\"DATA\", { kind: \"pruneKey\", key }]]);\n\t\treturn r;\n\t}\n\n\tfunction selectedSnapshot(predicate: (value: V, key: K) => boolean): ReadonlyMap<K, V> {\n\t\tconst out = new Map<K, V>();\n\t\tfor (const [key, value] of backend.snapshot()) {\n\t\t\tif (predicate(value, key)) out.set(key, value);\n\t\t}\n\t\treturn out;\n\t}\n\n\tfunction select(\n\t\tpredicate: (value: V, key: K) => boolean,\n\t): ReactiveView<MapChange<K, V>, ReadonlyMap<K, V>> {\n\t\tif (typeof predicate !== \"function\")\n\t\t\tthrow new TypeError(\"reactiveMap.select: predicate must be a function\");\n\t\tconst cached = selectMemo.get(predicate);\n\t\tif (cached !== undefined) return cached;\n\t\tlet view: ReactiveView<MapChange<K, V>, ReadonlyMap<K, V>>;\n\t\tview = lightReactiveView<MapChange<K, V>, ReadonlyMap<K, V>>(delta as Node<unknown>, {\n\t\t\tdispatcher,\n\t\t\tgraph,\n\t\t\tfactory: \"reactiveMap.select\",\n\t\t\tname: name ? `${name}.select#${selectSeq++}` : undefined,\n\t\t\tmaterializeSnapshot: () => selectedSnapshot(predicate),\n\t\t\tonDispose: () => {\n\t\t\t\tselectMemo.deleteValue(view);\n\t\t\t},\n\t\t});\n\t\tselectMemo.set(predicate, view);\n\t\treturn view;\n\t}\n\n\treturn {\n\t\tdelta,\n\t\tsnapshot,\n\t\tpullId,\n\n\t\tget size(): number {\n\t\t\treturn backend.size;\n\t\t},\n\t\tget(key: K): V | undefined {\n\t\t\tconst r = read(key);\n\t\t\treturn r.found ? r.value : undefined;\n\t\t},\n\t\thas(key: K): boolean {\n\t\t\treturn read(key).found;\n\t\t},\n\t\ttoMap(): ReadonlyMap<K, V> {\n\t\t\tintent.down([[\"DATA\", { kind: \"pruneExpired\" }]]);\n\t\t\treturn backend.snapshot();\n\t\t},\n\t\tselect,\n\n\t\tset(key: K, value: V, opts?: { ttl?: number }): void {\n\t\t\tdoSet(key, value, opts?.ttl);\n\t\t},\n\t\tsetMany(entries: Iterable<readonly [K, V]>, opts?: { ttl?: number }): void {\n\t\t\tfor (const [k, v] of entries) doSet(k, v, opts?.ttl);\n\t\t},\n\t\tdelete(key: K): void {\n\t\t\tintent.down([[\"DATA\", { kind: \"delete\", key }]]);\n\t\t},\n\t\tdeleteMany(keys: Iterable<K>): void {\n\t\t\tfor (const k of keys) {\n\t\t\t\tintent.down([[\"DATA\", { kind: \"delete\", key: k }]]);\n\t\t\t}\n\t\t},\n\t\tclear(): void {\n\t\t\tintent.down([[\"DATA\", { kind: \"clear\" }]]);\n\t\t},\n\t\tpruneExpired(): void {\n\t\t\tintent.down([[\"DATA\", { kind: \"pruneExpired\" }]]);\n\t\t},\n\n\t\tsetFrom(src: Node<readonly [K, V]>): () => void {\n\t\t\tif (graph === undefined)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"reactiveMap.setFrom requires options.graph so the input fold is describe-visible (D61)\",\n\t\t\t\t);\n\t\t\tconst op: Operator<readonly [K, V], MapIntent<K, V>> = {\n\t\t\t\tfactory: \"reactiveMap.bindSource\",\n\t\t\t\tbody: (ctx: Ctx) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (const [k, v] of (depBatch(ctx, 0) ?? []) as readonly (readonly [K, V])[]) {\n\t\t\t\t\t\t\tctx.down([[\"DATA\", { kind: \"set\", key: k, value: v }]]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tctx.down([[\"ERROR\", errorPayload(e, \"reactiveMap.bindSource failed\")]]);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t\tconst folder = graph.initNode(op, [src], {\n\t\t\t\tname: name ? `${name}.bind#${bindSeq++}` : undefined,\n\t\t\t\tmeta: { kind: \"collection_bind_source\", collection: \"reactiveMap\" },\n\t\t\t});\n\t\t\tbindDeps.add(folder as Node<unknown>);\n\t\t\tapply.subscribeDep(folder as Node<unknown>, applyBody);\n\t\t\tlet active = true;\n\t\t\tconst dispose = () => {\n\t\t\t\tif (!active) return;\n\t\t\t\tactive = false;\n\t\t\t\tapply.unsubscribeDep(folder as Node<unknown>, applyBody);\n\t\t\t};\n\t\t\tbinds.push(dispose);\n\t\t\treturn dispose;\n\t\t},\n\t\tdispose(): void {\n\t\t\tselectMemo.disposeAll();\n\t\t\tfor (const d of binds) d();\n\t\t\tbinds.length = 0;\n\t\t\treleaseApply();\n\t\t},\n\t};\n}\n","import type {\n\tIndexRow,\n\tReactiveIndex,\n\tReactiveIndexOptions,\n} from \"../graph/data-structures/reactive-index.js\";\nimport { restoreReactiveIndexFromBackendState } from \"../graph/data-structures/reactive-index.js\";\nimport type { ReactiveListOptions } from \"../graph/data-structures/reactive-list.js\";\nimport { type ReactiveList, reactiveList } from \"../graph/data-structures/reactive-list.js\";\nimport type { ReactiveLogOptions } from \"../graph/data-structures/reactive-log.js\";\nimport { type ReactiveLog, reactiveLog } from \"../graph/data-structures/reactive-log.js\";\nimport type { ReactiveMap, ReactiveMapOptions } from \"../graph/data-structures/reactive-map.js\";\nimport { restoreReactiveMapFromBackendState } from \"../graph/data-structures/reactive-map.js\";\nimport type {\n\tReactiveIndexRestoreState,\n\tReactiveListRestoreState,\n\tReactiveLogRestoreState,\n\tReactiveMapRestoreState,\n} from \"../storage/index.js\";\n\nfunction isListRestoreState<T>(\n\tstate: ReactiveListRestoreState<T> | readonly T[],\n): state is ReactiveListRestoreState<T> {\n\treturn !Array.isArray(state);\n}\n\nfunction restoreListValues<T>(state: ReactiveListRestoreState<T> | readonly T[]): readonly T[] {\n\tif (!isListRestoreState(state)) return state;\n\tif (state.kind !== \"reactiveList\") throw new TypeError(\"restore state kind must be reactiveList\");\n\treturn state.state;\n}\n\nfunction isLogRestoreState<T>(\n\tstate: ReactiveLogRestoreState<T> | readonly T[],\n): state is ReactiveLogRestoreState<T> {\n\treturn !Array.isArray(state);\n}\n\nfunction restoreLogValues<T>(state: ReactiveLogRestoreState<T> | readonly T[]): readonly T[] {\n\tif (!isLogRestoreState(state)) return state;\n\tif (state.kind !== \"reactiveLog\") throw new TypeError(\"restore state kind must be reactiveLog\");\n\treturn state.state;\n}\n\nfunction isMapRestoreState<K, V>(\n\tstate: ReactiveMapRestoreState<K, V> | readonly (readonly [K, V])[],\n): state is ReactiveMapRestoreState<K, V> {\n\treturn !Array.isArray(state);\n}\n\nfunction restoreMapEntries<K, V>(\n\tstate: ReactiveMapRestoreState<K, V> | readonly (readonly [K, V])[],\n): readonly (readonly [K, V])[] {\n\tif (!isMapRestoreState(state)) return state;\n\tif (state.kind !== \"reactiveMap\") throw new TypeError(\"restore state kind must be reactiveMap\");\n\treturn state.state;\n}\n\nfunction isIndexRestoreState<K, V>(\n\tstate: ReactiveIndexRestoreState<K, V> | readonly IndexRow<K, V>[],\n): state is ReactiveIndexRestoreState<K, V> {\n\treturn !Array.isArray(state);\n}\n\nfunction restoreIndexRows<K, V>(\n\tstate: ReactiveIndexRestoreState<K, V> | readonly IndexRow<K, V>[],\n): readonly IndexRow<K, V>[] {\n\tif (!isIndexRestoreState(state)) return state;\n\tif (state.kind !== \"reactiveIndex\") {\n\t\tthrow new TypeError(\"restore state kind must be reactiveIndex\");\n\t}\n\treturn state.state;\n}\n\n/** D161 synchronous collection-owned restore. This helper never reads storage. */\nexport function restoreReactiveList<T = unknown>(\n\tstate: ReactiveListRestoreState<T> | readonly T[],\n\toptions: ReactiveListOptions = {},\n): ReactiveList<T> {\n\tconst values = restoreListValues(state);\n\treturn reactiveList<T>(values, options);\n}\n\n/** D161 synchronous collection-owned restore. This helper never reads storage. */\nexport function restoreReactiveLog<T = unknown>(\n\tstate: ReactiveLogRestoreState<T> | readonly T[],\n\toptions: ReactiveLogOptions = {},\n): ReactiveLog<T> {\n\tconst values = restoreLogValues(state);\n\treturn reactiveLog<T>(values, options);\n}\n\n/** D161 synchronous collection-owned restore for map entries; policy config still comes from options. */\nexport function restoreReactiveMap<K = unknown, V = unknown>(\n\tstate: ReactiveMapRestoreState<K, V> | readonly (readonly [K, V])[],\n\toptions: ReactiveMapOptions<K, V> = {},\n): ReactiveMap<K, V> {\n\tconst entries = restoreMapEntries(state);\n\treturn restoreReactiveMapFromBackendState<K, V>(entries, options);\n}\n\n/** D161 synchronous collection-owned restore for sorted index rows; key-codec I/O stays outside. */\nexport function restoreReactiveIndex<K = unknown, V = unknown>(\n\tstate: ReactiveIndexRestoreState<K, V> | readonly IndexRow<K, V>[],\n\toptions: ReactiveIndexOptions = {},\n): ReactiveIndex<K, V> {\n\tconst rows = restoreIndexRows(state);\n\treturn restoreReactiveIndexFromBackendState<K, V>(rows, options);\n}\n"],"mappings":"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","names":["entry","node","initial"]}