@nicia-ai/typegraph 0.45.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) 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 -42
  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 -38
  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 -43
  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 -39
  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-S3ZRKJHY.js → chunk-2LG2XB2M.js} +3 -3
  44. package/dist/{chunk-S3ZRKJHY.js.map → chunk-2LG2XB2M.js.map} +1 -1
  45. package/dist/{chunk-7PF2L3H6.cjs → chunk-2NA5DYLO.cjs} +4 -4
  46. package/dist/{chunk-7PF2L3H6.cjs.map → chunk-2NA5DYLO.cjs.map} +1 -1
  47. package/dist/{chunk-VVQM4CZD.cjs → chunk-3DHZCOT7.cjs} +20 -20
  48. package/dist/{chunk-VVQM4CZD.cjs.map → chunk-3DHZCOT7.cjs.map} +1 -1
  49. package/dist/{chunk-JXUTCSXX.cjs → chunk-4UGOKMI5.cjs} +250 -158
  50. package/dist/chunk-4UGOKMI5.cjs.map +1 -0
  51. package/dist/{chunk-RFRM3Q5K.js → chunk-5262ZMTR.js} +14 -5
  52. package/dist/chunk-5262ZMTR.js.map +1 -0
  53. package/dist/{chunk-QRNYDV5Z.js → chunk-5763DULU.js} +214 -69
  54. package/dist/chunk-5763DULU.js.map +1 -0
  55. package/dist/{chunk-BGYJW37L.js → chunk-5UVRGXD3.js} +277 -7
  56. package/dist/chunk-5UVRGXD3.js.map +1 -0
  57. package/dist/{chunk-QR24DJDF.cjs → chunk-62ZP23AW.cjs} +15 -15
  58. package/dist/{chunk-QR24DJDF.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-J2ICGNHO.cjs → chunk-7BQXPCGN.cjs} +830 -169
  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-UCQ3BFSY.cjs → chunk-7GT72YHH.cjs} +682 -332
  66. package/dist/chunk-7GT72YHH.cjs.map +1 -0
  67. package/dist/{chunk-DXEEHSGN.js → chunk-7VQXLT5O.js} +436 -43
  68. package/dist/chunk-7VQXLT5O.js.map +1 -0
  69. package/dist/{chunk-ID4WXTKL.js → chunk-7Z5OR7KO.js} +2360 -605
  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-55ITBQJI.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-WUFASQUO.js → chunk-ASTI57H3.js} +3 -3
  80. package/dist/{chunk-WUFASQUO.js.map → chunk-ASTI57H3.js.map} +1 -1
  81. package/dist/{chunk-4QIKLIGG.js → chunk-BKCUOV7A.js} +15 -5
  82. package/dist/chunk-BKCUOV7A.js.map +1 -0
  83. package/dist/{chunk-JQXSZHF2.cjs → chunk-BSFJMMV3.cjs} +134 -7
  84. package/dist/chunk-BSFJMMV3.cjs.map +1 -0
  85. package/dist/{chunk-4GUTQPVO.js → chunk-C23WSN5E.js} +185 -24
  86. package/dist/chunk-C23WSN5E.js.map +1 -0
  87. package/dist/{chunk-QLUXRWKL.js → chunk-CBTIUB76.js} +3 -3
  88. package/dist/{chunk-QLUXRWKL.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-FL5UQRES.js → chunk-DCQVHAYQ.js} +5 -5
  94. package/dist/{chunk-FL5UQRES.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-VTN3C3CH.js → chunk-HFHTMECK.js} +7 -7
  104. package/dist/{chunk-VTN3C3CH.js.map → chunk-HFHTMECK.js.map} +1 -1
  105. package/dist/{chunk-FLEQ2HBK.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-TKP5T34P.js → chunk-JXA2ZP2Q.js} +6 -16
  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-42PYUGLS.js → chunk-K5ELX2GT.js} +108 -8
  120. package/dist/chunk-K5ELX2GT.js.map +1 -0
  121. package/dist/{chunk-D54WH24V.cjs → chunk-LBJKZXDE.cjs} +115 -13
  122. package/dist/chunk-LBJKZXDE.cjs.map +1 -0
  123. package/dist/{chunk-4MEWSUVM.cjs → chunk-M4BDU5RX.cjs} +12 -12
  124. package/dist/chunk-M4BDU5RX.cjs.map +1 -0
  125. package/dist/{chunk-MIJKEVV7.js → chunk-MSY7FSX4.js} +37 -4
  126. package/dist/chunk-MSY7FSX4.js.map +1 -0
  127. package/dist/{chunk-H7VE3FL4.cjs → chunk-MUK4BU7K.cjs} +519 -125
  128. package/dist/chunk-MUK4BU7K.cjs.map +1 -0
  129. package/dist/{chunk-D56XG4EI.cjs → chunk-MXJDTH5B.cjs} +56 -45
  130. package/dist/chunk-MXJDTH5B.cjs.map +1 -0
  131. package/dist/{chunk-ZI6VQSZA.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-BNS75YNF.cjs → chunk-NK5Q7UNE.cjs} +10 -20
  140. package/dist/chunk-NK5Q7UNE.cjs.map +1 -0
  141. package/dist/{chunk-YMTXMPV6.js → chunk-NMWDXFPH.js} +4 -4
  142. package/dist/{chunk-YMTXMPV6.js.map → chunk-NMWDXFPH.js.map} +1 -1
  143. package/dist/{chunk-TKORQCG4.js → chunk-NQ6BRJBE.js} +386 -862
  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-NAAMUYMS.cjs → chunk-PNN7RHVR.cjs} +58 -48
  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-FQ7ZPOTZ.js → chunk-QLRESYPU.js} +637 -493
  158. package/dist/chunk-QLRESYPU.js.map +1 -0
  159. package/dist/{chunk-Q6EDCUXV.js → chunk-QWX5YA3K.js} +554 -204
  160. package/dist/chunk-QWX5YA3K.js.map +1 -0
  161. package/dist/{chunk-5EKPX6QU.js → chunk-RJS7DECT.js} +8 -9
  162. package/dist/chunk-RJS7DECT.js.map +1 -0
  163. package/dist/{chunk-Z3WO6MND.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-4GUBTVPV.js → chunk-T4XNKYXB.js} +780 -126
  168. package/dist/chunk-T4XNKYXB.js.map +1 -0
  169. package/dist/{chunk-YDWLUT5V.cjs → chunk-TQR4KBY2.cjs} +323 -178
  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-OOA273IJ.cjs → chunk-U5SON7R2.cjs} +27 -27
  174. package/dist/{chunk-OOA273IJ.cjs.map → chunk-U5SON7R2.cjs.map} +1 -1
  175. package/dist/{chunk-IX64T5OL.cjs → chunk-U63GDNRC.cjs} +32 -26
  176. package/dist/chunk-U63GDNRC.cjs.map +1 -0
  177. package/dist/{chunk-WDBXJOU5.cjs → chunk-UDISNXDL.cjs} +56 -47
  178. package/dist/chunk-UDISNXDL.cjs.map +1 -0
  179. package/dist/{chunk-EFEOOCJ3.js → chunk-UV3SN74I.js} +5 -5
  180. package/dist/{chunk-EFEOOCJ3.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-ISLPNELU.js → chunk-VGTJPTIC.js} +16 -5
  184. package/dist/chunk-VGTJPTIC.js.map +1 -0
  185. package/dist/chunk-VQH4VAWD.cjs +12 -0
  186. package/dist/{chunk-B3F2D3SP.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-EKFUG4G7.cjs → chunk-XBYVV3MP.cjs} +60 -5
  194. package/dist/chunk-XBYVV3MP.cjs.map +1 -0
  195. package/dist/{chunk-5GAONX5G.cjs → chunk-XCAGZAKP.cjs} +7 -7
  196. package/dist/{chunk-5GAONX5G.cjs.map → chunk-XCAGZAKP.cjs.map} +1 -1
  197. package/dist/{chunk-YOALGKRE.cjs → chunk-XDF2UPEQ.cjs} +3521 -1766
  198. package/dist/chunk-XDF2UPEQ.cjs.map +1 -0
  199. package/dist/{chunk-J7LXTUTP.cjs → chunk-XMQSEJCF.cjs} +604 -1094
  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-KMXWZLQX.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-F4NHQHEZ.cjs → chunk-YAAM3M2S.cjs} +10 -10
  210. package/dist/{chunk-F4NHQHEZ.cjs.map → chunk-YAAM3M2S.cjs.map} +1 -1
  211. package/dist/{chunk-RUQS6M7G.js → chunk-YBFHZUXX.js} +6 -6
  212. package/dist/chunk-YBFHZUXX.js.map +1 -0
  213. package/dist/{chunk-PVUI6KGR.js → chunk-YDFDBE6D.js} +93 -6
  214. package/dist/chunk-YDFDBE6D.js.map +1 -0
  215. package/dist/{chunk-P7GTYOLB.cjs → chunk-YVWGEQJE.cjs} +297 -135
  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 -40
  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 -8
  223. package/dist/{ddl-BG4J805L.d.cts → ddl-BJcOp4WZ.d.cts} +3 -3
  224. package/dist/{ddl-CgiS9QLj.d.ts → ddl-BXfGHbPN.d.ts} +3 -3
  225. package/dist/graph-extension/index.cjs +26 -22
  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 -7
  229. package/dist/graph-merge/index.cjs +2459 -654
  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 -467
  234. package/dist/graph-merge/index.js.map +1 -1
  235. package/dist/{index-C3y_98iN.d.cts → index-BSHvKfok.d.ts} +221 -10
  236. package/dist/{index-BBxZCUdu.d.ts → index-DxaYCv8Y.d.cts} +221 -10
  237. package/dist/index.cjs +330 -268
  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 -49
  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 -51
  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 -25
  252. package/dist/interchange/index.js.map +1 -1
  253. package/dist/{manager-YoLEfcc1.d.ts → manager-CfZAimti.d.ts} +36 -5
  254. package/dist/{manager-KS7CGQQT.d.cts → manager-HGk6E_HW.d.cts} +36 -5
  255. package/dist/{materialize-indexes-Bhhyb1B3.d.ts → materialize-indexes-6A7dWGtb.d.cts} +10 -2
  256. package/dist/{materialize-indexes-OHRWypW6.d.cts → materialize-indexes-BMJP6Tms.d.ts} +10 -2
  257. package/dist/{postgres-DpkW3R5Y.d.cts → postgres-DFYWENdR.d.cts} +1961 -439
  258. package/dist/{postgres-DwqyIniy.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 -48
  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 -21
  273. package/dist/{searchable-DLWEfC4a.d.ts → searchable-9OQoPuRs.d.ts} +1 -2
  274. package/dist/{searchable-CIZL8Hyw.d.cts → searchable-CIje5XYD.d.cts} +1 -2
  275. package/dist/{sqlite-DY0WODUK.d.cts → sqlite-DerU5tc7.d.ts} +2029 -347
  276. package/dist/{sqlite-L-VIRzqA.d.ts → sqlite-DitnISa9.d.cts} +2029 -347
  277. package/dist/{store-view-66p92IPi.d.ts → store-DawaWWjJ.d.ts} +1280 -767
  278. package/dist/{store-view-A85FFRnk.d.cts → store-RwTJx8LX.d.cts} +1280 -767
  279. package/dist/{temporal-BNbjXqer.d.cts → temporal-Bn-Fi8FJ.d.cts} +1 -1
  280. package/dist/{temporal-Bob6Nfbp.d.ts → temporal-BtM4UALv.d.ts} +1 -1
  281. package/dist/{types-DeORZhxn.d.cts → types-CoIx8HX5.d.cts} +1 -1
  282. package/dist/{types-Ch9a0Dx6.d.ts → types-HkveCCx0.d.cts} +726 -5
  283. package/dist/{types-Ch9a0Dx6.d.cts → types-HkveCCx0.d.ts} +726 -5
  284. package/dist/{types-ClCzT-dT.d.ts → types-KFfk-8Ah.d.ts} +1 -1
  285. package/dist/{where-DPw52ksb.d.cts → where--fk7_0kv.d.cts} +1 -1
  286. package/dist/{where-kWUZPvEA.d.ts → where-ws5hf-Ov.d.ts} +1 -1
  287. package/package.json +1 -1
  288. package/dist/chunk-2L54C2C2.js +0 -144
  289. package/dist/chunk-2L54C2C2.js.map +0 -1
  290. package/dist/chunk-35S6P5ZU.js +0 -27
  291. package/dist/chunk-35S6P5ZU.js.map +0 -1
  292. package/dist/chunk-42PYUGLS.js.map +0 -1
  293. package/dist/chunk-4GUBTVPV.js.map +0 -1
  294. package/dist/chunk-4GUTQPVO.js.map +0 -1
  295. package/dist/chunk-4MB3AQAQ.js.map +0 -1
  296. package/dist/chunk-4MEWSUVM.cjs.map +0 -1
  297. package/dist/chunk-4QIKLIGG.js.map +0 -1
  298. package/dist/chunk-4SZ6XPTG.cjs +0 -12
  299. package/dist/chunk-55ITBQJI.js.map +0 -1
  300. package/dist/chunk-5EKPX6QU.js.map +0 -1
  301. package/dist/chunk-6RYPD3NJ.cjs +0 -1282
  302. package/dist/chunk-6RYPD3NJ.cjs.map +0 -1
  303. package/dist/chunk-764JHTLT.cjs +0 -15
  304. package/dist/chunk-764JHTLT.cjs.map +0 -1
  305. package/dist/chunk-ACSVZPK7.cjs.map +0 -1
  306. package/dist/chunk-B3F2D3SP.cjs +0 -12
  307. package/dist/chunk-BGYJW37L.js.map +0 -1
  308. package/dist/chunk-BNS75YNF.cjs.map +0 -1
  309. package/dist/chunk-C4F7VJ5D.cjs.map +0 -1
  310. package/dist/chunk-CBKG6HEP.js +0 -1263
  311. package/dist/chunk-CBKG6HEP.js.map +0 -1
  312. package/dist/chunk-CPEL3YIR.cjs.map +0 -1
  313. package/dist/chunk-D54WH24V.cjs.map +0 -1
  314. package/dist/chunk-D56XG4EI.cjs.map +0 -1
  315. package/dist/chunk-D7PG5D5K.js.map +0 -1
  316. package/dist/chunk-DI74SMXS.cjs +0 -29
  317. package/dist/chunk-DI74SMXS.cjs.map +0 -1
  318. package/dist/chunk-DK2S42XB.js +0 -77
  319. package/dist/chunk-DK2S42XB.js.map +0 -1
  320. package/dist/chunk-DRACN6XG.js +0 -27
  321. package/dist/chunk-DRACN6XG.js.map +0 -1
  322. package/dist/chunk-DXEEHSGN.js.map +0 -1
  323. package/dist/chunk-EKFUG4G7.cjs.map +0 -1
  324. package/dist/chunk-EQ7JKLZO.cjs +0 -157
  325. package/dist/chunk-EQ7JKLZO.cjs.map +0 -1
  326. package/dist/chunk-FJMPR3OH.cjs.map +0 -1
  327. package/dist/chunk-FLEQ2HBK.js.map +0 -1
  328. package/dist/chunk-FQ7ZPOTZ.js.map +0 -1
  329. package/dist/chunk-G6Q5UM7U.js.map +0 -1
  330. package/dist/chunk-GYA4JRP5.js.map +0 -1
  331. package/dist/chunk-H7VE3FL4.cjs.map +0 -1
  332. package/dist/chunk-ID4WXTKL.js.map +0 -1
  333. package/dist/chunk-ISLPNELU.js.map +0 -1
  334. package/dist/chunk-ITE4IXAK.js +0 -25
  335. package/dist/chunk-ITE4IXAK.js.map +0 -1
  336. package/dist/chunk-IX64T5OL.cjs.map +0 -1
  337. package/dist/chunk-J2ICGNHO.cjs.map +0 -1
  338. package/dist/chunk-J7LXTUTP.cjs.map +0 -1
  339. package/dist/chunk-JQXSZHF2.cjs.map +0 -1
  340. package/dist/chunk-JXUTCSXX.cjs.map +0 -1
  341. package/dist/chunk-KCO5EFJU.js +0 -79
  342. package/dist/chunk-KCO5EFJU.js.map +0 -1
  343. package/dist/chunk-KKYELPZ2.cjs +0 -83
  344. package/dist/chunk-KKYELPZ2.cjs.map +0 -1
  345. package/dist/chunk-KMXWZLQX.cjs.map +0 -1
  346. package/dist/chunk-MIJKEVV7.js.map +0 -1
  347. package/dist/chunk-NAAMUYMS.cjs.map +0 -1
  348. package/dist/chunk-P7GTYOLB.cjs.map +0 -1
  349. package/dist/chunk-PVUI6KGR.js.map +0 -1
  350. package/dist/chunk-Q6EDCUXV.js.map +0 -1
  351. package/dist/chunk-QB6VMOJ2.cjs.map +0 -1
  352. package/dist/chunk-QC4MCOFV.cjs +0 -83
  353. package/dist/chunk-QC4MCOFV.cjs.map +0 -1
  354. package/dist/chunk-QMQLUA66.js +0 -12
  355. package/dist/chunk-QMQLUA66.js.map +0 -1
  356. package/dist/chunk-QRNYDV5Z.js.map +0 -1
  357. package/dist/chunk-RFRM3Q5K.js.map +0 -1
  358. package/dist/chunk-RUQS6M7G.js.map +0 -1
  359. package/dist/chunk-S4KQ5LV4.js.map +0 -1
  360. package/dist/chunk-SJDMVITW.cjs.map +0 -1
  361. package/dist/chunk-SNXVDZAJ.js.map +0 -1
  362. package/dist/chunk-SVJ5GEXW.cjs.map +0 -1
  363. package/dist/chunk-TDXIBCGY.cjs.map +0 -1
  364. package/dist/chunk-TKORQCG4.js.map +0 -1
  365. package/dist/chunk-TKP5T34P.js.map +0 -1
  366. package/dist/chunk-TRF4EBJT.cjs +0 -30
  367. package/dist/chunk-TRF4EBJT.cjs.map +0 -1
  368. package/dist/chunk-UCQ3BFSY.cjs.map +0 -1
  369. package/dist/chunk-UR7W5YQK.js.map +0 -1
  370. package/dist/chunk-V34A6R5V.js +0 -134
  371. package/dist/chunk-V34A6R5V.js.map +0 -1
  372. package/dist/chunk-WDAVPX46.js +0 -81
  373. package/dist/chunk-WDAVPX46.js.map +0 -1
  374. package/dist/chunk-WDBXJOU5.cjs.map +0 -1
  375. package/dist/chunk-YDWLUT5V.cjs.map +0 -1
  376. package/dist/chunk-YOALGKRE.cjs.map +0 -1
  377. package/dist/chunk-Z3WO6MND.cjs.map +0 -1
  378. package/dist/chunk-ZDH3DX3C.cjs +0 -30
  379. package/dist/chunk-ZDH3DX3C.cjs.map +0 -1
  380. package/dist/chunk-ZI6VQSZA.cjs.map +0 -1
  381. package/dist/chunk-ZTAJL4DT.cjs +0 -85
  382. package/dist/chunk-ZTAJL4DT.cjs.map +0 -1
  383. package/dist/define-graph-BGrJahvp.d.ts +0 -173
  384. package/dist/define-graph-alREY2wj.d.cts +0 -173
@@ -375,6 +375,31 @@ type TableContribution = Readonly<{
375
375
  * signature.
376
376
  */
377
377
  createDdl: readonly string[];
378
+ /**
379
+ * Idempotent (`DROP ... IF EXISTS`) statements that tear this
380
+ * contribution's storage down, ordered so that running the list
381
+ * leaves nothing behind. Declaring it is what makes a contribution
382
+ * *rebuildable*: the destructive
383
+ * `store.rebuildContribution()` path drops through these statements
384
+ * before re-running {@link createDdl}, which is the only repair for a
385
+ * table provisioned at a shape the current `createDdl` no longer
386
+ * produces.
387
+ *
388
+ * Optional because it is a capability, not an invariant. A
389
+ * contribution whose content cannot be reconstructed from data
390
+ * TypeGraph already stores has no business advertising a rebuild —
391
+ * dropping it would destroy the only copy — and a third-party
392
+ * strategy that predates this field keeps compiling and is reported
393
+ * as not rebuildable rather than silently rebuilt through a
394
+ * synthesized `DROP`. Backends surface the resulting gap as
395
+ * `capabilities.contributions.rebuild`.
396
+ *
397
+ * The rebuild visits a strategy's `runtimeEnsure` contributions, the
398
+ * same set the boot ensure provisions — so a companion table a strategy
399
+ * declares outside that set is neither dropped nor recreated, and must
400
+ * not be something the recreated storage depends on.
401
+ */
402
+ dropDdl?: readonly string[];
378
403
  /**
379
404
  * When `true`, the post-schema-load focused ensure
380
405
  * (`loadActiveSchemaWithBootstrap`) materializes this contribution
@@ -492,6 +517,14 @@ type FulltextStrategy = Readonly<{
492
517
  * Replaces the former `generateDdl(tableName)`: DDL is now one field
493
518
  * of a contribution rather than the strategy's whole storage
494
519
  * surface. (Public API change — see #129.)
520
+ *
521
+ * Declare `dropDdl` on each contribution to opt the strategy into the
522
+ * destructive `store.rebuildContribution("fulltext")` path — the only
523
+ * repair for storage provisioned at a shape `createDdl` no longer
524
+ * produces. Fulltext content is reconstructed from the node rows, so a
525
+ * rebuild loses nothing; a strategy that omits `dropDdl` is reported
526
+ * as not rebuildable instead of being dropped through a synthesized
527
+ * statement.
495
528
  */
496
529
  ownedTables: (this: void, primaryTableName: string) => readonly StrategyTableContribution[];
497
530
  /**
@@ -572,7 +605,17 @@ type DialectCapabilities = Readonly<{
572
605
  */
573
606
  emitNotMaterializedHint: boolean;
574
607
  /**
575
- * Whether recursive CTEs should enforce worktable-first join ordering.
608
+ * Whether a traversal must pin its frontier ahead of the edge table with
609
+ * `CROSS JOIN`, because the engine reads FROM order as a join-order directive
610
+ * rather than costing the orderings itself.
611
+ *
612
+ * Set for engines whose planner has no useful statistics for the driving
613
+ * relation and can therefore choose to enumerate candidate edges instead —
614
+ * once per frontier row. Two traversal shapes need the pin: a recursive term,
615
+ * whose driving relation is the worktable, and an identity-expanded step,
616
+ * which reaches the edge through `COALESCE` over an outer join and so exposes
617
+ * no direct frontier-to-edge equality. Every other traversal joins on the
618
+ * frontier's own columns and is left to the planner.
576
619
  */
577
620
  forceRecursiveWorktableOuterJoinOrder: boolean;
578
621
  /**
@@ -1045,6 +1088,14 @@ type SqlTableNames = Readonly<{
1045
1088
  recordedClock?: string | undefined;
1046
1089
  /** Durable per-graph revision-origin table name (default: "typegraph_revision_origins") */
1047
1090
  revisionOrigins?: string | undefined;
1091
+ /** Identity assertion ledger (default: "typegraph_identity_assertions") */
1092
+ identityAssertions?: string | undefined;
1093
+ /** Recorded identity assertion relation */
1094
+ recordedIdentityAssertions?: string | undefined;
1095
+ /** Derived current identity closure */
1096
+ identityClosure?: string | undefined;
1097
+ /** Derived separation relation over identity classes */
1098
+ identitySeparation?: string | undefined;
1048
1099
  /** Node fulltext table name (default: "typegraph_node_fulltext") */
1049
1100
  fulltext: string;
1050
1101
  /** Node uniques table name (default: "typegraph_node_uniques") */
@@ -1063,6 +1114,10 @@ type ResolvedSqlTableNames = Readonly<{
1063
1114
  recordedClock: string;
1064
1115
  /** Durable per-graph revision-origin table name */
1065
1116
  revisionOrigins: string;
1117
+ identityAssertions: string;
1118
+ recordedIdentityAssertions: string;
1119
+ identityClosure: string;
1120
+ identitySeparation: string;
1066
1121
  /** Node fulltext table name */
1067
1122
  fulltext: string;
1068
1123
  /** Node uniques table name */
@@ -1083,6 +1138,14 @@ type SqlSchemaFields = Readonly<{
1083
1138
  recordedClockTable: SqlFragment;
1084
1139
  /** Get a `SqlFragment` reference to the durable per-graph revision origins. */
1085
1140
  revisionOriginsTable: SqlFragment;
1141
+ /** Get a `SqlFragment` reference to the identity assertion ledger. */
1142
+ identityAssertionsTable: SqlFragment;
1143
+ /** Get a `SqlFragment` reference to the recorded identity assertion relation. */
1144
+ recordedIdentityAssertionsTable: SqlFragment;
1145
+ /** Get a `SqlFragment` reference to the derived identity closure. */
1146
+ identityClosureTable: SqlFragment;
1147
+ /** Get a `SqlFragment` reference to the derived identity separation relation. */
1148
+ identitySeparationTable: SqlFragment;
1086
1149
  /** Get a `SqlFragment` reference to the fulltext table. */
1087
1150
  fulltextTable: SqlFragment;
1088
1151
  }>;
@@ -1102,6 +1165,10 @@ declare abstract class SqlSchema implements SqlSchemaFields {
1102
1165
  abstract readonly recordedEdgesTable: SqlFragment;
1103
1166
  abstract readonly recordedClockTable: SqlFragment;
1104
1167
  abstract readonly revisionOriginsTable: SqlFragment;
1168
+ abstract readonly identityAssertionsTable: SqlFragment;
1169
+ abstract readonly recordedIdentityAssertionsTable: SqlFragment;
1170
+ abstract readonly identityClosureTable: SqlFragment;
1171
+ abstract readonly identitySeparationTable: SqlFragment;
1105
1172
  abstract readonly fulltextTable: SqlFragment;
1106
1173
  }
1107
1174
  /**
@@ -1821,6 +1888,185 @@ type OntologyRelation = Readonly<{
1821
1888
  */
1822
1889
  declare function isMetaEdge(value: unknown): value is MetaEdge;
1823
1890
 
1891
+ /** Brand key for GraphDef */
1892
+ declare const GRAPH_DEF_BRAND: "__graphDef";
1893
+ /**
1894
+ * An edge entry in the graph definition.
1895
+ * Can be:
1896
+ * - EdgeType directly (constrained or unconstrained)
1897
+ * - EdgeRegistration object (always works, can override/narrow defaults)
1898
+ */
1899
+ type EdgeEntry = EdgeRegistration | AnyEdgeType;
1900
+ /**
1901
+ * Normalized edge map type - all entries become EdgeRegistration.
1902
+ * For bare EdgeTypes, constrained endpoints are extracted from the type;
1903
+ * unconstrained edges fall back to all node types in the graph.
1904
+ */
1905
+ type NormalizedEdges<TNodes extends Record<string, NodeRegistration>, TEdges extends Record<string, EdgeEntry>> = {
1906
+ [K in keyof TEdges]: TEdges[K] extends EdgeRegistration ? TEdges[K] : TEdges[K] extends AnyEdgeType ? EdgeRegistration<TEdges[K], TEdges[K]["from"] extends readonly (infer N extends NodeType)[] ? N : TNodes[keyof TNodes]["type"], TEdges[K]["to"] extends readonly (infer N extends NodeType)[] ? N : TNodes[keyof TNodes]["type"]> : never;
1907
+ };
1908
+ /** Durable graph-level configuration for the TypeGraph Identity Profile. */
1909
+ type GraphIdentityConfig = Readonly<{
1910
+ /** Whether equal ids in different kinds implicitly join one identity class. */
1911
+ sameIdAcrossKinds: "fold" | "ignore";
1912
+ }>;
1913
+ /**
1914
+ * Configuration for defineGraph.
1915
+ */
1916
+ type GraphDefConfig<TNodes extends Record<string, NodeRegistration>, TEdges extends Record<string, EdgeEntry>, TOntology extends readonly OntologyRelation[], TIdentity extends GraphIdentityConfig | undefined> = Readonly<{
1917
+ /** Unique identifier for this graph */
1918
+ id: string;
1919
+ /** Node registrations */
1920
+ nodes: TNodes;
1921
+ /** Edge registrations or EdgeTypes with built-in domain/range */
1922
+ edges: TEdges;
1923
+ /** Ontology relations */
1924
+ ontology?: TOntology;
1925
+ /** Graph-wide defaults */
1926
+ defaults?: GraphDefaults;
1927
+ /** Enables the TypeGraph Identity Profile for this graph. */
1928
+ identity?: TIdentity;
1929
+ /**
1930
+ * Index declarations attached to this graph.
1931
+ *
1932
+ * Accepts the outputs of `defineNodeIndex` / `defineEdgeIndex` (which
1933
+ * already return `IndexDeclaration` values) or pre-built declarations
1934
+ * reconstructed from a stored schema or graph extension.
1935
+ *
1936
+ * Validated at definition time: every index must reference a `kind`
1937
+ * that exists in `nodes` / `edges`, and index `name`s must be unique
1938
+ * within the graph.
1939
+ *
1940
+ * Index DDL is **not** generated by `defineGraph`. Indexes flow into
1941
+ * `SerializedSchema.indexes` so they can later be materialized via
1942
+ * `store.materializeIndexes()` — lifting the storage concern out of
1943
+ * the schema-version commit path.
1944
+ */
1945
+ indexes?: readonly IndexDeclaration[];
1946
+ }>;
1947
+ /**
1948
+ * A graph definition.
1949
+ *
1950
+ * This is a compile-time artifact that describes the structure of a graph.
1951
+ * Use `createStore()` to create a runtime store from this definition.
1952
+ */
1953
+ type GraphDef<TNodes extends Record<string, NodeRegistration> = Record<string, NodeRegistration>, TEdges extends Record<string, EdgeRegistration> = Record<string, EdgeRegistration>, TOntology extends readonly OntologyRelation[] = readonly OntologyRelation[], TIdentity extends GraphIdentityConfig | undefined = GraphIdentityConfig | undefined> = Readonly<{
1954
+ [GRAPH_DEF_BRAND]: true;
1955
+ id: string;
1956
+ nodes: TNodes;
1957
+ edges: TEdges;
1958
+ ontology: TOntology;
1959
+ /** Durable graph-level opt-in to the TypeGraph Identity Profile. */
1960
+ identity: TIdentity;
1961
+ defaults: Readonly<{
1962
+ onNodeDelete: DeleteBehavior;
1963
+ temporalMode: TemporalMode;
1964
+ }>;
1965
+ /**
1966
+ * Index declarations attached to this graph. Preserves whatever the
1967
+ * caller passed to `defineGraph` (including an explicit empty array)
1968
+ * for introspection purposes.
1969
+ *
1970
+ * The serialized canonical form is order-canonicalized (sorted by
1971
+ * `name`) and treats `undefined` and `[]` as the same "no slice" form
1972
+ * — an empty array does not bump the schema hash, since indexes are
1973
+ * an unordered set keyed by name and `[]` carries no semantic meaning
1974
+ * that an absent slice doesn't.
1975
+ */
1976
+ indexes: readonly IndexDeclaration[] | undefined;
1977
+ /**
1978
+ * Graph extension this graph was merged with, if any. Set by
1979
+ * `mergeGraphExtension`; never set by `defineGraph` directly.
1980
+ * Exists solely so re-serialization is stable — the rest of the
1981
+ * system reads the merged kinds through `nodes` / `edges` /
1982
+ * `ontology` and never inspects this field. Absent on graphs that
1983
+ * have never been extended; legacy graphs hash byte-identically.
1984
+ */
1985
+ extension: GraphExtension | undefined;
1986
+ /**
1987
+ * Soft-deprecated kind names attached to this graph. Set by the
1988
+ * loader from the persisted schema and by `store.deprecateKinds(...)`
1989
+ * / `store.undeprecateKinds(...)`. A purely informational signal
1990
+ * surfaced for introspection — does not gate reads, writes, or
1991
+ * queries. Defaults to the empty set on freshly-defined graphs.
1992
+ */
1993
+ deprecatedKinds: ReadonlySet<string>;
1994
+ }>;
1995
+ /**
1996
+ * Extract node kind names from a GraphDef.
1997
+ */
1998
+ type NodeKinds<G extends GraphDef> = keyof G["nodes"] & string;
1999
+ /**
2000
+ * Extract edge kind names from a GraphDef.
2001
+ */
2002
+ type EdgeKinds<G extends GraphDef> = keyof G["edges"] & string;
2003
+ /**
2004
+ * Get a NodeType from a GraphDef by kind name.
2005
+ */
2006
+ type GetNodeType<G extends GraphDef, K extends NodeKinds<G>> = G["nodes"][K]["type"];
2007
+ /**
2008
+ * Get an EdgeType from a GraphDef by kind name.
2009
+ */
2010
+ type GetEdgeType<G extends GraphDef, K extends EdgeKinds<G>> = G["edges"][K]["type"];
2011
+ /**
2012
+ * Get all NodeTypes from a GraphDef.
2013
+ */
2014
+ type AllNodeTypes<G extends GraphDef> = {
2015
+ [K in NodeKinds<G>]: G["nodes"][K]["type"];
2016
+ }[NodeKinds<G>];
2017
+ /**
2018
+ * Get all EdgeTypes from a GraphDef.
2019
+ */
2020
+ type AllEdgeTypes<G extends GraphDef> = {
2021
+ [K in EdgeKinds<G>]: G["edges"][K]["type"];
2022
+ }[EdgeKinds<G>];
2023
+ /**
2024
+ * Creates a graph definition.
2025
+ *
2026
+ * @example
2027
+ * ```typescript
2028
+ * const graph = defineGraph({
2029
+ * id: "my_graph",
2030
+ * nodes: {
2031
+ * Person: { type: Person },
2032
+ * Company: { type: Company },
2033
+ * },
2034
+ * edges: {
2035
+ * // Traditional EdgeRegistration syntax
2036
+ * worksAt: {
2037
+ * type: worksAt,
2038
+ * from: [Person],
2039
+ * to: [Company],
2040
+ * cardinality: "many",
2041
+ * },
2042
+ * // Or use EdgeType directly if it has from/to defined
2043
+ * knows, // EdgeType with built-in domain/range
2044
+ * },
2045
+ * ontology: [
2046
+ * subClassOf(Company, Organization),
2047
+ * disjointWith(Person, Organization),
2048
+ * ],
2049
+ * defaults: {
2050
+ * onNodeDelete: "restrict",
2051
+ * temporalMode: "current",
2052
+ * },
2053
+ * });
2054
+ * ```
2055
+ */
2056
+ declare function defineGraph<const TNodes extends Record<string, NodeRegistration<NodeType>>, const TEdges extends Record<string, EdgeEntry>, const TOntology extends readonly OntologyRelation[], const TIdentity extends GraphIdentityConfig | undefined = undefined>(config: GraphDefConfig<TNodes, TEdges, TOntology, TIdentity>): GraphDef<TNodes, NormalizedEdges<TNodes, TEdges>, TOntology, TIdentity>;
2057
+ /**
2058
+ * Checks if a value is a GraphDef.
2059
+ */
2060
+ declare function isGraphDef(value: unknown): value is GraphDef;
2061
+ /**
2062
+ * Gets all node kind names from a GraphDef.
2063
+ */
2064
+ declare function getNodeKinds<G extends GraphDef>(graph: G): readonly (keyof G["nodes"] & string)[];
2065
+ /**
2066
+ * Gets all edge kind names from a GraphDef.
2067
+ */
2068
+ declare function getEdgeKinds<G extends GraphDef>(graph: G): readonly (keyof G["edges"] & string)[];
2069
+
1824
2070
  /**
1825
2071
  * JSON Schema type (subset used by Zod toJSONSchema).
1826
2072
  *
@@ -1948,6 +2194,8 @@ type SerializedSchema = Readonly<{
1948
2194
  onNodeDelete: DeleteBehavior;
1949
2195
  temporalMode: TemporalMode;
1950
2196
  }>;
2197
+ /** Durable opt-in to the TypeGraph Identity Profile. */
2198
+ identity?: GraphIdentityConfig;
1951
2199
  /**
1952
2200
  * Index declarations attached to the graph.
1953
2201
  *
@@ -2058,6 +2306,48 @@ type FilteredApproximateSearch = Readonly<{
2058
2306
  */
2059
2307
  guaranteesFullPage: boolean;
2060
2308
  }>;
2309
+ /**
2310
+ * Whether an engine exposes a PER-SEARCH knob for the ANN candidate frontier —
2311
+ * the parameter {@link VectorSearchParams.efSearch} maps onto.
2312
+ *
2313
+ * Declared, never inferred: `efSearch` is an accepted option, so a backend that
2314
+ * cannot apply it must refuse it rather than ignore it (AGENTS.md contract
2315
+ * discipline). This capability is what the shared refusal predicate reads, and
2316
+ * what a caller reads to know whether passing `efSearch` will be honored.
2317
+ *
2318
+ * - **pgvector**: `hnsw.ef_search`, applied per search with `SET LOCAL` inside
2319
+ * the search's own transaction — hence `requiresTransactionScope`, since a
2320
+ * session-wide `SET` would leak the override into concurrent searches.
2321
+ * - **sqlite-vec**: `tunable: false`. A vec0 KNN takes `k` and nothing else;
2322
+ * there is no frontier to widen.
2323
+ * - **libSQL DiskANN**: `tunable: false`. `vector_top_k(idx, q, k)` is a table
2324
+ * function with no per-query parameters; DiskANN's `search_l` is fixed at
2325
+ * index-creation time.
2326
+ */
2327
+ type VectorSearchFrontierTuning = Readonly<{
2328
+ tunable: true;
2329
+ /** Engine-native parameter `efSearch` maps to (`"hnsw.ef_search"`). */
2330
+ parameter: string;
2331
+ /**
2332
+ * The one index type whose search honors the parameter. `efSearch` on a
2333
+ * slot of any other index type is refused, not ignored: an IVFFlat or
2334
+ * brute-force slot would silently discard it.
2335
+ */
2336
+ indexType: VectorIndexType;
2337
+ /**
2338
+ * `true` when applying the parameter needs a transaction to scope it to
2339
+ * the one search. A backend that reports `transactions: false` refuses
2340
+ * `efSearch` rather than leaking a session-wide setting.
2341
+ */
2342
+ requiresTransactionScope: boolean;
2343
+ }> | Readonly<{
2344
+ tunable: false;
2345
+ /**
2346
+ * Why this engine has no per-search frontier knob — surfaced in the
2347
+ * refusal's details so the state is named rather than implied.
2348
+ */
2349
+ reason: string;
2350
+ }>;
2061
2351
  /**
2062
2352
  * Vector search capabilities.
2063
2353
  */
@@ -2078,6 +2368,14 @@ type VectorCapabilities = Readonly<{
2078
2368
  * an engine promise it does not keep.
2079
2369
  */
2080
2370
  filteredApproximateSearch: FilteredApproximateSearch;
2371
+ /**
2372
+ * Whether a per-search ANN frontier override (`efSearch`) can be applied.
2373
+ * See {@link VectorSearchFrontierTuning}.
2374
+ *
2375
+ * Required, so a new vector strategy must state whether it honors the
2376
+ * option instead of inheriting silence — the exact defect this closes.
2377
+ */
2378
+ searchFrontierTuning: VectorSearchFrontierTuning;
2081
2379
  }>;
2082
2380
  /**
2083
2381
  * Query modes for fulltext search.
@@ -2123,6 +2421,46 @@ type GraphAnalyticsCapabilities = Readonly<{
2123
2421
  supported: boolean;
2124
2422
  mathFunctions: boolean;
2125
2423
  }>;
2424
+ /**
2425
+ * How much of the contribution health lifecycle a backend can serve.
2426
+ *
2427
+ * The three rungs escalate — probe (read-only) → repair
2428
+ * (non-destructive) → rebuild (destructive) — and each is declared
2429
+ * separately because a backend can genuinely stop at any of them. A
2430
+ * backend that provisions contributions but cannot probe its own catalog
2431
+ * is a real gap, and the honest answer to `store.probeContributions()`
2432
+ * there is a refusal, not `ready`: "assessed and healthy" and "never
2433
+ * looked" must never share a return value.
2434
+ */
2435
+ type ContributionCapabilities = Readonly<{
2436
+ /**
2437
+ * Whether strategy-owned contribution tables are provisioned and
2438
+ * attested by durable markers on this backend at all. `false` means
2439
+ * there is nothing to assess, and the probe reports no entries rather
2440
+ * than refusing.
2441
+ */
2442
+ supported: boolean;
2443
+ /**
2444
+ * Whether the backend can cross its durable markers against the live
2445
+ * catalog — `store.probeContributions()` and
2446
+ * `store.verifyContributions()`. False with `supported: true` is the
2447
+ * declared gap: both refuse with `ConfigurationError`.
2448
+ */
2449
+ probe: boolean;
2450
+ /**
2451
+ * Whether the backend can run the destructive drop → recreate →
2452
+ * repopulate → stamp rebuild (`store.rebuildContribution()`). Requires
2453
+ * both a strategy that declares `dropDdl` and a transactional schema
2454
+ * fence to run it under; false means `rebuildContribution` refuses.
2455
+ *
2456
+ * Describes the fulltext projection only. `rebuildContribution("vector")`
2457
+ * refuses on every backend regardless of this flag — embeddings exist
2458
+ * only in the storage a rebuild would drop, so there is nothing to
2459
+ * reconstruct them from — and `reembedVectorField` is the sanctioned
2460
+ * destructive path there.
2461
+ */
2462
+ rebuild: boolean;
2463
+ }>;
2126
2464
 
2127
2465
  /**
2128
2466
  * Backend capabilities that vary by dialect.
@@ -2162,6 +2500,12 @@ type BackendCapabilities = Readonly<{
2162
2500
  fulltext?: FulltextCapabilities | undefined;
2163
2501
  /** Whole-graph analytics capabilities (undefined when unavailable). */
2164
2502
  graphAnalytics?: GraphAnalyticsCapabilities | undefined;
2503
+ /**
2504
+ * How far up the contribution health ladder this backend goes
2505
+ * (undefined on a backend with no contribution machinery at all,
2506
+ * equivalent to every member `false`).
2507
+ */
2508
+ contributions?: ContributionCapabilities | undefined;
2165
2509
  }>;
2166
2510
  /** Keeps session-scoped analytics honest when a required SQL feature is absent. */
2167
2511
  declare function normalizeGraphAnalyticsCapabilities(capabilities: BackendCapabilities): BackendCapabilities;
@@ -2287,7 +2631,33 @@ type UpdateNodeParams = Readonly<{
2287
2631
  kind: string;
2288
2632
  id: string;
2289
2633
  props: Readonly<Record<string, unknown>>;
2634
+ /** Applied when resurrecting a tombstone; omitted means the resurrection instant. */
2635
+ validFrom?: string | null;
2290
2636
  validTo?: string;
2637
+ /**
2638
+ * The effective `valid_from` this write ASSERTS the target row already
2639
+ * carries, stated only by a caller whose decision DEPENDED on it.
2640
+ *
2641
+ * `(graph_id, kind, id)` does not pin a row across time. A caller that
2642
+ * validated the document's window against the bound it probed — interchange
2643
+ * import's `onConflict: "update"` is the case — decided what to write from a
2644
+ * value a concurrent `hardDelete` + recreate can replace between the probe
2645
+ * and the write, so a predicate on identity alone lets that decision land on
2646
+ * a row it was never computed for: the document's stated `validFrom` is
2647
+ * ignored, or a `valid_to` is persisted below the new row's `valid_from`.
2648
+ * Stating the bound here puts it in the UPDATE's own `WHERE`, which is the
2649
+ * only placement the race cannot slip past.
2650
+ *
2651
+ * NULL-SAFE: `null` asserts the row has NO lower bound (`IS NULL`), a string
2652
+ * asserts equality, and omitting it asserts nothing. `null` and `undefined`
2653
+ * are therefore NOT interchangeable here — see `expectedValidFromPredicate`.
2654
+ *
2655
+ * A backend MUST apply the predicate when it is present, on the same terms as
2656
+ * {@link UpdateEdgeParams.kind}: silently ignoring it re-opens the window the
2657
+ * caller stated it to close. A write whose stated bound does not match affects
2658
+ * zero rows and surfaces as a `no_row_returned` `DatabaseOperationError`.
2659
+ */
2660
+ expectedValidFrom?: string | null;
2291
2661
  incrementVersion?: boolean;
2292
2662
  /** If true, clears deleted_at (un-deletes the node). Used by upsert. */
2293
2663
  clearDeleted?: boolean;
@@ -2371,8 +2741,71 @@ type TrustedImportSession = Readonly<{
2371
2741
  type UpdateEdgeParams = Readonly<{
2372
2742
  graphId: string;
2373
2743
  id: string;
2744
+ /**
2745
+ * The kind this write ASSERTS the target row already carries.
2746
+ *
2747
+ * Edge ids are graph-global while public collections are kind-scoped, so a
2748
+ * kind-scoped write has an expected kind and must not land on a row carrying
2749
+ * a different one. Stating it here puts the predicate in the write
2750
+ * statement's own `WHERE`, which is the only placement a concurrent
2751
+ * `hardDelete` + recreate cannot slip past: a read-then-write pair keyed on
2752
+ * `(graph_id, id)` alone re-resolves that id between the read and the write
2753
+ * under PostgreSQL READ COMMITTED. A write whose stated kind does not match
2754
+ * affects zero rows.
2755
+ *
2756
+ * A backend MUST apply the predicate when it is present — silently ignoring
2757
+ * it re-opens the window the caller stated it to close, and the ignoring
2758
+ * backend looks correct until it is raced.
2759
+ * `tests/edge-write-self-verification.test.ts` asserts the behavior against
2760
+ * the built-in backends.
2761
+ *
2762
+ * Omitted where the operation legitimately spans kinds: the node delete
2763
+ * cascade removes every connected edge whatever its kind, so it states none.
2764
+ * {@link DeleteEdgeParams} and {@link HardDeleteEdgeParams} carry the same
2765
+ * field with the same contract.
2766
+ */
2767
+ kind?: string;
2768
+ /**
2769
+ * The ENDPOINTS this write asserts the target row already carries, stated
2770
+ * only by a write that actually checked them.
2771
+ *
2772
+ * Kind alone does not pin a row's identity. An edge's endpoints are immutable
2773
+ * for a given row, but the ID is not: a concurrent `hardDelete` + recreate
2774
+ * under the SAME kind with DIFFERENT endpoints satisfies a kind-only
2775
+ * predicate, so an upsert that resolved this id BY endpoints could otherwise
2776
+ * write to an edge pointing somewhere it never looked. Carrying them here
2777
+ * closes that, on the same terms and in the same `WHERE` as `kind`.
2778
+ *
2779
+ * All four move together or not at all — they are one assertion. A plain
2780
+ * `update` on a kind-scoped collection states none of them, because it
2781
+ * resolved the edge by id and kind and made no claim about where it points;
2782
+ * predicating on endpoints it never checked would refuse legitimate writes.
2783
+ * The same MUST-apply contract as `kind` binds a backend that receives them.
2784
+ */
2785
+ fromKind?: string;
2786
+ fromId?: string;
2787
+ toKind?: string;
2788
+ toId?: string;
2374
2789
  props: Readonly<Record<string, unknown>>;
2790
+ /**
2791
+ * Applied when resurrecting a tombstone, where it asserts a COMPLETE window:
2792
+ * `validTo` is rewritten alongside it (omitted `validTo` reopens the window).
2793
+ * Omitting `validFrom` on a resurrection leaves the stored window in place.
2794
+ */
2795
+ validFrom?: string | null;
2375
2796
  validTo?: string;
2797
+ /**
2798
+ * The effective `valid_from` this write asserts the target row already
2799
+ * carries. Same three states, same NULL-safety, and the same MUST-apply
2800
+ * contract as {@link UpdateNodeParams.expectedValidFrom}; stated by the same
2801
+ * kind of caller, one whose verdict READ that bound.
2802
+ *
2803
+ * Separate from the immutable-identity components above because it is not
2804
+ * immutable: a resurrection rewrites `valid_from`. It is asserted for the
2805
+ * opposite reason — precisely because it can change, a decision computed from
2806
+ * it must be fenced against it having changed.
2807
+ */
2808
+ expectedValidFrom?: string | null;
2376
2809
  clearDeleted?: boolean;
2377
2810
  }>;
2378
2811
  /**
@@ -2381,6 +2814,8 @@ type UpdateEdgeParams = Readonly<{
2381
2814
  type DeleteEdgeParams = Readonly<{
2382
2815
  graphId: string;
2383
2816
  id: string;
2817
+ /** See {@link UpdateEdgeParams.kind}. */
2818
+ kind?: string;
2384
2819
  }>;
2385
2820
  /**
2386
2821
  * Parameters for hard deleting a node (permanent removal).
@@ -2396,6 +2831,8 @@ type HardDeleteNodeParams = Readonly<{
2396
2831
  type HardDeleteEdgeParams = Readonly<{
2397
2832
  graphId: string;
2398
2833
  id: string;
2834
+ /** See {@link UpdateEdgeParams.kind}. */
2835
+ kind?: string;
2399
2836
  }>;
2400
2837
  /** Parameters for a batched edge delete (soft or hard). */
2401
2838
  type DeleteEdgesBatchParams = Readonly<{
@@ -2514,9 +2951,19 @@ type VectorSearchParams = Readonly<{
2514
2951
  * trades latency for recall. The floor for the over-fetch to fill its
2515
2952
  * candidate set is `efSearch >= limit`; ~2–4× is the high-recall
2516
2953
  * target. Applied transaction-locally (`SET LOCAL`) on the Postgres
2517
- * HNSW path only. No-op on backends without an HNSW frontier knob
2518
- * (sqlite-vec) and ignored — with a one-time warning — on Postgres
2519
- * backends without transactions (e.g. `drizzle-orm/neon-http`).
2954
+ * HNSW path only.
2955
+ *
2956
+ * APPLIED OR REFUSED, never ignored. Read
2957
+ * `capabilities.vector.searchFrontierTuning` to know which you get:
2958
+ *
2959
+ * - `tunable: false` (sqlite-vec, libSQL DiskANN — no per-search frontier
2960
+ * knob exists): `UnsupportedBackendCapabilityError`.
2961
+ * - a slot whose index type is not the tunable one (pgvector IVFFlat or
2962
+ * brute-force): `ConfigurationError`.
2963
+ * - `requiresTransactionScope` on a backend reporting
2964
+ * `transactions: false` (for example `drizzle-orm/neon-http`):
2965
+ * `UnsupportedBackendCapabilityError`, because `SET LOCAL` has no frame
2966
+ * to be local to.
2520
2967
  */
2521
2968
  efSearch?: number;
2522
2969
  }>;
@@ -2989,6 +3436,122 @@ type ContributionRepairResult = Readonly<{
2989
3436
  results: readonly ContributionRepairEntry[];
2990
3437
  remaining: readonly ContributionDiagnostic[];
2991
3438
  }>;
3439
+ /**
3440
+ * The search projection a probe entry summarizes. Deliberately the
3441
+ * logical *class* rather than one physical table: a caller asking "is
3442
+ * search ready?" is deciding whether to issue a fulltext or a vector
3443
+ * query, and a per-`(kind, field)` breakdown of pgvector tables answers
3444
+ * a question they did not ask. The physical detail an operator needs to
3445
+ * act is one `verifyContributions()` call away, and
3446
+ * {@link ContributionProbeEntry.detail} names the affected slots.
3447
+ */
3448
+ type ContributionProbeContribution = "fulltext" | "vector";
3449
+ /**
3450
+ * Readiness of one search projection.
3451
+ *
3452
+ * - `ready` — every contribution backing this projection is attested by
3453
+ * its durable marker and present in the catalog. Not a promise about
3454
+ * future coherence: a write that lands after the probe returns is
3455
+ * outside what any assessment can cover.
3456
+ * - `degraded` — at least one contribution is unusable. Queries against
3457
+ * this projection will be refused (`StoreNotInitializedError`) or will
3458
+ * read incomplete storage.
3459
+ * {@link ContributionProbeEntry.detail} says which and why.
3460
+ * - `building` — **reserved.** No shipped path publishes it. Recording
3461
+ * an in-flight marker would need a fifth
3462
+ * {@link ContributionDiagnosticState} and would widen the hot-path
3463
+ * gate's verdict set; the destructive rebuild instead runs inside one
3464
+ * transaction, so a concurrent probe observes the state before or
3465
+ * after it and never a partial one. Reserved rather than removed so a
3466
+ * future streaming/async materializer can populate it without a
3467
+ * breaking change — treat it as "not `ready`" today.
3468
+ */
3469
+ type ContributionProbeState = "ready" | "degraded" | "building";
3470
+ /**
3471
+ * One search projection's readiness, from
3472
+ * {@link GraphBackend.probeContributions}.
3473
+ */
3474
+ type ContributionProbeEntry = Readonly<{
3475
+ contribution: ContributionProbeContribution;
3476
+ state: ContributionProbeState;
3477
+ /**
3478
+ * Operator-facing summary of why the projection is not `ready` —
3479
+ * e.g. `"fulltext table \"typegraph_node_fulltext\" is missing
3480
+ * (orphaned-marker)"`. Absent on a `ready` entry.
3481
+ *
3482
+ * Human-readable and not a stable format: route on `state`, and call
3483
+ * `store.verifyContributions()` for the structured per-table
3484
+ * diagnostics this string is derived from.
3485
+ */
3486
+ detail?: string;
3487
+ }>;
3488
+ /**
3489
+ * Result of {@link GraphBackend.probeContributions}.
3490
+ *
3491
+ * A projection with no declared contributions is omitted rather than
3492
+ * reported `ready`, so an empty `entries` array means "nothing to
3493
+ * assess" — a graph with no `searchable()` or `embedding()` fields, or a
3494
+ * backend with no contribution support — never "assessed and healthy".
3495
+ */
3496
+ type ContributionProbeResult = Readonly<{
3497
+ /**
3498
+ * The durable graph revision the assessment was taken at, so a caller
3499
+ * can place this probe in the graph's committed history.
3500
+ *
3501
+ * Graph-global, like the clock it reads: it advances on every committed
3502
+ * capture from any writer, so an advance between two probes means
3503
+ * "something committed in between", never "the write this caller just
3504
+ * made landed". Confirm a specific write by observing the write itself.
3505
+ *
3506
+ * Absent unless the Store is revision-tracked (`revisionTracking:
3507
+ * true` or `history: true`) — the same condition under which
3508
+ * `store.revisionNow()` returns a value. This is the one honest shape:
3509
+ * a store with no durable revision clock has no revision to stamp, and
3510
+ * substituting a wall-clock timestamp or the schema version would be a
3511
+ * materially weaker guarantee wearing the name of a stronger one. The
3512
+ * schema version in particular does not advance on data writes, so it
3513
+ * could not order a probe against a caller's write at all.
3514
+ */
3515
+ graphRevision?: string;
3516
+ entries: readonly ContributionProbeEntry[];
3517
+ }>;
3518
+ /**
3519
+ * Which search projection {@link GraphBackend.rebuildContribution}
3520
+ * targets. Scoped explicitly at the call site rather than inferred from
3521
+ * a diagnostic: the operation destroys storage, so which storage is the
3522
+ * caller's decision to state, not TypeGraph's to guess.
3523
+ */
3524
+ type ContributionRebuildScope = ContributionProbeContribution;
3525
+ /**
3526
+ * What a rebuild's `repopulate` callback reconstructed. Reported back so
3527
+ * the rebuild result can distinguish "recreated empty storage" from
3528
+ * "recreated and refilled", which is the difference between a finished
3529
+ * repair and half of one.
3530
+ */
3531
+ type ContributionRepopulationStats = Readonly<{
3532
+ /** Nodes scanned. */
3533
+ processed: number;
3534
+ /** Content rows written. */
3535
+ repopulated: number;
3536
+ /** Nodes whose stored `props` could not be read as an object. */
3537
+ skipped: number;
3538
+ }>;
3539
+ /** Outcome of one destructive contribution rebuild. */
3540
+ type ContributionRebuildResult = Readonly<{
3541
+ /** Physical tables dropped and recreated, in the order rebuilt. */
3542
+ rebuilt: readonly string[];
3543
+ /** Nodes scanned while reconstructing content from stored rows. */
3544
+ processed: number;
3545
+ /** Content rows written into the recreated storage. */
3546
+ repopulated: number;
3547
+ /**
3548
+ * Nodes whose stored `props` could not be read as an object, so no
3549
+ * content row could be reconstructed for them. Non-zero means the
3550
+ * rebuilt index is missing those nodes; the IDs come back from
3551
+ * `store.search.rebuildFulltext()`, which reports them individually.
3552
+ */
3553
+ skipped: number;
3554
+ }>;
2992
3555
  /**
2993
3556
  * One row of the per-deployment `typegraph_kind_removals` table:
2994
3557
  * a graph-extension kind that has been removed from the schema and whose
@@ -3035,6 +3598,21 @@ type TransactionOptions = Readonly<{
3035
3598
  */
3036
3599
  accessMode?: "read_only" | "read_write";
3037
3600
  }>;
3601
+ /**
3602
+ * The physical names of the four Operational Identity relations: the current
3603
+ * assertion ledger, its recorded-time twin, and the two DERIVED relations
3604
+ * (closure, separation) rebuilt from the ledger.
3605
+ *
3606
+ * Named once so the two ports that speak about them —
3607
+ * {@link GraphBackend.ensureIdentityTables} and
3608
+ * {@link GraphBackend.identityTableDdl} — cannot drift apart.
3609
+ */
3610
+ type IdentityTableNames = Readonly<{
3611
+ identityAssertions: string;
3612
+ recordedIdentityAssertions: string;
3613
+ identityClosure: string;
3614
+ identitySeparation: string;
3615
+ }>;
3038
3616
  /**
3039
3617
  * The GraphBackend interface abstracts database operations.
3040
3618
  *
@@ -3199,11 +3777,32 @@ type GraphBackend = Readonly<{
3199
3777
  * transaction-scoped backend. PostgreSQL locks the active schema row, so a
3200
3778
  * concurrent change either becomes visible at read committed or raises the
3201
3779
  * database's native serialization failure at stronger isolation.
3780
+ *
3781
+ * On rejection the thrown `StaleVersionError` reports the active
3782
+ * version this transaction can observe after the conflict resolves, so
3783
+ * `details.actual` names the version that won rather than the absence the
3784
+ * blocked read momentarily saw.
3202
3785
  */
3203
3786
  lockSchemaVersionForWrite?: (this: void, params: Readonly<{
3204
3787
  graphId: string;
3205
3788
  expectedVersion: number;
3206
3789
  }>) => Promise<void>;
3790
+ /**
3791
+ * Internal schema-lifecycle seam for features whose data preflight must
3792
+ * commit atomically with the schema CAS. The callback runs in the same
3793
+ * write transaction after the schema write fence is acquired and before the
3794
+ * version write; it receives no schema-version write methods, so callers
3795
+ * cannot bypass the CAS.
3796
+ *
3797
+ * The preflight target is a {@link SchemaCommitPreflightBackend}: the
3798
+ * transaction backend plus the schema-write DDL primitive, because a
3799
+ * transition may have to CREATE the storage its own preflight then fills —
3800
+ * and creating it outside this transaction would publish it empty whenever
3801
+ * the commit is refused.
3802
+ *
3803
+ * @internal
3804
+ */
3805
+ commitSchemaVersionWithPreflight?: (this: void, params: CommitSchemaVersionParams, preflight: (target: SchemaCommitPreflightBackend) => Promise<void>) => Promise<SchemaVersionRow>;
3207
3806
  /**
3208
3807
  * Atomically flips the active schema pointer to an existing version,
3209
3808
  * with optimistic compare-and-swap on the currently active version.
@@ -3312,6 +3911,54 @@ type GraphBackend = Readonly<{
3312
3911
  * without replaying all base-table DDL during a merge read.
3313
3912
  */
3314
3913
  ensureRevisionOriginsTable?: (this: void) => Promise<void>;
3914
+ /**
3915
+ * Idempotently ensure ONLY the three Operational Identity relations exist —
3916
+ * the current-assertions table, the recorded-time assertions table, and the
3917
+ * derived closure and separation tables — with their indexes and CHECK
3918
+ * constraints (CREATE TABLE / CREATE INDEX IF NOT EXISTS).
3919
+ *
3920
+ * First enablement of identity on an existing populated deployment attaches
3921
+ * via `createStore` / `createSqliteBackend` / `createPostgresBackend`, none
3922
+ * of which run DDL, so the enablement preflight would otherwise
3923
+ * SELECT/DELETE/INSERT tables that do not exist yet. The store calls this
3924
+ * before the enablement locks and closure rebuild. Focused rather than
3925
+ * `bootstrapTables` for the same concurrency rationale as
3926
+ * {@link ensureRevisionOriginsTable}. Stores call it before opening the
3927
+ * schema-commit transaction so DDL does not re-enter its per-graph lock.
3928
+ * Returns the logical names that were absent before this call. Callers set
3929
+ * `provisionMissing` only for safe first enablement; on an already-enabled
3930
+ * graph, missing ledger tables are deliberately left absent so a failed open
3931
+ * cannot make its next retry silently accept empty replacement storage.
3932
+ *
3933
+ * @internal
3934
+ */
3935
+ ensureIdentityTables?: (this: void, tableNames: IdentityTableNames, options: Readonly<{
3936
+ provisionMissing: boolean;
3937
+ }>) => Promise<readonly string[]>;
3938
+ /**
3939
+ * The idempotent CREATE statements for exactly the identity relations —
3940
+ * the same DDL {@link ensureIdentityTables} issues, handed back as data
3941
+ * instead of executed.
3942
+ *
3943
+ * Pure and synchronous: it executes nothing and probes no catalog, so it is
3944
+ * safe to call from inside an already-open transaction, where invoking a
3945
+ * top-level backend method would re-enter the backend's serialized statement
3946
+ * queue and deadlock. That is the whole point. Provisioning a missing DERIVED
3947
+ * relation (closure, separation) on an already-enabled graph has to CREATE it
3948
+ * and FILL it in one transaction, because a created-but-empty derived
3949
+ * relation is readable and answers every question with "nothing" — for the
3950
+ * separation relation, "nothing" means "not separated", which is exactly the
3951
+ * answer that lets a contradictory merge commit.
3952
+ *
3953
+ * A backend that omits this cannot offer that atomicity. Callers do not fall
3954
+ * back: when a fill is owed, the upgrade is REFUSED with the typed
3955
+ * `IDENTITY_UPGRADE_REQUIRES_ATOMIC_DDL` error naming this port — creating
3956
+ * and filling back-to-back would publish the readable-empty state the
3957
+ * paragraph above forbids.
3958
+ *
3959
+ * @internal
3960
+ */
3961
+ identityTableDdl?: (this: void, tableNames: IdentityTableNames) => readonly string[];
3315
3962
  /**
3316
3963
  * Look up a recorded materialization for a declared index by its
3317
3964
  * physical SQL index name. Returns `undefined` if no row exists.
@@ -3525,6 +4172,61 @@ type GraphBackend = Readonly<{
3525
4172
  * strategy-owned contribution DDL.
3526
4173
  */
3527
4174
  repairContributions?: (this: void, graphId: string, vectorSlots: readonly VectorSlot[]) => Promise<ContributionRepairResult>;
4175
+ /**
4176
+ * Read-only readiness probe: the same marker-versus-catalog audit
4177
+ * `verifyContributions` performs, projected onto one entry per search
4178
+ * projection. Shares that method's detection logic exactly — a second
4179
+ * implementation would be free to disagree with the one the hot-path
4180
+ * gate actually consults, and a health check that disagrees with the
4181
+ * gate is worse than none.
4182
+ *
4183
+ * Writes nothing: no DDL, no marker writes, no effect on the
4184
+ * per-instance caches the hot path relies on. Safe on a read path, on
4185
+ * a replica, and under a least-privilege role.
4186
+ *
4187
+ * Present only on backends that can probe their catalog; a backend
4188
+ * that provisions contributions without this method declares the gap
4189
+ * as `capabilities.contributions.probe === false`.
4190
+ */
4191
+ probeContributions?: (this: void, graphId: string, vectorSlots: readonly VectorSlot[]) => Promise<readonly ContributionProbeEntry[]>;
4192
+ /**
4193
+ * Destructively rebuild one search projection for one graph: clear that
4194
+ * graph's rows from the projection's storage, ensure the storage matches
4195
+ * the current `createDdl`, reconstruct the graph's content, and stamp the
4196
+ * durable marker at the current signature.
4197
+ *
4198
+ * This is the repair `repairContributions` deliberately refuses to
4199
+ * perform, and it must never be reachable from it. A `stale`
4200
+ * contribution's table exists at the *old* physical shape, so the
4201
+ * idempotent `CREATE ... IF NOT EXISTS` in the ordinary ensure path
4202
+ * no-ops; re-stamping the marker there would leave it blessing a table
4203
+ * whose shape is wrong, which is exactly what the drift guard exists
4204
+ * to prevent. Only a drop makes the recreate meaningful, and destroying
4205
+ * content is a decision the caller states rather than one a flag named
4206
+ * `force` implies.
4207
+ *
4208
+ * The fulltext projection's storage is one physical table shared by every
4209
+ * graph in the database, while this call is fenced per graph.
4210
+ * Implementations must therefore scope the teardown to `graphId` and may
4211
+ * drop the storage only when doing so destroys no other graph's rows;
4212
+ * when the recorded shape is stale and the drop that would repair it is
4213
+ * not available, they refuse (`shared-storage-in-use`) rather than
4214
+ * re-stamp a shape nothing verified.
4215
+ *
4216
+ * Runs the whole sequence inside one transaction under the same
4217
+ * per-graph fence as a schema commit, so an interrupted rebuild leaves
4218
+ * the contribution exactly as it was rather than attested-but-empty.
4219
+ *
4220
+ * `repopulate` receives that transaction and reconstructs content from
4221
+ * rows TypeGraph already stores. The inversion exists because deciding
4222
+ * *what* content a node contributes needs the schema registry, which
4223
+ * is a Store-layer concern the backend must not reach into.
4224
+ *
4225
+ * @param scope which projection to rebuild. Implementations must
4226
+ * refuse `"vector"`: embeddings live only in the storage this would
4227
+ * drop, so there is nothing to reconstruct them from.
4228
+ */
4229
+ rebuildContribution?: (this: void, graphId: string, scope: ContributionRebuildScope, repopulate: (target: TransactionBackend) => Promise<ContributionRepopulationStats>) => Promise<ContributionRebuildResult>;
3528
4230
  /**
3529
4231
  * Bootstraps the fulltext storage table the active `FulltextStrategy`
3530
4232
  * owns. Same focused-bootstrap rationale as the other `ensure*Table`
@@ -3700,6 +4402,23 @@ type TransactionReadBackend = Readonly<BackendIdentity & GraphEntityReadBackend
3700
4402
  * lifecycle owner rather than an already-open transaction.
3701
4403
  */
3702
4404
  type TransactionBackend = Readonly<BackendIdentity & GraphEntityReadBackend & GraphEntityWriteBackend & UniqueConstraintBackend & SchemaReadBackend & Pick<GraphBackend, "lockSchemaVersionForWrite"> & VectorOperationBackend & FulltextOperationBackend & IndexMaterializationBackend & ContributionMaterializationBackend & RemovalMaterializationBackend & GraphLifecycleBackend & QueryExecutionBackend & RawQueryExecutionBackend & RawStatementExecutionBackend>;
4405
+ /**
4406
+ * The target a schema-commit preflight runs against: a transaction backend
4407
+ * that MAY also carry the schema-write DDL primitive.
4408
+ *
4409
+ * Optional, deliberately. Both bundled backends pass the same
4410
+ * {@link SchemaWriteTransactionBackend} their `schemaWriteTransaction` exposes,
4411
+ * so DDL is available there; a custom backend may implement
4412
+ * {@link GraphBackend.commitSchemaVersionWithPreflight} over a transaction that
4413
+ * cannot run DDL. Declaring the port as present-or-absent lets a preflight that
4414
+ * needs it refuse with a typed error naming the capability, instead of calling
4415
+ * `undefined` — or, far worse, skipping the DDL and continuing.
4416
+ *
4417
+ * @internal
4418
+ */
4419
+ type SchemaCommitPreflightBackend = TransactionBackend & Readonly<{
4420
+ executeSchemaDdl?: (this: void, ddl: string) => Promise<void>;
4421
+ }>;
3703
4422
  /**
3704
4423
  * Parameters for inserting a unique constraint entry.
3705
4424
  */
@@ -4407,6 +5126,8 @@ type Traversal = Readonly<{
4407
5126
  joinEdgeField: "from_id" | "to_id";
4408
5127
  /** If true, use LEFT JOIN instead of INNER JOIN (optional match) */
4409
5128
  optional: boolean;
5129
+ /** Expand this hop through coordinate-visible Operational Identity members. */
5130
+ includeIdentityMembers?: boolean;
4410
5131
  /** Variable-length traversal configuration (for recursive CTEs) */
4411
5132
  variableLength?: VariableLengthSpec;
4412
5133
  }>;
@@ -4880,4 +5601,4 @@ type RelationalIndexDeclaration = NodeIndexDeclaration | EdgeIndexDeclaration;
4880
5601
  type IndexDeclaration = RelationalIndexDeclaration | VectorIndexDeclaration;
4881
5602
  type SystemColumnName = "graph_id" | "kind" | "id" | "from_kind" | "from_id" | "to_kind" | "to_id" | "deleted_at" | "valid_from" | "valid_to" | "created_at" | "updated_at" | "version";
4882
5603
 
4883
- export { type SerializedOntology as $, type AdapterBackend as A, type BackendCapabilities as B, type ContributionDiagnostic as C, type DeleteBehavior as D, type EdgeRegistration as E, type FulltextStrategy as F, type GraphExtension as G, type SerializedSchema as H, type IndexDeclaration as I, type JsonPointer as J, type KindEntity as K, type SerializedNodeDef as L, type SerializedEdgeDef as M, type NodeRegistration as N, type OntologyRelation as O, type IndexEntity as P, type QueryAst as Q, type RelationalIndexDeclaration as R, type SqlDialect as S, type TemporalMode as T, type SerializedMetaEdge as U, type VectorStrategy as V, type SerializedOntologyRelation as W, type SerializedClosures as X, type SchemaHash as Y, type NullCheckOp as Z, type JsonSchema as _, type ContributionDiagnosticState as a, type NodeEntityWriteBackend as a$, type SerializedUniqueConstraint as a0, type InferenceType as a1, type EdgeType as a2, type AggregateExpr as a3, type FieldRef as a4, type ComparisonOp as a5, type AggregateComparisonPredicate as a6, type TraversalDirection as a7, type AdapterBackendTransactions as a8, type BackendIdentity as a9, type FulltextCapabilities as aA, type FulltextOperationBackend as aB, type FulltextQueryMode as aC, type FulltextSearchParams as aD, type FulltextSearchResult as aE, type GraphAnalyticsCapabilities as aF, type GraphEntityReadBackend as aG, type GraphEntityWriteBackend as aH, type GraphExtensionVersion as aI, type GraphLifecycleBackend as aJ, type HardDeleteUniquesByNodeIdsParams as aK, type HybridFusionOptions as aL, type IndexMaterializationBackend as aM, type IntentSql as aN, type JsonPointerFor as aO, type JsonPointerInput as aP, type JsonPointerSegment as aQ, type JsonPointerSegments as aR, type JsonPointerSegmentsFor as aS, type JsonValue as aT, type KindAnnotations as aU, LEGACY_GRAPH_EXTENSION_VERSION as aV, type LockSchemaVersionForWriteParams as aW, MAX_JSON_POINTER_DEPTH as aX, type MetaEdge as aY, type MetaEdgeProperties as aZ, type NodeEntityReadBackend as a_, type BackendLifecycle as aa, type BackendMaintenance as ab, type BackendTransactions as ac, CURRENT_GRAPH_EXTENSION_VERSION as ad, type Cardinality as ae, type Collation as af, type CommitSchemaVersionExpected as ag, type CommitSchemaVersionIfKindsEmptyResult as ah, type CommitSchemaVersionParams as ai, type CompiledRowsSql as aj, type CompiledSelectSql as ak, type CompiledStatementSql as al, type ContributionMaterializationBackend as am, DEFAULT_SQL_SCHEMA as an, type DeleteFulltextBatchParams as ao, type EdgeEntityReadBackend as ap, type EdgeEntityWriteBackend as aq, type EdgeId as ar, type EdgeProps as as, type EdgeTypeWithEndpoints as at, type EndpointExistence as au, type ExternalRecordedReadSource as av, type FilteredApproximateSearch as aw, type FilteredApproximateSearchMode as ax, type FindEdgesByHeterogeneousEndpointSetParams as ay, type FulltextBatchRow as az, type ContributionRepairEntry as b, renderPostgres as b$, type NodeId as b0, type NodeProps as b1, type OrderSpec as b2, type ParameterRef as b3, Placeholder as b4, type PopulatedSchemaKind as b5, type QueryExecutionBackend as b6, type RawQueryExecutionBackend as b7, type RawStatementExecutionBackend as b8, type RecordedRelationOptions as b9, type TransactionReadBackend as bA, type TraversalExpansion as bB, type TrustedImportOptions as bC, type TrustedImportSession as bD, type UniqueConstraint as bE, type UniqueConstraintBackend as bF, type UniquenessScope as bG, type UpdateNodeSetParams as bH, type UpdateNodeSetResult as bI, type UpsertFulltextBatchParams as bJ, type VectorCapabilities as bK, type VectorOperationBackend as bL, asEdgeId as bM, asNodeId as bN, buildVectorCapabilities as bO, createSqlSchema as bP, fts5Strategy as bQ, isEdgeType as bR, isEdgeTypeWithEndpoints as bS, isMetaEdge as bT, isNodeType as bU, isSqlFragment as bV, joinJsonPointers as bW, jsonPointer as bX, normalizeJsonPointer as bY, parseJsonPointer as bZ, recordedRelation as b_, type RemovalMaterializationBackend as ba, type RenderedSql as bb, type ResolveJsonPointer as bc, type ResolveJsonPointerSegments as bd, type ResolvedSqlTableNames as be, type RowProps as bf, type SchemaCommitBackend as bg, type SchemaKindEmptinessProbe as bh, type SchemaReadBackend as bi, type SchemaWriteFenceBackend as bj, type SetActiveVersionParams as bk, type SortDirection as bl, type SqlChunk as bm, type SqlFragment as bn, type SqlIdentifierChunk as bo, type SqlIntent as bp, type SqlParameterChunk as bq, type SqlPlaceholderChunk as br, SqlSchema as bs, type SqlTableNames as bt, type SqlTag as bu, type SqlTextChunk as bv, type StrategyTableContribution as bw, type TableContribution as bx, type TransactionBackend as by, type TransactionOptions as bz, type ContributionRepairResult as c, type ExtensionIndexWhere as c$, renderSql as c0, renderSqlInline as c1, renderSqlite as c2, rowPropsToJsonText as c3, rowPropsToObject as c4, sql as c5, tsvectorStrategy as c6, type ExtensionNodeDef as c7, type ExtensionEdgeDef as c8, type ExtensionOntologyRelation as c9, type ContributionMaterializationIdentity as cA, type ContributionMaterializationRow as cB, type CountEdgesByKindParams as cC, type CountEdgesFromParams as cD, type CountNodesByKindParams as cE, type CreateVectorIndexParams as cF, D1_MAX_BIND_PARAMETERS as cG, DURABLE_OBJECT_MAX_BIND_PARAMETERS as cH, type DeleteEdgeParams as cI, type DeleteEdgesBatchParams as cJ, type DeleteEmbeddingParams as cK, type DeleteFulltextParams as cL, type DeleteNodeParams as cM, type DeleteUniqueParams as cN, type DialectAdapter as cO, type DialectCapabilities as cP, type DialectRecursiveQueryStrategy as cQ, type DialectStandardQueryStrategy as cR, type DialectVectorPredicateStrategy as cS, type DropVectorIndexParams as cT, type EdgeExistsBetweenParams as cU, type ExtensionArrayItemType as cV, type ExtensionArrayProperty as cW, type ExtensionBooleanProperty as cX, type ExtensionEdgeIndex as cY, type ExtensionEmbeddingModifier as cZ, type ExtensionEnumProperty as c_, type ExtensionIndex as ca, type ValueType as cb, type PredicateExpression as cc, type VectorMetricType as cd, type Traversal as ce, type NodePredicate as cf, type ProjectedField as cg, type AggregateOrderSpec as ch, type GroupBySpec as ci, type RecursiveCyclePolicy as cj, type VectorSlotMap as ck, type RecordedReadBinding as cl, type SelectiveField as cm, type ComposableQuery as cn, type SetOperationType as co, type SetOperation as cp, type NodeRow as cq, type EdgeRow as cr, type VectorMetric as cs, ALL_FULLTEXT_MODES as ct, ALL_META_EDGE_NAMES as cu, BASE_CONTRIBUTION_OWNER as cv, type CheckUniqueBatchParams as cw, type CheckUniqueParams as cx, type ClaimIndexMaterializationParams as cy, type CompiledTemporaryStatementSql as cz, type NodeType as d, isTombstonedNodeRow as d$, type ExtensionNodeIndex as d0, type ExtensionNumberProperty as d1, type ExtensionObjectFieldProperty as d2, type ExtensionObjectProperty as d3, type ExtensionPropertyModifiers as d4, type ExtensionPropertyType as d5, type ExtensionSearchableModifier as d6, type ExtensionStringProperty as d7, type ExtensionUniqueConstraint as d8, type ExtensionUniqueWhere as d9, POSTGRES_MAX_BIND_PARAMETERS as dA, type RecordContributionMaterializationParams as dB, type RecordIndexMaterializationParams as dC, type RecordKindRemovalParams as dD, type RelationalIndexMethod as dE, type ReleaseIndexMaterializationClaimParams as dF, SQLITE_CAPABILITIES as dG, SQLITE_MAX_BIND_PARAMETERS as dH, type SqlCompilationBackend as dI, type TombstonedNodeRow as dJ, type UniqueRow as dK, type UpdateEdgeParams as dL, type UpdateNodeParams as dM, type UpsertEmbeddingBatchParams as dN, type UpsertEmbeddingBatchRow as dO, type UpsertEmbeddingParams as dP, type UpsertFulltextParams as dQ, VECTOR_CONTRIBUTION_PREFIX as dR, type VectorIndexType as dS, type VectorSearchParams as dT, type VectorSearchResult as dU, assertFiniteEmbedding as dV, assertVectorMinScore as dW, assertVectorSearchLimit as dX, buildFulltextCapabilities as dY, isLiveNodeRow as dZ, isSqlPlaceholder as d_, FULLTEXT_CONTRIBUTION_NAME as da, type FindEdgesByEndpointSetParams as db, type FindEdgesByKindParams as dc, type FindEdgesConnectedToParams as dd, type FindNodesByKindParams as de, type GraphReadBackend as df, type HardDeleteEdgeParams as dg, type HardDeleteNodeParams as dh, type HybridSearchParams as di, type HybridSearchRow as dj, type InListParameterOptions as dk, type IndexDeclarationBase as dl, type IndexMaterializationRow as dm, type IndexWhereLiteral as dn, type IndexWhereOp as dp, type IndexWhereOperand as dq, type InsertEdgeParams as dr, type InsertNodeParams as ds, type InsertSchemaParams as dt, type InsertUniqueParams as du, type KindRemovalRow as dv, type LiveNodeRow as dw, MODERN_SQLITE_MAX_BIND_PARAMETERS as dx, type MetaEdgeName as dy, POSTGRES_CAPABILITIES as dz, type AnyEdgeType as e, normalizeGraphAnalyticsCapabilities as e0, quoteIdentifier as e1, shortHash as e2, vectorMinScoreCondition as e3, vectorPhysicalName as e4, vectorScoreExpression as e5, GRAPH_EXTENSION_TOP_LEVEL_KEYS as e6, type GraphExtensionTopLevelKey as e7, type GraphDefaults as f, type EdgeIndexDeclaration as g, type NodeIndexDeclaration as h, type EdgeIndexConfig as i, type EdgeIndexDirection as j, type EdgeIndexWhereBuilder as k, type IndexOrigin as l, type IndexScope as m, type IndexWhereExpression as n, type IndexWhereFieldBuilder as o, type IndexWhereInput as p, type NodeIndexConfig as q, type NodeIndexWhereBuilder as r, type SystemColumnName as s, type VectorIndexDeclaration as t, type VectorIndexImplementation as u, type VectorIndexMetric as v, type VectorIndexParams as w, type VectorSlot as x, type SchemaVersionRow as y, type GraphBackend as z };
5604
+ export { type EdgeId as $, type AdapterBackend as A, type BackendCapabilities as B, type ContributionDiagnostic as C, type SerializedNodeDef as D, type EdgeIndexDeclaration as E, type FulltextStrategy as F, type GraphIdentityConfig as G, type SerializedEdgeDef as H, type IndexDeclaration as I, type JsonPointer as J, type KindEntity as K, type IndexEntity as L, type SerializedMetaEdge as M, type NodeIndexDeclaration as N, type SerializedOntologyRelation as O, type SerializedClosures as P, type QueryAst as Q, type RelationalIndexDeclaration as R, type SqlDialect as S, type TemporalMode as T, type SchemaHash as U, type VectorStrategy as V, type NullCheckOp as W, type JsonSchema as X, type SerializedOntology as Y, type SerializedUniqueConstraint as Z, type NodeId as _, type ContributionDiagnosticState as a, type GetEdgeType as a$, type JsonValue as a0, type NodeKinds as a1, type GetNodeType as a2, type KindAnnotations as a3, type MetaEdge as a4, type EdgeType as a5, type DeleteBehavior as a6, type GraphExtensionVersion as a7, type ExtensionNodeDef as a8, type ExtensionEdgeDef as a9, type ContributionMaterializationBackend as aA, type ContributionProbeContribution as aB, type ContributionProbeEntry as aC, type ContributionProbeResult as aD, type ContributionProbeState as aE, type ContributionRebuildResult as aF, type ContributionRebuildScope as aG, type ContributionRepopulationStats as aH, DEFAULT_SQL_SCHEMA as aI, type DeleteFulltextBatchParams as aJ, type EdgeEntityReadBackend as aK, type EdgeEntityWriteBackend as aL, type EdgeKinds as aM, type EdgeProps as aN, type EdgeRegistration as aO, type EdgeTypeWithEndpoints as aP, type EndpointExistence as aQ, type ExternalRecordedReadSource as aR, type FilteredApproximateSearch as aS, type FilteredApproximateSearchMode as aT, type FindEdgesByHeterogeneousEndpointSetParams as aU, type FulltextBatchRow as aV, type FulltextCapabilities as aW, type FulltextOperationBackend as aX, type FulltextQueryMode as aY, type FulltextSearchParams as aZ, type FulltextSearchResult as a_, type ExtensionOntologyRelation as aa, type ExtensionIndex as ab, type AggregateExpr as ac, type FieldRef as ad, type ComparisonOp as ae, type AggregateComparisonPredicate as af, type TraversalDirection as ag, type OntologyRelation as ah, type InferenceType as ai, type AdapterBackendTransactions as aj, type AllEdgeTypes as ak, type AllNodeTypes as al, type BackendIdentity as am, type BackendLifecycle as an, type BackendMaintenance as ao, type BackendTransactions as ap, CURRENT_GRAPH_EXTENSION_VERSION as aq, type Cardinality as ar, type Collation as as, type CommitSchemaVersionExpected as at, type CommitSchemaVersionIfKindsEmptyResult as au, type CommitSchemaVersionParams as av, type CompiledRowsSql as aw, type CompiledSelectSql as ax, type CompiledStatementSql as ay, type ContributionCapabilities as az, type ContributionRepairEntry as b, type UpdateNodeSetParams as b$, type GraphAnalyticsCapabilities as b0, type GraphDefaults as b1, type GraphEntityReadBackend as b2, type GraphEntityWriteBackend as b3, type GraphExtension as b4, type GraphLifecycleBackend as b5, type HardDeleteUniquesByNodeIdsParams as b6, type HybridFusionOptions as b7, type IndexMaterializationBackend as b8, type IntentSql as b9, type RowProps as bA, type SchemaCommitBackend as bB, type SchemaKindEmptinessProbe as bC, type SchemaReadBackend as bD, type SchemaWriteFenceBackend as bE, type SetActiveVersionParams as bF, type SortDirection as bG, type SqlChunk as bH, type SqlFragment as bI, type SqlIdentifierChunk as bJ, type SqlIntent as bK, type SqlParameterChunk as bL, type SqlPlaceholderChunk as bM, type SqlTableNames as bN, type SqlTag as bO, type SqlTextChunk as bP, type StrategyTableContribution as bQ, type TableContribution as bR, type TransactionBackend as bS, type TransactionOptions as bT, type TransactionReadBackend as bU, type TraversalExpansion as bV, type TrustedImportOptions as bW, type TrustedImportSession as bX, type UniqueConstraint as bY, type UniqueConstraintBackend as bZ, type UniquenessScope as b_, type JsonPointerFor as ba, type JsonPointerInput as bb, type JsonPointerSegment as bc, type JsonPointerSegments as bd, type JsonPointerSegmentsFor as be, LEGACY_GRAPH_EXTENSION_VERSION as bf, type LockSchemaVersionForWriteParams as bg, MAX_JSON_POINTER_DEPTH as bh, type MetaEdgeProperties as bi, type NodeEntityReadBackend as bj, type NodeEntityWriteBackend as bk, type NodeProps as bl, type NodeRegistration as bm, type OrderSpec as bn, type ParameterRef as bo, Placeholder as bp, type PopulatedSchemaKind as bq, type QueryExecutionBackend as br, type RawQueryExecutionBackend as bs, type RawStatementExecutionBackend as bt, type RecordedRelationOptions as bu, type RemovalMaterializationBackend as bv, type RenderedSql as bw, type ResolveJsonPointer as bx, type ResolveJsonPointerSegments as by, type ResolvedSqlTableNames as bz, type ContributionRepairResult as c, D1_MAX_BIND_PARAMETERS as c$, type UpdateNodeSetResult as c0, type UpsertFulltextBatchParams as c1, type VectorCapabilities as c2, type VectorOperationBackend as c3, type VectorSearchFrontierTuning as c4, asEdgeId as c5, asNodeId as c6, buildVectorCapabilities as c7, createSqlSchema as c8, defineGraph as c9, type NodePredicate as cA, type ProjectedField as cB, type AggregateOrderSpec as cC, type GroupBySpec as cD, type RecursiveCyclePolicy as cE, type VectorSlotMap as cF, type RecordedReadBinding as cG, type SelectiveField as cH, type ComposableQuery as cI, type SetOperationType as cJ, type SetOperation as cK, type NodeRow as cL, type EdgeRow as cM, type VectorMetric as cN, ALL_FULLTEXT_MODES as cO, ALL_META_EDGE_NAMES as cP, BASE_CONTRIBUTION_OWNER as cQ, type CheckUniqueBatchParams as cR, type CheckUniqueParams as cS, type ClaimIndexMaterializationParams as cT, type CompiledTemporaryStatementSql as cU, type ContributionMaterializationIdentity as cV, type ContributionMaterializationRow as cW, type CountEdgesByKindParams as cX, type CountEdgesFromParams as cY, type CountNodesByKindParams as cZ, type CreateVectorIndexParams as c_, fts5Strategy as ca, getEdgeKinds as cb, getNodeKinds as cc, isEdgeType as cd, isEdgeTypeWithEndpoints as ce, isGraphDef as cf, isMetaEdge as cg, isNodeType as ch, isSqlFragment as ci, joinJsonPointers as cj, jsonPointer as ck, normalizeJsonPointer as cl, parseJsonPointer as cm, recordedRelation as cn, renderPostgres as co, renderSql as cp, renderSqlInline as cq, renderSqlite as cr, rowPropsToJsonText as cs, rowPropsToObject as ct, sql as cu, tsvectorStrategy as cv, type ValueType as cw, type PredicateExpression as cx, type VectorMetricType as cy, type Traversal as cz, type GraphDef as d, type ReleaseIndexMaterializationClaimParams as d$, DURABLE_OBJECT_MAX_BIND_PARAMETERS as d0, type DeleteEdgeParams as d1, type DeleteEdgesBatchParams as d2, type DeleteEmbeddingParams as d3, type DeleteFulltextParams as d4, type DeleteNodeParams as d5, type DeleteUniqueParams as d6, type DialectAdapter as d7, type DialectCapabilities as d8, type DialectRecursiveQueryStrategy as d9, type FindNodesByKindParams as dA, type GraphReadBackend as dB, type HardDeleteEdgeParams as dC, type HardDeleteNodeParams as dD, type HybridSearchParams as dE, type HybridSearchRow as dF, type IdentityTableNames as dG, type InListParameterOptions as dH, type IndexDeclarationBase as dI, type IndexMaterializationRow as dJ, type IndexWhereLiteral as dK, type IndexWhereOp as dL, type IndexWhereOperand as dM, type InsertEdgeParams as dN, type InsertNodeParams as dO, type InsertSchemaParams as dP, type InsertUniqueParams as dQ, type KindRemovalRow as dR, type LiveNodeRow as dS, MODERN_SQLITE_MAX_BIND_PARAMETERS as dT, type MetaEdgeName as dU, POSTGRES_CAPABILITIES as dV, POSTGRES_MAX_BIND_PARAMETERS as dW, type RecordContributionMaterializationParams as dX, type RecordIndexMaterializationParams as dY, type RecordKindRemovalParams as dZ, type RelationalIndexMethod as d_, type DialectStandardQueryStrategy as da, type DialectVectorPredicateStrategy as db, type DropVectorIndexParams as dc, type EdgeExistsBetweenParams as dd, type ExtensionArrayItemType as de, type ExtensionArrayProperty as df, type ExtensionBooleanProperty as dg, type ExtensionEdgeIndex as dh, type ExtensionEmbeddingModifier as di, type ExtensionEnumProperty as dj, type ExtensionIndexWhere as dk, type ExtensionNodeIndex as dl, type ExtensionNumberProperty as dm, type ExtensionObjectFieldProperty as dn, type ExtensionObjectProperty as dp, type ExtensionPropertyModifiers as dq, type ExtensionPropertyType as dr, type ExtensionSearchableModifier as ds, type ExtensionStringProperty as dt, type ExtensionUniqueConstraint as du, type ExtensionUniqueWhere as dv, FULLTEXT_CONTRIBUTION_NAME as dw, type FindEdgesByEndpointSetParams as dx, type FindEdgesByKindParams as dy, type FindEdgesConnectedToParams as dz, type EdgeIndexConfig as e, SQLITE_CAPABILITIES as e0, SQLITE_MAX_BIND_PARAMETERS as e1, type SchemaCommitPreflightBackend as e2, type SqlCompilationBackend as e3, type TombstonedNodeRow as e4, type UniqueRow as e5, type UpdateEdgeParams as e6, type UpdateNodeParams as e7, type UpsertEmbeddingBatchParams as e8, type UpsertEmbeddingBatchRow as e9, type UpsertEmbeddingParams as ea, type UpsertFulltextParams as eb, VECTOR_CONTRIBUTION_PREFIX as ec, type VectorIndexType as ed, type VectorSearchParams as ee, type VectorSearchResult as ef, assertFiniteEmbedding as eg, assertVectorMinScore as eh, assertVectorSearchLimit as ei, buildFulltextCapabilities as ej, isLiveNodeRow as ek, isSqlPlaceholder as el, isTombstonedNodeRow as em, normalizeGraphAnalyticsCapabilities as en, quoteIdentifier as eo, shortHash as ep, vectorMinScoreCondition as eq, vectorPhysicalName as er, vectorScoreExpression as es, GRAPH_EXTENSION_TOP_LEVEL_KEYS as et, type GraphExtensionTopLevelKey as eu, type EdgeIndexDirection as f, type EdgeIndexWhereBuilder as g, type IndexOrigin as h, type IndexScope as i, type IndexWhereExpression as j, type IndexWhereFieldBuilder as k, type IndexWhereInput as l, type NodeIndexConfig as m, type NodeIndexWhereBuilder as n, type SystemColumnName as o, type VectorIndexDeclaration as p, type VectorIndexImplementation as q, type VectorIndexMetric as r, type VectorIndexParams as s, type VectorSlot as t, type NodeType as u, type AnyEdgeType as v, SqlSchema as w, type SchemaVersionRow as x, type GraphBackend as y, type SerializedSchema as z };