@nicia-ai/typegraph 0.46.2 → 0.48.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 (310) hide show
  1. package/README.md +20 -1
  2. package/dist/backend/drizzle/indexes.cjs +9 -9
  3. package/dist/backend/drizzle/indexes.d.cts +1 -1
  4. package/dist/backend/drizzle/indexes.d.ts +1 -1
  5. package/dist/backend/drizzle/indexes.js +5 -5
  6. package/dist/backend/index.cjs +58 -49
  7. package/dist/backend/index.d.cts +37 -55
  8. package/dist/backend/index.d.ts +37 -55
  9. package/dist/backend/index.js +11 -10
  10. package/dist/backend/postgres/index.cjs +27 -26
  11. package/dist/backend/postgres/index.d.cts +21 -7
  12. package/dist/backend/postgres/index.d.ts +21 -7
  13. package/dist/backend/postgres/index.js +14 -13
  14. package/dist/backend/postgres/pglite-store.cjs +34 -33
  15. package/dist/backend/postgres/pglite-store.cjs.map +1 -1
  16. package/dist/backend/postgres/pglite-store.d.cts +8 -8
  17. package/dist/backend/postgres/pglite-store.d.ts +8 -8
  18. package/dist/backend/postgres/pglite-store.js +30 -29
  19. package/dist/backend/postgres/pglite-store.js.map +1 -1
  20. package/dist/backend/postgres/pglite.cjs +16 -15
  21. package/dist/backend/postgres/pglite.d.cts +3 -3
  22. package/dist/backend/postgres/pglite.d.ts +3 -3
  23. package/dist/backend/postgres/pglite.js +15 -14
  24. package/dist/backend/sqlite/index.cjs +24 -23
  25. package/dist/backend/sqlite/index.d.cts +20 -7
  26. package/dist/backend/sqlite/index.d.ts +20 -7
  27. package/dist/backend/sqlite/index.js +12 -11
  28. package/dist/backend/sqlite/libsql.cjs +19 -18
  29. package/dist/backend/sqlite/libsql.cjs.map +1 -1
  30. package/dist/backend/sqlite/libsql.d.cts +3 -3
  31. package/dist/backend/sqlite/libsql.d.ts +3 -3
  32. package/dist/backend/sqlite/libsql.js +14 -13
  33. package/dist/backend/sqlite/libsql.js.map +1 -1
  34. package/dist/backend/sqlite/local-store.cjs +35 -34
  35. package/dist/backend/sqlite/local-store.cjs.map +1 -1
  36. package/dist/backend/sqlite/local-store.d.cts +8 -8
  37. package/dist/backend/sqlite/local-store.d.ts +8 -8
  38. package/dist/backend/sqlite/local-store.js +31 -30
  39. package/dist/backend/sqlite/local-store.js.map +1 -1
  40. package/dist/backend/sqlite/local.cjs +17 -16
  41. package/dist/backend/sqlite/local.d.cts +3 -3
  42. package/dist/backend/sqlite/local.d.ts +3 -3
  43. package/dist/backend/sqlite/local.js +15 -14
  44. package/dist/{chunk-TCT66A7N.cjs → chunk-26YKDNUD.cjs} +10 -10
  45. package/dist/{chunk-TCT66A7N.cjs.map → chunk-26YKDNUD.cjs.map} +1 -1
  46. package/dist/{chunk-E4OSGBCM.cjs → chunk-2HIYYMWY.cjs} +139 -136
  47. package/dist/chunk-2HIYYMWY.cjs.map +1 -0
  48. package/dist/chunk-2QGYQBS2.cjs +161 -0
  49. package/dist/chunk-2QGYQBS2.cjs.map +1 -0
  50. package/dist/{chunk-GWXXHOLU.js → chunk-2SYZXD54.js} +21 -18
  51. package/dist/chunk-2SYZXD54.js.map +1 -0
  52. package/dist/{chunk-KA4L2NZ3.js → chunk-2TYSSBU5.js} +14 -14
  53. package/dist/{chunk-KA4L2NZ3.js.map → chunk-2TYSSBU5.js.map} +1 -1
  54. package/dist/{chunk-QOJ2L2AD.js → chunk-3DMMGT6S.js} +3 -3
  55. package/dist/{chunk-QOJ2L2AD.js.map → chunk-3DMMGT6S.js.map} +1 -1
  56. package/dist/{chunk-F36KZDFX.cjs → chunk-3FPR224C.cjs} +91 -91
  57. package/dist/{chunk-F36KZDFX.cjs.map → chunk-3FPR224C.cjs.map} +1 -1
  58. package/dist/{chunk-32UETY6S.cjs → chunk-3KOY4FH3.cjs} +207 -28
  59. package/dist/chunk-3KOY4FH3.cjs.map +1 -0
  60. package/dist/{chunk-QU7QLJA4.cjs → chunk-3U5ABFDW.cjs} +26 -26
  61. package/dist/{chunk-QU7QLJA4.cjs.map → chunk-3U5ABFDW.cjs.map} +1 -1
  62. package/dist/{chunk-RFDEYLIK.js → chunk-4WMMBDS5.js} +7 -7
  63. package/dist/chunk-4WMMBDS5.js.map +1 -0
  64. package/dist/{chunk-R7EWHKID.js → chunk-5K2BKEBD.js} +19 -145
  65. package/dist/chunk-5K2BKEBD.js.map +1 -0
  66. package/dist/chunk-5PRKMB24.cjs +124 -0
  67. package/dist/chunk-5PRKMB24.cjs.map +1 -0
  68. package/dist/chunk-6LN7FIVU.js +107 -0
  69. package/dist/chunk-6LN7FIVU.js.map +1 -0
  70. package/dist/{chunk-D6GCNNMK.cjs → chunk-6NGW27EO.cjs} +10 -10
  71. package/dist/{chunk-D6GCNNMK.cjs.map → chunk-6NGW27EO.cjs.map} +1 -1
  72. package/dist/{chunk-WHS2Y43J.js → chunk-6SWPJEYN.js} +5 -5
  73. package/dist/{chunk-WHS2Y43J.js.map → chunk-6SWPJEYN.js.map} +1 -1
  74. package/dist/{chunk-7TKNK32B.js → chunk-7SQSZN2J.js} +5 -5
  75. package/dist/{chunk-7TKNK32B.js.map → chunk-7SQSZN2J.js.map} +1 -1
  76. package/dist/{chunk-UTVQPZPN.cjs → chunk-7XUYFFR4.cjs} +20 -20
  77. package/dist/chunk-7XUYFFR4.cjs.map +1 -0
  78. package/dist/{chunk-KXSMF6PL.js → chunk-ACGSAMD3.js} +39 -34
  79. package/dist/chunk-ACGSAMD3.js.map +1 -0
  80. package/dist/{chunk-PYKF7UIL.cjs → chunk-AOSSQDVO.cjs} +13 -13
  81. package/dist/{chunk-PYKF7UIL.cjs.map → chunk-AOSSQDVO.cjs.map} +1 -1
  82. package/dist/{chunk-AT3MLMJV.js → chunk-AX6JGVTZ.js} +91 -20
  83. package/dist/chunk-AX6JGVTZ.js.map +1 -0
  84. package/dist/{chunk-WA64ZSCA.cjs → chunk-BFUOME67.cjs} +11 -11
  85. package/dist/{chunk-WA64ZSCA.cjs.map → chunk-BFUOME67.cjs.map} +1 -1
  86. package/dist/{chunk-YQ4JONWE.js → chunk-BRRP76WO.js} +401 -131
  87. package/dist/chunk-BRRP76WO.js.map +1 -0
  88. package/dist/{chunk-FCIZNUW5.js → chunk-CHAOFCHV.js} +3 -3
  89. package/dist/{chunk-FCIZNUW5.js.map → chunk-CHAOFCHV.js.map} +1 -1
  90. package/dist/chunk-CICO5GXD.cjs +12 -0
  91. package/dist/{chunk-73MWKDFK.cjs.map → chunk-CICO5GXD.cjs.map} +1 -1
  92. package/dist/{chunk-S3G5VLSW.js → chunk-CT3ZKTOF.js} +7 -6
  93. package/dist/chunk-CT3ZKTOF.js.map +1 -0
  94. package/dist/{chunk-SXWLLQ3D.js → chunk-D5R42W5D.js} +4 -4
  95. package/dist/{chunk-SXWLLQ3D.js.map → chunk-D5R42W5D.js.map} +1 -1
  96. package/dist/{chunk-BZZI7B43.cjs → chunk-DO7SAMEK.cjs} +47 -47
  97. package/dist/{chunk-BZZI7B43.cjs.map → chunk-DO7SAMEK.cjs.map} +1 -1
  98. package/dist/chunk-DZAICA5J.js +147 -0
  99. package/dist/chunk-DZAICA5J.js.map +1 -0
  100. package/dist/{chunk-2ZWM2RFH.cjs → chunk-EDN4Y4ZG.cjs} +9 -9
  101. package/dist/{chunk-2ZWM2RFH.cjs.map → chunk-EDN4Y4ZG.cjs.map} +1 -1
  102. package/dist/{chunk-A4R3H7RU.cjs → chunk-EZEEWCFJ.cjs} +264 -361
  103. package/dist/chunk-EZEEWCFJ.cjs.map +1 -0
  104. package/dist/{chunk-BEB4OFZF.cjs → chunk-FA2AFWLP.cjs} +51 -59
  105. package/dist/chunk-FA2AFWLP.cjs.map +1 -0
  106. package/dist/{chunk-ZBVZ7HXD.cjs → chunk-FQPEMEWX.cjs} +12 -12
  107. package/dist/{chunk-ZBVZ7HXD.cjs.map → chunk-FQPEMEWX.cjs.map} +1 -1
  108. package/dist/{chunk-LNIWCQR4.js → chunk-GLHXM7C4.js} +3 -3
  109. package/dist/{chunk-LNIWCQR4.js.map → chunk-GLHXM7C4.js.map} +1 -1
  110. package/dist/{chunk-6BD6ZBKT.cjs → chunk-GYEG3ZLZ.cjs} +10 -10
  111. package/dist/{chunk-6BD6ZBKT.cjs.map → chunk-GYEG3ZLZ.cjs.map} +1 -1
  112. package/dist/{chunk-A7NMUYEL.cjs → chunk-HDL2ARHX.cjs} +27 -27
  113. package/dist/{chunk-A7NMUYEL.cjs.map → chunk-HDL2ARHX.cjs.map} +1 -1
  114. package/dist/{chunk-5ZJOB5YS.js → chunk-HEV35TGT.js} +4 -4
  115. package/dist/{chunk-5ZJOB5YS.js.map → chunk-HEV35TGT.js.map} +1 -1
  116. package/dist/{chunk-LHYSY6SE.js → chunk-I4GAZH5Z.js} +186 -9
  117. package/dist/chunk-I4GAZH5Z.js.map +1 -0
  118. package/dist/{chunk-BQM5P2NO.cjs → chunk-JB6T4GLL.cjs} +260 -223
  119. package/dist/chunk-JB6T4GLL.cjs.map +1 -0
  120. package/dist/{chunk-QPOQX2DI.cjs → chunk-JFRT7S3B.cjs} +1026 -369
  121. package/dist/chunk-JFRT7S3B.cjs.map +1 -0
  122. package/dist/{chunk-JCNTKRAK.js → chunk-JONXFAPO.js} +5 -5
  123. package/dist/{chunk-JCNTKRAK.js.map → chunk-JONXFAPO.js.map} +1 -1
  124. package/dist/{chunk-WEJHA7AD.js → chunk-KF6K7TGH.js} +109 -75
  125. package/dist/chunk-KF6K7TGH.js.map +1 -0
  126. package/dist/{chunk-EDJDDY6H.js → chunk-KKBDXCLQ.js} +4 -4
  127. package/dist/{chunk-EDJDDY6H.js.map → chunk-KKBDXCLQ.js.map} +1 -1
  128. package/dist/{chunk-ZHOAZD7Q.cjs → chunk-L3LQNR34.cjs} +161 -161
  129. package/dist/{chunk-ZHOAZD7Q.cjs.map → chunk-L3LQNR34.cjs.map} +1 -1
  130. package/dist/{chunk-AF3TWL5C.cjs → chunk-LRQKXRXO.cjs} +4 -4
  131. package/dist/{chunk-AF3TWL5C.cjs.map → chunk-LRQKXRXO.cjs.map} +1 -1
  132. package/dist/chunk-MKJ4KXL5.cjs +12 -0
  133. package/dist/{chunk-6LAXM4J2.cjs.map → chunk-MKJ4KXL5.cjs.map} +1 -1
  134. package/dist/{chunk-KCH7WQA5.cjs → chunk-MRDBBHIZ.cjs} +48 -2
  135. package/dist/chunk-MRDBBHIZ.cjs.map +1 -0
  136. package/dist/{chunk-FXNHZFZV.js → chunk-MYKHJI2J.js} +3 -3
  137. package/dist/{chunk-FXNHZFZV.js.map → chunk-MYKHJI2J.js.map} +1 -1
  138. package/dist/{chunk-Z43KWLZF.js → chunk-NACVVDWB.js} +213 -12
  139. package/dist/chunk-NACVVDWB.js.map +1 -0
  140. package/dist/{chunk-72WUT4GG.js → chunk-NVY5CJFP.js} +4 -4
  141. package/dist/{chunk-72WUT4GG.js.map → chunk-NVY5CJFP.js.map} +1 -1
  142. package/dist/{chunk-WYFB7BN3.js → chunk-OD4SSY2U.js} +166 -48
  143. package/dist/chunk-OD4SSY2U.js.map +1 -0
  144. package/dist/{chunk-ZIH42CRX.cjs → chunk-OI2GQ25X.cjs} +7 -7
  145. package/dist/{chunk-ZIH42CRX.cjs.map → chunk-OI2GQ25X.cjs.map} +1 -1
  146. package/dist/{chunk-AU3IJNNP.js → chunk-OMZ37BM2.js} +5 -5
  147. package/dist/{chunk-AU3IJNNP.js.map → chunk-OMZ37BM2.js.map} +1 -1
  148. package/dist/{chunk-C4DYN2SD.cjs → chunk-OORXGFL5.cjs} +48 -48
  149. package/dist/{chunk-C4DYN2SD.cjs.map → chunk-OORXGFL5.cjs.map} +1 -1
  150. package/dist/{chunk-HNYLMPQQ.cjs → chunk-OTUPEF2W.cjs} +149 -78
  151. package/dist/chunk-OTUPEF2W.cjs.map +1 -0
  152. package/dist/{chunk-BRN3RGD2.js → chunk-OVI7IXYX.js} +3 -3
  153. package/dist/{chunk-BRN3RGD2.js.map → chunk-OVI7IXYX.js.map} +1 -1
  154. package/dist/{chunk-WMKEGJG4.js → chunk-P6YLZTRE.js} +3 -3
  155. package/dist/{chunk-WMKEGJG4.js.map → chunk-P6YLZTRE.js.map} +1 -1
  156. package/dist/{chunk-C2ZP5YS6.cjs → chunk-PFBRJBUL.cjs} +278 -160
  157. package/dist/chunk-PFBRJBUL.cjs.map +1 -0
  158. package/dist/{chunk-EJSYWAEV.js → chunk-QTD6HX4O.js} +5 -5
  159. package/dist/{chunk-EJSYWAEV.js.map → chunk-QTD6HX4O.js.map} +1 -1
  160. package/dist/{chunk-JL5UEBWT.cjs → chunk-ROR5ZR6A.cjs} +45 -45
  161. package/dist/{chunk-JL5UEBWT.cjs.map → chunk-ROR5ZR6A.cjs.map} +1 -1
  162. package/dist/{chunk-EDHV4CBU.js → chunk-S5TERQVW.js} +37 -134
  163. package/dist/chunk-S5TERQVW.js.map +1 -0
  164. package/dist/{chunk-FSLTU57P.js → chunk-SDBBMD4N.js} +3 -3
  165. package/dist/{chunk-FSLTU57P.js.map → chunk-SDBBMD4N.js.map} +1 -1
  166. package/dist/{chunk-36LIJXWC.js → chunk-SHFBB23Q.js} +4 -4
  167. package/dist/{chunk-36LIJXWC.js.map → chunk-SHFBB23Q.js.map} +1 -1
  168. package/dist/chunk-SIT26LAZ.cjs +614 -0
  169. package/dist/chunk-SIT26LAZ.cjs.map +1 -0
  170. package/dist/{chunk-C6KE2HSQ.cjs → chunk-SR725PWF.cjs} +1662 -1392
  171. package/dist/chunk-SR725PWF.cjs.map +1 -0
  172. package/dist/{chunk-S7WIRFNS.cjs → chunk-TKZXMWQF.cjs} +13 -12
  173. package/dist/chunk-TKZXMWQF.cjs.map +1 -0
  174. package/dist/{chunk-5PDSCELM.cjs → chunk-TQHGE7UC.cjs} +29 -164
  175. package/dist/chunk-TQHGE7UC.cjs.map +1 -0
  176. package/dist/{chunk-XBHRKLZU.cjs → chunk-TUNPBZY3.cjs} +4 -4
  177. package/dist/{chunk-XBHRKLZU.cjs.map → chunk-TUNPBZY3.cjs.map} +1 -1
  178. package/dist/{chunk-KOAI3KIV.cjs → chunk-TZEGUG6D.cjs} +4 -4
  179. package/dist/{chunk-KOAI3KIV.cjs.map → chunk-TZEGUG6D.cjs.map} +1 -1
  180. package/dist/chunk-UGHG7PGX.js +592 -0
  181. package/dist/chunk-UGHG7PGX.js.map +1 -0
  182. package/dist/{chunk-N3QTGPC7.cjs → chunk-UMGZDVOA.cjs} +303 -101
  183. package/dist/chunk-UMGZDVOA.cjs.map +1 -0
  184. package/dist/{chunk-RHDOAQCT.cjs → chunk-WCCATHMB.cjs} +140 -135
  185. package/dist/chunk-WCCATHMB.cjs.map +1 -0
  186. package/dist/{chunk-DYPRZ53S.cjs → chunk-WODMN3Q2.cjs} +27 -27
  187. package/dist/{chunk-DYPRZ53S.cjs.map → chunk-WODMN3Q2.cjs.map} +1 -1
  188. package/dist/{chunk-OZJCH7ZS.js → chunk-XVWOYKIK.js} +3 -3
  189. package/dist/{chunk-OZJCH7ZS.js.map → chunk-XVWOYKIK.js.map} +1 -1
  190. package/dist/{chunk-IHRDX7K6.js → chunk-YIURNGXI.js} +46 -56
  191. package/dist/chunk-YIURNGXI.js.map +1 -0
  192. package/dist/{chunk-GWUWRZXW.js → chunk-YVF2EM7B.js} +3 -3
  193. package/dist/{chunk-GWUWRZXW.js.map → chunk-YVF2EM7B.js.map} +1 -1
  194. package/dist/{chunk-EAMVXR5B.js → chunk-ZDKTPBGV.js} +4 -4
  195. package/dist/{chunk-EAMVXR5B.js.map → chunk-ZDKTPBGV.js.map} +1 -1
  196. package/dist/{chunk-A2LJG5GM.js → chunk-ZFMCDJGB.js} +803 -148
  197. package/dist/chunk-ZFMCDJGB.js.map +1 -0
  198. package/dist/{chunk-62ZXBMSD.js → chunk-ZLONH2UD.js} +46 -3
  199. package/dist/chunk-ZLONH2UD.js.map +1 -0
  200. package/dist/core/index.cjs +28 -27
  201. package/dist/core/index.d.cts +4 -4
  202. package/dist/core/index.d.ts +4 -4
  203. package/dist/core/index.js +8 -7
  204. package/dist/ddl-BL1NZLMY.d.cts +78 -0
  205. package/dist/ddl-D_oW-EVO.d.ts +78 -0
  206. package/dist/graph-extension/index.cjs +20 -20
  207. package/dist/graph-extension/index.d.cts +4 -4
  208. package/dist/graph-extension/index.d.ts +4 -4
  209. package/dist/graph-extension/index.js +4 -4
  210. package/dist/graph-merge/index.cjs +3418 -706
  211. package/dist/graph-merge/index.cjs.map +1 -1
  212. package/dist/graph-merge/index.d.cts +550 -58
  213. package/dist/graph-merge/index.d.ts +550 -58
  214. package/dist/graph-merge/index.js +3191 -497
  215. package/dist/graph-merge/index.js.map +1 -1
  216. package/dist/{index-Deyu8IXL.d.ts → index-COs_z6nV.d.cts} +47 -3
  217. package/dist/{index-DrRS51Ld.d.cts → index-D7d1u2gr.d.ts} +47 -3
  218. package/dist/index.cjs +233 -216
  219. package/dist/index.cjs.map +1 -1
  220. package/dist/index.d.cts +12 -12
  221. package/dist/index.d.ts +12 -12
  222. package/dist/index.js +35 -34
  223. package/dist/index.js.map +1 -1
  224. package/dist/indexes/index.cjs +13 -13
  225. package/dist/indexes/index.d.cts +4 -4
  226. package/dist/indexes/index.d.ts +4 -4
  227. package/dist/indexes/index.js +6 -6
  228. package/dist/interchange/index.cjs +53 -52
  229. package/dist/interchange/index.cjs.map +1 -1
  230. package/dist/interchange/index.d.cts +17 -13
  231. package/dist/interchange/index.d.ts +17 -13
  232. package/dist/interchange/index.js +17 -16
  233. package/dist/interchange/index.js.map +1 -1
  234. package/dist/{manager-ptr3JLRP.d.cts → manager-CYaff3n3.d.cts} +2 -2
  235. package/dist/{manager-DX983gJ0.d.ts → manager-D9eRT_ns.d.ts} +2 -2
  236. package/dist/{materialize-indexes-CpXoggWU.d.ts → materialize-indexes-DJ3ykH59.d.ts} +1 -1
  237. package/dist/{materialize-indexes-BXz77YqO.d.cts → materialize-indexes-DTtAnvfY.d.cts} +1 -1
  238. package/dist/{postgres-DwgEXSPI.d.cts → postgres-CcL4bAHS.d.ts} +1 -1
  239. package/dist/{postgres-QdOMHTBz.d.ts → postgres-DMj39MEu.d.cts} +1 -1
  240. package/dist/profiler/index.d.cts +9 -9
  241. package/dist/profiler/index.d.ts +9 -9
  242. package/dist/provenance/index.cjs +46 -46
  243. package/dist/provenance/index.cjs.map +1 -1
  244. package/dist/provenance/index.d.cts +7 -7
  245. package/dist/provenance/index.d.ts +7 -7
  246. package/dist/provenance/index.js +13 -13
  247. package/dist/provenance/index.js.map +1 -1
  248. package/dist/repair-validity-windows-BFNZvd_H.d.cts +166 -0
  249. package/dist/repair-validity-windows-DlUSqwCg.d.ts +166 -0
  250. package/dist/schema/index.cjs +45 -44
  251. package/dist/schema/index.d.cts +6 -6
  252. package/dist/schema/index.d.ts +6 -6
  253. package/dist/schema/index.js +18 -17
  254. package/dist/{searchable-BOUuA83f.d.ts → searchable-DHJMh_nj.d.cts} +1 -1
  255. package/dist/{searchable-BrUh0pdc.d.cts → searchable-bpE1bBfc.d.ts} +1 -1
  256. package/dist/{sqlite-BfYcV61E.d.cts → sqlite-D7Oz0SQh.d.ts} +1 -1
  257. package/dist/{sqlite-DK40XVR1.d.ts → sqlite-YppHrNFb.d.cts} +1 -1
  258. package/dist/{store-FTqBpuJD.d.cts → store-JUVvtmR4.d.cts} +228 -92
  259. package/dist/{store-Bo1psfVZ.d.ts → store-UzrGvZOo.d.ts} +228 -92
  260. package/dist/{temporal-DPtn0HOu.d.ts → temporal-5GqpYCk2.d.cts} +1 -1
  261. package/dist/{temporal-CXewwLTB.d.cts → temporal-CbnLzTmM.d.ts} +1 -1
  262. package/dist/{types-Du78EvpN.d.ts → types-BqFZTQmV.d.cts} +60 -9
  263. package/dist/{types-Du78EvpN.d.cts → types-BqFZTQmV.d.ts} +60 -9
  264. package/dist/{types-CeT7xM4M.d.ts → types-Bx74kaTt.d.ts} +1 -1
  265. package/dist/{types-XR1nHERK.d.cts → types-CXAhpW-c.d.cts} +1 -1
  266. package/dist/{where-CJsp-YUf.d.cts → where-DI_Fqz-X.d.cts} +1 -1
  267. package/dist/{where-CMbFiWwp.d.ts → where-O-k2wgYm.d.ts} +1 -1
  268. package/package.json +1 -1
  269. package/dist/chunk-32UETY6S.cjs.map +0 -1
  270. package/dist/chunk-5PDSCELM.cjs.map +0 -1
  271. package/dist/chunk-62ZXBMSD.js.map +0 -1
  272. package/dist/chunk-6LAXM4J2.cjs +0 -12
  273. package/dist/chunk-73MWKDFK.cjs +0 -12
  274. package/dist/chunk-A2LJG5GM.js.map +0 -1
  275. package/dist/chunk-A4R3H7RU.cjs.map +0 -1
  276. package/dist/chunk-ANKOXPCC.cjs +0 -267
  277. package/dist/chunk-ANKOXPCC.cjs.map +0 -1
  278. package/dist/chunk-AT3MLMJV.js.map +0 -1
  279. package/dist/chunk-BEB4OFZF.cjs.map +0 -1
  280. package/dist/chunk-BQM5P2NO.cjs.map +0 -1
  281. package/dist/chunk-C2ZP5YS6.cjs.map +0 -1
  282. package/dist/chunk-C6KE2HSQ.cjs.map +0 -1
  283. package/dist/chunk-DSAWGCMP.js +0 -254
  284. package/dist/chunk-DSAWGCMP.js.map +0 -1
  285. package/dist/chunk-E4OSGBCM.cjs.map +0 -1
  286. package/dist/chunk-EDHV4CBU.js.map +0 -1
  287. package/dist/chunk-FA6Z7B5L.js +0 -244
  288. package/dist/chunk-FA6Z7B5L.js.map +0 -1
  289. package/dist/chunk-GVAMRRZR.cjs +0 -268
  290. package/dist/chunk-GVAMRRZR.cjs.map +0 -1
  291. package/dist/chunk-GWXXHOLU.js.map +0 -1
  292. package/dist/chunk-HNYLMPQQ.cjs.map +0 -1
  293. package/dist/chunk-IHRDX7K6.js.map +0 -1
  294. package/dist/chunk-KCH7WQA5.cjs.map +0 -1
  295. package/dist/chunk-KXSMF6PL.js.map +0 -1
  296. package/dist/chunk-LHYSY6SE.js.map +0 -1
  297. package/dist/chunk-N3QTGPC7.cjs.map +0 -1
  298. package/dist/chunk-QPOQX2DI.cjs.map +0 -1
  299. package/dist/chunk-R7EWHKID.js.map +0 -1
  300. package/dist/chunk-RFDEYLIK.js.map +0 -1
  301. package/dist/chunk-RHDOAQCT.cjs.map +0 -1
  302. package/dist/chunk-S3G5VLSW.js.map +0 -1
  303. package/dist/chunk-S7WIRFNS.cjs.map +0 -1
  304. package/dist/chunk-UTVQPZPN.cjs.map +0 -1
  305. package/dist/chunk-WEJHA7AD.js.map +0 -1
  306. package/dist/chunk-WYFB7BN3.js.map +0 -1
  307. package/dist/chunk-YQ4JONWE.js.map +0 -1
  308. package/dist/chunk-Z43KWLZF.js.map +0 -1
  309. package/dist/ddl-mE07h_EM.d.cts +0 -38
  310. package/dist/ddl-opIn8DfX.d.ts +0 -38
@@ -1,9 +1,9 @@
1
1
  import { z } from 'zod';
2
- import { cw as ValueType, cx as PredicateExpression, aY as FulltextQueryMode, cy as VectorMetricType, Q as QueryAst, J as JsonPointer, ad as FieldRef, bo as ParameterRef, u as NodeType, v as AnyEdgeType, a5 as EdgeType, bV as TraversalExpansion, y as GraphBackend, S as SqlDialect, w as SqlSchema, cz as Traversal, cA as NodePredicate, cB as ProjectedField, bn as OrderSpec, cC as AggregateOrderSpec, T as TemporalMode, cD as GroupBySpec, b7 as HybridFusionOptions, bb as JsonPointerInput, cE as RecursiveCyclePolicy, d as GraphDef, ag as TraversalDirection$1, aO as EdgeRegistration, _ as NodeId, bS as TransactionBackend, ac as AggregateExpr, bG as SortDirection, ax as CompiledSelectSql, F as FulltextStrategy, V as VectorStrategy, cF as VectorSlotMap, cG as RecordedReadBinding, cH as SelectiveField, cI as ComposableQuery, cJ as SetOperationType, cK as SetOperation, G as GraphIdentityConfig, a1 as NodeKinds, cL as NodeRow, K as KindEntity, aR as ExternalRecordedReadSource, $ as EdgeId, cM as EdgeRow, bm as NodeRegistration, aM as EdgeKinds, bU as TransactionReadBackend, al as AllNodeTypes, a3 as KindAnnotations, X as JsonSchema, b_ as UniquenessScope, as as Collation, ar as Cardinality, aQ as EndpointExistence, b4 as GraphExtension, cN as VectorMetric, B as BackendCapabilities, C as ContributionDiagnostic, c as ContributionRepairResult, aD as ContributionProbeResult, aG as ContributionRebuildScope, aF as ContributionRebuildResult, bT as TransactionOptions, A as AdapterBackend } from './types-Du78EvpN.cjs';
3
- import { R as RecordedInstant, d as ReadCoordinate } from './temporal-CXewwLTB.cjs';
4
- import { S as SearchableMetadata, c as EmbeddingValue } from './searchable-BrUh0pdc.cjs';
5
- import { K as KindRegistry, S as SchemaManagerOptions, b as SchemaValidationResult } from './manager-ptr3JLRP.cjs';
6
- import { S as SchemaDiff, j as MaterializeIndexesOptions, M as MaterializeIndexesResult, k as MaterializeSystemIndexesOptions } from './materialize-indexes-BXz77YqO.cjs';
2
+ import { cy as ValueType, ef as PredicateExpression, aH as FulltextQueryMode, eg as VectorMetricType, d9 as QueryAst, bf as JsonPointer, dl as FieldRef, dU as ParameterRef, dg as NodeType, dh as AnyEdgeType, dr as EdgeType, dZ as TraversalExpansion, aM as GraphBackend, c2 as SqlDialect, di as SqlSchema, eh as Traversal, ei as NodePredicate, ej as ProjectedField, dT as OrderSpec, ek as AggregateOrderSpec, ce as TemporalMode, el as GroupBySpec, dF as HybridFusionOptions, dH as JsonPointerInput, em as RecursiveCyclePolicy, d8 as GraphDef, dp as TraversalDirection$1, dz as EdgeRegistration, dP as NodeId, cg as TransactionBackend, dk as AggregateExpr, dY as SortDirection, q as CompiledSelectSql, aK as FulltextStrategy, cL as VectorStrategy, en as VectorSlotMap, eo as RecordedReadBinding, ep as SelectiveField, eq as ComposableQuery, er as SetOperationType, es as SetOperation, aR as GraphIdentityConfig, dQ as NodeKinds, bs as NodeRow, bj as KindEntity, dB as ExternalRecordedReadSource, dw as EdgeId, a9 as EdgeRow, et as BackendValidityEndMutation, dS as NodeRegistration, dx as EdgeKinds, ci as TransactionReadBackend, dt as AllNodeTypes, bi as KindAnnotations, bg as JsonSchema, cn as UniquenessScope, l as Collation, C as Cardinality, aa as EndpointExistence, aP as GraphExtension, cF as VectorMetric, d as BackendCapabilities, u as ContributionDiagnostic, K as ContributionRepairResult, E as ContributionProbeResult, H as ContributionRebuildScope, G as ContributionRebuildResult, ch as TransactionOptions, b as AdapterBackend } from './types-BqFZTQmV.cjs';
3
+ import { R as RecordedInstant, d as ReadCoordinate } from './temporal-5GqpYCk2.cjs';
4
+ import { S as SearchableMetadata, c as EmbeddingValue } from './searchable-DHJMh_nj.cjs';
5
+ import { K as KindRegistry, S as SchemaManagerOptions, b as SchemaValidationResult } from './manager-CYaff3n3.cjs';
6
+ import { S as SchemaDiff, j as MaterializeIndexesOptions, M as MaterializeIndexesResult, k as MaterializeSystemIndexesOptions } from './materialize-indexes-DTtAnvfY.cjs';
7
7
 
8
8
  type FieldTypeInfo = Readonly<{
9
9
  valueType: ValueType;
@@ -272,7 +272,11 @@ declare function notInSubquery(field: FieldRef, subquery: QueryAst): Predicate;
272
272
 
273
273
  declare const DYNAMIC_NODE_BRAND: unique symbol;
274
274
  declare const DYNAMIC_EDGE_BRAND: unique symbol;
275
- type DynamicNodeType = NodeType & Readonly<{
275
+ /** A runtime-registered node kind whose collection lookup preserved `K`. */
276
+ type DynamicNodeKind<K extends string = string> = K & Readonly<{
277
+ [DYNAMIC_NODE_BRAND]: true;
278
+ }>;
279
+ type DynamicNodeType<K extends string = string> = NodeType<DynamicNodeKind<K>> & Readonly<{
276
280
  [DYNAMIC_NODE_BRAND]: true;
277
281
  }>;
278
282
  type DynamicEdgeType = AnyEdgeType & Readonly<{
@@ -1643,6 +1647,13 @@ declare const RECORDED_POINT_READ_NAMES: readonly ["getById", "getByIds"];
1643
1647
  * Store types for TypeGraph operations.
1644
1648
  */
1645
1649
 
1650
+ /**
1651
+ * An explicit validity-end mutation. Omission preserves the stored end,
1652
+ * `validTo` sets it, and `clearValidTo` reopens the window. The union keeps the
1653
+ * two write actions mutually exclusive without exposing public `null`.
1654
+ */
1655
+ type ValidityEndMutation = BackendValidityEndMutation;
1656
+
1646
1657
  /**
1647
1658
  * Canonical mapping from snake_case row fields to camelCase meta fields.
1648
1659
  *
@@ -1707,8 +1718,7 @@ type UpdateNodeInput<N extends NodeType = NodeType> = Readonly<{
1707
1718
  kind: N["kind"];
1708
1719
  id: NodeId<N>;
1709
1720
  props: Partial<z.infer<N["schema"]>>;
1710
- validTo?: string;
1711
- }>;
1721
+ }> & ValidityEndMutation;
1712
1722
  /**
1713
1723
  * Metadata for an edge instance.
1714
1724
  * Derived from EdgeRow via TemporalMetaFieldMap (edges have no version).
@@ -1750,8 +1760,7 @@ type CreateEdgeInput<E extends AnyEdgeType = EdgeType> = Readonly<{
1750
1760
  type UpdateEdgeInput<E extends AnyEdgeType = EdgeType> = Readonly<{
1751
1761
  id: EdgeId<E>;
1752
1762
  props: Partial<z.infer<E["schema"]>>;
1753
- validTo?: string;
1754
- }>;
1763
+ }> & ValidityEndMutation;
1755
1764
  /**
1756
1765
  * Options for node and edge queries.
1757
1766
  */
@@ -1921,9 +1930,9 @@ type BaseStoreOptions = Readonly<{
1921
1930
  */
1922
1931
  autoRefreshStatistics?: false | number;
1923
1932
  /**
1924
- * Skip the write for an `upsertById` (or `bulkUpsertById` item) whose
1925
- * validated props are value-identical to the existing live row. Default
1926
- * off.
1933
+ * Skip the write for an `upsertById`, `bulkUpsertById` item, or endpoint
1934
+ * get-or-create update whose validated props are value-identical to the
1935
+ * existing live row. Default off.
1927
1936
  *
1928
1937
  * Enable this for at-least-once / replay materializers. An event log that
1929
1938
  * re-delivers a byte-identical change would otherwise rewrite the row anyway:
@@ -1944,7 +1953,12 @@ type BaseStoreOptions = Readonly<{
1944
1953
  * **no write at all**: no `updateNode`, no recorded-time capture, no history
1945
1954
  * row, no revision-anchor advance, and no `update` operation hooks (nothing
1946
1955
  * happened, so nothing is reported). It resolves with the **existing** node,
1947
- * preserving its original `validFrom` / `updatedAt` / `version`.
1956
+ * preserving its original `validFrom` / `updatedAt` / `version`. An endpoint
1957
+ * get-or-create reports action `"found"` when its requested update is
1958
+ * coalesced; `"updated"` always means an UPDATE actually ran.
1959
+ * Node `getOrCreateByConstraint` updates are outside this option's scope and
1960
+ * still write on every `ifExists: "update"` match; replay projectors that
1961
+ * need coalescing should use `upsertById` for nodes.
1948
1962
  *
1949
1963
  * Receipt shape is unchanged and needs no new signal: a coalesced upsert
1950
1964
  * still counts as one write intent (`writes.total` includes it), but
@@ -1960,9 +1974,8 @@ type BaseStoreOptions = Readonly<{
1960
1974
  * batch already queued (a create or an update).
1961
1975
  * 2. That row is not soft-deleted (a deleted row resurrects — a real
1962
1976
  * change — and is never coalesced).
1963
- * 3. The caller passed no explicit `validFrom` / `validTo` (an explicit
1964
- * temporal override is a deliberate request and is never coalesced;
1965
- * applied per item in the bulk path).
1977
+ * 3. Any requested `validFrom` / `validTo` names the window already stored;
1978
+ * a changed or inapplicable temporal request reaches the write path.
1966
1979
  * 4. The new props, merged over the stored props and run through the
1967
1980
  * kind's Zod schema (defaults applied, values normalized), are deeply
1968
1981
  * value-identical to the stored props (key order aside).
@@ -2240,13 +2253,7 @@ type EdgeGetOrCreateByEndpointsOptions<E extends AnyEdgeType> = Readonly<{
2240
2253
  * properties and `validTo`.
2241
2254
  */
2242
2255
  onImmutableLowerBound?: "preserve" | "refuse";
2243
- /**
2244
- * Valid-time end for a created, updated, or resurrected edge. Ignored when
2245
- * the operation returns an existing edge without writing. May not precede
2246
- * the row's effective start; see `INVERTED_VALIDITY_WINDOW_CODE`.
2247
- */
2248
- validTo?: string;
2249
- }>;
2256
+ }> & ValidityEndMutation;
2250
2257
  /**
2251
2258
  * A collection of nodes of a specific type.
2252
2259
  *
@@ -2256,7 +2263,11 @@ type NodeCollection<N extends NodeType, CN extends string = string> = Readonly<{
2256
2263
  /**
2257
2264
  * Create a new node.
2258
2265
  *
2259
- * `validFrom` defaults to the operation's creation timestamp when omitted.
2266
+ * `validFrom` defaults to the operation's creation timestamp when omitted —
2267
+ * unless a stated `validTo` at or before that instant would leave the row
2268
+ * readable at no coordinate, in which case the row is stored with NO lower
2269
+ * bound ("ended at T, start unknown") and `meta.validFrom` reads back as
2270
+ * `undefined`. A future `validTo` is unaffected.
2260
2271
  */
2261
2272
  create: (props: z.input<N["schema"]>, options?: Readonly<{
2262
2273
  id?: string;
@@ -2267,10 +2278,11 @@ type NodeCollection<N extends NodeType, CN extends string = string> = Readonly<{
2267
2278
  getById: (id: NodeId<N>, options?: QueryOptions) => Promise<Node<N> | undefined>;
2268
2279
  /** Get multiple nodes by ID, preserving input order (undefined for missing) */
2269
2280
  getByIds: (ids: readonly NodeId<N>[], options?: QueryOptions) => Promise<readonly (Node<N> | undefined)[]>;
2270
- /** Update a node */
2271
- update: (id: NodeId<N>, props: Partial<z.input<N["schema"]>>, options?: Readonly<{
2272
- validTo?: string;
2273
- }>) => Promise<Node<N>>;
2281
+ /**
2282
+ * Update a node's properties and optionally set or clear its validity end.
2283
+ * Omitting both end options preserves the stored window.
2284
+ */
2285
+ update: (id: NodeId<N>, props: Partial<z.input<N["schema"]>>, options?: ValidityEndMutation) => Promise<Node<N>>;
2274
2286
  /**
2275
2287
  * Updates every current node selected by the supplied predicates in one
2276
2288
  * set-based write. Relationship clauses are independent EXISTS predicates
@@ -2324,7 +2336,11 @@ type NodeCollection<N extends NodeType, CN extends string = string> = Readonly<{
2324
2336
  * the data shape is determined at runtime, not compile time.
2325
2337
  * The return type is fully typed — only the input gate is relaxed.
2326
2338
  *
2327
- * `validFrom` defaults to the operation's creation timestamp when omitted.
2339
+ * `validFrom` defaults to the operation's creation timestamp when omitted —
2340
+ * unless a stated `validTo` at or before that instant would leave the row
2341
+ * readable at no coordinate, in which case the row is stored with NO lower
2342
+ * bound ("ended at T, start unknown") and `meta.validFrom` reads back as
2343
+ * `undefined`. A future `validTo` is unaffected.
2328
2344
  */
2329
2345
  createFromRecord: (data: Record<string, unknown>, options?: Readonly<{
2330
2346
  id?: string;
@@ -2339,9 +2355,15 @@ type NodeCollection<N extends NodeType, CN extends string = string> = Readonly<{
2339
2355
  *
2340
2356
  * `validFrom` applies when the upsert CREATES the row and when it RESURRECTS
2341
2357
  * a tombstoned one — both write a fresh validity window — defaulting to the
2342
- * operation's timestamp when omitted. An update to a LIVE row stores no lower
2343
- * bound, because that row's is already history, so one naming a different
2344
- * instant is REFUSED (`ValidationError` carrying
2358
+ * operation's timestamp when omitted. That default is dropped when a stated
2359
+ * `validTo` at or before the write instant would leave the row readable at no
2360
+ * coordinate: NO lower bound is stored ("ended at T, start unknown") and
2361
+ * `meta.validFrom` reads back as `undefined`. A RESURRECTION takes the same
2362
+ * exception, decided against the instant it samples, so one stated window
2363
+ * reaches ONE stored shape whether the id is fresh or names a tombstone. An
2364
+ * update to a LIVE row stores no lower bound, because that row's is already
2365
+ * history, so one naming a different instant is REFUSED (`ValidationError`
2366
+ * carrying
2345
2367
  * `IMMUTABLE_VALIDITY_LOWER_BOUND_CODE`) rather than ignored. Restating the
2346
2368
  * bound the row already holds is accepted and changes nothing. Set
2347
2369
  * `onImmutableLowerBound: "preserve"` for event materializers whose
@@ -2350,9 +2372,8 @@ type NodeCollection<N extends NodeType, CN extends string = string> = Readonly<{
2350
2372
  */
2351
2373
  upsertById: (id: string, props: z.input<N["schema"]>, options?: Readonly<{
2352
2374
  validFrom?: string;
2353
- validTo?: string;
2354
2375
  onImmutableLowerBound?: "preserve" | "refuse";
2355
- }>) => Promise<Node<N>>;
2376
+ }> & ValidityEndMutation) => Promise<Node<N>>;
2356
2377
  /**
2357
2378
  * Upsert a node from untyped data, relying on runtime Zod validation.
2358
2379
  *
@@ -2362,25 +2383,34 @@ type NodeCollection<N extends NodeType, CN extends string = string> = Readonly<{
2362
2383
  *
2363
2384
  * `validFrom` applies when the upsert CREATES the row and when it RESURRECTS
2364
2385
  * a tombstoned one — both write a fresh validity window — defaulting to the
2365
- * operation's timestamp when omitted. An update to a LIVE row stores no lower
2366
- * bound, because that row's is already history, so one naming a different
2367
- * instant is REFUSED (`ValidationError` carrying
2386
+ * operation's timestamp when omitted. That default is dropped when a stated
2387
+ * `validTo` at or before the write instant would leave the row readable at no
2388
+ * coordinate: NO lower bound is stored ("ended at T, start unknown") and
2389
+ * `meta.validFrom` reads back as `undefined`. A RESURRECTION takes the same
2390
+ * exception, decided against the instant it samples, so one stated window
2391
+ * reaches ONE stored shape whether the id is fresh or names a tombstone. An
2392
+ * update to a LIVE row stores no lower bound, because that row's is already
2393
+ * history, so one naming a different instant is REFUSED (`ValidationError`
2394
+ * carrying
2368
2395
  * `IMMUTABLE_VALIDITY_LOWER_BOUND_CODE`) rather than ignored. Restating the
2369
2396
  * bound the row already holds is accepted and changes nothing. Set
2370
2397
  * `onImmutableLowerBound: "preserve"` for create/resurrection-only input.
2371
2398
  */
2372
2399
  upsertByIdFromRecord: (id: string, data: Record<string, unknown>, options?: Readonly<{
2373
2400
  validFrom?: string;
2374
- validTo?: string;
2375
2401
  onImmutableLowerBound?: "preserve" | "refuse";
2376
- }>) => Promise<Node<N>>;
2402
+ }> & ValidityEndMutation) => Promise<Node<N>>;
2377
2403
  /**
2378
2404
  * Create multiple nodes in a batch.
2379
2405
  *
2380
2406
  * More efficient than calling create() multiple times.
2381
2407
  * Use `bulkInsert` for the dedicated fast path that skips returning results.
2382
2408
  *
2383
- * `validFrom` defaults to the operation's creation timestamp when omitted.
2409
+ * `validFrom` defaults to the operation's creation timestamp when omitted —
2410
+ * unless a stated `validTo` at or before that instant would leave the row
2411
+ * readable at no coordinate, in which case the row is stored with NO lower
2412
+ * bound ("ended at T, start unknown") and `meta.validFrom` reads back as
2413
+ * `undefined`. A future `validTo` is unaffected.
2384
2414
  */
2385
2415
  bulkCreate: (items: readonly Readonly<{
2386
2416
  props: z.input<N["schema"]>;
@@ -2402,7 +2432,12 @@ type NodeCollection<N extends NodeType, CN extends string = string> = Readonly<{
2402
2432
  *
2403
2433
  * `validFrom` applies when the upsert CREATES the row and when it RESURRECTS
2404
2434
  * a tombstoned one — both write a fresh validity window — defaulting to the
2405
- * operation's timestamp when omitted. An update to a LIVE row stores no lower
2435
+ * operation's timestamp when omitted. That default is dropped when a stated
2436
+ * `validTo` at or before the write instant would leave the row readable at no
2437
+ * coordinate: NO lower bound is stored ("ended at T, start unknown") and
2438
+ * `meta.validFrom` reads back as `undefined`. A RESURRECTION takes the same
2439
+ * exception, decided against the instant it samples, so one stated window
2440
+ * reaches ONE stored shape whether the id is fresh or names a tombstone. An update to a LIVE row stores no lower
2406
2441
  * bound, because that row's is already history, so one naming a different
2407
2442
  * instant is REFUSED (`ValidationError` carrying
2408
2443
  * `IMMUTABLE_VALIDITY_LOWER_BOUND_CODE`) rather than ignored. Restating the
@@ -2423,13 +2458,12 @@ type NodeCollection<N extends NodeType, CN extends string = string> = Readonly<{
2423
2458
  * the workaround is to split the handoff across two batches (release, then
2424
2459
  * claim) or to apply those items as sequential `upsertById` calls.
2425
2460
  */
2426
- bulkUpsertById: (items: readonly Readonly<{
2461
+ bulkUpsertById: (items: readonly (Readonly<{
2427
2462
  id: string;
2428
2463
  props: z.input<N["schema"]>;
2429
2464
  validFrom?: string;
2430
- validTo?: string;
2431
2465
  onImmutableLowerBound?: "preserve" | "refuse";
2432
- }>[]) => Promise<Node<N>[]>;
2466
+ }> & ValidityEndMutation)[]) => Promise<Node<N>[]>;
2433
2467
  /**
2434
2468
  * Insert multiple nodes without returning results.
2435
2469
  *
@@ -2437,7 +2471,11 @@ type NodeCollection<N extends NodeType, CN extends string = string> = Readonly<{
2437
2471
  * with `returnResults: false`, the intent is unambiguous: no results
2438
2472
  * are returned and the operation is wrapped in a transaction.
2439
2473
  *
2440
- * `validFrom` defaults to the operation's creation timestamp when omitted.
2474
+ * `validFrom` defaults to the operation's creation timestamp when omitted —
2475
+ * unless a stated `validTo` at or before that instant would leave the row
2476
+ * readable at no coordinate, in which case the row is stored with NO lower
2477
+ * bound ("ended at T, start unknown") and `meta.validFrom` reads back as
2478
+ * `undefined`. A future `validTo` is unaffected.
2441
2479
  */
2442
2480
  bulkInsert: (items: readonly Readonly<{
2443
2481
  props: z.input<N["schema"]>;
@@ -2572,7 +2610,11 @@ type EdgeCollection<E extends AnyEdgeType, From extends NodeType = NodeType, To
2572
2610
  /**
2573
2611
  * Create a new edge.
2574
2612
  *
2575
- * `validFrom` defaults to the operation's creation timestamp when omitted.
2613
+ * `validFrom` defaults to the operation's creation timestamp when omitted —
2614
+ * unless a stated `validTo` at or before that instant would leave the row
2615
+ * readable at no coordinate, in which case the row is stored with NO lower
2616
+ * bound ("ended at T, start unknown") and `meta.validFrom` reads back as
2617
+ * `undefined`. A future `validTo` is unaffected.
2576
2618
  *
2577
2619
  * @param from - Source node (must be one of the allowed 'from' types)
2578
2620
  * @param to - Target node (must be one of the allowed 'to' types)
@@ -2583,10 +2625,11 @@ type EdgeCollection<E extends AnyEdgeType, From extends NodeType = NodeType, To
2583
2625
  getById: (id: EdgeId<E>, options?: QueryOptions) => Promise<Edge<E, From, To> | undefined>;
2584
2626
  /** Get multiple edges by ID, preserving input order (undefined for missing) */
2585
2627
  getByIds: (ids: readonly EdgeId<E>[], options?: QueryOptions) => Promise<readonly (Edge<E, From, To> | undefined)[]>;
2586
- /** Update an edge's properties */
2587
- update: (id: EdgeId<E>, props: Partial<z.input<E["schema"]>>, options?: Readonly<{
2588
- validTo?: string;
2589
- }>) => Promise<Edge<E, From, To>>;
2628
+ /**
2629
+ * Update an edge's properties and optionally set or clear its validity end.
2630
+ * Reopening a `oneActive` edge rechecks cardinality before the write.
2631
+ */
2632
+ update: (id: EdgeId<E>, props: Partial<z.input<E["schema"]>>, options?: ValidityEndMutation) => Promise<Edge<E, From, To>>;
2590
2633
  /**
2591
2634
  * Find edges from a specific node.
2592
2635
  *
@@ -2695,7 +2738,11 @@ type EdgeCollection<E extends AnyEdgeType, From extends NodeType = NodeType, To
2695
2738
  * More efficient than calling create() multiple times.
2696
2739
  * Use `bulkInsert` for the dedicated fast path that skips returning results.
2697
2740
  *
2698
- * `validFrom` defaults to the operation's creation timestamp when omitted.
2741
+ * `validFrom` defaults to the operation's creation timestamp when omitted —
2742
+ * unless a stated `validTo` at or before that instant would leave the row
2743
+ * readable at no coordinate, in which case the row is stored with NO lower
2744
+ * bound ("ended at T, start unknown") and `meta.validFrom` reads back as
2745
+ * `undefined`. A future `validTo` is unaffected.
2699
2746
  */
2700
2747
  bulkCreate: (items: readonly Readonly<{
2701
2748
  from: NodeRef<From>;
@@ -2720,11 +2767,16 @@ type EdgeCollection<E extends AnyEdgeType, From extends NodeType = NodeType, To
2720
2767
  * is refused with `ValidationError` carrying
2721
2768
  * `EDGE_IDENTITY_MISMATCH_CODE`; it is never silently ignored.
2722
2769
  *
2723
- * `validFrom` applies when the upsert CREATES the row and when it RESURRECTS
2724
- * a tombstoned one — both write a fresh validity window — defaulting to the
2725
- * operation's timestamp when omitted. An update to a LIVE row stores no lower
2726
- * bound, because that row's is already history, so one naming a different
2727
- * instant is REFUSED (`ValidationError` carrying
2770
+ * `validFrom` applies when the upsert CREATES the edge and when it RESURRECTS
2771
+ * a tombstoned one. A create writes a fresh validity window, defaulting to the
2772
+ * operation's timestamp when omitted — unless a stated `validTo` at or before
2773
+ * that instant would leave the row readable at no coordinate, in which case NO
2774
+ * lower bound is stored ("ended at T, start unknown") and `meta.validFrom`
2775
+ * reads back as `undefined`. A resurrection stamps nothing: an edge RETAINS
2776
+ * its stored lower bound unless the item names a new one, so a `validTo`
2777
+ * before the retained bound is REFUSED rather than stamped over. An update to
2778
+ * a LIVE row stores no lower bound, because that row's is already history, so
2779
+ * one naming a different instant is REFUSED (`ValidationError` carrying
2728
2780
  * `IMMUTABLE_VALIDITY_LOWER_BOUND_CODE`) rather than ignored. Restating the
2729
2781
  * bound the row already holds is accepted and changes nothing.
2730
2782
  *
@@ -2740,14 +2792,13 @@ type EdgeCollection<E extends AnyEdgeType, From extends NodeType = NodeType, To
2740
2792
  * than silent, and the workaround is to split the handoff across two batches
2741
2793
  * (free the slot, then claim it) or to apply those items individually.
2742
2794
  */
2743
- bulkUpsertById: (items: readonly Readonly<{
2795
+ bulkUpsertById: (items: readonly (Readonly<{
2744
2796
  id: EdgeId<E>;
2745
2797
  from: NodeRef<From>;
2746
2798
  to: NodeRef<To>;
2747
2799
  props?: z.input<E["schema"]>;
2748
2800
  validFrom?: string;
2749
- validTo?: string;
2750
- }>[]) => Promise<Edge<E, From, To>[]>;
2801
+ }> & ValidityEndMutation)[]) => Promise<Edge<E, From, To>[]>;
2751
2802
  /**
2752
2803
  * Insert multiple edges without returning results.
2753
2804
  *
@@ -2755,7 +2806,11 @@ type EdgeCollection<E extends AnyEdgeType, From extends NodeType = NodeType, To
2755
2806
  * with `returnResults: false`, the intent is unambiguous: no results
2756
2807
  * are returned and the operation is wrapped in a transaction.
2757
2808
  *
2758
- * `validFrom` defaults to the operation's creation timestamp when omitted.
2809
+ * `validFrom` defaults to the operation's creation timestamp when omitted —
2810
+ * unless a stated `validTo` at or before that instant would leave the row
2811
+ * readable at no coordinate, in which case the row is stored with NO lower
2812
+ * bound ("ended at T, start unknown") and `meta.validFrom` reads back as
2813
+ * `undefined`. A future `validTo` is unaffected.
2759
2814
  */
2760
2815
  bulkInsert: (items: readonly Readonly<{
2761
2816
  from: NodeRef<From>;
@@ -2802,8 +2857,13 @@ type EdgeCollection<E extends AnyEdgeType, From extends NodeType = NodeType, To
2802
2857
  * property fields, only edges whose properties match on those fields are considered.
2803
2858
  * Soft-deleted matches are resurrected when cardinality allows.
2804
2859
  *
2805
- * `validFrom` applies on the create and RESURRECT branches, defaulting to the
2806
- * operation's creation timestamp when omitted. On the `ifExists: "update"`
2860
+ * `validFrom` applies on the create and RESURRECT branches. A create defaults
2861
+ * it to the operation's creation timestamp when omitted — unless a stated
2862
+ * `validTo` at or before that instant would leave the row readable at no
2863
+ * coordinate, in which case no lower bound is stored ("ended at T, start
2864
+ * unknown"). A resurrection stamps nothing: an edge RETAINS its stored lower
2865
+ * bound unless the call names a new one, so a `validTo` before the retained
2866
+ * bound is REFUSED rather than stamped over. On the `ifExists: "update"`
2807
2867
  * branch a live edge's lower bound is history and cannot be stored, so a
2808
2868
  * `validFrom` naming a different instant is REFUSED (`ValidationError`
2809
2869
  * carrying `IMMUTABLE_VALIDITY_LOWER_BOUND_CODE`); restating the bound the
@@ -2824,14 +2884,13 @@ type EdgeCollection<E extends AnyEdgeType, From extends NodeType = NodeType, To
2824
2884
  * Results are returned in the same order as the input items.
2825
2885
  * Atomic when the backend supports transactions.
2826
2886
  */
2827
- bulkGetOrCreateByEndpoints: (items: readonly Readonly<{
2887
+ bulkGetOrCreateByEndpoints: (items: readonly (Readonly<{
2828
2888
  from: NodeRef<From>;
2829
2889
  to: NodeRef<To>;
2830
2890
  props: z.input<E["schema"]>;
2831
2891
  validFrom?: string;
2832
- validTo?: string;
2833
2892
  onImmutableLowerBound?: "preserve" | "refuse";
2834
- }>[], options?: Pick<EdgeGetOrCreateByEndpointsOptions<E>, "matchOn" | "ifExists">) => Promise<EdgeGetOrCreateByEndpointsResult<E, From, To>[]>;
2893
+ }> & ValidityEndMutation)[], options?: Pick<EdgeGetOrCreateByEndpointsOptions<E>, "matchOn" | "ifExists">) => Promise<EdgeGetOrCreateByEndpointsResult<E, From, To>[]>;
2835
2894
  }>;
2836
2895
  /**
2837
2896
  * Extract uniqueness constraint names from a NodeRegistration.
@@ -3042,7 +3101,7 @@ type TransactionCollections<G extends GraphDef> = Readonly<{
3042
3101
  * `Store.getNodeCollection`. Returns `undefined` when `kind` is not
3043
3102
  * registered in this graph.
3044
3103
  */
3045
- getNodeCollection: (kind: string) => DynamicNodeCollection | undefined;
3104
+ getNodeCollection: <const K extends string>(kind: K) => DynamicNodeCollection<K> | undefined;
3046
3105
  }> & (G["identity"] extends GraphIdentityConfig ? Readonly<{
3047
3106
  identity: IdentityFacade<G>;
3048
3107
  }> : Readonly<Record<never, never>>);
@@ -3098,6 +3157,20 @@ type MeasurableTransactionContext<G extends GraphDef> = TransactionContext<G> &
3098
3157
  type MeasurableAdapterTransactionContext<G extends GraphDef, TNativeTransaction> = AdapterTransactionContext<G, TNativeTransaction> & Readonly<{
3099
3158
  measure: ScopedMeasure<MeasurableAdapterTransactionContext<G, TNativeTransaction>>;
3100
3159
  }>;
3160
+ /**
3161
+ * A node returned by a runtime string-keyed collection.
3162
+ *
3163
+ * Its nominal node-type brand proves the value passed through the dynamic
3164
+ * collection API while its properties remain runtime-schema-shaped.
3165
+ */
3166
+ type DynamicNode<K extends string = string> = Node<DynamicNodeType<K>>;
3167
+ declare const DYNAMIC_NODE_REFERENCE_BRAND: unique symbol;
3168
+ /** A nominal lightweight reference returned by runtime-aware identity reads. */
3169
+ type DynamicNodeReference<K extends string = string> = Readonly<{
3170
+ kind: DynamicNodeKind<K>;
3171
+ id: NodeId<DynamicNodeType<K>>;
3172
+ [DYNAMIC_NODE_REFERENCE_BRAND]: true;
3173
+ }>;
3101
3174
  /**
3102
3175
  * Replace branded `NodeId` / `EdgeId` with plain `string` in each
3103
3176
  * method's parameter list. Return types are preserved unchanged.
@@ -3122,15 +3195,15 @@ type UnbrandRecord<T extends Record<string, unknown>> = {
3122
3195
  * A node collection with widened generics for runtime string-keyed access.
3123
3196
  *
3124
3197
  * This is the return type of `store.getNodeCollection(kind)`. It exposes
3125
- * the full `NodeCollection` API but with `NodeType` and `string` constraint
3126
- * names instead of the specific generic parameters, since the concrete type
3127
- * is not known at compile time.
3198
+ * the full `NodeCollection` API but with a nominal `DynamicNodeType` and
3199
+ * `string` constraint names instead of the specific generic parameters, since
3200
+ * the concrete type is not known at compile time.
3128
3201
  *
3129
3202
  * ID parameters accept plain `string` instead of branded `NodeId<N>`, since
3130
3203
  * the dynamic path typically receives IDs from edge metadata, snapshots,
3131
3204
  * or external input where the brand is not available.
3132
3205
  */
3133
- type DynamicNodeCollection = WidenBrandedIds<NodeCollection<NodeType, string>>;
3206
+ type DynamicNodeCollection<K extends string = string> = WidenBrandedIds<NodeCollection<DynamicNodeType<K>, string>>;
3134
3207
  /**
3135
3208
  * An edge collection with widened generics for runtime string-keyed access.
3136
3209
  *
@@ -3182,19 +3255,28 @@ type StoreProjection<G extends GraphDef, N extends keyof G["nodes"] & string = n
3182
3255
  }>;
3183
3256
 
3184
3257
  /**
3185
- * The loose *input* form every identity facade method accepts: a whole node, a
3186
- * bare id, or a `{ kind, id }` pair, for any node kind in the graph. Its kind
3187
- * and id are independent, so a caller can pass what it already has without
3188
- * re-correlating them.
3258
+ * The accepted *input* form for every identity facade method: a whole node or
3259
+ * a `{ kind, id }` pair for any compile-time graph kind, plus a proof-bearing
3260
+ * node or reference produced through the runtime collection lane. Runtime
3261
+ * values stay nominal so accepting them does not make an arbitrary
3262
+ * `{ kind: string, id: string }` object type-safe.
3263
+ *
3264
+ * Identity results use {@link IdentityNodeReference}, which honestly includes
3265
+ * runtime kinds because an evolved kind can belong to a class reached from a
3266
+ * compile-time node.
3267
+ */
3268
+ type IdentityNodeRefInput<G extends GraphDef> = NodeRef<AllNodeTypes<G>> | DynamicNode | DynamicNodeReference;
3269
+ /**
3270
+ * A node reference returned by Operational Identity.
3189
3271
  *
3190
- * Identity *results* use the strict {@link GraphNodeReference} instead, whose
3191
- * `kind` and branded `id` stay correlated.
3272
+ * Identity classes can contain runtime-evolved kinds even when a read starts
3273
+ * from a compile-time node, so results honestly include both lanes.
3192
3274
  */
3193
- type IdentityNodeRefInput<G extends GraphDef> = NodeRef<AllNodeTypes<G>>;
3194
- /** A hydrated identity member, discriminated by its registered node kind. */
3275
+ type IdentityNodeReference<G extends GraphDef> = GraphNodeReference<G> | DynamicNodeReference;
3276
+ /** A hydrated compile-time or runtime identity member. */
3195
3277
  type IdentityNode<G extends GraphDef> = {
3196
3278
  [K in NodeKinds<G>]: Node<G["nodes"][K]["type"]>;
3197
- }[NodeKinds<G>];
3279
+ }[NodeKinds<G>] | DynamicNode;
3198
3280
  declare const __identityAssertionId: unique symbol;
3199
3281
  type IdentityAssertionId = string & Readonly<{
3200
3282
  [__identityAssertionId]: true;
@@ -3224,8 +3306,8 @@ type IdentityRelation = "same" | "different";
3224
3306
  type IdentityAssertion<G extends GraphDef> = Readonly<{
3225
3307
  id: IdentityAssertionId;
3226
3308
  relation: IdentityRelation;
3227
- a: GraphNodeReference<G>;
3228
- b: GraphNodeReference<G>;
3309
+ a: IdentityNodeReference<G>;
3310
+ b: IdentityNodeReference<G>;
3229
3311
  validFrom: string;
3230
3312
  validTo?: string;
3231
3313
  }>;
@@ -3234,11 +3316,16 @@ type IdentityAssertionResult<G extends GraphDef> = Readonly<{
3234
3316
  assertion: IdentityAssertion<G>;
3235
3317
  action: "created" | "existing";
3236
3318
  }>;
3319
+ /** The half-open effective-time window of an identity assertion. */
3320
+ type IdentityValidityWindow = Readonly<{
3321
+ validFrom?: string;
3322
+ validTo?: string;
3323
+ }>;
3237
3324
  /** One ordered node pair handed to `bulkAssertSame` / `bulkAssertDifferent`. */
3238
3325
  type IdentityPair<G extends GraphDef> = Readonly<{
3239
3326
  a: IdentityNodeRefInput<G>;
3240
3327
  b: IdentityNodeRefInput<G>;
3241
- }>;
3328
+ }> & IdentityValidityWindow;
3242
3329
  /**
3243
3330
  * The read half of the identity surface: equivalence-set membership,
3244
3331
  * representative selection, and the assertions behind them.
@@ -3248,8 +3335,8 @@ type IdentityPair<G extends GraphDef> = Readonly<{
3248
3335
  * The full read+write surface is {@link IdentityFacade}.
3249
3336
  */
3250
3337
  type IdentityReadFacade<G extends GraphDef> = Readonly<{
3251
- representativeOf: (ref: IdentityNodeRefInput<G>) => Promise<GraphNodeReference<G> | undefined>;
3252
- membersOf: (ref: IdentityNodeRefInput<G>) => Promise<readonly GraphNodeReference<G>[]>;
3338
+ representativeOf: (ref: IdentityNodeRefInput<G>) => Promise<IdentityNodeReference<G> | undefined>;
3339
+ membersOf: (ref: IdentityNodeRefInput<G>) => Promise<readonly IdentityNodeReference<G>[]>;
3253
3340
  nodesOf: (ref: IdentityNodeRefInput<G>) => Promise<readonly IdentityNode<G>[]>;
3254
3341
  areSame: (a: IdentityNodeRefInput<G>, b: IdentityNodeRefInput<G>) => Promise<boolean>;
3255
3342
  areDifferent: (a: IdentityNodeRefInput<G>, b: IdentityNodeRefInput<G>) => Promise<boolean>;
@@ -3265,8 +3352,8 @@ type IdentityReadFacade<G extends GraphDef> = Readonly<{
3265
3352
  * `action: "existing"` rather than duplicating it.
3266
3353
  */
3267
3354
  type IdentityFacade<G extends GraphDef> = IdentityReadFacade<G> & Readonly<{
3268
- assertSame: (a: IdentityNodeRefInput<G>, b: IdentityNodeRefInput<G>) => Promise<IdentityAssertionResult<G>>;
3269
- assertDifferent: (a: IdentityNodeRefInput<G>, b: IdentityNodeRefInput<G>) => Promise<IdentityAssertionResult<G>>;
3355
+ assertSame: (a: IdentityNodeRefInput<G>, b: IdentityNodeRefInput<G>, window?: IdentityValidityWindow) => Promise<IdentityAssertionResult<G>>;
3356
+ assertDifferent: (a: IdentityNodeRefInput<G>, b: IdentityNodeRefInput<G>, window?: IdentityValidityWindow) => Promise<IdentityAssertionResult<G>>;
3270
3357
  bulkAssertSame: (pairs: readonly IdentityPair<G>[]) => Promise<readonly IdentityAssertionResult<G>[]>;
3271
3358
  bulkAssertDifferent: (pairs: readonly IdentityPair<G>[]) => Promise<readonly IdentityAssertionResult<G>[]>;
3272
3359
  retractAssertion: (id: IdentityAssertionId) => Promise<IdentityAssertion<G> | undefined>;
@@ -3733,7 +3820,7 @@ type InternalGraphAlgorithms<G extends GraphDef> = Readonly<{
3733
3820
  */
3734
3821
  declare const HISTORY_STORE_BACKEND_KEYS: readonly ["assertRuntimeContributionsInitialized", "assertVectorSlotInitialized", "assertVectorSlotsInitialized", "bootstrapTables", "capabilities", "checkUnique", "checkUniqueBatch", "claimIndexMaterialization", "close", "commitSchemaVersion", "commitSchemaVersionIfKindsEmpty", "lockSchemaVersionForWrite", "compileSql", "countEdgesByKind", "countEdgesFrom", "countNodesByKind", "createVectorIndex", "deleteEdge", "deleteEdgesBatch", "deleteEmbedding", "deleteEmbeddingBatch", "deleteFulltext", "deleteFulltextBatch", "deleteNode", "deleteUnique", "hardDeleteUniquesByNodeIds", "deleteVectorSlotContribution", "dialect", "dropVectorIndex", "edgeExistsBetween", "ensureContributionMaterializationsTable", "ensureFulltextTable", "ensureIndexMaterializationsTable", "ensureKindRemovalsTable", "ensureReconciliationMarkersTable", "ensureRevisionOriginsTable", "ensureRuntimeContributions", "ensureVectorSlotContribution", "ensureVectorSlotContributions", "execute", "executeTemporaryStatement", "findEdgesByKind", "findEdgesByEndpointSet", "findEdgesByHeterogeneousEndpointSet", "findEdgesConnectedTo", "findNodesByKind", "fulltextSearch", "fulltextStrategy", "getActiveSchema", "getAllKindRemovals", "getContributionMaterialization", "getEdge", "getEdges", "getIndexMaterialization", "getIndexMaterializations", "getNode", "getNodes", "getPendingKindRemovals", "getReconciliationMarker", "getSchemaVersion", "hardDeleteEdge", "hardDeleteEdgesBatch", "hardDeleteNode", "hardDeleteUniquesByNodeIds", "hybridSearch", "insertEdge", "insertEdgeNoReturn", "insertEdgesBatch", "insertEdgesBatchReturning", "insertNode", "insertNodeNoReturn", "insertNodesBatch", "insertNodesBatchReturning", "insertUnique", "insertUniqueBatch", "probeContributions", "recordContributionMaterialization", "recordIndexMaterialization", "recordKindRemoval", "refreshStatistics", "releaseIndexMaterializationClaim", "setActiveVersion", "setReconciliationMarker", "tableNames", "updateEdge", "updateNode", "updateNodeSet", "upsertEmbedding", "upsertEmbeddingBatch", "upsertFulltext", "upsertFulltextBatch", "vectorSearch", "vectorStrategy", "verifyContributions"];
3735
3822
  type HistoryStoreBackendMember = (typeof HISTORY_STORE_BACKEND_KEYS)[number];
3736
- type UnsafeHistoryStoreBackendMember = "clearGraph" | "commitSchemaVersionWithPreflight" | "executeDdl" | "executeRaw" | "executeStatement" | "ensureIdentityTables" | "identityTableDdl" | "rebuildContribution" | "repairContributions" | "schemaWriteTransaction" | "transaction" | "trustedImport";
3823
+ type UnsafeHistoryStoreBackendMember = "clearGraph" | "commitSchemaVersionWithPreflight" | "executeDdl" | "executeRaw" | "executeStatement" | "ensureIdentityTables" | "ensureTrigramExtension" | "identityTableDdl" | "rebuildContribution" | "repairContributions" | "schemaWriteTransaction" | "transaction" | "trustedImport";
3737
3824
  type UnclassifiedHistoryStoreBackendMember = Exclude<keyof GraphBackend, HistoryStoreBackendMember | UnsafeHistoryStoreBackendMember>;
3738
3825
  type HistoryStoreBackend = UnclassifiedHistoryStoreBackendMember extends never ? Readonly<Pick<GraphBackend, HistoryStoreBackendMember>> : never;
3739
3826
 
@@ -4068,6 +4155,22 @@ declare const STORE_RUNTIME: unique symbol;
4068
4155
  */
4069
4156
  type StoreRuntime<G extends GraphDef> = Readonly<{
4070
4157
  backend: GraphBackend;
4158
+ /**
4159
+ * @internal The backend this Store's queries actually execute through for
4160
+ * `target` — the Store's own backend when `target` is omitted.
4161
+ *
4162
+ * It is the SAME private construction the query path uses rather than a
4163
+ * reconstruction of it, because the object it returns is the one a lost
4164
+ * derivation corrupts: the hooked query backend is a transient local inside
4165
+ * query construction that is stored nowhere, so no other handle on it exists
4166
+ * and a regression there is invisible to every assertion about
4167
+ * {@link StoreRuntime.backend}.
4168
+ *
4169
+ * NOTE for anything asserting on it: with no query hook configured this
4170
+ * returns its argument unchanged, so a hookless Store answers with the very
4171
+ * object it was handed and a comparison against that object is a tautology.
4172
+ */
4173
+ queryBackend: (target?: GraphBackend | TransactionBackend) => GraphBackend;
4071
4174
  sealedQuery: (coordinate: ReadCoordinate) => InitialQueryBuilder<G, "sealed">;
4072
4175
  recordedNodeGetById: <N extends NodeType>(kind: string, id: NodeId<N>, coordinate: ReadCoordinate) => Promise<Node<N> | undefined>;
4073
4176
  recordedNodeGetByIds: <N extends NodeType>(kind: string, ids: readonly NodeId<N>[], coordinate: ReadCoordinate) => Promise<readonly (Node<N> | undefined)[]>;
@@ -4080,6 +4183,22 @@ type StoreRuntime<G extends GraphDef> = Readonly<{
4080
4183
  identityAtCoordinate: (coordinate: ReadCoordinate) => IdentityReadFacade<G>;
4081
4184
  rebuildIdentityClosure: () => Promise<void>;
4082
4185
  validateIdentity: () => Promise<void>;
4186
+ /**
4187
+ * Validates one final resolved node write set, then clears the affected
4188
+ * uniqueness sidecars so its upserts may claim their approved keys in any
4189
+ * order. The caller must supply a transaction-bound backend.
4190
+ */
4191
+ applyResolvedNodeUniqueness: <Output>(target: TransactionBackend, writes: Readonly<{
4192
+ upserts: readonly Readonly<{
4193
+ kind: string;
4194
+ id: string;
4195
+ props: Readonly<Record<string, unknown>>;
4196
+ }>[];
4197
+ releases: readonly Readonly<{
4198
+ kind: string;
4199
+ id: string;
4200
+ }>[];
4201
+ }>, apply: () => Promise<Output>) => Promise<Output>;
4083
4202
  /**
4084
4203
  * @internal Reads the graph's identity assertions in transfer shape, honoring
4085
4204
  * this store's SQL binding. Used by interchange export, base-version
@@ -4225,7 +4344,24 @@ type StoreRuntime<G extends GraphDef> = Readonly<{
4225
4344
  created: number;
4226
4345
  skipped: number;
4227
4346
  }>>;
4228
- applyIdentityMergeAtTarget: (target: GraphBackend | TransactionBackend, retractionIds: readonly string[], assertions: readonly Readonly<{
4347
+ applyIdentityMergeAtTarget: (target: GraphBackend | TransactionBackend, retractions: readonly Readonly<{
4348
+ id: string;
4349
+ relation: "same" | "different";
4350
+ a: Readonly<{
4351
+ kind: string;
4352
+ id: string;
4353
+ }>;
4354
+ b: Readonly<{
4355
+ kind: string;
4356
+ id: string;
4357
+ }>;
4358
+ validFrom: string;
4359
+ validTo?: string | undefined;
4360
+ endedBy?: Readonly<{
4361
+ kind: string;
4362
+ id: string;
4363
+ }> | undefined;
4364
+ }>[], assertions: readonly Readonly<{
4229
4365
  id: string;
4230
4366
  relation: "same" | "different";
4231
4367
  a: Readonly<{
@@ -4894,8 +5030,8 @@ type StoreCore<G extends GraphDef> = Readonly<{
4894
5030
  edges: GraphEdgeCollections<G>;
4895
5031
  algorithms: GraphAlgorithms<G>;
4896
5032
  search: StoreSearch<G>;
4897
- getNodeCollection: (kind: string) => DynamicNodeCollection | undefined;
4898
- getNodeCollectionOrThrow: (kind: string) => DynamicNodeCollection;
5033
+ getNodeCollection: <const K extends string>(kind: K) => DynamicNodeCollection<K> | undefined;
5034
+ getNodeCollectionOrThrow: <const K extends string>(kind: K) => DynamicNodeCollection<K>;
4899
5035
  getEdgeCollection: (kind: string) => DynamicEdgeCollection | undefined;
4900
5036
  getEdgeCollectionOrThrow: (kind: string) => DynamicEdgeCollection;
4901
5037
  getNodePropsSchema: (kind: string) => z.ZodObject<z.ZodRawShape> | undefined;
@@ -5227,4 +5363,4 @@ declare function createVerifiedAdapterStore<G extends GraphDef, TNativeTransacti
5227
5363
  SchemaValidationResult
5228
5364
  ]>;
5229
5365
 
5230
- export { type DynamicNodeCollection as $, type AliasMap as A, type BaseStoreOptions as B, type BatchResults as C, type BatchableQuery as D, type EdgeAliasMap as E, type BulkEdgeSourceGroup as F, type BulkFindEdgesFromParams as G, type HistoryStoreOptions as H, type IdentityAssertion as I, type BulkFindEdgesFromResult as J, type BulkOperationHookContext as K, type LiveStoreOptions as L, type ConstraintNames as M, type Node as N, type CreateEdgeInput as O, type CreateNodeInput as P, type QueryCoordinateState as Q, type RecordedReadStoreOptions as R, type StoreOptions as S, TraversalBuilder as T, type UnboundLiveStoreOptions as U, type DegreeOptions as V, type DynamicEdgeAccessor as W, type DynamicEdgeCollection as X, type DynamicEdgeType as Y, type DynamicFieldBuilder as Z, type DynamicNodeAccessor as _, type Store as a, type PaginateOptions as a$, type DynamicNodeType as a0, type DynamicSelectableEdge as a1, type DynamicSelectableNode as a2, type Edge as a3, type EdgeAccessor as a4, type EdgeBatchReads as a5, type EdgeBulkFindEndpointOptions as a6, type EdgeBulkFindOptions as a7, type EdgeCollection as a8, type EdgeFindByEndpointsOptions as a9, type InitialQueryBuilder as aA, type KindIntrospection as aB, type LabelPropagationMembership as aC, type LabelPropagationOptions as aD, type MaterializeRemovalsEntry as aE, type MaterializeRemovalsOptions as aF, type MaterializeRemovalsResult as aG, type MeasurableAdapterHistoryTransactionContext as aH, type MeasurableAdapterTransactionContext as aI, type MeasurableTransactionContext as aJ, type NeighborsOptions as aK, type NoRecordedCoordinate as aL, type NodeAccessor as aM, type NodeAlias as aN, type NodeBulkFindByIndexOptions as aO, type NodeCollection as aP, type NodeCurrentReads as aQ, type NodeGetOrCreateByConstraintOptions as aR, type NodeGetOrCreateByConstraintResult as aS, type NodeIdentifier as aT, type NodeRef as aU, type NodeTemporalReads as aV, type NodeWrites as aW, type OntologyIntrospection as aX, type OperationHookContext as aY, type PageRankOptions as aZ, type PageRankScore as a_, type EdgeGetOrCreateByEndpointsOptions as aa, type EdgeGetOrCreateByEndpointsResult as ab, type EdgeIntrospection as ac, type EdgeTemporalReads as ad, type EdgeWrites as ae, type EmptyAliasMap as af, type EmptyEdgeAliasMap as ag, ExecutableAggregateQuery as ah, ExecutableQuery as ai, type FieldAccessor as aj, type FulltextSearchHit as ak, type FulltextSearchOptions as al, type GetOrCreateAction as am, type GraphAlgorithms as an, type GraphEdgeCollections as ao, type GraphEdgeForKinds as ap, type GraphNodeCollections as aq, type GraphNodeReference as ar, type HistoryStoreBackend as as, type HookContext as at, type HybridFulltextOptions as au, type HybridSearchHit as av, type HybridSearchOptions as aw, type HybridVectorOptions as ax, type IdentityTraversalOption as ay, type IfExistsMode as az, type HistoryStore as b, type SubsetEdge as b$, type PaginatedResult as b0, type PathNode as b1, type PersonalizedPageRankOptions as b2, type PersonalizedPageRankSeed as b3, type Predicate as b4, PreparedQuery as b5, type PropsAccessor as b6, type QueryHookContext as b7, type QueryOptions as b8, type ReachableNode as b9, type StoreHooks as bA, type StoreProjection as bB, type StoreRef as bC, StoreSearch as bD, StoreView as bE, type StoreViewCanReachOptions as bF, type StoreViewCoordinate as bG, type StoreViewDegreeOptions as bH, type StoreViewEdgeCollection as bI, type StoreViewEdgeCollections as bJ, type StoreViewGraphAlgorithms as bK, type StoreViewLabelPropagationOptions as bL, type StoreViewNeighborsOptions as bM, type StoreViewNodeCollection as bN, type StoreViewNodeCollections as bO, type StoreViewPageRankOptions as bP, type StoreViewPersonalizedPageRankOptions as bQ, type StoreViewReachableOptions as bR, type StoreViewShortestPathOptions as bS, type StoreViewSubgraphOptions as bT, type StoreViewWeaklyConnectedComponentsOptions as bU, type StoreViewWeightedShortestPathOptions as bV, type StreamOptions as bW, type SubgraphEdgeResult as bX, type SubgraphNodeResult as bY, type SubgraphOptions as bZ, type SubgraphResult as b_, type ReachableOptions as ba, type RebuildContributionOptions as bb, type RebuildFulltextOptions as bc, type RebuildFulltextResult as bd, type ReclaimedVectorFieldEntry as be, type ReconciledSchema as bf, type RecordedScanOptions as bg, type RecordedScanPage as bh, RecordedStoreView as bi, type RecordedStoreViewEdgeCollection as bj, type RecordedStoreViewEdgeCollections as bk, type RecordedStoreViewNodeCollection as bl, type RecordedStoreViewNodeCollections as bm, type RecursiveTraversalOptions as bn, type ReembedFunction as bo, type ReembedVectorFieldOptions as bp, type ReembedVectorFieldResult as bq, type SchemaIntrospection as br, type ScopedMeasure as bs, type SearchScopeOptions as bt, type SelectContext as bu, type SelectableEdge as bv, type SelectableNode as bw, type ShortestPathOptions as bx, type ShortestPathResult as by, type SqlAvailability as bz, type RecordedReadStore as c, type SubsetNode as c0, type TemporalAlgorithmOptions as c1, type TransactionContext as c2, type TransactionOutcome as c3, type TransactionReceipt as c4, type TraversalDirection as c5, type TypedEdgeCollection as c6, type TypedRecordedStoreViewEdgeCollection as c7, type TypedStoreViewEdgeCollection as c8, UnionableQuery as c9, type UpdateEdgeInput as ca, type UpdateNodeInput as cb, type VectorSearchHit as cc, type VectorSearchOptions as cd, type WeaklyConnectedComponentMembership as ce, type WeaklyConnectedComponentsOptions as cf, type WeightedShortestPathOptions as cg, type WeightedShortestPathResult as ch, asIdentityAssertionId as ci, createAdapterStore as cj, createAdapterStoreWithSchema as ck, createQueryBuilder as cl, createStore as cm, createStoreWithSchema as cn, createVerifiedAdapterStore as co, createVerifiedStore as cp, defineSubgraphProject as cq, exists as cr, fieldRef as cs, inSubquery as ct, isParameterRef as cu, notExists as cv, notInSubquery as cw, param as cx, type IdentityAssertionId as d, type IdentityAssertionResult as e, type IdentityFacade as f, type IdentityNode as g, type IdentityNodeRefInput as h, type IdentityPair as i, type IdentityReadFacade as j, type IdentityRelation as k, type IdentityWriteSummary as l, type UniqueIntrospection as m, type RecursiveAliasMap as n, QueryBuilder as o, type EmptyRecursiveAliasMap as p, type AdapterHistoryStore as q, type AdapterHistoryTransactionContext as r, type AdapterRecordedReadStore as s, type AdapterStore as t, type AdapterTransactionContext as u, type AggregateResult as v, type AlgorithmCyclePolicy as w, type AnyEdge as x, type AnyNode as y, type BaseTraversalOptions as z };
5366
+ export { type DynamicNodeKind as $, type AliasMap as A, type BaseStoreOptions as B, type BatchableQuery as C, type BulkEdgeSourceGroup as D, type EdgeAliasMap as E, type BulkFindEdgesFromParams as F, type BulkFindEdgesFromResult as G, type HistoryStoreOptions as H, type IdentityAssertion as I, type BulkOperationHookContext as J, type ConstraintNames as K, type LiveStoreOptions as L, type CreateEdgeInput as M, type CreateNodeInput as N, type DegreeOptions as O, type DynamicEdgeAccessor as P, type QueryCoordinateState as Q, type RecordedReadStoreOptions as R, type StoreOptions as S, TraversalBuilder as T, type UnboundLiveStoreOptions as U, type DynamicEdgeCollection as V, type DynamicEdgeType as W, type DynamicFieldBuilder as X, type DynamicNode as Y, type DynamicNodeAccessor as Z, type DynamicNodeCollection as _, type Store as a, type OntologyIntrospection as a$, type DynamicNodeReference as a0, type DynamicNodeType as a1, type DynamicSelectableEdge as a2, type DynamicSelectableNode as a3, type Edge as a4, type EdgeAccessor as a5, type EdgeBatchReads as a6, type EdgeBulkFindEndpointOptions as a7, type EdgeBulkFindOptions as a8, type EdgeCollection as a9, type IdentityTraversalOption as aA, type IdentityValidityWindow as aB, type IfExistsMode as aC, type InitialQueryBuilder as aD, type KindIntrospection as aE, type LabelPropagationMembership as aF, type LabelPropagationOptions as aG, type MaterializeRemovalsEntry as aH, type MaterializeRemovalsOptions as aI, type MaterializeRemovalsResult as aJ, type MeasurableAdapterHistoryTransactionContext as aK, type MeasurableAdapterTransactionContext as aL, type MeasurableTransactionContext as aM, type NeighborsOptions as aN, type NoRecordedCoordinate as aO, type Node as aP, type NodeAccessor as aQ, type NodeAlias as aR, type NodeBulkFindByIndexOptions as aS, type NodeCollection as aT, type NodeCurrentReads as aU, type NodeGetOrCreateByConstraintOptions as aV, type NodeGetOrCreateByConstraintResult as aW, type NodeIdentifier as aX, type NodeRef as aY, type NodeTemporalReads as aZ, type NodeWrites as a_, type EdgeFindByEndpointsOptions as aa, type EdgeGetOrCreateByEndpointsOptions as ab, type EdgeGetOrCreateByEndpointsResult as ac, type EdgeIntrospection as ad, type EdgeTemporalReads as ae, type EdgeWrites as af, type EmptyAliasMap as ag, type EmptyEdgeAliasMap as ah, ExecutableAggregateQuery as ai, ExecutableQuery as aj, type FieldAccessor as ak, type FulltextSearchHit as al, type FulltextSearchOptions as am, type GetOrCreateAction as an, type GraphAlgorithms as ao, type GraphEdgeCollections as ap, type GraphEdgeForKinds as aq, type GraphNodeCollections as ar, type GraphNodeReference as as, type HistoryStoreBackend as at, type HookContext as au, type HybridFulltextOptions as av, type HybridSearchHit as aw, type HybridSearchOptions as ax, type HybridVectorOptions as ay, type IdentityNodeReference as az, type HistoryStore as b, type SubgraphEdgeResult as b$, type OperationHookContext as b0, type PageRankOptions as b1, type PageRankScore as b2, type PaginateOptions as b3, type PaginatedResult as b4, type PathNode as b5, type PersonalizedPageRankOptions as b6, type PersonalizedPageRankSeed as b7, type Predicate as b8, PreparedQuery as b9, type SelectableNode as bA, type ShortestPathOptions as bB, type ShortestPathResult as bC, type SqlAvailability as bD, type StoreHooks as bE, type StoreProjection as bF, type StoreRef as bG, StoreSearch as bH, StoreView as bI, type StoreViewCanReachOptions as bJ, type StoreViewCoordinate as bK, type StoreViewDegreeOptions as bL, type StoreViewEdgeCollection as bM, type StoreViewEdgeCollections as bN, type StoreViewGraphAlgorithms as bO, type StoreViewLabelPropagationOptions as bP, type StoreViewNeighborsOptions as bQ, type StoreViewNodeCollection as bR, type StoreViewNodeCollections as bS, type StoreViewPageRankOptions as bT, type StoreViewPersonalizedPageRankOptions as bU, type StoreViewReachableOptions as bV, type StoreViewShortestPathOptions as bW, type StoreViewSubgraphOptions as bX, type StoreViewWeaklyConnectedComponentsOptions as bY, type StoreViewWeightedShortestPathOptions as bZ, type StreamOptions as b_, type PropsAccessor as ba, type QueryHookContext as bb, type QueryOptions as bc, type ReachableNode as bd, type ReachableOptions as be, type RebuildContributionOptions as bf, type RebuildFulltextOptions as bg, type RebuildFulltextResult as bh, type ReclaimedVectorFieldEntry as bi, type ReconciledSchema as bj, type RecordedScanOptions as bk, type RecordedScanPage as bl, RecordedStoreView as bm, type RecordedStoreViewEdgeCollection as bn, type RecordedStoreViewEdgeCollections as bo, type RecordedStoreViewNodeCollection as bp, type RecordedStoreViewNodeCollections as bq, type RecursiveTraversalOptions as br, type ReembedFunction as bs, type ReembedVectorFieldOptions as bt, type ReembedVectorFieldResult as bu, type SchemaIntrospection as bv, type ScopedMeasure as bw, type SearchScopeOptions as bx, type SelectContext as by, type SelectableEdge as bz, type RecordedReadStore as c, type SubgraphNodeResult as c0, type SubgraphOptions as c1, type SubgraphResult as c2, type SubsetEdge as c3, type SubsetNode as c4, type TemporalAlgorithmOptions as c5, type TransactionContext as c6, type TransactionOutcome as c7, type TransactionReceipt as c8, type TraversalDirection as c9, isParameterRef as cA, notExists as cB, notInSubquery as cC, param as cD, type TypedEdgeCollection as ca, type TypedRecordedStoreViewEdgeCollection as cb, type TypedStoreViewEdgeCollection as cc, UnionableQuery as cd, type UniqueIntrospection as ce, type UpdateEdgeInput as cf, type UpdateNodeInput as cg, type ValidityEndMutation as ch, type VectorSearchHit as ci, type VectorSearchOptions as cj, type WeaklyConnectedComponentMembership as ck, type WeaklyConnectedComponentsOptions as cl, type WeightedShortestPathOptions as cm, type WeightedShortestPathResult as cn, asIdentityAssertionId as co, createAdapterStore as cp, createAdapterStoreWithSchema as cq, createQueryBuilder as cr, createStore as cs, createStoreWithSchema as ct, createVerifiedAdapterStore as cu, createVerifiedStore as cv, defineSubgraphProject as cw, exists as cx, fieldRef as cy, inSubquery as cz, type IdentityAssertionId as d, type IdentityAssertionResult as e, type IdentityFacade as f, type IdentityNode as g, type IdentityNodeRefInput as h, type IdentityPair as i, type IdentityReadFacade as j, type IdentityRelation as k, type IdentityWriteSummary as l, type RecursiveAliasMap as m, QueryBuilder as n, type EmptyRecursiveAliasMap as o, type AdapterHistoryStore as p, type AdapterHistoryTransactionContext as q, type AdapterRecordedReadStore as r, type AdapterStore as s, type AdapterTransactionContext as t, type AggregateResult as u, type AlgorithmCyclePolicy as v, type AnyEdge as w, type AnyNode as x, type BaseTraversalOptions as y, type BatchResults as z };