@nicia-ai/typegraph 0.47.0 → 0.49.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 (211) hide show
  1. package/dist/backend/drizzle/indexes.d.cts +1 -1
  2. package/dist/backend/drizzle/indexes.d.ts +1 -1
  3. package/dist/backend/index.cjs +27 -19
  4. package/dist/backend/index.d.cts +37 -55
  5. package/dist/backend/index.d.ts +37 -55
  6. package/dist/backend/index.js +4 -4
  7. package/dist/backend/postgres/index.cjs +7 -7
  8. package/dist/backend/postgres/index.d.cts +21 -7
  9. package/dist/backend/postgres/index.d.ts +21 -7
  10. package/dist/backend/postgres/index.js +6 -6
  11. package/dist/backend/postgres/pglite-store.cjs +17 -17
  12. package/dist/backend/postgres/pglite-store.d.cts +8 -8
  13. package/dist/backend/postgres/pglite-store.d.ts +8 -8
  14. package/dist/backend/postgres/pglite-store.js +14 -14
  15. package/dist/backend/postgres/pglite.cjs +8 -8
  16. package/dist/backend/postgres/pglite.d.cts +3 -3
  17. package/dist/backend/postgres/pglite.d.ts +3 -3
  18. package/dist/backend/postgres/pglite.js +7 -7
  19. package/dist/backend/sqlite/index.cjs +7 -7
  20. package/dist/backend/sqlite/index.d.cts +20 -7
  21. package/dist/backend/sqlite/index.d.ts +20 -7
  22. package/dist/backend/sqlite/index.js +6 -6
  23. package/dist/backend/sqlite/libsql.cjs +8 -8
  24. package/dist/backend/sqlite/libsql.d.cts +3 -3
  25. package/dist/backend/sqlite/libsql.d.ts +3 -3
  26. package/dist/backend/sqlite/libsql.js +6 -6
  27. package/dist/backend/sqlite/local-store.cjs +18 -18
  28. package/dist/backend/sqlite/local-store.d.cts +8 -8
  29. package/dist/backend/sqlite/local-store.d.ts +8 -8
  30. package/dist/backend/sqlite/local-store.js +15 -15
  31. package/dist/backend/sqlite/local.cjs +9 -9
  32. package/dist/backend/sqlite/local.d.cts +3 -3
  33. package/dist/backend/sqlite/local.d.ts +3 -3
  34. package/dist/backend/sqlite/local.js +7 -7
  35. package/dist/{chunk-5FBRVORR.cjs → chunk-2O4PCIZ6.cjs} +8 -7
  36. package/dist/chunk-2O4PCIZ6.cjs.map +1 -0
  37. package/dist/{chunk-6KFLYYOC.cjs → chunk-2QGYQBS2.cjs} +5 -5
  38. package/dist/{chunk-6KFLYYOC.cjs.map → chunk-2QGYQBS2.cjs.map} +1 -1
  39. package/dist/{chunk-XYBQI6LE.js → chunk-2TYSSBU5.js} +6 -6
  40. package/dist/{chunk-XYBQI6LE.js.map → chunk-2TYSSBU5.js.map} +1 -1
  41. package/dist/{chunk-6JVZSOHQ.cjs → chunk-3FPR224C.cjs} +26 -26
  42. package/dist/{chunk-6JVZSOHQ.cjs.map → chunk-3FPR224C.cjs.map} +1 -1
  43. package/dist/{chunk-U5EDAVOJ.cjs → chunk-3G5W2U2L.cjs} +82 -51
  44. package/dist/chunk-3G5W2U2L.cjs.map +1 -0
  45. package/dist/{chunk-MFZR4QKM.cjs → chunk-3KOY4FH3.cjs} +181 -4
  46. package/dist/chunk-3KOY4FH3.cjs.map +1 -0
  47. package/dist/{chunk-UPAJHMW3.cjs → chunk-3QNZ5SAJ.cjs} +55 -58
  48. package/dist/chunk-3QNZ5SAJ.cjs.map +1 -0
  49. package/dist/{chunk-NG2RB5WL.js → chunk-5K2BKEBD.js} +18 -3
  50. package/dist/chunk-5K2BKEBD.js.map +1 -0
  51. package/dist/chunk-5PRKMB24.cjs +124 -0
  52. package/dist/chunk-5PRKMB24.cjs.map +1 -0
  53. package/dist/chunk-6LN7FIVU.js +107 -0
  54. package/dist/chunk-6LN7FIVU.js.map +1 -0
  55. package/dist/{chunk-M35DF33T.js → chunk-7LZJNLA5.js} +29 -16
  56. package/dist/chunk-7LZJNLA5.js.map +1 -0
  57. package/dist/{chunk-I4G3SQPF.cjs → chunk-7UOLHNWC.cjs} +7 -7
  58. package/dist/chunk-7UOLHNWC.cjs.map +1 -0
  59. package/dist/{chunk-DJZTXBWY.js → chunk-BRRP76WO.js} +71 -30
  60. package/dist/chunk-BRRP76WO.js.map +1 -0
  61. package/dist/{chunk-5FT3TLPK.js → chunk-D4QLTJSM.js} +16 -13
  62. package/dist/chunk-D4QLTJSM.js.map +1 -0
  63. package/dist/{chunk-XY5OMOJD.js → chunk-DZAICA5J.js} +3 -3
  64. package/dist/{chunk-XY5OMOJD.js.map → chunk-DZAICA5J.js.map} +1 -1
  65. package/dist/{chunk-OIFSOPSR.cjs → chunk-EZEEWCFJ.cjs} +38 -156
  66. package/dist/chunk-EZEEWCFJ.cjs.map +1 -0
  67. package/dist/{chunk-AMMWA76F.cjs → chunk-FA2AFWLP.cjs} +6 -6
  68. package/dist/{chunk-AMMWA76F.cjs.map → chunk-FA2AFWLP.cjs.map} +1 -1
  69. package/dist/{chunk-FNOMT74T.js → chunk-I4GAZH5Z.js} +180 -5
  70. package/dist/chunk-I4GAZH5Z.js.map +1 -0
  71. package/dist/{chunk-WGX7JH7E.cjs → chunk-JB6T4GLL.cjs} +106 -134
  72. package/dist/chunk-JB6T4GLL.cjs.map +1 -0
  73. package/dist/{chunk-MX4DHSQP.cjs → chunk-JFRT7S3B.cjs} +92 -98
  74. package/dist/chunk-JFRT7S3B.cjs.map +1 -0
  75. package/dist/{chunk-5UMTUOM5.js → chunk-JPD2CTC3.js} +5 -4
  76. package/dist/chunk-JPD2CTC3.js.map +1 -0
  77. package/dist/{chunk-SE6EGQSD.js → chunk-KF6K7TGH.js} +38 -66
  78. package/dist/chunk-KF6K7TGH.js.map +1 -0
  79. package/dist/{chunk-QS3NQZVC.js → chunk-LTXQOEIC.js} +44 -14
  80. package/dist/chunk-LTXQOEIC.js.map +1 -0
  81. package/dist/{chunk-ZHNXLS3C.js → chunk-NACVVDWB.js} +208 -8
  82. package/dist/chunk-NACVVDWB.js.map +1 -0
  83. package/dist/{chunk-AVGUJWVX.js → chunk-S5TERQVW.js} +15 -132
  84. package/dist/chunk-S5TERQVW.js.map +1 -0
  85. package/dist/chunk-SIT26LAZ.cjs +614 -0
  86. package/dist/chunk-SIT26LAZ.cjs.map +1 -0
  87. package/dist/{chunk-BR7SHKGM.cjs → chunk-SR725PWF.cjs} +548 -507
  88. package/dist/chunk-SR725PWF.cjs.map +1 -0
  89. package/dist/{chunk-425IZOQ5.cjs → chunk-TQHGE7UC.cjs} +20 -2
  90. package/dist/chunk-TQHGE7UC.cjs.map +1 -0
  91. package/dist/{chunk-GYUJZARH.cjs → chunk-TUNPBZY3.cjs} +4 -4
  92. package/dist/{chunk-GYUJZARH.cjs.map → chunk-TUNPBZY3.cjs.map} +1 -1
  93. package/dist/chunk-UGHG7PGX.js +592 -0
  94. package/dist/chunk-UGHG7PGX.js.map +1 -0
  95. package/dist/{chunk-BCQ76AXA.cjs → chunk-UGHQV7MP.cjs} +107 -94
  96. package/dist/chunk-UGHQV7MP.cjs.map +1 -0
  97. package/dist/{chunk-KABFHAL7.cjs → chunk-UMGZDVOA.cjs} +213 -12
  98. package/dist/chunk-UMGZDVOA.cjs.map +1 -0
  99. package/dist/{chunk-6FWSNSRE.js → chunk-WIC7DRXW.js} +4 -4
  100. package/dist/chunk-WIC7DRXW.js.map +1 -0
  101. package/dist/{chunk-LEWHMOUY.js → chunk-YIURNGXI.js} +4 -4
  102. package/dist/{chunk-LEWHMOUY.js.map → chunk-YIURNGXI.js.map} +1 -1
  103. package/dist/{chunk-EP4RUYD6.js → chunk-YVF2EM7B.js} +3 -3
  104. package/dist/{chunk-EP4RUYD6.js.map → chunk-YVF2EM7B.js.map} +1 -1
  105. package/dist/{chunk-EMIB2RXD.cjs → chunk-YYUHLYM2.cjs} +99 -96
  106. package/dist/chunk-YYUHLYM2.cjs.map +1 -0
  107. package/dist/{chunk-KH7XW7VV.js → chunk-Z2JCLZFJ.js} +25 -28
  108. package/dist/chunk-Z2JCLZFJ.js.map +1 -0
  109. package/dist/{chunk-NNQ6A3RM.js → chunk-ZFMCDJGB.js} +7 -12
  110. package/dist/chunk-ZFMCDJGB.js.map +1 -0
  111. package/dist/core/index.cjs +6 -6
  112. package/dist/core/index.d.cts +4 -4
  113. package/dist/core/index.d.ts +4 -4
  114. package/dist/core/index.js +2 -2
  115. package/dist/ddl-BL1NZLMY.d.cts +78 -0
  116. package/dist/ddl-D_oW-EVO.d.ts +78 -0
  117. package/dist/graph-extension/index.d.cts +4 -4
  118. package/dist/graph-extension/index.d.ts +4 -4
  119. package/dist/graph-merge/index.cjs +357 -191
  120. package/dist/graph-merge/index.cjs.map +1 -1
  121. package/dist/graph-merge/index.d.cts +68 -15
  122. package/dist/graph-merge/index.d.ts +68 -15
  123. package/dist/graph-merge/index.js +197 -32
  124. package/dist/graph-merge/index.js.map +1 -1
  125. package/dist/{index-CHTv4XMZ.d.cts → index-COs_z6nV.d.cts} +2 -2
  126. package/dist/{index-CzoJ3MUw.d.ts → index-D7d1u2gr.d.ts} +2 -2
  127. package/dist/index.cjs +90 -86
  128. package/dist/index.cjs.map +1 -1
  129. package/dist/index.d.cts +12 -12
  130. package/dist/index.d.ts +12 -12
  131. package/dist/index.js +13 -13
  132. package/dist/index.js.map +1 -1
  133. package/dist/indexes/index.d.cts +4 -4
  134. package/dist/indexes/index.d.ts +4 -4
  135. package/dist/ingestion-import-target-XPxZYw89.d.cts +17 -0
  136. package/dist/ingestion-import-target-dNeL7iAv.d.ts +17 -0
  137. package/dist/interchange/index.cjs +38 -38
  138. package/dist/interchange/index.d.cts +15 -12
  139. package/dist/interchange/index.d.ts +15 -12
  140. package/dist/interchange/index.js +10 -10
  141. package/dist/{manager-DlY1vlla.d.cts → manager-CYaff3n3.d.cts} +2 -2
  142. package/dist/{manager-B6sOQzcQ.d.ts → manager-D9eRT_ns.d.ts} +2 -2
  143. package/dist/{materialize-indexes-DQL4xcpf.d.ts → materialize-indexes-DJ3ykH59.d.ts} +1 -1
  144. package/dist/{materialize-indexes-sskhp-c_.d.cts → materialize-indexes-DTtAnvfY.d.cts} +1 -1
  145. package/dist/{postgres-BXy_nyMs.d.cts → postgres-CcL4bAHS.d.ts} +1 -1
  146. package/dist/{postgres-B6YOUcaK.d.ts → postgres-DMj39MEu.d.cts} +1 -1
  147. package/dist/profiler/index.d.cts +9 -9
  148. package/dist/profiler/index.d.ts +9 -9
  149. package/dist/provenance/index.cjs +25 -26
  150. package/dist/provenance/index.cjs.map +1 -1
  151. package/dist/provenance/index.d.cts +7 -7
  152. package/dist/provenance/index.d.ts +7 -7
  153. package/dist/provenance/index.js +9 -10
  154. package/dist/provenance/index.js.map +1 -1
  155. package/dist/repair-validity-windows-BFNZvd_H.d.cts +166 -0
  156. package/dist/repair-validity-windows-DlUSqwCg.d.ts +166 -0
  157. package/dist/schema/index.cjs +35 -35
  158. package/dist/schema/index.d.cts +6 -6
  159. package/dist/schema/index.d.ts +6 -6
  160. package/dist/schema/index.js +8 -8
  161. package/dist/{searchable-D9gMiwcS.d.ts → searchable-DHJMh_nj.d.cts} +1 -1
  162. package/dist/{searchable-0Cn_lY8U.d.cts → searchable-bpE1bBfc.d.ts} +1 -1
  163. package/dist/{sqlite-DioSxaPe.d.cts → sqlite-D7Oz0SQh.d.ts} +1 -1
  164. package/dist/{sqlite-ClXuBYAj.d.ts → sqlite-YppHrNFb.d.cts} +1 -1
  165. package/dist/{store-5j-w5onJ.d.ts → store-DRrFCx5x.d.ts} +122 -27
  166. package/dist/{store-CFedKGU5.d.cts → store-bphCSo7z.d.cts} +122 -27
  167. package/dist/{temporal-CjO9FH1l.d.ts → temporal-5GqpYCk2.d.cts} +1 -1
  168. package/dist/{temporal-Ce1pG0S1.d.cts → temporal-CbnLzTmM.d.ts} +1 -1
  169. package/dist/{types-DKkMJZjR.d.cts → types-BqFZTQmV.d.cts} +29 -4
  170. package/dist/{types-DKkMJZjR.d.ts → types-BqFZTQmV.d.ts} +29 -4
  171. package/dist/{types-BrdOFu48.d.ts → types-Bx74kaTt.d.ts} +1 -1
  172. package/dist/{types-oj_OGAaZ.d.cts → types-CXAhpW-c.d.cts} +1 -1
  173. package/dist/{where-D1wKCJ4Q.d.cts → where-DI_Fqz-X.d.cts} +1 -1
  174. package/dist/{where-C8w2627G.d.ts → where-O-k2wgYm.d.ts} +1 -1
  175. package/package.json +2 -3
  176. package/dist/chunk-3HGRTCDU.cjs +0 -269
  177. package/dist/chunk-3HGRTCDU.cjs.map +0 -1
  178. package/dist/chunk-425IZOQ5.cjs.map +0 -1
  179. package/dist/chunk-5FBRVORR.cjs.map +0 -1
  180. package/dist/chunk-5FT3TLPK.js.map +0 -1
  181. package/dist/chunk-5UMTUOM5.js.map +0 -1
  182. package/dist/chunk-6FWSNSRE.js.map +0 -1
  183. package/dist/chunk-AVGUJWVX.js.map +0 -1
  184. package/dist/chunk-BCQ76AXA.cjs.map +0 -1
  185. package/dist/chunk-BR7SHKGM.cjs.map +0 -1
  186. package/dist/chunk-DJZTXBWY.js.map +0 -1
  187. package/dist/chunk-EMIB2RXD.cjs.map +0 -1
  188. package/dist/chunk-FNOMT74T.js.map +0 -1
  189. package/dist/chunk-I4G3SQPF.cjs.map +0 -1
  190. package/dist/chunk-JR6SX5RH.cjs +0 -268
  191. package/dist/chunk-JR6SX5RH.cjs.map +0 -1
  192. package/dist/chunk-KABFHAL7.cjs.map +0 -1
  193. package/dist/chunk-KH7XW7VV.js.map +0 -1
  194. package/dist/chunk-M35DF33T.js.map +0 -1
  195. package/dist/chunk-MFZR4QKM.cjs.map +0 -1
  196. package/dist/chunk-MX4DHSQP.cjs.map +0 -1
  197. package/dist/chunk-NAZ2RA4L.js +0 -254
  198. package/dist/chunk-NAZ2RA4L.js.map +0 -1
  199. package/dist/chunk-NG2RB5WL.js.map +0 -1
  200. package/dist/chunk-NNQ6A3RM.js.map +0 -1
  201. package/dist/chunk-OIFSOPSR.cjs.map +0 -1
  202. package/dist/chunk-QS3NQZVC.js.map +0 -1
  203. package/dist/chunk-SE6EGQSD.js.map +0 -1
  204. package/dist/chunk-SHSSRCFR.js +0 -246
  205. package/dist/chunk-SHSSRCFR.js.map +0 -1
  206. package/dist/chunk-U5EDAVOJ.cjs.map +0 -1
  207. package/dist/chunk-UPAJHMW3.cjs.map +0 -1
  208. package/dist/chunk-WGX7JH7E.cjs.map +0 -1
  209. package/dist/chunk-ZHNXLS3C.js.map +0 -1
  210. package/dist/ddl-CprnMXJ-.d.ts +0 -38
  211. package/dist/ddl-DJA7Lci5.d.cts +0 -38
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
- var chunkBR7SHKGM_cjs = require('../chunk-BR7SHKGM.cjs');
4
- require('../chunk-AMMWA76F.cjs');
5
- var chunkU5EDAVOJ_cjs = require('../chunk-U5EDAVOJ.cjs');
6
- require('../chunk-WGX7JH7E.cjs');
7
- var chunkMFZR4QKM_cjs = require('../chunk-MFZR4QKM.cjs');
8
- var chunk6JVZSOHQ_cjs = require('../chunk-6JVZSOHQ.cjs');
3
+ var chunkSR725PWF_cjs = require('../chunk-SR725PWF.cjs');
4
+ require('../chunk-FA2AFWLP.cjs');
5
+ var chunk3G5W2U2L_cjs = require('../chunk-3G5W2U2L.cjs');
6
+ require('../chunk-JB6T4GLL.cjs');
7
+ var chunk3KOY4FH3_cjs = require('../chunk-3KOY4FH3.cjs');
8
+ var chunk3FPR224C_cjs = require('../chunk-3FPR224C.cjs');
9
9
  var chunk26YKDNUD_cjs = require('../chunk-26YKDNUD.cjs');
10
- var chunkMX4DHSQP_cjs = require('../chunk-MX4DHSQP.cjs');
11
- var chunkOIFSOPSR_cjs = require('../chunk-OIFSOPSR.cjs');
10
+ var chunkJFRT7S3B_cjs = require('../chunk-JFRT7S3B.cjs');
11
+ var chunkEZEEWCFJ_cjs = require('../chunk-EZEEWCFJ.cjs');
12
12
  var chunkPWLJ77UV_cjs = require('../chunk-PWLJ77UV.cjs');
13
- require('../chunk-JR6SX5RH.cjs');
13
+ var chunkSIT26LAZ_cjs = require('../chunk-SIT26LAZ.cjs');
14
14
  var chunk3U5ABFDW_cjs = require('../chunk-3U5ABFDW.cjs');
15
- var chunk3HGRTCDU_cjs = require('../chunk-3HGRTCDU.cjs');
15
+ require('../chunk-5PRKMB24.cjs');
16
16
  var chunkBFUOME67_cjs = require('../chunk-BFUOME67.cjs');
17
17
  var chunkFQPEMEWX_cjs = require('../chunk-FQPEMEWX.cjs');
18
- require('../chunk-6KFLYYOC.cjs');
19
- var chunk425IZOQ5_cjs = require('../chunk-425IZOQ5.cjs');
18
+ require('../chunk-2QGYQBS2.cjs');
19
+ var chunkTQHGE7UC_cjs = require('../chunk-TQHGE7UC.cjs');
20
20
  require('../chunk-AOSSQDVO.cjs');
21
21
  require('../chunk-OI2GQ25X.cjs');
22
22
  require('../chunk-LRQKXRXO.cjs');
@@ -716,10 +716,10 @@ function endpointTuple(assertion) {
716
716
  return [assertion.a.kind, assertion.a.id, assertion.b.kind, assertion.b.id];
717
717
  }
718
718
  function identityEndpointKey(assertion) {
719
- return chunkMX4DHSQP_cjs.encodeTupleKey(endpointTuple(assertion));
719
+ return chunkEZEEWCFJ_cjs.encodeTupleKey(endpointTuple(assertion));
720
720
  }
721
721
  function identitySemanticKey(assertion) {
722
- return chunkMX4DHSQP_cjs.identityAssertionSemanticKey(
722
+ return chunkJFRT7S3B_cjs.identityAssertionSemanticKey(
723
723
  assertion.relation,
724
724
  assertion.a,
725
725
  assertion.b
@@ -728,11 +728,11 @@ function identitySemanticKey(assertion) {
728
728
  function identityDedupeKey(assertion) {
729
729
  const semantic = identitySemanticKey(assertion);
730
730
  if (assertion.validTo === void 0) return semantic;
731
- return chunkMX4DHSQP_cjs.encodeTupleKey([semantic, assertion.validFrom, assertion.validTo]);
731
+ return chunkEZEEWCFJ_cjs.encodeTupleKey([semantic, assertion.validFrom, assertion.validTo]);
732
732
  }
733
733
  function compareIdentitySurvivors(left, right) {
734
- const byValidity = chunkOIFSOPSR_cjs.compareCodePoints(left.validFrom, right.validFrom);
735
- return byValidity === 0 ? chunkOIFSOPSR_cjs.compareCodePoints(left.id, right.id) : byValidity;
734
+ const byValidity = chunkEZEEWCFJ_cjs.compareCodePoints(left.validFrom, right.validFrom);
735
+ return byValidity === 0 ? chunkEZEEWCFJ_cjs.compareCodePoints(left.id, right.id) : byValidity;
736
736
  }
737
737
  var DUPLICATE_IDENTITY_ASSERTION_DROP_REASON = "identity:duplicate-assertion";
738
738
  var REDUNDANT_IDENTITY_ASSERTION_DROP_REASON = "identity:endpoints-collapsed";
@@ -763,7 +763,7 @@ function dedupeIdentityAssertions(assertions, committedIds) {
763
763
  }
764
764
  return {
765
765
  survivors: [...survivorBySemantic.values()].toSorted(
766
- (left, right) => chunkOIFSOPSR_cjs.compareCodePoints(identityDedupeKey(left), identityDedupeKey(right))
766
+ (left, right) => chunkEZEEWCFJ_cjs.compareCodePoints(identityDedupeKey(left), identityDedupeKey(right))
767
767
  ),
768
768
  dropped
769
769
  };
@@ -783,7 +783,7 @@ function assertNoOpposingIdentityRelations(assertions) {
783
783
  );
784
784
  for (const sameAssertion of same) {
785
785
  for (const differentAssertion of different) {
786
- if (!chunkMX4DHSQP_cjs.identityValidityWindowsOverlap(sameAssertion, differentAssertion)) {
786
+ if (!chunkJFRT7S3B_cjs.identityValidityWindowsOverlap(sameAssertion, differentAssertion)) {
787
787
  continue;
788
788
  }
789
789
  throw new IdentityMergeConflictError(
@@ -900,7 +900,7 @@ function planIdentityChanges(staging, storedIdentityRowsById) {
900
900
  return {
901
901
  assertions: deduped.survivors,
902
902
  retractions: retractions.toSorted(
903
- (left, right) => chunkOIFSOPSR_cjs.compareCodePoints(left.id, right.id)
903
+ (left, right) => chunkEZEEWCFJ_cjs.compareCodePoints(left.id, right.id)
904
904
  ),
905
905
  dropped: [...deduped.dropped, ...retractionDropped]
906
906
  };
@@ -943,7 +943,7 @@ function remapIdentityAssertionEndpoints(assertions, canonicalOf, retypeMap, sto
943
943
  );
944
944
  continue;
945
945
  }
946
- const [a, b] = chunkMX4DHSQP_cjs.normalizeIdentityPair(remappedA, remappedB);
946
+ const [a, b] = chunkJFRT7S3B_cjs.normalizeIdentityPair(remappedA, remappedB);
947
947
  const endpointWindowA = endpointWindows.get(mergeKeyOf(a));
948
948
  const endpointWindowB = endpointWindows.get(mergeKeyOf(b));
949
949
  const validFrom = [
@@ -951,17 +951,17 @@ function remapIdentityAssertionEndpoints(assertions, canonicalOf, retypeMap, sto
951
951
  endpointWindowA?.validFrom,
952
952
  endpointWindowB?.validFrom
953
953
  ].filter((bound) => bound !== void 0).reduce(
954
- (latest, bound) => chunkOIFSOPSR_cjs.compareCodePoints(latest, bound) < 0 ? bound : latest
954
+ (latest, bound) => chunkEZEEWCFJ_cjs.compareCodePoints(latest, bound) < 0 ? bound : latest
955
955
  );
956
956
  const validTo = [
957
957
  assertion.validTo,
958
958
  endpointWindowA?.validTo,
959
959
  endpointWindowB?.validTo
960
960
  ].filter((bound) => bound !== void 0).reduce(
961
- (earliest, bound) => earliest === void 0 || chunkOIFSOPSR_cjs.compareCodePoints(bound, earliest) < 0 ? bound : earliest,
961
+ (earliest, bound) => earliest === void 0 || chunkEZEEWCFJ_cjs.compareCodePoints(bound, earliest) < 0 ? bound : earliest,
962
962
  void 0
963
963
  );
964
- if (validTo !== void 0 && chunkOIFSOPSR_cjs.compareCodePoints(validFrom, validTo) >= 0) {
964
+ if (validTo !== void 0 && chunkEZEEWCFJ_cjs.compareCodePoints(validFrom, validTo) >= 0) {
965
965
  dropped.push(
966
966
  droppedIdentityAssertion(
967
967
  assertion,
@@ -1098,7 +1098,7 @@ async function buildIdentityPeerProbe(target, probedIds, targetPeers, plan, prof
1098
1098
  (group) => group.map((member) => mergeKey(member.kind, member.id))
1099
1099
  )
1100
1100
  ]);
1101
- const ledger = (await relevantLedgerAssertions(target, memberKeys, chunkMFZR4QKM_cjs.storeBackend(target))).filter(
1101
+ const ledger = (await relevantLedgerAssertions(target, memberKeys, chunk3KOY4FH3_cjs.storeBackend(target))).filter(
1102
1102
  (assertion) => !plannedDeletions.has(mergeKey(assertion.a.kind, assertion.a.id)) && !plannedDeletions.has(mergeKey(assertion.b.kind, assertion.b.id))
1103
1103
  );
1104
1104
  return {
@@ -1119,7 +1119,7 @@ async function buildIdentityPeerProbe(target, probedIds, targetPeers, plan, prof
1119
1119
  };
1120
1120
  }
1121
1121
  async function snapshotIdentityClasses(target, seeds, liveKeys, plannedDeletions, txBackend) {
1122
- const classes = await chunkMFZR4QKM_cjs.storeRuntime(target).structuralIdentityClasses(
1122
+ const classes = await chunk3KOY4FH3_cjs.storeRuntime(target).structuralIdentityClasses(
1123
1123
  seeds,
1124
1124
  txBackend
1125
1125
  );
@@ -1127,7 +1127,7 @@ async function snapshotIdentityClasses(target, seeds, liveKeys, plannedDeletions
1127
1127
  const groups = [];
1128
1128
  for (const seed of seeds) {
1129
1129
  const key = mergeKey(seed.kind, seed.id);
1130
- const members = (classes.get(chunkMX4DHSQP_cjs.identityReferenceKey(seed)) ?? [seed]).filter(
1130
+ const members = (classes.get(chunkJFRT7S3B_cjs.identityReferenceKey(seed)) ?? [seed]).filter(
1131
1131
  (member) => !plannedDeletions.has(mergeKey(member.kind, member.id))
1132
1132
  );
1133
1133
  groups.push(members);
@@ -1136,7 +1136,7 @@ async function snapshotIdentityClasses(target, seeds, liveKeys, plannedDeletions
1136
1136
  return { fingerprints, groups };
1137
1137
  }
1138
1138
  async function relevantLedgerAssertions(target, memberKeys, backend) {
1139
- const current = await chunkMFZR4QKM_cjs.storeRuntime(target).identityAssertionsAtTarget(
1139
+ const current = await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionsAtTarget(
1140
1140
  backend,
1141
1141
  "state"
1142
1142
  );
@@ -1147,7 +1147,7 @@ async function relevantLedgerAssertions(target, memberKeys, backend) {
1147
1147
  function differentLedgerFingerprint(assertions) {
1148
1148
  return JSON.stringify(
1149
1149
  assertions.filter((assertion) => assertion.relation === "different").map((assertion) => [assertion.id, ...endpointTuple(assertion)]).toSorted(
1150
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(chunkMX4DHSQP_cjs.encodeTupleKey(left), chunkMX4DHSQP_cjs.encodeTupleKey(right))
1150
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(chunkEZEEWCFJ_cjs.encodeTupleKey(left), chunkEZEEWCFJ_cjs.encodeTupleKey(right))
1151
1151
  )
1152
1152
  );
1153
1153
  }
@@ -1209,7 +1209,7 @@ async function assertPlannedIdentityIdsFresh(target, txBackend, plan) {
1209
1209
  ...plan.identityRetractions.map((retraction) => retraction.id)
1210
1210
  ];
1211
1211
  if (plannedIds.length === 0) return;
1212
- const storedById = await chunkMFZR4QKM_cjs.storeRuntime(target).identityAssertionRowsByIds(
1212
+ const storedById = await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionRowsByIds(
1213
1213
  plannedIds,
1214
1214
  txBackend
1215
1215
  );
@@ -1262,7 +1262,7 @@ function affectedIdentityClassSeeds(plan, profile) {
1262
1262
  return [...seedsByKey.values()];
1263
1263
  }
1264
1264
  async function assertMergedIdentityClassesConsistent(target, txBackend, plan) {
1265
- await chunkMFZR4QKM_cjs.storeRuntime(target).assertIdentityClassesConsistentAtTarget(
1265
+ await chunk3KOY4FH3_cjs.storeRuntime(target).assertIdentityClassesConsistentAtTarget(
1266
1266
  txBackend,
1267
1267
  affectedIdentityClassSeeds(plan, target.graph.identity?.sameIdAcrossKinds)
1268
1268
  );
@@ -1316,7 +1316,7 @@ function translateIdentityCommitError(error) {
1316
1316
  }
1317
1317
  async function assertIdentityPeersStable(target, txBackend, probe, plan) {
1318
1318
  if (probe === void 0) return;
1319
- const live = (await chunkMFZR4QKM_cjs.storeRuntime(target).liveNodesSharingIds(probe.ids, txBackend)).filter((peer) => !probe.plannedDeletions.has(mergeKey(peer.kind, peer.id)));
1319
+ const live = (await chunk3KOY4FH3_cjs.storeRuntime(target).liveNodesSharingIds(probe.ids, txBackend)).filter((peer) => !probe.plannedDeletions.has(mergeKey(peer.kind, peer.id)));
1320
1320
  const seedKindsById = /* @__PURE__ */ new Map();
1321
1321
  for (const seed of probe.seeds) {
1322
1322
  const kinds = seedKindsById.get(seed.id) ?? /* @__PURE__ */ new Set();
@@ -1341,7 +1341,7 @@ async function assertIdentityPeersStable(target, txBackend, probe, plan) {
1341
1341
  probe.plannedDeletions,
1342
1342
  txBackend
1343
1343
  );
1344
- const drifted = [...probe.classFingerprints].filter(([key, fingerprint]) => liveFingerprints.get(key) !== fingerprint).map(([key]) => key).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
1344
+ const drifted = [...probe.classFingerprints].filter(([key, fingerprint]) => liveFingerprints.get(key) !== fingerprint).map(([key]) => key).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
1345
1345
  if (drifted.length > 0) {
1346
1346
  throw new BaseVersionMismatchError(
1347
1347
  `mergeIncremental() validated identity against the classes visible at planning, but the identity class of ${drifted.length} node(s) the plan folds on changed before the commit transaction. Committing the plan could contradict identity truth it never validated.`,
@@ -1385,8 +1385,8 @@ var ENUMERATION_PAGE_SIZE = 1e3;
1385
1385
  var EXPLICIT_RETRACTION = { kind: "explicit" };
1386
1386
  function validWindowOf(row) {
1387
1387
  return {
1388
- validFrom: chunk425IZOQ5_cjs.canonicalizeDatabaseTimestamp(row.valid_from),
1389
- validTo: chunk425IZOQ5_cjs.canonicalizeDatabaseTimestamp(row.valid_to)
1388
+ validFrom: chunkTQHGE7UC_cjs.canonicalizeDatabaseTimestamp(row.valid_from),
1389
+ validTo: chunkTQHGE7UC_cjs.canonicalizeDatabaseTimestamp(row.valid_to)
1390
1390
  };
1391
1391
  }
1392
1392
  function windowsDiffer(left, right) {
@@ -1498,7 +1498,7 @@ function diffNodeKind(kind, baseRows, forkRows) {
1498
1498
  deleted.push({
1499
1499
  id: baseRow.id,
1500
1500
  kind,
1501
- deletedAt: forkRow === void 0 ? void 0 : chunk425IZOQ5_cjs.canonicalizeDatabaseTimestamp(forkRow.deleted_at)
1501
+ deletedAt: forkRow === void 0 ? void 0 : chunkTQHGE7UC_cjs.canonicalizeDatabaseTimestamp(forkRow.deleted_at)
1502
1502
  });
1503
1503
  }
1504
1504
  }
@@ -1609,15 +1609,15 @@ function classifyRetractions(retracted, deletedNodes, forkRowsById) {
1609
1609
  });
1610
1610
  }
1611
1611
  function byId(left, right) {
1612
- return chunkOIFSOPSR_cjs.compareStrings(left.id, right.id);
1612
+ return chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id);
1613
1613
  }
1614
1614
  async function diffAgainstBase(baseStore, forkStore, captureForkState = true) {
1615
1615
  const graph = baseStore.graph;
1616
1616
  const nodeKinds = chunkBFUOME67_cjs.getNodeKinds(graph);
1617
1617
  const edgeKinds = chunkBFUOME67_cjs.getEdgeKinds(graph);
1618
1618
  const [baseIdentity, forkIdentity] = await Promise.all([
1619
- chunkMFZR4QKM_cjs.storeRuntime(baseStore).readCurrentIdentityAssertions("archival"),
1620
- chunkMFZR4QKM_cjs.storeRuntime(forkStore).readCurrentIdentityAssertions("archival")
1619
+ chunk3KOY4FH3_cjs.storeRuntime(baseStore).readCurrentIdentityAssertions("archival"),
1620
+ chunk3KOY4FH3_cjs.storeRuntime(forkStore).readCurrentIdentityAssertions("archival")
1621
1621
  ]);
1622
1622
  const baseIdentityById = new Map(
1623
1623
  baseIdentity.map((assertion) => [assertion.id, assertion])
@@ -1632,12 +1632,12 @@ async function diffAgainstBase(baseStore, forkStore, captureForkState = true) {
1632
1632
  const forkNodeVersions = /* @__PURE__ */ new Map();
1633
1633
  for (const kind of nodeKinds) {
1634
1634
  const baseRows = await enumerateAllNodes(
1635
- chunkMFZR4QKM_cjs.storeBackend(baseStore),
1635
+ chunk3KOY4FH3_cjs.storeBackend(baseStore),
1636
1636
  baseStore.graphId,
1637
1637
  kind
1638
1638
  );
1639
1639
  const forkRows = await enumerateAllNodes(
1640
- chunkMFZR4QKM_cjs.storeBackend(forkStore),
1640
+ chunk3KOY4FH3_cjs.storeBackend(forkStore),
1641
1641
  forkStore.graphId,
1642
1642
  kind
1643
1643
  );
@@ -1667,12 +1667,12 @@ async function diffAgainstBase(baseStore, forkStore, captureForkState = true) {
1667
1667
  const forkEdgeSignatures = /* @__PURE__ */ new Map();
1668
1668
  for (const kind of edgeKinds) {
1669
1669
  const baseRows = await enumerateAllEdges(
1670
- chunkMFZR4QKM_cjs.storeBackend(baseStore),
1670
+ chunk3KOY4FH3_cjs.storeBackend(baseStore),
1671
1671
  baseStore.graphId,
1672
1672
  kind
1673
1673
  );
1674
1674
  const forkRows = await enumerateAllEdges(
1675
- chunkMFZR4QKM_cjs.storeBackend(forkStore),
1675
+ chunk3KOY4FH3_cjs.storeBackend(forkStore),
1676
1676
  forkStore.graphId,
1677
1677
  kind
1678
1678
  );
@@ -1708,7 +1708,7 @@ async function diffAgainstBase(baseStore, forkStore, captureForkState = true) {
1708
1708
  const retractedAssertions = baseIdentity.filter((assertion) => {
1709
1709
  const fork = forkIdentityById.get(assertion.id);
1710
1710
  return fork === void 0 || assertionTruthKey(fork) !== assertionTruthKey(assertion);
1711
- }).toSorted((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id));
1711
+ }).toSorted((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id));
1712
1712
  const classifiedRetractions = classifyRetractions(
1713
1713
  retractedAssertions,
1714
1714
  deletedNodes,
@@ -1739,7 +1739,7 @@ async function diffAgainstBase(baseStore, forkStore, captureForkState = true) {
1739
1739
  new: forkIdentity.filter((assertion) => {
1740
1740
  const base = baseIdentityById.get(assertion.id);
1741
1741
  return base === void 0 || assertionIdentityKey(base) !== assertionIdentityKey(assertion) && assertionTruthKey(base) !== assertionTruthKey(assertion);
1742
- }).toSorted((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)),
1742
+ }).toSorted((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)),
1743
1743
  retracted: classifiedRetractions
1744
1744
  },
1745
1745
  forkNodeVersions,
@@ -1769,14 +1769,14 @@ async function readActiveSchemaVersion(backend, graphId) {
1769
1769
  }
1770
1770
  async function computeSchemaComponent(store) {
1771
1771
  const version = await readActiveSchemaVersion(
1772
- chunkMFZR4QKM_cjs.storeBackend(store),
1772
+ chunk3KOY4FH3_cjs.storeBackend(store),
1773
1773
  store.graphId
1774
1774
  );
1775
- return chunk6JVZSOHQ_cjs.computeSchemaHash(chunk6JVZSOHQ_cjs.serializeSchema(store.graph, version));
1775
+ return chunk3FPR224C_cjs.computeSchemaHash(chunk3FPR224C_cjs.serializeSchema(store.graph, version));
1776
1776
  }
1777
1777
  function byDigestEntry(left, right) {
1778
- const byKind = chunkOIFSOPSR_cjs.compareStrings(left.kind, right.kind);
1779
- return byKind === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.id, right.id) : byKind;
1778
+ const byKind = chunkEZEEWCFJ_cjs.compareStrings(left.kind, right.kind);
1779
+ return byKind === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id) : byKind;
1780
1780
  }
1781
1781
  var CONTENT_FINGERPRINT_BYTES = 16;
1782
1782
  async function computeContentComponent(backend, graphId, graph, identityAssertions) {
@@ -1831,7 +1831,7 @@ async function computeBaseVersion(store) {
1831
1831
  computeSchemaComponent(store),
1832
1832
  store.revisionOriginNow(),
1833
1833
  store.revisionNow(),
1834
- readActiveSchemaVersion(chunkMFZR4QKM_cjs.storeBackend(store), store.graphId)
1834
+ readActiveSchemaVersion(chunk3KOY4FH3_cjs.storeBackend(store), store.graphId)
1835
1835
  ]);
1836
1836
  return asBaseVersion(
1837
1837
  `${schemaComponent2}${SCHEMA_VERSION_TAG}${activeVersion}${TOKEN_SEPARATOR}${revisionComponent(origin, revision)}`
@@ -1846,9 +1846,9 @@ async function computeBaseVersion(store) {
1846
1846
  );
1847
1847
  }
1848
1848
  async function computeStoreContentComponent(store) {
1849
- const identityAssertions = await chunkMFZR4QKM_cjs.storeRuntime(store).readCurrentIdentityAssertions("state");
1849
+ const identityAssertions = await chunk3KOY4FH3_cjs.storeRuntime(store).readCurrentIdentityAssertions("state");
1850
1850
  return computeContentComponent(
1851
- chunkMFZR4QKM_cjs.storeBackend(store),
1851
+ chunk3KOY4FH3_cjs.storeBackend(store),
1852
1852
  store.graphId,
1853
1853
  store.graph,
1854
1854
  identityAssertions
@@ -1886,12 +1886,24 @@ function contentComponentOf(version) {
1886
1886
  // src/graph-merge/working-copy.ts
1887
1887
  var CLONE_IMPORT_BATCH_SIZE = 1e3;
1888
1888
  function cloneWorkingCopyStrategy(makeBackend) {
1889
+ return cloneWorkingCopyWithGraphStrategy(
1890
+ makeBackend,
1891
+ (baseStore) => baseStore.graph
1892
+ );
1893
+ }
1894
+ function cloneIngestionWorkingCopyStrategy(makeBackend) {
1895
+ return cloneWorkingCopyWithGraphStrategy(
1896
+ makeBackend,
1897
+ (baseStore) => graphWithoutNodeUniqueness(baseStore.graph)
1898
+ );
1899
+ }
1900
+ function cloneWorkingCopyWithGraphStrategy(makeBackend, graphForClone) {
1889
1901
  return {
1890
1902
  create: async (baseStore) => {
1891
1903
  const backend = await makeBackend();
1892
1904
  try {
1893
- const [freshStore] = await chunkBR7SHKGM_cjs.createStoreWithSchema(
1894
- baseStore.graph,
1905
+ const [freshStore] = await chunkSR725PWF_cjs.createStoreWithSchema(
1906
+ graphForClone(baseStore),
1895
1907
  backend,
1896
1908
  {
1897
1909
  // Keep descendants branchable with the same O(1) anchor contract,
@@ -1911,16 +1923,16 @@ function cloneWorkingCopyStrategy(makeBackend) {
1911
1923
  validateReferences: true,
1912
1924
  batchSize: CLONE_IMPORT_BATCH_SIZE
1913
1925
  };
1914
- const result = chunk3HGRTCDU_cjs.snapshotExportContention(
1915
- chunkMFZR4QKM_cjs.storeBackend(baseStore),
1916
- chunkMFZR4QKM_cjs.storeBackend(freshStore)
1917
- ) === void 0 ? await chunkU5EDAVOJ_cjs.importGraphStream(
1926
+ const result = chunkSIT26LAZ_cjs.snapshotExportContention(
1927
+ chunk3KOY4FH3_cjs.storeBackend(baseStore),
1928
+ chunk3KOY4FH3_cjs.storeBackend(freshStore)
1929
+ ) === void 0 ? await chunk3G5W2U2L_cjs.importGraphStream(
1918
1930
  freshStore,
1919
- chunkU5EDAVOJ_cjs.exportGraphStream(baseStore, exportOptions),
1931
+ chunk3G5W2U2L_cjs.exportGraphStream(baseStore, exportOptions),
1920
1932
  importOptions
1921
- ) : await chunkU5EDAVOJ_cjs.importGraph(
1933
+ ) : await chunk3G5W2U2L_cjs.importGraph(
1922
1934
  freshStore,
1923
- await chunkU5EDAVOJ_cjs.exportGraph(baseStore, exportOptions),
1935
+ await chunk3G5W2U2L_cjs.exportGraph(baseStore, exportOptions),
1924
1936
  importOptions
1925
1937
  );
1926
1938
  if (!result.success) {
@@ -1940,15 +1952,39 @@ function cloneWorkingCopyStrategy(makeBackend) {
1940
1952
  }
1941
1953
  };
1942
1954
  }
1955
+ function graphWithoutNodeUniqueness(graph) {
1956
+ const nodes = Object.fromEntries(
1957
+ Object.entries(graph.nodes).map(([name, registration]) => {
1958
+ const { unique: _omitted, ...withoutUnique } = registration;
1959
+ return [name, Object.freeze(withoutUnique)];
1960
+ })
1961
+ );
1962
+ const extension = graph.extension?.nodes === void 0 ? graph.extension : Object.freeze({
1963
+ ...graph.extension,
1964
+ nodes: Object.freeze(
1965
+ Object.fromEntries(
1966
+ Object.entries(graph.extension.nodes).map(([name, node]) => {
1967
+ const { unique: _omitted, ...withoutUnique } = node;
1968
+ return [name, Object.freeze(withoutUnique)];
1969
+ })
1970
+ )
1971
+ )
1972
+ });
1973
+ return Object.freeze({
1974
+ ...graph,
1975
+ nodes: Object.freeze(nodes),
1976
+ extension
1977
+ });
1978
+ }
1943
1979
 
1944
1980
  // src/graph-merge/branch.ts
1945
1981
  async function branch(baseStore, makeBackend, options, strategy) {
1946
1982
  try {
1947
1983
  const base = await computeBaseVersion(baseStore);
1948
- const id = options?.id ?? asBranchId(chunkOIFSOPSR_cjs.generateId());
1984
+ const id = options?.id ?? asBranchId(chunkEZEEWCFJ_cjs.generateId());
1949
1985
  const workingCopyStrategy = strategy ?? cloneWorkingCopyStrategy(makeBackend);
1950
1986
  const store = await workingCopyStrategy.create(baseStore);
1951
- const schemaAnchor = await readSchemaAnchor(store);
1987
+ const schemaAnchor = await captureBranchSchemaAnchor(store);
1952
1988
  return chunkGYEG3ZLZ_cjs.ok({
1953
1989
  id,
1954
1990
  base,
@@ -1963,19 +1999,89 @@ async function branch(baseStore, makeBackend, options, strategy) {
1963
1999
  );
1964
2000
  }
1965
2001
  }
1966
- async function readSchemaAnchor(store) {
2002
+ async function captureBranchSchemaAnchor(store) {
1967
2003
  try {
1968
- const schemaRow = await chunkMFZR4QKM_cjs.storeBackend(store).getActiveSchema(store.graphId);
2004
+ const schemaRow = await chunk3KOY4FH3_cjs.storeBackend(store).getActiveSchema(store.graphId);
1969
2005
  return schemaRow === void 0 ? void 0 : { version: schemaRow.version, hash: schemaRow.schema_hash };
1970
2006
  } catch (error) {
1971
2007
  try {
1972
- await chunkMFZR4QKM_cjs.storeBackend(store).close();
2008
+ await chunk3KOY4FH3_cjs.storeBackend(store).close();
1973
2009
  } catch {
1974
2010
  }
1975
2011
  throw error;
1976
2012
  }
1977
2013
  }
1978
2014
 
2015
+ // src/graph-merge/ingestion-branch.ts
2016
+ var PRIVATE_BRANCHES = /* @__PURE__ */ new WeakMap();
2017
+ function createIngestionIdentityFacade(identity) {
2018
+ return Object.freeze({
2019
+ assertSame(a, b, window) {
2020
+ return identity.assertSame(a, b, window);
2021
+ },
2022
+ assertDifferent(a, b, window) {
2023
+ return identity.assertDifferent(a, b, window);
2024
+ },
2025
+ bulkAssertSame(pairs) {
2026
+ return identity.bulkAssertSame(pairs);
2027
+ },
2028
+ bulkAssertDifferent(pairs) {
2029
+ return identity.bulkAssertDifferent(pairs);
2030
+ }
2031
+ });
2032
+ }
2033
+ async function ingestionBranch(baseStore, makeBackend, options) {
2034
+ try {
2035
+ const created = await branch(
2036
+ baseStore,
2037
+ makeBackend,
2038
+ options,
2039
+ cloneIngestionWorkingCopyStrategy(makeBackend)
2040
+ );
2041
+ if (chunkGYEG3ZLZ_cjs.isErr(created)) {
2042
+ return chunkGYEG3ZLZ_cjs.err(
2043
+ new BranchError("Failed to create constraint-aware ingestion branch", {
2044
+ cause: created.error
2045
+ })
2046
+ );
2047
+ }
2048
+ const privateBranch = created.data;
2049
+ const { base, id, store } = privateBranch;
2050
+ const identityAccess = store.graph.identity === void 0 ? {} : {
2051
+ identity: createIngestionIdentityFacade(
2052
+ store.identity
2053
+ )
2054
+ };
2055
+ const handle = Object.freeze({
2056
+ id,
2057
+ base,
2058
+ nodes: store.nodes,
2059
+ edges: store.edges,
2060
+ ...identityAccess,
2061
+ close: async () => chunk3KOY4FH3_cjs.storeBackend(store).close()
2062
+ });
2063
+ PRIVATE_BRANCHES.set(handle, privateBranch);
2064
+ chunk3G5W2U2L_cjs.registerIngestionImportTarget(handle, store);
2065
+ return chunkGYEG3ZLZ_cjs.ok(handle);
2066
+ } catch (error) {
2067
+ return chunkGYEG3ZLZ_cjs.err(
2068
+ new BranchError("Failed to create constraint-aware ingestion branch", {
2069
+ cause: error
2070
+ })
2071
+ );
2072
+ }
2073
+ }
2074
+ function unwrapMergeBranch(input) {
2075
+ const privateBranch = PRIVATE_BRANCHES.get(input);
2076
+ if (privateBranch !== void 0) {
2077
+ return privateBranch;
2078
+ }
2079
+ return input;
2080
+ }
2081
+ function unwrapMergeBranches(inputs) {
2082
+ return inputs.map((input) => unwrapMergeBranch(input));
2083
+ }
2084
+
1979
2085
  // src/graph-merge/blocking.ts
1980
2086
  var UNBLOCKED_BUCKET_KEY = "unblocked";
1981
2087
  var KEY_PART_SEPARATOR = "\0";
@@ -2037,12 +2143,12 @@ function blockNodes(newNodes, resolveConfig, uniqueConstraints = []) {
2037
2143
  }
2038
2144
  }
2039
2145
  const sortedKeys = [...buckets.keys()].sort(
2040
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
2146
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
2041
2147
  );
2042
2148
  const ordered = /* @__PURE__ */ new Map();
2043
2149
  for (const key of sortedKeys) {
2044
2150
  const members = [...chunkN66HCGCY_cjs.requireDefined(buckets.get(key))].sort(
2045
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
2151
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
2046
2152
  );
2047
2153
  ordered.set(key, members);
2048
2154
  }
@@ -2059,7 +2165,7 @@ function buildBranchRank(branchOrder, allBranchIds) {
2059
2165
  next += 1;
2060
2166
  }
2061
2167
  }
2062
- const remaining = allBranchIds.filter((branchId) => !rank.has(branchId)).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
2168
+ const remaining = allBranchIds.filter((branchId) => !rank.has(branchId)).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
2063
2169
  for (const branchId of remaining) {
2064
2170
  if (!rank.has(branchId)) {
2065
2171
  rank.set(branchId, next);
@@ -2131,8 +2237,8 @@ function collectConflictingValues(property, contributions) {
2131
2237
  values.push({ branchId, value });
2132
2238
  }
2133
2239
  return [...values].sort((left, right) => {
2134
- const byBranch = chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId);
2135
- return byBranch === 0 ? chunkOIFSOPSR_cjs.compareStrings(
2240
+ const byBranch = chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId);
2241
+ return byBranch === 0 ? chunkEZEEWCFJ_cjs.compareStrings(
2136
2242
  canonicalValueKey(left.value),
2137
2243
  canonicalValueKey(right.value)
2138
2244
  ) : byBranch;
@@ -2262,7 +2368,7 @@ function unionProperties(canonicalMember, members, context, baseContext, branchR
2262
2368
  const props = chunkN66HCGCY_cjs.createDataKeyedBag();
2263
2369
  const conflicts = [];
2264
2370
  for (const property of [...propertyNames].sort(
2265
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
2371
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
2266
2372
  )) {
2267
2373
  const values = collectConflictingValues(property, members);
2268
2374
  if (values.length === 0) {
@@ -2327,14 +2433,14 @@ function canonicalizeCluster(cluster, members, policy, branchRank, weights, cano
2327
2433
  );
2328
2434
  const memberIds = [
2329
2435
  ...new Set(cluster.members.map((member) => idOf(member)))
2330
- ].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
2436
+ ].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
2331
2437
  const branchOrigins = [
2332
2438
  ...new Set(
2333
2439
  members.map((member) => member.branchId).filter(
2334
2440
  (branchId) => branchId !== BASE_PROVENANCE_BRANCH && branchId !== preferredBranchId
2335
2441
  )
2336
2442
  )
2337
- ].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
2443
+ ].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
2338
2444
  const resolution = {
2339
2445
  canonicalId,
2340
2446
  memberIds,
@@ -2414,7 +2520,7 @@ var EQUIVALENCE_META_EDGES = /* @__PURE__ */ new Set([
2414
2520
  chunkXUO3KQFO_cjs.META_EDGE_SAME_AS
2415
2521
  ]);
2416
2522
  function buildSubClassClosure(ontology) {
2417
- const unionFind = new UnionFind(chunkOIFSOPSR_cjs.compareStrings);
2523
+ const unionFind = new UnionFind(chunkEZEEWCFJ_cjs.compareStrings);
2418
2524
  for (const relation of ontology) {
2419
2525
  unionFind.add(relation.from);
2420
2526
  unionFind.add(relation.to);
@@ -2510,7 +2616,7 @@ function sourceKey(source) {
2510
2616
  }
2511
2617
  }
2512
2618
  function compareMatchSources(left, right) {
2513
- return chunkOIFSOPSR_cjs.compareStrings(sourceKey(left), sourceKey(right));
2619
+ return chunkEZEEWCFJ_cjs.compareStrings(sourceKey(left), sourceKey(right));
2514
2620
  }
2515
2621
  function compareEntityRefs(left, right) {
2516
2622
  return compareMergeKeys(
@@ -3252,7 +3358,7 @@ function pickHighestPriorityBranch(branchIds, branchRank) {
3252
3358
  let chosenRank = branchRank.get(chosen) ?? Number.MAX_SAFE_INTEGER;
3253
3359
  for (const candidate of branchIds.slice(1)) {
3254
3360
  const candidateRank = branchRank.get(candidate) ?? Number.MAX_SAFE_INTEGER;
3255
- if (candidateRank < chosenRank || candidateRank === chosenRank && chunkOIFSOPSR_cjs.compareStrings(candidate, chosen) < 0) {
3361
+ if (candidateRank < chosenRank || candidateRank === chosenRank && chunkEZEEWCFJ_cjs.compareStrings(candidate, chosen) < 0) {
3256
3362
  chosen = candidate;
3257
3363
  chosenRank = candidateRank;
3258
3364
  }
@@ -3345,20 +3451,20 @@ function resolveDeleteModifyOver(modified, deleted, modifiedEntity, deletedEntit
3345
3451
  }
3346
3452
  return {
3347
3453
  survivingModifications: [...survivingModifications].sort((left, right) => {
3348
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(
3454
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(
3349
3455
  modifiedEntity(left).id,
3350
3456
  modifiedEntity(right).id
3351
3457
  );
3352
- return byId2 === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId) : byId2;
3458
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
3353
3459
  }),
3354
3460
  deletions: [...deletions].sort(
3355
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
3461
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
3356
3462
  ),
3357
3463
  conflicts: [...conflicts].sort(
3358
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.entityId, right.entityId)
3464
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.entityId, right.entityId)
3359
3465
  ),
3360
3466
  dropped: [...dropped].sort(
3361
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
3467
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
3362
3468
  )
3363
3469
  };
3364
3470
  }
@@ -3402,11 +3508,11 @@ function reconcileOver(survivingModifications, entityOf, rebuild, policy, branch
3402
3508
  }
3403
3509
  return {
3404
3510
  survivingModifications: [...out].sort((left, right) => {
3405
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(entityOf(left).id, entityOf(right).id);
3406
- return byId2 === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId) : byId2;
3511
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(entityOf(left).id, entityOf(right).id);
3512
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
3407
3513
  }),
3408
3514
  conflicts: conflicts.sort(
3409
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(
3515
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(
3410
3516
  `${left.entityId}|${left.property}`,
3411
3517
  `${right.entityId}|${right.property}`
3412
3518
  )
@@ -3440,7 +3546,7 @@ function threeWayMergeProps(entityId, kind, baseProps, contributions, context, b
3440
3546
  propertyNames.add(name);
3441
3547
  }
3442
3548
  }
3443
- for (const property of [...propertyNames].sort(chunkOIFSOPSR_cjs.compareStrings)) {
3549
+ for (const property of [...propertyNames].sort(chunkEZEEWCFJ_cjs.compareStrings)) {
3444
3550
  const baseHas = chunkN66HCGCY_cjs.hasOwnKey(baseProps, property);
3445
3551
  const baseKey = baseHas ? canonicalValueKey(chunkN66HCGCY_cjs.requireDefined(baseProps[property])) : void 0;
3446
3552
  const changed = contributions.filter((contribution) => {
@@ -3540,7 +3646,7 @@ function earliestEnd(claims) {
3540
3646
  let earliest;
3541
3647
  for (const claim of claims) {
3542
3648
  if (claim.change.kind !== "set") continue;
3543
- if (earliest === void 0 || chunkOIFSOPSR_cjs.compareStrings(claim.change.validTo, earliest) < 0) {
3649
+ if (earliest === void 0 || chunkEZEEWCFJ_cjs.compareStrings(claim.change.validTo, earliest) < 0) {
3544
3650
  earliest = claim.change.validTo;
3545
3651
  }
3546
3652
  }
@@ -3556,7 +3662,7 @@ function resolveEndClaims(claims, preferredBranchId) {
3556
3662
  }
3557
3663
  function claimingBranches(claims) {
3558
3664
  return [...new Set(claims.map((claim) => claim.branchId))].sort(
3559
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
3665
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
3560
3666
  );
3561
3667
  }
3562
3668
  function sameValidToChange(left, right) {
@@ -3653,7 +3759,7 @@ function resolvePopulation(entity, deltas, deletions, preferredBranchId, dropIte
3653
3759
  mergeKey(right.kind, right.id)
3654
3760
  )
3655
3761
  ),
3656
- dropped: dropped.sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id))
3762
+ dropped: dropped.sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id))
3657
3763
  };
3658
3764
  }
3659
3765
  function resolveValidWindows(staging, nodeDeletions, edgeDeletions, preferredBranchId) {
@@ -3742,7 +3848,7 @@ function rowsById(groupEdges) {
3742
3848
  function sourcePairByRow(rows) {
3743
3849
  const pairs = /* @__PURE__ */ new Map();
3744
3850
  for (const [id, members] of rows) {
3745
- const sorted = members.map((member) => member.sourcePair).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
3851
+ const sorted = members.map((member) => member.sourcePair).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
3746
3852
  pairs.set(id, chunkN66HCGCY_cjs.requireDefined(sorted[0]));
3747
3853
  }
3748
3854
  return pairs;
@@ -3753,14 +3859,14 @@ function foldSets(groupEdges) {
3753
3859
  const representatives = /* @__PURE__ */ new Map();
3754
3860
  for (const [id, pair] of sourcePairs) {
3755
3861
  const representative = representatives.get(pair);
3756
- if (representative === void 0 || chunkOIFSOPSR_cjs.compareStrings(id, representative) < 0) {
3862
+ if (representative === void 0 || chunkEZEEWCFJ_cjs.compareStrings(id, representative) < 0) {
3757
3863
  representatives.set(pair, id);
3758
3864
  }
3759
3865
  }
3760
3866
  const collapsed = [];
3761
3867
  const parallel = [];
3762
3868
  for (const id of [...rows.keys()].sort(
3763
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
3869
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
3764
3870
  )) {
3765
3871
  const members = chunkN66HCGCY_cjs.requireDefined(rows.get(id));
3766
3872
  const pair = chunkN66HCGCY_cjs.requireDefined(sourcePairs.get(id));
@@ -3773,7 +3879,7 @@ function foldSets(groupEdges) {
3773
3879
  return [collapsed, ...parallel];
3774
3880
  }
3775
3881
  function compareMembers(left, right, preferredBranchId) {
3776
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(left.staged.id, right.staged.id);
3882
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.staged.id, right.staged.id);
3777
3883
  if (byId2 !== 0) {
3778
3884
  return byId2;
3779
3885
  }
@@ -3782,7 +3888,7 @@ function compareMembers(left, right, preferredBranchId) {
3782
3888
  if (leftPreferred !== rightPreferred) {
3783
3889
  return leftPreferred ? -1 : 1;
3784
3890
  }
3785
- return chunkOIFSOPSR_cjs.compareStrings(left.staged.branchId, right.staged.branchId);
3891
+ return chunkEZEEWCFJ_cjs.compareStrings(left.staged.branchId, right.staged.branchId);
3786
3892
  }
3787
3893
  function pickSurvivor(edges, preferredBranchId) {
3788
3894
  const inherited = edges.filter(
@@ -3808,8 +3914,8 @@ function authoredProperty(edge, property) {
3808
3914
  }
3809
3915
  function unauthoredValue(property, edges) {
3810
3916
  const carriers = edges.filter((edge) => chunkN66HCGCY_cjs.hasOwnKey(edge.staged.props, property)).sort((left, right) => {
3811
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(left.staged.id, right.staged.id);
3812
- return byId2 === 0 ? chunkOIFSOPSR_cjs.compareStrings(
3917
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.staged.id, right.staged.id);
3918
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(
3813
3919
  canonicalValueKey(left.staged.props[property]),
3814
3920
  canonicalValueKey(right.staged.props[property])
3815
3921
  ) : byId2;
@@ -3826,7 +3932,7 @@ function unionEdgeProps(survivorId, kind, survivor, edges, context, branchRank,
3826
3932
  const props = chunkN66HCGCY_cjs.createDataKeyedBag();
3827
3933
  const conflicts = [];
3828
3934
  for (const property of [...propertyNames].sort(
3829
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
3935
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
3830
3936
  )) {
3831
3937
  const claimants = edges.filter((edge) => authoredProperty(edge, property)).map((edge) => edge.staged);
3832
3938
  const values = collectConflictingValues(property, claimants);
@@ -3859,7 +3965,7 @@ function unionEdgeProps(survivorId, kind, survivor, edges, context, branchRank,
3859
3965
  function foldEdgeSet(foldSet, context, branchRank, preferredBranchId) {
3860
3966
  const survivor = pickSurvivor(foldSet, preferredBranchId);
3861
3967
  const survivorId = survivor.staged.id;
3862
- const mergedIds = foldSet.map((edge) => edge.staged.id).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
3968
+ const mergedIds = foldSet.map((edge) => edge.staged.id).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
3863
3969
  const fromId = idOf(survivor.fromKey);
3864
3970
  const fromKind = kindOf(survivor.fromKey);
3865
3971
  const toId = idOf(survivor.toKey);
@@ -3957,7 +4063,7 @@ function repointEdges(stagedEdges, canonicalOf, deletedNodeIds, policy, branchRa
3957
4063
  const merged = [];
3958
4064
  const conflicts = [];
3959
4065
  const sortedGroups = [...liveByGroup.keys()].sort(
3960
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
4066
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
3961
4067
  );
3962
4068
  for (const group of sortedGroups) {
3963
4069
  const groupEdges = chunkN66HCGCY_cjs.requireDefined(liveByGroup.get(group));
@@ -3985,12 +4091,12 @@ function repointEdges(stagedEdges, canonicalOf, deletedNodeIds, policy, branchRa
3985
4091
  ),
3986
4092
  edge.id
3987
4093
  ])
3988
- })).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.sortKey, right.sortKey)).map(({ edge }) => edge);
4094
+ })).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.sortKey, right.sortKey)).map(({ edge }) => edge);
3989
4095
  return {
3990
4096
  edges: sortedEdges,
3991
- dropped: dropped.sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)),
4097
+ dropped: dropped.sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)),
3992
4098
  conflicts: conflicts.sort(
3993
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(
4099
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(
3994
4100
  `${left.entityId}|${left.property}`,
3995
4101
  `${right.entityId}|${right.property}`
3996
4102
  )
@@ -4781,7 +4887,7 @@ function buildProvenanceGraph(targetGraphId) {
4781
4887
  });
4782
4888
  }
4783
4889
  async function openProvenanceStore(...args) {
4784
- const [backend, targetGraphId] = args.length === 1 ? [chunkMFZR4QKM_cjs.storeBackend(args[0]), args[0].graphId] : args;
4890
+ const [backend, targetGraphId] = args.length === 1 ? [chunk3KOY4FH3_cjs.storeBackend(args[0]), args[0].graphId] : args;
4785
4891
  const graph = buildOwnedProvenanceGraph(targetGraphId);
4786
4892
  const preflight = await inspectSidecarGraphId(backend, graph, targetGraphId);
4787
4893
  if (preflight.state === "refuse") {
@@ -4793,7 +4899,7 @@ async function openProvenanceStore(...args) {
4793
4899
  throw provenanceGraphIdCollision(graph.id, targetGraphId, claim.reason);
4794
4900
  }
4795
4901
  }
4796
- const [store] = await chunkBR7SHKGM_cjs.createStoreWithSchema(graph, backend);
4902
+ const [store] = await chunkSR725PWF_cjs.createStoreWithSchema(graph, backend);
4797
4903
  return store;
4798
4904
  }
4799
4905
  async function claimSidecarOwnership(backend, graph, targetGraphId) {
@@ -4842,14 +4948,14 @@ async function inspectSidecarGraphId(port, graph, targetGraphId) {
4842
4948
  if (activeSchema === void 0) {
4843
4949
  return { state: "refuse", reason: "application-graph" };
4844
4950
  }
4845
- const ownedHash = await chunk6JVZSOHQ_cjs.computeSchemaHash(
4846
- chunk6JVZSOHQ_cjs.serializeSchema(graph, activeSchema.version)
4951
+ const ownedHash = await chunk3FPR224C_cjs.computeSchemaHash(
4952
+ chunk3FPR224C_cjs.serializeSchema(graph, activeSchema.version)
4847
4953
  );
4848
4954
  if (activeSchema.schema_hash === ownedHash) {
4849
4955
  return { state: "refuse", reason: "unowned-exact-schema-graph" };
4850
4956
  }
4851
- const legacyHash = await chunk6JVZSOHQ_cjs.computeSchemaHash(
4852
- chunk6JVZSOHQ_cjs.serializeSchema(buildProvenanceGraph(targetGraphId), activeSchema.version)
4957
+ const legacyHash = await chunk3FPR224C_cjs.computeSchemaHash(
4958
+ chunk3FPR224C_cjs.serializeSchema(buildProvenanceGraph(targetGraphId), activeSchema.version)
4853
4959
  );
4854
4960
  if (activeSchema.schema_hash !== legacyHash) {
4855
4961
  return { state: "refuse", reason: "application-graph" };
@@ -5041,7 +5147,7 @@ function contributionKey(record) {
5041
5147
  ]);
5042
5148
  }
5043
5149
  function encodeProvenanceTuple(values) {
5044
- return values.some((value) => value.includes(ID_SEPARATOR)) ? chunkMX4DHSQP_cjs.encodeTupleKey(values) : values.join(ID_SEPARATOR);
5150
+ return values.some((value) => value.includes(ID_SEPARATOR)) ? chunkEZEEWCFJ_cjs.encodeTupleKey(values) : values.join(ID_SEPARATOR);
5045
5151
  }
5046
5152
  async function provenanceNodeId(targetGraphId, record) {
5047
5153
  const tuple = encodeProvenanceTuple([
@@ -5084,7 +5190,7 @@ async function readProvenance(store, query = {}) {
5084
5190
  const all = await store.nodes.Provenance.find();
5085
5191
  return all.filter(
5086
5192
  (node) => (query.branchId === void 0 || node.branchId === query.branchId) && (query.canonicalId === void 0 || node.canonicalId === query.canonicalId) && (query.role === void 0 || node.role === query.role)
5087
- ).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id));
5193
+ ).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id));
5088
5194
  }
5089
5195
 
5090
5196
  // src/graph-merge/sources.ts
@@ -5094,10 +5200,10 @@ function orderEndpoints(left, right, sources) {
5094
5200
  return compareMergeKeys(leftKey, rightKey) <= 0 ? { a: leftKey, b: rightKey, left, right, sources } : { a: rightKey, b: leftKey, left: right, right: left, sources };
5095
5201
  }
5096
5202
  function sortMembersById(members) {
5097
- return [...members].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id));
5203
+ return [...members].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id));
5098
5204
  }
5099
5205
  function sortedBucketKeys(blocks) {
5100
- return [...blocks.keys()].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
5206
+ return [...blocks.keys()].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
5101
5207
  }
5102
5208
  var NODE_SYSTEM_FIELDS = /* @__PURE__ */ new Set(["id", "kind", "meta"]);
5103
5209
  function nodeProps(node) {
@@ -5125,7 +5231,7 @@ function windowedPairs(members, config) {
5125
5231
  key: fieldText(node, config.sortFields)
5126
5232
  }));
5127
5233
  keyed.sort(
5128
- (left, right) => left.key === right.key ? chunkOIFSOPSR_cjs.compareStrings(left.node.id, right.node.id) : chunkOIFSOPSR_cjs.compareStrings(left.key, right.key)
5234
+ (left, right) => left.key === right.key ? chunkEZEEWCFJ_cjs.compareStrings(left.node.id, right.node.id) : chunkEZEEWCFJ_cjs.compareStrings(left.key, right.key)
5129
5235
  );
5130
5236
  const pairs = [];
5131
5237
  for (let index = 0; index < keyed.length; index += 1) {
@@ -5236,7 +5342,7 @@ function ontologyRetypeEdges(stagedIdentities, isRetypeCompatible) {
5236
5342
  }
5237
5343
  }
5238
5344
  const edges = [];
5239
- for (const id of [...identitiesById.keys()].sort(chunkOIFSOPSR_cjs.compareStrings)) {
5345
+ for (const id of [...identitiesById.keys()].sort(chunkEZEEWCFJ_cjs.compareStrings)) {
5240
5346
  const identities = [...new Set(identitiesById.get(id))].sort(
5241
5347
  compareMergeKeys
5242
5348
  );
@@ -5344,7 +5450,7 @@ var baseUniqueSource = {
5344
5450
  const forcedEdges = [];
5345
5451
  const baseMembers = /* @__PURE__ */ new Map();
5346
5452
  const constraints = [...uniqueConstraints].sort(
5347
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.name, right.name)
5453
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.name, right.name)
5348
5454
  );
5349
5455
  const items = nodes.map((node) => ({ props: nodeProps(node) }));
5350
5456
  const matchesByConstraint = await Promise.all(
@@ -5414,7 +5520,7 @@ var baseUniqueSource = {
5414
5520
  pairs: [],
5415
5521
  forcedEdges,
5416
5522
  baseMembers: [...baseMembers.values()].sort(
5417
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
5523
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
5418
5524
  )
5419
5525
  };
5420
5526
  }
@@ -5492,7 +5598,7 @@ var baseKeySource = {
5492
5598
  pairs,
5493
5599
  forcedEdges: [],
5494
5600
  baseMembers: [...baseMembers.values()].sort(
5495
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
5601
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
5496
5602
  )
5497
5603
  };
5498
5604
  }
@@ -5504,16 +5610,16 @@ var CANDIDATE_SOURCES = [
5504
5610
 
5505
5611
  // src/graph-merge/staging.ts
5506
5612
  function compareByIdThenBranch(left, right) {
5507
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(left.id, right.id);
5508
- return byId2 === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5613
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id);
5614
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5509
5615
  }
5510
5616
  function compareByKindIdBranch(left, right) {
5511
- const byKind = chunkOIFSOPSR_cjs.compareStrings(left.kind, right.kind);
5617
+ const byKind = chunkEZEEWCFJ_cjs.compareStrings(left.kind, right.kind);
5512
5618
  if (byKind !== 0) {
5513
5619
  return byKind;
5514
5620
  }
5515
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(left.id, right.id);
5516
- return byId2 === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5621
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id);
5622
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5517
5623
  }
5518
5624
  function groupByKind(items) {
5519
5625
  const buckets = /* @__PURE__ */ new Map();
@@ -5527,7 +5633,7 @@ function groupByKind(items) {
5527
5633
  }
5528
5634
  const ordered = /* @__PURE__ */ new Map();
5529
5635
  for (const kind of [...buckets.keys()].sort(
5530
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
5636
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
5531
5637
  )) {
5532
5638
  ordered.set(
5533
5639
  kind,
@@ -5549,7 +5655,7 @@ async function stageBranches(baseStore, branches, captureTargetStateFor) {
5549
5655
  const windowedEdges = [];
5550
5656
  const newIdentityAssertions = [];
5551
5657
  const retractedIdentityAssertions = [];
5552
- const baseIdentityAssertions = await chunkMFZR4QKM_cjs.storeRuntime(baseStore).readCurrentIdentityAssertions("state");
5658
+ const baseIdentityAssertions = await chunk3KOY4FH3_cjs.storeRuntime(baseStore).readCurrentIdentityAssertions("state");
5553
5659
  let targetNodeVersions = /* @__PURE__ */ new Map();
5554
5660
  let targetEdgeSignatures = /* @__PURE__ */ new Map();
5555
5661
  for (const branch2 of branches) {
@@ -5620,17 +5726,17 @@ async function stageBranches(baseStore, branches, captureTargetStateFor) {
5620
5726
  (left, right) => compareByKindIdBranch(left, right)
5621
5727
  ),
5622
5728
  newIdentityAssertions: newIdentityAssertions.toSorted((left, right) => {
5623
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(left.assertion.id, right.assertion.id);
5624
- return byId2 === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5729
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.assertion.id, right.assertion.id);
5730
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5625
5731
  }),
5626
5732
  retractedIdentityAssertions: retractedIdentityAssertions.toSorted(
5627
5733
  (left, right) => {
5628
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(left.assertion.id, right.assertion.id);
5629
- return byId2 === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5734
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.assertion.id, right.assertion.id);
5735
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5630
5736
  }
5631
5737
  ),
5632
5738
  baseIdentityAssertions: baseIdentityAssertions.toSorted(
5633
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
5739
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
5634
5740
  ),
5635
5741
  targetNodeVersions,
5636
5742
  targetEdgeSignatures
@@ -5682,7 +5788,7 @@ async function withTxConflictRetry(commit) {
5682
5788
  // src/graph-merge/type-reconcile.ts
5683
5789
  var INCOMPATIBLE_TYPES_FLAG_REASON = "type-reconcile:incompatible-kinds";
5684
5790
  function distinctKinds(kinds) {
5685
- return [...new Set(kinds)].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
5791
+ return [...new Set(kinds)].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
5686
5792
  }
5687
5793
  function areEquivalent(closure, left, right) {
5688
5794
  return left !== right && isReachable2(closure, left, right) && isReachable2(closure, right, left);
@@ -5701,7 +5807,7 @@ function mostSpecificCommonKind(closure, kinds) {
5701
5807
  return void 0;
5702
5808
  }
5703
5809
  return chunkN66HCGCY_cjs.requireDefined(
5704
- [...qualifiers].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right))[0]
5810
+ [...qualifiers].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right))[0]
5705
5811
  );
5706
5812
  }
5707
5813
  function reconcileTypes(clusters, closure, mode) {
@@ -5739,10 +5845,10 @@ function reconcileTypes(clusters, closure, mode) {
5739
5845
  }
5740
5846
  return {
5741
5847
  reconciliations: reconciliations.sort(
5742
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.entityId, right.entityId)
5848
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.entityId, right.entityId)
5743
5849
  ),
5744
5850
  retypeMap,
5745
- dropped: dropped.sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id))
5851
+ dropped: dropped.sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id))
5746
5852
  };
5747
5853
  }
5748
5854
 
@@ -5760,8 +5866,8 @@ function newNodesByKind(staging) {
5760
5866
  ordered.set(
5761
5867
  kind,
5762
5868
  [...items].sort((left, right) => {
5763
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(left.node.id, right.node.id);
5764
- return byId2 === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5869
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.node.id, right.node.id);
5870
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5765
5871
  })
5766
5872
  );
5767
5873
  }
@@ -5795,7 +5901,7 @@ async function precomputeEmbeddings(byKind, resolve, embedder) {
5795
5901
  }
5796
5902
  async function embedSortedTexts(texts, embedder) {
5797
5903
  const orderedTexts = [...texts].sort(
5798
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
5904
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
5799
5905
  );
5800
5906
  const vectors = await embedder(orderedTexts);
5801
5907
  if (vectors.length !== orderedTexts.length) {
@@ -6070,9 +6176,9 @@ function buildProvenanceIndex(records) {
6070
6176
  for (const [branchId, sets] of byBranch) {
6071
6177
  frozen.set(branchId, {
6072
6178
  nodeIds: [...sets.nodeIds].sort(
6073
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
6179
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
6074
6180
  ),
6075
- edgeIds: [...sets.edgeIds].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)).map((id) => id)
6181
+ edgeIds: [...sets.edgeIds].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)).map((id) => id)
6076
6182
  });
6077
6183
  }
6078
6184
  return {
@@ -6472,7 +6578,7 @@ function buildInternalMergePlan(staging, candidateEdges, candidateWarnings, cand
6472
6578
  ...identityRemap.dropped,
6473
6579
  ...validWindows.dropped
6474
6580
  ].sort(
6475
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(`${left.kind}|${left.id}`, `${right.kind}|${right.id}`)
6581
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(`${left.kind}|${left.id}`, `${right.kind}|${right.id}`)
6476
6582
  );
6477
6583
  return {
6478
6584
  canonicalEntities,
@@ -6509,7 +6615,7 @@ function buildInternalMergePlan(staging, candidateEdges, candidateWarnings, cand
6509
6615
  mergeKey(left.kind, left.entityId),
6510
6616
  mergeKey(right.kind, right.entityId)
6511
6617
  );
6512
- return byEntity === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.property, right.property) : byEntity;
6618
+ return byEntity === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.property, right.property) : byEntity;
6513
6619
  }
6514
6620
  ),
6515
6621
  deleteModifyConflicts: [
@@ -6659,20 +6765,67 @@ function nodeWriteWindowOptions(write) {
6659
6765
  ...write.validTo === void 0 ? {} : { validTo: write.validTo }
6660
6766
  };
6661
6767
  }
6662
- async function applyNodeRows(nodesApi, deletions, upserts) {
6663
- for (const deletion of deletions) {
6664
- await nodeCollection(nodesApi, deletion.kind).delete(deletion.id);
6665
- }
6666
- const committed = /* @__PURE__ */ new Set();
6768
+ async function applyNodeRows(target, txBackend, nodesApi, deletions, upserts) {
6769
+ const afterImages = /* @__PURE__ */ new Map();
6770
+ const upsertsByKind = /* @__PURE__ */ new Map();
6667
6771
  for (const upsert of upserts) {
6668
- await nodeCollection(nodesApi, upsert.kind).upsertByIdFromRecord(
6669
- upsert.id,
6670
- upsert.props,
6671
- nodeWriteWindowOptions(upsert)
6772
+ const items = upsertsByKind.get(upsert.kind);
6773
+ if (items === void 0) upsertsByKind.set(upsert.kind, [upsert]);
6774
+ else items.push(upsert);
6775
+ }
6776
+ for (const [kind, items] of upsertsByKind) {
6777
+ const currentRows = await nodeCollection(nodesApi, kind).getByIds(
6778
+ items.map((item) => item.id),
6779
+ INCLUDE_TOMBSTONES
6672
6780
  );
6673
- committed.add(mergeKey(upsert.kind, upsert.id));
6781
+ const currentById = /* @__PURE__ */ new Map();
6782
+ for (const node of currentRows) {
6783
+ if (node !== void 0) currentById.set(node.id, nodeProps2(node));
6784
+ }
6785
+ for (const item of items) {
6786
+ const props = chunkN66HCGCY_cjs.createDataKeyedBag();
6787
+ const unset = new Set(
6788
+ Object.entries(item.props).filter(([, value]) => value === void 0).map(([key]) => key)
6789
+ );
6790
+ for (const [key, value] of Object.entries(
6791
+ currentById.get(item.id) ?? {}
6792
+ )) {
6793
+ if (!unset.has(key)) props[key] = value;
6794
+ }
6795
+ for (const [key, value] of Object.entries(item.props)) {
6796
+ if (value !== void 0) props[key] = value;
6797
+ }
6798
+ afterImages.set(mergeKey(kind, item.id), props);
6799
+ }
6674
6800
  }
6675
- return committed.size;
6801
+ return chunk3KOY4FH3_cjs.storeRuntime(target).applyResolvedNodeUniqueness(
6802
+ txBackend,
6803
+ {
6804
+ upserts: upserts.map((upsert) => ({
6805
+ kind: upsert.kind,
6806
+ id: upsert.id,
6807
+ props: chunkN66HCGCY_cjs.requireDefined(
6808
+ afterImages.get(mergeKey(upsert.kind, upsert.id))
6809
+ )
6810
+ })),
6811
+ releases: deletions
6812
+ },
6813
+ async () => {
6814
+ for (const deletion of deletions) {
6815
+ await nodeCollection(nodesApi, deletion.kind).delete(deletion.id);
6816
+ }
6817
+ const committed = /* @__PURE__ */ new Set();
6818
+ for (const upsert of upserts) {
6819
+ await nodeCollection(nodesApi, upsert.kind).upsertByIdFromRecord(
6820
+ upsert.id,
6821
+ upsert.props,
6822
+ nodeWriteWindowOptions(upsert)
6823
+ );
6824
+ committed.add(mergeKey(upsert.kind, upsert.id));
6825
+ }
6826
+ return committed.size;
6827
+ }
6828
+ );
6676
6829
  }
6677
6830
  async function applyEdgeRows(edgesApi, deletions, upserts) {
6678
6831
  for (const deletion of deletions) {
@@ -6693,7 +6846,7 @@ async function applyEdgeRows(edgesApi, deletions, upserts) {
6693
6846
  }
6694
6847
  async function applyIdentityRows(target, txBackend, assertions, retractions, assertConsistent) {
6695
6848
  try {
6696
- const applied = await chunkMFZR4QKM_cjs.storeRuntime(target).applyIdentityMergeAtTarget(
6849
+ const applied = await chunk3KOY4FH3_cjs.storeRuntime(target).applyIdentityMergeAtTarget(
6697
6850
  txBackend,
6698
6851
  retractions,
6699
6852
  assertions
@@ -6733,7 +6886,13 @@ async function applyInternalMergePlan(plan, nodesApi, edgesApi, target, txBacken
6733
6886
  );
6734
6887
  let committedNodes;
6735
6888
  try {
6736
- committedNodes = await applyNodeRows(nodesApi, nodeDeletions, nodeUpserts);
6889
+ committedNodes = await applyNodeRows(
6890
+ target,
6891
+ txBackend,
6892
+ nodesApi,
6893
+ nodeDeletions,
6894
+ nodeUpserts
6895
+ );
6737
6896
  } catch (error) {
6738
6897
  throw error instanceof chunkMRDBBHIZ_cjs.IdentityEndpointValidityError ? translateIdentityCommitError(error) : error;
6739
6898
  }
@@ -6785,7 +6944,7 @@ async function applyInternalMergePlan(plan, nodesApi, edgesApi, target, txBacken
6785
6944
  };
6786
6945
  }
6787
6946
  async function commitPlan(target, plan, expectedBaseVersion) {
6788
- if (!chunkMFZR4QKM_cjs.storeBackend(target).capabilities.transactions) {
6947
+ if (!chunk3KOY4FH3_cjs.storeBackend(target).capabilities.transactions) {
6789
6948
  throw new MergeError(
6790
6949
  "merge() requires a transaction-capable target backend. The merged plan (canonical upserts, soft-deletes, edge upserts) must commit atomically; a non-transactional fallback would leave a partially-merged graph on a mid-commit failure. (mergeIncremental() enforces the same requirement.)",
6791
6950
  { details: { capability: "transactions" } }
@@ -6796,14 +6955,14 @@ async function commitPlan(target, plan, expectedBaseVersion) {
6796
6955
  () => target.transaction(async (tx) => {
6797
6956
  if (expectedBaseVersion !== void 0) {
6798
6957
  await assertTargetUnchanged(
6799
- chunkMFZR4QKM_cjs.transactionBackend(tx),
6958
+ chunk3KOY4FH3_cjs.transactionBackend(tx),
6800
6959
  target,
6801
6960
  expectedBaseVersion
6802
6961
  );
6803
6962
  }
6804
6963
  await assertPlannedIdentityIdsFresh(
6805
6964
  target,
6806
- chunkMFZR4QKM_cjs.transactionBackend(tx),
6965
+ chunk3KOY4FH3_cjs.transactionBackend(tx),
6807
6966
  plan
6808
6967
  );
6809
6968
  return applyInternalMergePlan(
@@ -6811,7 +6970,7 @@ async function commitPlan(target, plan, expectedBaseVersion) {
6811
6970
  tx.nodes,
6812
6971
  tx.edges,
6813
6972
  target,
6814
- chunkMFZR4QKM_cjs.transactionBackend(tx)
6973
+ chunk3KOY4FH3_cjs.transactionBackend(tx)
6815
6974
  );
6816
6975
  }, mergeCommitTransactionOptions(target))
6817
6976
  )
@@ -6832,9 +6991,9 @@ function mergeCommitTransactionOptions(target) {
6832
6991
  }
6833
6992
  async function assertTargetUnchanged(txBackend, target, expectedBaseVersion) {
6834
6993
  if (hasRevisionAnchor(expectedBaseVersion)) {
6835
- await chunkOIFSOPSR_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
6994
+ await chunkEZEEWCFJ_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
6836
6995
  const expectedOrigin = revisionOriginOf(expectedBaseVersion);
6837
- const liveOrigin = await chunkOIFSOPSR_cjs.readRevisionOrigin(
6996
+ const liveOrigin = await chunkEZEEWCFJ_cjs.readRevisionOrigin(
6838
6997
  txBackend,
6839
6998
  target.revisionSchema,
6840
6999
  target.graphId
@@ -6848,7 +7007,7 @@ async function assertTargetUnchanged(txBackend, target, expectedBaseVersion) {
6848
7007
  }
6849
7008
  );
6850
7009
  }
6851
- const liveRevision = await chunkOIFSOPSR_cjs.readRecordedClock(
7010
+ const liveRevision = await chunkEZEEWCFJ_cjs.readRecordedClock(
6852
7011
  txBackend,
6853
7012
  target.revisionSchema,
6854
7013
  target.graphId
@@ -6869,7 +7028,7 @@ async function assertTargetUnchanged(txBackend, target, expectedBaseVersion) {
6869
7028
  txBackend,
6870
7029
  target.graphId,
6871
7030
  target.graph,
6872
- await chunkMFZR4QKM_cjs.storeRuntime(target).identityAssertionsAtTarget(txBackend, "state")
7031
+ await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionsAtTarget(txBackend, "state")
6873
7032
  );
6874
7033
  const expectedContent = contentComponentOf(expectedBaseVersion);
6875
7034
  if (liveContent !== expectedContent) {
@@ -6961,7 +7120,7 @@ async function tryOpenProvenanceStore(target) {
6961
7120
  }
6962
7121
  }
6963
7122
  function assertPublicPlanCapability(target) {
6964
- if (!chunkMFZR4QKM_cjs.storeBackend(target).capabilities.transactions) {
7123
+ if (!chunk3KOY4FH3_cjs.storeBackend(target).capabilities.transactions) {
6965
7124
  throw new MergePlanCapabilityError(
6966
7125
  "Public merge plans require a transaction-capable target backend.",
6967
7126
  { details: { capability: "transactions" } }
@@ -6980,7 +7139,7 @@ function assertPublicPlanCapability(target) {
6980
7139
  async function captureMergePlanTargetFence(target) {
6981
7140
  assertPublicPlanCapability(target);
6982
7141
  const [activeSchema, schemaHash, origin, revision] = await Promise.all([
6983
- chunkMFZR4QKM_cjs.storeBackend(target).getActiveSchema(target.graphId),
7142
+ chunk3KOY4FH3_cjs.storeBackend(target).getActiveSchema(target.graphId),
6984
7143
  computeSchemaComponent(target),
6985
7144
  target.revisionOriginNow(),
6986
7145
  target.revisionNow()
@@ -7009,7 +7168,7 @@ async function assertPlanningFenceUnchanged(target, startingFence) {
7009
7168
  function splitWireProps(props) {
7010
7169
  const setProps = chunkN66HCGCY_cjs.createDataKeyedBag();
7011
7170
  const unsetProps = [];
7012
- for (const key of Object.keys(props).sort(chunkOIFSOPSR_cjs.compareStrings)) {
7171
+ for (const key of Object.keys(props).sort(chunkEZEEWCFJ_cjs.compareStrings)) {
7013
7172
  const value = props[key];
7014
7173
  if (value === void 0) {
7015
7174
  unsetProps.push(key);
@@ -7146,7 +7305,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7146
7305
  }
7147
7306
  }
7148
7307
  for (const branch2 of branches) {
7149
- const branchSchemaRow = await chunkMFZR4QKM_cjs.storeBackend(branch2.store).getActiveSchema(
7308
+ const branchSchemaRow = await chunk3KOY4FH3_cjs.storeBackend(branch2.store).getActiveSchema(
7150
7309
  branch2.store.graphId
7151
7310
  );
7152
7311
  let drifted;
@@ -7154,7 +7313,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7154
7313
  const anchor = branch2.schemaAnchor;
7155
7314
  drifted = anchor === void 0 ? branchSchemaRow !== void 0 : branchSchemaRow?.version !== anchor.version || branchSchemaRow.schema_hash !== anchor.hash;
7156
7315
  } else {
7157
- const sourceSchemaRow = await chunkMFZR4QKM_cjs.storeBackend(store).getActiveSchema(
7316
+ const sourceSchemaRow = await chunk3KOY4FH3_cjs.storeBackend(store).getActiveSchema(
7158
7317
  store.graphId
7159
7318
  );
7160
7319
  drifted = branchSchemaRow?.schema_hash !== sourceSchemaRow?.schema_hash;
@@ -7199,7 +7358,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7199
7358
  options.embedder
7200
7359
  );
7201
7360
  const ctx = {
7202
- backend: chunkMFZR4QKM_cjs.storeBackend(store),
7361
+ backend: chunk3KOY4FH3_cjs.storeBackend(store),
7203
7362
  ...embeddings === void 0 ? {} : { embeddings }
7204
7363
  };
7205
7364
  const candidates = await generateAllCandidates(
@@ -7227,7 +7386,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7227
7386
  ])
7228
7387
  ])
7229
7388
  ];
7230
- const targetPeers = identityProbeIds === void 0 ? [] : await chunkMFZR4QKM_cjs.storeRuntime(target).liveNodesSharingIds(identityProbeIds);
7389
+ const targetPeers = identityProbeIds === void 0 ? [] : await chunk3KOY4FH3_cjs.storeRuntime(target).liveNodesSharingIds(identityProbeIds);
7231
7390
  const stagedIdentityIds = [
7232
7391
  .../* @__PURE__ */ new Set([
7233
7392
  ...staging.newIdentityAssertions.map((staged) => staged.assertion.id),
@@ -7236,7 +7395,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7236
7395
  )
7237
7396
  ])
7238
7397
  ];
7239
- const storedIdentityRowsById = stagedIdentityIds.length === 0 || target.graph.identity === void 0 ? NO_STORED_ASSERTIONS : await chunkMFZR4QKM_cjs.storeRuntime(target).identityAssertionRowsByIds(
7398
+ const storedIdentityRowsById = stagedIdentityIds.length === 0 || target.graph.identity === void 0 ? NO_STORED_ASSERTIONS : await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionRowsByIds(
7240
7399
  stagedIdentityIds
7241
7400
  );
7242
7401
  const identityContext = {
@@ -7261,14 +7420,14 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7261
7420
  if (plan.identityAssertions.length > 0) {
7262
7421
  assertOneIdOneTruth(
7263
7422
  plan.identityAssertions,
7264
- await chunkMFZR4QKM_cjs.storeRuntime(target).identityAssertionRowsByIds(
7423
+ await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionRowsByIds(
7265
7424
  plan.identityAssertions.map((assertion) => assertion.id)
7266
7425
  )
7267
7426
  );
7268
7427
  }
7269
7428
  let identityGuard;
7270
7429
  if (identityProbeIds !== void 0 && incremental !== void 0) {
7271
- const freshPeers = await chunkMFZR4QKM_cjs.storeRuntime(target).liveNodesSharingIds(identityProbeIds);
7430
+ const freshPeers = await chunk3KOY4FH3_cjs.storeRuntime(target).liveNodesSharingIds(identityProbeIds);
7272
7431
  const built = await buildIdentityPeerProbe(
7273
7432
  target,
7274
7433
  identityProbeIds,
@@ -7397,7 +7556,8 @@ function incrementalSchemaError() {
7397
7556
  { details: {} }
7398
7557
  );
7399
7558
  }
7400
- async function planMerge(store, branches, optionsInput = {}) {
7559
+ async function planMerge(store, branchInputs, optionsInput = {}) {
7560
+ const branches = unwrapMergeBranches(branchInputs);
7401
7561
  const normalized = tryNormalize(optionsInput);
7402
7562
  if (chunkGYEG3ZLZ_cjs.isErr(normalized)) return chunkGYEG3ZLZ_cjs.err(normalized.error);
7403
7563
  const options = normalized.data;
@@ -7418,7 +7578,7 @@ async function planMerge(store, branches, optionsInput = {}) {
7418
7578
  const anchors = {
7419
7579
  kind: "snapshot",
7420
7580
  base: { graphId: store.graphId, baseVersion: precondition.data },
7421
- branches: [...branches].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)).map((branch2) => ({
7581
+ branches: [...branches].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)).map((branch2) => ({
7422
7582
  branchId: branch2.id,
7423
7583
  baseVersion: branch2.base
7424
7584
  }))
@@ -7438,7 +7598,8 @@ async function planMerge(store, branches, optionsInput = {}) {
7438
7598
  );
7439
7599
  }
7440
7600
  async function planMergeIncremental(args) {
7441
- const { forkPoint, target, branches } = args;
7601
+ const { forkPoint, target } = args;
7602
+ const branches = unwrapMergeBranches(args.branches);
7442
7603
  const normalized = tryNormalize(args.options ?? {}, ["target"]);
7443
7604
  if (chunkGYEG3ZLZ_cjs.isErr(normalized)) return chunkGYEG3ZLZ_cjs.err(normalized.error);
7444
7605
  const options = normalized.data;
@@ -7464,7 +7625,7 @@ async function planMergeIncremental(args) {
7464
7625
  computeSchemaComponent(target)
7465
7626
  ]);
7466
7627
  if (forkSchema !== targetSchema) return chunkGYEG3ZLZ_cjs.err(incrementalSchemaError());
7467
- const forkActiveSchema = await chunkMFZR4QKM_cjs.storeBackend(forkPoint).getActiveSchema(
7628
+ const forkActiveSchema = await chunk3KOY4FH3_cjs.storeBackend(forkPoint).getActiveSchema(
7468
7629
  forkPoint.graphId
7469
7630
  );
7470
7631
  const targetBranch = {
@@ -7483,7 +7644,7 @@ async function planMergeIncremental(args) {
7483
7644
  hash: forkActiveSchema?.schema_hash ?? forkSchema
7484
7645
  }
7485
7646
  },
7486
- branches: [...branches].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)).map((branch2) => ({
7647
+ branches: [...branches].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)).map((branch2) => ({
7487
7648
  branchId: branch2.id,
7488
7649
  baseVersion: branch2.base
7489
7650
  }))
@@ -7808,7 +7969,7 @@ async function preflightWireMergeWrites(target, nodesApi, edgesApi, artifact) {
7808
7969
  }
7809
7970
  }
7810
7971
  async function assertMergePlanFenceInsideTransaction(target, txBackend, artifact) {
7811
- await chunkOIFSOPSR_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
7972
+ await chunkEZEEWCFJ_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
7812
7973
  const activeSchema = await txBackend.getActiveSchema(target.graphId);
7813
7974
  const liveSchema = {
7814
7975
  managed: activeSchema !== void 0,
@@ -7821,7 +7982,7 @@ async function assertMergePlanFenceInsideTransaction(target, txBackend, artifact
7821
7982
  { details: { expected: artifact.target.schema, live: liveSchema } }
7822
7983
  );
7823
7984
  }
7824
- const liveOrigin = await chunkOIFSOPSR_cjs.readRevisionOrigin(
7985
+ const liveOrigin = await chunkEZEEWCFJ_cjs.readRevisionOrigin(
7825
7986
  txBackend,
7826
7987
  target.revisionSchema,
7827
7988
  target.graphId
@@ -7837,7 +7998,7 @@ async function assertMergePlanFenceInsideTransaction(target, txBackend, artifact
7837
7998
  }
7838
7999
  );
7839
8000
  }
7840
- const liveRevision = await chunkOIFSOPSR_cjs.readRecordedClock(
8001
+ const liveRevision = await chunkEZEEWCFJ_cjs.readRecordedClock(
7841
8002
  txBackend,
7842
8003
  target.revisionSchema,
7843
8004
  target.graphId
@@ -7879,6 +8040,8 @@ function identityConsistencySeeds(artifact, profile) {
7879
8040
  }
7880
8041
  async function applyWireMergeWrites(target, nodesApi, edgesApi, txBackend, artifact) {
7881
8042
  const committedNodes = await applyNodeRows(
8043
+ target,
8044
+ txBackend,
7882
8045
  nodesApi,
7883
8046
  artifact.writes.nodeDeletes,
7884
8047
  artifact.writes.nodeUpserts.map((upsert) => ({
@@ -7911,7 +8074,7 @@ async function applyWireMergeWrites(target, nodesApi, edgesApi, txBackend, artif
7911
8074
  txBackend,
7912
8075
  identityAssertions,
7913
8076
  identityRetractions,
7914
- () => chunkMFZR4QKM_cjs.storeRuntime(target).assertIdentityClassesConsistentAtTarget(
8077
+ () => chunk3KOY4FH3_cjs.storeRuntime(target).assertIdentityClassesConsistentAtTarget(
7915
8078
  txBackend,
7916
8079
  identityConsistencySeeds(
7917
8080
  artifact,
@@ -7919,8 +8082,8 @@ async function applyWireMergeWrites(target, nodesApi, edgesApi, txBackend, artif
7919
8082
  )
7920
8083
  )
7921
8084
  );
7922
- if (!chunkOIFSOPSR_cjs.forceRecordedGraphRevision(txBackend, target.graphId) && !chunkMX4DHSQP_cjs.forceWriteTransactionRevision(txBackend)) {
7923
- await chunkOIFSOPSR_cjs.advanceRevisionClock(
8085
+ if (!chunkEZEEWCFJ_cjs.forceRecordedGraphRevision(txBackend, target.graphId) && !chunkJFRT7S3B_cjs.forceWriteTransactionRevision(txBackend)) {
8086
+ await chunkEZEEWCFJ_cjs.advanceRevisionClock(
7924
8087
  txBackend,
7925
8088
  target.revisionSchema,
7926
8089
  target.graphId,
@@ -7991,7 +8154,7 @@ async function applyMergePlan(target, input) {
7991
8154
  }
7992
8155
  const merged = await withTxConflictRetry(
7993
8156
  () => target.transaction(async (tx) => {
7994
- const txBackend = chunkMFZR4QKM_cjs.transactionBackend(tx);
8157
+ const txBackend = chunk3KOY4FH3_cjs.transactionBackend(tx);
7995
8158
  await assertMergePlanFenceInsideTransaction(
7996
8159
  target,
7997
8160
  txBackend,
@@ -8051,7 +8214,8 @@ async function applyMergePlan(target, input) {
8051
8214
  );
8052
8215
  }
8053
8216
  }
8054
- async function merge(store, branches, optionsInput = {}) {
8217
+ async function merge(store, branchInputs, optionsInput = {}) {
8218
+ const branches = unwrapMergeBranches(branchInputs);
8055
8219
  const normalized = tryNormalize(optionsInput);
8056
8220
  if (chunkGYEG3ZLZ_cjs.isErr(normalized)) {
8057
8221
  return chunkGYEG3ZLZ_cjs.err(normalized.error);
@@ -8246,7 +8410,7 @@ async function validateIncrementalEdgeWrites(target, edgesApi, plan) {
8246
8410
  }
8247
8411
  }
8248
8412
  }
8249
- const notFound = [...plannedKindById.keys()].filter((id) => !existingById.has(id)).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
8413
+ const notFound = [...plannedKindById.keys()].filter((id) => !existingById.has(id)).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
8250
8414
  if (notFound.length > 0) {
8251
8415
  const crossKindById = /* @__PURE__ */ new Map();
8252
8416
  for (const kind of Object.keys(target.graph.edges)) {
@@ -8483,7 +8647,7 @@ async function assertForkPointUnchanged(precondition) {
8483
8647
  );
8484
8648
  }
8485
8649
  async function commitIncrementalPlan(target, plan, guard) {
8486
- if (!chunkMFZR4QKM_cjs.storeBackend(target).capabilities.transactions) {
8650
+ if (!chunk3KOY4FH3_cjs.storeBackend(target).capabilities.transactions) {
8487
8651
  throw new MergeError(
8488
8652
  "mergeIncremental() requires a transaction-capable target backend. Incremental writes must preflight existing rows and commit atomically; non-transactional fallback would allow partial graph writes.",
8489
8653
  { details: { capability: "transactions" } }
@@ -8493,7 +8657,7 @@ async function commitIncrementalPlan(target, plan, guard) {
8493
8657
  () => withTxConflictRetry(
8494
8658
  () => target.transaction(async (tx) => {
8495
8659
  if (target.revisionTrackingEnabled) {
8496
- await chunkOIFSOPSR_cjs.lockRecordedGraphWrite(chunkMFZR4QKM_cjs.transactionBackend(tx), target.graphId);
8660
+ await chunkEZEEWCFJ_cjs.lockRecordedGraphWrite(chunk3KOY4FH3_cjs.transactionBackend(tx), target.graphId);
8497
8661
  }
8498
8662
  await assertForkPointUnchanged(guard.forkPoint);
8499
8663
  const nodesApi = tx.nodes;
@@ -8504,12 +8668,12 @@ async function commitIncrementalPlan(target, plan, guard) {
8504
8668
  );
8505
8669
  await assertPlannedIdentityIdsFresh(
8506
8670
  target,
8507
- chunkMFZR4QKM_cjs.transactionBackend(tx),
8671
+ chunk3KOY4FH3_cjs.transactionBackend(tx),
8508
8672
  plan
8509
8673
  );
8510
8674
  await assertIdentityPeersStable(
8511
8675
  target,
8512
- chunkMFZR4QKM_cjs.transactionBackend(tx),
8676
+ chunk3KOY4FH3_cjs.transactionBackend(tx),
8513
8677
  guard.identityPeerProbe,
8514
8678
  plan
8515
8679
  );
@@ -8521,14 +8685,15 @@ async function commitIncrementalPlan(target, plan, guard) {
8521
8685
  nodesApi,
8522
8686
  edgesApi,
8523
8687
  target,
8524
- chunkMFZR4QKM_cjs.transactionBackend(tx)
8688
+ chunk3KOY4FH3_cjs.transactionBackend(tx)
8525
8689
  );
8526
8690
  }, mergeCommitTransactionOptions(target))
8527
8691
  )
8528
8692
  );
8529
8693
  }
8530
8694
  async function mergeIncremental(args) {
8531
- const { forkPoint, target, branches } = args;
8695
+ const { forkPoint, target } = args;
8696
+ const branches = unwrapMergeBranches(args.branches);
8532
8697
  const normalized = tryNormalize(args.options ?? {}, ["target"]);
8533
8698
  if (chunkGYEG3ZLZ_cjs.isErr(normalized)) {
8534
8699
  return chunkGYEG3ZLZ_cjs.err(normalized.error);
@@ -8614,6 +8779,7 @@ exports.asBranchId = asBranchId;
8614
8779
  exports.branch = branch;
8615
8780
  exports.cloneWorkingCopyStrategy = cloneWorkingCopyStrategy;
8616
8781
  exports.computeBaseVersion = computeBaseVersion;
8782
+ exports.ingestionBranch = ingestionBranch;
8617
8783
  exports.merge = merge;
8618
8784
  exports.mergeIncremental = mergeIncremental;
8619
8785
  exports.normalizeMergeOptions = normalizeMergeOptions;