@graphrefly/graphrefly 0.37.0 → 0.38.0

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 (248) hide show
  1. package/dist/{chunk-CZIQ6JCE.js → chunk-2YFDSYEF.js} +1 -1
  2. package/dist/{chunk-YVYSO5CW.js → chunk-4BDQXBXE.js} +1 -1
  3. package/dist/chunk-5BGFS2XH.js +1 -0
  4. package/dist/chunk-6773HURD.js +1 -0
  5. package/dist/{chunk-U3COB5WU.js → chunk-6KZZ6XQE.js} +1 -1
  6. package/dist/{chunk-5CPPC75H.js → chunk-6VFC334U.js} +1 -1
  7. package/dist/{chunk-KUVDFOJH.js → chunk-7KZZLWZ6.js} +1 -1
  8. package/dist/{chunk-Q7EUZ6NN.js → chunk-B5S7KTGP.js} +1 -1
  9. package/dist/chunk-CMTN3KPT.js +80 -0
  10. package/dist/chunk-DQJLC6YY.js +1 -0
  11. package/dist/chunk-DSOVKKTI.js +1 -0
  12. package/dist/chunk-FAYEMS5M.js +1 -0
  13. package/dist/chunk-FWGIZP3W.js +1 -0
  14. package/dist/{chunk-FMI4CWFL.js → chunk-G7JN6LCB.js} +1 -1
  15. package/dist/{chunk-PCD2MU7X.js → chunk-IBGE62GZ.js} +1 -1
  16. package/dist/{chunk-MYFR67PY.js → chunk-K5C67OGE.js} +1 -1
  17. package/dist/chunk-KJEAIIIY.js +43 -0
  18. package/dist/chunk-LV3ACS5J.js +1 -0
  19. package/dist/{chunk-LOQRPP4Y.js → chunk-NBGPXQSP.js} +1 -1
  20. package/dist/chunk-NN3QPJ6U.js +1 -0
  21. package/dist/{chunk-QWVQIL3T.js → chunk-NSAZ6PR6.js} +1 -1
  22. package/dist/{chunk-MC5LZG3U.js → chunk-NV63VQHI.js} +1 -1
  23. package/dist/{chunk-2C4NESZE.js → chunk-O245YLM5.js} +1 -1
  24. package/dist/{chunk-TLS7M7H4.js → chunk-O2BLVQU4.js} +1 -1
  25. package/dist/chunk-PHXZRR6C.js +1 -0
  26. package/dist/{chunk-K6ZFJ473.js → chunk-POCWFIJ7.js} +1 -1
  27. package/dist/{chunk-C5CBVOCB.js → chunk-QEVSIVSF.js} +1 -1
  28. package/dist/chunk-QMC2PLNM.js +7 -0
  29. package/dist/chunk-QOJFR6GS.js +1 -0
  30. package/dist/{chunk-MQZWA3DF.js → chunk-RZ5HKPGI.js} +1 -1
  31. package/dist/{chunk-WSLN4JFO.js → chunk-SFK7MN7S.js} +1 -1
  32. package/dist/{chunk-QP5TH523.js → chunk-SP5O2MIX.js} +1 -1
  33. package/dist/chunk-TB7JKSVS.js +61 -0
  34. package/dist/{chunk-T4U24DXX.js → chunk-TMVY7OWG.js} +1 -1
  35. package/dist/{chunk-UODQF4EY.js → chunk-UAXFKMAG.js} +1 -1
  36. package/dist/{chunk-TFK4P4CX.js → chunk-UVLZX2OU.js} +1 -1
  37. package/dist/chunk-XIMFHEKV.js +1 -0
  38. package/dist/{chunk-XIJKEXWR.js → chunk-XLMYQB6F.js} +1 -1
  39. package/dist/{chunk-4EATTNAE.js → chunk-XLYF4LBH.js} +1 -1
  40. package/dist/compat/index.cjs +9 -9
  41. package/dist/compat/index.d.cts +7 -7
  42. package/dist/compat/index.d.ts +7 -7
  43. package/dist/compat/index.js +1 -1
  44. package/dist/compat/nestjs/index.cjs +11 -11
  45. package/dist/compat/nestjs/index.d.cts +5 -5
  46. package/dist/compat/nestjs/index.d.ts +5 -5
  47. package/dist/compat/nestjs/index.js +1 -1
  48. package/dist/compat/zustand/index.cjs +7 -7
  49. package/dist/compat/zustand/index.d.cts +3 -3
  50. package/dist/compat/zustand/index.d.ts +3 -3
  51. package/dist/compat/zustand/index.js +1 -1
  52. package/dist/{composite-_XckYx2e.d.cts → composite-CgG0MqHm.d.cts} +8 -1
  53. package/dist/{composite-CT_mApQD.d.ts → composite-DTOlDuch.d.ts} +8 -1
  54. package/dist/core/index.cjs +1 -1
  55. package/dist/core/index.d.cts +2 -2
  56. package/dist/core/index.d.ts +2 -2
  57. package/dist/core/index.js +1 -1
  58. package/dist/extra/index.cjs +19 -19
  59. package/dist/extra/index.d.cts +5 -5
  60. package/dist/extra/index.d.ts +5 -5
  61. package/dist/extra/index.js +1 -1
  62. package/dist/extra/node.cjs +2 -2
  63. package/dist/extra/node.d.cts +107 -1
  64. package/dist/extra/node.d.ts +107 -1
  65. package/dist/extra/node.js +2 -2
  66. package/dist/extra/operators.cjs +1 -1
  67. package/dist/extra/operators.js +1 -1
  68. package/dist/extra/reactive.d.cts +1 -1
  69. package/dist/extra/reactive.d.ts +1 -1
  70. package/dist/extra/reactive.js +1 -1
  71. package/dist/extra/sources.cjs +1 -1
  72. package/dist/extra/sources.js +1 -1
  73. package/dist/extra/storage-tiers-browser.d.cts +76 -5
  74. package/dist/extra/storage-tiers-browser.d.ts +76 -5
  75. package/dist/extra/storage-tiers-node.d.cts +137 -13
  76. package/dist/extra/storage-tiers-node.d.ts +137 -13
  77. package/dist/extra/storage-tiers.d.cts +151 -23
  78. package/dist/extra/storage-tiers.d.ts +151 -23
  79. package/dist/graph/index.cjs +7 -7
  80. package/dist/graph/index.d.cts +4 -4
  81. package/dist/graph/index.d.ts +4 -4
  82. package/dist/graph/index.js +1 -1
  83. package/dist/{graph-YQXDndFy.d.ts → graph-BjW1taJl.d.ts} +217 -10
  84. package/dist/{graph-CaNXUc3c.d.cts → graph-CHsVwf9S.d.cts} +217 -10
  85. package/dist/{index-CUTHDZ7Q.d.ts → index-5dNRlW7J.d.ts} +3 -3
  86. package/dist/{index-Bpzw8hx3.d.ts → index-AUqWe_fX.d.ts} +7 -4
  87. package/dist/{index-fHKHdAso.d.ts → index-B-ORMr3k.d.ts} +2 -2
  88. package/dist/{index-DcWbx58m.d.cts → index-B2IUcH13.d.cts} +2 -2
  89. package/dist/{index-DuhOdNyg.d.ts → index-BFaALJxR.d.ts} +2 -2
  90. package/dist/{index-DPqR3wdW.d.ts → index-BI1wMfyc.d.ts} +2 -2
  91. package/dist/{index-D0ZxFXYl.d.ts → index-BUFCHvOR.d.ts} +2 -2
  92. package/dist/{index-CLPQyYY5.d.cts → index-BWUMIt7J.d.cts} +3 -3
  93. package/dist/{index-CkN8CZlT.d.cts → index-BaSy4L6w.d.cts} +37 -17
  94. package/dist/{index-B1IcU--K.d.cts → index-BgzPO43H.d.cts} +2 -2
  95. package/dist/{index-D6tRNEKz.d.cts → index-BhzwpIJc.d.cts} +1 -1
  96. package/dist/{index-4IwO4mH2.d.cts → index-BkQqf1EF.d.cts} +80 -7
  97. package/dist/{index-CajEOoAN.d.ts → index-BmWuVdER.d.ts} +2 -2
  98. package/dist/{index-0qOD-421.d.ts → index-Bn0uZEL4.d.ts} +2 -2
  99. package/dist/{index-DAKm44My.d.cts → index-BpMZzX9P.d.cts} +2 -2
  100. package/dist/{index-CrpjECS6.d.cts → index-Bpr0Pwgl.d.cts} +2 -2
  101. package/dist/{index-BECJ8M0T.d.cts → index-BqcgiSQg.d.cts} +2 -2
  102. package/dist/{index-DfAo9WKr.d.ts → index-BsZk9T8y.d.ts} +1 -1
  103. package/dist/{index-CU3z8Cel.d.cts → index-BsgxnHN8.d.cts} +2 -2
  104. package/dist/index-Bub6x_D4.d.cts +427 -0
  105. package/dist/{index-C-pFD_FV.d.ts → index-BwOsJfLJ.d.ts} +2 -2
  106. package/dist/{index-CRycrNfn.d.ts → index-Byp771zP.d.ts} +1 -1
  107. package/dist/{index-e1m3ZHgc.d.cts → index-C-3UXnHT.d.cts} +1 -1
  108. package/dist/{index-DTYIRT_v.d.cts → index-C56XZiDe.d.cts} +2 -2
  109. package/dist/{index-D11pGlaI.d.cts → index-CAV-3RpJ.d.cts} +2 -2
  110. package/dist/{index-D_DThl_J.d.cts → index-CAbHN_rP.d.cts} +1 -1
  111. package/dist/{index-BhLA9feT.d.ts → index-CEVzBWeB.d.ts} +2 -2
  112. package/dist/{index-Ci358GSC.d.cts → index-CM-i58FY.d.cts} +2 -2
  113. package/dist/{index-B9qJmmv3.d.cts → index-CQsqqEVz.d.cts} +1 -1
  114. package/dist/{index-C0tga1_x.d.ts → index-CijfwEWx.d.ts} +2 -2
  115. package/dist/{index-BwtIbzSV.d.cts → index-Ckil6miL.d.cts} +2 -2
  116. package/dist/{index-BokynmA4.d.cts → index-CpdnP-0y.d.cts} +1 -1
  117. package/dist/{index-BmLkcDlj.d.ts → index-CrlHFsiT.d.ts} +37 -17
  118. package/dist/{index-DCAuN9u5.d.cts → index-Czk3r0yA.d.cts} +37 -3
  119. package/dist/{index-C4N-dg5U.d.cts → index-D-B7U42V.d.cts} +2 -2
  120. package/dist/{index-CKcnuQ2c.d.ts → index-D-HZ7sP4.d.ts} +2 -2
  121. package/dist/{index-D6pwWiOc.d.cts → index-D7-RSD93.d.cts} +2 -2
  122. package/dist/{index-9mbs_PIG.d.ts → index-D9vBTuzo.d.ts} +2 -2
  123. package/dist/{index-C_qi0WlF.d.cts → index-DJNAWzcH.d.cts} +2 -2
  124. package/dist/{index-Ae6L8liv.d.ts → index-DJVQ-t07.d.ts} +2 -2
  125. package/dist/{index-D_d1erkR.d.ts → index-DKrIuF-r.d.ts} +2 -2
  126. package/dist/{index-DXz9uwcs.d.ts → index-DOU1Ee_k.d.ts} +1 -1
  127. package/dist/{index-D1E1tqHT.d.ts → index-DTDVDzhA.d.ts} +37 -3
  128. package/dist/{index-B5UR87KG.d.ts → index-DY2f2b9z.d.ts} +4 -2
  129. package/dist/{index-D8IyqHvT.d.cts → index-DeSsvHDD.d.cts} +4 -2
  130. package/dist/index-Di7OdwlO.d.ts +427 -0
  131. package/dist/{index-CzIWlnPp.d.ts → index-DqICM_I7.d.ts} +80 -7
  132. package/dist/{index-BOfHwQc1.d.ts → index-ML6vHKXK.d.ts} +1 -1
  133. package/dist/{index-DqtXA3yX.d.cts → index-UsU9ptzs.d.cts} +7 -4
  134. package/dist/{index-B46GWgk3.d.ts → index-Vz7KPfgz.d.ts} +1 -1
  135. package/dist/index.cjs +50 -50
  136. package/dist/index.d.cts +32 -32
  137. package/dist/index.d.ts +32 -32
  138. package/dist/index.js +1 -1
  139. package/dist/meta-BYqlATmg.d.ts +98 -0
  140. package/dist/meta-DreaEM_a.d.cts +98 -0
  141. package/dist/patterns/ai/browser.cjs +2 -2
  142. package/dist/patterns/ai/browser.js +1 -1
  143. package/dist/patterns/ai/index.cjs +21 -21
  144. package/dist/patterns/ai/index.d.cts +9 -9
  145. package/dist/patterns/ai/index.d.ts +9 -9
  146. package/dist/patterns/ai/index.js +1 -1
  147. package/dist/patterns/ai/node.js +1 -1
  148. package/dist/patterns/audit/index.cjs +7 -7
  149. package/dist/patterns/audit/index.d.cts +5 -5
  150. package/dist/patterns/audit/index.d.ts +5 -5
  151. package/dist/patterns/audit/index.js +1 -1
  152. package/dist/patterns/cqrs/index.cjs +7 -7
  153. package/dist/patterns/cqrs/index.d.cts +4 -4
  154. package/dist/patterns/cqrs/index.d.ts +4 -4
  155. package/dist/patterns/cqrs/index.js +1 -1
  156. package/dist/patterns/demo-shell/index.cjs +8 -8
  157. package/dist/patterns/demo-shell/index.d.cts +4 -4
  158. package/dist/patterns/demo-shell/index.d.ts +4 -4
  159. package/dist/patterns/demo-shell/index.js +1 -1
  160. package/dist/patterns/domain-templates/index.cjs +7 -7
  161. package/dist/patterns/domain-templates/index.d.cts +3 -3
  162. package/dist/patterns/domain-templates/index.d.ts +3 -3
  163. package/dist/patterns/domain-templates/index.js +1 -1
  164. package/dist/patterns/graphspec/index.cjs +21 -21
  165. package/dist/patterns/graphspec/index.d.cts +3 -3
  166. package/dist/patterns/graphspec/index.d.ts +3 -3
  167. package/dist/patterns/graphspec/index.js +1 -1
  168. package/dist/patterns/guarded-execution/index.cjs +7 -7
  169. package/dist/patterns/guarded-execution/index.d.cts +6 -6
  170. package/dist/patterns/guarded-execution/index.d.ts +6 -6
  171. package/dist/patterns/guarded-execution/index.js +1 -1
  172. package/dist/patterns/harness/index.cjs +12 -12
  173. package/dist/patterns/harness/index.d.cts +8 -8
  174. package/dist/patterns/harness/index.d.ts +8 -8
  175. package/dist/patterns/harness/index.js +1 -1
  176. package/dist/patterns/job-queue/index.cjs +7 -7
  177. package/dist/patterns/job-queue/index.d.cts +4 -4
  178. package/dist/patterns/job-queue/index.d.ts +4 -4
  179. package/dist/patterns/job-queue/index.js +1 -1
  180. package/dist/patterns/lens/index.cjs +7 -7
  181. package/dist/patterns/lens/index.d.cts +4 -4
  182. package/dist/patterns/lens/index.d.ts +4 -4
  183. package/dist/patterns/lens/index.js +1 -1
  184. package/dist/patterns/memory/index.cjs +7 -7
  185. package/dist/patterns/memory/index.d.cts +6 -4
  186. package/dist/patterns/memory/index.d.ts +6 -4
  187. package/dist/patterns/memory/index.js +1 -1
  188. package/dist/patterns/messaging/index.cjs +7 -7
  189. package/dist/patterns/messaging/index.d.cts +4 -4
  190. package/dist/patterns/messaging/index.d.ts +4 -4
  191. package/dist/patterns/messaging/index.js +1 -1
  192. package/dist/patterns/orchestration/index.cjs +7 -7
  193. package/dist/patterns/orchestration/index.d.cts +4 -4
  194. package/dist/patterns/orchestration/index.d.ts +4 -4
  195. package/dist/patterns/orchestration/index.js +1 -1
  196. package/dist/patterns/process/index.d.cts +5 -5
  197. package/dist/patterns/process/index.d.ts +5 -5
  198. package/dist/patterns/process/index.js +1 -1
  199. package/dist/patterns/reactive-layout/index.cjs +8 -8
  200. package/dist/patterns/reactive-layout/index.d.cts +4 -4
  201. package/dist/patterns/reactive-layout/index.d.ts +4 -4
  202. package/dist/patterns/reactive-layout/index.js +1 -1
  203. package/dist/patterns/reduction/index.cjs +7 -7
  204. package/dist/patterns/reduction/index.d.cts +3 -3
  205. package/dist/patterns/reduction/index.d.ts +3 -3
  206. package/dist/patterns/reduction/index.js +1 -1
  207. package/dist/patterns/refine-loop/index.cjs +8 -8
  208. package/dist/patterns/refine-loop/index.d.cts +5 -5
  209. package/dist/patterns/refine-loop/index.d.ts +5 -5
  210. package/dist/patterns/refine-loop/index.js +1 -1
  211. package/dist/patterns/resilient-pipeline/index.cjs +1 -1
  212. package/dist/patterns/resilient-pipeline/index.d.cts +4 -4
  213. package/dist/patterns/resilient-pipeline/index.d.ts +4 -4
  214. package/dist/patterns/resilient-pipeline/index.js +1 -1
  215. package/dist/patterns/surface/index.cjs +14 -14
  216. package/dist/patterns/surface/index.d.cts +4 -4
  217. package/dist/patterns/surface/index.d.ts +4 -4
  218. package/dist/patterns/surface/index.js +1 -1
  219. package/dist/{pipeline-graph-DX2Twdj-.d.ts → pipeline-graph-9JBbmRxA.d.ts} +2 -2
  220. package/dist/{pipeline-graph-BrrYGjuZ.d.cts → pipeline-graph-DuHpXSOn.d.cts} +2 -2
  221. package/dist/{reactive-layout-DrGjuwyC.d.cts → reactive-layout-BMLDB4Vd.d.cts} +1 -1
  222. package/dist/{reactive-layout-BDdngW56.d.ts → reactive-layout-D-tRiNhg.d.ts} +1 -1
  223. package/dist/{reactive-log-jirQsxMY.d.ts → reactive-log-BgWSA1fg.d.ts} +28 -1
  224. package/dist/{reactive-log-ScpWyqny.d.cts → reactive-log-C3IMAGpT.d.cts} +28 -1
  225. package/dist/resilience-LGBK236C.js +1 -0
  226. package/dist/{topology-tree-BI665P0L.d.ts → topology-tree-D47-nI6Z.d.ts} +1 -1
  227. package/dist/{topology-tree-BkhmMg2a.d.cts → topology-tree-jrZue3ao.d.cts} +1 -1
  228. package/package.json +1 -1
  229. package/dist/chunk-533RQFF6.js +0 -1
  230. package/dist/chunk-6SVKZ7VI.js +0 -1
  231. package/dist/chunk-A5HZZYRK.js +0 -1
  232. package/dist/chunk-B4L5X2QO.js +0 -7
  233. package/dist/chunk-FJ6IEMOS.js +0 -1
  234. package/dist/chunk-G6Q3DUMJ.js +0 -1
  235. package/dist/chunk-GDDPCDLG.js +0 -1
  236. package/dist/chunk-GFOT6UBB.js +0 -1
  237. package/dist/chunk-JJTF75VS.js +0 -1
  238. package/dist/chunk-K2WYIVHM.js +0 -1
  239. package/dist/chunk-KTWBUJO5.js +0 -61
  240. package/dist/chunk-M27MVZCP.js +0 -1
  241. package/dist/chunk-NKKUUKPD.js +0 -43
  242. package/dist/chunk-QKBCTKH7.js +0 -1
  243. package/dist/chunk-WGST56ZH.js +0 -80
  244. package/dist/index-BCq12BqB.d.ts +0 -139
  245. package/dist/index-DbWwMWiB.d.cts +0 -139
  246. package/dist/meta-BGO6C7K9.d.cts +0 -41
  247. package/dist/meta-CC6EPdpK.d.ts +0 -41
  248. package/dist/resilience-OBU472D2.js +0 -1
@@ -0,0 +1,427 @@
1
+ import { a as Node } from './node-fSc-hCv8.cjs';
2
+ import { R as ReactiveLogBundle } from './reactive-log-C3IMAGpT.cjs';
3
+ import { G as Graph } from './graph-CHsVwf9S.cjs';
4
+ import { B as BaseAuditRecord } from './imperative-audit-ahAE65a9.cjs';
5
+
6
+ /**
7
+ * Memory patterns (roadmap §4.3) — public-face Phase-4 primitives audited under
8
+ * `archive/docs/SESSION-public-face-blocks-review.md` (Wave A, locked 2026-04-25).
9
+ *
10
+ * Five primitives:
11
+ * - {@link decay} — pure exponential-decay utility.
12
+ * - {@link lightCollection} — Map + LRU eviction + audit log; non-Graph bundle.
13
+ * - {@link collection} / {@link CollectionGraph} — scored memory store with live
14
+ * decay-ranking via reactive timer dep.
15
+ * - {@link vectorIndex} / {@link VectorIndexGraph} — reactive vector store with
16
+ * optional HNSW backend, retention, and reactive {@link VectorIndexGraph.searchNode}.
17
+ * - {@link knowledgeGraph} / {@link KnowledgeGraph} — entities + typed edges with
18
+ * symmetric adjacency indexes and reactive {@link KnowledgeGraph.relatedNode}.
19
+ *
20
+ * **No imperative reads.** Per the API-style policy locked 2026-04-25, public-face
21
+ * primitives expose reactive reads only — `itemNode` / `hasNode` / `searchNode` /
22
+ * `relatedNode`. One-shot snapshots use `node.cache` after `awaitSettled`, or
23
+ * `firstValueFrom(node)`.
24
+ *
25
+ * **Audit logs.** Every imperative mutation (`upsert / remove / clear / link /
26
+ * unlink / rescore / reindex`) is wrapped via {@link lightMutation} and appends a
27
+ * typed record to a public `events` log on the bundle / graph.
28
+ *
29
+ * @module
30
+ */
31
+
32
+ /**
33
+ * Exponential decay with floor: `score = max(minScore, baseScore * exp(-ratePerSecond * ageSeconds))`.
34
+ *
35
+ * Tolerant fallbacks (deliberate for use inside reactive derived fns):
36
+ * - non-finite `baseScore` → `minScore`
37
+ * - non-positive `ageSeconds` (incl. clock skew) → `max(minScore, baseScore)` (no decay)
38
+ * - non-positive `ratePerSecond` → `max(minScore, baseScore)` (no decay; rate=0 disables)
39
+ *
40
+ * Underflow boundary: `Math.exp(-745) === 0`. For very long ages × rates the
41
+ * result clamps to `minScore`; if you need slow decay over years, choose a
42
+ * smaller `ratePerSecond` rather than relying on graceful underflow.
43
+ *
44
+ * Half-life conversion: `ratePerSecond = Math.LN2 / halfLifeSeconds`.
45
+ *
46
+ * @category memory
47
+ */
48
+ declare function decay(baseScore: number, ageSeconds: number, ratePerSecond: number, minScore?: number): number;
49
+ /**
50
+ * Cosine similarity over `(a, b)`. When lengths differ, the shorter is
51
+ * implicitly zero-padded to the longer length. Returns `0` if either vector
52
+ * has zero norm. Public utility — used by {@link VectorIndexGraph.searchNode}
53
+ * and exposed for downstream consumers (e.g. `patterns/ai/memory/`) that need
54
+ * the same scoring at the boundary.
55
+ *
56
+ * **Numeric guards.** Returns `0` for non-finite results (overflow producing
57
+ * `Infinity`/`NaN` from very-large vectors, or `NaN` propagating from any
58
+ * `NaN`/`Infinity` component). Without this guard, downstream sort
59
+ * comparators would order NaN-scored rows arbitrarily.
60
+ *
61
+ * **Depth.** This is a per-call computation; no internal caching. For very
62
+ * large indexes (>10k) consider precomputing norms or using HNSW.
63
+ *
64
+ * @category memory
65
+ */
66
+ declare function cosineSimilarity(a: readonly number[], b: readonly number[]): number;
67
+ /** Public alias for the `Node | value` shape accepted by reactive read factories. */
68
+ type NodeOrValue<T> = T | Node<T>;
69
+ type LightCollectionEntry<T> = {
70
+ readonly id: string;
71
+ readonly value: T;
72
+ readonly createdAtNs: number;
73
+ readonly lastAccessNs: number;
74
+ };
75
+ type LightCollectionOptions = {
76
+ name?: string;
77
+ maxSize?: number;
78
+ };
79
+ interface LightCollectionAuditRecord extends BaseAuditRecord {
80
+ readonly action: "upsert" | "remove" | "clear";
81
+ readonly id?: string;
82
+ }
83
+ type LightCollectionBundle<T> = {
84
+ readonly entries: Node<ReadonlyMap<string, LightCollectionEntry<T>>>;
85
+ readonly events: ReactiveLogBundle<LightCollectionAuditRecord>;
86
+ upsert: (id: string, value: T) => void;
87
+ remove: (id: string) => void;
88
+ clear: () => void;
89
+ itemNode: (id: NodeOrValue<string>) => Node<LightCollectionEntry<T> | undefined>;
90
+ hasNode: (id: NodeOrValue<string>) => Node<boolean>;
91
+ };
92
+ /**
93
+ * Reactive Map of {@link LightCollectionEntry} with native LRU eviction by
94
+ * `maxSize`. Backed by `reactiveMap` so iteration order, snapshot delivery,
95
+ * and copy-on-write semantics match the rest of the data-structure tier.
96
+ *
97
+ * **No-Graph composition.** `bundle.entries` is a detached `state()` — mount
98
+ * manually with `parent.add(bundle.entries)` for `describe()` / `lens.flow`
99
+ * coverage.
100
+ *
101
+ * **`createdAtNs` preservation.** Re-upserting an existing id keeps the
102
+ * original `createdAtNs`; only `lastAccessNs` advances. Eviction is purely
103
+ * LRU-by-`lastAccessNs` (newest wins) via `reactiveMap`'s native `maxSize`.
104
+ *
105
+ * **No imperative reads.** Per the no-imperative-reads policy: subscribe to
106
+ * `entries` for the live snapshot, or use `itemNode(id)` / `hasNode(id)` for
107
+ * single-key reactive reads. For one-shot snapshots use `firstValueFrom` or
108
+ * `node.cache` after `awaitSettled`.
109
+ *
110
+ * **Audit log freeze contract.** Mutations are wrapped via `lightMutation`,
111
+ * which deep-freezes args at entry by default (per the Audit 2 framework).
112
+ * That means the `value` you pass to `upsert(id, value)` is frozen by the
113
+ * time it lands in `LightCollectionEntry.value`. If you store mutable
114
+ * payloads and need them mutable post-upsert, opt out via `lightMutation`'s
115
+ * `freeze: false` (currently internal — not exposed on the bundle; if you
116
+ * hit this, file in `docs/optimizations.md`).
117
+ *
118
+ * **Audit no-op records.** Mutations record an audit entry even when the
119
+ * impl was a no-op (`remove(id)` for a missing id, `clear()` on empty store).
120
+ * The framework records attempts, not state changes — this is intentional
121
+ * (see `_internal/imperative-audit.ts` rationale). Audit consumers that
122
+ * reconstruct state by replaying records can ignore no-op redundant entries
123
+ * without losing correctness.
124
+ *
125
+ * @category memory
126
+ */
127
+ declare function lightCollection<T>(opts?: LightCollectionOptions): LightCollectionBundle<T>;
128
+ type CollectionEntry<T> = LightCollectionEntry<T> & {
129
+ readonly baseScore: number;
130
+ };
131
+ type RankedCollectionEntry<T> = CollectionEntry<T> & {
132
+ readonly score: number;
133
+ };
134
+ type CollectionScoreFn<T> = (value: T) => number;
135
+ type CollectionOptions<T> = {
136
+ maxSize?: number;
137
+ /**
138
+ * Produces a base score at insert/update time. Static fn or a reactive
139
+ * `Node<(value: T) => number>` — when supplied as a Node, `ranked` re-derives
140
+ * whenever the score fn changes, but `baseScore` on each entry is only
141
+ * recomputed via {@link CollectionGraph.rescore}. Default `() => 1`.
142
+ */
143
+ score?: CollectionScoreFn<T> | Node<CollectionScoreFn<T>>;
144
+ /**
145
+ * Exponential decay rate per second. `0` disables decay (default). When
146
+ * positive, `ranked` becomes fully reactive on time via a `fromTimer` source
147
+ * (cadence auto-derived from `decayRate` unless overridden via
148
+ * `refreshIntervalMs`). Half-life: `ratePerSecond = Math.LN2 / halfLifeSeconds`.
149
+ */
150
+ decayRate?: number;
151
+ /** Minimum score floor after decay. Default `0`. */
152
+ minScore?: number;
153
+ /**
154
+ * Override for the `ranked` refresh tick cadence (milliseconds). When
155
+ * unset and `decayRate > 0`, defaults to `1000 * Math.LN2 / (10 * decayRate)`
156
+ * — roughly one tick per 10% of the half-life (~10% staleness budget).
157
+ */
158
+ refreshIntervalMs?: number;
159
+ };
160
+ interface CollectionAuditRecord extends BaseAuditRecord {
161
+ readonly action: "upsert" | "remove" | "clear" | "rescore";
162
+ readonly id?: string;
163
+ }
164
+ type CollectionGraph<T> = Graph & {
165
+ readonly events: ReactiveLogBundle<CollectionAuditRecord>;
166
+ readonly items: Node<ReadonlyMap<string, CollectionEntry<T>>>;
167
+ readonly ranked: Node<readonly RankedCollectionEntry<T>[]>;
168
+ readonly size: Node<number>;
169
+ upsert: (id: string, value: T, opts?: {
170
+ score?: number;
171
+ }) => void;
172
+ remove: (id: string) => void;
173
+ clear: () => void;
174
+ /**
175
+ * Recompute every entry's `baseScore` via the latest score fn. O(N). Useful
176
+ * when a reactive `score` Node has emitted a new fn and the caller wants
177
+ * existing entries re-scored without an explicit re-upsert.
178
+ */
179
+ rescore: () => void;
180
+ itemNode: (id: NodeOrValue<string>) => Node<CollectionEntry<T> | undefined>;
181
+ };
182
+ /**
183
+ * Scored memory store with live decay-aware ranking.
184
+ *
185
+ * Topology (mounted on the returned graph):
186
+ * - `items` — `reactiveMap<id, CollectionEntry<T>>` (with `retention` configured
187
+ * for score-based eviction when `maxSize` is set).
188
+ * - `ranked` — `Node<readonly RankedCollectionEntry<T>[]>`, sorted by live
189
+ * decayed score. **Lazy** — does NOT compute until subscribed (no internal
190
+ * keepalive). Use `keepalive(coll.ranked)` for eager activation.
191
+ * - `size` — `Node<number>`, count of entries.
192
+ * - `_refreshTick` — `fromTimer`-driven `monotonicNs()` source, mounted only
193
+ * when `decayRate > 0`. Drives `ranked`'s time-dependent re-derivation.
194
+ * - `_seq` — sequence cursor for the audit log.
195
+ * - `events` — bounded reactive log of every mutation.
196
+ *
197
+ * **Time as a reactive dep.** When `decayRate > 0`, `ranked`'s deps are
198
+ * `[items, refreshTick]` — the tick payload IS `monotonicNs()`, so the fn is
199
+ * pure of deps and dry-run-reproducible with a mocked clock.
200
+ *
201
+ * **Lazy timer.** With no subscriber to `ranked`, the timer source does not
202
+ * fire — the activation chain is downstream-driven. To keep the timer warm
203
+ * without consuming results, register `graph.addDisposer(keepalive(coll.ranked))`.
204
+ *
205
+ * **Eviction at write-time.** Score-based retention runs on every successful
206
+ * `upsert / remove / clear` (it is mutation-driven, not tick-driven). The
207
+ * retention scorer reads `monotonicNs()` to compute decayed scores at eviction
208
+ * time — this is a deliberate impurity vs. `ReactiveMapRetention.score`'s
209
+ * "pure of `(key, value)`" docstring: write-time is the right moment to evict
210
+ * stale-by-decay entries.
211
+ *
212
+ * **No imperative reads.** Subscribe to `items` / `ranked` for live snapshots,
213
+ * or use `itemNode(id)` for single-key reactive reads.
214
+ *
215
+ * **`rescore` ordering caveat.** `rescore()` reads `items.entries.cache`
216
+ * (the post-emission snapshot) and writes via `setMany`. When called
217
+ * stand-alone it sees the latest committed state. When wrapped inside a
218
+ * user-level `batch(() => { coll.upsert(...); coll.rescore(); })`, the
219
+ * `cache` snapshot reflects state BEFORE the batch — so a just-staged
220
+ * upsert is invisible to the rescore scan. If you need rescore to include
221
+ * the staged upsert, either call `rescore()` after the batch settles or
222
+ * pass the new `baseScore` directly via `upsert(id, value, { score })`.
223
+ *
224
+ * **Audit no-op records.** Like `lightCollection`, mutations record audit
225
+ * entries even when the impl was a no-op (e.g., `rescore()` on an empty
226
+ * store). Intentional — the framework records attempts.
227
+ *
228
+ * @category memory
229
+ */
230
+ declare function collection<T>(name: string, opts?: CollectionOptions<T>): CollectionGraph<T>;
231
+ type VectorBackend = "flat" | "hnsw";
232
+ type VectorRecord<TMeta> = {
233
+ readonly id: string;
234
+ readonly vector: readonly number[];
235
+ readonly meta?: TMeta;
236
+ /** Wall-clock-monotonic timestamp at last upsert; used for the default LRU retention. */
237
+ readonly upsertedAtNs: number;
238
+ };
239
+ type VectorSearchResult<TMeta> = {
240
+ readonly id: string;
241
+ readonly score: number;
242
+ readonly meta?: TMeta;
243
+ };
244
+ type HnswAdapter<TMeta> = {
245
+ upsert: (id: string, vector: readonly number[], meta?: TMeta) => void;
246
+ remove: (id: string) => void;
247
+ clear: () => void;
248
+ search: (query: readonly number[], k: number) => ReadonlyArray<VectorSearchResult<TMeta>>;
249
+ /** Optional adapter teardown. Called from `graph.destroy()` via `addDisposer`. */
250
+ dispose?: () => void;
251
+ };
252
+ type VectorIndexOptions<TMeta> = {
253
+ name?: string;
254
+ backend?: VectorBackend;
255
+ dimension?: number;
256
+ /**
257
+ * Strict-dimension default. When `true` (default) AND `dimension` is unset,
258
+ * mixed-length upserts throw `RangeError`. Set `false` to opt into the
259
+ * lenient zero-padding behavior of {@link VectorIndexGraph.searchNode}.
260
+ */
261
+ strictDimension?: boolean;
262
+ /** Optional dependency seam for HNSW. */
263
+ hnswFactory?: () => HnswAdapter<TMeta>;
264
+ /** Maximum live entries (LRU-by-upsert-time when set; user-overridable via `retentionScore`). */
265
+ maxSize?: number;
266
+ /** Custom retention scorer. Higher score = kept. Defaults to `r => r.upsertedAtNs`. */
267
+ retentionScore?: (record: VectorRecord<TMeta>) => number;
268
+ };
269
+ interface VectorIndexAuditRecord extends BaseAuditRecord {
270
+ readonly action: "upsert" | "remove" | "clear" | "reindex" | "evict";
271
+ readonly id?: string;
272
+ }
273
+ type VectorIndexGraph<TMeta> = Graph & {
274
+ readonly backend: VectorBackend;
275
+ readonly events: ReactiveLogBundle<VectorIndexAuditRecord>;
276
+ readonly entries: Node<ReadonlyMap<string, VectorRecord<TMeta>>>;
277
+ upsert: (id: string, vector: readonly number[], meta?: TMeta) => void;
278
+ remove: (id: string) => void;
279
+ clear: () => void;
280
+ /** Re-push every live entry into the optional HNSW adapter. No-op for `flat`. */
281
+ reindex: () => void;
282
+ /**
283
+ * Reactive top-K search. Re-derives whenever entries / query / k change.
284
+ * Lazy. Use `firstValueFrom(searchNode(...))` for one-shot reads.
285
+ */
286
+ searchNode: (query: Node<readonly number[]>, k?: NodeOrValue<number>) => Node<readonly VectorSearchResult<TMeta>[]>;
287
+ };
288
+ /**
289
+ * Reactive vector store with optional HNSW backend.
290
+ *
291
+ * **Storage on `reactiveMap`.** `entries` is a `reactiveMap<id, VectorRecord<TMeta>>`
292
+ * with optional score-based retention (`maxSize` + LRU-by-`upsertedAtNs` by
293
+ * default; user can supply a custom `retentionScore`). On retention eviction,
294
+ * the HNSW adapter (if configured) is also notified via `adapter.remove(id)`.
295
+ *
296
+ * **Reactive search.** `searchNode(queryNode, k)` returns a `Node<readonly
297
+ * VectorSearchResult<TMeta>[]>` that re-derives on entries / query / k change.
298
+ * Lazy — only computes when subscribed. Imperative `search()` is intentionally
299
+ * not exposed (no-imperative-reads policy). Use `firstValueFrom(searchNode(...))`
300
+ * for one-shot reads.
301
+ *
302
+ * **Strict dimension.** Default `strictDimension: true` — if `dimension` is
303
+ * unset and an upsert produces a vector of a different length than the first
304
+ * upserted, throws `RangeError`. Pass `strictDimension: false` to opt into
305
+ * the lenient zero-padding fallback (the previous default).
306
+ *
307
+ * **Adapter lifecycle.** When the HNSW adapter exposes a `dispose()` method,
308
+ * it is bound to the graph's teardown via `addDisposer`. When retention
309
+ * evicts an entry, `adapter.remove(id)` is invoked synchronously inside the
310
+ * retention `onArchive` callback.
311
+ *
312
+ * **Cosine zero-pad.** The flat backend uses cosine similarity over the
313
+ * pairwise max-length zero-pad. Mixing dimensions silently degrades scores
314
+ * unless strict mode catches it at upsert time. For embedding-model vectors,
315
+ * L2-normalize at the source — `vectorIndex` does not normalize.
316
+ *
317
+ * @category memory
318
+ */
319
+ declare function vectorIndex<TMeta>(opts?: VectorIndexOptions<TMeta>): VectorIndexGraph<TMeta>;
320
+ type KnowledgeEdge<TRelation extends string = string> = {
321
+ readonly from: string;
322
+ readonly to: string;
323
+ readonly relation: TRelation;
324
+ readonly weight: number;
325
+ };
326
+ type KnowledgeGraphOptions = {
327
+ /** Cap on entity count (LRU-by-upsert-time when set). */
328
+ entitiesMaxSize?: number;
329
+ /** Cap on edge count (LRU-by-upsert-time when set). */
330
+ edgesMaxSize?: number;
331
+ /**
332
+ * Orphan-entity garbage collection. `"keep"` (default) leaves entities
333
+ * untouched when their last edge is unlinked; `"remove"` deletes the
334
+ * entity post-`unlink` if no edges reference it.
335
+ */
336
+ orphanGC?: "keep" | "remove";
337
+ };
338
+ interface KnowledgeGraphAuditRecord extends BaseAuditRecord {
339
+ readonly action: "upsertEntity" | "removeEntity" | "link" | "unlink" | "orphanRemove";
340
+ readonly id?: string;
341
+ readonly from?: string;
342
+ readonly to?: string;
343
+ readonly relation?: string;
344
+ /** Edge weight at the time of the `link`. Omitted for non-edge actions. */
345
+ readonly weight?: number;
346
+ }
347
+ type KnowledgeGraph<TEntity, TRelation extends string = string> = Graph & {
348
+ readonly events: ReactiveLogBundle<KnowledgeGraphAuditRecord>;
349
+ readonly entities: Node<ReadonlyMap<string, TEntity>>;
350
+ readonly edges: Node<ReadonlyMap<string, KnowledgeEdge<TRelation>>>;
351
+ readonly adjacencyOut: Node<ReadonlyMap<string, readonly KnowledgeEdge<TRelation>[]>>;
352
+ readonly adjacencyIn: Node<ReadonlyMap<string, readonly KnowledgeEdge<TRelation>[]>>;
353
+ readonly entityCount: Node<number>;
354
+ readonly edgeCount: Node<number>;
355
+ upsertEntity: (id: string, value: TEntity) => void;
356
+ removeEntity: (id: string) => void;
357
+ link: (from: string, to: string, relation: TRelation, weight?: number) => void;
358
+ unlink: (from: string, to: string, relation?: TRelation) => void;
359
+ relatedNode: (id: NodeOrValue<string>, relation?: NodeOrValue<TRelation>) => Node<readonly KnowledgeEdge<TRelation>[]>;
360
+ };
361
+ /**
362
+ * Reactive knowledge graph: entities + typed edges + symmetric adjacency.
363
+ *
364
+ * Topology (mounted on the returned graph):
365
+ * - `entities` — `reactiveMap<id, TEntity>` (optional `entitiesMaxSize` LRU).
366
+ * - `edges` — `reactiveMap<tripleKey, KnowledgeEdge<TRelation>>` keyed by
367
+ * `${from}${to}${relation}` (optional `edgesMaxSize` LRU).
368
+ * Entity IDs / relations must NOT contain ``.
369
+ * - `adjacencyOut` — `Node<ReadonlyMap<from, readonly edge[]>>`. **Full O(E)
370
+ * rebuild on every `link` / `unlink` mutation.** (Prior JSDoc claim of
371
+ * "O(E) build" referred to a single rebuild — the per-mutation cost is
372
+ * O(E), not O(1) amortized. For very large graphs with frequent edge
373
+ * churn, consider batching via `reactiveMap.setMany`.)
374
+ * - `adjacencyIn` — `Node<ReadonlyMap<to, readonly edge[]>>`. Same O(E) per
375
+ * mutation rebuild characteristic.
376
+ * - `entityCount` / `edgeCount` — observability deriveds.
377
+ * - `events` — bounded reactive audit log.
378
+ *
379
+ * **`link()` semantics.** Calling `link(a, b, rel, w)` twice with different
380
+ * weights replaces the weight on the existing edge (keyed by the triple).
381
+ * `unlink` then `link` re-creates the edge (and bumps `lastUpsertNs` for
382
+ * retention purposes).
383
+ *
384
+ * **Edge weight convention.** Higher weight = stronger relation. Default `1`.
385
+ *
386
+ * **Orphan GC.** `orphanGC: "remove"` deletes an entity from `entities` after
387
+ * an `unlink` that empties its adjacency on both sides. Default `"keep"`.
388
+ *
389
+ * **No imperative reads.** Use `relatedNode(id, relation?)` for reactive reads.
390
+ *
391
+ * @category memory
392
+ */
393
+ declare function knowledgeGraph<TEntity, TRelation extends string = string>(name: string, opts?: KnowledgeGraphOptions): KnowledgeGraph<TEntity, TRelation>;
394
+
395
+ type index_CollectionAuditRecord = CollectionAuditRecord;
396
+ type index_CollectionEntry<T> = CollectionEntry<T>;
397
+ type index_CollectionGraph<T> = CollectionGraph<T>;
398
+ type index_CollectionOptions<T> = CollectionOptions<T>;
399
+ type index_CollectionScoreFn<T> = CollectionScoreFn<T>;
400
+ type index_HnswAdapter<TMeta> = HnswAdapter<TMeta>;
401
+ type index_KnowledgeEdge<TRelation extends string = string> = KnowledgeEdge<TRelation>;
402
+ type index_KnowledgeGraph<TEntity, TRelation extends string = string> = KnowledgeGraph<TEntity, TRelation>;
403
+ type index_KnowledgeGraphAuditRecord = KnowledgeGraphAuditRecord;
404
+ type index_KnowledgeGraphOptions = KnowledgeGraphOptions;
405
+ type index_LightCollectionAuditRecord = LightCollectionAuditRecord;
406
+ type index_LightCollectionBundle<T> = LightCollectionBundle<T>;
407
+ type index_LightCollectionEntry<T> = LightCollectionEntry<T>;
408
+ type index_LightCollectionOptions = LightCollectionOptions;
409
+ type index_NodeOrValue<T> = NodeOrValue<T>;
410
+ type index_RankedCollectionEntry<T> = RankedCollectionEntry<T>;
411
+ type index_VectorBackend = VectorBackend;
412
+ type index_VectorIndexAuditRecord = VectorIndexAuditRecord;
413
+ type index_VectorIndexGraph<TMeta> = VectorIndexGraph<TMeta>;
414
+ type index_VectorIndexOptions<TMeta> = VectorIndexOptions<TMeta>;
415
+ type index_VectorRecord<TMeta> = VectorRecord<TMeta>;
416
+ type index_VectorSearchResult<TMeta> = VectorSearchResult<TMeta>;
417
+ declare const index_collection: typeof collection;
418
+ declare const index_cosineSimilarity: typeof cosineSimilarity;
419
+ declare const index_decay: typeof decay;
420
+ declare const index_knowledgeGraph: typeof knowledgeGraph;
421
+ declare const index_lightCollection: typeof lightCollection;
422
+ declare const index_vectorIndex: typeof vectorIndex;
423
+ declare namespace index {
424
+ export { type index_CollectionAuditRecord as CollectionAuditRecord, type index_CollectionEntry as CollectionEntry, type index_CollectionGraph as CollectionGraph, type index_CollectionOptions as CollectionOptions, type index_CollectionScoreFn as CollectionScoreFn, type index_HnswAdapter as HnswAdapter, type index_KnowledgeEdge as KnowledgeEdge, type index_KnowledgeGraph as KnowledgeGraph, type index_KnowledgeGraphAuditRecord as KnowledgeGraphAuditRecord, type index_KnowledgeGraphOptions as KnowledgeGraphOptions, type index_LightCollectionAuditRecord as LightCollectionAuditRecord, type index_LightCollectionBundle as LightCollectionBundle, type index_LightCollectionEntry as LightCollectionEntry, type index_LightCollectionOptions as LightCollectionOptions, type index_NodeOrValue as NodeOrValue, type index_RankedCollectionEntry as RankedCollectionEntry, type index_VectorBackend as VectorBackend, type index_VectorIndexAuditRecord as VectorIndexAuditRecord, type index_VectorIndexGraph as VectorIndexGraph, type index_VectorIndexOptions as VectorIndexOptions, type index_VectorRecord as VectorRecord, type index_VectorSearchResult as VectorSearchResult, index_collection as collection, index_cosineSimilarity as cosineSimilarity, index_decay as decay, index_knowledgeGraph as knowledgeGraph, index_lightCollection as lightCollection, index_vectorIndex as vectorIndex };
425
+ }
426
+
427
+ export { type CollectionAuditRecord as C, type HnswAdapter as H, type KnowledgeGraph as K, type LightCollectionBundle as L, type NodeOrValue as N, type RankedCollectionEntry as R, type VectorSearchResult as V, type VectorIndexGraph as a, type CollectionEntry as b, type CollectionGraph as c, type CollectionOptions as d, type CollectionScoreFn as e, type KnowledgeEdge as f, type KnowledgeGraphAuditRecord as g, type KnowledgeGraphOptions as h, index as i, type LightCollectionAuditRecord as j, type LightCollectionEntry as k, type LightCollectionOptions as l, type VectorBackend as m, type VectorIndexAuditRecord as n, type VectorIndexOptions as o, type VectorRecord as p, collection as q, cosineSimilarity as r, decay as s, knowledgeGraph as t, lightCollection as u, vectorIndex as v };
@@ -1,6 +1,6 @@
1
- import { M as MeasurementAdapter, P as PreparedSegment, L as LineBreaksResult, C as CharPosition, a as LayoutCursor, I as Interval, b as LayoutLine, c as LayoutNextLineContext, d as LayoutNextLineResult, R as ReactiveLayoutBundle, e as ReactiveLayoutOptions, S as SegmentBreakKind, f as SegmentMeasureStats, g as analyzeAndMeasure, h as carveTextLineSlots, i as computeCharPositions, j as computeLineBreaks, l as layoutNextLine, r as reactiveLayout } from './reactive-layout-BDdngW56.js';
1
+ import { M as MeasurementAdapter, P as PreparedSegment, L as LineBreaksResult, C as CharPosition, a as LayoutCursor, I as Interval, b as LayoutLine, c as LayoutNextLineContext, d as LayoutNextLineResult, R as ReactiveLayoutBundle, e as ReactiveLayoutOptions, S as SegmentBreakKind, f as SegmentMeasureStats, g as analyzeAndMeasure, h as carveTextLineSlots, i as computeCharPositions, j as computeLineBreaks, l as layoutNextLine, r as reactiveLayout } from './reactive-layout-D-tRiNhg.js';
2
2
  import { a as Node } from './node-fSc-hCv8.js';
3
- import { G as Graph } from './graph-YQXDndFy.js';
3
+ import { G as Graph } from './graph-BjW1taJl.js';
4
4
 
5
5
  /**
6
6
  * MeasurementAdapter implementations (roadmap §7.1 — pluggable backends).
@@ -1,5 +1,5 @@
1
1
  import { a as Node } from './node-fSc-hCv8.js';
2
- import { a as GraphOptions, G as Graph } from './graph-YQXDndFy.js';
2
+ import { a as GraphOptions, G as Graph } from './graph-BjW1taJl.js';
3
3
 
4
4
  /**
5
5
  * Domain templates (roadmap §8.2).
@@ -1,5 +1,5 @@
1
1
  import { a as Node } from './node-fSc-hCv8.cjs';
2
- import { a as GraphOptions, G as Graph } from './graph-CaNXUc3c.cjs';
2
+ import { a as GraphOptions, G as Graph } from './graph-CHsVwf9S.cjs';
3
3
 
4
4
  /**
5
5
  * Domain templates (roadmap §8.2).
@@ -1,7 +1,7 @@
1
1
  import { a as Node } from './node-fSc-hCv8.cjs';
2
2
  import { R as ReactiveMapBundle } from './reactive-map-DmgeADH8.cjs';
3
- import { a as GraphOptions, G as Graph, C as CausalChain } from './graph-CaNXUc3c.cjs';
4
- import { w as watchTopologyTree } from './topology-tree-BkhmMg2a.cjs';
3
+ import { a as GraphOptions, G as Graph, C as CausalChain } from './graph-CHsVwf9S.cjs';
4
+ import { w as watchTopologyTree } from './topology-tree-jrZue3ao.cjs';
5
5
 
6
6
  /** Aggregate topology stats emitted by {@link LensGraph.stats}. */
7
7
  interface TopologyStats {
@@ -1,9 +1,9 @@
1
1
  import { T as ToObservableOptions, t as toObservable } from './observable-Cqty11jG.cjs';
2
2
  import { OnModuleInit, OnModuleDestroy, ExecutionContext, CanActivate, DynamicModule } from '@nestjs/common';
3
3
  import { ModuleRef } from '@nestjs/core';
4
- import { G as Graph, b as GraphPersistSnapshot } from './graph-CaNXUc3c.cjs';
4
+ import { G as Graph, b as GraphPersistSnapshot } from './graph-CHsVwf9S.cjs';
5
5
  import { A as Actor } from './node-fSc-hCv8.cjs';
6
- import { c as CqrsOptions, b as CqrsGraph, a as CqrsEvent } from './index-BECJ8M0T.cjs';
6
+ import { c as CqrsOptions, b as CqrsGraph, a as CqrsEvent } from './index-BqcgiSQg.cjs';
7
7
  import { AppendLogStorageTier } from './extra/storage-tiers.cjs';
8
8
 
9
9
  /** Class constructor key for decorator registries and Nest `ModuleRef.get()`. */
@@ -1,4 +1,4 @@
1
- import { G as Graph } from './graph-CaNXUc3c.cjs';
1
+ import { G as Graph } from './graph-CHsVwf9S.cjs';
2
2
 
3
3
  /** Zustand-compatible Store API. */
4
4
  interface StoreApi<T> {
@@ -1,8 +1,8 @@
1
- import { R as ReactiveLogBundle } from './reactive-log-jirQsxMY.js';
1
+ import { R as ReactiveLogBundle } from './reactive-log-BgWSA1fg.js';
2
2
  import { NodeInput } from './extra/sources.js';
3
3
  import { AppendLogStorageTier } from './extra/storage-tiers.js';
4
4
  import { B as BaseAuditRecord } from './imperative-audit-ahAE65a9.js';
5
- import { C as CqrsEventMap, a as CqrsEvent, b as CqrsGraph } from './index-DuhOdNyg.js';
5
+ import { C as CqrsEventMap, a as CqrsEvent, b as CqrsGraph } from './index-BFaALJxR.js';
6
6
 
7
7
  /**
8
8
  * Process Manager pattern (Phase 7 — roadmap §4.6, Audit 3 — locked 2026-04-24).
@@ -1,12 +1,12 @@
1
1
  import { i as index$2 } from './index-D_QQ_dTD.cjs';
2
2
  import { i as index$3 } from './index-B3D_z0Z6.cjs';
3
- import { i as index$4 } from './index-D11pGlaI.cjs';
3
+ import { i as index$4 } from './index-CAV-3RpJ.cjs';
4
4
  import { i as index$5 } from './index-BFuVcqL8.cjs';
5
5
  import { a as Node } from './node-fSc-hCv8.cjs';
6
6
  import { i as index$6 } from './index-9xhIaM-w.cjs';
7
7
  import { i as index$7 } from './index-CpZKtdMw.cjs';
8
8
  import { i as index$8 } from './index-CqSJ25A9.cjs';
9
- import { i as index$9 } from './index-D_DThl_J.cjs';
9
+ import { i as index$9 } from './index-CAbHN_rP.cjs';
10
10
 
11
11
  /**
12
12
  * Options for creating signals.
@@ -1,4 +1,4 @@
1
- import { C as CatchOptions, a as ClassifyResult, D as Decision, b as DecisionAction, G as GateController, c as GateOptions, P as PipelineGraph, S as StepRef, T as TerminalCause, d as decisionKeyOf, p as pipelineGraph } from './pipeline-graph-BrrYGjuZ.cjs';
1
+ import { C as CatchOptions, a as ClassifyResult, D as Decision, b as DecisionAction, G as GateController, c as GateOptions, P as PipelineGraph, S as StepRef, T as TerminalCause, d as decisionKeyOf, p as pipelineGraph } from './pipeline-graph-DuHpXSOn.cjs';
2
2
 
3
3
  /**
4
4
  * Orchestration patterns (roadmap §4.1).
@@ -1,5 +1,5 @@
1
- import { j as CompileSpecOptions, G as GraphSpec, c as GraphSpecCatalog, C as CatalogFnEntry, a as CatalogSourceEntry, b as ConfigFieldSchema, F as FnFactory, d as GraphSpecFeedbackEdge, e as GraphSpecNode, f as GraphSpecTemplate, g as GraphSpecTemplateRef, h as GraphSpecValidation, S as SourceFactory } from './index-D1E1tqHT.js';
2
- import { G as Graph, o as GraphNodeFactory, m as GraphDiffResult } from './graph-YQXDndFy.js';
1
+ import { j as CompileSpecOptions, G as GraphSpec, c as GraphSpecCatalog, C as CatalogFnEntry, a as CatalogSourceEntry, b as ConfigFieldSchema, F as FnFactory, d as GraphSpecFeedbackEdge, e as GraphSpecNode, f as GraphSpecTemplate, g as GraphSpecTemplateRef, h as GraphSpecValidation, S as SourceFactory } from './index-DTDVDzhA.js';
2
+ import { G as Graph, q as GraphNodeFactory, o as GraphDiffResult } from './graph-BjW1taJl.js';
3
3
  import { KvStorageTier } from './extra/storage-tiers.js';
4
4
 
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { G as Graph } from './graph-CaNXUc3c.cjs';
2
- import { M as MeasurementAdapter } from './reactive-layout-DrGjuwyC.cjs';
1
+ import { G as Graph } from './graph-CHsVwf9S.cjs';
2
+ import { M as MeasurementAdapter } from './reactive-layout-BMLDB4Vd.cjs';
3
3
 
4
4
  /**
5
5
  * Three-pane demo shell (roadmap §7.2).
@@ -1,5 +1,5 @@
1
1
  import { a as Node, N as NodeOptions } from './node-fSc-hCv8.cjs';
2
- import { a as GraphOptions, G as Graph } from './graph-CaNXUc3c.cjs';
2
+ import { a as GraphOptions, G as Graph } from './graph-CHsVwf9S.cjs';
3
3
 
4
4
  /**
5
5
  * Reduction primitives (roadmap §8.1).