@graphrefly/graphrefly 0.45.0 → 0.46.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 (714) hide show
  1. package/README.md +1 -2
  2. package/dist/_internal-B23BagFd.d.cts +33 -0
  3. package/dist/_internal-B23BagFd.d.ts +33 -0
  4. package/dist/adaptive-rate-limiter-Dch_xYIi.d.cts +111 -0
  5. package/dist/adaptive-rate-limiter-Dch_xYIi.d.ts +111 -0
  6. package/dist/agents-C0Ji9ldU.d.cts +629 -0
  7. package/dist/agents-C9zexT7I.d.ts +629 -0
  8. package/dist/audit-BAXb3VOg.d.ts +246 -0
  9. package/dist/audit-C_bPfkqS.d.cts +246 -0
  10. package/dist/backoff-7KIK3WQW.js +24 -0
  11. package/dist/backoff-7KIK3WQW.js.map +1 -0
  12. package/dist/backoff-Bnb9OoPh.d.cts +6 -0
  13. package/dist/backoff-Bnb9OoPh.d.ts +6 -0
  14. package/dist/base/composition/index.cjs +811 -0
  15. package/dist/base/composition/index.cjs.map +1 -0
  16. package/dist/base/composition/index.d.cts +469 -0
  17. package/dist/base/composition/index.d.ts +469 -0
  18. package/dist/base/composition/index.js +40 -0
  19. package/dist/base/composition/index.js.map +1 -0
  20. package/dist/base/index.cjs +6336 -0
  21. package/dist/base/index.cjs.map +1 -0
  22. package/dist/base/index.d.cts +22 -0
  23. package/dist/base/index.d.ts +22 -0
  24. package/dist/base/index.js +259 -0
  25. package/dist/base/index.js.map +1 -0
  26. package/dist/base/io/index.cjs +3270 -0
  27. package/dist/base/io/index.cjs.map +1 -0
  28. package/dist/base/io/index.d.cts +2245 -0
  29. package/dist/base/io/index.d.ts +2245 -0
  30. package/dist/base/io/index.js +117 -0
  31. package/dist/base/io/index.js.map +1 -0
  32. package/dist/base/meta/index.cjs +43 -0
  33. package/dist/base/meta/index.cjs.map +1 -0
  34. package/dist/base/meta/index.d.cts +45 -0
  35. package/dist/base/meta/index.d.ts +45 -0
  36. package/dist/base/meta/index.js +13 -0
  37. package/dist/base/meta/index.js.map +1 -0
  38. package/dist/base/mutation/index.cjs +200 -0
  39. package/dist/base/mutation/index.cjs.map +1 -0
  40. package/dist/base/mutation/index.d.cts +177 -0
  41. package/dist/base/mutation/index.d.ts +177 -0
  42. package/dist/base/mutation/index.js +22 -0
  43. package/dist/base/mutation/index.js.map +1 -0
  44. package/dist/base/render/index.cjs +1120 -0
  45. package/dist/base/render/index.cjs.map +1 -0
  46. package/dist/base/render/index.d.cts +227 -0
  47. package/dist/base/render/index.d.ts +227 -0
  48. package/dist/base/render/index.js +24 -0
  49. package/dist/base/render/index.js.map +1 -0
  50. package/dist/base/sources/browser/index.cjs +172 -0
  51. package/dist/base/sources/browser/index.cjs.map +1 -0
  52. package/dist/base/sources/browser/index.d.cts +84 -0
  53. package/dist/base/sources/browser/index.d.ts +84 -0
  54. package/dist/base/sources/browser/index.js +151 -0
  55. package/dist/base/sources/browser/index.js.map +1 -0
  56. package/dist/base/sources/event/index.cjs +98 -0
  57. package/dist/base/sources/event/index.cjs.map +1 -0
  58. package/dist/base/sources/event/index.d.cts +91 -0
  59. package/dist/base/sources/event/index.d.ts +91 -0
  60. package/dist/base/sources/event/index.js +13 -0
  61. package/dist/base/sources/event/index.js.map +1 -0
  62. package/dist/base/sources/index.cjs +755 -0
  63. package/dist/base/sources/index.cjs.map +1 -0
  64. package/dist/base/sources/index.d.cts +357 -0
  65. package/dist/base/sources/index.d.ts +357 -0
  66. package/dist/base/sources/index.js +42 -0
  67. package/dist/base/sources/index.js.map +1 -0
  68. package/dist/base/sources/node/index.cjs +320 -0
  69. package/dist/base/sources/node/index.cjs.map +1 -0
  70. package/dist/base/sources/node/index.d.cts +185 -0
  71. package/dist/base/sources/node/index.d.ts +185 -0
  72. package/dist/base/sources/node/index.js +306 -0
  73. package/dist/base/sources/node/index.js.map +1 -0
  74. package/dist/base/utils/index.cjs +37 -0
  75. package/dist/base/utils/index.cjs.map +1 -0
  76. package/dist/base/utils/index.d.cts +37 -0
  77. package/dist/base/utils/index.d.ts +37 -0
  78. package/dist/base/utils/index.js +11 -0
  79. package/dist/base/utils/index.js.map +1 -0
  80. package/dist/base/worker/index.cjs +548 -0
  81. package/dist/base/worker/index.cjs.map +1 -0
  82. package/dist/base/worker/index.d.cts +207 -0
  83. package/dist/base/worker/index.d.ts +207 -0
  84. package/dist/base/worker/index.js +20 -0
  85. package/dist/base/worker/index.js.map +1 -0
  86. package/dist/breaker-C9skL3d8.d.ts +175 -0
  87. package/dist/breaker-ugSdq54q.d.cts +175 -0
  88. package/dist/cascading-CSSbKGrJ.d.ts +199 -0
  89. package/dist/cascading-baGkiihI.d.cts +199 -0
  90. package/dist/chunk-255UCBG4.js +58 -0
  91. package/dist/chunk-255UCBG4.js.map +1 -0
  92. package/dist/chunk-2LO3EL4W.js +1 -0
  93. package/dist/chunk-2LO3EL4W.js.map +1 -0
  94. package/dist/chunk-2OB3CEJS.js +1065 -0
  95. package/dist/chunk-2OB3CEJS.js.map +1 -0
  96. package/dist/chunk-36NMM65U.js +144 -0
  97. package/dist/chunk-36NMM65U.js.map +1 -0
  98. package/dist/chunk-3CEXCBN6.js +1 -0
  99. package/dist/chunk-3CEXCBN6.js.map +1 -0
  100. package/dist/chunk-3MUSLI6E.js +105 -0
  101. package/dist/chunk-3MUSLI6E.js.map +1 -0
  102. package/dist/chunk-3PSLNJDU.js +884 -0
  103. package/dist/chunk-3PSLNJDU.js.map +1 -0
  104. package/dist/chunk-3QZY5BI7.js +92 -0
  105. package/dist/chunk-3QZY5BI7.js.map +1 -0
  106. package/dist/chunk-42FQ27MQ.js +594 -0
  107. package/dist/chunk-42FQ27MQ.js.map +1 -0
  108. package/dist/chunk-4GYMCUDZ.js +1085 -0
  109. package/dist/chunk-4GYMCUDZ.js.map +1 -0
  110. package/dist/chunk-4S53H2KR.js +382 -0
  111. package/dist/chunk-4S53H2KR.js.map +1 -0
  112. package/dist/chunk-4XCHZRUJ.js +128 -0
  113. package/dist/chunk-4XCHZRUJ.js.map +1 -0
  114. package/dist/chunk-5THCXDWY.js +725 -0
  115. package/dist/chunk-5THCXDWY.js.map +1 -0
  116. package/dist/chunk-6XZYT4SW.js +256 -0
  117. package/dist/chunk-6XZYT4SW.js.map +1 -0
  118. package/dist/chunk-7EGRP2VX.js +76 -0
  119. package/dist/chunk-7EGRP2VX.js.map +1 -0
  120. package/dist/chunk-A7KV5UK4.js +150 -0
  121. package/dist/chunk-A7KV5UK4.js.map +1 -0
  122. package/dist/chunk-APY2SS5X.js +156 -0
  123. package/dist/chunk-APY2SS5X.js.map +1 -0
  124. package/dist/chunk-AZDQPQ3V.js +66 -0
  125. package/dist/chunk-AZDQPQ3V.js.map +1 -0
  126. package/dist/chunk-BU3SEFA5.js +90 -0
  127. package/dist/chunk-BU3SEFA5.js.map +1 -0
  128. package/dist/chunk-BXGZFGZ4.js +189 -0
  129. package/dist/chunk-BXGZFGZ4.js.map +1 -0
  130. package/dist/chunk-CGHORL6G.js +579 -0
  131. package/dist/chunk-CGHORL6G.js.map +1 -0
  132. package/dist/chunk-CXANAIZU.js +530 -0
  133. package/dist/chunk-CXANAIZU.js.map +1 -0
  134. package/dist/chunk-CZQHCKKG.js +1 -0
  135. package/dist/chunk-CZQHCKKG.js.map +1 -0
  136. package/dist/chunk-DKNHAICT.js +133 -0
  137. package/dist/chunk-DKNHAICT.js.map +1 -0
  138. package/dist/chunk-DM4OMPWK.js +584 -0
  139. package/dist/chunk-DM4OMPWK.js.map +1 -0
  140. package/dist/chunk-DMSNO6ZB.js +452 -0
  141. package/dist/chunk-DMSNO6ZB.js.map +1 -0
  142. package/dist/chunk-E5OZPDIW.js +229 -0
  143. package/dist/chunk-E5OZPDIW.js.map +1 -0
  144. package/dist/chunk-EVYY4X5A.js +509 -0
  145. package/dist/chunk-EVYY4X5A.js.map +1 -0
  146. package/dist/chunk-FDFD67UO.js +1 -0
  147. package/dist/chunk-FDFD67UO.js.map +1 -0
  148. package/dist/chunk-FMPF42Q4.js +13 -0
  149. package/dist/chunk-FMPF42Q4.js.map +1 -0
  150. package/dist/chunk-FR6RGA3B.js +1277 -0
  151. package/dist/chunk-FR6RGA3B.js.map +1 -0
  152. package/dist/chunk-FW23JYNQ.js +454 -0
  153. package/dist/chunk-FW23JYNQ.js.map +1 -0
  154. package/dist/chunk-GBCENOLN.js +1575 -0
  155. package/dist/chunk-GBCENOLN.js.map +1 -0
  156. package/dist/chunk-HL7HUJIX.js +1 -0
  157. package/dist/chunk-HL7HUJIX.js.map +1 -0
  158. package/dist/chunk-HULCUY35.js +2508 -0
  159. package/dist/chunk-HULCUY35.js.map +1 -0
  160. package/dist/chunk-IHTWQEDR.js +169 -0
  161. package/dist/chunk-IHTWQEDR.js.map +1 -0
  162. package/dist/chunk-IJRR6YAI.js +128 -0
  163. package/dist/chunk-IJRR6YAI.js.map +1 -0
  164. package/dist/chunk-JGFRAFDL.js +221 -0
  165. package/dist/chunk-JGFRAFDL.js.map +1 -0
  166. package/dist/chunk-KIIXR252.js +211 -0
  167. package/dist/chunk-KIIXR252.js.map +1 -0
  168. package/dist/chunk-KN3H5CNT.js +11 -0
  169. package/dist/chunk-KN3H5CNT.js.map +1 -0
  170. package/dist/chunk-KPG3DGLA.js +1 -0
  171. package/dist/chunk-KPG3DGLA.js.map +1 -0
  172. package/dist/chunk-KRNQ6RGQ.js +1 -0
  173. package/dist/chunk-KRNQ6RGQ.js.map +1 -0
  174. package/dist/chunk-LBAJK24K.js +1071 -0
  175. package/dist/chunk-LBAJK24K.js.map +1 -0
  176. package/dist/chunk-MLTPJMH6.js +417 -0
  177. package/dist/chunk-MLTPJMH6.js.map +1 -0
  178. package/dist/chunk-N3SZ7BMH.js +95 -0
  179. package/dist/chunk-N3SZ7BMH.js.map +1 -0
  180. package/dist/chunk-NDUD3IMO.js +540 -0
  181. package/dist/chunk-NDUD3IMO.js.map +1 -0
  182. package/dist/chunk-NY2PYHNC.js +873 -0
  183. package/dist/chunk-NY2PYHNC.js.map +1 -0
  184. package/dist/chunk-O3MT7DYI.js +225 -0
  185. package/dist/chunk-O3MT7DYI.js.map +1 -0
  186. package/dist/chunk-OCUDSN63.js +2386 -0
  187. package/dist/chunk-OCUDSN63.js.map +1 -0
  188. package/dist/chunk-OIWU3NYV.js +199 -0
  189. package/dist/chunk-OIWU3NYV.js.map +1 -0
  190. package/dist/chunk-OO5BM6CJ.js +1153 -0
  191. package/dist/chunk-OO5BM6CJ.js.map +1 -0
  192. package/dist/chunk-OQUIJT7A.js +1 -0
  193. package/dist/chunk-OQUIJT7A.js.map +1 -0
  194. package/dist/chunk-P5LBT622.js +105 -0
  195. package/dist/chunk-P5LBT622.js.map +1 -0
  196. package/dist/chunk-PKGQG5QQ.js +519 -0
  197. package/dist/chunk-PKGQG5QQ.js.map +1 -0
  198. package/dist/chunk-PKPO3JTZ.js +561 -0
  199. package/dist/chunk-PKPO3JTZ.js.map +1 -0
  200. package/dist/chunk-PL5UDIQ5.js +118 -0
  201. package/dist/chunk-PL5UDIQ5.js.map +1 -0
  202. package/dist/chunk-PZWISPIQ.js +432 -0
  203. package/dist/chunk-PZWISPIQ.js.map +1 -0
  204. package/dist/chunk-Q3EYOCZB.js +510 -0
  205. package/dist/chunk-Q3EYOCZB.js.map +1 -0
  206. package/dist/chunk-QMBYUVRL.js +15 -0
  207. package/dist/chunk-QMBYUVRL.js.map +1 -0
  208. package/dist/chunk-RAGGHLCV.js +200 -0
  209. package/dist/chunk-RAGGHLCV.js.map +1 -0
  210. package/dist/chunk-RGL53X5G.js +574 -0
  211. package/dist/chunk-RGL53X5G.js.map +1 -0
  212. package/dist/chunk-RJOG4IJU.js +1039 -0
  213. package/dist/chunk-RJOG4IJU.js.map +1 -0
  214. package/dist/chunk-SOOKUYVM.js +403 -0
  215. package/dist/chunk-SOOKUYVM.js.map +1 -0
  216. package/dist/chunk-T5BN5KG7.js +1 -0
  217. package/dist/chunk-T5BN5KG7.js.map +1 -0
  218. package/dist/chunk-TP7244Y6.js +207 -0
  219. package/dist/chunk-TP7244Y6.js.map +1 -0
  220. package/dist/chunk-TSBFTJKM.js +57 -0
  221. package/dist/chunk-TSBFTJKM.js.map +1 -0
  222. package/dist/chunk-URQ2CBBF.js +143 -0
  223. package/dist/chunk-URQ2CBBF.js.map +1 -0
  224. package/dist/chunk-W2BOPXTI.js +1 -0
  225. package/dist/chunk-W2BOPXTI.js.map +1 -0
  226. package/dist/chunk-WKSWLSCX.js +207 -0
  227. package/dist/chunk-WKSWLSCX.js.map +1 -0
  228. package/dist/chunk-Y52CS6YA.js +88 -0
  229. package/dist/chunk-Y52CS6YA.js.map +1 -0
  230. package/dist/chunk-YCBUWK77.js +92 -0
  231. package/dist/chunk-YCBUWK77.js.map +1 -0
  232. package/dist/chunk-YJ4U2D2C.js +314 -0
  233. package/dist/chunk-YJ4U2D2C.js.map +1 -0
  234. package/dist/chunk-Z4YXAUDN.js +239 -0
  235. package/dist/chunk-Z4YXAUDN.js.map +1 -0
  236. package/dist/chunk-Z6EGP5D7.js +92 -0
  237. package/dist/chunk-Z6EGP5D7.js.map +1 -0
  238. package/dist/compat/index.cjs +3083 -2
  239. package/dist/compat/index.cjs.map +1 -1
  240. package/dist/compat/index.d.cts +116 -1
  241. package/dist/compat/index.d.ts +116 -1
  242. package/dist/compat/index.js +175 -2
  243. package/dist/compat/index.js.map +1 -1
  244. package/dist/compat/jotai/index.cjs +130 -2
  245. package/dist/compat/jotai/index.cjs.map +1 -1
  246. package/dist/compat/jotai/index.d.cts +2 -1
  247. package/dist/compat/jotai/index.d.ts +2 -1
  248. package/dist/compat/jotai/index.js +7 -2
  249. package/dist/compat/jotai/index.js.map +1 -1
  250. package/dist/compat/nanostores/index.cjs +186 -2
  251. package/dist/compat/nanostores/index.cjs.map +1 -1
  252. package/dist/compat/nanostores/index.d.cts +2 -1
  253. package/dist/compat/nanostores/index.d.ts +2 -1
  254. package/dist/compat/nanostores/index.js +21 -2
  255. package/dist/compat/nanostores/index.js.map +1 -1
  256. package/dist/compat/nestjs/index.cjs +2224 -2
  257. package/dist/compat/nestjs/index.cjs.map +1 -1
  258. package/dist/compat/nestjs/index.d.cts +10 -1
  259. package/dist/compat/nestjs/index.d.ts +10 -1
  260. package/dist/compat/nestjs/index.js +77 -2
  261. package/dist/compat/nestjs/index.js.map +1 -1
  262. package/dist/compat/react/index.cjs +95 -2
  263. package/dist/compat/react/index.cjs.map +1 -1
  264. package/dist/compat/react/index.d.cts +2 -1
  265. package/dist/compat/react/index.d.ts +2 -1
  266. package/dist/compat/react/index.js +11 -2
  267. package/dist/compat/react/index.js.map +1 -1
  268. package/dist/compat/solid/index.cjs +82 -2
  269. package/dist/compat/solid/index.cjs.map +1 -1
  270. package/dist/compat/solid/index.d.cts +2 -1
  271. package/dist/compat/solid/index.d.ts +2 -1
  272. package/dist/compat/solid/index.js +11 -2
  273. package/dist/compat/solid/index.js.map +1 -1
  274. package/dist/compat/svelte/index.cjs +85 -2
  275. package/dist/compat/svelte/index.cjs.map +1 -1
  276. package/dist/compat/svelte/index.d.cts +2 -1
  277. package/dist/compat/svelte/index.d.ts +2 -1
  278. package/dist/compat/svelte/index.js +11 -2
  279. package/dist/compat/svelte/index.js.map +1 -1
  280. package/dist/compat/vue/index.cjs +100 -2
  281. package/dist/compat/vue/index.cjs.map +1 -1
  282. package/dist/compat/vue/index.d.cts +3 -1
  283. package/dist/compat/vue/index.d.ts +3 -1
  284. package/dist/compat/vue/index.js +11 -2
  285. package/dist/compat/vue/index.js.map +1 -1
  286. package/dist/compat/zustand/index.cjs +50 -2
  287. package/dist/compat/zustand/index.cjs.map +1 -1
  288. package/dist/compat/zustand/index.d.cts +2 -1
  289. package/dist/compat/zustand/index.d.ts +2 -1
  290. package/dist/compat/zustand/index.js +7 -2
  291. package/dist/compat/zustand/index.js.map +1 -1
  292. package/dist/distill-De6Rnn15.d.cts +48 -0
  293. package/dist/distill-De6Rnn15.d.ts +48 -0
  294. package/dist/external-register-CWyroXb_.d.cts +138 -0
  295. package/dist/external-register-CWyroXb_.d.ts +138 -0
  296. package/dist/fallback-Bx46zqky.d.cts +243 -0
  297. package/dist/fallback-pIWW8A2d.d.ts +243 -0
  298. package/dist/guarded-execution-BcdtxeBk.d.ts +207 -0
  299. package/dist/guarded-execution-C-3hnP6A.d.cts +207 -0
  300. package/dist/index-5SU_O78r.d.cts +754 -0
  301. package/dist/index-B6pxYJzO.d.cts +36 -0
  302. package/dist/index-B6pxYJzO.d.ts +36 -0
  303. package/dist/index-BFsng6v1.d.cts +44 -0
  304. package/dist/index-BFsng6v1.d.ts +44 -0
  305. package/dist/index-Bg-LwEt-.d.cts +45 -0
  306. package/dist/index-Bg-LwEt-.d.ts +45 -0
  307. package/dist/index-Brp888t0.d.cts +127 -0
  308. package/dist/index-Brp888t0.d.ts +127 -0
  309. package/dist/index-CDfk6jHN.d.cts +37 -0
  310. package/dist/index-CDfk6jHN.d.ts +37 -0
  311. package/dist/index-CEXCtYYJ.d.ts +754 -0
  312. package/dist/index-DLAxYaN5.d.cts +169 -0
  313. package/dist/index-DLAxYaN5.d.ts +169 -0
  314. package/dist/index-DeWbQzMe.d.cts +34 -0
  315. package/dist/index-DeWbQzMe.d.ts +34 -0
  316. package/dist/index-dX9IzPqj.d.cts +86 -0
  317. package/dist/index-dX9IzPqj.d.ts +86 -0
  318. package/dist/index.cjs +25950 -0
  319. package/dist/index.cjs.map +1 -1
  320. package/dist/index.d.cts +56 -42
  321. package/dist/index.d.ts +56 -42
  322. package/dist/index.js +849 -0
  323. package/dist/index.js.map +1 -1
  324. package/dist/layout-types-B5aiHYgk.d.cts +72 -0
  325. package/dist/layout-types-B5aiHYgk.d.ts +72 -0
  326. package/dist/memory-composers-BryDrRBX.d.cts +529 -0
  327. package/dist/memory-composers-CVQqPYEV.d.ts +529 -0
  328. package/dist/observable-BXQoW1P-.d.cts +36 -0
  329. package/dist/observable-BXQoW1P-.d.ts +36 -0
  330. package/dist/pipeline-graph-Ce47CB6Y.d.cts +145 -0
  331. package/dist/pipeline-graph-DXCwY9vG.d.ts +145 -0
  332. package/dist/presets/ai/index.cjs +4377 -0
  333. package/dist/presets/ai/index.cjs.map +1 -0
  334. package/dist/presets/ai/index.d.cts +98 -0
  335. package/dist/presets/ai/index.d.ts +98 -0
  336. package/dist/presets/ai/index.js +54 -0
  337. package/dist/presets/ai/index.js.map +1 -0
  338. package/dist/presets/harness/index.cjs +5929 -0
  339. package/dist/presets/harness/index.cjs.map +1 -0
  340. package/dist/presets/harness/index.d.cts +566 -0
  341. package/dist/presets/harness/index.d.ts +566 -0
  342. package/dist/presets/harness/index.js +71 -0
  343. package/dist/presets/harness/index.js.map +1 -0
  344. package/dist/presets/index.cjs +9782 -0
  345. package/dist/presets/index.cjs.map +1 -0
  346. package/dist/presets/index.d.cts +28 -0
  347. package/dist/presets/index.d.ts +28 -0
  348. package/dist/presets/index.js +129 -0
  349. package/dist/presets/index.js.map +1 -0
  350. package/dist/presets/inspect/index.cjs +1087 -0
  351. package/dist/presets/inspect/index.cjs.map +1 -0
  352. package/dist/presets/inspect/index.d.cts +172 -0
  353. package/dist/presets/inspect/index.d.ts +172 -0
  354. package/dist/presets/inspect/index.js +21 -0
  355. package/dist/presets/inspect/index.js.map +1 -0
  356. package/dist/presets/resilience/index.cjs +1593 -0
  357. package/dist/presets/resilience/index.cjs.map +1 -0
  358. package/dist/presets/resilience/index.d.cts +205 -0
  359. package/dist/presets/resilience/index.d.ts +205 -0
  360. package/dist/presets/resilience/index.js +18 -0
  361. package/dist/presets/resilience/index.js.map +1 -0
  362. package/dist/rate-limiter-CEALq4N1.d.ts +559 -0
  363. package/dist/rate-limiter-DpVbSYdH.d.cts +559 -0
  364. package/dist/reactive-layout-fswlBUvX.d.cts +195 -0
  365. package/dist/reactive-layout-fswlBUvX.d.ts +195 -0
  366. package/dist/retry-BDbRZ_gx.d.ts +125 -0
  367. package/dist/retry-DWuhjvsA.d.cts +125 -0
  368. package/dist/solutions/index.cjs +8200 -0
  369. package/dist/solutions/index.cjs.map +1 -0
  370. package/dist/solutions/index.d.cts +23 -0
  371. package/dist/solutions/index.d.ts +23 -0
  372. package/dist/solutions/index.js +55 -0
  373. package/dist/solutions/index.js.map +1 -0
  374. package/dist/spawnable-5mDY501F.d.cts +746 -0
  375. package/dist/spawnable-D3lR0oQu.d.ts +746 -0
  376. package/dist/status-U-rUI79b.d.cts +84 -0
  377. package/dist/status-U-rUI79b.d.ts +84 -0
  378. package/dist/timeout-U5O4ESK3.js +12 -0
  379. package/dist/timeout-U5O4ESK3.js.map +1 -0
  380. package/dist/types-BB5Lw-pB.d.cts +442 -0
  381. package/dist/types-BB5Lw-pB.d.ts +442 -0
  382. package/dist/types-CJWIMJiZ.d.ts +548 -0
  383. package/dist/types-vCq7ShIm.d.cts +548 -0
  384. package/dist/utils/ai/browser.cjs +2169 -0
  385. package/dist/utils/ai/browser.cjs.map +1 -0
  386. package/dist/utils/ai/browser.d.cts +129 -0
  387. package/dist/utils/ai/browser.d.ts +129 -0
  388. package/dist/utils/ai/browser.js +255 -0
  389. package/dist/utils/ai/browser.js.map +1 -0
  390. package/dist/utils/ai/index.cjs +8468 -0
  391. package/dist/utils/ai/index.cjs.map +1 -0
  392. package/dist/utils/ai/index.d.cts +1777 -0
  393. package/dist/utils/ai/index.d.ts +1777 -0
  394. package/dist/utils/ai/index.js +173 -0
  395. package/dist/utils/ai/index.js.map +1 -0
  396. package/dist/utils/ai/node.cjs +648 -0
  397. package/dist/utils/ai/node.cjs.map +1 -0
  398. package/dist/utils/ai/node.d.cts +57 -0
  399. package/dist/utils/ai/node.d.ts +57 -0
  400. package/dist/utils/ai/node.js +84 -0
  401. package/dist/utils/ai/node.js.map +1 -0
  402. package/dist/utils/cqrs/index.cjs +1036 -0
  403. package/dist/utils/cqrs/index.cjs.map +1 -0
  404. package/dist/utils/cqrs/index.d.cts +438 -0
  405. package/dist/utils/cqrs/index.d.ts +438 -0
  406. package/dist/utils/cqrs/index.js +18 -0
  407. package/dist/utils/cqrs/index.js.map +1 -0
  408. package/dist/utils/demo-shell/index.cjs +865 -0
  409. package/dist/utils/demo-shell/index.cjs.map +1 -0
  410. package/dist/utils/demo-shell/index.d.cts +90 -0
  411. package/dist/utils/demo-shell/index.d.ts +90 -0
  412. package/dist/utils/demo-shell/index.js +13 -0
  413. package/dist/utils/demo-shell/index.js.map +1 -0
  414. package/dist/utils/domain-templates/index.cjs +732 -0
  415. package/dist/utils/domain-templates/index.cjs.map +1 -0
  416. package/dist/utils/domain-templates/index.d.cts +214 -0
  417. package/dist/utils/domain-templates/index.d.ts +214 -0
  418. package/dist/utils/domain-templates/index.js +17 -0
  419. package/dist/utils/domain-templates/index.js.map +1 -0
  420. package/dist/utils/graphspec/index.cjs +1174 -0
  421. package/dist/utils/graphspec/index.cjs.map +1 -0
  422. package/dist/utils/graphspec/index.d.cts +449 -0
  423. package/dist/utils/graphspec/index.d.ts +449 -0
  424. package/dist/utils/graphspec/index.js +35 -0
  425. package/dist/utils/graphspec/index.js.map +1 -0
  426. package/dist/utils/harness/index.cjs +656 -0
  427. package/dist/utils/harness/index.cjs.map +1 -0
  428. package/dist/utils/harness/index.d.cts +542 -0
  429. package/dist/utils/harness/index.d.ts +542 -0
  430. package/dist/utils/harness/index.js +56 -0
  431. package/dist/utils/harness/index.js.map +1 -0
  432. package/dist/utils/index.cjs +17609 -0
  433. package/dist/utils/index.cjs.map +1 -0
  434. package/dist/utils/index.d.cts +96 -0
  435. package/dist/utils/index.d.ts +96 -0
  436. package/dist/utils/index.js +514 -0
  437. package/dist/utils/index.js.map +1 -0
  438. package/dist/utils/inspect/index.cjs +807 -0
  439. package/dist/utils/inspect/index.cjs.map +1 -0
  440. package/dist/utils/inspect/index.d.cts +123 -0
  441. package/dist/utils/inspect/index.d.ts +123 -0
  442. package/dist/utils/inspect/index.js +30 -0
  443. package/dist/utils/inspect/index.js.map +1 -0
  444. package/dist/utils/job-queue/index.cjs +717 -0
  445. package/dist/utils/job-queue/index.cjs.map +1 -0
  446. package/dist/utils/job-queue/index.d.cts +200 -0
  447. package/dist/utils/job-queue/index.d.ts +200 -0
  448. package/dist/utils/job-queue/index.js +18 -0
  449. package/dist/utils/job-queue/index.js.map +1 -0
  450. package/dist/utils/memory/index.cjs +1451 -0
  451. package/dist/utils/memory/index.cjs.map +1 -0
  452. package/dist/utils/memory/index.d.cts +582 -0
  453. package/dist/utils/memory/index.d.ts +582 -0
  454. package/dist/utils/memory/index.js +19 -0
  455. package/dist/utils/memory/index.js.map +1 -0
  456. package/dist/utils/messaging/index.cjs +666 -0
  457. package/dist/utils/messaging/index.cjs.map +1 -0
  458. package/dist/utils/messaging/index.d.cts +562 -0
  459. package/dist/utils/messaging/index.d.ts +562 -0
  460. package/dist/utils/messaging/index.js +50 -0
  461. package/dist/utils/messaging/index.js.map +1 -0
  462. package/dist/utils/orchestration/index.cjs +876 -0
  463. package/dist/utils/orchestration/index.cjs.map +1 -0
  464. package/dist/utils/orchestration/index.d.cts +233 -0
  465. package/dist/utils/orchestration/index.d.ts +233 -0
  466. package/dist/utils/orchestration/index.js +19 -0
  467. package/dist/utils/orchestration/index.js.map +1 -0
  468. package/dist/utils/process/index.cjs +743 -0
  469. package/dist/utils/process/index.cjs.map +1 -0
  470. package/dist/utils/process/index.d.cts +411 -0
  471. package/dist/utils/process/index.d.ts +411 -0
  472. package/dist/utils/process/index.js +14 -0
  473. package/dist/utils/process/index.js.map +1 -0
  474. package/dist/utils/reactive-layout/index.cjs +1607 -0
  475. package/dist/utils/reactive-layout/index.cjs.map +1 -0
  476. package/dist/utils/reactive-layout/index.d.cts +492 -0
  477. package/dist/utils/reactive-layout/index.d.ts +492 -0
  478. package/dist/utils/reactive-layout/index.js +52 -0
  479. package/dist/utils/reactive-layout/index.js.map +1 -0
  480. package/dist/utils/reduction/index.cjs +203 -0
  481. package/dist/utils/reduction/index.cjs.map +1 -0
  482. package/dist/utils/reduction/index.d.cts +102 -0
  483. package/dist/utils/reduction/index.d.ts +102 -0
  484. package/dist/utils/reduction/index.js +14 -0
  485. package/dist/utils/reduction/index.js.map +1 -0
  486. package/dist/utils/resilience/index.cjs +1617 -0
  487. package/dist/utils/resilience/index.cjs.map +1 -0
  488. package/dist/utils/resilience/index.d.cts +9 -0
  489. package/dist/utils/resilience/index.d.ts +9 -0
  490. package/dist/utils/resilience/index.js +44 -0
  491. package/dist/utils/resilience/index.js.map +1 -0
  492. package/dist/utils/surface/index.cjs +1070 -0
  493. package/dist/utils/surface/index.cjs.map +1 -0
  494. package/dist/utils/surface/index.d.cts +240 -0
  495. package/dist/utils/surface/index.d.ts +240 -0
  496. package/dist/utils/surface/index.js +30 -0
  497. package/dist/utils/surface/index.js.map +1 -0
  498. package/dist/utils/topology-view/index.cjs +620 -0
  499. package/dist/utils/topology-view/index.cjs.map +1 -0
  500. package/dist/utils/topology-view/index.d.cts +68 -0
  501. package/dist/utils/topology-view/index.d.ts +68 -0
  502. package/dist/utils/topology-view/index.js +11 -0
  503. package/dist/utils/topology-view/index.js.map +1 -0
  504. package/package.json +293 -237
  505. package/dist/core/index.cjs +0 -21
  506. package/dist/core/index.cjs.map +0 -1
  507. package/dist/core/index.d.cts +0 -1
  508. package/dist/core/index.d.ts +0 -1
  509. package/dist/core/index.js +0 -3
  510. package/dist/core/index.js.map +0 -1
  511. package/dist/extra/browser.cjs +0 -21
  512. package/dist/extra/browser.cjs.map +0 -1
  513. package/dist/extra/browser.d.cts +0 -1
  514. package/dist/extra/browser.d.ts +0 -1
  515. package/dist/extra/browser.js +0 -3
  516. package/dist/extra/browser.js.map +0 -1
  517. package/dist/extra/index.cjs +0 -21
  518. package/dist/extra/index.cjs.map +0 -1
  519. package/dist/extra/index.d.cts +0 -1
  520. package/dist/extra/index.d.ts +0 -1
  521. package/dist/extra/index.js +0 -3
  522. package/dist/extra/index.js.map +0 -1
  523. package/dist/extra/node.cjs +0 -21
  524. package/dist/extra/node.cjs.map +0 -1
  525. package/dist/extra/node.d.cts +0 -1
  526. package/dist/extra/node.d.ts +0 -1
  527. package/dist/extra/node.js +0 -3
  528. package/dist/extra/node.js.map +0 -1
  529. package/dist/extra/operators.cjs +0 -21
  530. package/dist/extra/operators.cjs.map +0 -1
  531. package/dist/extra/operators.d.cts +0 -1
  532. package/dist/extra/operators.d.ts +0 -1
  533. package/dist/extra/operators.js +0 -3
  534. package/dist/extra/operators.js.map +0 -1
  535. package/dist/extra/reactive.cjs +0 -21
  536. package/dist/extra/reactive.cjs.map +0 -1
  537. package/dist/extra/reactive.d.cts +0 -1
  538. package/dist/extra/reactive.d.ts +0 -1
  539. package/dist/extra/reactive.js +0 -3
  540. package/dist/extra/reactive.js.map +0 -1
  541. package/dist/extra/render/index.cjs +0 -21
  542. package/dist/extra/render/index.cjs.map +0 -1
  543. package/dist/extra/render/index.d.cts +0 -1
  544. package/dist/extra/render/index.d.ts +0 -1
  545. package/dist/extra/render/index.js +0 -3
  546. package/dist/extra/render/index.js.map +0 -1
  547. package/dist/extra/sources.cjs +0 -21
  548. package/dist/extra/sources.cjs.map +0 -1
  549. package/dist/extra/sources.d.cts +0 -1
  550. package/dist/extra/sources.d.ts +0 -1
  551. package/dist/extra/sources.js +0 -3
  552. package/dist/extra/sources.js.map +0 -1
  553. package/dist/extra/storage-browser.cjs +0 -21
  554. package/dist/extra/storage-browser.cjs.map +0 -1
  555. package/dist/extra/storage-browser.d.cts +0 -1
  556. package/dist/extra/storage-browser.d.ts +0 -1
  557. package/dist/extra/storage-browser.js +0 -3
  558. package/dist/extra/storage-browser.js.map +0 -1
  559. package/dist/extra/storage-core.cjs +0 -21
  560. package/dist/extra/storage-core.cjs.map +0 -1
  561. package/dist/extra/storage-core.d.cts +0 -1
  562. package/dist/extra/storage-core.d.ts +0 -1
  563. package/dist/extra/storage-core.js +0 -3
  564. package/dist/extra/storage-core.js.map +0 -1
  565. package/dist/extra/storage-node.cjs +0 -21
  566. package/dist/extra/storage-node.cjs.map +0 -1
  567. package/dist/extra/storage-node.d.cts +0 -1
  568. package/dist/extra/storage-node.d.ts +0 -1
  569. package/dist/extra/storage-node.js +0 -3
  570. package/dist/extra/storage-node.js.map +0 -1
  571. package/dist/extra/storage-tiers-browser.cjs +0 -21
  572. package/dist/extra/storage-tiers-browser.cjs.map +0 -1
  573. package/dist/extra/storage-tiers-browser.d.cts +0 -1
  574. package/dist/extra/storage-tiers-browser.d.ts +0 -1
  575. package/dist/extra/storage-tiers-browser.js +0 -3
  576. package/dist/extra/storage-tiers-browser.js.map +0 -1
  577. package/dist/extra/storage-tiers-node.cjs +0 -21
  578. package/dist/extra/storage-tiers-node.cjs.map +0 -1
  579. package/dist/extra/storage-tiers-node.d.cts +0 -1
  580. package/dist/extra/storage-tiers-node.d.ts +0 -1
  581. package/dist/extra/storage-tiers-node.js +0 -3
  582. package/dist/extra/storage-tiers-node.js.map +0 -1
  583. package/dist/extra/storage-tiers.cjs +0 -21
  584. package/dist/extra/storage-tiers.cjs.map +0 -1
  585. package/dist/extra/storage-tiers.d.cts +0 -1
  586. package/dist/extra/storage-tiers.d.ts +0 -1
  587. package/dist/extra/storage-tiers.js +0 -3
  588. package/dist/extra/storage-tiers.js.map +0 -1
  589. package/dist/extra/storage-wal.cjs +0 -21
  590. package/dist/extra/storage-wal.cjs.map +0 -1
  591. package/dist/extra/storage-wal.d.cts +0 -1
  592. package/dist/extra/storage-wal.d.ts +0 -1
  593. package/dist/extra/storage-wal.js +0 -3
  594. package/dist/extra/storage-wal.js.map +0 -1
  595. package/dist/graph/index.cjs +0 -21
  596. package/dist/graph/index.cjs.map +0 -1
  597. package/dist/graph/index.d.cts +0 -1
  598. package/dist/graph/index.d.ts +0 -1
  599. package/dist/graph/index.js +0 -3
  600. package/dist/graph/index.js.map +0 -1
  601. package/dist/patterns/ai/browser.cjs +0 -21
  602. package/dist/patterns/ai/browser.cjs.map +0 -1
  603. package/dist/patterns/ai/browser.d.cts +0 -1
  604. package/dist/patterns/ai/browser.d.ts +0 -1
  605. package/dist/patterns/ai/browser.js +0 -3
  606. package/dist/patterns/ai/browser.js.map +0 -1
  607. package/dist/patterns/ai/index.cjs +0 -21
  608. package/dist/patterns/ai/index.cjs.map +0 -1
  609. package/dist/patterns/ai/index.d.cts +0 -1
  610. package/dist/patterns/ai/index.d.ts +0 -1
  611. package/dist/patterns/ai/index.js +0 -3
  612. package/dist/patterns/ai/index.js.map +0 -1
  613. package/dist/patterns/ai/node.cjs +0 -21
  614. package/dist/patterns/ai/node.cjs.map +0 -1
  615. package/dist/patterns/ai/node.d.cts +0 -1
  616. package/dist/patterns/ai/node.d.ts +0 -1
  617. package/dist/patterns/ai/node.js +0 -3
  618. package/dist/patterns/ai/node.js.map +0 -1
  619. package/dist/patterns/cqrs/index.cjs +0 -21
  620. package/dist/patterns/cqrs/index.cjs.map +0 -1
  621. package/dist/patterns/cqrs/index.d.cts +0 -1
  622. package/dist/patterns/cqrs/index.d.ts +0 -1
  623. package/dist/patterns/cqrs/index.js +0 -3
  624. package/dist/patterns/cqrs/index.js.map +0 -1
  625. package/dist/patterns/demo-shell/index.cjs +0 -21
  626. package/dist/patterns/demo-shell/index.cjs.map +0 -1
  627. package/dist/patterns/demo-shell/index.d.cts +0 -1
  628. package/dist/patterns/demo-shell/index.d.ts +0 -1
  629. package/dist/patterns/demo-shell/index.js +0 -3
  630. package/dist/patterns/demo-shell/index.js.map +0 -1
  631. package/dist/patterns/domain-templates/index.cjs +0 -21
  632. package/dist/patterns/domain-templates/index.cjs.map +0 -1
  633. package/dist/patterns/domain-templates/index.d.cts +0 -1
  634. package/dist/patterns/domain-templates/index.d.ts +0 -1
  635. package/dist/patterns/domain-templates/index.js +0 -3
  636. package/dist/patterns/domain-templates/index.js.map +0 -1
  637. package/dist/patterns/graphspec/index.cjs +0 -21
  638. package/dist/patterns/graphspec/index.cjs.map +0 -1
  639. package/dist/patterns/graphspec/index.d.cts +0 -1
  640. package/dist/patterns/graphspec/index.d.ts +0 -1
  641. package/dist/patterns/graphspec/index.js +0 -3
  642. package/dist/patterns/graphspec/index.js.map +0 -1
  643. package/dist/patterns/harness/index.cjs +0 -21
  644. package/dist/patterns/harness/index.cjs.map +0 -1
  645. package/dist/patterns/harness/index.d.cts +0 -1
  646. package/dist/patterns/harness/index.d.ts +0 -1
  647. package/dist/patterns/harness/index.js +0 -3
  648. package/dist/patterns/harness/index.js.map +0 -1
  649. package/dist/patterns/inspect/index.cjs +0 -21
  650. package/dist/patterns/inspect/index.cjs.map +0 -1
  651. package/dist/patterns/inspect/index.d.cts +0 -1
  652. package/dist/patterns/inspect/index.d.ts +0 -1
  653. package/dist/patterns/inspect/index.js +0 -3
  654. package/dist/patterns/inspect/index.js.map +0 -1
  655. package/dist/patterns/job-queue/index.cjs +0 -21
  656. package/dist/patterns/job-queue/index.cjs.map +0 -1
  657. package/dist/patterns/job-queue/index.d.cts +0 -1
  658. package/dist/patterns/job-queue/index.d.ts +0 -1
  659. package/dist/patterns/job-queue/index.js +0 -3
  660. package/dist/patterns/job-queue/index.js.map +0 -1
  661. package/dist/patterns/memory/index.cjs +0 -21
  662. package/dist/patterns/memory/index.cjs.map +0 -1
  663. package/dist/patterns/memory/index.d.cts +0 -1
  664. package/dist/patterns/memory/index.d.ts +0 -1
  665. package/dist/patterns/memory/index.js +0 -3
  666. package/dist/patterns/memory/index.js.map +0 -1
  667. package/dist/patterns/messaging/index.cjs +0 -21
  668. package/dist/patterns/messaging/index.cjs.map +0 -1
  669. package/dist/patterns/messaging/index.d.cts +0 -1
  670. package/dist/patterns/messaging/index.d.ts +0 -1
  671. package/dist/patterns/messaging/index.js +0 -3
  672. package/dist/patterns/messaging/index.js.map +0 -1
  673. package/dist/patterns/orchestration/index.cjs +0 -21
  674. package/dist/patterns/orchestration/index.cjs.map +0 -1
  675. package/dist/patterns/orchestration/index.d.cts +0 -1
  676. package/dist/patterns/orchestration/index.d.ts +0 -1
  677. package/dist/patterns/orchestration/index.js +0 -3
  678. package/dist/patterns/orchestration/index.js.map +0 -1
  679. package/dist/patterns/process/index.cjs +0 -21
  680. package/dist/patterns/process/index.cjs.map +0 -1
  681. package/dist/patterns/process/index.d.cts +0 -1
  682. package/dist/patterns/process/index.d.ts +0 -1
  683. package/dist/patterns/process/index.js +0 -3
  684. package/dist/patterns/process/index.js.map +0 -1
  685. package/dist/patterns/reactive-layout/index.cjs +0 -21
  686. package/dist/patterns/reactive-layout/index.cjs.map +0 -1
  687. package/dist/patterns/reactive-layout/index.d.cts +0 -1
  688. package/dist/patterns/reactive-layout/index.d.ts +0 -1
  689. package/dist/patterns/reactive-layout/index.js +0 -3
  690. package/dist/patterns/reactive-layout/index.js.map +0 -1
  691. package/dist/patterns/reduction/index.cjs +0 -21
  692. package/dist/patterns/reduction/index.cjs.map +0 -1
  693. package/dist/patterns/reduction/index.d.cts +0 -1
  694. package/dist/patterns/reduction/index.d.ts +0 -1
  695. package/dist/patterns/reduction/index.js +0 -3
  696. package/dist/patterns/reduction/index.js.map +0 -1
  697. package/dist/patterns/surface/index.cjs +0 -21
  698. package/dist/patterns/surface/index.cjs.map +0 -1
  699. package/dist/patterns/surface/index.d.cts +0 -1
  700. package/dist/patterns/surface/index.d.ts +0 -1
  701. package/dist/patterns/surface/index.js +0 -3
  702. package/dist/patterns/surface/index.js.map +0 -1
  703. package/dist/patterns/topology-view/index.cjs +0 -21
  704. package/dist/patterns/topology-view/index.cjs.map +0 -1
  705. package/dist/patterns/topology-view/index.d.cts +0 -1
  706. package/dist/patterns/topology-view/index.d.ts +0 -1
  707. package/dist/patterns/topology-view/index.js +0 -3
  708. package/dist/patterns/topology-view/index.js.map +0 -1
  709. package/dist/testing/index.cjs +0 -21
  710. package/dist/testing/index.cjs.map +0 -1
  711. package/dist/testing/index.d.cts +0 -1
  712. package/dist/testing/index.d.ts +0 -1
  713. package/dist/testing/index.js +0 -3
  714. package/dist/testing/index.js.map +0 -1
@@ -0,0 +1,1277 @@
1
+ import {
2
+ decay
3
+ } from "./chunk-QMBYUVRL.js";
4
+ import {
5
+ domainMeta
6
+ } from "./chunk-FMPF42Q4.js";
7
+ import {
8
+ bumpCursor,
9
+ createAuditLog,
10
+ mutate,
11
+ registerCursor
12
+ } from "./chunk-BXGZFGZ4.js";
13
+
14
+ // src/utils/memory/index.ts
15
+ import { monotonicNs as monotonicNs2, NodeImpl, node as node2, wallClockNs as wallClockNs2 } from "@graphrefly/pure-ts/core";
16
+ import { fromTimer, keepalive as keepalive2, reactiveMap } from "@graphrefly/pure-ts/extra";
17
+ import { Graph as Graph2 } from "@graphrefly/pure-ts/graph";
18
+
19
+ // src/utils/memory/fact-store.ts
20
+ import { monotonicNs, node, wallClockNs } from "@graphrefly/pure-ts/core";
21
+ import { keepalive } from "@graphrefly/pure-ts/extra";
22
+ import { Graph } from "@graphrefly/pure-ts/graph";
23
+ var OVERFLOW_SAMPLE_SIZE = 8;
24
+ function factMeta(kind, extra) {
25
+ return domainMeta("memory", kind, extra);
26
+ }
27
+ function fnv1a(s) {
28
+ let h = 2166136261;
29
+ for (let i = 0; i < s.length; i += 1) {
30
+ h ^= s.charCodeAt(i);
31
+ h = h + ((h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24)) >>> 0;
32
+ }
33
+ return h >>> 0;
34
+ }
35
+ function makeReadHandle(byId) {
36
+ return {
37
+ get: (id) => byId.get(id),
38
+ has: (id) => byId.has(id),
39
+ get size() {
40
+ return byId.size;
41
+ },
42
+ values: () => byId.values()
43
+ };
44
+ }
45
+ function currentlyValid(f, asOf) {
46
+ if (asOf === void 0) return f.validTo === void 0;
47
+ if (f.validFrom !== void 0 && asOf < f.validFrom) return false;
48
+ if (f.validTo !== void 0 && asOf >= f.validTo) return false;
49
+ return true;
50
+ }
51
+ function lastOf(batch, prev) {
52
+ return batch != null && batch.length > 0 ? batch.at(-1) : prev;
53
+ }
54
+ function reactiveFactStore(config) {
55
+ const shardCount = Math.max(1, config.shardCount ?? 4);
56
+ const maxIterations = Math.max(1, config.cascadeMaxIterations ?? 8);
57
+ const reviewThreshold = config.reviewThreshold ?? 0.3;
58
+ const shardBy = config.shardBy ?? ((f) => fnv1a(String(f.id)) % shardCount);
59
+ let cascadeIteration = 0;
60
+ const processedRoots = /* @__PURE__ */ new Set();
61
+ const graph = new Graph("reactive_fact_store");
62
+ const events = createAuditLog({
63
+ name: "events",
64
+ retainedLimit: 1024,
65
+ graph
66
+ });
67
+ const seqCursor = registerCursor(graph, "seq", 0);
68
+ const emptyStore = () => ({ byId: /* @__PURE__ */ new Map() });
69
+ const shards = [];
70
+ for (let s = 0; s < shardCount; s += 1) {
71
+ const shard = node([], {
72
+ initial: emptyStore(),
73
+ name: `shard_${s}`,
74
+ describeKind: "state",
75
+ meta: factMeta("factstore", { shard: s })
76
+ });
77
+ graph.add(shard, { name: `shard_${s}` });
78
+ graph.addDisposer(keepalive(shard));
79
+ shards.push(shard);
80
+ }
81
+ const shardIndexFor = (f) => {
82
+ const key = shardBy(f);
83
+ const n = typeof key === "number" ? key : fnv1a(String(key));
84
+ const idx = (n % shardCount + shardCount) % shardCount;
85
+ return idx;
86
+ };
87
+ const findShardOf = (id) => {
88
+ for (let s = 0; s < shardCount; s += 1) {
89
+ const fs = shards[s].cache;
90
+ if (fs?.byId.has(id)) return s;
91
+ }
92
+ return -1;
93
+ };
94
+ const allFacts = () => {
95
+ const out2 = /* @__PURE__ */ new Map();
96
+ for (const sh of shards) {
97
+ const fs = sh.cache;
98
+ if (!fs) continue;
99
+ for (const [k, v] of fs.byId) out2.set(k, v);
100
+ }
101
+ return out2;
102
+ };
103
+ const commitFragment = (f) => {
104
+ const idx = shardIndexFor(f);
105
+ const cur = shards[idx].cache ?? emptyStore();
106
+ const next = new Map(cur.byId);
107
+ next.set(f.id, f);
108
+ shards[idx].emit({ byId: next });
109
+ };
110
+ const replaceFragment = (id, mut) => {
111
+ const idx = findShardOf(id);
112
+ if (idx < 0) return false;
113
+ const cur = shards[idx].cache;
114
+ const prev = cur.byId.get(id);
115
+ if (!prev) return false;
116
+ const next = new Map(cur.byId);
117
+ next.set(id, mut(prev));
118
+ shards[idx].emit({ byId: next });
119
+ return true;
120
+ };
121
+ const dependentsIndex = node([], {
122
+ initial: /* @__PURE__ */ new Map(),
123
+ name: "dependents_index",
124
+ describeKind: "state",
125
+ meta: factMeta("factstore", { role: "dependents_index" })
126
+ });
127
+ graph.add(dependentsIndex, { name: "dependents_index" });
128
+ graph.addDisposer(keepalive(dependentsIndex));
129
+ const indexFragment = (f, deps) => {
130
+ const cur = dependentsIndex.cache;
131
+ const next = /* @__PURE__ */ new Map();
132
+ for (const [k, v] of cur) next.set(k, [...v]);
133
+ for (const src of deps) {
134
+ const bucket = next.get(src) ?? [];
135
+ if (!bucket.includes(f.id)) bucket.push(f.id);
136
+ next.set(src, bucket);
137
+ }
138
+ dependentsIndex.emit(next);
139
+ };
140
+ const factStore = node(
141
+ shards,
142
+ (batchData, actions, ctx) => {
143
+ void batchData;
144
+ void ctx;
145
+ actions.emit({ byId: allFacts() });
146
+ },
147
+ {
148
+ name: "fact_store",
149
+ describeKind: "derived",
150
+ initial: emptyStore(),
151
+ meta: factMeta("factstore", { role: "read_view" }),
152
+ // F10a: `allFacts()` builds a fresh Map every detector retrigger.
153
+ // Fragments are immutable (replaced wholesale on mutation), so a
154
+ // same-size + per-key-identity check is a sound structural equality
155
+ // that stops `factStore` (and its `review` dependent) from re-firing
156
+ // every cascade wave when nothing actually changed.
157
+ equals: (a, b) => {
158
+ if (a === b) return true;
159
+ if (a.byId.size !== b.byId.size) return false;
160
+ for (const [k, v] of a.byId) {
161
+ if (b.byId.get(k) !== v) return false;
162
+ }
163
+ return true;
164
+ }
165
+ }
166
+ );
167
+ graph.add(factStore, { name: "fact_store" });
168
+ graph.addDisposer(keepalive(factStore));
169
+ const extractOp = node(
170
+ config.admissionFilter ? [config.ingest, config.admissionFilter] : [config.ingest],
171
+ (batchData, actions, ctx) => {
172
+ const f = lastOf(batchData[0], ctx.prevData[0]);
173
+ if (f == null) {
174
+ actions.emit(null);
175
+ return;
176
+ }
177
+ if (config.admissionFilter) {
178
+ const filter = lastOf(batchData[1], ctx.prevData[1]);
179
+ if (filter && !filter(f)) {
180
+ actions.emit(null);
181
+ return;
182
+ }
183
+ }
184
+ const deps = config.extractDependencies(f);
185
+ cascadeIteration = 0;
186
+ processedRoots.delete(f.id);
187
+ commitFragment(f);
188
+ indexFragment(f, deps);
189
+ actions.emit(f);
190
+ },
191
+ {
192
+ name: "extract_op",
193
+ describeKind: "derived",
194
+ meta: factMeta("extract")
195
+ }
196
+ );
197
+ graph.add(extractOp, { name: "extract_op" });
198
+ graph.addDisposer(keepalive(extractOp));
199
+ const invalidationDetector = node(
200
+ [...shards],
201
+ (batchData, actions, ctx) => {
202
+ void batchData;
203
+ void ctx;
204
+ const facts = allFacts();
205
+ const index = dependentsIndex.cache;
206
+ const out2 = [];
207
+ const seen = /* @__PURE__ */ new Set();
208
+ for (const f of facts.values()) {
209
+ const obsolete = f.validTo !== void 0;
210
+ if (!obsolete) continue;
211
+ if (processedRoots.has(f.id)) continue;
212
+ const dependents = index.get(f.id) ?? [];
213
+ for (const dep of dependents) {
214
+ const depFact = facts.get(dep);
215
+ if (!depFact || depFact.validTo !== void 0) continue;
216
+ const k = `${f.id}->${dep}`;
217
+ if (seen.has(k)) continue;
218
+ seen.add(k);
219
+ out2.push({
220
+ factId: dep,
221
+ rootFactId: f.id,
222
+ reason: "obsolete",
223
+ iteration: cascadeIteration + 1,
224
+ causalReason: `dependentsIndex[${f.id}] \u2192 ${dep} (obsolete: validTo set)`
225
+ });
226
+ }
227
+ processedRoots.add(f.id);
228
+ }
229
+ if (out2.length === 0) {
230
+ cascadeIteration = 0;
231
+ }
232
+ actions.emit(out2);
233
+ },
234
+ {
235
+ name: "invalidation_detector",
236
+ describeKind: "derived",
237
+ initial: [],
238
+ meta: factMeta("invalidation", { cycle: "cascade" })
239
+ }
240
+ );
241
+ graph.add(invalidationDetector, { name: "invalidation_detector" });
242
+ graph.addDisposer(keepalive(invalidationDetector));
243
+ const cascade = node(
244
+ [invalidationDetector],
245
+ (batchData, actions, ctx) => {
246
+ const evts = lastOf(batchData[0], ctx.prevData[0]) ?? [];
247
+ actions.emit(evts);
248
+ },
249
+ {
250
+ name: "cascade",
251
+ describeKind: "derived",
252
+ initial: [],
253
+ meta: factMeta("cascade_topic", { cycle: "cascade" })
254
+ }
255
+ );
256
+ graph.add(cascade, { name: "cascade" });
257
+ graph.addDisposer(keepalive(cascade));
258
+ const cascadeOverflow = node([], {
259
+ initial: null,
260
+ name: "cascade_overflow",
261
+ describeKind: "state",
262
+ meta: factMeta("cascade_overflow")
263
+ });
264
+ graph.add(cascadeOverflow, { name: "cascade_overflow" });
265
+ graph.addDisposer(keepalive(cascadeOverflow));
266
+ const cascadeProcessor = node(
267
+ [cascade],
268
+ (batchData, actions, ctx) => {
269
+ const evts = lastOf(batchData[0], ctx.prevData[0]) ?? [];
270
+ if (evts.length === 0) {
271
+ actions.emit([]);
272
+ return;
273
+ }
274
+ const byId = /* @__PURE__ */ new Map();
275
+ for (const e of evts) if (!byId.has(e.factId)) byId.set(e.factId, e);
276
+ cascadeIteration += 1;
277
+ if (cascadeIteration > maxIterations) {
278
+ const sample = [...byId.keys()].slice(0, OVERFLOW_SAMPLE_SIZE);
279
+ const rootFactId = evts[0]?.rootFactId ?? "";
280
+ cascadeOverflow.emit({
281
+ droppedCount: byId.size,
282
+ sample,
283
+ rootFactId
284
+ });
285
+ events.append({
286
+ action: "overflow",
287
+ reason: "cascade",
288
+ id: rootFactId,
289
+ t_ns: wallClockNs(),
290
+ seq: bumpCursor(seqCursor)
291
+ });
292
+ actions.emit([]);
293
+ return;
294
+ }
295
+ const now = monotonicNs();
296
+ for (const [id] of byId) {
297
+ replaceFragment(
298
+ id,
299
+ (prev) => prev.validTo !== void 0 ? prev : { ...prev, validTo: BigInt(now) }
300
+ );
301
+ }
302
+ actions.emit([...byId.values()]);
303
+ },
304
+ {
305
+ name: "cascade_processor",
306
+ describeKind: "derived",
307
+ initial: [],
308
+ meta: factMeta("cascade_processor", { cycle: "cascade" })
309
+ }
310
+ );
311
+ graph.add(cascadeProcessor, { name: "cascade_processor" });
312
+ graph.addDisposer(keepalive(cascadeProcessor));
313
+ const review = node(
314
+ [factStore],
315
+ (batchData, actions, ctx) => {
316
+ const fs = lastOf(batchData[0], ctx.prevData[0]);
317
+ if (fs == null) {
318
+ actions.emit(null);
319
+ return;
320
+ }
321
+ for (const f of fs.byId.values()) {
322
+ if (f.confidence < reviewThreshold && f.validTo === void 0) {
323
+ actions.emit({
324
+ factId: f.id,
325
+ confidence: f.confidence,
326
+ threshold: reviewThreshold
327
+ });
328
+ return;
329
+ }
330
+ }
331
+ actions.emit(null);
332
+ },
333
+ {
334
+ name: "review",
335
+ describeKind: "derived",
336
+ initial: null,
337
+ meta: factMeta("review"),
338
+ // F10a: dedupe on the requested factId (null === no request) so a
339
+ // stable low-confidence fact does not re-emit a review every wave.
340
+ equals: (a, b) => (a?.factId ?? null) === (b?.factId ?? null)
341
+ }
342
+ );
343
+ graph.add(review, { name: "review" });
344
+ graph.addDisposer(keepalive(review));
345
+ if (config.outcome) {
346
+ const outcomeProcessor = node(
347
+ config.scoring ? [config.outcome, config.scoring] : [config.outcome],
348
+ (batchData, actions, ctx) => {
349
+ const sig = lastOf(batchData[0], ctx.prevData[0]);
350
+ if (sig == null) {
351
+ actions.emit(null);
352
+ return;
353
+ }
354
+ replaceFragment(sig.factId, (prev) => {
355
+ let nextConf = prev.confidence;
356
+ if (config.scoring) {
357
+ const policy = lastOf(batchData[1], ctx.prevData[1]);
358
+ if (policy) {
359
+ nextConf = policy(prev, makeReadHandle(allFacts()));
360
+ }
361
+ } else {
362
+ nextConf = Math.max(0, Math.min(1, prev.confidence + sig.reward));
363
+ }
364
+ return { ...prev, confidence: nextConf };
365
+ });
366
+ actions.emit(sig);
367
+ },
368
+ {
369
+ name: "outcome_processor",
370
+ describeKind: "derived",
371
+ initial: null,
372
+ meta: factMeta("outcome")
373
+ }
374
+ );
375
+ graph.add(outcomeProcessor, { name: "outcome_processor" });
376
+ graph.addDisposer(keepalive(outcomeProcessor));
377
+ }
378
+ const answer = node(
379
+ config.query ? [config.query, factStore] : [factStore],
380
+ (batchData, actions, ctx) => {
381
+ if (!config.query) {
382
+ actions.emit(null);
383
+ return;
384
+ }
385
+ const q = lastOf(batchData[0], ctx.prevData[0]);
386
+ const fs = lastOf(batchData[1], ctx.prevData[1]);
387
+ if (q == null) {
388
+ actions.emit(null);
389
+ return;
390
+ }
391
+ const store = fs ?? emptyStore();
392
+ let results = [...store.byId.values()].filter((f) => {
393
+ if (q.tags && q.tags.length > 0 && !q.tags.some((t) => f.tags.includes(t))) {
394
+ return false;
395
+ }
396
+ if (q.minConfidence !== void 0 && f.confidence < q.minConfidence) return false;
397
+ if (!currentlyValid(f, q.asOf)) return false;
398
+ return true;
399
+ });
400
+ results.sort((a, b) => b.confidence - a.confidence || Number(b.t_ns - a.t_ns));
401
+ if (q.limit !== void 0) results = results.slice(0, Math.max(0, q.limit));
402
+ actions.emit({ query: q, results });
403
+ },
404
+ {
405
+ name: "answer",
406
+ describeKind: "derived",
407
+ initial: null,
408
+ meta: factMeta("query", { role: "output" })
409
+ }
410
+ );
411
+ graph.add(answer, { name: "answer" });
412
+ graph.addDisposer(keepalive(answer));
413
+ const consolidated = node(
414
+ config.consolidateTrigger ? [config.consolidateTrigger] : [],
415
+ (batchData, actions, ctx) => {
416
+ void batchData;
417
+ void ctx;
418
+ if (!config.consolidateTrigger || !config.consolidate) {
419
+ actions.emit([]);
420
+ return;
421
+ }
422
+ const fragments = config.consolidate(makeReadHandle(allFacts()));
423
+ for (const f of fragments) {
424
+ const deps = config.extractDependencies(f);
425
+ processedRoots.delete(f.id);
426
+ commitFragment(f);
427
+ indexFragment(f, deps);
428
+ events.append({
429
+ action: "consolidate",
430
+ id: f.id,
431
+ t_ns: wallClockNs(),
432
+ seq: bumpCursor(seqCursor)
433
+ });
434
+ }
435
+ actions.emit(fragments);
436
+ },
437
+ {
438
+ name: "consolidated",
439
+ describeKind: "derived",
440
+ initial: [],
441
+ meta: factMeta("consolidator")
442
+ }
443
+ );
444
+ graph.add(consolidated, { name: "consolidated" });
445
+ graph.addDisposer(keepalive(consolidated));
446
+ const ingestAudit = node(
447
+ [extractOp],
448
+ (batchData, actions, ctx) => {
449
+ const f = lastOf(batchData[0], ctx.prevData[0]);
450
+ if (f != null) {
451
+ events.append({
452
+ action: "ingest",
453
+ id: f.id,
454
+ t_ns: wallClockNs(),
455
+ seq: bumpCursor(seqCursor)
456
+ });
457
+ }
458
+ actions.emit(f ?? null);
459
+ },
460
+ {
461
+ name: "_ingest_audit",
462
+ describeKind: "derived",
463
+ initial: null,
464
+ meta: factMeta("audit")
465
+ }
466
+ );
467
+ graph.add(ingestAudit, { name: "_ingest_audit" });
468
+ graph.addDisposer(keepalive(ingestAudit));
469
+ function itemNode(id) {
470
+ return node(
471
+ [factStore],
472
+ (batchData, actions, ctx) => {
473
+ const fs = lastOf(batchData[0], ctx.prevData[0]);
474
+ actions.emit(fs?.byId.get(id));
475
+ },
476
+ {
477
+ name: `item_${id}`,
478
+ describeKind: "derived",
479
+ meta: factMeta("item")
480
+ }
481
+ );
482
+ }
483
+ const out = Object.assign(graph, {
484
+ shards,
485
+ factStore,
486
+ dependentsIndex,
487
+ answer,
488
+ cascade,
489
+ cascadeOverflow,
490
+ review,
491
+ consolidated,
492
+ events,
493
+ itemNode
494
+ });
495
+ return out;
496
+ }
497
+
498
+ // src/utils/memory/index.ts
499
+ var NS_PER_SEC = 1e9;
500
+ function memoryMeta(kind, extra) {
501
+ return domainMeta("memory", kind, extra);
502
+ }
503
+ function toNode(v, name) {
504
+ if (v instanceof NodeImpl) return v;
505
+ return node2([], { initial: v, ...name ? { name } : void 0 });
506
+ }
507
+ function ageSeconds(now, lastNs) {
508
+ return (now - lastNs) / NS_PER_SEC;
509
+ }
510
+ function cosineSimilarity(a, b) {
511
+ const n = Math.max(a.length, b.length);
512
+ let dot = 0;
513
+ let na = 0;
514
+ let nb = 0;
515
+ for (let i = 0; i < n; i += 1) {
516
+ const av = a[i] ?? 0;
517
+ const bv = b[i] ?? 0;
518
+ dot += av * bv;
519
+ na += av * av;
520
+ nb += bv * bv;
521
+ }
522
+ if (na === 0 || nb === 0) return 0;
523
+ const score = dot / Math.sqrt(na * nb);
524
+ return Number.isFinite(score) ? score : 0;
525
+ }
526
+ function searchResultsEqual(a, b) {
527
+ if (a === b) return true;
528
+ if (a == null || b == null) return false;
529
+ if (a.length !== b.length) return false;
530
+ for (let i = 0; i < a.length; i += 1) {
531
+ const x = a[i];
532
+ const y = b[i];
533
+ if (x.id !== y.id || x.score !== y.score || x.meta !== y.meta) return false;
534
+ }
535
+ return true;
536
+ }
537
+ function rankedEqual(a, b) {
538
+ if (a === b) return true;
539
+ if (a == null || b == null) return false;
540
+ if (a.length !== b.length) return false;
541
+ for (let i = 0; i < a.length; i += 1) {
542
+ const x = a[i];
543
+ const y = b[i];
544
+ if (x.id !== y.id || x.score !== y.score || x.lastAccessNs !== y.lastAccessNs || x.value !== y.value)
545
+ return false;
546
+ }
547
+ return true;
548
+ }
549
+ function collection(name, opts = {}) {
550
+ const maxSize = opts.maxSize;
551
+ const ranked = opts.ranked ?? true;
552
+ const decayRate = ranked ? opts.decayRate ?? 0 : 0;
553
+ const minScore = opts.minScore ?? 0;
554
+ if (maxSize !== void 0 && maxSize < 1) {
555
+ throw new RangeError("collection: maxSize must be >= 1");
556
+ }
557
+ const scoreFnDefault = () => ranked ? 1 : 0;
558
+ const scoreInput = opts.score ?? scoreFnDefault;
559
+ const scoreNode = ranked && scoreInput instanceof NodeImpl ? scoreInput : void 0;
560
+ const readScoreFn = () => {
561
+ if (scoreNode) return scoreNode.cache ?? scoreFnDefault;
562
+ return scoreInput;
563
+ };
564
+ const graph = new Graph2(name);
565
+ const retentionScore = (_k, v) => ranked ? decay(v.baseScore, ageSeconds(monotonicNs2(), v.lastAccessNs), decayRate, minScore) : v.lastAccessNs;
566
+ const items = reactiveMap({
567
+ name: "items",
568
+ ...maxSize !== void 0 ? { retention: { score: retentionScore, maxSize } } : {}
569
+ });
570
+ graph.add(items.entries, { name: "items" });
571
+ let refreshTick;
572
+ if (ranked && decayRate > 0) {
573
+ const intervalMs = opts.refreshIntervalMs ?? Math.max(1, 1e3 * Math.LN2 / (10 * decayRate));
574
+ const tickCounter = fromTimer(intervalMs, { period: intervalMs });
575
+ refreshTick = node2(
576
+ [tickCounter],
577
+ (_batchData, actions) => {
578
+ actions.emit(monotonicNs2());
579
+ },
580
+ {
581
+ name: "refresh_tick_ns",
582
+ describeKind: "derived",
583
+ initial: monotonicNs2(),
584
+ meta: memoryMeta("clock")
585
+ }
586
+ );
587
+ graph.add(refreshTick, { name: "refresh_tick_ns" });
588
+ }
589
+ let rankedNode;
590
+ if (ranked) {
591
+ const rankedDeps = [items.entries];
592
+ if (refreshTick) rankedDeps.push(refreshTick);
593
+ if (scoreNode) rankedDeps.push(scoreNode);
594
+ rankedNode = node2(
595
+ rankedDeps,
596
+ (batchData, actions, ctx) => {
597
+ const values = batchData.map(
598
+ (batch, i) => batch != null && batch.length > 0 ? batch.at(-1) : ctx.prevData[i]
599
+ );
600
+ const snapshot = values[0];
601
+ let now;
602
+ if (refreshTick) {
603
+ const tickValue = values[1];
604
+ now = typeof tickValue === "number" ? tickValue : monotonicNs2();
605
+ } else {
606
+ now = monotonicNs2();
607
+ }
608
+ if (!snapshot || snapshot.size === 0) {
609
+ actions.emit([]);
610
+ return;
611
+ }
612
+ const out2 = [];
613
+ for (const entry of snapshot.values()) {
614
+ out2.push({
615
+ ...entry,
616
+ score: decay(entry.baseScore, ageSeconds(now, entry.lastAccessNs), decayRate, minScore)
617
+ });
618
+ }
619
+ out2.sort((a, b) => b.score - a.score || b.lastAccessNs - a.lastAccessNs);
620
+ actions.emit(out2);
621
+ },
622
+ {
623
+ name: "ranked",
624
+ describeKind: "derived",
625
+ equals: rankedEqual,
626
+ meta: memoryMeta("ranked")
627
+ }
628
+ );
629
+ graph.add(rankedNode, { name: "ranked" });
630
+ } else {
631
+ rankedNode = node2([], {
632
+ initial: [],
633
+ name: "ranked",
634
+ describeKind: "state",
635
+ meta: memoryMeta("ranked_disabled")
636
+ });
637
+ graph.add(rankedNode, { name: "ranked" });
638
+ }
639
+ const size = node2(
640
+ [items.entries],
641
+ (batchData, actions, ctx) => {
642
+ const data = batchData.map(
643
+ (batch, i) => batch != null && batch.length > 0 ? batch.at(-1) : ctx.prevData[i]
644
+ );
645
+ const snapshot = data[0];
646
+ actions.emit((snapshot ?? /* @__PURE__ */ new Map()).size);
647
+ },
648
+ {
649
+ name: "size",
650
+ describeKind: "derived",
651
+ initial: 0,
652
+ meta: memoryMeta("size")
653
+ }
654
+ );
655
+ graph.add(size, { name: "size" });
656
+ graph.addDisposer(keepalive2(size));
657
+ const events = createAuditLog({
658
+ name: "events",
659
+ retainedLimit: 1024,
660
+ graph
661
+ });
662
+ const seqCursor = registerCursor(graph, "seq", 0);
663
+ const upsertImpl = (id, value, _opts) => {
664
+ const now = monotonicNs2();
665
+ const prev = items.get(id);
666
+ const baseScore = _opts?.score ?? readScoreFn()(value);
667
+ items.set(id, {
668
+ id,
669
+ value,
670
+ baseScore,
671
+ createdAtNs: prev?.createdAtNs ?? now,
672
+ lastAccessNs: now
673
+ });
674
+ };
675
+ const removeImpl = (id) => {
676
+ if (!items.has(id)) return;
677
+ items.delete(id);
678
+ };
679
+ const clearImpl = () => {
680
+ if (items.size === 0) return;
681
+ items.clear();
682
+ };
683
+ const rescoreImpl = () => {
684
+ if (!ranked) return;
685
+ const fn = readScoreFn();
686
+ const snapshot = items.entries.cache;
687
+ if (!snapshot || snapshot.size === 0) return;
688
+ const updates = [];
689
+ for (const entry of snapshot.values()) {
690
+ updates.push([entry.id, { ...entry, baseScore: fn(entry.value) }]);
691
+ }
692
+ items.setMany(updates);
693
+ };
694
+ const upsert = mutate(upsertImpl, {
695
+ frame: "inline",
696
+ log: events,
697
+ seq: seqCursor,
698
+ onSuccessRecord: ([id], _r, m) => ({ action: "upsert", id, t_ns: m.t_ns, seq: m.seq })
699
+ });
700
+ const remove = mutate(removeImpl, {
701
+ frame: "inline",
702
+ log: events,
703
+ seq: seqCursor,
704
+ onSuccessRecord: ([id], _r, m) => ({ action: "remove", id, t_ns: m.t_ns, seq: m.seq })
705
+ });
706
+ const clear = mutate(clearImpl, {
707
+ frame: "inline",
708
+ log: events,
709
+ seq: seqCursor,
710
+ onSuccessRecord: (_args, _r, m) => ({ action: "clear", t_ns: m.t_ns, seq: m.seq })
711
+ });
712
+ const rescore = mutate(rescoreImpl, {
713
+ frame: "inline",
714
+ log: events,
715
+ seq: seqCursor,
716
+ onSuccessRecord: (_args, _r, m) => ({ action: "rescore", t_ns: m.t_ns, seq: m.seq })
717
+ });
718
+ function itemNode(id) {
719
+ const idN = toNode(id, "id");
720
+ return node2(
721
+ [items.entries, idN],
722
+ (batchData, actions, ctx) => {
723
+ const data = batchData.map(
724
+ (batch, i) => batch != null && batch.length > 0 ? batch.at(-1) : ctx.prevData[i]
725
+ );
726
+ const map = data[0];
727
+ const key = data[1];
728
+ actions.emit(map?.get(key));
729
+ },
730
+ {
731
+ describeKind: "derived",
732
+ meta: memoryMeta("collection_item")
733
+ }
734
+ );
735
+ }
736
+ function hasNode(id) {
737
+ const idN = toNode(id, "id");
738
+ return node2(
739
+ [items.entries, idN],
740
+ (batchData, actions, ctx) => {
741
+ const data = batchData.map(
742
+ (batch, i) => batch != null && batch.length > 0 ? batch.at(-1) : ctx.prevData[i]
743
+ );
744
+ const map = data[0];
745
+ const key = data[1];
746
+ actions.emit(map?.has(key) ?? false);
747
+ },
748
+ {
749
+ describeKind: "derived",
750
+ meta: memoryMeta("collection_has")
751
+ }
752
+ );
753
+ }
754
+ const out = Object.assign(graph, {
755
+ events,
756
+ items: items.entries,
757
+ ranked: rankedNode,
758
+ size,
759
+ upsert,
760
+ remove,
761
+ clear,
762
+ rescore,
763
+ itemNode,
764
+ hasNode
765
+ });
766
+ return out;
767
+ }
768
+ function vectorIndex(opts = {}) {
769
+ const backend = opts.backend ?? "flat";
770
+ const dimension = opts.dimension;
771
+ const strictDimension = opts.strictDimension ?? true;
772
+ const maxSize = opts.maxSize;
773
+ const userRetentionScore = opts.retentionScore;
774
+ let hnsw;
775
+ if (backend === "hnsw") {
776
+ hnsw = opts.hnswFactory?.();
777
+ if (!hnsw) {
778
+ throw new Error(
779
+ 'vectorIndex backend "hnsw" requires an optional dependency adapter; install your HNSW package and provide `hnswFactory`.'
780
+ );
781
+ }
782
+ }
783
+ const graph = new Graph2(opts.name ?? "vector_index");
784
+ let inferredDimension;
785
+ function assertDimension(vector) {
786
+ if (dimension !== void 0) {
787
+ if (vector.length !== dimension) {
788
+ throw new RangeError(
789
+ `vector dimension mismatch: expected ${dimension}, got ${vector.length}`
790
+ );
791
+ }
792
+ return;
793
+ }
794
+ if (!strictDimension) return;
795
+ if (inferredDimension === void 0) {
796
+ inferredDimension = vector.length;
797
+ return;
798
+ }
799
+ if (vector.length !== inferredDimension) {
800
+ throw new RangeError(
801
+ `vector dimension mismatch: inferred ${inferredDimension} from first upsert, got ${vector.length}. Pass \`strictDimension: false\` to opt into zero-pad behavior, or set an explicit \`dimension\`.`
802
+ );
803
+ }
804
+ }
805
+ const baseRetentionScore = userRetentionScore ?? ((r) => r.upsertedAtNs);
806
+ let clearInProgress = false;
807
+ const events = createAuditLog({
808
+ name: "events",
809
+ retainedLimit: 1024,
810
+ graph
811
+ });
812
+ const seqCursor = registerCursor(graph, "seq", 0);
813
+ const entries = reactiveMap({
814
+ name: "entries",
815
+ ...maxSize !== void 0 ? {
816
+ retention: {
817
+ score: (_k, v) => baseRetentionScore(v),
818
+ maxSize,
819
+ onArchive: (key) => {
820
+ if (clearInProgress) return;
821
+ if (backend === "hnsw") hnsw.remove(key);
822
+ events.append({
823
+ action: "evict",
824
+ id: key,
825
+ t_ns: wallClockNs2(),
826
+ seq: bumpCursor(seqCursor)
827
+ });
828
+ }
829
+ }
830
+ } : {}
831
+ });
832
+ graph.add(entries.entries, { name: "entries" });
833
+ graph.addDisposer(keepalive2(entries.entries));
834
+ if (hnsw?.dispose) {
835
+ const disposeAdapter = hnsw.dispose.bind(hnsw);
836
+ graph.addDisposer(() => disposeAdapter());
837
+ }
838
+ const upsertImpl = (id, vector, meta) => {
839
+ assertDimension(vector);
840
+ if (backend === "hnsw") hnsw.upsert(id, vector, meta);
841
+ const copiedMeta = (() => {
842
+ if (meta === void 0) return void 0;
843
+ if (meta === null || typeof meta !== "object") return meta;
844
+ return Array.isArray(meta) ? [...meta] : { ...meta };
845
+ })();
846
+ const record = {
847
+ id,
848
+ vector: [...vector],
849
+ ...copiedMeta !== void 0 ? { meta: copiedMeta } : {},
850
+ upsertedAtNs: monotonicNs2()
851
+ };
852
+ entries.set(id, record);
853
+ };
854
+ const removeImpl = (id) => {
855
+ if (!entries.has(id)) return;
856
+ if (backend === "hnsw") hnsw.remove(id);
857
+ entries.delete(id);
858
+ };
859
+ const clearImpl = () => {
860
+ if (entries.size === 0) return;
861
+ clearInProgress = true;
862
+ try {
863
+ entries.clear();
864
+ if (backend === "hnsw") hnsw.clear();
865
+ } finally {
866
+ clearInProgress = false;
867
+ }
868
+ inferredDimension = void 0;
869
+ };
870
+ const reindexImpl = () => {
871
+ if (backend !== "hnsw") return;
872
+ const snapshot = entries.entries.cache;
873
+ if (!snapshot) return;
874
+ hnsw.clear();
875
+ for (const r of snapshot.values()) {
876
+ hnsw.upsert(r.id, r.vector, r.meta);
877
+ }
878
+ };
879
+ const upsert = mutate(upsertImpl, {
880
+ frame: "inline",
881
+ log: events,
882
+ freeze: false,
883
+ seq: seqCursor,
884
+ onSuccessRecord: ([id], _r, m) => ({ action: "upsert", id, t_ns: m.t_ns, seq: m.seq })
885
+ });
886
+ const remove = mutate(removeImpl, {
887
+ frame: "inline",
888
+ log: events,
889
+ seq: seqCursor,
890
+ onSuccessRecord: ([id], _r, m) => ({ action: "remove", id, t_ns: m.t_ns, seq: m.seq })
891
+ });
892
+ const clear = mutate(clearImpl, {
893
+ frame: "inline",
894
+ log: events,
895
+ seq: seqCursor,
896
+ onSuccessRecord: (_args, _r, m) => ({ action: "clear", t_ns: m.t_ns, seq: m.seq })
897
+ });
898
+ const reindex = mutate(reindexImpl, {
899
+ frame: "inline",
900
+ log: events,
901
+ seq: seqCursor,
902
+ onSuccessRecord: (_args, _r, m) => ({ action: "reindex", t_ns: m.t_ns, seq: m.seq })
903
+ });
904
+ function searchNode(query, k = 5) {
905
+ const kN = toNode(k, "k");
906
+ return node2(
907
+ [entries.entries, query, kN],
908
+ (batchData, actions, ctx) => {
909
+ const values = batchData.map(
910
+ (batch, i) => batch != null && batch.length > 0 ? batch.at(-1) : ctx.prevData[i]
911
+ );
912
+ const snapshot = values[0];
913
+ const q = values[1];
914
+ const kRaw = values[2];
915
+ const kVal = Number.isFinite(kRaw) ? Math.max(0, Math.floor(kRaw)) : 0;
916
+ if (!snapshot || snapshot.size === 0 || kVal <= 0) {
917
+ actions.emit([]);
918
+ return;
919
+ }
920
+ if (q == null || q.length === 0) {
921
+ actions.emit([]);
922
+ return;
923
+ }
924
+ const expectedDim = dimension ?? (strictDimension ? inferredDimension : void 0);
925
+ if (expectedDim !== void 0 && q.length !== expectedDim) {
926
+ actions.emit([]);
927
+ return;
928
+ }
929
+ if (backend === "hnsw") {
930
+ const adapterResults = hnsw.search(q, kVal);
931
+ actions.emit([...adapterResults]);
932
+ return;
933
+ }
934
+ const ranked = [...snapshot.values()].map((row) => {
935
+ const result = {
936
+ id: row.id,
937
+ score: cosineSimilarity(q, row.vector),
938
+ ...row.meta !== void 0 ? { meta: row.meta } : {}
939
+ };
940
+ return result;
941
+ }).sort((a, b) => b.score - a.score).slice(0, kVal);
942
+ actions.emit(ranked);
943
+ },
944
+ {
945
+ describeKind: "derived",
946
+ // A1: include `score` in equality. The previous id-only
947
+ // comparator suppressed re-emissions when the same set of
948
+ // IDs/order had different scores (re-upsert with new
949
+ // vector; query change preserving ranking order).
950
+ equals: (a, b) => searchResultsEqual(a, b),
951
+ meta: memoryMeta("vector_search")
952
+ }
953
+ );
954
+ }
955
+ const out = Object.assign(graph, {
956
+ backend,
957
+ events,
958
+ entries: entries.entries,
959
+ upsert,
960
+ remove,
961
+ clear,
962
+ reindex,
963
+ searchNode
964
+ });
965
+ return out;
966
+ }
967
+ var TRIPLE_SEP = "\0";
968
+ function tripleKey(from, to, relation) {
969
+ return `${from}${TRIPLE_SEP}${to}${TRIPLE_SEP}${relation}`;
970
+ }
971
+ function buildAdjacency(edges, side) {
972
+ if (!edges || edges.size === 0) return /* @__PURE__ */ new Map();
973
+ const buckets = /* @__PURE__ */ new Map();
974
+ for (const edge of edges.values()) {
975
+ const key = side === "from" ? edge.from : edge.to;
976
+ let bucket = buckets.get(key);
977
+ if (!bucket) {
978
+ bucket = [];
979
+ buckets.set(key, bucket);
980
+ }
981
+ bucket.push(edge);
982
+ }
983
+ const out = /* @__PURE__ */ new Map();
984
+ for (const [key, bucket] of buckets) out.set(key, Object.freeze(bucket));
985
+ return out;
986
+ }
987
+ function adjacencyEqual(a, b) {
988
+ if (a === b) return true;
989
+ if (a == null || b == null) return false;
990
+ if (a.size !== b.size) return false;
991
+ for (const [k, av] of a) {
992
+ const bv = b.get(k);
993
+ if (!bv || av.length !== bv.length) return false;
994
+ for (let i = 0; i < av.length; i += 1) {
995
+ const ae = av[i];
996
+ const be = bv[i];
997
+ if (ae.from !== be.from || ae.to !== be.to || ae.relation !== be.relation || ae.weight !== be.weight)
998
+ return false;
999
+ }
1000
+ }
1001
+ return true;
1002
+ }
1003
+ function knowledgeGraph(name, opts = {}) {
1004
+ const orphanGC = opts.orphanGC ?? "keep";
1005
+ if (opts.entitiesMaxSize !== void 0 && opts.entitiesMaxSize < 1) {
1006
+ throw new RangeError("knowledgeGraph: entitiesMaxSize must be >= 1");
1007
+ }
1008
+ if (opts.edgesMaxSize !== void 0 && opts.edgesMaxSize < 1) {
1009
+ throw new RangeError("knowledgeGraph: edgesMaxSize must be >= 1");
1010
+ }
1011
+ const graph = new Graph2(name);
1012
+ const entitiesMap = reactiveMap({
1013
+ name: "entities",
1014
+ ...opts.entitiesMaxSize !== void 0 ? { maxSize: opts.entitiesMaxSize } : {}
1015
+ });
1016
+ const edgesMap = reactiveMap({
1017
+ name: "edges",
1018
+ ...opts.edgesMaxSize !== void 0 ? { maxSize: opts.edgesMaxSize } : {}
1019
+ });
1020
+ graph.add(entitiesMap.entries, { name: "entities" });
1021
+ graph.add(edgesMap.entries, { name: "edges" });
1022
+ const adjacencyOut = node2(
1023
+ [edgesMap.entries],
1024
+ (batchData, actions, ctx) => {
1025
+ const data = batchData.map(
1026
+ (batch, i) => batch != null && batch.length > 0 ? batch.at(-1) : ctx.prevData[i]
1027
+ );
1028
+ const snapshot = data[0];
1029
+ actions.emit(buildAdjacency(snapshot, "from"));
1030
+ },
1031
+ {
1032
+ name: "adjacencyOut",
1033
+ describeKind: "derived",
1034
+ initial: /* @__PURE__ */ new Map(),
1035
+ equals: adjacencyEqual,
1036
+ meta: memoryMeta("adjacency_out")
1037
+ }
1038
+ );
1039
+ const adjacencyIn = node2(
1040
+ [edgesMap.entries],
1041
+ (batchData, actions, ctx) => {
1042
+ const data = batchData.map(
1043
+ (batch, i) => batch != null && batch.length > 0 ? batch.at(-1) : ctx.prevData[i]
1044
+ );
1045
+ const snapshot = data[0];
1046
+ actions.emit(buildAdjacency(snapshot, "to"));
1047
+ },
1048
+ {
1049
+ name: "adjacencyIn",
1050
+ describeKind: "derived",
1051
+ initial: /* @__PURE__ */ new Map(),
1052
+ equals: adjacencyEqual,
1053
+ meta: memoryMeta("adjacency_in")
1054
+ }
1055
+ );
1056
+ graph.add(adjacencyOut, { name: "adjacencyOut" });
1057
+ graph.add(adjacencyIn, { name: "adjacencyIn" });
1058
+ graph.addDisposer(keepalive2(adjacencyOut));
1059
+ graph.addDisposer(keepalive2(adjacencyIn));
1060
+ const entityCount = node2(
1061
+ [entitiesMap.entries],
1062
+ (batchData, actions, ctx) => {
1063
+ const data = batchData.map(
1064
+ (batch, i) => batch != null && batch.length > 0 ? batch.at(-1) : ctx.prevData[i]
1065
+ );
1066
+ const m = data[0];
1067
+ actions.emit((m ?? /* @__PURE__ */ new Map()).size);
1068
+ },
1069
+ { name: "entityCount", describeKind: "derived", initial: 0, meta: memoryMeta("entity_count") }
1070
+ );
1071
+ const edgeCount = node2(
1072
+ [edgesMap.entries],
1073
+ (batchData, actions, ctx) => {
1074
+ const data = batchData.map(
1075
+ (batch, i) => batch != null && batch.length > 0 ? batch.at(-1) : ctx.prevData[i]
1076
+ );
1077
+ const m = data[0];
1078
+ actions.emit((m ?? /* @__PURE__ */ new Map()).size);
1079
+ },
1080
+ { name: "edgeCount", describeKind: "derived", initial: 0, meta: memoryMeta("edge_count") }
1081
+ );
1082
+ graph.add(entityCount, { name: "entityCount" });
1083
+ graph.add(edgeCount, { name: "edgeCount" });
1084
+ graph.addDisposer(keepalive2(entityCount));
1085
+ graph.addDisposer(keepalive2(edgeCount));
1086
+ const events = createAuditLog({
1087
+ name: "events",
1088
+ retainedLimit: 1024,
1089
+ graph
1090
+ });
1091
+ const seqCursor = registerCursor(graph, "seq", 0);
1092
+ function entityHasReferences(id) {
1093
+ const out2 = adjacencyOut.cache;
1094
+ const inb = adjacencyIn.cache;
1095
+ if ((out2?.get(id)?.length ?? 0) > 0) return true;
1096
+ if ((inb?.get(id)?.length ?? 0) > 0) return true;
1097
+ return false;
1098
+ }
1099
+ function applyOrphanGC(candidates) {
1100
+ if (orphanGC !== "remove") return;
1101
+ for (const candidate of candidates) {
1102
+ if (!entitiesMap.has(candidate)) continue;
1103
+ if (entityHasReferences(candidate)) continue;
1104
+ entitiesMap.delete(candidate);
1105
+ events.append({
1106
+ action: "orphanRemove",
1107
+ id: candidate,
1108
+ t_ns: wallClockNs2(),
1109
+ seq: bumpCursor(seqCursor)
1110
+ });
1111
+ }
1112
+ }
1113
+ const upsertEntityImpl = (id, value) => {
1114
+ entitiesMap.set(id, value);
1115
+ };
1116
+ const removeEntityImpl = (id) => {
1117
+ const snapshot = edgesMap.entries.cache;
1118
+ const cascadedNeighbors = /* @__PURE__ */ new Set();
1119
+ if (snapshot) {
1120
+ const toDrop = [];
1121
+ for (const [key, edge] of snapshot) {
1122
+ if (edge.from === id || edge.to === id) {
1123
+ toDrop.push(key);
1124
+ if (edge.from !== id) cascadedNeighbors.add(edge.from);
1125
+ if (edge.to !== id) cascadedNeighbors.add(edge.to);
1126
+ }
1127
+ }
1128
+ if (toDrop.length > 0) edgesMap.deleteMany(toDrop);
1129
+ }
1130
+ if (entitiesMap.has(id)) entitiesMap.delete(id);
1131
+ applyOrphanGC([...cascadedNeighbors]);
1132
+ };
1133
+ const linkImpl = (from, to, relation, weight = 1) => {
1134
+ edgesMap.set(tripleKey(from, to, relation), { from, to, relation, weight });
1135
+ };
1136
+ const unlinkImpl = (from, to, relation) => {
1137
+ if (relation !== void 0) {
1138
+ edgesMap.delete(tripleKey(from, to, relation));
1139
+ } else {
1140
+ const snapshot = edgesMap.entries.cache;
1141
+ if (!snapshot) return;
1142
+ const toDrop = [];
1143
+ for (const [key, edge] of snapshot) {
1144
+ if (edge.from === from && edge.to === to) toDrop.push(key);
1145
+ }
1146
+ if (toDrop.length > 0) edgesMap.deleteMany(toDrop);
1147
+ }
1148
+ applyOrphanGC([from, to]);
1149
+ };
1150
+ const upsertEntity = mutate(upsertEntityImpl, {
1151
+ frame: "inline",
1152
+ log: events,
1153
+ seq: seqCursor,
1154
+ onSuccessRecord: ([id], _r, m) => ({
1155
+ action: "upsertEntity",
1156
+ id,
1157
+ t_ns: m.t_ns,
1158
+ seq: m.seq
1159
+ })
1160
+ });
1161
+ const removeEntity = mutate(removeEntityImpl, {
1162
+ frame: "inline",
1163
+ log: events,
1164
+ seq: seqCursor,
1165
+ onSuccessRecord: ([id], _r, m) => ({
1166
+ action: "removeEntity",
1167
+ id,
1168
+ t_ns: m.t_ns,
1169
+ seq: m.seq
1170
+ })
1171
+ });
1172
+ const link = mutate(linkImpl, {
1173
+ frame: "inline",
1174
+ log: events,
1175
+ seq: seqCursor,
1176
+ onSuccessRecord: ([from, to, relation, weight], _r, m) => ({
1177
+ action: "link",
1178
+ from,
1179
+ to,
1180
+ relation,
1181
+ weight: weight ?? 1,
1182
+ t_ns: m.t_ns,
1183
+ seq: m.seq
1184
+ })
1185
+ });
1186
+ const unlink = mutate(unlinkImpl, {
1187
+ frame: "inline",
1188
+ log: events,
1189
+ seq: seqCursor,
1190
+ onSuccessRecord: ([from, to, relation], _r, m) => ({
1191
+ action: "unlink",
1192
+ from,
1193
+ to,
1194
+ ...relation !== void 0 ? { relation } : {},
1195
+ t_ns: m.t_ns,
1196
+ seq: m.seq
1197
+ })
1198
+ });
1199
+ function relatedNode(id, relation) {
1200
+ const idN = toNode(id, "id");
1201
+ const relN = relation !== void 0 ? toNode(relation, "relation") : void 0;
1202
+ const deps = relN ? [adjacencyOut, adjacencyIn, idN, relN] : [adjacencyOut, adjacencyIn, idN];
1203
+ return node2(
1204
+ deps,
1205
+ (batchData, actions, ctx) => {
1206
+ const values = batchData.map(
1207
+ (batch, i) => batch != null && batch.length > 0 ? batch.at(-1) : ctx.prevData[i]
1208
+ );
1209
+ const out2 = values[0];
1210
+ const inb = values[1];
1211
+ const key = values[2];
1212
+ const rel = relN ? values[3] : void 0;
1213
+ const outE = out2?.get(key) ?? [];
1214
+ const inE = inb?.get(key) ?? [];
1215
+ const seen = /* @__PURE__ */ new Set();
1216
+ const acc = [];
1217
+ for (const edge of outE) {
1218
+ const k = tripleKey(edge.from, edge.to, edge.relation);
1219
+ if (seen.has(k)) continue;
1220
+ if (rel !== void 0 && edge.relation !== rel) continue;
1221
+ seen.add(k);
1222
+ acc.push(edge);
1223
+ }
1224
+ for (const edge of inE) {
1225
+ const k = tripleKey(edge.from, edge.to, edge.relation);
1226
+ if (seen.has(k)) continue;
1227
+ if (rel !== void 0 && edge.relation !== rel) continue;
1228
+ seen.add(k);
1229
+ acc.push(edge);
1230
+ }
1231
+ actions.emit(acc);
1232
+ },
1233
+ {
1234
+ describeKind: "derived",
1235
+ equals: (a, b) => {
1236
+ const av = a;
1237
+ const bv = b;
1238
+ if (av === bv) return true;
1239
+ if (av == null || bv == null) return false;
1240
+ if (av.length !== bv.length) return false;
1241
+ for (let i = 0; i < av.length; i += 1) {
1242
+ const x = av[i];
1243
+ const y = bv[i];
1244
+ if (x.from !== y.from || x.to !== y.to || x.relation !== y.relation || x.weight !== y.weight)
1245
+ return false;
1246
+ }
1247
+ return true;
1248
+ },
1249
+ meta: memoryMeta("related")
1250
+ }
1251
+ );
1252
+ }
1253
+ const out = Object.assign(graph, {
1254
+ events,
1255
+ entities: entitiesMap.entries,
1256
+ edges: edgesMap.entries,
1257
+ adjacencyOut,
1258
+ adjacencyIn,
1259
+ entityCount,
1260
+ edgeCount,
1261
+ upsertEntity,
1262
+ removeEntity,
1263
+ link,
1264
+ unlink,
1265
+ relatedNode
1266
+ });
1267
+ return out;
1268
+ }
1269
+
1270
+ export {
1271
+ reactiveFactStore,
1272
+ cosineSimilarity,
1273
+ collection,
1274
+ vectorIndex,
1275
+ knowledgeGraph
1276
+ };
1277
+ //# sourceMappingURL=chunk-FR6RGA3B.js.map