@nicia-ai/typegraph 0.44.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 (392) hide show
  1. package/dist/backend/drizzle/indexes.cjs +11 -11
  2. package/dist/backend/drizzle/indexes.d.cts +1 -1
  3. package/dist/backend/drizzle/indexes.d.ts +1 -1
  4. package/dist/backend/drizzle/indexes.js +7 -7
  5. package/dist/backend/index.cjs +53 -54
  6. package/dist/backend/index.d.cts +3 -3
  7. package/dist/backend/index.d.ts +3 -3
  8. package/dist/backend/index.js +13 -14
  9. package/dist/backend/postgres/index.cjs +29 -30
  10. package/dist/backend/postgres/index.d.cts +7 -7
  11. package/dist/backend/postgres/index.d.ts +7 -7
  12. package/dist/backend/postgres/index.js +16 -17
  13. package/dist/backend/postgres/pglite-store.cjs +48 -43
  14. package/dist/backend/postgres/pglite-store.cjs.map +1 -1
  15. package/dist/backend/postgres/pglite-store.d.cts +15 -9
  16. package/dist/backend/postgres/pglite-store.d.ts +15 -9
  17. package/dist/backend/postgres/pglite-store.js +44 -39
  18. package/dist/backend/postgres/pglite-store.js.map +1 -1
  19. package/dist/backend/postgres/pglite.cjs +18 -19
  20. package/dist/backend/postgres/pglite.d.cts +4 -4
  21. package/dist/backend/postgres/pglite.d.ts +4 -4
  22. package/dist/backend/postgres/pglite.js +17 -18
  23. package/dist/backend/sqlite/index.cjs +26 -27
  24. package/dist/backend/sqlite/index.d.cts +6 -6
  25. package/dist/backend/sqlite/index.d.ts +6 -6
  26. package/dist/backend/sqlite/index.js +14 -15
  27. package/dist/backend/sqlite/libsql.cjs +21 -22
  28. package/dist/backend/sqlite/libsql.cjs.map +1 -1
  29. package/dist/backend/sqlite/libsql.d.cts +15 -8
  30. package/dist/backend/sqlite/libsql.d.ts +15 -8
  31. package/dist/backend/sqlite/libsql.js +17 -18
  32. package/dist/backend/sqlite/libsql.js.map +1 -1
  33. package/dist/backend/sqlite/local-store.cjs +49 -44
  34. package/dist/backend/sqlite/local-store.cjs.map +1 -1
  35. package/dist/backend/sqlite/local-store.d.cts +15 -10
  36. package/dist/backend/sqlite/local-store.d.ts +15 -10
  37. package/dist/backend/sqlite/local-store.js +45 -40
  38. package/dist/backend/sqlite/local-store.js.map +1 -1
  39. package/dist/backend/sqlite/local.cjs +19 -20
  40. package/dist/backend/sqlite/local.d.cts +3 -3
  41. package/dist/backend/sqlite/local.d.ts +3 -3
  42. package/dist/backend/sqlite/local.js +17 -18
  43. package/dist/{chunk-XMYJY7NI.js → chunk-2LG2XB2M.js} +3 -3
  44. package/dist/{chunk-XMYJY7NI.js.map → chunk-2LG2XB2M.js.map} +1 -1
  45. package/dist/{chunk-QGKILWGZ.cjs → chunk-2NA5DYLO.cjs} +4 -4
  46. package/dist/{chunk-QGKILWGZ.cjs.map → chunk-2NA5DYLO.cjs.map} +1 -1
  47. package/dist/{chunk-5MUSU4ZP.cjs → chunk-3DHZCOT7.cjs} +20 -20
  48. package/dist/chunk-3DHZCOT7.cjs.map +1 -0
  49. package/dist/{chunk-OVUUTCPJ.cjs → chunk-4UGOKMI5.cjs} +268 -150
  50. package/dist/chunk-4UGOKMI5.cjs.map +1 -0
  51. package/dist/{chunk-FRHHDHKH.js → chunk-5262ZMTR.js} +26 -5
  52. package/dist/chunk-5262ZMTR.js.map +1 -0
  53. package/dist/{chunk-HOIFFY4M.js → chunk-5763DULU.js} +248 -76
  54. package/dist/chunk-5763DULU.js.map +1 -0
  55. package/dist/{chunk-7G32LIQM.js → chunk-5UVRGXD3.js} +277 -7
  56. package/dist/chunk-5UVRGXD3.js.map +1 -0
  57. package/dist/{chunk-IIT5K7SK.cjs → chunk-62ZP23AW.cjs} +15 -15
  58. package/dist/{chunk-IIT5K7SK.cjs.map → chunk-62ZP23AW.cjs.map} +1 -1
  59. package/dist/{chunk-S4KQ5LV4.js → chunk-775A4ZMN.js} +40 -6
  60. package/dist/chunk-775A4ZMN.js.map +1 -0
  61. package/dist/{chunk-QYWINYEA.cjs → chunk-7BQXPCGN.cjs} +830 -170
  62. package/dist/chunk-7BQXPCGN.cjs.map +1 -0
  63. package/dist/{chunk-FJMPR3OH.cjs → chunk-7EO3TCQB.cjs} +33 -7
  64. package/dist/chunk-7EO3TCQB.cjs.map +1 -0
  65. package/dist/chunk-7GT72YHH.cjs +1979 -0
  66. package/dist/chunk-7GT72YHH.cjs.map +1 -0
  67. package/dist/{chunk-SQRD2CYF.js → chunk-7VQXLT5O.js} +717 -76
  68. package/dist/chunk-7VQXLT5O.js.map +1 -0
  69. package/dist/{chunk-BCP7LLOY.js → chunk-7Z5OR7KO.js} +2706 -625
  70. package/dist/chunk-7Z5OR7KO.js.map +1 -0
  71. package/dist/chunk-A4OC4DVN.cjs +12 -0
  72. package/dist/{chunk-4SZ6XPTG.cjs.map → chunk-A4OC4DVN.cjs.map} +1 -1
  73. package/dist/{chunk-TDXIBCGY.cjs → chunk-A7J2YDDI.cjs} +5 -3
  74. package/dist/chunk-A7J2YDDI.cjs.map +1 -0
  75. package/dist/{chunk-FMMIX6N4.js → chunk-AKLS3BYZ.js} +56 -5
  76. package/dist/chunk-AKLS3BYZ.js.map +1 -0
  77. package/dist/{chunk-D7PG5D5K.js → chunk-AMKPPFUO.js} +32 -6
  78. package/dist/chunk-AMKPPFUO.js.map +1 -0
  79. package/dist/{chunk-PAW2XUZN.js → chunk-ASTI57H3.js} +3 -3
  80. package/dist/{chunk-PAW2XUZN.js.map → chunk-ASTI57H3.js.map} +1 -1
  81. package/dist/{chunk-FMGEZBAQ.js → chunk-BKCUOV7A.js} +27 -5
  82. package/dist/chunk-BKCUOV7A.js.map +1 -0
  83. package/dist/chunk-BSFJMMV3.cjs +268 -0
  84. package/dist/chunk-BSFJMMV3.cjs.map +1 -0
  85. package/dist/{chunk-63KCKSSH.js → chunk-C23WSN5E.js} +209 -24
  86. package/dist/chunk-C23WSN5E.js.map +1 -0
  87. package/dist/{chunk-JRP3VGHS.js → chunk-CBTIUB76.js} +3 -3
  88. package/dist/{chunk-JRP3VGHS.js.map → chunk-CBTIUB76.js.map} +1 -1
  89. package/dist/chunk-CNV4TXJG.js +58 -0
  90. package/dist/chunk-CNV4TXJG.js.map +1 -0
  91. package/dist/{chunk-QB6VMOJ2.cjs → chunk-CXBHOOIQ.cjs} +45 -10
  92. package/dist/chunk-CXBHOOIQ.cjs.map +1 -0
  93. package/dist/{chunk-46GDII45.js → chunk-DCQVHAYQ.js} +5 -5
  94. package/dist/{chunk-46GDII45.js.map → chunk-DCQVHAYQ.js.map} +1 -1
  95. package/dist/chunk-DLNROMQ7.js +306 -0
  96. package/dist/chunk-DLNROMQ7.js.map +1 -0
  97. package/dist/chunk-DYATYRY4.js +47 -0
  98. package/dist/chunk-DYATYRY4.js.map +1 -0
  99. package/dist/chunk-E4WNQBEF.cjs +217 -0
  100. package/dist/chunk-E4WNQBEF.cjs.map +1 -0
  101. package/dist/{chunk-G6Q5UM7U.js → chunk-FWJKWH6U.js} +5 -3
  102. package/dist/chunk-FWJKWH6U.js.map +1 -0
  103. package/dist/{chunk-BNUFUFAU.js → chunk-HFHTMECK.js} +7 -7
  104. package/dist/chunk-HFHTMECK.js.map +1 -0
  105. package/dist/{chunk-TFMVL4QH.js → chunk-I5MOXA4H.js} +20 -14
  106. package/dist/chunk-I5MOXA4H.js.map +1 -0
  107. package/dist/{chunk-4MB3AQAQ.js → chunk-J3WZ3FA2.js} +77 -3
  108. package/dist/chunk-J3WZ3FA2.js.map +1 -0
  109. package/dist/{chunk-UR7W5YQK.js → chunk-JBQQ7THH.js} +5 -3
  110. package/dist/chunk-JBQQ7THH.js.map +1 -0
  111. package/dist/chunk-JIVMTW7W.js +3393 -0
  112. package/dist/chunk-JIVMTW7W.js.map +1 -0
  113. package/dist/{chunk-2Y4IFKW7.js → chunk-JXA2ZP2Q.js} +6 -17
  114. package/dist/chunk-JXA2ZP2Q.js.map +1 -0
  115. package/dist/{chunk-GYA4JRP5.js → chunk-JXXDZTMN.js} +2 -2
  116. package/dist/chunk-JXXDZTMN.js.map +1 -0
  117. package/dist/chunk-JZUR7ZWE.js +254 -0
  118. package/dist/chunk-JZUR7ZWE.js.map +1 -0
  119. package/dist/chunk-K5ELX2GT.js +248 -0
  120. package/dist/chunk-K5ELX2GT.js.map +1 -0
  121. package/dist/chunk-LBJKZXDE.cjs +257 -0
  122. package/dist/chunk-LBJKZXDE.cjs.map +1 -0
  123. package/dist/{chunk-FGO5JFVJ.cjs → chunk-M4BDU5RX.cjs} +12 -12
  124. package/dist/{chunk-FGO5JFVJ.cjs.map → chunk-M4BDU5RX.cjs.map} +1 -1
  125. package/dist/{chunk-MIJKEVV7.js → chunk-MSY7FSX4.js} +37 -4
  126. package/dist/chunk-MSY7FSX4.js.map +1 -0
  127. package/dist/{chunk-ST3LPB2V.cjs → chunk-MUK4BU7K.cjs} +788 -146
  128. package/dist/chunk-MUK4BU7K.cjs.map +1 -0
  129. package/dist/{chunk-MCHP7RHZ.cjs → chunk-MXJDTH5B.cjs} +64 -41
  130. package/dist/chunk-MXJDTH5B.cjs.map +1 -0
  131. package/dist/{chunk-2VLBGQBY.cjs → chunk-N3257XE6.cjs} +724 -577
  132. package/dist/chunk-N3257XE6.cjs.map +1 -0
  133. package/dist/chunk-N66HCGCY.cjs +57 -0
  134. package/dist/chunk-N66HCGCY.cjs.map +1 -0
  135. package/dist/{chunk-CPEL3YIR.cjs → chunk-NFCVHQ5P.cjs} +55 -22
  136. package/dist/chunk-NFCVHQ5P.cjs.map +1 -0
  137. package/dist/{chunk-C4F7VJ5D.cjs → chunk-NI72YOJB.cjs} +84 -2
  138. package/dist/chunk-NI72YOJB.cjs.map +1 -0
  139. package/dist/{chunk-EE7N5XXQ.cjs → chunk-NK5Q7UNE.cjs} +10 -21
  140. package/dist/chunk-NK5Q7UNE.cjs.map +1 -0
  141. package/dist/{chunk-PHXITZE4.js → chunk-NMWDXFPH.js} +4 -4
  142. package/dist/{chunk-PHXITZE4.js.map → chunk-NMWDXFPH.js.map} +1 -1
  143. package/dist/{chunk-FSXTPBRN.js → chunk-NQ6BRJBE.js} +416 -850
  144. package/dist/chunk-NQ6BRJBE.js.map +1 -0
  145. package/dist/chunk-OH5E5KIO.js +2057 -0
  146. package/dist/chunk-OH5E5KIO.js.map +1 -0
  147. package/dist/chunk-ONU3HIED.cjs +2082 -0
  148. package/dist/chunk-ONU3HIED.cjs.map +1 -0
  149. package/dist/{chunk-STQ3BSED.cjs → chunk-PNN7RHVR.cjs} +66 -44
  150. package/dist/chunk-PNN7RHVR.cjs.map +1 -0
  151. package/dist/{chunk-6DCB664D.js → chunk-PQBQG7IM.js} +3 -3
  152. package/dist/{chunk-6DCB664D.js.map → chunk-PQBQG7IM.js.map} +1 -1
  153. package/dist/{chunk-ACSVZPK7.cjs → chunk-PWLJ77UV.cjs} +5 -3
  154. package/dist/chunk-PWLJ77UV.cjs.map +1 -0
  155. package/dist/chunk-Q7Q4WSLJ.cjs +328 -0
  156. package/dist/chunk-Q7Q4WSLJ.cjs.map +1 -0
  157. package/dist/{chunk-BEFM74L2.js → chunk-QLRESYPU.js} +637 -493
  158. package/dist/chunk-QLRESYPU.js.map +1 -0
  159. package/dist/{chunk-SBPC5IP3.js → chunk-QWX5YA3K.js} +784 -202
  160. package/dist/chunk-QWX5YA3K.js.map +1 -0
  161. package/dist/{chunk-TCRIQMBU.js → chunk-RJS7DECT.js} +8 -9
  162. package/dist/chunk-RJS7DECT.js.map +1 -0
  163. package/dist/{chunk-6JZUSDY2.cjs → chunk-RMQLSPA2.cjs} +297 -27
  164. package/dist/chunk-RMQLSPA2.cjs.map +1 -0
  165. package/dist/{chunk-SJDMVITW.cjs → chunk-RT5ZY4XA.cjs} +6 -5
  166. package/dist/chunk-RT5ZY4XA.cjs.map +1 -0
  167. package/dist/{chunk-IJTLXNGJ.js → chunk-T4XNKYXB.js} +780 -127
  168. package/dist/chunk-T4XNKYXB.js.map +1 -0
  169. package/dist/{chunk-PDGEXGS6.cjs → chunk-TQR4KBY2.cjs} +354 -182
  170. package/dist/chunk-TQR4KBY2.cjs.map +1 -0
  171. package/dist/chunk-TTAITEPJ.cjs +755 -0
  172. package/dist/chunk-TTAITEPJ.cjs.map +1 -0
  173. package/dist/{chunk-NN3QSOVS.cjs → chunk-U5SON7R2.cjs} +27 -27
  174. package/dist/{chunk-NN3QSOVS.cjs.map → chunk-U5SON7R2.cjs.map} +1 -1
  175. package/dist/{chunk-A2I2XO52.cjs → chunk-U63GDNRC.cjs} +32 -26
  176. package/dist/chunk-U63GDNRC.cjs.map +1 -0
  177. package/dist/{chunk-YNULOIR5.cjs → chunk-UDISNXDL.cjs} +64 -43
  178. package/dist/chunk-UDISNXDL.cjs.map +1 -0
  179. package/dist/{chunk-GWEDD3DH.js → chunk-UV3SN74I.js} +5 -5
  180. package/dist/{chunk-GWEDD3DH.js.map → chunk-UV3SN74I.js.map} +1 -1
  181. package/dist/{chunk-U5W4LKZV.cjs → chunk-VCRRKBLN.cjs} +9 -9
  182. package/dist/{chunk-U5W4LKZV.cjs.map → chunk-VCRRKBLN.cjs.map} +1 -1
  183. package/dist/{chunk-EFELJVLA.js → chunk-VGTJPTIC.js} +28 -5
  184. package/dist/chunk-VGTJPTIC.js.map +1 -0
  185. package/dist/chunk-VQH4VAWD.cjs +12 -0
  186. package/dist/{chunk-EPTSMFH7.cjs.map → chunk-VQH4VAWD.cjs.map} +1 -1
  187. package/dist/{chunk-SNXVDZAJ.js → chunk-W6OG3HDG.js} +5 -4
  188. package/dist/chunk-W6OG3HDG.js.map +1 -0
  189. package/dist/chunk-WDGA7IYB.js +207 -0
  190. package/dist/chunk-WDGA7IYB.js.map +1 -0
  191. package/dist/chunk-WEVQJ5LH.js +736 -0
  192. package/dist/chunk-WEVQJ5LH.js.map +1 -0
  193. package/dist/{chunk-3PRKZW6D.cjs → chunk-XBYVV3MP.cjs} +60 -5
  194. package/dist/chunk-XBYVV3MP.cjs.map +1 -0
  195. package/dist/{chunk-GFRGG2US.cjs → chunk-XCAGZAKP.cjs} +7 -7
  196. package/dist/{chunk-GFRGG2US.cjs.map → chunk-XCAGZAKP.cjs.map} +1 -1
  197. package/dist/{chunk-XR4YZFKW.cjs → chunk-XDF2UPEQ.cjs} +3864 -1783
  198. package/dist/chunk-XDF2UPEQ.cjs.map +1 -0
  199. package/dist/{chunk-7V2FGGI2.cjs → chunk-XMQSEJCF.cjs} +632 -1080
  200. package/dist/chunk-XMQSEJCF.cjs.map +1 -0
  201. package/dist/chunk-XNLIZYRZ.cjs +3432 -0
  202. package/dist/chunk-XNLIZYRZ.cjs.map +1 -0
  203. package/dist/{chunk-66UVLHQA.cjs → chunk-XNSI2FJO.cjs} +99 -100
  204. package/dist/chunk-XNSI2FJO.cjs.map +1 -0
  205. package/dist/chunk-XQSCL77R.cjs +60 -0
  206. package/dist/chunk-XQSCL77R.cjs.map +1 -0
  207. package/dist/{chunk-SVJ5GEXW.cjs → chunk-XUO3KQFO.cjs} +2 -2
  208. package/dist/chunk-XUO3KQFO.cjs.map +1 -0
  209. package/dist/{chunk-HJH3RMXG.cjs → chunk-YAAM3M2S.cjs} +10 -10
  210. package/dist/{chunk-HJH3RMXG.cjs.map → chunk-YAAM3M2S.cjs.map} +1 -1
  211. package/dist/{chunk-ATLN63JA.js → chunk-YBFHZUXX.js} +6 -6
  212. package/dist/{chunk-ATLN63JA.js.map → chunk-YBFHZUXX.js.map} +1 -1
  213. package/dist/{chunk-K3BUWSFR.js → chunk-YDFDBE6D.js} +119 -6
  214. package/dist/chunk-YDFDBE6D.js.map +1 -0
  215. package/dist/{chunk-OSZPLZIV.cjs → chunk-YVWGEQJE.cjs} +318 -132
  216. package/dist/chunk-YVWGEQJE.cjs.map +1 -0
  217. package/dist/{chunk-QT6V3YRH.js → chunk-YWGVVALJ.js} +3 -3
  218. package/dist/{chunk-QT6V3YRH.js.map → chunk-YWGVVALJ.js.map} +1 -1
  219. package/dist/core/index.cjs +40 -41
  220. package/dist/core/index.d.cts +4 -5
  221. package/dist/core/index.d.ts +4 -5
  222. package/dist/core/index.js +8 -9
  223. package/dist/{ddl-eWg7hx6R.d.cts → ddl-BJcOp4WZ.d.cts} +3 -3
  224. package/dist/{ddl-D5369kOY.d.ts → ddl-BXfGHbPN.d.ts} +3 -3
  225. package/dist/graph-extension/index.cjs +26 -23
  226. package/dist/graph-extension/index.d.cts +16 -6
  227. package/dist/graph-extension/index.d.ts +16 -6
  228. package/dist/graph-extension/index.js +7 -8
  229. package/dist/graph-merge/index.cjs +2459 -655
  230. package/dist/graph-merge/index.cjs.map +1 -1
  231. package/dist/graph-merge/index.d.cts +170 -33
  232. package/dist/graph-merge/index.d.ts +170 -33
  233. package/dist/graph-merge/index.js +2269 -468
  234. package/dist/graph-merge/index.js.map +1 -1
  235. package/dist/{index-By89Sezh.d.ts → index-BSHvKfok.d.ts} +221 -10
  236. package/dist/{index-DcQ3Sxs-.d.cts → index-DxaYCv8Y.d.cts} +221 -10
  237. package/dist/index.cjs +330 -269
  238. package/dist/index.cjs.map +1 -1
  239. package/dist/index.d.cts +590 -576
  240. package/dist/index.d.ts +590 -576
  241. package/dist/index.js +73 -50
  242. package/dist/index.js.map +1 -1
  243. package/dist/indexes/index.cjs +17 -17
  244. package/dist/indexes/index.d.cts +4 -4
  245. package/dist/indexes/index.d.ts +4 -4
  246. package/dist/indexes/index.js +10 -10
  247. package/dist/interchange/index.cjs +165 -50
  248. package/dist/interchange/index.cjs.map +1 -1
  249. package/dist/interchange/index.d.cts +261 -16
  250. package/dist/interchange/index.d.ts +261 -16
  251. package/dist/interchange/index.js +128 -24
  252. package/dist/interchange/index.js.map +1 -1
  253. package/dist/{manager-B0KjKE93.d.ts → manager-CfZAimti.d.ts} +36 -5
  254. package/dist/{manager-Cn0NFIhN.d.cts → manager-HGk6E_HW.d.cts} +36 -5
  255. package/dist/{materialize-indexes-BD4V3svD.d.ts → materialize-indexes-6A7dWGtb.d.cts} +10 -2
  256. package/dist/{materialize-indexes-DVRhd5h4.d.cts → materialize-indexes-BMJP6Tms.d.ts} +10 -2
  257. package/dist/{postgres-DaEWvN4x.d.cts → postgres-DFYWENdR.d.cts} +1961 -439
  258. package/dist/{postgres-u0a0HN2D.d.ts → postgres-e7a9TdvR.d.ts} +1961 -439
  259. package/dist/profiler/index.cjs +15 -15
  260. package/dist/profiler/index.d.cts +9 -10
  261. package/dist/profiler/index.d.ts +9 -10
  262. package/dist/profiler/index.js +4 -4
  263. package/dist/provenance/index.cjs +46 -48
  264. package/dist/provenance/index.cjs.map +1 -1
  265. package/dist/provenance/index.d.cts +7 -7
  266. package/dist/provenance/index.d.ts +7 -7
  267. package/dist/provenance/index.js +12 -14
  268. package/dist/provenance/index.js.map +1 -1
  269. package/dist/schema/index.cjs +50 -49
  270. package/dist/schema/index.d.cts +9 -16
  271. package/dist/schema/index.d.ts +9 -16
  272. package/dist/schema/index.js +23 -22
  273. package/dist/{searchable-CnYEancP.d.ts → searchable-9OQoPuRs.d.ts} +1 -2
  274. package/dist/{searchable-BT7j9_IK.d.cts → searchable-CIje5XYD.d.cts} +1 -2
  275. package/dist/{sqlite-BrMoSsI7.d.cts → sqlite-DerU5tc7.d.ts} +2029 -347
  276. package/dist/{sqlite-CHhZUyO5.d.ts → sqlite-DitnISa9.d.cts} +2029 -347
  277. package/dist/{store-view-Bvdku0Ht.d.ts → store-DawaWWjJ.d.ts} +3145 -2556
  278. package/dist/{store-view-w-md0nQ4.d.cts → store-RwTJx8LX.d.cts} +3145 -2556
  279. package/dist/{temporal-BCORwUau.d.cts → temporal-Bn-Fi8FJ.d.cts} +1 -1
  280. package/dist/{temporal--x9T8K4S.d.ts → temporal-BtM4UALv.d.ts} +1 -1
  281. package/dist/{types-6-WJmSD4.d.cts → types-CoIx8HX5.d.cts} +1 -1
  282. package/dist/{types-Cjvkj0jA.d.ts → types-HkveCCx0.d.cts} +866 -21
  283. package/dist/{types-Cjvkj0jA.d.cts → types-HkveCCx0.d.ts} +866 -21
  284. package/dist/{types-COODtTJU.d.ts → types-KFfk-8Ah.d.ts} +1 -1
  285. package/dist/{where-CUQmCR6d.d.cts → where--fk7_0kv.d.cts} +1 -1
  286. package/dist/{where-5xVawAwL.d.ts → where-ws5hf-Ov.d.ts} +1 -1
  287. package/package.json +1 -1
  288. package/dist/chunk-2BIG7U6E.cjs +0 -83
  289. package/dist/chunk-2BIG7U6E.cjs.map +0 -1
  290. package/dist/chunk-2L54C2C2.js +0 -144
  291. package/dist/chunk-2L54C2C2.js.map +0 -1
  292. package/dist/chunk-2VLBGQBY.cjs.map +0 -1
  293. package/dist/chunk-2WDD2NO3.js +0 -59
  294. package/dist/chunk-2WDD2NO3.js.map +0 -1
  295. package/dist/chunk-2Y4IFKW7.js.map +0 -1
  296. package/dist/chunk-35S6P5ZU.js +0 -27
  297. package/dist/chunk-35S6P5ZU.js.map +0 -1
  298. package/dist/chunk-3PRKZW6D.cjs.map +0 -1
  299. package/dist/chunk-4MB3AQAQ.js.map +0 -1
  300. package/dist/chunk-4SZ6XPTG.cjs +0 -12
  301. package/dist/chunk-5MUSU4ZP.cjs.map +0 -1
  302. package/dist/chunk-63KCKSSH.js.map +0 -1
  303. package/dist/chunk-66UVLHQA.cjs.map +0 -1
  304. package/dist/chunk-6JZUSDY2.cjs.map +0 -1
  305. package/dist/chunk-764JHTLT.cjs +0 -15
  306. package/dist/chunk-764JHTLT.cjs.map +0 -1
  307. package/dist/chunk-7G32LIQM.js.map +0 -1
  308. package/dist/chunk-7V2FGGI2.cjs.map +0 -1
  309. package/dist/chunk-A2I2XO52.cjs.map +0 -1
  310. package/dist/chunk-A4PBRX4C.cjs +0 -100
  311. package/dist/chunk-A4PBRX4C.cjs.map +0 -1
  312. package/dist/chunk-ACSVZPK7.cjs.map +0 -1
  313. package/dist/chunk-ALFUGRYB.cjs +0 -1282
  314. package/dist/chunk-ALFUGRYB.cjs.map +0 -1
  315. package/dist/chunk-B75XRV3O.js +0 -125
  316. package/dist/chunk-B75XRV3O.js.map +0 -1
  317. package/dist/chunk-BCP7LLOY.js.map +0 -1
  318. package/dist/chunk-BEFM74L2.js.map +0 -1
  319. package/dist/chunk-BNUFUFAU.js.map +0 -1
  320. package/dist/chunk-C4F7VJ5D.cjs.map +0 -1
  321. package/dist/chunk-CPEL3YIR.cjs.map +0 -1
  322. package/dist/chunk-D7PG5D5K.js.map +0 -1
  323. package/dist/chunk-DI74SMXS.cjs +0 -29
  324. package/dist/chunk-DI74SMXS.cjs.map +0 -1
  325. package/dist/chunk-DK2S42XB.js +0 -77
  326. package/dist/chunk-DK2S42XB.js.map +0 -1
  327. package/dist/chunk-DRACN6XG.js +0 -27
  328. package/dist/chunk-DRACN6XG.js.map +0 -1
  329. package/dist/chunk-EE7N5XXQ.cjs.map +0 -1
  330. package/dist/chunk-EFELJVLA.js.map +0 -1
  331. package/dist/chunk-EPTSMFH7.cjs +0 -12
  332. package/dist/chunk-EQ7JKLZO.cjs +0 -157
  333. package/dist/chunk-EQ7JKLZO.cjs.map +0 -1
  334. package/dist/chunk-FJMPR3OH.cjs.map +0 -1
  335. package/dist/chunk-FMGEZBAQ.js.map +0 -1
  336. package/dist/chunk-FMMIX6N4.js.map +0 -1
  337. package/dist/chunk-FRHHDHKH.js.map +0 -1
  338. package/dist/chunk-FSXTPBRN.js.map +0 -1
  339. package/dist/chunk-G6Q5UM7U.js.map +0 -1
  340. package/dist/chunk-GYA4JRP5.js.map +0 -1
  341. package/dist/chunk-HOHAJ2NR.cjs +0 -61
  342. package/dist/chunk-HOHAJ2NR.cjs.map +0 -1
  343. package/dist/chunk-HOIFFY4M.js.map +0 -1
  344. package/dist/chunk-IIMQJYAM.js +0 -81
  345. package/dist/chunk-IIMQJYAM.js.map +0 -1
  346. package/dist/chunk-IJTLXNGJ.js.map +0 -1
  347. package/dist/chunk-ITE4IXAK.js +0 -25
  348. package/dist/chunk-ITE4IXAK.js.map +0 -1
  349. package/dist/chunk-K3BUWSFR.js.map +0 -1
  350. package/dist/chunk-KCO5EFJU.js +0 -79
  351. package/dist/chunk-KCO5EFJU.js.map +0 -1
  352. package/dist/chunk-KKYELPZ2.cjs +0 -83
  353. package/dist/chunk-KKYELPZ2.cjs.map +0 -1
  354. package/dist/chunk-MCHP7RHZ.cjs.map +0 -1
  355. package/dist/chunk-MIJKEVV7.js.map +0 -1
  356. package/dist/chunk-NCX65HBY.cjs +0 -1396
  357. package/dist/chunk-NCX65HBY.cjs.map +0 -1
  358. package/dist/chunk-OSZPLZIV.cjs.map +0 -1
  359. package/dist/chunk-OVUUTCPJ.cjs.map +0 -1
  360. package/dist/chunk-PDGEXGS6.cjs.map +0 -1
  361. package/dist/chunk-QB6VMOJ2.cjs.map +0 -1
  362. package/dist/chunk-QMQLUA66.js +0 -12
  363. package/dist/chunk-QMQLUA66.js.map +0 -1
  364. package/dist/chunk-QYWINYEA.cjs.map +0 -1
  365. package/dist/chunk-S4KQ5LV4.js.map +0 -1
  366. package/dist/chunk-SBPC5IP3.js.map +0 -1
  367. package/dist/chunk-SJDMVITW.cjs.map +0 -1
  368. package/dist/chunk-SNXVDZAJ.js.map +0 -1
  369. package/dist/chunk-SQRD2CYF.js.map +0 -1
  370. package/dist/chunk-ST3LPB2V.cjs.map +0 -1
  371. package/dist/chunk-STQ3BSED.cjs.map +0 -1
  372. package/dist/chunk-SVJ5GEXW.cjs.map +0 -1
  373. package/dist/chunk-TCRIQMBU.js.map +0 -1
  374. package/dist/chunk-TDXIBCGY.cjs.map +0 -1
  375. package/dist/chunk-TFMVL4QH.js.map +0 -1
  376. package/dist/chunk-TRF4EBJT.cjs +0 -30
  377. package/dist/chunk-TRF4EBJT.cjs.map +0 -1
  378. package/dist/chunk-TVLKA4AY.js +0 -94
  379. package/dist/chunk-TVLKA4AY.js.map +0 -1
  380. package/dist/chunk-UR7W5YQK.js.map +0 -1
  381. package/dist/chunk-VITTKBWF.js +0 -1263
  382. package/dist/chunk-VITTKBWF.js.map +0 -1
  383. package/dist/chunk-WBUFJ7BS.cjs +0 -131
  384. package/dist/chunk-WBUFJ7BS.cjs.map +0 -1
  385. package/dist/chunk-XR4YZFKW.cjs.map +0 -1
  386. package/dist/chunk-YNULOIR5.cjs.map +0 -1
  387. package/dist/chunk-ZDH3DX3C.cjs +0 -30
  388. package/dist/chunk-ZDH3DX3C.cjs.map +0 -1
  389. package/dist/chunk-ZTAJL4DT.cjs +0 -85
  390. package/dist/chunk-ZTAJL4DT.cjs.map +0 -1
  391. package/dist/define-graph-DVF-oN1i.d.cts +0 -173
  392. package/dist/define-graph-SvYXOl78.d.ts +0 -173
package/dist/index.d.ts CHANGED
@@ -1,636 +1,248 @@
1
1
  export { DefineEdgeOptions, DefineNodeOptions, ExternalRefSchema, ExternalRefValue, MetaEdgeOptions, createExternalRef, defineEdge, defineNode, externalRef, getExternalRefTable, isExternalRefSchema, metaEdge } from './core/index.js';
2
- import { E as EmbeddingMetric, a as EmbeddingIndexType } from './searchable-CnYEancP.js';
3
- export { D as DEFAULT_SEARCHABLE_LANGUAGE, b as EmbeddingSchema, c as EmbeddingValue, S as SearchableMetadata, d as SearchableOptions, e as SearchableSchema, f as embedding, g as getEmbeddingDimensions, h as getSearchableMetadata, i as isEmbeddingSchema, j as isSearchableSchema, r as resolveGraphVectorSlots, s as searchable } from './searchable-CnYEancP.js';
4
- export { R as RecordedInstant, a as asRecordedInstant, c as compareRecordedInstants, r as recordedInstantRevision, b as recordedInstantWallTime } from './temporal--x9T8K4S.js';
5
- import { G as GraphDef } from './define-graph-SvYXOl78.js';
6
- export { A as AllEdgeTypes, a as AllNodeTypes, E as EdgeKinds, b as GetEdgeType, c as GetNodeType, N as NodeKinds, d as defineGraph, g as getEdgeKinds, e as getNodeKinds, i as isGraphDef } from './define-graph-SvYXOl78.js';
7
- import { V as VectorStrategy, x as GraphBackend, b as NodeType, O as OntologyRelation, $ as InferenceType, a0 as EdgeType, a1 as AggregateExpr, a2 as FieldRef, a3 as ComparisonOp, a4 as AggregateComparisonPredicate, a5 as TraversalDirection } from './types-Cjvkj0jA.js';
8
- export { A as AdapterBackend, a6 as AdapterBackendTransactions, c as AnyEdgeType, B as BackendCapabilities, a7 as BackendIdentity, a8 as BackendLifecycle, a9 as BackendMaintenance, aa as BackendTransactions, ab as CURRENT_GRAPH_EXTENSION_VERSION, ac as Cardinality, ad as Collation, ae as CommitSchemaVersionExpected, af as CommitSchemaVersionIfKindsEmptyResult, ag as CommitSchemaVersionParams, ah as CompiledRowsSql, ai as CompiledSelectSql, aj as CompiledStatementSql, C as ContributionDiagnostic, a as ContributionDiagnosticState, ak as ContributionMaterializationBackend, al as DEFAULT_SQL_SCHEMA, D as DeleteBehavior, am as DeleteFulltextBatchParams, an as EdgeEntityReadBackend, ao as EdgeEntityWriteBackend, ap as EdgeId, g as EdgeIndexConfig, e as EdgeIndexDeclaration, h as EdgeIndexDirection, i as EdgeIndexWhereBuilder, aq as EdgeProps, E as EdgeRegistration, ar as EdgeTypeWithEndpoints, as as EndpointExistence, at as ExternalRecordedReadSource, au as FilteredApproximateSearch, av as FilteredApproximateSearchMode, aw as FulltextBatchRow, ax as FulltextCapabilities, ay as FulltextOperationBackend, az as FulltextQueryMode, aA as FulltextSearchParams, aB as FulltextSearchResult, F as FulltextStrategy, aC as GraphAnalyticsCapabilities, d as GraphDefaults, aD as GraphEntityReadBackend, aE as GraphEntityWriteBackend, G as GraphExtension, aF as GraphExtensionVersion, aG as GraphLifecycleBackend, aH as HybridFusionOptions, I as IndexDeclaration, aI as IndexMaterializationBackend, j as IndexOrigin, k as IndexScope, l as IndexWhereExpression, m as IndexWhereFieldBuilder, n as IndexWhereInput, aJ as IntentSql, J as JsonPointer, aK as JsonPointerFor, aL as JsonPointerInput, aM as JsonPointerSegment, aN as JsonPointerSegments, aO as JsonPointerSegmentsFor, aP as JsonValue, aQ as KindAnnotations, aR as LEGACY_GRAPH_EXTENSION_VERSION, aS as LockSchemaVersionForWriteParams, aT as MAX_JSON_POINTER_DEPTH, aU as MetaEdge, aV as MetaEdgeProperties, aW as NodeEntityReadBackend, aX as NodeEntityWriteBackend, aY as NodeId, o as NodeIndexConfig, f as NodeIndexDeclaration, p as NodeIndexWhereBuilder, aZ as NodeProps, N as NodeRegistration, a_ as OrderSpec, a$ as ParameterRef, b0 as Placeholder, b1 as PopulatedSchemaKind, b2 as QueryExecutionBackend, b3 as RawQueryExecutionBackend, b4 as RawStatementExecutionBackend, b5 as RecordedRelationOptions, b6 as RemovalMaterializationBackend, b7 as RenderedSql, b8 as ResolveJsonPointer, b9 as ResolveJsonPointerSegments, ba as ResolvedSqlTableNames, bb as RowProps, bc as SchemaCommitBackend, bd as SchemaKindEmptinessProbe, be as SchemaReadBackend, w as SchemaVersionRow, bf as SchemaWriteFenceBackend, y as SerializedSchema, bg as SetActiveVersionParams, bh as SortDirection, bi as SqlChunk, S as SqlDialect, bj as SqlFragment, bk as SqlIdentifierChunk, bl as SqlIntent, bm as SqlParameterChunk, bn as SqlPlaceholderChunk, bo as SqlSchema, bp as SqlTableNames, bq as SqlTag, br as SqlTextChunk, bs as StrategyTableContribution, bt as TableContribution, T as TemporalMode, bu as TransactionBackend, bv as TransactionOptions, bw as TransactionReadBackend, bx as TraversalExpansion, by as TrustedImportOptions, bz as TrustedImportSession, bA as UniqueConstraint, bB as UniqueConstraintBackend, bC as UniquenessScope, bD as UpsertFulltextBatchParams, bE as VectorCapabilities, bF as VectorOperationBackend, v as VectorSlot, bG as asEdgeId, bH as asNodeId, bI as buildVectorCapabilities, bJ as createSqlSchema, bK as fts5Strategy, bL as isEdgeType, bM as isEdgeTypeWithEndpoints, bN as isMetaEdge, bO as isNodeType, bP as isSqlFragment, bQ as joinJsonPointers, bR as jsonPointer, bS as normalizeJsonPointer, bT as parseJsonPointer, bU as recordedRelation, bV as renderPostgres, bW as renderSql, bX as renderSqlInline, bY as renderSqlite, bZ as rowPropsToJsonText, b_ as rowPropsToObject, b$ as sql, c0 as tsvectorStrategy } from './types-Cjvkj0jA.js';
2
+ import { E as EmbeddingMetric, a as EmbeddingIndexType } from './searchable-9OQoPuRs.js';
3
+ export { D as DEFAULT_SEARCHABLE_LANGUAGE, b as EmbeddingSchema, c as EmbeddingValue, S as SearchableMetadata, d as SearchableOptions, e as SearchableSchema, f as embedding, g as getEmbeddingDimensions, h as getSearchableMetadata, i as isEmbeddingSchema, j as isSearchableSchema, r as resolveGraphVectorSlots, s as searchable } from './searchable-9OQoPuRs.js';
4
+ export { R as RecordedInstant, a as asRecordedInstant, c as compareRecordedInstants, r as recordedInstantRevision, b as recordedInstantWallTime } from './temporal-BtM4UALv.js';
5
+ import { ac as AggregateExpr, ad as FieldRef, ae as ComparisonOp, af as AggregateComparisonPredicate, d as GraphDef, ag as TraversalDirection, G as GraphIdentityConfig, V as VectorStrategy, y as GraphBackend, u as NodeType, ah as OntologyRelation, ai as InferenceType, a5 as EdgeType } from './types-HkveCCx0.js';
6
+ export { A as AdapterBackend, aj as AdapterBackendTransactions, ak as AllEdgeTypes, al as AllNodeTypes, v as AnyEdgeType, B as BackendCapabilities, am as BackendIdentity, an as BackendLifecycle, ao as BackendMaintenance, ap as BackendTransactions, aq as CURRENT_GRAPH_EXTENSION_VERSION, ar as Cardinality, as as Collation, at as CommitSchemaVersionExpected, au as CommitSchemaVersionIfKindsEmptyResult, av as CommitSchemaVersionParams, aw as CompiledRowsSql, ax as CompiledSelectSql, ay as CompiledStatementSql, az as ContributionCapabilities, C as ContributionDiagnostic, a as ContributionDiagnosticState, aA as ContributionMaterializationBackend, aB as ContributionProbeContribution, aC as ContributionProbeEntry, aD as ContributionProbeResult, aE as ContributionProbeState, aF as ContributionRebuildResult, aG as ContributionRebuildScope, b as ContributionRepairEntry, c as ContributionRepairResult, aH as ContributionRepopulationStats, aI as DEFAULT_SQL_SCHEMA, a6 as DeleteBehavior, aJ as DeleteFulltextBatchParams, aK as EdgeEntityReadBackend, aL as EdgeEntityWriteBackend, $ as EdgeId, e as EdgeIndexConfig, E as EdgeIndexDeclaration, f as EdgeIndexDirection, g as EdgeIndexWhereBuilder, aM as EdgeKinds, aN as EdgeProps, aO as EdgeRegistration, aP as EdgeTypeWithEndpoints, aQ as EndpointExistence, aR as ExternalRecordedReadSource, aS as FilteredApproximateSearch, aT as FilteredApproximateSearchMode, aU as FindEdgesByHeterogeneousEndpointSetParams, aV as FulltextBatchRow, aW as FulltextCapabilities, aX as FulltextOperationBackend, aY as FulltextQueryMode, aZ as FulltextSearchParams, a_ as FulltextSearchResult, F as FulltextStrategy, a$ as GetEdgeType, a2 as GetNodeType, b0 as GraphAnalyticsCapabilities, b1 as GraphDefaults, b2 as GraphEntityReadBackend, b3 as GraphEntityWriteBackend, b4 as GraphExtension, a7 as GraphExtensionVersion, b5 as GraphLifecycleBackend, b6 as HardDeleteUniquesByNodeIdsParams, b7 as HybridFusionOptions, I as IndexDeclaration, b8 as IndexMaterializationBackend, h as IndexOrigin, i as IndexScope, j as IndexWhereExpression, k as IndexWhereFieldBuilder, l as IndexWhereInput, b9 as IntentSql, J as JsonPointer, ba as JsonPointerFor, bb as JsonPointerInput, bc as JsonPointerSegment, bd as JsonPointerSegments, be as JsonPointerSegmentsFor, a0 as JsonValue, a3 as KindAnnotations, bf as LEGACY_GRAPH_EXTENSION_VERSION, bg as LockSchemaVersionForWriteParams, bh as MAX_JSON_POINTER_DEPTH, a4 as MetaEdge, bi as MetaEdgeProperties, bj as NodeEntityReadBackend, bk as NodeEntityWriteBackend, _ as NodeId, m as NodeIndexConfig, N as NodeIndexDeclaration, n as NodeIndexWhereBuilder, a1 as NodeKinds, bl as NodeProps, bm as NodeRegistration, bn as OrderSpec, bo as ParameterRef, bp as Placeholder, bq as PopulatedSchemaKind, br as QueryExecutionBackend, bs as RawQueryExecutionBackend, bt as RawStatementExecutionBackend, bu as RecordedRelationOptions, bv as RemovalMaterializationBackend, bw as RenderedSql, bx as ResolveJsonPointer, by as ResolveJsonPointerSegments, bz as ResolvedSqlTableNames, bA as RowProps, bB as SchemaCommitBackend, bC as SchemaKindEmptinessProbe, bD as SchemaReadBackend, x as SchemaVersionRow, bE as SchemaWriteFenceBackend, z as SerializedSchema, bF as SetActiveVersionParams, bG as SortDirection, bH as SqlChunk, S as SqlDialect, bI as SqlFragment, bJ as SqlIdentifierChunk, bK as SqlIntent, bL as SqlParameterChunk, bM as SqlPlaceholderChunk, w as SqlSchema, bN as SqlTableNames, bO as SqlTag, bP as SqlTextChunk, bQ as StrategyTableContribution, bR as TableContribution, T as TemporalMode, bS as TransactionBackend, bT as TransactionOptions, bU as TransactionReadBackend, bV as TraversalExpansion, bW as TrustedImportOptions, bX as TrustedImportSession, bY as UniqueConstraint, bZ as UniqueConstraintBackend, b_ as UniquenessScope, b$ as UpdateNodeSetParams, c0 as UpdateNodeSetResult, c1 as UpsertFulltextBatchParams, c2 as VectorCapabilities, c3 as VectorOperationBackend, c4 as VectorSearchFrontierTuning, t as VectorSlot, c5 as asEdgeId, c6 as asNodeId, c7 as buildVectorCapabilities, c8 as createSqlSchema, c9 as defineGraph, ca as fts5Strategy, cb as getEdgeKinds, cc as getNodeKinds, cd as isEdgeType, ce as isEdgeTypeWithEndpoints, cf as isGraphDef, cg as isMetaEdge, ch as isNodeType, ci as isSqlFragment, cj as joinJsonPointers, ck as jsonPointer, cl as normalizeJsonPointer, cm as parseJsonPointer, cn as recordedRelation, co as renderPostgres, cp as renderSql, cq as renderSqlInline, cr as renderSqlite, cs as rowPropsToJsonText, ct as rowPropsToObject, cu as sql, cv as tsvectorStrategy } from './types-HkveCCx0.js';
7
+ import { A as AliasMap, E as EdgeAliasMap, n as RecursiveAliasMap, Q as QueryCoordinateState, o as QueryBuilder, p as EmptyRecursiveAliasMap, T as TraversalBuilder, a as Store } from './store-DawaWWjJ.js';
8
+ export { q as AdapterHistoryStore, r as AdapterHistoryTransactionContext, s as AdapterRecordedReadStore, t as AdapterStore, u as AdapterTransactionContext, v as AggregateResult, w as AlgorithmCyclePolicy, x as AnyEdge, y as AnyNode, B as BaseStoreOptions, z as BaseTraversalOptions, C as BatchResults, D as BatchableQuery, F as BulkEdgeSourceGroup, G as BulkFindEdgesFromParams, J as BulkFindEdgesFromResult, K as BulkOperationHookContext, M as ConstraintNames, O as CreateEdgeInput, P as CreateNodeInput, V as DegreeOptions, W as DynamicEdgeAccessor, X as DynamicEdgeCollection, Y as DynamicEdgeType, Z as DynamicFieldBuilder, _ as DynamicNodeAccessor, $ as DynamicNodeCollection, a0 as DynamicNodeType, a1 as DynamicSelectableEdge, a2 as DynamicSelectableNode, a3 as Edge, a4 as EdgeAccessor, a5 as EdgeBatchReads, a6 as EdgeBulkFindEndpointOptions, a7 as EdgeBulkFindOptions, a8 as EdgeCollection, a9 as EdgeFindByEndpointsOptions, aa as EdgeGetOrCreateByEndpointsOptions, ab as EdgeGetOrCreateByEndpointsResult, ac as EdgeIntrospection, ad as EdgeTemporalReads, ae as EdgeWrites, af as EmptyAliasMap, ag as EmptyEdgeAliasMap, ah as ExecutableAggregateQuery, ai as ExecutableQuery, aj as FieldAccessor, ak as FulltextSearchHit, al as FulltextSearchOptions, am as GetOrCreateAction, an as GraphAlgorithms, ao as GraphEdgeCollections, ap as GraphEdgeForKinds, aq as GraphNodeCollections, ar as GraphNodeReference, b as HistoryStore, as as HistoryStoreBackend, H as HistoryStoreOptions, at as HookContext, au as HybridFulltextOptions, av as HybridSearchHit, aw as HybridSearchOptions, ax as HybridVectorOptions, I as IdentityAssertion, d as IdentityAssertionId, e as IdentityAssertionResult, f as IdentityFacade, g as IdentityNode, h as IdentityNodeRefInput, i as IdentityPair, j as IdentityReadFacade, k as IdentityRelation, ay as IdentityTraversalOption, l as IdentityWriteSummary, az as IfExistsMode, aA as InitialQueryBuilder, aB as KindIntrospection, aC as LabelPropagationMembership, aD as LabelPropagationOptions, L as LiveStoreOptions, aE as MaterializeRemovalsEntry, aF as MaterializeRemovalsOptions, aG as MaterializeRemovalsResult, aH as MeasurableAdapterHistoryTransactionContext, aI as MeasurableAdapterTransactionContext, aJ as MeasurableTransactionContext, aK as NeighborsOptions, aL as NoRecordedCoordinate, N as Node, aM as NodeAccessor, aN as NodeAlias, aO as NodeBulkFindByIndexOptions, aP as NodeCollection, aQ as NodeCurrentReads, aR as NodeGetOrCreateByConstraintOptions, aS as NodeGetOrCreateByConstraintResult, aT as NodeIdentifier, aU as NodeRef, aV as NodeTemporalReads, aW as NodeWrites, aX as OntologyIntrospection, aY as OperationHookContext, aZ as PageRankOptions, a_ as PageRankScore, a$ as PaginateOptions, b0 as PaginatedResult, b1 as PathNode, b2 as PersonalizedPageRankOptions, b3 as PersonalizedPageRankSeed, b4 as Predicate, b5 as PreparedQuery, b6 as PropsAccessor, b7 as QueryHookContext, b8 as QueryOptions, b9 as ReachableNode, ba as ReachableOptions, bb as RebuildContributionOptions, bc as RebuildFulltextOptions, bd as RebuildFulltextResult, be as ReclaimedVectorFieldEntry, bf as ReconciledSchema, c as RecordedReadStore, R as RecordedReadStoreOptions, bg as RecordedScanOptions, bh as RecordedScanPage, bi as RecordedStoreView, bj as RecordedStoreViewEdgeCollection, bk as RecordedStoreViewEdgeCollections, bl as RecordedStoreViewNodeCollection, bm as RecordedStoreViewNodeCollections, bn as RecursiveTraversalOptions, bo as ReembedFunction, bp as ReembedVectorFieldOptions, bq as ReembedVectorFieldResult, br as SchemaIntrospection, bs as ScopedMeasure, bt as SearchScopeOptions, bu as SelectContext, bv as SelectableEdge, bw as SelectableNode, bx as ShortestPathOptions, by as ShortestPathResult, bz as SqlAvailability, bA as StoreHooks, S as StoreOptions, bB as StoreProjection, bC as StoreRef, bD as StoreSearch, bE as StoreView, bF as StoreViewCanReachOptions, bG as StoreViewCoordinate, bH as StoreViewDegreeOptions, bI as StoreViewEdgeCollection, bJ as StoreViewEdgeCollections, bK as StoreViewGraphAlgorithms, bL as StoreViewLabelPropagationOptions, bM as StoreViewNeighborsOptions, bN as StoreViewNodeCollection, bO as StoreViewNodeCollections, bP as StoreViewPageRankOptions, bQ as StoreViewPersonalizedPageRankOptions, bR as StoreViewReachableOptions, bS as StoreViewShortestPathOptions, bT as StoreViewSubgraphOptions, bU as StoreViewWeaklyConnectedComponentsOptions, bV as StoreViewWeightedShortestPathOptions, bW as StreamOptions, bX as SubgraphEdgeResult, bY as SubgraphNodeResult, bZ as SubgraphOptions, b_ as SubgraphResult, b$ as SubsetEdge, c0 as SubsetNode, c1 as TemporalAlgorithmOptions, c2 as TransactionContext, c3 as TransactionOutcome, c4 as TransactionReceipt, c5 as TraversalDirection, c6 as TypedEdgeCollection, c7 as TypedRecordedStoreViewEdgeCollection, c8 as TypedStoreViewEdgeCollection, U as UnboundLiveStoreOptions, c9 as UnionableQuery, m as UniqueIntrospection, ca as UpdateEdgeInput, cb as UpdateNodeInput, cc as VectorSearchHit, cd as VectorSearchOptions, ce as WeaklyConnectedComponentMembership, cf as WeaklyConnectedComponentsOptions, cg as WeightedShortestPathOptions, ch as WeightedShortestPathResult, ci as asIdentityAssertionId, cj as createAdapterStore, ck as createAdapterStoreWithSchema, cl as createQueryBuilder, cm as createStore, cn as createStoreWithSchema, co as createVerifiedAdapterStore, cp as createVerifiedStore, cq as defineSubgraphProject, cr as exists, cs as fieldRef, ct as inSubquery, cu as isParameterRef, cv as notExists, cw as notInSubquery, cx as param } from './store-DawaWWjJ.js';
9
9
  export { DeleteLegacyRecordedAnchorMapOptions, MigrateLegacyRecordedTimeOptions, MigrateLegacyRecordedTimeResult, MigrateRecordedAnchorOptions, deleteLegacyRecordedAnchorMap, migrateLegacyRecordedTime, migrateRecordedAnchor } from './backend/index.js';
10
- export { B as BackendDisposedError, C as CardinalityError, b as CardinalityErrorDetails, c as CompilerInvariantError, d as ConfigurationError, D as DatabaseOperationError, e as DatabaseOperationErrorDetails, f as DisjointError, g as DisjointErrorDetails, E as EagerMaterializationError, h as EagerMaterializationErrorDetails, i as EdgeNotFoundError, j as EdgeNotFoundErrorDetails, k as EmbeddingDimensionChangedError, l as EmbeddingDimensionChangedErrorDetails, m as EndpointError, n as EndpointErrorDetails, o as EndpointNotFoundError, p as EndpointNotFoundErrorDetails, q as ErrorCategory, G as GraphAlgorithmConvergenceError, I as InvalidEdgeWeightError, r as InvalidEdgeWeightErrorDetails, s as InvalidEdgeWeightReason, K as KindNotFoundError, t as KindNotFoundErrorDetails, M as MIGRATION_FAILURE_REASONS, u as MigrationError, v as MigrationErrorDetails, w as MigrationFailureReason, N as NodeConstraintNotFoundError, x as NodeConstraintNotFoundErrorDetails, y as NodeIndexNotFoundError, z as NodeIndexNotFoundErrorDetails, A as NodeNotFoundError, F as NodeNotFoundErrorDetails, R as RECORDED_CAPTURE_GUARD_CODES, H as RecordedCaptureGuardCode, J as RecordedCaptureGuardError, L as RestrictedDeleteError, O as RestrictedDeleteErrorDetails, S as SchemaContentConflictError, P as SchemaContentConflictErrorDetails, Q as SchemaMismatchError, T as SchemaMismatchErrorDetails, U as StaleVersionError, W as StaleVersionErrorDetails, X as StoreNotInitializedError, Y as StoreNotInitializedErrorDetails, Z as StoreNotInitializedReason, _ as TransactionClosedError, $ as TrustedImportError, a0 as TrustedImportErrorReason, a1 as TypeGraphError, a2 as TypeGraphErrorOptions, a3 as UniquenessError, a4 as UniquenessErrorDetails, a5 as UnsupportedBackendCapabilityError, a6 as UnsupportedPredicateError, a as ValidationError, a7 as ValidationErrorDetails, V as ValidationIssue, a8 as VersionConflictError, a9 as VersionConflictErrorDetails, aa as getErrorSuggestion, ab as isConstraintError, ac as isRecordedCaptureGuardError, ad as isSystemError, ae as isTypeGraphError, af as isUserRecoverable } from './index-By89Sezh.js';
11
- import { A as AliasMap, E as EdgeAliasMap, d as RecursiveAliasMap, Q as QueryCoordinateState, e as QueryBuilder, f as EmptyRecursiveAliasMap, T as TraversalBuilder } from './store-view-Bvdku0Ht.js';
12
- export { g as AdapterHistoryStore, h as AdapterHistoryTransactionContext, i as AdapterRecordedReadStore, j as AdapterStore, k as AdapterTransactionContext, l as AggregateResult, m as AlgorithmCyclePolicy, n as AnyEdge, o as AnyNode, B as BaseStoreOptions, p as BaseTraversalOptions, q as BatchResults, r as BatchableQuery, C as ConstraintNames, s as CreateEdgeInput, t as CreateNodeInput, D as DegreeOptions, u as DynamicEdgeAccessor, v as DynamicEdgeCollection, w as DynamicEdgeType, x as DynamicFieldBuilder, y as DynamicNodeAccessor, z as DynamicNodeCollection, F as DynamicNodeType, G as DynamicSelectableEdge, I as DynamicSelectableNode, J as Edge, K as EdgeAccessor, M as EdgeBatchReads, N as EdgeBulkFindEndpointOptions, O as EdgeBulkFindOptions, P as EdgeCollection, V as EdgeFindByEndpointsOptions, W as EdgeGetOrCreateByEndpointsOptions, X as EdgeGetOrCreateByEndpointsResult, Y as EdgeIntrospection, Z as EdgeTemporalReads, _ as EdgeWrites, $ as EmptyAliasMap, a0 as EmptyEdgeAliasMap, a1 as ExecutableAggregateQuery, a2 as ExecutableQuery, a3 as FieldAccessor, a4 as FulltextSearchHit, a5 as FulltextSearchOptions, a6 as GetOrCreateAction, a7 as GraphAlgorithms, a8 as GraphEdgeCollections, a9 as GraphNodeCollections, b as HistoryStore, aa as HistoryStoreBackend, H as HistoryStoreOptions, ab as HookContext, ac as HybridFulltextOptions, ad as HybridSearchHit, ae as HybridSearchOptions, af as HybridVectorOptions, ag as IfExistsMode, ah as InitialQueryBuilder, ai as KindIntrospection, aj as LabelPropagationMembership, ak as LabelPropagationOptions, L as LiveStoreOptions, al as MaterializeRemovalsEntry, am as MaterializeRemovalsOptions, an as MaterializeRemovalsResult, ao as MeasurableAdapterHistoryTransactionContext, ap as MeasurableAdapterTransactionContext, aq as MeasurableTransactionContext, ar as NeighborsOptions, as as NoRecordedCoordinate, at as Node, au as NodeAccessor, av as NodeAlias, aw as NodeBulkFindByIndexOptions, ax as NodeCollection, ay as NodeCurrentReads, az as NodeGetOrCreateByConstraintOptions, aA as NodeGetOrCreateByConstraintResult, aB as NodeIdentifier, aC as NodeRef, aD as NodeTemporalReads, aE as NodeWrites, aF as OntologyIntrospection, aG as OperationHookContext, aH as PageRankOptions, aI as PageRankScore, aJ as PaginateOptions, aK as PaginatedResult, aL as PathNode, aM as PersonalizedPageRankOptions, aN as PersonalizedPageRankSeed, aO as Predicate, aP as PreparedQuery, aQ as PropsAccessor, aR as QueryHookContext, aS as QueryOptions, aT as ReachableNode, aU as ReachableOptions, aV as RebuildFulltextOptions, aW as RebuildFulltextResult, aX as ReclaimedVectorFieldEntry, aY as ReconciledSchema, c as RecordedReadStore, R as RecordedReadStoreOptions, aZ as RecordedScanOptions, a_ as RecordedScanPage, a$ as RecordedStoreView, b0 as RecordedStoreViewEdgeCollection, b1 as RecordedStoreViewEdgeCollections, b2 as RecordedStoreViewNodeCollection, b3 as RecordedStoreViewNodeCollections, b4 as RecursiveTraversalOptions, b5 as ReembedFunction, b6 as ReembedVectorFieldOptions, b7 as ReembedVectorFieldResult, b8 as SchemaIntrospection, b9 as ScopedMeasure, ba as SearchScopeOptions, bb as SelectContext, bc as SelectableEdge, bd as SelectableNode, be as ShortestPathOptions, bf as ShortestPathResult, bg as SqlAvailability, a as Store, bh as StoreHooks, S as StoreOptions, bi as StoreProjection, bj as StoreRef, bk as StoreSearch, bl as StoreView, bm as StoreViewCanReachOptions, bn as StoreViewCoordinate, bo as StoreViewDegreeOptions, bp as StoreViewEdgeCollection, bq as StoreViewEdgeCollections, br as StoreViewGraphAlgorithms, bs as StoreViewLabelPropagationOptions, bt as StoreViewNeighborsOptions, bu as StoreViewNodeCollection, bv as StoreViewNodeCollections, bw as StoreViewPageRankOptions, bx as StoreViewPersonalizedPageRankOptions, by as StoreViewReachableOptions, bz as StoreViewShortestPathOptions, bA as StoreViewSubgraphOptions, bB as StoreViewWeaklyConnectedComponentsOptions, bC as StoreViewWeightedShortestPathOptions, bD as StreamOptions, bE as SubgraphEdgeResult, bF as SubgraphNodeResult, bG as SubgraphOptions, bH as SubgraphResult, bI as SubsetEdge, bJ as SubsetNode, bK as TemporalAlgorithmOptions, bL as TransactionContext, bM as TransactionOutcome, bN as TransactionReceipt, bO as TraversalDirection, bP as TypedEdgeCollection, bQ as TypedRecordedStoreViewEdgeCollection, bR as TypedStoreViewEdgeCollection, U as UnboundLiveStoreOptions, bS as UnionableQuery, bT as UniqueIntrospection, bU as UpdateEdgeInput, bV as UpdateNodeInput, bW as VectorSearchHit, bX as VectorSearchOptions, bY as WeaklyConnectedComponentMembership, bZ as WeaklyConnectedComponentsOptions, b_ as WeightedShortestPathOptions, b$ as WeightedShortestPathResult, c0 as createAdapterStore, c1 as createAdapterStoreWithSchema, c2 as createQueryBuilder, c3 as createStore, c4 as createStoreWithSchema, c5 as createVerifiedAdapterStore, c6 as createVerifiedStore, c7 as defineSubgraphProject, c8 as exists, c9 as fieldRef, ca as inSubquery, cb as isParameterRef, cc as notExists, cd as notInSubquery, ce as param } from './store-view-Bvdku0Ht.js';
13
- export { f as MaterializeIndexesEntry, h as MaterializeIndexesOptions, M as MaterializeIndexesResult, j as MaterializeSystemIndexesOptions } from './materialize-indexes-BD4V3svD.js';
14
- export { S as SchemaManagerOptions, b as SchemaValidationResult, g as getActiveSchema, f as getCommittedSchemaVersion, j as isSchemaInitialized } from './manager-B0KjKE93.js';
15
- export { S as SYSTEM_INDEX_DECLARATIONS, a as SystemIndexDeclaration, b as SystemIndexTable, c as andWhere, d as defineEdgeIndex, e as defineNodeIndex, n as notWhere, o as orWhere } from './where-5xVawAwL.js';
16
- export { GraphExtensionError, GraphExtensionIssue, GraphExtensionIssueCode, GraphExtensionUnresolvedEndpointError, GraphExtensionValidationError, GraphExtensionVersionUnsupportedError, IncompatibleChange, IncompatibleChangeError, KindCollisionError, KindHasReferentsError, KindReferent, RemoveCompileTimeKindError, defineGraphExtension, validateGraphExtension } from './graph-extension/index.js';
10
+ export { B as BackendDisposedError, C as CardinalityError, c as CardinalityErrorDetails, d as CompilerInvariantError, e as ConfigurationError, f as ContributionRebuildRefusal, g as ContributionRebuildUnsupportedError, D as DatabaseOperationError, h as DatabaseOperationErrorDetails, i as DisjointError, j as DisjointErrorDetails, E as EDGE_IDENTITY_MISMATCH_CODE, k as ENTITY_ALREADY_EXISTS_CODE, l as EagerMaterializationError, m as EagerMaterializationErrorDetails, n as EdgeNotFoundError, o as EdgeNotFoundErrorDetails, p as EmbeddingDimensionChangedError, q as EmbeddingDimensionChangedErrorDetails, r as EndpointError, s as EndpointErrorDetails, t as EndpointNotFoundError, u as EndpointNotFoundErrorDetails, v as ErrorCategory, w as ExportStreamCancelledError, G as GraphAlgorithmConvergenceError, I as IMMUTABLE_VALIDITY_LOWER_BOUND_CODE, x as INVERTED_VALIDITY_WINDOW_CODE, y as IdentityContradictionError, z as IdentityContradictionErrorDetails, A as IdentitySeparationViolationError, F as IdentitySeparationViolationErrorDetails, H as InvalidEdgeWeightError, J as InvalidEdgeWeightErrorDetails, K as InvalidEdgeWeightReason, L as KindNotFoundError, M as KindNotFoundErrorDetails, N as MIGRATION_FAILURE_REASONS, O as MigrationError, P as MigrationErrorDetails, Q as MigrationFailureReason, R as NodeConstraintNotFoundError, S as NodeConstraintNotFoundErrorDetails, U as NodeIndexNotFoundError, W as NodeIndexNotFoundErrorDetails, X as NodeNotFoundError, Y as NodeNotFoundErrorDetails, Z as RECORDED_CAPTURE_GUARD_CODES, _ as RecordedCaptureGuardCode, $ as RecordedCaptureGuardError, a0 as RestrictedDeleteError, a1 as RestrictedDeleteErrorDetails, a2 as SchemaContentConflictError, a3 as SchemaContentConflictErrorDetails, a4 as SchemaMismatchError, a5 as SchemaMismatchErrorDetails, a6 as StaleVersionError, a7 as StaleVersionErrorDetails, a8 as StoreNotInitializedError, a9 as StoreNotInitializedErrorDetails, aa as StoreNotInitializedReason, ab as TransactionClosedError, ac as TrustedImportError, ad as TrustedImportErrorReason, T as TypeGraphError, b as TypeGraphErrorOptions, ae as UniquenessError, af as UniquenessErrorDetails, ag as UnsupportedBackendCapabilityError, ah as UnsupportedPredicateError, a as ValidationError, ai as ValidationErrorDetails, V as ValidationIssue, aj as VersionConflictError, ak as VersionConflictErrorDetails, al as getErrorSuggestion, am as isConstraintError, an as isRecordedCaptureGuardError, ao as isSystemError, ap as isTypeGraphError, aq as isUserRecoverable } from './index-BSHvKfok.js';
11
+ export { I as IdentityChange, h as MaterializeIndexesEntry, j as MaterializeIndexesOptions, M as MaterializeIndexesResult, k as MaterializeSystemIndexesOptions } from './materialize-indexes-BMJP6Tms.js';
12
+ export { S as SchemaManagerOptions, b as SchemaValidationResult, g as getActiveSchema, f as getCommittedSchemaVersion, j as isSchemaInitialized } from './manager-CfZAimti.js';
13
+ export { S as SYSTEM_INDEX_DECLARATIONS, a as SystemIndexDeclaration, b as SystemIndexTable, c as andWhere, d as defineEdgeIndex, e as defineNodeIndex, n as notWhere, o as orWhere } from './where-ws5hf-Ov.js';
14
+ export { GraphExtensionError, GraphExtensionIssue, GraphExtensionIssueCode, GraphExtensionUnresolvedEndpointError, GraphExtensionUnresolvedOntologyEndpointError, GraphExtensionValidationError, GraphExtensionVersionUnsupportedError, IncompatibleChange, IncompatibleChangeError, KindCollisionError, KindHasReferentsError, KindReferent, RemoveCompileTimeKindError, defineGraphExtension, validateGraphExtension } from './graph-extension/index.js';
17
15
  import 'zod';
18
16
  import './result-DWo6mUVz.js';
19
17
 
20
- declare const libsqlVectorStrategy: VectorStrategy;
21
-
22
- declare const pgvectorStrategy: VectorStrategy;
23
-
24
- declare const sqliteVecStrategy: VectorStrategy;
25
-
26
18
  /**
27
- * One-time offline migration: legacy shared embeddings table → per-field
28
- * strategy storage.
29
- *
30
- * ## What this is for
31
- *
32
- * The cross-backend vector cutover (#157) dropped the single shared
33
- * `typegraph_node_embeddings` table. Each
34
- * `VectorStrategy` now OWNS one typed, fixed-dimension structure per
35
- * `(nodeKind, fieldPath)` — the only layout that can be ANN-indexed on
36
- * libSQL and sqlite-vec, not just pgvector.
37
- *
38
- * Deployments that wrote embeddings under the old shared table before
39
- * upgrading still hold those rows. This utility drains them into the new
40
- * per-field storage **once**, during the upgrade, so existing embedded
41
- * data survives the cutover without re-embedding from source.
42
- *
43
- * It is an explicitly-run, offline step — not wired into `materializeIndexes`
44
- * or any boot path. Run it once after deploying the new version and before
45
- * (or alongside) the first `materializeIndexes()`, then drop the legacy
46
- * table at your leisure.
47
- *
48
- * ## How it works
19
+ * Maximum depth for recursive CTE queries when maxDepth is unlimited (-1).
49
20
  *
50
- * - Skips cleanly (returns a zero summary) when the legacy table is absent —
51
- * a fresh install, or a re-run after the table was dropped.
52
- * - Reads rows in keyset-paginated batches (never the whole table at once),
53
- * decoding the engine-native embedding column to a numeric array at the SQL
54
- * level: sqlite-vec stored a `vec_f32` blob (`vec_to_json` decodes it);
55
- * pgvector stored a native `vector` (`::text` yields a `[…]` literal).
56
- * - Re-inserts each row through `backend.upsertEmbedding`, which routes the
57
- * active strategy's `buildUpsert` and idempotently provisions the per-field
58
- * storage (the same `(nodeKind, fieldPath)` slot a fresh store write uses).
59
- * The migration stays graph-agnostic and execution-correct on both the
60
- * sync (better-sqlite3) and async (libsql / Postgres) backends — it does
61
- * not re-implement the backend's statement-execution glue.
21
+ * Graphs with branching factor B produce O(B^depth) rows before cycle
22
+ * detection can prune them. A default of 10 covers typical neighborhood,
23
+ * shortest-path, and hierarchy use-cases without risking exponential blowup
24
+ * on dense graphs. Users who need deeper traversals should call .maxHops(N)
25
+ * explicitly (up to MAX_EXPLICIT_RECURSIVE_DEPTH).
26
+ */
27
+ declare const MAX_RECURSIVE_DEPTH = 10;
28
+ /**
29
+ * Maximum depth for explicit maxDepth traversals.
62
30
  *
63
- * Idempotent and resumable: a partial run followed by a full run converges
64
- * to the same per-field tables, because every write is an upsert keyed by
65
- * `(graph_id, node_id)` in the strategy's owned storage.
31
+ * Explicit traversal bounds are opt-in and safe to allow at a higher ceiling
32
+ * for stress testing and long-path workloads.
66
33
  */
34
+ declare const MAX_EXPLICIT_RECURSIVE_DEPTH = 1000;
67
35
 
68
36
  /**
69
- * The resolved storage config for one `(nodeKind, fieldPath)` slot that the
70
- * legacy table did not record. The legacy shared table stored only the
71
- * vector and its dimension count — not the metric or index type — so a
72
- * caller that wants migrated fields to match a specific graph's `embedding()`
73
- * declarations supplies this resolver.
37
+ * Aggregate and HAVING Helper Functions
38
+ *
39
+ * Provides factory functions for creating aggregate expressions (COUNT, SUM, etc.)
40
+ * and HAVING clause predicates for use in GROUP BY queries.
74
41
  */
75
- type LegacyEmbeddingSlotConfig = Readonly<{
76
- metric: EmbeddingMetric;
77
- indexType: EmbeddingIndexType;
78
- }>;
42
+
79
43
  /**
80
- * Options for {@link migrateLegacyEmbeddings}.
44
+ * Creates a COUNT aggregate expression.
45
+ *
46
+ * @param alias - The node alias to count
47
+ * @param field - Optional field to count (defaults to counting nodes by ID)
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * // COUNT all persons
52
+ * count("p")
53
+ *
54
+ * // COUNT persons with email field
55
+ * count("p", "email")
56
+ * ```
81
57
  */
82
- type MigrateLegacyEmbeddingsOptions = Readonly<{
83
- /**
84
- * The backend to migrate, wired with the destination `VectorStrategy`
85
- * (i.e. the post-cutover backend). Its `vectorStrategy` owns the per-field
86
- * storage rows are written into and its `upsertEmbedding` performs the
87
- * writes.
88
- */
89
- backend: GraphBackend;
90
- /**
91
- * Restrict the migration to a single graph. When omitted, every graph's
92
- * rows in the legacy table are migrated (the table is graph-scoped by its
93
- * `graph_id` column).
94
- */
95
- graphId?: string;
96
- /**
97
- * Resolves the metric / index type for a `(nodeKind, fieldPath)` slot the
98
- * legacy table didn't persist. Return `undefined` to fall back to the
99
- * cosine / hnsw defaults. Supply this (typically reading the graph's
100
- * `embedding()` declarations) when migrated fields must match a specific
101
- * metric — e.g. an `l2` field, which scores incorrectly under the cosine
102
- * default.
103
- */
104
- resolveSlotConfig?: (nodeKind: string, fieldPath: string) => LegacyEmbeddingSlotConfig | undefined;
105
- /** Rows read per round-trip. Defaults to {@link DEFAULT_BATCH_SIZE}. */
106
- batchSize?: number;
107
- /**
108
- * Physical name of the legacy table to drain. Defaults to
109
- * {@link LEGACY_EMBEDDINGS_TABLE_NAME}. Override only for a non-default
110
- * deployment that renamed the embeddings table.
111
- */
112
- legacyTableName?: string;
113
- }>;
58
+ declare function count(alias: string, field?: string): AggregateExpr;
114
59
  /**
115
- * Summary of a {@link migrateLegacyEmbeddings} run.
60
+ * Creates a COUNT DISTINCT aggregate expression.
61
+ *
62
+ * @param alias - The node alias to count
63
+ * @param field - Optional field to count distinct values of
116
64
  */
117
- type MigrateLegacyEmbeddingsResult = Readonly<{
118
- /** Total embedding rows re-inserted into per-field storage. */
119
- migrated: number;
120
- /**
121
- * Per-`(nodeKind, fieldPath)` counts, keyed `"<nodeKind>.<fieldPath>"`
122
- * (the strategy's logical-slot key form). Empty when the legacy table was
123
- * absent or held no rows for the requested scope.
124
- */
125
- perField: Readonly<Record<string, number>>;
126
- /**
127
- * Rows skipped because their vector length didn't match the per-field
128
- * table's fixed dimension. The legacy shared column allowed mixed
129
- * dimensions for one `(nodeKind, fieldPath)` (e.g. an unmigrated model
130
- * change); the first migrated row fixes the typed table's dimension and
131
- * any differently-sized rows for that slot are skipped rather than aborting
132
- * the whole migration. Keyed `"<nodeKind>.<fieldPath>"`. Non-empty here
133
- * means those fields need a deliberate re-embed at a single dimension.
134
- */
135
- skippedDimensionMismatch: Readonly<Record<string, number>>;
136
- /**
137
- * Rows skipped because their legacy embedding could not be decoded into a
138
- * finite-number array — a corrupt value (e.g. a pgvector `vector` column
139
- * permits `NaN`/`Infinity`, which is not valid JSON). Keyed
140
- * `"<nodeKind>.<fieldPath>"`. Skipping + reporting keeps one bad row from
141
- * aborting the whole migration; non-empty here means those rows need manual
142
- * repair.
143
- */
144
- skippedDecodeError: Readonly<Record<string, number>>;
145
- /**
146
- * Whether the legacy table existed. `false` means the run was a clean
147
- * no-op (fresh install, or already-dropped table on a re-run).
148
- */
149
- legacyTablePresent: boolean;
150
- }>;
65
+ declare function countDistinct(alias: string, field?: string): AggregateExpr;
151
66
  /**
152
- * Re-inserts every embedding from the legacy shared
153
- * `typegraph_node_embeddings` table into the active
154
- * `backend.vectorStrategy`'s per-`(nodeKind, fieldPath)` storage.
67
+ * Creates a COUNT aggregate expression over an edge alias.
155
68
  *
156
- * One-time, explicitly-run upgrade step for the shared-table → per-field
157
- * cutover (#157). Idempotent, batched, and a clean no-op when the legacy
158
- * table is absent. See the module doc comment for the full contract.
69
+ * Counts edges directly, without joining back to the target node table.
70
+ * This has different semantics from `count(targetAlias)`:
159
71
  *
160
- * @throws Error when the backend exposes no `vectorStrategy` /
161
- * `upsertEmbedding` (nothing to migrate *into*) — a configuration
162
- * error the caller must fix by wiring the destination strategy
163
- * before migrating.
164
- */
165
- declare function migrateLegacyEmbeddings(options: MigrateLegacyEmbeddingsOptions): Promise<MigrateLegacyEmbeddingsResult>;
166
-
167
- /**
168
- * Creates a subClassOf ontology relation.
72
+ * - `countEdges(edgeAlias)` — counts live edges, regardless of target-node
73
+ * temporal state. If a target node's `validTo` is in the past while its
74
+ * incident edges are still live, those edges are still counted.
75
+ * - `count(targetAlias)` — counts edges whose target node is currently
76
+ * valid under the query's temporal mode.
77
+ *
78
+ * For the common case ("how many follow relationships does this user
79
+ * have?") the edge-count semantics is what you want, and the compiler
80
+ * can skip the target-node join entirely — measurably faster on
81
+ * full-graph aggregates where the join dominates cost.
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * store
86
+ * .query()
87
+ * .from("User", "u")
88
+ * .optionalTraverse("follows", "e", { expand: "none" })
89
+ * .to("User", "target")
90
+ * .groupByNode("u")
91
+ * .aggregate({
92
+ * name: field("u", "name"),
93
+ * // counts edges — skips the target-node join
94
+ * followCount: countEdges("e"),
95
+ * })
96
+ * .execute();
97
+ * ```
169
98
  */
170
- declare function subClassOf(child: NodeType, parent: NodeType): OntologyRelation;
99
+ declare function countEdges(edgeAlias: string): AggregateExpr;
171
100
  /**
172
- * Creates a broader ontology relation.
101
+ * Creates a COUNT DISTINCT aggregate expression over an edge alias.
102
+ * See {@link countEdges} for semantics.
103
+ *
104
+ * Distinct-on-edge-id is equivalent to `countEdges` when the query
105
+ * surface produces each edge exactly once, but stays meaningful under
106
+ * polymorphic expansions and ontology-driven edge fan-outs where the
107
+ * same edge can appear multiple times in the join output.
173
108
  */
174
- declare function broader(narrowerConcept: NodeType, broaderConcept: NodeType): OntologyRelation;
109
+ declare function countDistinctEdges(edgeAlias: string): AggregateExpr;
175
110
  /**
176
- * Creates a narrower ontology relation.
111
+ * Creates a SUM aggregate expression.
112
+ *
113
+ * @param alias - The node alias
114
+ * @param field - The numeric field to sum
177
115
  */
178
- declare function narrower(broaderConcept: NodeType, narrowerConcept: NodeType): OntologyRelation;
116
+ declare function sum(alias: string, field: string): AggregateExpr;
179
117
  /**
180
- * Creates a relatedTo ontology relation.
118
+ * Creates an AVG aggregate expression.
119
+ *
120
+ * @param alias - The node alias
121
+ * @param field - The numeric field to average
181
122
  */
182
- declare function relatedTo(conceptA: NodeType, conceptB: NodeType): OntologyRelation;
123
+ declare function avg(alias: string, field: string): AggregateExpr;
183
124
  /**
184
- * Creates an equivalentTo ontology relation.
185
- * Can be used with external IRIs for cross-system mapping.
125
+ * Creates a MIN aggregate expression.
126
+ *
127
+ * @param alias - The node alias
128
+ * @param field - The field to find minimum of
186
129
  */
187
- declare function equivalentTo(kindA: NodeType, kindBOrIri: NodeType | string): OntologyRelation;
130
+ declare function min(alias: string, field: string): AggregateExpr;
188
131
  /**
189
- * Creates a sameAs ontology relation.
132
+ * Creates a MAX aggregate expression.
133
+ *
134
+ * @param alias - The node alias
135
+ * @param field - The field to find maximum of
190
136
  */
191
- declare function sameAs(kindA: NodeType, kindBOrIri: NodeType | string): OntologyRelation;
137
+ declare function max(alias: string, field: string): AggregateExpr;
192
138
  /**
193
- * Creates a differentFrom ontology relation.
139
+ * Creates a field reference for use in aggregate.
140
+ *
141
+ * @param alias - The node alias
142
+ * @param path - Path to the field. Use "id" for node ID, "kind" for node kind,
143
+ * or the property name directly (e.g., "title", "year").
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * field("p", "id") // Node ID
148
+ * field("p", "kind") // Node kind
149
+ * field("p", "title") // Property field
150
+ * field("p", "nested", "field") // Nested property
151
+ * ```
194
152
  */
195
- declare function differentFrom(kindA: NodeType, kindB: NodeType): OntologyRelation;
153
+ declare function field(alias: string, ...path: string[]): FieldRef;
196
154
  /**
197
- * Creates a disjointWith ontology relation.
155
+ * Creates a HAVING predicate that compares an aggregate to a value.
156
+ *
157
+ * @param aggregate - The aggregate expression (count, sum, avg, etc.)
158
+ * @param op - The comparison operator
159
+ * @param value - The value to compare against
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * // HAVING COUNT(*) > 10
164
+ * having(count("p"), "gt", 10)
165
+ *
166
+ * // HAVING AVG(salary) >= 50000
167
+ * having(avg("p", "salary"), "gte", 50000)
168
+ * ```
198
169
  */
199
- declare function disjointWith(kindA: NodeType, kindB: NodeType): OntologyRelation;
170
+ declare function having(aggregate: AggregateExpr, op: ComparisonOp, value: number | string | boolean): AggregateComparisonPredicate;
200
171
  /**
201
- * Creates a partOf ontology relation.
172
+ * Creates a HAVING predicate: aggregate > value
202
173
  */
203
- declare function partOf(part: NodeType, whole: NodeType): OntologyRelation;
174
+ declare function havingGt(aggregate: AggregateExpr, value: number): AggregateComparisonPredicate;
204
175
  /**
205
- * Creates a hasPart ontology relation.
176
+ * Creates a HAVING predicate: aggregate >= value
206
177
  */
207
- declare function hasPart(whole: NodeType, part: NodeType): OntologyRelation;
178
+ declare function havingGte(aggregate: AggregateExpr, value: number): AggregateComparisonPredicate;
208
179
  /**
209
- * Creates an inverseOf ontology relation.
210
- * Edge A inverseOf edge B means traversing A is equivalent to traversing B backwards.
180
+ * Creates a HAVING predicate: aggregate < value
211
181
  */
212
- declare function inverseOf(edgeA: EdgeType, edgeB: EdgeType): OntologyRelation;
182
+ declare function havingLt(aggregate: AggregateExpr, value: number): AggregateComparisonPredicate;
213
183
  /**
214
- * Creates an implies ontology relation.
215
- * Edge A implies edge B means if A exists between two nodes, B should also exist.
184
+ * Creates a HAVING predicate: aggregate <= value
216
185
  */
217
- declare function implies(edgeA: EdgeType, edgeB: EdgeType): OntologyRelation;
186
+ declare function havingLte(aggregate: AggregateExpr, value: number): AggregateComparisonPredicate;
218
187
  /**
219
- * The core ontology module containing all built-in meta-edges
220
- * and their relation factory functions.
188
+ * Creates a HAVING predicate: aggregate = value
221
189
  */
222
- declare const core: {
223
- readonly subClassOfMetaEdge: Readonly<{
224
- name: "subClassOf";
225
- properties: Readonly<{
226
- transitive: boolean;
227
- symmetric: boolean;
228
- reflexive: boolean;
229
- inverse: string | undefined;
230
- inference: InferenceType;
231
- description: string | undefined;
232
- }>;
233
- __metaEdge: true;
234
- }>;
235
- readonly broaderMetaEdge: Readonly<{
236
- name: "broader";
237
- properties: Readonly<{
238
- transitive: boolean;
239
- symmetric: boolean;
240
- reflexive: boolean;
241
- inverse: string | undefined;
242
- inference: InferenceType;
243
- description: string | undefined;
244
- }>;
245
- __metaEdge: true;
246
- }>;
247
- readonly narrowerMetaEdge: Readonly<{
248
- name: "narrower";
249
- properties: Readonly<{
250
- transitive: boolean;
251
- symmetric: boolean;
252
- reflexive: boolean;
253
- inverse: string | undefined;
254
- inference: InferenceType;
255
- description: string | undefined;
256
- }>;
257
- __metaEdge: true;
258
- }>;
259
- readonly relatedToMetaEdge: Readonly<{
260
- name: "relatedTo";
261
- properties: Readonly<{
262
- transitive: boolean;
263
- symmetric: boolean;
264
- reflexive: boolean;
265
- inverse: string | undefined;
266
- inference: InferenceType;
267
- description: string | undefined;
268
- }>;
269
- __metaEdge: true;
270
- }>;
271
- readonly equivalentToMetaEdge: Readonly<{
272
- name: "equivalentTo";
273
- properties: Readonly<{
274
- transitive: boolean;
275
- symmetric: boolean;
276
- reflexive: boolean;
277
- inverse: string | undefined;
278
- inference: InferenceType;
279
- description: string | undefined;
280
- }>;
281
- __metaEdge: true;
282
- }>;
283
- readonly sameAsMetaEdge: Readonly<{
284
- name: "sameAs";
285
- properties: Readonly<{
286
- transitive: boolean;
287
- symmetric: boolean;
288
- reflexive: boolean;
289
- inverse: string | undefined;
290
- inference: InferenceType;
291
- description: string | undefined;
292
- }>;
293
- __metaEdge: true;
294
- }>;
295
- readonly differentFromMetaEdge: Readonly<{
296
- name: "differentFrom";
297
- properties: Readonly<{
298
- transitive: boolean;
299
- symmetric: boolean;
300
- reflexive: boolean;
301
- inverse: string | undefined;
302
- inference: InferenceType;
303
- description: string | undefined;
304
- }>;
305
- __metaEdge: true;
306
- }>;
307
- readonly disjointWithMetaEdge: Readonly<{
308
- name: "disjointWith";
309
- properties: Readonly<{
310
- transitive: boolean;
311
- symmetric: boolean;
312
- reflexive: boolean;
313
- inverse: string | undefined;
314
- inference: InferenceType;
315
- description: string | undefined;
316
- }>;
317
- __metaEdge: true;
318
- }>;
319
- readonly partOfMetaEdge: Readonly<{
320
- name: "partOf";
321
- properties: Readonly<{
322
- transitive: boolean;
323
- symmetric: boolean;
324
- reflexive: boolean;
325
- inverse: string | undefined;
326
- inference: InferenceType;
327
- description: string | undefined;
328
- }>;
329
- __metaEdge: true;
330
- }>;
331
- readonly hasPartMetaEdge: Readonly<{
332
- name: "hasPart";
333
- properties: Readonly<{
334
- transitive: boolean;
335
- symmetric: boolean;
336
- reflexive: boolean;
337
- inverse: string | undefined;
338
- inference: InferenceType;
339
- description: string | undefined;
340
- }>;
341
- __metaEdge: true;
342
- }>;
343
- readonly inverseOfMetaEdge: Readonly<{
344
- name: "inverseOf";
345
- properties: Readonly<{
346
- transitive: boolean;
347
- symmetric: boolean;
348
- reflexive: boolean;
349
- inverse: string | undefined;
350
- inference: InferenceType;
351
- description: string | undefined;
352
- }>;
353
- __metaEdge: true;
354
- }>;
355
- readonly impliesMetaEdge: Readonly<{
356
- name: "implies";
357
- properties: Readonly<{
358
- transitive: boolean;
359
- symmetric: boolean;
360
- reflexive: boolean;
361
- inverse: string | undefined;
362
- inference: InferenceType;
363
- description: string | undefined;
364
- }>;
365
- __metaEdge: true;
366
- }>;
367
- readonly subClassOf: typeof subClassOf;
368
- readonly broader: typeof broader;
369
- readonly narrower: typeof narrower;
370
- readonly relatedTo: typeof relatedTo;
371
- readonly equivalentTo: typeof equivalentTo;
372
- readonly sameAs: typeof sameAs;
373
- readonly differentFrom: typeof differentFrom;
374
- readonly disjointWith: typeof disjointWith;
375
- readonly partOf: typeof partOf;
376
- readonly hasPart: typeof hasPart;
377
- readonly inverseOf: typeof inverseOf;
378
- readonly implies: typeof implies;
379
- };
190
+ declare function havingEq(aggregate: AggregateExpr, value: number): AggregateComparisonPredicate;
380
191
 
381
192
  /**
382
- * Transitive closure computation for ontology relationships.
193
+ * Query Fragment Composition
383
194
  *
384
- * Uses Warshall's algorithm for efficient closure computation.
195
+ * Provides types and utilities for creating reusable query fragments
196
+ * that can be composed together using the pipe() method.
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * // Define a reusable fragment
201
+ * const activeUsers = createFragment<MyGraph>()((q) =>
202
+ * q.whereNode("u", ({ status }) => status.eq("active"))
203
+ * );
204
+ *
205
+ * // Use in queries
206
+ * const results = await query()
207
+ * .from("User", "u")
208
+ * .pipe(activeUsers)
209
+ * .select((ctx) => ctx.u)
210
+ * .execute();
211
+ * ```
385
212
  */
213
+
386
214
  /**
387
- * Computes the transitive closure of a set of directed relations.
215
+ * A query fragment that transforms a QueryBuilder.
388
216
  *
389
- * Given relations like [A→B, B→C], computes all transitive paths [A→B, A→C, B→C].
217
+ * Fragments are functions that take a builder and return a modified builder.
218
+ * They can add predicates, traversals, ordering, and other query operations.
390
219
  *
391
- * @param relations - Array of [from, to] pairs representing direct relationships
392
- * @returns Map from each 'from' to the set of all reachable 'to' values
220
+ * @typeParam G - The graph definition
221
+ * @typeParam InAliases - Input alias map (what the fragment requires)
222
+ * @typeParam OutAliases - Output alias map (what the fragment produces)
223
+ * @typeParam InEdgeAliases - Input edge alias map
224
+ * @typeParam OutEdgeAliases - Output edge alias map
225
+ * @typeParam InRecursiveAliases - Input recursive alias map
226
+ * @typeParam OutRecursiveAliases - Output recursive alias map
393
227
  */
394
- declare function computeTransitiveClosure(relations: readonly (readonly [string, string])[]): ReadonlyMap<string, ReadonlySet<string>>;
228
+ type QueryFragment<G extends GraphDef, InAliases extends AliasMap = AliasMap, OutAliases extends AliasMap = InAliases, InEdgeAliases extends EdgeAliasMap = EdgeAliasMap, OutEdgeAliases extends EdgeAliasMap = InEdgeAliases, InRecursiveAliases extends RecursiveAliasMap = EmptyRecursiveAliasMap, OutRecursiveAliases extends RecursiveAliasMap = InRecursiveAliases> = <CoordinateState extends QueryCoordinateState>(builder: QueryBuilder<G, InAliases, InEdgeAliases, InRecursiveAliases, CoordinateState>) => QueryBuilder<G, OutAliases, OutEdgeAliases, OutRecursiveAliases, CoordinateState>;
395
229
  /**
396
- * Computes the inverse of a transitive closure map.
230
+ * A flexible query fragment that works with any compatible builder.
397
231
  *
398
- * Given A→{B, C}, returns B→{A}, C→{A}.
232
+ * Use this when you want a fragment that only requires certain aliases
233
+ * to exist, but doesn't care about other aliases that may be present.
399
234
  */
400
- declare function invertClosure(closure: ReadonlyMap<string, ReadonlySet<string>>): ReadonlyMap<string, ReadonlySet<string>>;
235
+ type FlexibleQueryFragment<G extends GraphDef, RequiredAliases extends AliasMap = AliasMap, AddedAliases extends AliasMap = AliasMap, RequiredEdgeAliases extends EdgeAliasMap = EdgeAliasMap, AddedEdgeAliases extends EdgeAliasMap = EdgeAliasMap> = <Aliases extends RequiredAliases, EdgeAliases extends RequiredEdgeAliases, RecursiveAliases extends RecursiveAliasMap, CoordinateState extends QueryCoordinateState>(builder: QueryBuilder<G, Aliases, EdgeAliases, RecursiveAliases, CoordinateState>) => QueryBuilder<G, Aliases & AddedAliases, EdgeAliases & AddedEdgeAliases, RecursiveAliases, CoordinateState>;
401
236
  /**
402
- * Checks if there's a path from source to target in the closure.
237
+ * A traversal fragment that transforms a TraversalBuilder.
238
+ *
239
+ * Use this for reusable traversal patterns including edge filtering,
240
+ * recursive traversals, and path collection.
403
241
  */
404
- declare function isReachable(closure: ReadonlyMap<string, ReadonlySet<string>>, source: string, target: string): boolean;
405
-
242
+ type TraversalFragment<G extends GraphDef, EK extends keyof G["edges"] & string, EA extends string, InAliases extends AliasMap = AliasMap, InEdgeAliases extends EdgeAliasMap = EdgeAliasMap> = <Dir extends TraversalDirection, Optional extends boolean, DC extends boolean | string, PC extends boolean | string, RecursiveAliases extends RecursiveAliasMap, CoordinateState extends QueryCoordinateState>(builder: TraversalBuilder<G, InAliases, InEdgeAliases, EK, EA, Dir, Optional, DC, PC, RecursiveAliases, CoordinateState>) => unknown;
243
+ declare function createFragment<G extends GraphDef>(): <InAliases extends AliasMap, OutAliases extends AliasMap, InEdgeAliases extends EdgeAliasMap, OutEdgeAliases extends EdgeAliasMap, InRecursiveAliases extends RecursiveAliasMap = EmptyRecursiveAliasMap, OutRecursiveAliases extends RecursiveAliasMap = InRecursiveAliases>(fn: QueryFragment<G, InAliases, OutAliases, InEdgeAliases, OutEdgeAliases, InRecursiveAliases, OutRecursiveAliases>) => QueryFragment<G, InAliases, OutAliases, InEdgeAliases, OutEdgeAliases, InRecursiveAliases, OutRecursiveAliases>;
406
244
  /**
407
- * Maximum depth for recursive CTE queries when maxDepth is unlimited (-1).
408
- *
409
- * Graphs with branching factor B produce O(B^depth) rows before cycle
410
- * detection can prune them. A default of 10 covers typical neighborhood,
411
- * shortest-path, and hierarchy use-cases without risking exponential blowup
412
- * on dense graphs. Users who need deeper traversals should call .maxHops(N)
413
- * explicitly (up to MAX_EXPLICIT_RECURSIVE_DEPTH).
414
- */
415
- declare const MAX_RECURSIVE_DEPTH = 10;
416
- /**
417
- * Maximum depth for explicit maxDepth traversals.
418
- *
419
- * Explicit traversal bounds are opt-in and safe to allow at a higher ceiling
420
- * for stress testing and long-path workloads.
421
- */
422
- declare const MAX_EXPLICIT_RECURSIVE_DEPTH = 1000;
423
-
424
- /**
425
- * Aggregate and HAVING Helper Functions
426
- *
427
- * Provides factory functions for creating aggregate expressions (COUNT, SUM, etc.)
428
- * and HAVING clause predicates for use in GROUP BY queries.
429
- */
430
-
431
- /**
432
- * Creates a COUNT aggregate expression.
433
- *
434
- * @param alias - The node alias to count
435
- * @param field - Optional field to count (defaults to counting nodes by ID)
436
- *
437
- * @example
438
- * ```typescript
439
- * // COUNT all persons
440
- * count("p")
441
- *
442
- * // COUNT persons with email field
443
- * count("p", "email")
444
- * ```
445
- */
446
- declare function count(alias: string, field?: string): AggregateExpr;
447
- /**
448
- * Creates a COUNT DISTINCT aggregate expression.
449
- *
450
- * @param alias - The node alias to count
451
- * @param field - Optional field to count distinct values of
452
- */
453
- declare function countDistinct(alias: string, field?: string): AggregateExpr;
454
- /**
455
- * Creates a COUNT aggregate expression over an edge alias.
456
- *
457
- * Counts edges directly, without joining back to the target node table.
458
- * This has different semantics from `count(targetAlias)`:
459
- *
460
- * - `countEdges(edgeAlias)` — counts live edges, regardless of target-node
461
- * temporal state. If a target node's `validTo` is in the past while its
462
- * incident edges are still live, those edges are still counted.
463
- * - `count(targetAlias)` — counts edges whose target node is currently
464
- * valid under the query's temporal mode.
465
- *
466
- * For the common case ("how many follow relationships does this user
467
- * have?") the edge-count semantics is what you want, and the compiler
468
- * can skip the target-node join entirely — measurably faster on
469
- * full-graph aggregates where the join dominates cost.
470
- *
471
- * @example
472
- * ```typescript
473
- * store
474
- * .query()
475
- * .from("User", "u")
476
- * .optionalTraverse("follows", "e", { expand: "none" })
477
- * .to("User", "target")
478
- * .groupByNode("u")
479
- * .aggregate({
480
- * name: field("u", "name"),
481
- * // counts edges — skips the target-node join
482
- * followCount: countEdges("e"),
483
- * })
484
- * .execute();
485
- * ```
486
- */
487
- declare function countEdges(edgeAlias: string): AggregateExpr;
488
- /**
489
- * Creates a COUNT DISTINCT aggregate expression over an edge alias.
490
- * See {@link countEdges} for semantics.
491
- *
492
- * Distinct-on-edge-id is equivalent to `countEdges` when the query
493
- * surface produces each edge exactly once, but stays meaningful under
494
- * polymorphic expansions and ontology-driven edge fan-outs where the
495
- * same edge can appear multiple times in the join output.
496
- */
497
- declare function countDistinctEdges(edgeAlias: string): AggregateExpr;
498
- /**
499
- * Creates a SUM aggregate expression.
500
- *
501
- * @param alias - The node alias
502
- * @param field - The numeric field to sum
503
- */
504
- declare function sum(alias: string, field: string): AggregateExpr;
505
- /**
506
- * Creates an AVG aggregate expression.
507
- *
508
- * @param alias - The node alias
509
- * @param field - The numeric field to average
510
- */
511
- declare function avg(alias: string, field: string): AggregateExpr;
512
- /**
513
- * Creates a MIN aggregate expression.
514
- *
515
- * @param alias - The node alias
516
- * @param field - The field to find minimum of
517
- */
518
- declare function min(alias: string, field: string): AggregateExpr;
519
- /**
520
- * Creates a MAX aggregate expression.
521
- *
522
- * @param alias - The node alias
523
- * @param field - The field to find maximum of
524
- */
525
- declare function max(alias: string, field: string): AggregateExpr;
526
- /**
527
- * Creates a field reference for use in aggregate.
528
- *
529
- * @param alias - The node alias
530
- * @param path - Path to the field. Use "id" for node ID, "kind" for node kind,
531
- * or the property name directly (e.g., "title", "year").
532
- *
533
- * @example
534
- * ```typescript
535
- * field("p", "id") // Node ID
536
- * field("p", "kind") // Node kind
537
- * field("p", "title") // Property field
538
- * field("p", "nested", "field") // Nested property
539
- * ```
540
- */
541
- declare function field(alias: string, ...path: string[]): FieldRef;
542
- /**
543
- * Creates a HAVING predicate that compares an aggregate to a value.
544
- *
545
- * @param aggregate - The aggregate expression (count, sum, avg, etc.)
546
- * @param op - The comparison operator
547
- * @param value - The value to compare against
548
- *
549
- * @example
550
- * ```typescript
551
- * // HAVING COUNT(*) > 10
552
- * having(count("p"), "gt", 10)
553
- *
554
- * // HAVING AVG(salary) >= 50000
555
- * having(avg("p", "salary"), "gte", 50000)
556
- * ```
557
- */
558
- declare function having(aggregate: AggregateExpr, op: ComparisonOp, value: number | string | boolean): AggregateComparisonPredicate;
559
- /**
560
- * Creates a HAVING predicate: aggregate > value
561
- */
562
- declare function havingGt(aggregate: AggregateExpr, value: number): AggregateComparisonPredicate;
563
- /**
564
- * Creates a HAVING predicate: aggregate >= value
565
- */
566
- declare function havingGte(aggregate: AggregateExpr, value: number): AggregateComparisonPredicate;
567
- /**
568
- * Creates a HAVING predicate: aggregate < value
569
- */
570
- declare function havingLt(aggregate: AggregateExpr, value: number): AggregateComparisonPredicate;
571
- /**
572
- * Creates a HAVING predicate: aggregate <= value
573
- */
574
- declare function havingLte(aggregate: AggregateExpr, value: number): AggregateComparisonPredicate;
575
- /**
576
- * Creates a HAVING predicate: aggregate = value
577
- */
578
- declare function havingEq(aggregate: AggregateExpr, value: number): AggregateComparisonPredicate;
579
-
580
- /**
581
- * Query Fragment Composition
582
- *
583
- * Provides types and utilities for creating reusable query fragments
584
- * that can be composed together using the pipe() method.
585
- *
586
- * @example
587
- * ```typescript
588
- * // Define a reusable fragment
589
- * const activeUsers = createFragment<MyGraph>()((q) =>
590
- * q.whereNode("u", ({ status }) => status.eq("active"))
591
- * );
592
- *
593
- * // Use in queries
594
- * const results = await query()
595
- * .from("User", "u")
596
- * .pipe(activeUsers)
597
- * .select((ctx) => ctx.u)
598
- * .execute();
599
- * ```
600
- */
601
-
602
- /**
603
- * A query fragment that transforms a QueryBuilder.
604
- *
605
- * Fragments are functions that take a builder and return a modified builder.
606
- * They can add predicates, traversals, ordering, and other query operations.
607
- *
608
- * @typeParam G - The graph definition
609
- * @typeParam InAliases - Input alias map (what the fragment requires)
610
- * @typeParam OutAliases - Output alias map (what the fragment produces)
611
- * @typeParam InEdgeAliases - Input edge alias map
612
- * @typeParam OutEdgeAliases - Output edge alias map
613
- * @typeParam InRecursiveAliases - Input recursive alias map
614
- * @typeParam OutRecursiveAliases - Output recursive alias map
615
- */
616
- type QueryFragment<G extends GraphDef, InAliases extends AliasMap = AliasMap, OutAliases extends AliasMap = InAliases, InEdgeAliases extends EdgeAliasMap = EdgeAliasMap, OutEdgeAliases extends EdgeAliasMap = InEdgeAliases, InRecursiveAliases extends RecursiveAliasMap = EmptyRecursiveAliasMap, OutRecursiveAliases extends RecursiveAliasMap = InRecursiveAliases> = <CoordinateState extends QueryCoordinateState>(builder: QueryBuilder<G, InAliases, InEdgeAliases, InRecursiveAliases, CoordinateState>) => QueryBuilder<G, OutAliases, OutEdgeAliases, OutRecursiveAliases, CoordinateState>;
617
- /**
618
- * A flexible query fragment that works with any compatible builder.
619
- *
620
- * Use this when you want a fragment that only requires certain aliases
621
- * to exist, but doesn't care about other aliases that may be present.
622
- */
623
- type FlexibleQueryFragment<G extends GraphDef, RequiredAliases extends AliasMap = AliasMap, AddedAliases extends AliasMap = AliasMap, RequiredEdgeAliases extends EdgeAliasMap = EdgeAliasMap, AddedEdgeAliases extends EdgeAliasMap = EdgeAliasMap> = <Aliases extends RequiredAliases, EdgeAliases extends RequiredEdgeAliases, RecursiveAliases extends RecursiveAliasMap, CoordinateState extends QueryCoordinateState>(builder: QueryBuilder<G, Aliases, EdgeAliases, RecursiveAliases, CoordinateState>) => QueryBuilder<G, Aliases & AddedAliases, EdgeAliases & AddedEdgeAliases, RecursiveAliases, CoordinateState>;
624
- /**
625
- * A traversal fragment that transforms a TraversalBuilder.
626
- *
627
- * Use this for reusable traversal patterns including edge filtering,
628
- * recursive traversals, and path collection.
629
- */
630
- type TraversalFragment<G extends GraphDef, EK extends keyof G["edges"] & string, EA extends string, InAliases extends AliasMap = AliasMap, InEdgeAliases extends EdgeAliasMap = EdgeAliasMap> = <Dir extends TraversalDirection, Optional extends boolean, DC extends boolean | string, PC extends boolean | string, RecursiveAliases extends RecursiveAliasMap, CoordinateState extends QueryCoordinateState>(builder: TraversalBuilder<G, InAliases, InEdgeAliases, EK, EA, Dir, Optional, DC, PC, RecursiveAliases, CoordinateState>) => unknown;
631
- declare function createFragment<G extends GraphDef>(): <InAliases extends AliasMap, OutAliases extends AliasMap, InEdgeAliases extends EdgeAliasMap, OutEdgeAliases extends EdgeAliasMap, InRecursiveAliases extends RecursiveAliasMap = EmptyRecursiveAliasMap, OutRecursiveAliases extends RecursiveAliasMap = InRecursiveAliases>(fn: QueryFragment<G, InAliases, OutAliases, InEdgeAliases, OutEdgeAliases, InRecursiveAliases, OutRecursiveAliases>) => QueryFragment<G, InAliases, OutAliases, InEdgeAliases, OutEdgeAliases, InRecursiveAliases, OutRecursiveAliases>;
632
- /**
633
- * Combines multiple fragments into a single fragment.
245
+ * Combines multiple fragments into a single fragment.
634
246
  *
635
247
  * Fragments are applied in order from left to right.
636
248
  *
@@ -680,6 +292,408 @@ declare function limitFragment<G extends GraphDef>(n: number): FlexibleQueryFrag
680
292
  */
681
293
  declare function offsetFragment<G extends GraphDef>(n: number): FlexibleQueryFragment<G>;
682
294
 
295
+ /**
296
+ * Rebuilds the derived current identity closure for an identity-enabled store.
297
+ * This is a repair operation: it does not change graph revision or assertions.
298
+ */
299
+ declare function rebuildIdentityClosure<G extends GraphDef & Readonly<{
300
+ identity: GraphIdentityConfig;
301
+ }>>(store: Store<G>): Promise<void>;
302
+
303
+ declare const libsqlVectorStrategy: VectorStrategy;
304
+
305
+ declare const pgvectorStrategy: VectorStrategy;
306
+
307
+ declare const sqliteVecStrategy: VectorStrategy;
308
+
309
+ /**
310
+ * One-time offline migration: legacy shared embeddings table → per-field
311
+ * strategy storage.
312
+ *
313
+ * ## What this is for
314
+ *
315
+ * The cross-backend vector cutover (#157) dropped the single shared
316
+ * `typegraph_node_embeddings` table. Each
317
+ * `VectorStrategy` now OWNS one typed, fixed-dimension structure per
318
+ * `(nodeKind, fieldPath)` — the only layout that can be ANN-indexed on
319
+ * libSQL and sqlite-vec, not just pgvector.
320
+ *
321
+ * Deployments that wrote embeddings under the old shared table before
322
+ * upgrading still hold those rows. This utility drains them into the new
323
+ * per-field storage **once**, during the upgrade, so existing embedded
324
+ * data survives the cutover without re-embedding from source.
325
+ *
326
+ * It is an explicitly-run, offline step — not wired into `materializeIndexes`
327
+ * or any boot path. Run it once after deploying the new version and before
328
+ * (or alongside) the first `materializeIndexes()`, then drop the legacy
329
+ * table at your leisure.
330
+ *
331
+ * ## How it works
332
+ *
333
+ * - Skips cleanly (returns a zero summary) when the legacy table is absent —
334
+ * a fresh install, or a re-run after the table was dropped.
335
+ * - Reads rows in keyset-paginated batches (never the whole table at once),
336
+ * decoding the engine-native embedding column to a numeric array at the SQL
337
+ * level: sqlite-vec stored a `vec_f32` blob (`vec_to_json` decodes it);
338
+ * pgvector stored a native `vector` (`::text` yields a `[…]` literal).
339
+ * - Re-inserts each row through `backend.upsertEmbedding`, which routes the
340
+ * active strategy's `buildUpsert` and idempotently provisions the per-field
341
+ * storage (the same `(nodeKind, fieldPath)` slot a fresh store write uses).
342
+ * The migration stays graph-agnostic and execution-correct on both the
343
+ * sync (better-sqlite3) and async (libsql / Postgres) backends — it does
344
+ * not re-implement the backend's statement-execution glue.
345
+ *
346
+ * Idempotent and resumable: a partial run followed by a full run converges
347
+ * to the same per-field tables, because every write is an upsert keyed by
348
+ * `(graph_id, node_id)` in the strategy's owned storage.
349
+ */
350
+
351
+ /**
352
+ * The resolved storage config for one `(nodeKind, fieldPath)` slot that the
353
+ * legacy table did not record. The legacy shared table stored only the
354
+ * vector and its dimension count — not the metric or index type — so a
355
+ * caller that wants migrated fields to match a specific graph's `embedding()`
356
+ * declarations supplies this resolver.
357
+ */
358
+ type LegacyEmbeddingSlotConfig = Readonly<{
359
+ metric: EmbeddingMetric;
360
+ indexType: EmbeddingIndexType;
361
+ }>;
362
+ /**
363
+ * Options for {@link migrateLegacyEmbeddings}.
364
+ */
365
+ type MigrateLegacyEmbeddingsOptions = Readonly<{
366
+ /**
367
+ * The backend to migrate, wired with the destination `VectorStrategy`
368
+ * (i.e. the post-cutover backend). Its `vectorStrategy` owns the per-field
369
+ * storage rows are written into and its `upsertEmbedding` performs the
370
+ * writes.
371
+ */
372
+ backend: GraphBackend;
373
+ /**
374
+ * Restrict the migration to a single graph. When omitted, every graph's
375
+ * rows in the legacy table are migrated (the table is graph-scoped by its
376
+ * `graph_id` column).
377
+ */
378
+ graphId?: string;
379
+ /**
380
+ * Resolves the metric / index type for a `(nodeKind, fieldPath)` slot the
381
+ * legacy table didn't persist. Return `undefined` to fall back to the
382
+ * cosine / hnsw defaults. Supply this (typically reading the graph's
383
+ * `embedding()` declarations) when migrated fields must match a specific
384
+ * metric — e.g. an `l2` field, which scores incorrectly under the cosine
385
+ * default.
386
+ */
387
+ resolveSlotConfig?: (nodeKind: string, fieldPath: string) => LegacyEmbeddingSlotConfig | undefined;
388
+ /** Rows read per round-trip. Defaults to {@link DEFAULT_BATCH_SIZE}. */
389
+ batchSize?: number;
390
+ /**
391
+ * Physical name of the legacy table to drain. Defaults to
392
+ * {@link LEGACY_EMBEDDINGS_TABLE_NAME}. Override only for a non-default
393
+ * deployment that renamed the embeddings table.
394
+ */
395
+ legacyTableName?: string;
396
+ }>;
397
+ /**
398
+ * Summary of a {@link migrateLegacyEmbeddings} run.
399
+ */
400
+ type MigrateLegacyEmbeddingsResult = Readonly<{
401
+ /** Total embedding rows re-inserted into per-field storage. */
402
+ migrated: number;
403
+ /**
404
+ * Per-`(nodeKind, fieldPath)` counts, keyed `"<nodeKind>.<fieldPath>"`
405
+ * (the strategy's logical-slot key form). Empty when the legacy table was
406
+ * absent or held no rows for the requested scope.
407
+ */
408
+ perField: Readonly<Record<string, number>>;
409
+ /**
410
+ * Rows skipped because their vector length didn't match the per-field
411
+ * table's fixed dimension. The legacy shared column allowed mixed
412
+ * dimensions for one `(nodeKind, fieldPath)` (e.g. an unmigrated model
413
+ * change); the first migrated row fixes the typed table's dimension and
414
+ * any differently-sized rows for that slot are skipped rather than aborting
415
+ * the whole migration. Keyed `"<nodeKind>.<fieldPath>"`. Non-empty here
416
+ * means those fields need a deliberate re-embed at a single dimension.
417
+ */
418
+ skippedDimensionMismatch: Readonly<Record<string, number>>;
419
+ /**
420
+ * Rows skipped because their legacy embedding could not be decoded into a
421
+ * finite-number array — a corrupt value (e.g. a pgvector `vector` column
422
+ * permits `NaN`/`Infinity`, which is not valid JSON). Keyed
423
+ * `"<nodeKind>.<fieldPath>"`. Skipping + reporting keeps one bad row from
424
+ * aborting the whole migration; non-empty here means those rows need manual
425
+ * repair.
426
+ */
427
+ skippedDecodeError: Readonly<Record<string, number>>;
428
+ /**
429
+ * Whether the legacy table existed. `false` means the run was a clean
430
+ * no-op (fresh install, or already-dropped table on a re-run).
431
+ */
432
+ legacyTablePresent: boolean;
433
+ }>;
434
+ /**
435
+ * Re-inserts every embedding from the legacy shared
436
+ * `typegraph_node_embeddings` table into the active
437
+ * `backend.vectorStrategy`'s per-`(nodeKind, fieldPath)` storage.
438
+ *
439
+ * One-time, explicitly-run upgrade step for the shared-table → per-field
440
+ * cutover (#157). Idempotent, batched, and a clean no-op when the legacy
441
+ * table is absent. See the module doc comment for the full contract.
442
+ *
443
+ * @throws Error when the backend exposes no `vectorStrategy` /
444
+ * `upsertEmbedding` (nothing to migrate *into*) — a configuration
445
+ * error the caller must fix by wiring the destination strategy
446
+ * before migrating.
447
+ */
448
+ declare function migrateLegacyEmbeddings(options: MigrateLegacyEmbeddingsOptions): Promise<MigrateLegacyEmbeddingsResult>;
449
+
450
+ /**
451
+ * Creates a subClassOf ontology relation.
452
+ */
453
+ declare function subClassOf(child: NodeType, parent: NodeType): OntologyRelation;
454
+ /**
455
+ * Creates a broader ontology relation.
456
+ */
457
+ declare function broader(narrowerConcept: NodeType, broaderConcept: NodeType): OntologyRelation;
458
+ /**
459
+ * Creates a narrower ontology relation.
460
+ */
461
+ declare function narrower(broaderConcept: NodeType, narrowerConcept: NodeType): OntologyRelation;
462
+ /**
463
+ * Creates a relatedTo ontology relation.
464
+ */
465
+ declare function relatedTo(conceptA: NodeType, conceptB: NodeType): OntologyRelation;
466
+ /**
467
+ * Creates an equivalentTo ontology relation.
468
+ * Can be used with external IRIs for cross-system mapping.
469
+ */
470
+ declare function equivalentTo(kindA: NodeType, kindBOrIri: NodeType | string): OntologyRelation;
471
+ /**
472
+ * Creates the deprecated type-level `sameAs` alias of `equivalentTo`.
473
+ *
474
+ * @deprecated Enable `identity: { sameIdAcrossKinds: "fold" }` and use the
475
+ * TypeGraph Identity Profile's runtime `store.identity` ledger. The ledger
476
+ * does not perform OWL property substitution or automatic query expansion.
477
+ */
478
+ declare function sameAs(kindA: NodeType, kindBOrIri: NodeType | string): OntologyRelation;
479
+ /**
480
+ * Creates the deprecated decorative type-level `differentFrom` relation.
481
+ *
482
+ * @deprecated Enable `identity: { sameIdAcrossKinds: "fold" }` and use the
483
+ * TypeGraph Identity Profile's runtime `store.identity` ledger. The ledger
484
+ * does not perform OWL property substitution or automatic query expansion.
485
+ */
486
+ declare function differentFrom(kindA: NodeType, kindB: NodeType): OntologyRelation;
487
+ /**
488
+ * Creates a disjointWith ontology relation.
489
+ */
490
+ declare function disjointWith(kindA: NodeType, kindB: NodeType): OntologyRelation;
491
+ /**
492
+ * Creates a partOf ontology relation.
493
+ */
494
+ declare function partOf(part: NodeType, whole: NodeType): OntologyRelation;
495
+ /**
496
+ * Creates a hasPart ontology relation.
497
+ */
498
+ declare function hasPart(whole: NodeType, part: NodeType): OntologyRelation;
499
+ /**
500
+ * Creates an inverseOf ontology relation.
501
+ * Edge A inverseOf edge B means traversing A is equivalent to traversing B backwards.
502
+ */
503
+ declare function inverseOf(edgeA: EdgeType, edgeB: EdgeType): OntologyRelation;
504
+ /**
505
+ * Creates an implies ontology relation.
506
+ * Edge A implies edge B means if A exists between two nodes, B should also exist.
507
+ */
508
+ declare function implies(edgeA: EdgeType, edgeB: EdgeType): OntologyRelation;
509
+ /**
510
+ * The core ontology module containing all built-in meta-edges
511
+ * and their relation factory functions.
512
+ */
513
+ declare const core: {
514
+ readonly subClassOfMetaEdge: Readonly<{
515
+ name: "subClassOf";
516
+ properties: Readonly<{
517
+ transitive: boolean;
518
+ symmetric: boolean;
519
+ reflexive: boolean;
520
+ inverse: string | undefined;
521
+ inference: InferenceType;
522
+ description: string | undefined;
523
+ }>;
524
+ __metaEdge: true;
525
+ }>;
526
+ readonly broaderMetaEdge: Readonly<{
527
+ name: "broader";
528
+ properties: Readonly<{
529
+ transitive: boolean;
530
+ symmetric: boolean;
531
+ reflexive: boolean;
532
+ inverse: string | undefined;
533
+ inference: InferenceType;
534
+ description: string | undefined;
535
+ }>;
536
+ __metaEdge: true;
537
+ }>;
538
+ readonly narrowerMetaEdge: Readonly<{
539
+ name: "narrower";
540
+ properties: Readonly<{
541
+ transitive: boolean;
542
+ symmetric: boolean;
543
+ reflexive: boolean;
544
+ inverse: string | undefined;
545
+ inference: InferenceType;
546
+ description: string | undefined;
547
+ }>;
548
+ __metaEdge: true;
549
+ }>;
550
+ readonly relatedToMetaEdge: Readonly<{
551
+ name: "relatedTo";
552
+ properties: Readonly<{
553
+ transitive: boolean;
554
+ symmetric: boolean;
555
+ reflexive: boolean;
556
+ inverse: string | undefined;
557
+ inference: InferenceType;
558
+ description: string | undefined;
559
+ }>;
560
+ __metaEdge: true;
561
+ }>;
562
+ readonly equivalentToMetaEdge: Readonly<{
563
+ name: "equivalentTo";
564
+ properties: Readonly<{
565
+ transitive: boolean;
566
+ symmetric: boolean;
567
+ reflexive: boolean;
568
+ inverse: string | undefined;
569
+ inference: InferenceType;
570
+ description: string | undefined;
571
+ }>;
572
+ __metaEdge: true;
573
+ }>;
574
+ readonly sameAsMetaEdge: Readonly<{
575
+ name: "sameAs";
576
+ properties: Readonly<{
577
+ transitive: boolean;
578
+ symmetric: boolean;
579
+ reflexive: boolean;
580
+ inverse: string | undefined;
581
+ inference: InferenceType;
582
+ description: string | undefined;
583
+ }>;
584
+ __metaEdge: true;
585
+ }>;
586
+ readonly differentFromMetaEdge: Readonly<{
587
+ name: "differentFrom";
588
+ properties: Readonly<{
589
+ transitive: boolean;
590
+ symmetric: boolean;
591
+ reflexive: boolean;
592
+ inverse: string | undefined;
593
+ inference: InferenceType;
594
+ description: string | undefined;
595
+ }>;
596
+ __metaEdge: true;
597
+ }>;
598
+ readonly disjointWithMetaEdge: Readonly<{
599
+ name: "disjointWith";
600
+ properties: Readonly<{
601
+ transitive: boolean;
602
+ symmetric: boolean;
603
+ reflexive: boolean;
604
+ inverse: string | undefined;
605
+ inference: InferenceType;
606
+ description: string | undefined;
607
+ }>;
608
+ __metaEdge: true;
609
+ }>;
610
+ readonly partOfMetaEdge: Readonly<{
611
+ name: "partOf";
612
+ properties: Readonly<{
613
+ transitive: boolean;
614
+ symmetric: boolean;
615
+ reflexive: boolean;
616
+ inverse: string | undefined;
617
+ inference: InferenceType;
618
+ description: string | undefined;
619
+ }>;
620
+ __metaEdge: true;
621
+ }>;
622
+ readonly hasPartMetaEdge: Readonly<{
623
+ name: "hasPart";
624
+ properties: Readonly<{
625
+ transitive: boolean;
626
+ symmetric: boolean;
627
+ reflexive: boolean;
628
+ inverse: string | undefined;
629
+ inference: InferenceType;
630
+ description: string | undefined;
631
+ }>;
632
+ __metaEdge: true;
633
+ }>;
634
+ readonly inverseOfMetaEdge: Readonly<{
635
+ name: "inverseOf";
636
+ properties: Readonly<{
637
+ transitive: boolean;
638
+ symmetric: boolean;
639
+ reflexive: boolean;
640
+ inverse: string | undefined;
641
+ inference: InferenceType;
642
+ description: string | undefined;
643
+ }>;
644
+ __metaEdge: true;
645
+ }>;
646
+ readonly impliesMetaEdge: Readonly<{
647
+ name: "implies";
648
+ properties: Readonly<{
649
+ transitive: boolean;
650
+ symmetric: boolean;
651
+ reflexive: boolean;
652
+ inverse: string | undefined;
653
+ inference: InferenceType;
654
+ description: string | undefined;
655
+ }>;
656
+ __metaEdge: true;
657
+ }>;
658
+ readonly subClassOf: typeof subClassOf;
659
+ readonly broader: typeof broader;
660
+ readonly narrower: typeof narrower;
661
+ readonly relatedTo: typeof relatedTo;
662
+ readonly equivalentTo: typeof equivalentTo;
663
+ readonly sameAs: typeof sameAs;
664
+ readonly differentFrom: typeof differentFrom;
665
+ readonly disjointWith: typeof disjointWith;
666
+ readonly partOf: typeof partOf;
667
+ readonly hasPart: typeof hasPart;
668
+ readonly inverseOf: typeof inverseOf;
669
+ readonly implies: typeof implies;
670
+ };
671
+
672
+ /**
673
+ * Transitive closure computation for ontology relationships.
674
+ *
675
+ * Uses Warshall's algorithm for efficient closure computation.
676
+ */
677
+ /**
678
+ * Computes the transitive closure of a set of directed relations.
679
+ *
680
+ * Given relations like [A→B, B→C], computes all transitive paths [A→B, A→C, B→C].
681
+ *
682
+ * @param relations - Array of [from, to] pairs representing direct relationships
683
+ * @returns Map from each 'from' to the set of all reachable 'to' values
684
+ */
685
+ declare function computeTransitiveClosure(relations: readonly (readonly [string, string])[]): ReadonlyMap<string, ReadonlySet<string>>;
686
+ /**
687
+ * Computes the inverse of a transitive closure map.
688
+ *
689
+ * Given A→{B, C}, returns B→{A}, C→{A}.
690
+ */
691
+ declare function invertClosure(closure: ReadonlyMap<string, ReadonlySet<string>>): ReadonlyMap<string, ReadonlySet<string>>;
692
+ /**
693
+ * Checks if there's a path from source to target in the closure.
694
+ */
695
+ declare function isReachable(closure: ReadonlyMap<string, ReadonlySet<string>>, source: string, target: string): boolean;
696
+
683
697
  /**
684
698
  * ID generation utilities.
685
699
  *
@@ -707,4 +721,4 @@ type IdConfig = Readonly<{
707
721
  edgeIdGenerator: IdGenerator;
708
722
  }>;
709
723
 
710
- export { AliasMap, EdgeType, EmptyRecursiveAliasMap, FieldRef, type FlexibleQueryFragment, GraphBackend, GraphDef, type IdConfig, type IdGenerator, InferenceType, type LegacyEmbeddingSlotConfig, MAX_EXPLICIT_RECURSIVE_DEPTH, MAX_RECURSIVE_DEPTH, type MigrateLegacyEmbeddingsOptions, type MigrateLegacyEmbeddingsResult, NodeType, OntologyRelation, QueryBuilder, QueryCoordinateState, type QueryFragment, type TraversalFragment, VectorStrategy, avg, broader, composeFragments, computeTransitiveClosure, core, count, countDistinct, countDistinctEdges, countEdges, createFragment, differentFrom, disjointWith, equivalentTo, field, generateId, hasPart, having, havingEq, havingGt, havingGte, havingLt, havingLte, implies, inverseOf, invertClosure, isReachable, libsqlVectorStrategy, limitFragment, max, migrateLegacyEmbeddings, min, narrower, offsetFragment, orderByFragment, partOf, pgvectorStrategy, relatedTo, sameAs, sqliteVecStrategy, subClassOf, sum };
724
+ export { AliasMap, EdgeType, EmptyRecursiveAliasMap, FieldRef, type FlexibleQueryFragment, GraphBackend, GraphDef, GraphIdentityConfig, type IdConfig, type IdGenerator, InferenceType, type LegacyEmbeddingSlotConfig, MAX_EXPLICIT_RECURSIVE_DEPTH, MAX_RECURSIVE_DEPTH, type MigrateLegacyEmbeddingsOptions, type MigrateLegacyEmbeddingsResult, NodeType, OntologyRelation, QueryBuilder, QueryCoordinateState, type QueryFragment, Store, type TraversalFragment, VectorStrategy, avg, broader, composeFragments, computeTransitiveClosure, core, count, countDistinct, countDistinctEdges, countEdges, createFragment, differentFrom, disjointWith, equivalentTo, field, generateId, hasPart, having, havingEq, havingGt, havingGte, havingLt, havingLte, implies, inverseOf, invertClosure, isReachable, libsqlVectorStrategy, limitFragment, max, migrateLegacyEmbeddings, min, narrower, offsetFragment, orderByFragment, partOf, pgvectorStrategy, rebuildIdentityClosure, relatedTo, sameAs, sqliteVecStrategy, subClassOf, sum };