@nicia-ai/typegraph 0.49.0 → 0.50.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 (327) hide show
  1. package/dist/backend/drizzle/indexes.cjs +9 -9
  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 +5 -5
  5. package/dist/backend/index.cjs +56 -52
  6. package/dist/backend/index.d.cts +3 -3
  7. package/dist/backend/index.d.ts +3 -3
  8. package/dist/backend/index.js +11 -11
  9. package/dist/backend/postgres/index.cjs +34 -28
  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 +17 -15
  13. package/dist/backend/postgres/pglite-store.cjs +36 -35
  14. package/dist/backend/postgres/pglite-store.cjs.map +1 -1
  15. package/dist/backend/postgres/pglite-store.d.cts +8 -8
  16. package/dist/backend/postgres/pglite-store.d.ts +8 -8
  17. package/dist/backend/postgres/pglite-store.js +32 -31
  18. package/dist/backend/postgres/pglite-store.js.map +1 -1
  19. package/dist/backend/postgres/pglite.cjs +19 -17
  20. package/dist/backend/postgres/pglite.d.cts +3 -3
  21. package/dist/backend/postgres/pglite.d.ts +3 -3
  22. package/dist/backend/postgres/pglite.js +18 -16
  23. package/dist/backend/sqlite/index.cjs +31 -25
  24. package/dist/backend/sqlite/index.d.cts +7 -7
  25. package/dist/backend/sqlite/index.d.ts +7 -7
  26. package/dist/backend/sqlite/index.js +15 -13
  27. package/dist/backend/sqlite/libsql.cjs +22 -20
  28. package/dist/backend/sqlite/libsql.cjs.map +1 -1
  29. package/dist/backend/sqlite/libsql.d.cts +3 -3
  30. package/dist/backend/sqlite/libsql.d.ts +3 -3
  31. package/dist/backend/sqlite/libsql.js +17 -15
  32. package/dist/backend/sqlite/libsql.js.map +1 -1
  33. package/dist/backend/sqlite/local-store.cjs +37 -36
  34. package/dist/backend/sqlite/local-store.cjs.map +1 -1
  35. package/dist/backend/sqlite/local-store.d.cts +8 -8
  36. package/dist/backend/sqlite/local-store.d.ts +8 -8
  37. package/dist/backend/sqlite/local-store.js +33 -32
  38. package/dist/backend/sqlite/local-store.js.map +1 -1
  39. package/dist/backend/sqlite/local.cjs +20 -18
  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 +18 -16
  43. package/dist/{chunk-LTXQOEIC.js → chunk-2CYI5HRH.js} +248 -203
  44. package/dist/chunk-2CYI5HRH.js.map +1 -0
  45. package/dist/{chunk-KF6K7TGH.js → chunk-2GIV5X4P.js} +702 -422
  46. package/dist/chunk-2GIV5X4P.js.map +1 -0
  47. package/dist/{chunk-2TYSSBU5.js → chunk-2Q45FAIE.js} +15 -15
  48. package/dist/{chunk-2TYSSBU5.js.map → chunk-2Q45FAIE.js.map} +1 -1
  49. package/dist/{chunk-WODMN3Q2.cjs → chunk-45YZXI6X.cjs} +27 -27
  50. package/dist/{chunk-WODMN3Q2.cjs.map → chunk-45YZXI6X.cjs.map} +1 -1
  51. package/dist/{chunk-3DMMGT6S.js → chunk-46UGOVRW.js} +3 -3
  52. package/dist/{chunk-3DMMGT6S.js.map → chunk-46UGOVRW.js.map} +1 -1
  53. package/dist/{chunk-GLHXM7C4.js → chunk-5LKOVCPP.js} +60 -23
  54. package/dist/chunk-5LKOVCPP.js.map +1 -0
  55. package/dist/{chunk-JFRT7S3B.cjs → chunk-5OWHU7Z7.cjs} +261 -459
  56. package/dist/chunk-5OWHU7Z7.cjs.map +1 -0
  57. package/dist/{chunk-7SQSZN2J.js → chunk-5PP4KRPV.js} +5 -5
  58. package/dist/{chunk-7SQSZN2J.js.map → chunk-5PP4KRPV.js.map} +1 -1
  59. package/dist/chunk-6KQEICJ6.cjs +12 -0
  60. package/dist/{chunk-MKJ4KXL5.cjs.map → chunk-6KQEICJ6.cjs.map} +1 -1
  61. package/dist/{chunk-6SWPJEYN.js → chunk-6LEOAIIB.js} +40 -6
  62. package/dist/chunk-6LEOAIIB.js.map +1 -0
  63. package/dist/{chunk-DZAICA5J.js → chunk-6NKSE5AU.js} +4 -4
  64. package/dist/{chunk-DZAICA5J.js.map → chunk-6NKSE5AU.js.map} +1 -1
  65. package/dist/{chunk-OVI7IXYX.js → chunk-6S3PTHL4.js} +3 -3
  66. package/dist/{chunk-OVI7IXYX.js.map → chunk-6S3PTHL4.js.map} +1 -1
  67. package/dist/{chunk-3FPR224C.cjs → chunk-7CCMCMJO.cjs} +102 -102
  68. package/dist/{chunk-3FPR224C.cjs.map → chunk-7CCMCMJO.cjs.map} +1 -1
  69. package/dist/{chunk-SHFBB23Q.js → chunk-7OWE7WD6.js} +6 -4
  70. package/dist/chunk-7OWE7WD6.js.map +1 -0
  71. package/dist/chunk-7PRMDZIA.cjs +182 -0
  72. package/dist/chunk-7PRMDZIA.cjs.map +1 -0
  73. package/dist/{chunk-CHAOFCHV.js → chunk-AH2A74OZ.js} +3 -3
  74. package/dist/{chunk-CHAOFCHV.js.map → chunk-AH2A74OZ.js.map} +1 -1
  75. package/dist/{chunk-OORXGFL5.cjs → chunk-BYBDM423.cjs} +48 -48
  76. package/dist/{chunk-OORXGFL5.cjs.map → chunk-BYBDM423.cjs.map} +1 -1
  77. package/dist/{chunk-JB6T4GLL.cjs → chunk-C76WFIVZ.cjs} +808 -519
  78. package/dist/chunk-C76WFIVZ.cjs.map +1 -0
  79. package/dist/{chunk-3G5W2U2L.cjs → chunk-CS6JTQQ2.cjs} +302 -257
  80. package/dist/chunk-CS6JTQQ2.cjs.map +1 -0
  81. package/dist/{chunk-AOSSQDVO.cjs → chunk-CSNOYIB4.cjs} +13 -13
  82. package/dist/{chunk-AOSSQDVO.cjs.map → chunk-CSNOYIB4.cjs.map} +1 -1
  83. package/dist/{chunk-HEV35TGT.js → chunk-DI6VC62F.js} +13 -4
  84. package/dist/chunk-DI6VC62F.js.map +1 -0
  85. package/dist/{chunk-2QGYQBS2.cjs → chunk-DWUDZ66O.cjs} +10 -10
  86. package/dist/{chunk-2QGYQBS2.cjs.map → chunk-DWUDZ66O.cjs.map} +1 -1
  87. package/dist/{chunk-ZDKTPBGV.js → chunk-EDLKIQRI.js} +4 -4
  88. package/dist/{chunk-ZDKTPBGV.js.map → chunk-EDLKIQRI.js.map} +1 -1
  89. package/dist/chunk-EH3JZJUM.cjs +567 -0
  90. package/dist/chunk-EH3JZJUM.cjs.map +1 -0
  91. package/dist/{chunk-S5TERQVW.js → chunk-FX5ZW6PN.js} +196 -33
  92. package/dist/chunk-FX5ZW6PN.js.map +1 -0
  93. package/dist/{chunk-XVWOYKIK.js → chunk-FZHF5UWR.js} +3 -3
  94. package/dist/{chunk-XVWOYKIK.js.map → chunk-FZHF5UWR.js.map} +1 -1
  95. package/dist/{chunk-BFUOME67.cjs → chunk-G2TLHH6T.cjs} +20 -11
  96. package/dist/chunk-G2TLHH6T.cjs.map +1 -0
  97. package/dist/{chunk-5PRKMB24.cjs → chunk-GHZPZNFC.cjs} +12 -4
  98. package/dist/chunk-GHZPZNFC.cjs.map +1 -0
  99. package/dist/{chunk-ZFMCDJGB.js → chunk-GVYVGGPJ.js} +11 -199
  100. package/dist/chunk-GVYVGGPJ.js.map +1 -0
  101. package/dist/{chunk-SDBBMD4N.js → chunk-H3XP6BAV.js} +3 -3
  102. package/dist/{chunk-SDBBMD4N.js.map → chunk-H3XP6BAV.js.map} +1 -1
  103. package/dist/{chunk-ROR5ZR6A.cjs → chunk-HSEZ7X6Y.cjs} +45 -45
  104. package/dist/{chunk-ROR5ZR6A.cjs.map → chunk-HSEZ7X6Y.cjs.map} +1 -1
  105. package/dist/{chunk-LRQKXRXO.cjs → chunk-HY5BNOUN.cjs} +4 -4
  106. package/dist/{chunk-LRQKXRXO.cjs.map → chunk-HY5BNOUN.cjs.map} +1 -1
  107. package/dist/chunk-HZUB5CON.js +27 -0
  108. package/dist/chunk-HZUB5CON.js.map +1 -0
  109. package/dist/{chunk-MYKHJI2J.js → chunk-I5C6OTKR.js} +3 -3
  110. package/dist/{chunk-MYKHJI2J.js.map → chunk-I5C6OTKR.js.map} +1 -1
  111. package/dist/{chunk-3U5ABFDW.cjs → chunk-IHK5KA2Q.cjs} +31 -28
  112. package/dist/chunk-IHK5KA2Q.cjs.map +1 -0
  113. package/dist/{chunk-26YKDNUD.cjs → chunk-IPRP6TDL.cjs} +12 -10
  114. package/dist/chunk-IPRP6TDL.cjs.map +1 -0
  115. package/dist/{chunk-UGHG7PGX.js → chunk-IRPYOHRC.js} +26 -4
  116. package/dist/chunk-IRPYOHRC.js.map +1 -0
  117. package/dist/{chunk-7UOLHNWC.cjs → chunk-ISKCIQF2.cjs} +20 -20
  118. package/dist/{chunk-7UOLHNWC.cjs.map → chunk-ISKCIQF2.cjs.map} +1 -1
  119. package/dist/{chunk-7LZJNLA5.js → chunk-JG5XIJDY.js} +57 -31
  120. package/dist/chunk-JG5XIJDY.js.map +1 -0
  121. package/dist/{chunk-YYUHLYM2.cjs → chunk-K2XYLVVB.cjs} +134 -133
  122. package/dist/chunk-K2XYLVVB.cjs.map +1 -0
  123. package/dist/{chunk-5K2BKEBD.js → chunk-K46SDNQD.js} +10 -4
  124. package/dist/chunk-K46SDNQD.js.map +1 -0
  125. package/dist/{chunk-TZEGUG6D.cjs → chunk-K6VKTBST.cjs} +4 -4
  126. package/dist/{chunk-TZEGUG6D.cjs.map → chunk-K6VKTBST.cjs.map} +1 -1
  127. package/dist/chunk-KWNWG4RC.cjs +12 -0
  128. package/dist/{chunk-CICO5GXD.cjs.map → chunk-KWNWG4RC.cjs.map} +1 -1
  129. package/dist/{chunk-FQPEMEWX.cjs → chunk-LLVOQOWE.cjs} +80 -32
  130. package/dist/chunk-LLVOQOWE.cjs.map +1 -0
  131. package/dist/{chunk-TQHGE7UC.cjs → chunk-M5MSP3BI.cjs} +18 -10
  132. package/dist/chunk-M5MSP3BI.cjs.map +1 -0
  133. package/dist/{chunk-Z2JCLZFJ.js → chunk-MJPZNEJZ.js} +273 -291
  134. package/dist/chunk-MJPZNEJZ.js.map +1 -0
  135. package/dist/{chunk-TUNPBZY3.cjs → chunk-MM3JHVKZ.cjs} +4 -4
  136. package/dist/{chunk-TUNPBZY3.cjs.map → chunk-MM3JHVKZ.cjs.map} +1 -1
  137. package/dist/{chunk-BRRP76WO.js → chunk-MX7EKQPM.js} +457 -299
  138. package/dist/chunk-MX7EKQPM.js.map +1 -0
  139. package/dist/{chunk-D4QLTJSM.js → chunk-MZ34E2GN.js} +13 -12
  140. package/dist/chunk-MZ34E2GN.js.map +1 -0
  141. package/dist/{chunk-EDN4Y4ZG.cjs → chunk-OJHD3LXJ.cjs} +9 -9
  142. package/dist/{chunk-EDN4Y4ZG.cjs.map → chunk-OJHD3LXJ.cjs.map} +1 -1
  143. package/dist/{chunk-DO7SAMEK.cjs → chunk-ON47CBE4.cjs} +47 -47
  144. package/dist/{chunk-DO7SAMEK.cjs.map → chunk-ON47CBE4.cjs.map} +1 -1
  145. package/dist/{chunk-6LN7FIVU.js → chunk-PALYTHGM.js} +11 -4
  146. package/dist/chunk-PALYTHGM.js.map +1 -0
  147. package/dist/{chunk-YVF2EM7B.js → chunk-R7MRFE5P.js} +3 -3
  148. package/dist/{chunk-YVF2EM7B.js.map → chunk-R7MRFE5P.js.map} +1 -1
  149. package/dist/{chunk-EZEEWCFJ.cjs → chunk-RDP6ZRSM.cjs} +435 -265
  150. package/dist/chunk-RDP6ZRSM.cjs.map +1 -0
  151. package/dist/{chunk-GYEG3ZLZ.cjs → chunk-RJMHU2MG.cjs} +121 -18
  152. package/dist/chunk-RJMHU2MG.cjs.map +1 -0
  153. package/dist/chunk-RWUWTJQY.cjs +30 -0
  154. package/dist/chunk-RWUWTJQY.cjs.map +1 -0
  155. package/dist/{chunk-JPD2CTC3.js → chunk-S33YQEL7.js} +7 -7
  156. package/dist/{chunk-JPD2CTC3.js.map → chunk-S33YQEL7.js.map} +1 -1
  157. package/dist/chunk-S3SDEQMC.js +532 -0
  158. package/dist/chunk-S3SDEQMC.js.map +1 -0
  159. package/dist/{chunk-OI2GQ25X.cjs → chunk-SHC7BCG5.cjs} +7 -7
  160. package/dist/{chunk-OI2GQ25X.cjs.map → chunk-SHC7BCG5.cjs.map} +1 -1
  161. package/dist/{chunk-L3LQNR34.cjs → chunk-TEC24ZDA.cjs} +161 -161
  162. package/dist/{chunk-L3LQNR34.cjs.map → chunk-TEC24ZDA.cjs.map} +1 -1
  163. package/dist/{chunk-HDL2ARHX.cjs → chunk-TP4NJTI3.cjs} +63 -27
  164. package/dist/chunk-TP4NJTI3.cjs.map +1 -0
  165. package/dist/{chunk-UMGZDVOA.cjs → chunk-TTCOPKUL.cjs} +124 -124
  166. package/dist/{chunk-UMGZDVOA.cjs.map → chunk-TTCOPKUL.cjs.map} +1 -1
  167. package/dist/chunk-TUVD4DFR.cjs +1207 -0
  168. package/dist/chunk-TUVD4DFR.cjs.map +1 -0
  169. package/dist/{chunk-UGHQV7MP.cjs → chunk-TYGGUWMS.cjs} +178 -152
  170. package/dist/chunk-TYGGUWMS.cjs.map +1 -0
  171. package/dist/{chunk-WIC7DRXW.js → chunk-U3Z7XKAG.js} +7 -7
  172. package/dist/{chunk-WIC7DRXW.js.map → chunk-U3Z7XKAG.js.map} +1 -1
  173. package/dist/{chunk-NACVVDWB.js → chunk-U5EL6JUV.js} +10 -10
  174. package/dist/{chunk-NACVVDWB.js.map → chunk-U5EL6JUV.js.map} +1 -1
  175. package/dist/{chunk-OMZ37BM2.js → chunk-V76FGHY3.js} +5 -5
  176. package/dist/{chunk-OMZ37BM2.js.map → chunk-V76FGHY3.js.map} +1 -1
  177. package/dist/{chunk-6NGW27EO.cjs → chunk-VLBTRXA2.cjs} +10 -10
  178. package/dist/{chunk-6NGW27EO.cjs.map → chunk-VLBTRXA2.cjs.map} +1 -1
  179. package/dist/chunk-VTJVMP4I.js +1182 -0
  180. package/dist/chunk-VTJVMP4I.js.map +1 -0
  181. package/dist/{chunk-QTD6HX4O.js → chunk-W5SOCUBL.js} +5 -5
  182. package/dist/{chunk-QTD6HX4O.js.map → chunk-W5SOCUBL.js.map} +1 -1
  183. package/dist/{chunk-SR725PWF.cjs → chunk-WCLMKNQE.cjs} +1750 -1592
  184. package/dist/chunk-WCLMKNQE.cjs.map +1 -0
  185. package/dist/{chunk-2O4PCIZ6.cjs → chunk-WK23PGTP.cjs} +13 -13
  186. package/dist/{chunk-2O4PCIZ6.cjs.map → chunk-WK23PGTP.cjs.map} +1 -1
  187. package/dist/{chunk-KKBDXCLQ.js → chunk-WQBAQZHR.js} +4 -4
  188. package/dist/{chunk-KKBDXCLQ.js.map → chunk-WQBAQZHR.js.map} +1 -1
  189. package/dist/{chunk-MRDBBHIZ.cjs → chunk-X4GDXBOP.cjs} +2 -2
  190. package/dist/chunk-X4GDXBOP.cjs.map +1 -0
  191. package/dist/{chunk-3QNZ5SAJ.cjs → chunk-XMY2SXOH.cjs} +437 -455
  192. package/dist/chunk-XMY2SXOH.cjs.map +1 -0
  193. package/dist/{chunk-D5R42W5D.js → chunk-XZW2CTNO.js} +115 -12
  194. package/dist/chunk-XZW2CTNO.js.map +1 -0
  195. package/dist/{chunk-NVY5CJFP.js → chunk-Y55DLLEG.js} +9 -6
  196. package/dist/chunk-Y55DLLEG.js.map +1 -0
  197. package/dist/chunk-YA36ABIL.js +174 -0
  198. package/dist/chunk-YA36ABIL.js.map +1 -0
  199. package/dist/{chunk-ZLONH2UD.js → chunk-YDEJQWOL.js} +2 -2
  200. package/dist/chunk-YDEJQWOL.js.map +1 -0
  201. package/dist/{chunk-JONXFAPO.js → chunk-ZAQUKCUC.js} +5 -5
  202. package/dist/{chunk-JONXFAPO.js.map → chunk-ZAQUKCUC.js.map} +1 -1
  203. package/dist/{chunk-SIT26LAZ.cjs → chunk-ZBFZGLZE.cjs} +29 -5
  204. package/dist/chunk-ZBFZGLZE.cjs.map +1 -0
  205. package/dist/{chunk-P6YLZTRE.js → chunk-ZRJTM7MT.js} +3 -3
  206. package/dist/{chunk-P6YLZTRE.js.map → chunk-ZRJTM7MT.js.map} +1 -1
  207. package/dist/core/index.cjs +29 -28
  208. package/dist/core/index.d.cts +4 -4
  209. package/dist/core/index.d.ts +4 -4
  210. package/dist/core/index.js +9 -8
  211. package/dist/{ddl-D_oW-EVO.d.ts → ddl-B49O7dB_.d.ts} +3 -3
  212. package/dist/{ddl-BL1NZLMY.d.cts → ddl-DcZG660s.d.cts} +3 -3
  213. package/dist/graph-extension/index.cjs +21 -20
  214. package/dist/graph-extension/index.d.cts +4 -4
  215. package/dist/graph-extension/index.d.ts +4 -4
  216. package/dist/graph-extension/index.js +5 -4
  217. package/dist/graph-merge/index.cjs +305 -303
  218. package/dist/graph-merge/index.cjs.map +1 -1
  219. package/dist/graph-merge/index.d.cts +9 -9
  220. package/dist/graph-merge/index.d.ts +9 -9
  221. package/dist/graph-merge/index.js +29 -27
  222. package/dist/graph-merge/index.js.map +1 -1
  223. package/dist/{index-D7d1u2gr.d.ts → index-B0PrmE3K.d.cts} +16 -2
  224. package/dist/{index-COs_z6nV.d.cts → index-CwcXsL5R.d.ts} +16 -2
  225. package/dist/index.cjs +223 -222
  226. package/dist/index.cjs.map +1 -1
  227. package/dist/index.d.cts +12 -12
  228. package/dist/index.d.ts +12 -12
  229. package/dist/index.js +37 -36
  230. package/dist/index.js.map +1 -1
  231. package/dist/indexes/index.cjs +13 -13
  232. package/dist/indexes/index.d.cts +4 -4
  233. package/dist/indexes/index.d.ts +4 -4
  234. package/dist/indexes/index.js +6 -6
  235. package/dist/{ingestion-import-target-dNeL7iAv.d.ts → ingestion-import-target-CI8OWIkM.d.ts} +1 -1
  236. package/dist/{ingestion-import-target-XPxZYw89.d.cts → ingestion-import-target-DCpfM1PX.d.cts} +1 -1
  237. package/dist/interchange/index.cjs +55 -54
  238. package/dist/interchange/index.cjs.map +1 -1
  239. package/dist/interchange/index.d.cts +19 -8
  240. package/dist/interchange/index.d.ts +19 -8
  241. package/dist/interchange/index.js +19 -18
  242. package/dist/interchange/index.js.map +1 -1
  243. package/dist/{manager-D9eRT_ns.d.ts → manager-Cfg1ENj1.d.ts} +30 -2
  244. package/dist/{manager-CYaff3n3.d.cts → manager-D348fa6W.d.cts} +30 -2
  245. package/dist/{materialize-indexes-DJ3ykH59.d.ts → materialize-indexes-C9GG3O3C.d.ts} +1 -1
  246. package/dist/{materialize-indexes-DTtAnvfY.d.cts → materialize-indexes-CrSiW_lT.d.cts} +1 -1
  247. package/dist/{postgres-CcL4bAHS.d.ts → postgres-CH1kkM5J.d.cts} +279 -2
  248. package/dist/{postgres-DMj39MEu.d.cts → postgres-UStOycLI.d.ts} +279 -2
  249. package/dist/profiler/index.d.cts +9 -9
  250. package/dist/profiler/index.d.ts +9 -9
  251. package/dist/provenance/index.cjs +46 -44
  252. package/dist/provenance/index.cjs.map +1 -1
  253. package/dist/provenance/index.d.cts +7 -7
  254. package/dist/provenance/index.d.ts +7 -7
  255. package/dist/provenance/index.js +12 -10
  256. package/dist/provenance/index.js.map +1 -1
  257. package/dist/{repair-validity-windows-DlUSqwCg.d.ts → repair-validity-windows-BtOEe2pS.d.ts} +2 -2
  258. package/dist/{repair-validity-windows-BFNZvd_H.d.cts → repair-validity-windows-aWX7VNvv.d.cts} +2 -2
  259. package/dist/schema/index.cjs +46 -46
  260. package/dist/schema/index.d.cts +6 -6
  261. package/dist/schema/index.d.ts +6 -6
  262. package/dist/schema/index.js +19 -19
  263. package/dist/{searchable-DHJMh_nj.d.cts → searchable-C8-RrL3l.d.cts} +1 -1
  264. package/dist/{searchable-bpE1bBfc.d.ts → searchable-z4BiFfHI.d.ts} +1 -1
  265. package/dist/{sqlite-YppHrNFb.d.cts → sqlite-Cyx9j9o6.d.cts} +309 -2
  266. package/dist/{sqlite-D7Oz0SQh.d.ts → sqlite-axLw5Lo5.d.ts} +309 -2
  267. package/dist/{store-bphCSo7z.d.cts → store-CTfQ9taw.d.ts} +102 -13
  268. package/dist/{store-DRrFCx5x.d.ts → store-DR9J7JVB.d.cts} +102 -13
  269. package/dist/{temporal-5GqpYCk2.d.cts → temporal-B4Ky4wzh.d.cts} +1 -1
  270. package/dist/{temporal-CbnLzTmM.d.ts → temporal-CBOrERz5.d.ts} +1 -1
  271. package/dist/{types-CXAhpW-c.d.cts → types-BE921wRl.d.cts} +1 -1
  272. package/dist/{types-Bx74kaTt.d.ts → types-BScHXVM7.d.ts} +1 -1
  273. package/dist/{types-BqFZTQmV.d.cts → types-CWg4dTjj.d.cts} +257 -6
  274. package/dist/{types-BqFZTQmV.d.ts → types-CWg4dTjj.d.ts} +257 -6
  275. package/dist/{where-O-k2wgYm.d.ts → where-BWXUPV3C.d.ts} +1 -1
  276. package/dist/{where-DI_Fqz-X.d.cts → where-CNtx1aLc.d.cts} +1 -1
  277. package/package.json +3 -2
  278. package/dist/chunk-26YKDNUD.cjs.map +0 -1
  279. package/dist/chunk-3G5W2U2L.cjs.map +0 -1
  280. package/dist/chunk-3KOY4FH3.cjs +0 -934
  281. package/dist/chunk-3KOY4FH3.cjs.map +0 -1
  282. package/dist/chunk-3QNZ5SAJ.cjs.map +0 -1
  283. package/dist/chunk-3U5ABFDW.cjs.map +0 -1
  284. package/dist/chunk-5K2BKEBD.js.map +0 -1
  285. package/dist/chunk-5PRKMB24.cjs.map +0 -1
  286. package/dist/chunk-6LN7FIVU.js.map +0 -1
  287. package/dist/chunk-6SWPJEYN.js.map +0 -1
  288. package/dist/chunk-7LZJNLA5.js.map +0 -1
  289. package/dist/chunk-BFUOME67.cjs.map +0 -1
  290. package/dist/chunk-BRRP76WO.js.map +0 -1
  291. package/dist/chunk-CICO5GXD.cjs +0 -12
  292. package/dist/chunk-D4QLTJSM.js.map +0 -1
  293. package/dist/chunk-D5R42W5D.js.map +0 -1
  294. package/dist/chunk-EZEEWCFJ.cjs.map +0 -1
  295. package/dist/chunk-FA2AFWLP.cjs +0 -167
  296. package/dist/chunk-FA2AFWLP.cjs.map +0 -1
  297. package/dist/chunk-FQPEMEWX.cjs.map +0 -1
  298. package/dist/chunk-GLHXM7C4.js.map +0 -1
  299. package/dist/chunk-GYEG3ZLZ.cjs.map +0 -1
  300. package/dist/chunk-HDL2ARHX.cjs.map +0 -1
  301. package/dist/chunk-HEV35TGT.js.map +0 -1
  302. package/dist/chunk-I4GAZH5Z.js +0 -913
  303. package/dist/chunk-I4GAZH5Z.js.map +0 -1
  304. package/dist/chunk-JB6T4GLL.cjs.map +0 -1
  305. package/dist/chunk-JBQQ7THH.js +0 -20
  306. package/dist/chunk-JBQQ7THH.js.map +0 -1
  307. package/dist/chunk-JFRT7S3B.cjs.map +0 -1
  308. package/dist/chunk-KF6K7TGH.js.map +0 -1
  309. package/dist/chunk-LTXQOEIC.js.map +0 -1
  310. package/dist/chunk-MKJ4KXL5.cjs +0 -12
  311. package/dist/chunk-MRDBBHIZ.cjs.map +0 -1
  312. package/dist/chunk-NVY5CJFP.js.map +0 -1
  313. package/dist/chunk-PWLJ77UV.cjs +0 -23
  314. package/dist/chunk-PWLJ77UV.cjs.map +0 -1
  315. package/dist/chunk-S5TERQVW.js.map +0 -1
  316. package/dist/chunk-SHFBB23Q.js.map +0 -1
  317. package/dist/chunk-SIT26LAZ.cjs.map +0 -1
  318. package/dist/chunk-SR725PWF.cjs.map +0 -1
  319. package/dist/chunk-TQHGE7UC.cjs.map +0 -1
  320. package/dist/chunk-UGHG7PGX.js.map +0 -1
  321. package/dist/chunk-UGHQV7MP.cjs.map +0 -1
  322. package/dist/chunk-YIURNGXI.js +0 -155
  323. package/dist/chunk-YIURNGXI.js.map +0 -1
  324. package/dist/chunk-YYUHLYM2.cjs.map +0 -1
  325. package/dist/chunk-Z2JCLZFJ.js.map +0 -1
  326. package/dist/chunk-ZFMCDJGB.js.map +0 -1
  327. package/dist/chunk-ZLONH2UD.js.map +0 -1
@@ -1,13 +1,14 @@
1
- import { formatPostgresTimestamp, coerceNumericScore, nowIso } from './chunk-YIURNGXI.js';
2
- import { runtimeStrategyContributions } from './chunk-6SWPJEYN.js';
3
- import { toDrizzleSql } from './chunk-OMZ37BM2.js';
4
- import { sortedReplacer } from './chunk-JBQQ7THH.js';
5
- import { parseDimensionMismatch, deriveBackend, chunk, isMissingTableError, isDuplicatePrimaryKeyError, errorChain } from './chunk-UGHG7PGX.js';
6
- import { resolveStampedValidityLowerBound, resolveStatedValidityLowerBound } from './chunk-5K2BKEBD.js';
1
+ import { formatPostgresTimestamp, coerceNumericScore, nowIso, buildPurgeEdgeClaims, buildTakeOverEdgeClaim, buildLockEdgeClaims, buildHardDeleteUniquesByConcreteKind, buildInsertUniqueBatch, buildInsertUnique, edgePrimaryKeyConstraint, nodePrimaryKeyConstraint, liveNodeIdsSubquery, buildCheckUniqueBatch, buildCheckUnique, buildHardDeleteUniquesByNodeIds, buildHardDeleteUniquesByNode, buildDeleteUnique, quotedColumn, quotedTableName, codePointOrderKey, sqlNull, expectedValidFromPredicate, edgeColumnList, nodeColumnList } from './chunk-S3SDEQMC.js';
2
+ import { runtimeStrategyContributions } from './chunk-6LEOAIIB.js';
3
+ import { toDrizzleSql } from './chunk-V76FGHY3.js';
4
+ import { edgeCardinalityClaimTarget, EDGE_CARDINALITY_SPECS } from './chunk-YA36ABIL.js';
5
+ import { parseDimensionMismatch, deriveBackend, chunk, isMissingTableError, isDuplicatePrimaryKeyError, errorChain, sortedReplacer } from './chunk-IRPYOHRC.js';
6
+ import { isSameClaimOwner } from './chunk-5LKOVCPP.js';
7
+ import { resolveStampedValidityLowerBound, resolveStatedValidityLowerBound } from './chunk-K46SDNQD.js';
7
8
  import { sha256Hex } from './chunk-K34OPSJK.js';
8
- import { buildFulltextGraphDelete, buildForeignFulltextGraphProbe, getDialect } from './chunk-ZDKTPBGV.js';
9
- import { sql as sql$1, asCompiledStatementSql, asCompiledRowsSql, isSqlFragment } from './chunk-3DMMGT6S.js';
10
- import { EmbeddingDimensionChangedError, ConfigurationError, StaleVersionError, MigrationError, SchemaContentConflictError, DatabaseOperationError, UniquenessError, TrustedImportError, ContributionUnavailableError, ContributionRebuildUnsupportedError, StoreNotInitializedError } from './chunk-ZLONH2UD.js';
9
+ import { buildFulltextGraphDelete, buildForeignFulltextGraphProbe, getDialect } from './chunk-EDLKIQRI.js';
10
+ import { sql as sql$1, asCompiledStatementSql, asCompiledRowsSql, isSqlFragment } from './chunk-46UGOVRW.js';
11
+ import { EmbeddingDimensionChangedError, ConfigurationError, StaleVersionError, MigrationError, SchemaContentConflictError, DatabaseOperationError, UniquenessError, TrustedImportError, ContributionUnavailableError, ContributionRebuildUnsupportedError, StoreNotInitializedError } from './chunk-YDEJQWOL.js';
11
12
  import { isPresent } from './chunk-DYATYRY4.js';
12
13
  import { sql, is, getTableName } from 'drizzle-orm';
13
14
 
@@ -1040,66 +1041,6 @@ function buildKindRemovalOnConflictSet(removedAtColumn, paramsRemovedAt) {
1040
1041
  lastError: sql`excluded.${sql.identifier("last_error")}`
1041
1042
  };
1042
1043
  }
1043
- function primaryKeyConstraintNames(relation, keyColumns) {
1044
- return [`${relation}_pkey`, `${relation}_${keyColumns.join("_")}_pk`];
1045
- }
1046
- function nodePrimaryKeyConstraint(nodes) {
1047
- const relation = getTableName(nodes);
1048
- return {
1049
- table: relation,
1050
- constraintNames: primaryKeyConstraintNames(relation, [
1051
- nodes.graphId.name,
1052
- nodes.kind.name,
1053
- nodes.id.name
1054
- ])
1055
- };
1056
- }
1057
- function edgePrimaryKeyConstraint(edges) {
1058
- const relation = getTableName(edges);
1059
- return {
1060
- table: relation,
1061
- constraintNames: primaryKeyConstraintNames(relation, [
1062
- edges.graphId.name,
1063
- edges.id.name
1064
- ])
1065
- };
1066
- }
1067
- function sqlNull(value) {
1068
- return value ?? sql.raw("NULL");
1069
- }
1070
- function expectedValidFromPredicate(column, expected) {
1071
- if (expected === void 0) return sql.empty();
1072
- if (expected === null) return sql` AND ${column} IS NULL`;
1073
- return sql` AND ${column} = ${expected}`;
1074
- }
1075
- function quotedColumn(column) {
1076
- return sql.raw(`"${column.name.replaceAll('"', '""')}"`);
1077
- }
1078
- function quotedTableName(tableName) {
1079
- return sql.raw(`"${tableName.replaceAll('"', '""')}"`);
1080
- }
1081
- var CODE_POINT_ORDER_BUILDERS = {
1082
- postgres: (value) => sql`${value} COLLATE "C"`,
1083
- sqlite: (value) => value
1084
- };
1085
- function codePointOrderKey(column, dialect) {
1086
- return CODE_POINT_ORDER_BUILDERS[dialect](column);
1087
- }
1088
- function liveNodeIdsSubquery(nodes, graphId, nodeKind, nowIso2) {
1089
- return sql`SELECT ${nodes.id} AS node_id FROM ${nodes} WHERE ${nodes.graphId} = ${graphId} AND ${nodes.kind} = ${nodeKind} AND ${nodes.deletedAt} IS NULL AND (${nodes.validFrom} IS NULL OR ${nodes.validFrom} <= ${nowIso2}) AND (${nodes.validTo} IS NULL OR ${nodes.validTo} > ${nowIso2})`;
1090
- }
1091
- function nodeColumnList(nodes) {
1092
- return sql.raw(
1093
- `"${nodes.graphId.name}", "${nodes.kind.name}", "${nodes.id.name}", "${nodes.props.name}", "${nodes.version.name}", "${nodes.validFrom.name}", "${nodes.validTo.name}", "${nodes.createdAt.name}", "${nodes.updatedAt.name}"`
1094
- );
1095
- }
1096
- function edgeColumnList(edges) {
1097
- return sql.raw(
1098
- `"${edges.graphId.name}", "${edges.id.name}", "${edges.kind.name}", "${edges.fromKind.name}", "${edges.fromId.name}", "${edges.toKind.name}", "${edges.toId.name}", "${edges.props.name}", "${edges.validFrom.name}", "${edges.validTo.name}", "${edges.createdAt.name}", "${edges.updatedAt.name}"`
1099
- );
1100
- }
1101
-
1102
- // src/backend/drizzle/operations/hybrid.ts
1103
1044
  function nodeIdOrderKey(dialect) {
1104
1045
  return codePointOrderKey(sql.raw("node_id"), dialect);
1105
1046
  }
@@ -1247,6 +1188,17 @@ function buildClearGraph(tables, graphId) {
1247
1188
  {
1248
1189
  query: sql`DELETE FROM ${tables.uniques} WHERE ${tables.uniques.graphId} = ${graphId}`
1249
1190
  },
1191
+ // Edge claims name the edges they are held by, so they are cleared
1192
+ // BEFORE the edges — the same ordering `uniques` gets against `nodes`.
1193
+ // Tolerates absence for the reason the recorded relations do: bootstrap DDL
1194
+ // runs only on first boot, so a database initialized before this relation
1195
+ // existed has no such table, and clearing a graph must not become the
1196
+ // operation that fails on it.
1197
+ {
1198
+ query: sql`DELETE FROM ${tables.edgeClaims} WHERE ${tables.edgeClaims.graphId} = ${graphId}`,
1199
+ ignoreMissingTable: true,
1200
+ requiredTableName: getTableName(tables.edgeClaims)
1201
+ },
1250
1202
  {
1251
1203
  query: sql`DELETE FROM ${tables.edges} WHERE ${tables.edges.graphId} = ${graphId}`
1252
1204
  },
@@ -1507,6 +1459,85 @@ function buildCountEdgesByKind(tables, params) {
1507
1459
  WHERE ${whereClause}
1508
1460
  `;
1509
1461
  }
1462
+ var PEER = "peer";
1463
+ function qualified2(relation, column) {
1464
+ return sql.raw(`"${relation}"."${column.name}"`);
1465
+ }
1466
+ function inList(values) {
1467
+ return sql.join(
1468
+ values.map((value) => sql`${value}`),
1469
+ sql`, `
1470
+ );
1471
+ }
1472
+ function buildContendedUniqueRowAudit(tables, graphId, constraintNames) {
1473
+ const { uniques } = tables;
1474
+ const relation = getTableName(uniques);
1475
+ return sql`
1476
+ SELECT
1477
+ ${quotedColumn(uniques.nodeKind)} as node_kind,
1478
+ ${quotedColumn(uniques.constraintName)} as constraint_name,
1479
+ ${quotedColumn(uniques.key)} as key,
1480
+ ${quotedColumn(uniques.concreteKind)} as concrete_kind,
1481
+ ${quotedColumn(uniques.nodeId)} as node_id
1482
+ FROM ${uniques}
1483
+ WHERE ${qualified2(relation, uniques.graphId)} = ${graphId}
1484
+ AND ${qualified2(relation, uniques.constraintName)} IN (${inList(constraintNames)})
1485
+ AND ${qualified2(relation, uniques.deletedAt)} IS NULL
1486
+ AND EXISTS (
1487
+ SELECT 1 FROM ${uniques} AS ${sql.raw(`"${PEER}"`)}
1488
+ WHERE ${qualified2(PEER, uniques.graphId)} = ${qualified2(relation, uniques.graphId)}
1489
+ AND ${qualified2(PEER, uniques.constraintName)} = ${qualified2(relation, uniques.constraintName)}
1490
+ AND ${qualified2(PEER, uniques.key)} = ${qualified2(relation, uniques.key)}
1491
+ AND ${qualified2(PEER, uniques.deletedAt)} IS NULL
1492
+ AND ${qualified2(PEER, uniques.nodeKind)} <> ${qualified2(relation, uniques.nodeKind)}
1493
+ )
1494
+ `;
1495
+ }
1496
+ function buildContendedEdgeRowAudit(tables, graphId, cardinality, edgeKinds) {
1497
+ const { edges } = tables;
1498
+ const relation = getTableName(edges);
1499
+ const spec = EDGE_CARDINALITY_SPECS[cardinality];
1500
+ const activeOnly = spec.holderLiveness === "liveAndActive" ? sql` AND ${qualified2(relation, edges.validTo)} IS NULL` : sql.empty();
1501
+ const peerActiveOnly = spec.holderLiveness === "liveAndActive" ? sql` AND ${qualified2(PEER, edges.validTo)} IS NULL` : sql.empty();
1502
+ const peerToEndpoints = spec.keyShape === "fromAndTo" ? sql`
1503
+ AND ${qualified2(PEER, edges.toKind)} = ${qualified2(relation, edges.toKind)}
1504
+ AND ${qualified2(PEER, edges.toId)} = ${qualified2(relation, edges.toId)}
1505
+ ` : sql.empty();
1506
+ return sql`
1507
+ SELECT
1508
+ ${quotedColumn(edges.id)} as edge_id,
1509
+ ${quotedColumn(edges.kind)} as edge_kind,
1510
+ ${quotedColumn(edges.fromKind)} as from_kind,
1511
+ ${quotedColumn(edges.fromId)} as from_id,
1512
+ ${quotedColumn(edges.toKind)} as to_kind,
1513
+ ${quotedColumn(edges.toId)} as to_id
1514
+ FROM ${edges}
1515
+ WHERE ${qualified2(relation, edges.graphId)} = ${graphId}
1516
+ AND ${qualified2(relation, edges.kind)} IN (${inList(edgeKinds)})
1517
+ AND ${qualified2(relation, edges.deletedAt)} IS NULL${activeOnly}
1518
+ AND EXISTS (
1519
+ SELECT 1 FROM ${edges} AS ${sql.raw(`"${PEER}"`)}
1520
+ WHERE ${qualified2(PEER, edges.graphId)} = ${qualified2(relation, edges.graphId)}
1521
+ AND ${qualified2(PEER, edges.kind)} = ${qualified2(relation, edges.kind)}
1522
+ AND ${qualified2(PEER, edges.fromKind)} = ${qualified2(relation, edges.fromKind)}
1523
+ AND ${qualified2(PEER, edges.fromId)} = ${qualified2(relation, edges.fromId)}${peerToEndpoints}
1524
+ AND ${qualified2(PEER, edges.deletedAt)} IS NULL${peerActiveOnly}
1525
+ AND ${qualified2(PEER, edges.id)} <> ${qualified2(relation, edges.id)}
1526
+ )
1527
+ `;
1528
+ }
1529
+ function buildDisjointOverlapAudit(tables, graphId, kinds) {
1530
+ const { nodes } = tables;
1531
+ const relation = getTableName(nodes);
1532
+ const liveIdsOfKind = (kind) => sql`
1533
+ SELECT ${quotedColumn(nodes.id)} as node_id
1534
+ FROM ${nodes}
1535
+ WHERE ${qualified2(relation, nodes.graphId)} = ${graphId}
1536
+ AND ${qualified2(relation, nodes.kind)} = ${kind}
1537
+ AND ${qualified2(relation, nodes.deletedAt)} IS NULL
1538
+ `;
1539
+ return sql`${liveIdsOfKind(kinds[0])} INTERSECT ${liveIdsOfKind(kinds[1])}`;
1540
+ }
1510
1541
  function buildInsertEdge(tables, params, timestamp) {
1511
1542
  const { edges } = tables;
1512
1543
  const propsJson = JSON.stringify(params.props);
@@ -2050,215 +2081,6 @@ function buildSetActiveSchema(tables, graphId, version, dialect = "sqlite") {
2050
2081
  `;
2051
2082
  return { deactivateAll, activateVersion };
2052
2083
  }
2053
- function buildInsertUniqueSqlite(tables, params) {
2054
- const { uniques } = tables;
2055
- const columns = sql.raw(
2056
- `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}", "${uniques.nodeId.name}", "${uniques.concreteKind.name}", "${uniques.deletedAt.name}"`
2057
- );
2058
- const conflictColumns = sql.raw(
2059
- `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}"`
2060
- );
2061
- return sql`
2062
- INSERT INTO ${uniques} (${columns})
2063
- VALUES (
2064
- ${params.graphId}, ${params.nodeKind}, ${params.constraintName},
2065
- ${params.key}, ${params.nodeId}, ${params.concreteKind}, ${sql.raw("NULL")}
2066
- )
2067
- ON CONFLICT (${conflictColumns})
2068
- DO UPDATE SET
2069
- ${quotedColumn(uniques.nodeId)} = CASE
2070
- WHEN ${quotedColumn(uniques.nodeId)} = ${params.nodeId} THEN ${params.nodeId}
2071
- WHEN ${quotedColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.nodeId}
2072
- ELSE ${quotedColumn(uniques.nodeId)}
2073
- END,
2074
- ${quotedColumn(uniques.concreteKind)} = CASE
2075
- WHEN ${quotedColumn(uniques.nodeId)} = ${params.nodeId} THEN ${params.concreteKind}
2076
- WHEN ${quotedColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.concreteKind}
2077
- ELSE ${quotedColumn(uniques.concreteKind)}
2078
- END,
2079
- ${quotedColumn(uniques.deletedAt)} = CASE
2080
- WHEN ${quotedColumn(uniques.nodeId)} = ${params.nodeId} THEN NULL
2081
- WHEN ${quotedColumn(uniques.deletedAt)} IS NOT NULL THEN NULL
2082
- ELSE ${quotedColumn(uniques.deletedAt)}
2083
- END
2084
- RETURNING ${quotedColumn(uniques.nodeId)} as node_id
2085
- `;
2086
- }
2087
- function buildInsertUniquePostgres(tables, params) {
2088
- const { uniques } = tables;
2089
- const columns = sql.raw(
2090
- `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}", "${uniques.nodeId.name}", "${uniques.concreteKind.name}", "${uniques.deletedAt.name}"`
2091
- );
2092
- const conflictColumns = sql.raw(
2093
- `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}"`
2094
- );
2095
- const tableName = getTableName(uniques);
2096
- const existingColumn = (column) => sql.raw(`"${tableName}"."${column.name}"`);
2097
- return sql`
2098
- INSERT INTO ${uniques} (${columns})
2099
- VALUES (
2100
- ${params.graphId}, ${params.nodeKind}, ${params.constraintName},
2101
- ${params.key}, ${params.nodeId}, ${params.concreteKind}, ${sql.raw("NULL")}
2102
- )
2103
- ON CONFLICT (${conflictColumns})
2104
- DO UPDATE SET
2105
- ${quotedColumn(uniques.nodeId)} = CASE
2106
- WHEN ${existingColumn(uniques.nodeId)} = ${params.nodeId} THEN ${params.nodeId}
2107
- WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.nodeId}
2108
- ELSE ${existingColumn(uniques.nodeId)}
2109
- END,
2110
- ${quotedColumn(uniques.concreteKind)} = CASE
2111
- WHEN ${existingColumn(uniques.nodeId)} = ${params.nodeId} THEN ${params.concreteKind}
2112
- WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${params.concreteKind}
2113
- ELSE ${existingColumn(uniques.concreteKind)}
2114
- END,
2115
- ${quotedColumn(uniques.deletedAt)} = CASE
2116
- WHEN ${existingColumn(uniques.nodeId)} = ${params.nodeId} THEN NULL
2117
- WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN NULL
2118
- ELSE ${existingColumn(uniques.deletedAt)}
2119
- END
2120
- RETURNING ${quotedColumn(uniques.nodeId)} as node_id
2121
- `;
2122
- }
2123
- var UNIQUE_INSERT_BUILDERS = {
2124
- postgres: buildInsertUniquePostgres,
2125
- sqlite: buildInsertUniqueSqlite
2126
- };
2127
- function buildInsertUnique(tables, dialect, params) {
2128
- const builder = UNIQUE_INSERT_BUILDERS[dialect];
2129
- return builder(tables, params);
2130
- }
2131
- function buildInsertUniqueBatch(tables, dialect, entries) {
2132
- const { uniques } = tables;
2133
- const columns = sql.raw(
2134
- `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}", "${uniques.nodeId.name}", "${uniques.concreteKind.name}", "${uniques.deletedAt.name}"`
2135
- );
2136
- const conflictColumns = sql.raw(
2137
- `"${uniques.graphId.name}", "${uniques.nodeKind.name}", "${uniques.constraintName.name}", "${uniques.key.name}"`
2138
- );
2139
- const tableName = getTableName(uniques);
2140
- const existingColumn = (column) => {
2141
- switch (dialect) {
2142
- case "postgres": {
2143
- return sql.raw(`"${tableName}"."${column.name}"`);
2144
- }
2145
- case "sqlite": {
2146
- return sql.raw(`"${column.name}"`);
2147
- }
2148
- default: {
2149
- return dialect;
2150
- }
2151
- }
2152
- };
2153
- const excludedColumn = (column) => sql.raw(`excluded."${column.name}"`);
2154
- const valueRows = sql.join(
2155
- entries.map(
2156
- (params) => sql`(${params.graphId}, ${params.nodeKind}, ${params.constraintName}, ${params.key}, ${params.nodeId}, ${params.concreteKind}, ${sql.raw("NULL")})`
2157
- ),
2158
- sql`, `
2159
- );
2160
- return sql`
2161
- INSERT INTO ${uniques} (${columns})
2162
- VALUES ${valueRows}
2163
- ON CONFLICT (${conflictColumns})
2164
- DO UPDATE SET
2165
- ${quotedColumn(uniques.nodeId)} = CASE
2166
- WHEN ${existingColumn(uniques.nodeId)} = ${excludedColumn(uniques.nodeId)} THEN ${excludedColumn(uniques.nodeId)}
2167
- WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${excludedColumn(uniques.nodeId)}
2168
- ELSE ${existingColumn(uniques.nodeId)}
2169
- END,
2170
- ${quotedColumn(uniques.concreteKind)} = CASE
2171
- WHEN ${existingColumn(uniques.nodeId)} = ${excludedColumn(uniques.nodeId)} THEN ${excludedColumn(uniques.concreteKind)}
2172
- WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN ${excludedColumn(uniques.concreteKind)}
2173
- ELSE ${existingColumn(uniques.concreteKind)}
2174
- END,
2175
- ${quotedColumn(uniques.deletedAt)} = CASE
2176
- WHEN ${existingColumn(uniques.nodeId)} = ${excludedColumn(uniques.nodeId)} THEN NULL
2177
- WHEN ${existingColumn(uniques.deletedAt)} IS NOT NULL THEN NULL
2178
- ELSE ${existingColumn(uniques.deletedAt)}
2179
- END
2180
- RETURNING
2181
- ${quotedColumn(uniques.nodeKind)} as node_kind,
2182
- ${quotedColumn(uniques.constraintName)} as constraint_name,
2183
- ${quotedColumn(uniques.key)} as key,
2184
- ${quotedColumn(uniques.nodeId)} as node_id
2185
- `;
2186
- }
2187
- function buildDeleteUnique(tables, params, timestamp) {
2188
- const { uniques } = tables;
2189
- return sql`
2190
- UPDATE ${uniques}
2191
- SET ${quotedColumn(uniques.deletedAt)} = ${timestamp}
2192
- WHERE ${uniques.graphId} = ${params.graphId}
2193
- AND ${uniques.nodeKind} = ${params.nodeKind}
2194
- AND ${uniques.constraintName} = ${params.constraintName}
2195
- AND ${uniques.key} = ${params.key}
2196
- AND ${uniques.deletedAt} IS NULL
2197
- `;
2198
- }
2199
- function buildHardDeleteUniquesByNode(tables, graphId, concreteKind, nodeId) {
2200
- return buildHardDeleteUniquesByNodeIds(tables, {
2201
- graphId,
2202
- concreteKind,
2203
- nodeIds: [nodeId]
2204
- });
2205
- }
2206
- function buildHardDeleteUniquesByNodeIds(tables, params) {
2207
- const { uniques } = tables;
2208
- return sql`
2209
- DELETE FROM ${uniques}
2210
- WHERE ${uniques.graphId} = ${params.graphId}
2211
- AND ${uniques.concreteKind} = ${params.concreteKind}
2212
- AND ${uniques.nodeId} IN (${sql.join(
2213
- params.nodeIds.map((nodeId) => sql`${nodeId}`),
2214
- sql`, `
2215
- )})
2216
- `;
2217
- }
2218
- function buildCheckUnique(tables, params) {
2219
- const { uniques } = tables;
2220
- if (params.includeDeleted) {
2221
- return sql`
2222
- SELECT * FROM ${uniques}
2223
- WHERE ${uniques.graphId} = ${params.graphId}
2224
- AND ${uniques.nodeKind} = ${params.nodeKind}
2225
- AND ${uniques.constraintName} = ${params.constraintName}
2226
- AND ${uniques.key} = ${params.key}
2227
- `;
2228
- }
2229
- return sql`
2230
- SELECT * FROM ${uniques}
2231
- WHERE ${uniques.graphId} = ${params.graphId}
2232
- AND ${uniques.nodeKind} = ${params.nodeKind}
2233
- AND ${uniques.constraintName} = ${params.constraintName}
2234
- AND ${uniques.key} = ${params.key}
2235
- AND ${uniques.deletedAt} IS NULL
2236
- `;
2237
- }
2238
- function buildCheckUniqueBatch(tables, params) {
2239
- const { uniques } = tables;
2240
- const keyPlaceholders = sql.join(
2241
- params.keys.map((key) => sql`${key}`),
2242
- sql`, `
2243
- );
2244
- if (params.includeDeleted) {
2245
- return sql`
2246
- SELECT * FROM ${uniques}
2247
- WHERE ${uniques.graphId} = ${params.graphId}
2248
- AND ${uniques.nodeKind} = ${params.nodeKind}
2249
- AND ${uniques.constraintName} = ${params.constraintName}
2250
- AND ${uniques.key} IN (${keyPlaceholders})
2251
- `;
2252
- }
2253
- return sql`
2254
- SELECT * FROM ${uniques}
2255
- WHERE ${uniques.graphId} = ${params.graphId}
2256
- AND ${uniques.nodeKind} = ${params.nodeKind}
2257
- AND ${uniques.constraintName} = ${params.constraintName}
2258
- AND ${uniques.key} IN (${keyPlaceholders})
2259
- AND ${uniques.deletedAt} IS NULL
2260
- `;
2261
- }
2262
2084
 
2263
2085
  // src/backend/drizzle/operations/strategy.ts
2264
2086
  function nullableText(value) {
@@ -2431,6 +2253,35 @@ function createCommonOperationStrategy(tables, dialect, fulltextStrategy) {
2431
2253
  buildInsertUniqueBatch(entries) {
2432
2254
  return buildInsertUniqueBatch(tables, dialect, entries);
2433
2255
  },
2256
+ buildHardDeleteUniquesByConcreteKind(params) {
2257
+ return buildHardDeleteUniquesByConcreteKind(
2258
+ getTableName(tables.uniques),
2259
+ params
2260
+ );
2261
+ },
2262
+ buildLockEdgeClaims(entries, timestamp) {
2263
+ return buildLockEdgeClaims(tables, entries, timestamp);
2264
+ },
2265
+ buildTakeOverEdgeClaim(params, timestamp) {
2266
+ return buildTakeOverEdgeClaim(tables, params, timestamp);
2267
+ },
2268
+ buildPurgeEdgeClaims(params) {
2269
+ return buildPurgeEdgeClaims(tables, params);
2270
+ },
2271
+ buildContendedUniqueRowAudit(graphId, constraintNames) {
2272
+ return buildContendedUniqueRowAudit(tables, graphId, constraintNames);
2273
+ },
2274
+ buildContendedEdgeRowAudit(graphId, cardinality, edgeKinds) {
2275
+ return buildContendedEdgeRowAudit(
2276
+ tables,
2277
+ graphId,
2278
+ cardinality,
2279
+ edgeKinds
2280
+ );
2281
+ },
2282
+ buildDisjointOverlapAudit(graphId, kinds) {
2283
+ return buildDisjointOverlapAudit(tables, graphId, kinds);
2284
+ },
2434
2285
  buildGetActiveSchema(graphId) {
2435
2286
  return buildGetActiveSchema(tables, graphId, dialect);
2436
2287
  },
@@ -2493,6 +2344,9 @@ function createSqliteOperationStrategy(tables, fulltextStrategy) {
2493
2344
  function createPostgresOperationStrategy(tables, fulltextStrategy) {
2494
2345
  return createCommonOperationStrategy(tables, "postgres", fulltextStrategy);
2495
2346
  }
2347
+ function claimOwnerOf(params) {
2348
+ return { concreteKind: params.concreteKind, nodeId: params.nodeId };
2349
+ }
2496
2350
  var DRIZZLE_DIALECT_LABELS = {
2497
2351
  postgres: "Postgres",
2498
2352
  sqlite: "SQLite"
@@ -2594,6 +2448,50 @@ function createCommonOperationBackend(options) {
2594
2448
  }
2595
2449
  await execution.execRun(statement.query);
2596
2450
  }
2451
+ async function claimEdgeCardinalityEntries(entries) {
2452
+ if (entries.length === 0) return [];
2453
+ const targetKey = (entry) => {
2454
+ const target = edgeCardinalityClaimTarget(entry);
2455
+ return `${target.axis}\0${target.key}`;
2456
+ };
2457
+ const seen = /* @__PURE__ */ new Set();
2458
+ for (const entry of entries) {
2459
+ const key = targetKey(entry);
2460
+ if (seen.has(key)) {
2461
+ throw new DatabaseOperationError(
2462
+ "Two edge claims in one batch name the same cardinality axis and key; a multi-row upsert cannot affect one row twice.",
2463
+ { operation: "insert", entity: "edge" }
2464
+ );
2465
+ }
2466
+ seen.add(key);
2467
+ }
2468
+ const outcomes = /* @__PURE__ */ new Map();
2469
+ for (const chunk2 of chunk(entries, batchConfig.edgeInsertBatchSize)) {
2470
+ const lockQuery = operationStrategy.buildLockEdgeClaims(chunk2, nowIso2());
2471
+ const rows = await execution.execAll(lockQuery);
2472
+ const holderByTarget = new Map(
2473
+ rows.map((row) => [`${row.axis}\0${row.key}`, row.holder_edge_id])
2474
+ );
2475
+ for (const entry of chunk2) {
2476
+ const key = targetKey(entry);
2477
+ const holder = holderByTarget.get(key);
2478
+ if (holder === void 0 || holder === entry.edgeId) {
2479
+ outcomes.set(key, { status: "claimed" });
2480
+ continue;
2481
+ }
2482
+ const takeOver = await execution.execAll(
2483
+ operationStrategy.buildTakeOverEdgeClaim(entry, nowIso2())
2484
+ );
2485
+ outcomes.set(
2486
+ key,
2487
+ takeOver.length > 0 ? { status: "claimed" } : { status: "refused", holderEdgeId: holder }
2488
+ );
2489
+ }
2490
+ }
2491
+ return entries.map(
2492
+ (entry) => outcomes.get(targetKey(entry)) ?? { status: "claimed" }
2493
+ );
2494
+ }
2597
2495
  async function readActiveVersion(graphId) {
2598
2496
  const row = await execution.execGet(
2599
2497
  operationStrategy.buildGetActiveSchema(graphId)
@@ -2976,13 +2874,23 @@ function createCommonOperationBackend(options) {
2976
2874
  async insertUnique(params) {
2977
2875
  const query = operationStrategy.buildInsertUnique(params);
2978
2876
  const result = await execution.execGet(query);
2979
- if (result && result.node_id !== params.nodeId) {
2877
+ if (result && !isSameClaimOwner(
2878
+ { concreteKind: result.concrete_kind, nodeId: result.node_id },
2879
+ claimOwnerOf(params)
2880
+ )) {
2980
2881
  throw new UniquenessError({
2981
2882
  constraintName: params.constraintName,
2982
- kind: params.nodeKind,
2883
+ // The holder's own kind, never `nodeKind`: that column carries the
2884
+ // claim AXIS, which a shared scope folds across kinds, so it need not
2885
+ // be the holder's kind and usually is not.
2886
+ kind: result.concrete_kind,
2983
2887
  existingId: result.node_id,
2984
2888
  newId: params.nodeId,
2985
- fields: []
2889
+ fields: [],
2890
+ // The axis THIS statement attempted — `mapClaimRefusal`'s only way to
2891
+ // tell two disjoint pairs (or two scoped constraints) sharing a key
2892
+ // apart, since `constraintName` alone does not.
2893
+ axis: params.nodeKind
2986
2894
  });
2987
2895
  }
2988
2896
  },
@@ -2996,13 +2904,14 @@ function createCommonOperationBackend(options) {
2996
2904
  byTarget.set(targetKey(entry), entry);
2997
2905
  continue;
2998
2906
  }
2999
- if (existing.nodeId !== entry.nodeId) {
2907
+ if (!isSameClaimOwner(claimOwnerOf(existing), claimOwnerOf(entry))) {
3000
2908
  throw new UniquenessError({
3001
2909
  constraintName: entry.constraintName,
3002
- kind: entry.nodeKind,
2910
+ kind: existing.concreteKind,
3003
2911
  existingId: existing.nodeId,
3004
2912
  newId: entry.nodeId,
3005
- fields: []
2913
+ fields: [],
2914
+ axis: entry.nodeKind
3006
2915
  });
3007
2916
  }
3008
2917
  }
@@ -3016,18 +2925,19 @@ function createCommonOperationBackend(options) {
3016
2925
  const ownerByTarget = new Map(
3017
2926
  rows.map((row) => [
3018
2927
  `${row.node_kind}\0${row.constraint_name}\0${row.key}`,
3019
- row.node_id
2928
+ { concreteKind: row.concrete_kind, nodeId: row.node_id }
3020
2929
  ])
3021
2930
  );
3022
2931
  for (const entry of chunk2) {
3023
2932
  const owner = ownerByTarget.get(targetKey(entry));
3024
- if (owner !== void 0 && owner !== entry.nodeId) {
2933
+ if (owner !== void 0 && !isSameClaimOwner(owner, claimOwnerOf(entry))) {
3025
2934
  throw new UniquenessError({
3026
2935
  constraintName: entry.constraintName,
3027
- kind: entry.nodeKind,
3028
- existingId: owner,
2936
+ kind: owner.concreteKind,
2937
+ existingId: owner.nodeId,
3029
2938
  newId: entry.nodeId,
3030
- fields: []
2939
+ fields: [],
2940
+ axis: entry.nodeKind
3031
2941
  });
3032
2942
  }
3033
2943
  }
@@ -3051,6 +2961,78 @@ function createCommonOperationBackend(options) {
3051
2961
  await execution.execRun(query);
3052
2962
  }
3053
2963
  },
2964
+ async hardDeleteUniquesByConcreteKind(params) {
2965
+ const query = operationStrategy.buildHardDeleteUniquesByConcreteKind(params);
2966
+ await execution.execRun(query);
2967
+ },
2968
+ async claimEdgeCardinality(params) {
2969
+ const [outcome] = await claimEdgeCardinalityEntries([params]);
2970
+ return outcome ?? { status: "claimed" };
2971
+ },
2972
+ claimEdgeCardinalityBatch(entries) {
2973
+ return claimEdgeCardinalityEntries(entries);
2974
+ },
2975
+ async purgeEdgeClaims(params) {
2976
+ const edgeIds = [...new Set(params.edgeIds)];
2977
+ for (const chunk2 of chunk(edgeIds, batchConfig.getEdgesChunkSize)) {
2978
+ const query = operationStrategy.buildPurgeEdgeClaims({
2979
+ ...params,
2980
+ edgeIds: chunk2
2981
+ });
2982
+ await execution.execRun(query);
2983
+ }
2984
+ },
2985
+ async readConstraintFenceViolations(params) {
2986
+ const uniqueRows = params.uniqueConstraintNames.length === 0 ? [] : await execution.execAll(
2987
+ operationStrategy.buildContendedUniqueRowAudit(
2988
+ params.graphId,
2989
+ params.uniqueConstraintNames
2990
+ )
2991
+ );
2992
+ const contendedUniqueRows = uniqueRows.map((row) => ({
2993
+ nodeKind: row.node_kind,
2994
+ constraintName: row.constraint_name,
2995
+ key: row.key,
2996
+ concreteKind: row.concrete_kind,
2997
+ nodeId: row.node_id
2998
+ }));
2999
+ const edgeKindsByCardinality = /* @__PURE__ */ new Map();
3000
+ for (const declaration of params.edgeCardinalities) {
3001
+ const kinds = edgeKindsByCardinality.get(declaration.cardinality) ?? [];
3002
+ kinds.push(declaration.edgeKind);
3003
+ edgeKindsByCardinality.set(declaration.cardinality, kinds);
3004
+ }
3005
+ const contendedEdgeRows = [];
3006
+ for (const [cardinality, edgeKinds] of edgeKindsByCardinality) {
3007
+ const rows = await execution.execAll(
3008
+ operationStrategy.buildContendedEdgeRowAudit(
3009
+ params.graphId,
3010
+ cardinality,
3011
+ edgeKinds
3012
+ )
3013
+ );
3014
+ for (const row of rows) {
3015
+ contendedEdgeRows.push({
3016
+ edgeKind: row.edge_kind,
3017
+ cardinality,
3018
+ edgeId: row.edge_id,
3019
+ fromKind: row.from_kind,
3020
+ fromId: row.from_id,
3021
+ toKind: row.to_kind,
3022
+ toId: row.to_id
3023
+ });
3024
+ }
3025
+ }
3026
+ const disjointOverlaps = [];
3027
+ for (const kinds of params.disjointKindPairs) {
3028
+ const rows = await execution.execAll(
3029
+ operationStrategy.buildDisjointOverlapAudit(params.graphId, kinds)
3030
+ );
3031
+ for (const row of rows)
3032
+ disjointOverlaps.push({ kinds, nodeId: row.node_id });
3033
+ }
3034
+ return { contendedUniqueRows, contendedEdgeRows, disjointOverlaps };
3035
+ },
3054
3036
  async checkUnique(params) {
3055
3037
  const query = operationStrategy.buildCheckUnique(params);
3056
3038
  const row = await execution.execGet(query);
@@ -3453,5 +3435,5 @@ function getOrCreateLru(cache, key, cacheMax, create) {
3453
3435
  }
3454
3436
 
3455
3437
  export { EMBEDDING_UPSERT_PARAM_COUNT, FIND_EDGES_ENDPOINT_FIXED_PARAM_COUNT, POSTGRES_CONTRIBUTION_MAT_TIMESTAMPS, POSTGRES_INDEX_MAT_TIMESTAMPS, POSTGRES_KIND_REMOVAL_TIMESTAMPS, SQLITE_CONTRIBUTION_MAT_TIMESTAMPS, SQLITE_INDEX_MAT_TIMESTAMPS, SQLITE_KIND_REMOVAL_TIMESTAMPS, analyzeImportedTables, assertActiveSchemaVersion, assertAdoptedDialect, assertTrustedImportDatabaseEmpty, buildContributionInsertValues, buildContributionOnConflictSet, buildKindRemovalInsertValues, buildKindRemovalOnConflictSet, buildLiveNodeCandidates, buildMaterializationInsertValues, buildMaterializationOnConflictSet, commitSchemaVersionIfKindsEmpty, contributionRebuildSupported, createCachedTableExistence, createCommonOperationBackend, createContributionMaterializer, createPostgresOperationStrategy, createPostgresTrustedImportSession, createSqliteOperationStrategy, createSqliteTrustedImportSession, gateFulltext, gateFulltextMethods, getOrCreateLru, lockPostgresTrustedImportTables, mapContributionMaterializationRow, mapHybridSearchRow, mapKindRemovalRow, mapMaterializationRow, mapVectorWriteError, restoreSecondaryIndexes, suspendPostgresSecondaryIndexes, suspendSqliteSecondaryIndexes, tableExistsFromRow, vectorSlotFromCreateIndexParams, vectorSlotFromDropIndexParams, vectorSlotFromParams };
3456
- //# sourceMappingURL=chunk-Z2JCLZFJ.js.map
3457
- //# sourceMappingURL=chunk-Z2JCLZFJ.js.map
3438
+ //# sourceMappingURL=chunk-MJPZNEJZ.js.map
3439
+ //# sourceMappingURL=chunk-MJPZNEJZ.js.map