@nicia-ai/typegraph 0.47.0 → 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 (207) 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-EMIB2RXD.cjs → chunk-2HIYYMWY.cjs} +99 -96
  36. package/dist/chunk-2HIYYMWY.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-5FT3TLPK.js → chunk-2SYZXD54.js} +16 -13
  40. package/dist/chunk-2SYZXD54.js.map +1 -0
  41. package/dist/{chunk-XYBQI6LE.js → chunk-2TYSSBU5.js} +6 -6
  42. package/dist/{chunk-XYBQI6LE.js.map → chunk-2TYSSBU5.js.map} +1 -1
  43. package/dist/{chunk-6JVZSOHQ.cjs → chunk-3FPR224C.cjs} +26 -26
  44. package/dist/{chunk-6JVZSOHQ.cjs.map → chunk-3FPR224C.cjs.map} +1 -1
  45. package/dist/{chunk-MFZR4QKM.cjs → chunk-3KOY4FH3.cjs} +181 -4
  46. package/dist/chunk-3KOY4FH3.cjs.map +1 -0
  47. package/dist/{chunk-6FWSNSRE.js → chunk-4WMMBDS5.js} +4 -4
  48. package/dist/chunk-4WMMBDS5.js.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-I4G3SQPF.cjs → chunk-7XUYFFR4.cjs} +7 -7
  56. package/dist/chunk-7XUYFFR4.cjs.map +1 -0
  57. package/dist/{chunk-KH7XW7VV.js → chunk-ACGSAMD3.js} +24 -27
  58. package/dist/chunk-ACGSAMD3.js.map +1 -0
  59. package/dist/{chunk-QS3NQZVC.js → chunk-AX6JGVTZ.js} +16 -11
  60. package/dist/chunk-AX6JGVTZ.js.map +1 -0
  61. package/dist/{chunk-DJZTXBWY.js → chunk-BRRP76WO.js} +71 -30
  62. package/dist/chunk-BRRP76WO.js.map +1 -0
  63. package/dist/{chunk-5UMTUOM5.js → chunk-CT3ZKTOF.js} +5 -4
  64. package/dist/chunk-CT3ZKTOF.js.map +1 -0
  65. package/dist/{chunk-XY5OMOJD.js → chunk-DZAICA5J.js} +3 -3
  66. package/dist/{chunk-XY5OMOJD.js.map → chunk-DZAICA5J.js.map} +1 -1
  67. package/dist/{chunk-OIFSOPSR.cjs → chunk-EZEEWCFJ.cjs} +38 -156
  68. package/dist/chunk-EZEEWCFJ.cjs.map +1 -0
  69. package/dist/{chunk-AMMWA76F.cjs → chunk-FA2AFWLP.cjs} +6 -6
  70. package/dist/{chunk-AMMWA76F.cjs.map → chunk-FA2AFWLP.cjs.map} +1 -1
  71. package/dist/{chunk-FNOMT74T.js → chunk-I4GAZH5Z.js} +180 -5
  72. package/dist/chunk-I4GAZH5Z.js.map +1 -0
  73. package/dist/{chunk-WGX7JH7E.cjs → chunk-JB6T4GLL.cjs} +106 -134
  74. package/dist/chunk-JB6T4GLL.cjs.map +1 -0
  75. package/dist/{chunk-MX4DHSQP.cjs → chunk-JFRT7S3B.cjs} +92 -98
  76. package/dist/chunk-JFRT7S3B.cjs.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-ZHNXLS3C.js → chunk-NACVVDWB.js} +208 -8
  80. package/dist/chunk-NACVVDWB.js.map +1 -0
  81. package/dist/{chunk-M35DF33T.js → chunk-OD4SSY2U.js} +29 -16
  82. package/dist/chunk-OD4SSY2U.js.map +1 -0
  83. package/dist/{chunk-U5EDAVOJ.cjs → chunk-OTUPEF2W.cjs} +54 -49
  84. package/dist/chunk-OTUPEF2W.cjs.map +1 -0
  85. package/dist/{chunk-BCQ76AXA.cjs → chunk-PFBRJBUL.cjs} +107 -94
  86. package/dist/chunk-PFBRJBUL.cjs.map +1 -0
  87. package/dist/{chunk-AVGUJWVX.js → chunk-S5TERQVW.js} +15 -132
  88. package/dist/chunk-S5TERQVW.js.map +1 -0
  89. package/dist/chunk-SIT26LAZ.cjs +614 -0
  90. package/dist/chunk-SIT26LAZ.cjs.map +1 -0
  91. package/dist/{chunk-BR7SHKGM.cjs → chunk-SR725PWF.cjs} +548 -507
  92. package/dist/chunk-SR725PWF.cjs.map +1 -0
  93. package/dist/{chunk-5FBRVORR.cjs → chunk-TKZXMWQF.cjs} +8 -7
  94. package/dist/chunk-TKZXMWQF.cjs.map +1 -0
  95. package/dist/{chunk-425IZOQ5.cjs → chunk-TQHGE7UC.cjs} +20 -2
  96. package/dist/chunk-TQHGE7UC.cjs.map +1 -0
  97. package/dist/{chunk-GYUJZARH.cjs → chunk-TUNPBZY3.cjs} +4 -4
  98. package/dist/{chunk-GYUJZARH.cjs.map → chunk-TUNPBZY3.cjs.map} +1 -1
  99. package/dist/chunk-UGHG7PGX.js +592 -0
  100. package/dist/chunk-UGHG7PGX.js.map +1 -0
  101. package/dist/{chunk-KABFHAL7.cjs → chunk-UMGZDVOA.cjs} +213 -12
  102. package/dist/chunk-UMGZDVOA.cjs.map +1 -0
  103. package/dist/{chunk-UPAJHMW3.cjs → chunk-WCCATHMB.cjs} +54 -57
  104. package/dist/chunk-WCCATHMB.cjs.map +1 -0
  105. package/dist/{chunk-LEWHMOUY.js → chunk-YIURNGXI.js} +4 -4
  106. package/dist/{chunk-LEWHMOUY.js.map → chunk-YIURNGXI.js.map} +1 -1
  107. package/dist/{chunk-EP4RUYD6.js → chunk-YVF2EM7B.js} +3 -3
  108. package/dist/{chunk-EP4RUYD6.js.map → chunk-YVF2EM7B.js.map} +1 -1
  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 +334 -191
  120. package/dist/graph-merge/index.cjs.map +1 -1
  121. package/dist/graph-merge/index.d.cts +65 -15
  122. package/dist/graph-merge/index.d.ts +65 -15
  123. package/dist/graph-merge/index.js +174 -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.d.cts +12 -12
  129. package/dist/index.d.ts +12 -12
  130. package/dist/index.js +13 -13
  131. package/dist/indexes/index.d.cts +4 -4
  132. package/dist/indexes/index.d.ts +4 -4
  133. package/dist/interchange/index.cjs +38 -38
  134. package/dist/interchange/index.d.cts +7 -7
  135. package/dist/interchange/index.d.ts +7 -7
  136. package/dist/interchange/index.js +10 -10
  137. package/dist/{manager-DlY1vlla.d.cts → manager-CYaff3n3.d.cts} +2 -2
  138. package/dist/{manager-B6sOQzcQ.d.ts → manager-D9eRT_ns.d.ts} +2 -2
  139. package/dist/{materialize-indexes-DQL4xcpf.d.ts → materialize-indexes-DJ3ykH59.d.ts} +1 -1
  140. package/dist/{materialize-indexes-sskhp-c_.d.cts → materialize-indexes-DTtAnvfY.d.cts} +1 -1
  141. package/dist/{postgres-BXy_nyMs.d.cts → postgres-CcL4bAHS.d.ts} +1 -1
  142. package/dist/{postgres-B6YOUcaK.d.ts → postgres-DMj39MEu.d.cts} +1 -1
  143. package/dist/profiler/index.d.cts +9 -9
  144. package/dist/profiler/index.d.ts +9 -9
  145. package/dist/provenance/index.cjs +25 -26
  146. package/dist/provenance/index.cjs.map +1 -1
  147. package/dist/provenance/index.d.cts +7 -7
  148. package/dist/provenance/index.d.ts +7 -7
  149. package/dist/provenance/index.js +9 -10
  150. package/dist/provenance/index.js.map +1 -1
  151. package/dist/repair-validity-windows-BFNZvd_H.d.cts +166 -0
  152. package/dist/repair-validity-windows-DlUSqwCg.d.ts +166 -0
  153. package/dist/schema/index.cjs +35 -35
  154. package/dist/schema/index.d.cts +6 -6
  155. package/dist/schema/index.d.ts +6 -6
  156. package/dist/schema/index.js +8 -8
  157. package/dist/{searchable-D9gMiwcS.d.ts → searchable-DHJMh_nj.d.cts} +1 -1
  158. package/dist/{searchable-0Cn_lY8U.d.cts → searchable-bpE1bBfc.d.ts} +1 -1
  159. package/dist/{sqlite-DioSxaPe.d.cts → sqlite-D7Oz0SQh.d.ts} +1 -1
  160. package/dist/{sqlite-ClXuBYAj.d.ts → sqlite-YppHrNFb.d.cts} +1 -1
  161. package/dist/{store-5j-w5onJ.d.ts → store-JUVvtmR4.d.cts} +113 -26
  162. package/dist/{store-CFedKGU5.d.cts → store-UzrGvZOo.d.ts} +113 -26
  163. package/dist/{temporal-CjO9FH1l.d.ts → temporal-5GqpYCk2.d.cts} +1 -1
  164. package/dist/{temporal-Ce1pG0S1.d.cts → temporal-CbnLzTmM.d.ts} +1 -1
  165. package/dist/{types-DKkMJZjR.d.cts → types-BqFZTQmV.d.cts} +29 -4
  166. package/dist/{types-DKkMJZjR.d.ts → types-BqFZTQmV.d.ts} +29 -4
  167. package/dist/{types-BrdOFu48.d.ts → types-Bx74kaTt.d.ts} +1 -1
  168. package/dist/{types-oj_OGAaZ.d.cts → types-CXAhpW-c.d.cts} +1 -1
  169. package/dist/{where-D1wKCJ4Q.d.cts → where-DI_Fqz-X.d.cts} +1 -1
  170. package/dist/{where-C8w2627G.d.ts → where-O-k2wgYm.d.ts} +1 -1
  171. package/package.json +1 -1
  172. package/dist/chunk-3HGRTCDU.cjs +0 -269
  173. package/dist/chunk-3HGRTCDU.cjs.map +0 -1
  174. package/dist/chunk-425IZOQ5.cjs.map +0 -1
  175. package/dist/chunk-5FBRVORR.cjs.map +0 -1
  176. package/dist/chunk-5FT3TLPK.js.map +0 -1
  177. package/dist/chunk-5UMTUOM5.js.map +0 -1
  178. package/dist/chunk-6FWSNSRE.js.map +0 -1
  179. package/dist/chunk-AVGUJWVX.js.map +0 -1
  180. package/dist/chunk-BCQ76AXA.cjs.map +0 -1
  181. package/dist/chunk-BR7SHKGM.cjs.map +0 -1
  182. package/dist/chunk-DJZTXBWY.js.map +0 -1
  183. package/dist/chunk-EMIB2RXD.cjs.map +0 -1
  184. package/dist/chunk-FNOMT74T.js.map +0 -1
  185. package/dist/chunk-I4G3SQPF.cjs.map +0 -1
  186. package/dist/chunk-JR6SX5RH.cjs +0 -268
  187. package/dist/chunk-JR6SX5RH.cjs.map +0 -1
  188. package/dist/chunk-KABFHAL7.cjs.map +0 -1
  189. package/dist/chunk-KH7XW7VV.js.map +0 -1
  190. package/dist/chunk-M35DF33T.js.map +0 -1
  191. package/dist/chunk-MFZR4QKM.cjs.map +0 -1
  192. package/dist/chunk-MX4DHSQP.cjs.map +0 -1
  193. package/dist/chunk-NAZ2RA4L.js +0 -254
  194. package/dist/chunk-NAZ2RA4L.js.map +0 -1
  195. package/dist/chunk-NG2RB5WL.js.map +0 -1
  196. package/dist/chunk-NNQ6A3RM.js.map +0 -1
  197. package/dist/chunk-OIFSOPSR.cjs.map +0 -1
  198. package/dist/chunk-QS3NQZVC.js.map +0 -1
  199. package/dist/chunk-SE6EGQSD.js.map +0 -1
  200. package/dist/chunk-SHSSRCFR.js +0 -246
  201. package/dist/chunk-SHSSRCFR.js.map +0 -1
  202. package/dist/chunk-U5EDAVOJ.cjs.map +0 -1
  203. package/dist/chunk-UPAJHMW3.cjs.map +0 -1
  204. package/dist/chunk-WGX7JH7E.cjs.map +0 -1
  205. package/dist/chunk-ZHNXLS3C.js.map +0 -1
  206. package/dist/ddl-CprnMXJ-.d.ts +0 -38
  207. 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 chunkOTUPEF2W_cjs = require('../chunk-OTUPEF2W.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 chunkOTUPEF2W_cjs.importGraphStream(
1918
1930
  freshStore,
1919
- chunkU5EDAVOJ_cjs.exportGraphStream(baseStore, exportOptions),
1931
+ chunkOTUPEF2W_cjs.exportGraphStream(baseStore, exportOptions),
1920
1932
  importOptions
1921
- ) : await chunkU5EDAVOJ_cjs.importGraph(
1933
+ ) : await chunkOTUPEF2W_cjs.importGraph(
1922
1934
  freshStore,
1923
- await chunkU5EDAVOJ_cjs.exportGraph(baseStore, exportOptions),
1935
+ await chunkOTUPEF2W_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,66 @@ 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
+ async function ingestionBranch(baseStore, makeBackend, options) {
2018
+ try {
2019
+ const created = await branch(
2020
+ baseStore,
2021
+ makeBackend,
2022
+ options,
2023
+ cloneIngestionWorkingCopyStrategy(makeBackend)
2024
+ );
2025
+ if (chunkGYEG3ZLZ_cjs.isErr(created)) {
2026
+ return chunkGYEG3ZLZ_cjs.err(
2027
+ new BranchError("Failed to create constraint-aware ingestion branch", {
2028
+ cause: created.error
2029
+ })
2030
+ );
2031
+ }
2032
+ const privateBranch = created.data;
2033
+ const { base, id, store } = privateBranch;
2034
+ const handle = Object.freeze({
2035
+ id,
2036
+ base,
2037
+ nodes: store.nodes,
2038
+ edges: store.edges,
2039
+ close: async () => chunk3KOY4FH3_cjs.storeBackend(store).close()
2040
+ });
2041
+ PRIVATE_BRANCHES.set(handle, privateBranch);
2042
+ return chunkGYEG3ZLZ_cjs.ok(handle);
2043
+ } catch (error) {
2044
+ return chunkGYEG3ZLZ_cjs.err(
2045
+ new BranchError("Failed to create constraint-aware ingestion branch", {
2046
+ cause: error
2047
+ })
2048
+ );
2049
+ }
2050
+ }
2051
+ function unwrapMergeBranch(input) {
2052
+ const privateBranch = PRIVATE_BRANCHES.get(input);
2053
+ if (privateBranch !== void 0) {
2054
+ return privateBranch;
2055
+ }
2056
+ return input;
2057
+ }
2058
+ function unwrapMergeBranches(inputs) {
2059
+ return inputs.map((input) => unwrapMergeBranch(input));
2060
+ }
2061
+
1979
2062
  // src/graph-merge/blocking.ts
1980
2063
  var UNBLOCKED_BUCKET_KEY = "unblocked";
1981
2064
  var KEY_PART_SEPARATOR = "\0";
@@ -2037,12 +2120,12 @@ function blockNodes(newNodes, resolveConfig, uniqueConstraints = []) {
2037
2120
  }
2038
2121
  }
2039
2122
  const sortedKeys = [...buckets.keys()].sort(
2040
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
2123
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
2041
2124
  );
2042
2125
  const ordered = /* @__PURE__ */ new Map();
2043
2126
  for (const key of sortedKeys) {
2044
2127
  const members = [...chunkN66HCGCY_cjs.requireDefined(buckets.get(key))].sort(
2045
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
2128
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
2046
2129
  );
2047
2130
  ordered.set(key, members);
2048
2131
  }
@@ -2059,7 +2142,7 @@ function buildBranchRank(branchOrder, allBranchIds) {
2059
2142
  next += 1;
2060
2143
  }
2061
2144
  }
2062
- const remaining = allBranchIds.filter((branchId) => !rank.has(branchId)).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
2145
+ const remaining = allBranchIds.filter((branchId) => !rank.has(branchId)).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
2063
2146
  for (const branchId of remaining) {
2064
2147
  if (!rank.has(branchId)) {
2065
2148
  rank.set(branchId, next);
@@ -2131,8 +2214,8 @@ function collectConflictingValues(property, contributions) {
2131
2214
  values.push({ branchId, value });
2132
2215
  }
2133
2216
  return [...values].sort((left, right) => {
2134
- const byBranch = chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId);
2135
- return byBranch === 0 ? chunkOIFSOPSR_cjs.compareStrings(
2217
+ const byBranch = chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId);
2218
+ return byBranch === 0 ? chunkEZEEWCFJ_cjs.compareStrings(
2136
2219
  canonicalValueKey(left.value),
2137
2220
  canonicalValueKey(right.value)
2138
2221
  ) : byBranch;
@@ -2262,7 +2345,7 @@ function unionProperties(canonicalMember, members, context, baseContext, branchR
2262
2345
  const props = chunkN66HCGCY_cjs.createDataKeyedBag();
2263
2346
  const conflicts = [];
2264
2347
  for (const property of [...propertyNames].sort(
2265
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
2348
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
2266
2349
  )) {
2267
2350
  const values = collectConflictingValues(property, members);
2268
2351
  if (values.length === 0) {
@@ -2327,14 +2410,14 @@ function canonicalizeCluster(cluster, members, policy, branchRank, weights, cano
2327
2410
  );
2328
2411
  const memberIds = [
2329
2412
  ...new Set(cluster.members.map((member) => idOf(member)))
2330
- ].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
2413
+ ].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
2331
2414
  const branchOrigins = [
2332
2415
  ...new Set(
2333
2416
  members.map((member) => member.branchId).filter(
2334
2417
  (branchId) => branchId !== BASE_PROVENANCE_BRANCH && branchId !== preferredBranchId
2335
2418
  )
2336
2419
  )
2337
- ].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
2420
+ ].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
2338
2421
  const resolution = {
2339
2422
  canonicalId,
2340
2423
  memberIds,
@@ -2414,7 +2497,7 @@ var EQUIVALENCE_META_EDGES = /* @__PURE__ */ new Set([
2414
2497
  chunkXUO3KQFO_cjs.META_EDGE_SAME_AS
2415
2498
  ]);
2416
2499
  function buildSubClassClosure(ontology) {
2417
- const unionFind = new UnionFind(chunkOIFSOPSR_cjs.compareStrings);
2500
+ const unionFind = new UnionFind(chunkEZEEWCFJ_cjs.compareStrings);
2418
2501
  for (const relation of ontology) {
2419
2502
  unionFind.add(relation.from);
2420
2503
  unionFind.add(relation.to);
@@ -2510,7 +2593,7 @@ function sourceKey(source) {
2510
2593
  }
2511
2594
  }
2512
2595
  function compareMatchSources(left, right) {
2513
- return chunkOIFSOPSR_cjs.compareStrings(sourceKey(left), sourceKey(right));
2596
+ return chunkEZEEWCFJ_cjs.compareStrings(sourceKey(left), sourceKey(right));
2514
2597
  }
2515
2598
  function compareEntityRefs(left, right) {
2516
2599
  return compareMergeKeys(
@@ -3252,7 +3335,7 @@ function pickHighestPriorityBranch(branchIds, branchRank) {
3252
3335
  let chosenRank = branchRank.get(chosen) ?? Number.MAX_SAFE_INTEGER;
3253
3336
  for (const candidate of branchIds.slice(1)) {
3254
3337
  const candidateRank = branchRank.get(candidate) ?? Number.MAX_SAFE_INTEGER;
3255
- if (candidateRank < chosenRank || candidateRank === chosenRank && chunkOIFSOPSR_cjs.compareStrings(candidate, chosen) < 0) {
3338
+ if (candidateRank < chosenRank || candidateRank === chosenRank && chunkEZEEWCFJ_cjs.compareStrings(candidate, chosen) < 0) {
3256
3339
  chosen = candidate;
3257
3340
  chosenRank = candidateRank;
3258
3341
  }
@@ -3345,20 +3428,20 @@ function resolveDeleteModifyOver(modified, deleted, modifiedEntity, deletedEntit
3345
3428
  }
3346
3429
  return {
3347
3430
  survivingModifications: [...survivingModifications].sort((left, right) => {
3348
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(
3431
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(
3349
3432
  modifiedEntity(left).id,
3350
3433
  modifiedEntity(right).id
3351
3434
  );
3352
- return byId2 === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId) : byId2;
3435
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
3353
3436
  }),
3354
3437
  deletions: [...deletions].sort(
3355
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
3438
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
3356
3439
  ),
3357
3440
  conflicts: [...conflicts].sort(
3358
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.entityId, right.entityId)
3441
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.entityId, right.entityId)
3359
3442
  ),
3360
3443
  dropped: [...dropped].sort(
3361
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
3444
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
3362
3445
  )
3363
3446
  };
3364
3447
  }
@@ -3402,11 +3485,11 @@ function reconcileOver(survivingModifications, entityOf, rebuild, policy, branch
3402
3485
  }
3403
3486
  return {
3404
3487
  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;
3488
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(entityOf(left).id, entityOf(right).id);
3489
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
3407
3490
  }),
3408
3491
  conflicts: conflicts.sort(
3409
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(
3492
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(
3410
3493
  `${left.entityId}|${left.property}`,
3411
3494
  `${right.entityId}|${right.property}`
3412
3495
  )
@@ -3440,7 +3523,7 @@ function threeWayMergeProps(entityId, kind, baseProps, contributions, context, b
3440
3523
  propertyNames.add(name);
3441
3524
  }
3442
3525
  }
3443
- for (const property of [...propertyNames].sort(chunkOIFSOPSR_cjs.compareStrings)) {
3526
+ for (const property of [...propertyNames].sort(chunkEZEEWCFJ_cjs.compareStrings)) {
3444
3527
  const baseHas = chunkN66HCGCY_cjs.hasOwnKey(baseProps, property);
3445
3528
  const baseKey = baseHas ? canonicalValueKey(chunkN66HCGCY_cjs.requireDefined(baseProps[property])) : void 0;
3446
3529
  const changed = contributions.filter((contribution) => {
@@ -3540,7 +3623,7 @@ function earliestEnd(claims) {
3540
3623
  let earliest;
3541
3624
  for (const claim of claims) {
3542
3625
  if (claim.change.kind !== "set") continue;
3543
- if (earliest === void 0 || chunkOIFSOPSR_cjs.compareStrings(claim.change.validTo, earliest) < 0) {
3626
+ if (earliest === void 0 || chunkEZEEWCFJ_cjs.compareStrings(claim.change.validTo, earliest) < 0) {
3544
3627
  earliest = claim.change.validTo;
3545
3628
  }
3546
3629
  }
@@ -3556,7 +3639,7 @@ function resolveEndClaims(claims, preferredBranchId) {
3556
3639
  }
3557
3640
  function claimingBranches(claims) {
3558
3641
  return [...new Set(claims.map((claim) => claim.branchId))].sort(
3559
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
3642
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
3560
3643
  );
3561
3644
  }
3562
3645
  function sameValidToChange(left, right) {
@@ -3653,7 +3736,7 @@ function resolvePopulation(entity, deltas, deletions, preferredBranchId, dropIte
3653
3736
  mergeKey(right.kind, right.id)
3654
3737
  )
3655
3738
  ),
3656
- dropped: dropped.sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id))
3739
+ dropped: dropped.sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id))
3657
3740
  };
3658
3741
  }
3659
3742
  function resolveValidWindows(staging, nodeDeletions, edgeDeletions, preferredBranchId) {
@@ -3742,7 +3825,7 @@ function rowsById(groupEdges) {
3742
3825
  function sourcePairByRow(rows) {
3743
3826
  const pairs = /* @__PURE__ */ new Map();
3744
3827
  for (const [id, members] of rows) {
3745
- const sorted = members.map((member) => member.sourcePair).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
3828
+ const sorted = members.map((member) => member.sourcePair).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
3746
3829
  pairs.set(id, chunkN66HCGCY_cjs.requireDefined(sorted[0]));
3747
3830
  }
3748
3831
  return pairs;
@@ -3753,14 +3836,14 @@ function foldSets(groupEdges) {
3753
3836
  const representatives = /* @__PURE__ */ new Map();
3754
3837
  for (const [id, pair] of sourcePairs) {
3755
3838
  const representative = representatives.get(pair);
3756
- if (representative === void 0 || chunkOIFSOPSR_cjs.compareStrings(id, representative) < 0) {
3839
+ if (representative === void 0 || chunkEZEEWCFJ_cjs.compareStrings(id, representative) < 0) {
3757
3840
  representatives.set(pair, id);
3758
3841
  }
3759
3842
  }
3760
3843
  const collapsed = [];
3761
3844
  const parallel = [];
3762
3845
  for (const id of [...rows.keys()].sort(
3763
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
3846
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
3764
3847
  )) {
3765
3848
  const members = chunkN66HCGCY_cjs.requireDefined(rows.get(id));
3766
3849
  const pair = chunkN66HCGCY_cjs.requireDefined(sourcePairs.get(id));
@@ -3773,7 +3856,7 @@ function foldSets(groupEdges) {
3773
3856
  return [collapsed, ...parallel];
3774
3857
  }
3775
3858
  function compareMembers(left, right, preferredBranchId) {
3776
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(left.staged.id, right.staged.id);
3859
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.staged.id, right.staged.id);
3777
3860
  if (byId2 !== 0) {
3778
3861
  return byId2;
3779
3862
  }
@@ -3782,7 +3865,7 @@ function compareMembers(left, right, preferredBranchId) {
3782
3865
  if (leftPreferred !== rightPreferred) {
3783
3866
  return leftPreferred ? -1 : 1;
3784
3867
  }
3785
- return chunkOIFSOPSR_cjs.compareStrings(left.staged.branchId, right.staged.branchId);
3868
+ return chunkEZEEWCFJ_cjs.compareStrings(left.staged.branchId, right.staged.branchId);
3786
3869
  }
3787
3870
  function pickSurvivor(edges, preferredBranchId) {
3788
3871
  const inherited = edges.filter(
@@ -3808,8 +3891,8 @@ function authoredProperty(edge, property) {
3808
3891
  }
3809
3892
  function unauthoredValue(property, edges) {
3810
3893
  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(
3894
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.staged.id, right.staged.id);
3895
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(
3813
3896
  canonicalValueKey(left.staged.props[property]),
3814
3897
  canonicalValueKey(right.staged.props[property])
3815
3898
  ) : byId2;
@@ -3826,7 +3909,7 @@ function unionEdgeProps(survivorId, kind, survivor, edges, context, branchRank,
3826
3909
  const props = chunkN66HCGCY_cjs.createDataKeyedBag();
3827
3910
  const conflicts = [];
3828
3911
  for (const property of [...propertyNames].sort(
3829
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
3912
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
3830
3913
  )) {
3831
3914
  const claimants = edges.filter((edge) => authoredProperty(edge, property)).map((edge) => edge.staged);
3832
3915
  const values = collectConflictingValues(property, claimants);
@@ -3859,7 +3942,7 @@ function unionEdgeProps(survivorId, kind, survivor, edges, context, branchRank,
3859
3942
  function foldEdgeSet(foldSet, context, branchRank, preferredBranchId) {
3860
3943
  const survivor = pickSurvivor(foldSet, preferredBranchId);
3861
3944
  const survivorId = survivor.staged.id;
3862
- const mergedIds = foldSet.map((edge) => edge.staged.id).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
3945
+ const mergedIds = foldSet.map((edge) => edge.staged.id).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
3863
3946
  const fromId = idOf(survivor.fromKey);
3864
3947
  const fromKind = kindOf(survivor.fromKey);
3865
3948
  const toId = idOf(survivor.toKey);
@@ -3957,7 +4040,7 @@ function repointEdges(stagedEdges, canonicalOf, deletedNodeIds, policy, branchRa
3957
4040
  const merged = [];
3958
4041
  const conflicts = [];
3959
4042
  const sortedGroups = [...liveByGroup.keys()].sort(
3960
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
4043
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
3961
4044
  );
3962
4045
  for (const group of sortedGroups) {
3963
4046
  const groupEdges = chunkN66HCGCY_cjs.requireDefined(liveByGroup.get(group));
@@ -3985,12 +4068,12 @@ function repointEdges(stagedEdges, canonicalOf, deletedNodeIds, policy, branchRa
3985
4068
  ),
3986
4069
  edge.id
3987
4070
  ])
3988
- })).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.sortKey, right.sortKey)).map(({ edge }) => edge);
4071
+ })).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.sortKey, right.sortKey)).map(({ edge }) => edge);
3989
4072
  return {
3990
4073
  edges: sortedEdges,
3991
- dropped: dropped.sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)),
4074
+ dropped: dropped.sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)),
3992
4075
  conflicts: conflicts.sort(
3993
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(
4076
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(
3994
4077
  `${left.entityId}|${left.property}`,
3995
4078
  `${right.entityId}|${right.property}`
3996
4079
  )
@@ -4781,7 +4864,7 @@ function buildProvenanceGraph(targetGraphId) {
4781
4864
  });
4782
4865
  }
4783
4866
  async function openProvenanceStore(...args) {
4784
- const [backend, targetGraphId] = args.length === 1 ? [chunkMFZR4QKM_cjs.storeBackend(args[0]), args[0].graphId] : args;
4867
+ const [backend, targetGraphId] = args.length === 1 ? [chunk3KOY4FH3_cjs.storeBackend(args[0]), args[0].graphId] : args;
4785
4868
  const graph = buildOwnedProvenanceGraph(targetGraphId);
4786
4869
  const preflight = await inspectSidecarGraphId(backend, graph, targetGraphId);
4787
4870
  if (preflight.state === "refuse") {
@@ -4793,7 +4876,7 @@ async function openProvenanceStore(...args) {
4793
4876
  throw provenanceGraphIdCollision(graph.id, targetGraphId, claim.reason);
4794
4877
  }
4795
4878
  }
4796
- const [store] = await chunkBR7SHKGM_cjs.createStoreWithSchema(graph, backend);
4879
+ const [store] = await chunkSR725PWF_cjs.createStoreWithSchema(graph, backend);
4797
4880
  return store;
4798
4881
  }
4799
4882
  async function claimSidecarOwnership(backend, graph, targetGraphId) {
@@ -4842,14 +4925,14 @@ async function inspectSidecarGraphId(port, graph, targetGraphId) {
4842
4925
  if (activeSchema === void 0) {
4843
4926
  return { state: "refuse", reason: "application-graph" };
4844
4927
  }
4845
- const ownedHash = await chunk6JVZSOHQ_cjs.computeSchemaHash(
4846
- chunk6JVZSOHQ_cjs.serializeSchema(graph, activeSchema.version)
4928
+ const ownedHash = await chunk3FPR224C_cjs.computeSchemaHash(
4929
+ chunk3FPR224C_cjs.serializeSchema(graph, activeSchema.version)
4847
4930
  );
4848
4931
  if (activeSchema.schema_hash === ownedHash) {
4849
4932
  return { state: "refuse", reason: "unowned-exact-schema-graph" };
4850
4933
  }
4851
- const legacyHash = await chunk6JVZSOHQ_cjs.computeSchemaHash(
4852
- chunk6JVZSOHQ_cjs.serializeSchema(buildProvenanceGraph(targetGraphId), activeSchema.version)
4934
+ const legacyHash = await chunk3FPR224C_cjs.computeSchemaHash(
4935
+ chunk3FPR224C_cjs.serializeSchema(buildProvenanceGraph(targetGraphId), activeSchema.version)
4853
4936
  );
4854
4937
  if (activeSchema.schema_hash !== legacyHash) {
4855
4938
  return { state: "refuse", reason: "application-graph" };
@@ -5041,7 +5124,7 @@ function contributionKey(record) {
5041
5124
  ]);
5042
5125
  }
5043
5126
  function encodeProvenanceTuple(values) {
5044
- return values.some((value) => value.includes(ID_SEPARATOR)) ? chunkMX4DHSQP_cjs.encodeTupleKey(values) : values.join(ID_SEPARATOR);
5127
+ return values.some((value) => value.includes(ID_SEPARATOR)) ? chunkEZEEWCFJ_cjs.encodeTupleKey(values) : values.join(ID_SEPARATOR);
5045
5128
  }
5046
5129
  async function provenanceNodeId(targetGraphId, record) {
5047
5130
  const tuple = encodeProvenanceTuple([
@@ -5084,7 +5167,7 @@ async function readProvenance(store, query = {}) {
5084
5167
  const all = await store.nodes.Provenance.find();
5085
5168
  return all.filter(
5086
5169
  (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));
5170
+ ).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id));
5088
5171
  }
5089
5172
 
5090
5173
  // src/graph-merge/sources.ts
@@ -5094,10 +5177,10 @@ function orderEndpoints(left, right, sources) {
5094
5177
  return compareMergeKeys(leftKey, rightKey) <= 0 ? { a: leftKey, b: rightKey, left, right, sources } : { a: rightKey, b: leftKey, left: right, right: left, sources };
5095
5178
  }
5096
5179
  function sortMembersById(members) {
5097
- return [...members].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id));
5180
+ return [...members].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id));
5098
5181
  }
5099
5182
  function sortedBucketKeys(blocks) {
5100
- return [...blocks.keys()].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
5183
+ return [...blocks.keys()].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
5101
5184
  }
5102
5185
  var NODE_SYSTEM_FIELDS = /* @__PURE__ */ new Set(["id", "kind", "meta"]);
5103
5186
  function nodeProps(node) {
@@ -5125,7 +5208,7 @@ function windowedPairs(members, config) {
5125
5208
  key: fieldText(node, config.sortFields)
5126
5209
  }));
5127
5210
  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)
5211
+ (left, right) => left.key === right.key ? chunkEZEEWCFJ_cjs.compareStrings(left.node.id, right.node.id) : chunkEZEEWCFJ_cjs.compareStrings(left.key, right.key)
5129
5212
  );
5130
5213
  const pairs = [];
5131
5214
  for (let index = 0; index < keyed.length; index += 1) {
@@ -5236,7 +5319,7 @@ function ontologyRetypeEdges(stagedIdentities, isRetypeCompatible) {
5236
5319
  }
5237
5320
  }
5238
5321
  const edges = [];
5239
- for (const id of [...identitiesById.keys()].sort(chunkOIFSOPSR_cjs.compareStrings)) {
5322
+ for (const id of [...identitiesById.keys()].sort(chunkEZEEWCFJ_cjs.compareStrings)) {
5240
5323
  const identities = [...new Set(identitiesById.get(id))].sort(
5241
5324
  compareMergeKeys
5242
5325
  );
@@ -5344,7 +5427,7 @@ var baseUniqueSource = {
5344
5427
  const forcedEdges = [];
5345
5428
  const baseMembers = /* @__PURE__ */ new Map();
5346
5429
  const constraints = [...uniqueConstraints].sort(
5347
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.name, right.name)
5430
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.name, right.name)
5348
5431
  );
5349
5432
  const items = nodes.map((node) => ({ props: nodeProps(node) }));
5350
5433
  const matchesByConstraint = await Promise.all(
@@ -5414,7 +5497,7 @@ var baseUniqueSource = {
5414
5497
  pairs: [],
5415
5498
  forcedEdges,
5416
5499
  baseMembers: [...baseMembers.values()].sort(
5417
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
5500
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
5418
5501
  )
5419
5502
  };
5420
5503
  }
@@ -5492,7 +5575,7 @@ var baseKeySource = {
5492
5575
  pairs,
5493
5576
  forcedEdges: [],
5494
5577
  baseMembers: [...baseMembers.values()].sort(
5495
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
5578
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
5496
5579
  )
5497
5580
  };
5498
5581
  }
@@ -5504,16 +5587,16 @@ var CANDIDATE_SOURCES = [
5504
5587
 
5505
5588
  // src/graph-merge/staging.ts
5506
5589
  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;
5590
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id);
5591
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5509
5592
  }
5510
5593
  function compareByKindIdBranch(left, right) {
5511
- const byKind = chunkOIFSOPSR_cjs.compareStrings(left.kind, right.kind);
5594
+ const byKind = chunkEZEEWCFJ_cjs.compareStrings(left.kind, right.kind);
5512
5595
  if (byKind !== 0) {
5513
5596
  return byKind;
5514
5597
  }
5515
- const byId2 = chunkOIFSOPSR_cjs.compareStrings(left.id, right.id);
5516
- return byId2 === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5598
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id);
5599
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5517
5600
  }
5518
5601
  function groupByKind(items) {
5519
5602
  const buckets = /* @__PURE__ */ new Map();
@@ -5527,7 +5610,7 @@ function groupByKind(items) {
5527
5610
  }
5528
5611
  const ordered = /* @__PURE__ */ new Map();
5529
5612
  for (const kind of [...buckets.keys()].sort(
5530
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
5613
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
5531
5614
  )) {
5532
5615
  ordered.set(
5533
5616
  kind,
@@ -5549,7 +5632,7 @@ async function stageBranches(baseStore, branches, captureTargetStateFor) {
5549
5632
  const windowedEdges = [];
5550
5633
  const newIdentityAssertions = [];
5551
5634
  const retractedIdentityAssertions = [];
5552
- const baseIdentityAssertions = await chunkMFZR4QKM_cjs.storeRuntime(baseStore).readCurrentIdentityAssertions("state");
5635
+ const baseIdentityAssertions = await chunk3KOY4FH3_cjs.storeRuntime(baseStore).readCurrentIdentityAssertions("state");
5553
5636
  let targetNodeVersions = /* @__PURE__ */ new Map();
5554
5637
  let targetEdgeSignatures = /* @__PURE__ */ new Map();
5555
5638
  for (const branch2 of branches) {
@@ -5620,17 +5703,17 @@ async function stageBranches(baseStore, branches, captureTargetStateFor) {
5620
5703
  (left, right) => compareByKindIdBranch(left, right)
5621
5704
  ),
5622
5705
  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;
5706
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.assertion.id, right.assertion.id);
5707
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5625
5708
  }),
5626
5709
  retractedIdentityAssertions: retractedIdentityAssertions.toSorted(
5627
5710
  (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;
5711
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.assertion.id, right.assertion.id);
5712
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5630
5713
  }
5631
5714
  ),
5632
5715
  baseIdentityAssertions: baseIdentityAssertions.toSorted(
5633
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)
5716
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
5634
5717
  ),
5635
5718
  targetNodeVersions,
5636
5719
  targetEdgeSignatures
@@ -5682,7 +5765,7 @@ async function withTxConflictRetry(commit) {
5682
5765
  // src/graph-merge/type-reconcile.ts
5683
5766
  var INCOMPATIBLE_TYPES_FLAG_REASON = "type-reconcile:incompatible-kinds";
5684
5767
  function distinctKinds(kinds) {
5685
- return [...new Set(kinds)].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
5768
+ return [...new Set(kinds)].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
5686
5769
  }
5687
5770
  function areEquivalent(closure, left, right) {
5688
5771
  return left !== right && isReachable2(closure, left, right) && isReachable2(closure, right, left);
@@ -5701,7 +5784,7 @@ function mostSpecificCommonKind(closure, kinds) {
5701
5784
  return void 0;
5702
5785
  }
5703
5786
  return chunkN66HCGCY_cjs.requireDefined(
5704
- [...qualifiers].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right))[0]
5787
+ [...qualifiers].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right))[0]
5705
5788
  );
5706
5789
  }
5707
5790
  function reconcileTypes(clusters, closure, mode) {
@@ -5739,10 +5822,10 @@ function reconcileTypes(clusters, closure, mode) {
5739
5822
  }
5740
5823
  return {
5741
5824
  reconciliations: reconciliations.sort(
5742
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left.entityId, right.entityId)
5825
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.entityId, right.entityId)
5743
5826
  ),
5744
5827
  retypeMap,
5745
- dropped: dropped.sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id))
5828
+ dropped: dropped.sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id))
5746
5829
  };
5747
5830
  }
5748
5831
 
@@ -5760,8 +5843,8 @@ function newNodesByKind(staging) {
5760
5843
  ordered.set(
5761
5844
  kind,
5762
5845
  [...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;
5846
+ const byId2 = chunkEZEEWCFJ_cjs.compareStrings(left.node.id, right.node.id);
5847
+ return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
5765
5848
  })
5766
5849
  );
5767
5850
  }
@@ -5795,7 +5878,7 @@ async function precomputeEmbeddings(byKind, resolve, embedder) {
5795
5878
  }
5796
5879
  async function embedSortedTexts(texts, embedder) {
5797
5880
  const orderedTexts = [...texts].sort(
5798
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
5881
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
5799
5882
  );
5800
5883
  const vectors = await embedder(orderedTexts);
5801
5884
  if (vectors.length !== orderedTexts.length) {
@@ -6070,9 +6153,9 @@ function buildProvenanceIndex(records) {
6070
6153
  for (const [branchId, sets] of byBranch) {
6071
6154
  frozen.set(branchId, {
6072
6155
  nodeIds: [...sets.nodeIds].sort(
6073
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)
6156
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
6074
6157
  ),
6075
- edgeIds: [...sets.edgeIds].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right)).map((id) => id)
6158
+ edgeIds: [...sets.edgeIds].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)).map((id) => id)
6076
6159
  });
6077
6160
  }
6078
6161
  return {
@@ -6472,7 +6555,7 @@ function buildInternalMergePlan(staging, candidateEdges, candidateWarnings, cand
6472
6555
  ...identityRemap.dropped,
6473
6556
  ...validWindows.dropped
6474
6557
  ].sort(
6475
- (left, right) => chunkOIFSOPSR_cjs.compareStrings(`${left.kind}|${left.id}`, `${right.kind}|${right.id}`)
6558
+ (left, right) => chunkEZEEWCFJ_cjs.compareStrings(`${left.kind}|${left.id}`, `${right.kind}|${right.id}`)
6476
6559
  );
6477
6560
  return {
6478
6561
  canonicalEntities,
@@ -6509,7 +6592,7 @@ function buildInternalMergePlan(staging, candidateEdges, candidateWarnings, cand
6509
6592
  mergeKey(left.kind, left.entityId),
6510
6593
  mergeKey(right.kind, right.entityId)
6511
6594
  );
6512
- return byEntity === 0 ? chunkOIFSOPSR_cjs.compareStrings(left.property, right.property) : byEntity;
6595
+ return byEntity === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.property, right.property) : byEntity;
6513
6596
  }
6514
6597
  ),
6515
6598
  deleteModifyConflicts: [
@@ -6659,20 +6742,67 @@ function nodeWriteWindowOptions(write) {
6659
6742
  ...write.validTo === void 0 ? {} : { validTo: write.validTo }
6660
6743
  };
6661
6744
  }
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();
6745
+ async function applyNodeRows(target, txBackend, nodesApi, deletions, upserts) {
6746
+ const afterImages = /* @__PURE__ */ new Map();
6747
+ const upsertsByKind = /* @__PURE__ */ new Map();
6667
6748
  for (const upsert of upserts) {
6668
- await nodeCollection(nodesApi, upsert.kind).upsertByIdFromRecord(
6669
- upsert.id,
6670
- upsert.props,
6671
- nodeWriteWindowOptions(upsert)
6749
+ const items = upsertsByKind.get(upsert.kind);
6750
+ if (items === void 0) upsertsByKind.set(upsert.kind, [upsert]);
6751
+ else items.push(upsert);
6752
+ }
6753
+ for (const [kind, items] of upsertsByKind) {
6754
+ const currentRows = await nodeCollection(nodesApi, kind).getByIds(
6755
+ items.map((item) => item.id),
6756
+ INCLUDE_TOMBSTONES
6672
6757
  );
6673
- committed.add(mergeKey(upsert.kind, upsert.id));
6758
+ const currentById = /* @__PURE__ */ new Map();
6759
+ for (const node of currentRows) {
6760
+ if (node !== void 0) currentById.set(node.id, nodeProps2(node));
6761
+ }
6762
+ for (const item of items) {
6763
+ const props = chunkN66HCGCY_cjs.createDataKeyedBag();
6764
+ const unset = new Set(
6765
+ Object.entries(item.props).filter(([, value]) => value === void 0).map(([key]) => key)
6766
+ );
6767
+ for (const [key, value] of Object.entries(
6768
+ currentById.get(item.id) ?? {}
6769
+ )) {
6770
+ if (!unset.has(key)) props[key] = value;
6771
+ }
6772
+ for (const [key, value] of Object.entries(item.props)) {
6773
+ if (value !== void 0) props[key] = value;
6774
+ }
6775
+ afterImages.set(mergeKey(kind, item.id), props);
6776
+ }
6674
6777
  }
6675
- return committed.size;
6778
+ return chunk3KOY4FH3_cjs.storeRuntime(target).applyResolvedNodeUniqueness(
6779
+ txBackend,
6780
+ {
6781
+ upserts: upserts.map((upsert) => ({
6782
+ kind: upsert.kind,
6783
+ id: upsert.id,
6784
+ props: chunkN66HCGCY_cjs.requireDefined(
6785
+ afterImages.get(mergeKey(upsert.kind, upsert.id))
6786
+ )
6787
+ })),
6788
+ releases: deletions
6789
+ },
6790
+ async () => {
6791
+ for (const deletion of deletions) {
6792
+ await nodeCollection(nodesApi, deletion.kind).delete(deletion.id);
6793
+ }
6794
+ const committed = /* @__PURE__ */ new Set();
6795
+ for (const upsert of upserts) {
6796
+ await nodeCollection(nodesApi, upsert.kind).upsertByIdFromRecord(
6797
+ upsert.id,
6798
+ upsert.props,
6799
+ nodeWriteWindowOptions(upsert)
6800
+ );
6801
+ committed.add(mergeKey(upsert.kind, upsert.id));
6802
+ }
6803
+ return committed.size;
6804
+ }
6805
+ );
6676
6806
  }
6677
6807
  async function applyEdgeRows(edgesApi, deletions, upserts) {
6678
6808
  for (const deletion of deletions) {
@@ -6693,7 +6823,7 @@ async function applyEdgeRows(edgesApi, deletions, upserts) {
6693
6823
  }
6694
6824
  async function applyIdentityRows(target, txBackend, assertions, retractions, assertConsistent) {
6695
6825
  try {
6696
- const applied = await chunkMFZR4QKM_cjs.storeRuntime(target).applyIdentityMergeAtTarget(
6826
+ const applied = await chunk3KOY4FH3_cjs.storeRuntime(target).applyIdentityMergeAtTarget(
6697
6827
  txBackend,
6698
6828
  retractions,
6699
6829
  assertions
@@ -6733,7 +6863,13 @@ async function applyInternalMergePlan(plan, nodesApi, edgesApi, target, txBacken
6733
6863
  );
6734
6864
  let committedNodes;
6735
6865
  try {
6736
- committedNodes = await applyNodeRows(nodesApi, nodeDeletions, nodeUpserts);
6866
+ committedNodes = await applyNodeRows(
6867
+ target,
6868
+ txBackend,
6869
+ nodesApi,
6870
+ nodeDeletions,
6871
+ nodeUpserts
6872
+ );
6737
6873
  } catch (error) {
6738
6874
  throw error instanceof chunkMRDBBHIZ_cjs.IdentityEndpointValidityError ? translateIdentityCommitError(error) : error;
6739
6875
  }
@@ -6785,7 +6921,7 @@ async function applyInternalMergePlan(plan, nodesApi, edgesApi, target, txBacken
6785
6921
  };
6786
6922
  }
6787
6923
  async function commitPlan(target, plan, expectedBaseVersion) {
6788
- if (!chunkMFZR4QKM_cjs.storeBackend(target).capabilities.transactions) {
6924
+ if (!chunk3KOY4FH3_cjs.storeBackend(target).capabilities.transactions) {
6789
6925
  throw new MergeError(
6790
6926
  "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
6927
  { details: { capability: "transactions" } }
@@ -6796,14 +6932,14 @@ async function commitPlan(target, plan, expectedBaseVersion) {
6796
6932
  () => target.transaction(async (tx) => {
6797
6933
  if (expectedBaseVersion !== void 0) {
6798
6934
  await assertTargetUnchanged(
6799
- chunkMFZR4QKM_cjs.transactionBackend(tx),
6935
+ chunk3KOY4FH3_cjs.transactionBackend(tx),
6800
6936
  target,
6801
6937
  expectedBaseVersion
6802
6938
  );
6803
6939
  }
6804
6940
  await assertPlannedIdentityIdsFresh(
6805
6941
  target,
6806
- chunkMFZR4QKM_cjs.transactionBackend(tx),
6942
+ chunk3KOY4FH3_cjs.transactionBackend(tx),
6807
6943
  plan
6808
6944
  );
6809
6945
  return applyInternalMergePlan(
@@ -6811,7 +6947,7 @@ async function commitPlan(target, plan, expectedBaseVersion) {
6811
6947
  tx.nodes,
6812
6948
  tx.edges,
6813
6949
  target,
6814
- chunkMFZR4QKM_cjs.transactionBackend(tx)
6950
+ chunk3KOY4FH3_cjs.transactionBackend(tx)
6815
6951
  );
6816
6952
  }, mergeCommitTransactionOptions(target))
6817
6953
  )
@@ -6832,9 +6968,9 @@ function mergeCommitTransactionOptions(target) {
6832
6968
  }
6833
6969
  async function assertTargetUnchanged(txBackend, target, expectedBaseVersion) {
6834
6970
  if (hasRevisionAnchor(expectedBaseVersion)) {
6835
- await chunkOIFSOPSR_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
6971
+ await chunkEZEEWCFJ_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
6836
6972
  const expectedOrigin = revisionOriginOf(expectedBaseVersion);
6837
- const liveOrigin = await chunkOIFSOPSR_cjs.readRevisionOrigin(
6973
+ const liveOrigin = await chunkEZEEWCFJ_cjs.readRevisionOrigin(
6838
6974
  txBackend,
6839
6975
  target.revisionSchema,
6840
6976
  target.graphId
@@ -6848,7 +6984,7 @@ async function assertTargetUnchanged(txBackend, target, expectedBaseVersion) {
6848
6984
  }
6849
6985
  );
6850
6986
  }
6851
- const liveRevision = await chunkOIFSOPSR_cjs.readRecordedClock(
6987
+ const liveRevision = await chunkEZEEWCFJ_cjs.readRecordedClock(
6852
6988
  txBackend,
6853
6989
  target.revisionSchema,
6854
6990
  target.graphId
@@ -6869,7 +7005,7 @@ async function assertTargetUnchanged(txBackend, target, expectedBaseVersion) {
6869
7005
  txBackend,
6870
7006
  target.graphId,
6871
7007
  target.graph,
6872
- await chunkMFZR4QKM_cjs.storeRuntime(target).identityAssertionsAtTarget(txBackend, "state")
7008
+ await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionsAtTarget(txBackend, "state")
6873
7009
  );
6874
7010
  const expectedContent = contentComponentOf(expectedBaseVersion);
6875
7011
  if (liveContent !== expectedContent) {
@@ -6961,7 +7097,7 @@ async function tryOpenProvenanceStore(target) {
6961
7097
  }
6962
7098
  }
6963
7099
  function assertPublicPlanCapability(target) {
6964
- if (!chunkMFZR4QKM_cjs.storeBackend(target).capabilities.transactions) {
7100
+ if (!chunk3KOY4FH3_cjs.storeBackend(target).capabilities.transactions) {
6965
7101
  throw new MergePlanCapabilityError(
6966
7102
  "Public merge plans require a transaction-capable target backend.",
6967
7103
  { details: { capability: "transactions" } }
@@ -6980,7 +7116,7 @@ function assertPublicPlanCapability(target) {
6980
7116
  async function captureMergePlanTargetFence(target) {
6981
7117
  assertPublicPlanCapability(target);
6982
7118
  const [activeSchema, schemaHash, origin, revision] = await Promise.all([
6983
- chunkMFZR4QKM_cjs.storeBackend(target).getActiveSchema(target.graphId),
7119
+ chunk3KOY4FH3_cjs.storeBackend(target).getActiveSchema(target.graphId),
6984
7120
  computeSchemaComponent(target),
6985
7121
  target.revisionOriginNow(),
6986
7122
  target.revisionNow()
@@ -7009,7 +7145,7 @@ async function assertPlanningFenceUnchanged(target, startingFence) {
7009
7145
  function splitWireProps(props) {
7010
7146
  const setProps = chunkN66HCGCY_cjs.createDataKeyedBag();
7011
7147
  const unsetProps = [];
7012
- for (const key of Object.keys(props).sort(chunkOIFSOPSR_cjs.compareStrings)) {
7148
+ for (const key of Object.keys(props).sort(chunkEZEEWCFJ_cjs.compareStrings)) {
7013
7149
  const value = props[key];
7014
7150
  if (value === void 0) {
7015
7151
  unsetProps.push(key);
@@ -7146,7 +7282,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7146
7282
  }
7147
7283
  }
7148
7284
  for (const branch2 of branches) {
7149
- const branchSchemaRow = await chunkMFZR4QKM_cjs.storeBackend(branch2.store).getActiveSchema(
7285
+ const branchSchemaRow = await chunk3KOY4FH3_cjs.storeBackend(branch2.store).getActiveSchema(
7150
7286
  branch2.store.graphId
7151
7287
  );
7152
7288
  let drifted;
@@ -7154,7 +7290,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7154
7290
  const anchor = branch2.schemaAnchor;
7155
7291
  drifted = anchor === void 0 ? branchSchemaRow !== void 0 : branchSchemaRow?.version !== anchor.version || branchSchemaRow.schema_hash !== anchor.hash;
7156
7292
  } else {
7157
- const sourceSchemaRow = await chunkMFZR4QKM_cjs.storeBackend(store).getActiveSchema(
7293
+ const sourceSchemaRow = await chunk3KOY4FH3_cjs.storeBackend(store).getActiveSchema(
7158
7294
  store.graphId
7159
7295
  );
7160
7296
  drifted = branchSchemaRow?.schema_hash !== sourceSchemaRow?.schema_hash;
@@ -7199,7 +7335,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7199
7335
  options.embedder
7200
7336
  );
7201
7337
  const ctx = {
7202
- backend: chunkMFZR4QKM_cjs.storeBackend(store),
7338
+ backend: chunk3KOY4FH3_cjs.storeBackend(store),
7203
7339
  ...embeddings === void 0 ? {} : { embeddings }
7204
7340
  };
7205
7341
  const candidates = await generateAllCandidates(
@@ -7227,7 +7363,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7227
7363
  ])
7228
7364
  ])
7229
7365
  ];
7230
- const targetPeers = identityProbeIds === void 0 ? [] : await chunkMFZR4QKM_cjs.storeRuntime(target).liveNodesSharingIds(identityProbeIds);
7366
+ const targetPeers = identityProbeIds === void 0 ? [] : await chunk3KOY4FH3_cjs.storeRuntime(target).liveNodesSharingIds(identityProbeIds);
7231
7367
  const stagedIdentityIds = [
7232
7368
  .../* @__PURE__ */ new Set([
7233
7369
  ...staging.newIdentityAssertions.map((staged) => staged.assertion.id),
@@ -7236,7 +7372,7 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7236
7372
  )
7237
7373
  ])
7238
7374
  ];
7239
- const storedIdentityRowsById = stagedIdentityIds.length === 0 || target.graph.identity === void 0 ? NO_STORED_ASSERTIONS : await chunkMFZR4QKM_cjs.storeRuntime(target).identityAssertionRowsByIds(
7375
+ const storedIdentityRowsById = stagedIdentityIds.length === 0 || target.graph.identity === void 0 ? NO_STORED_ASSERTIONS : await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionRowsByIds(
7240
7376
  stagedIdentityIds
7241
7377
  );
7242
7378
  const identityContext = {
@@ -7261,14 +7397,14 @@ async function resolveMerge(store, target, branches, options, useBaseSources, in
7261
7397
  if (plan.identityAssertions.length > 0) {
7262
7398
  assertOneIdOneTruth(
7263
7399
  plan.identityAssertions,
7264
- await chunkMFZR4QKM_cjs.storeRuntime(target).identityAssertionRowsByIds(
7400
+ await chunk3KOY4FH3_cjs.storeRuntime(target).identityAssertionRowsByIds(
7265
7401
  plan.identityAssertions.map((assertion) => assertion.id)
7266
7402
  )
7267
7403
  );
7268
7404
  }
7269
7405
  let identityGuard;
7270
7406
  if (identityProbeIds !== void 0 && incremental !== void 0) {
7271
- const freshPeers = await chunkMFZR4QKM_cjs.storeRuntime(target).liveNodesSharingIds(identityProbeIds);
7407
+ const freshPeers = await chunk3KOY4FH3_cjs.storeRuntime(target).liveNodesSharingIds(identityProbeIds);
7272
7408
  const built = await buildIdentityPeerProbe(
7273
7409
  target,
7274
7410
  identityProbeIds,
@@ -7397,7 +7533,8 @@ function incrementalSchemaError() {
7397
7533
  { details: {} }
7398
7534
  );
7399
7535
  }
7400
- async function planMerge(store, branches, optionsInput = {}) {
7536
+ async function planMerge(store, branchInputs, optionsInput = {}) {
7537
+ const branches = unwrapMergeBranches(branchInputs);
7401
7538
  const normalized = tryNormalize(optionsInput);
7402
7539
  if (chunkGYEG3ZLZ_cjs.isErr(normalized)) return chunkGYEG3ZLZ_cjs.err(normalized.error);
7403
7540
  const options = normalized.data;
@@ -7418,7 +7555,7 @@ async function planMerge(store, branches, optionsInput = {}) {
7418
7555
  const anchors = {
7419
7556
  kind: "snapshot",
7420
7557
  base: { graphId: store.graphId, baseVersion: precondition.data },
7421
- branches: [...branches].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)).map((branch2) => ({
7558
+ branches: [...branches].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)).map((branch2) => ({
7422
7559
  branchId: branch2.id,
7423
7560
  baseVersion: branch2.base
7424
7561
  }))
@@ -7438,7 +7575,8 @@ async function planMerge(store, branches, optionsInput = {}) {
7438
7575
  );
7439
7576
  }
7440
7577
  async function planMergeIncremental(args) {
7441
- const { forkPoint, target, branches } = args;
7578
+ const { forkPoint, target } = args;
7579
+ const branches = unwrapMergeBranches(args.branches);
7442
7580
  const normalized = tryNormalize(args.options ?? {}, ["target"]);
7443
7581
  if (chunkGYEG3ZLZ_cjs.isErr(normalized)) return chunkGYEG3ZLZ_cjs.err(normalized.error);
7444
7582
  const options = normalized.data;
@@ -7464,7 +7602,7 @@ async function planMergeIncremental(args) {
7464
7602
  computeSchemaComponent(target)
7465
7603
  ]);
7466
7604
  if (forkSchema !== targetSchema) return chunkGYEG3ZLZ_cjs.err(incrementalSchemaError());
7467
- const forkActiveSchema = await chunkMFZR4QKM_cjs.storeBackend(forkPoint).getActiveSchema(
7605
+ const forkActiveSchema = await chunk3KOY4FH3_cjs.storeBackend(forkPoint).getActiveSchema(
7468
7606
  forkPoint.graphId
7469
7607
  );
7470
7608
  const targetBranch = {
@@ -7483,7 +7621,7 @@ async function planMergeIncremental(args) {
7483
7621
  hash: forkActiveSchema?.schema_hash ?? forkSchema
7484
7622
  }
7485
7623
  },
7486
- branches: [...branches].sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left.id, right.id)).map((branch2) => ({
7624
+ branches: [...branches].sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)).map((branch2) => ({
7487
7625
  branchId: branch2.id,
7488
7626
  baseVersion: branch2.base
7489
7627
  }))
@@ -7808,7 +7946,7 @@ async function preflightWireMergeWrites(target, nodesApi, edgesApi, artifact) {
7808
7946
  }
7809
7947
  }
7810
7948
  async function assertMergePlanFenceInsideTransaction(target, txBackend, artifact) {
7811
- await chunkOIFSOPSR_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
7949
+ await chunkEZEEWCFJ_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
7812
7950
  const activeSchema = await txBackend.getActiveSchema(target.graphId);
7813
7951
  const liveSchema = {
7814
7952
  managed: activeSchema !== void 0,
@@ -7821,7 +7959,7 @@ async function assertMergePlanFenceInsideTransaction(target, txBackend, artifact
7821
7959
  { details: { expected: artifact.target.schema, live: liveSchema } }
7822
7960
  );
7823
7961
  }
7824
- const liveOrigin = await chunkOIFSOPSR_cjs.readRevisionOrigin(
7962
+ const liveOrigin = await chunkEZEEWCFJ_cjs.readRevisionOrigin(
7825
7963
  txBackend,
7826
7964
  target.revisionSchema,
7827
7965
  target.graphId
@@ -7837,7 +7975,7 @@ async function assertMergePlanFenceInsideTransaction(target, txBackend, artifact
7837
7975
  }
7838
7976
  );
7839
7977
  }
7840
- const liveRevision = await chunkOIFSOPSR_cjs.readRecordedClock(
7978
+ const liveRevision = await chunkEZEEWCFJ_cjs.readRecordedClock(
7841
7979
  txBackend,
7842
7980
  target.revisionSchema,
7843
7981
  target.graphId
@@ -7879,6 +8017,8 @@ function identityConsistencySeeds(artifact, profile) {
7879
8017
  }
7880
8018
  async function applyWireMergeWrites(target, nodesApi, edgesApi, txBackend, artifact) {
7881
8019
  const committedNodes = await applyNodeRows(
8020
+ target,
8021
+ txBackend,
7882
8022
  nodesApi,
7883
8023
  artifact.writes.nodeDeletes,
7884
8024
  artifact.writes.nodeUpserts.map((upsert) => ({
@@ -7911,7 +8051,7 @@ async function applyWireMergeWrites(target, nodesApi, edgesApi, txBackend, artif
7911
8051
  txBackend,
7912
8052
  identityAssertions,
7913
8053
  identityRetractions,
7914
- () => chunkMFZR4QKM_cjs.storeRuntime(target).assertIdentityClassesConsistentAtTarget(
8054
+ () => chunk3KOY4FH3_cjs.storeRuntime(target).assertIdentityClassesConsistentAtTarget(
7915
8055
  txBackend,
7916
8056
  identityConsistencySeeds(
7917
8057
  artifact,
@@ -7919,8 +8059,8 @@ async function applyWireMergeWrites(target, nodesApi, edgesApi, txBackend, artif
7919
8059
  )
7920
8060
  )
7921
8061
  );
7922
- if (!chunkOIFSOPSR_cjs.forceRecordedGraphRevision(txBackend, target.graphId) && !chunkMX4DHSQP_cjs.forceWriteTransactionRevision(txBackend)) {
7923
- await chunkOIFSOPSR_cjs.advanceRevisionClock(
8062
+ if (!chunkEZEEWCFJ_cjs.forceRecordedGraphRevision(txBackend, target.graphId) && !chunkJFRT7S3B_cjs.forceWriteTransactionRevision(txBackend)) {
8063
+ await chunkEZEEWCFJ_cjs.advanceRevisionClock(
7924
8064
  txBackend,
7925
8065
  target.revisionSchema,
7926
8066
  target.graphId,
@@ -7991,7 +8131,7 @@ async function applyMergePlan(target, input) {
7991
8131
  }
7992
8132
  const merged = await withTxConflictRetry(
7993
8133
  () => target.transaction(async (tx) => {
7994
- const txBackend = chunkMFZR4QKM_cjs.transactionBackend(tx);
8134
+ const txBackend = chunk3KOY4FH3_cjs.transactionBackend(tx);
7995
8135
  await assertMergePlanFenceInsideTransaction(
7996
8136
  target,
7997
8137
  txBackend,
@@ -8051,7 +8191,8 @@ async function applyMergePlan(target, input) {
8051
8191
  );
8052
8192
  }
8053
8193
  }
8054
- async function merge(store, branches, optionsInput = {}) {
8194
+ async function merge(store, branchInputs, optionsInput = {}) {
8195
+ const branches = unwrapMergeBranches(branchInputs);
8055
8196
  const normalized = tryNormalize(optionsInput);
8056
8197
  if (chunkGYEG3ZLZ_cjs.isErr(normalized)) {
8057
8198
  return chunkGYEG3ZLZ_cjs.err(normalized.error);
@@ -8246,7 +8387,7 @@ async function validateIncrementalEdgeWrites(target, edgesApi, plan) {
8246
8387
  }
8247
8388
  }
8248
8389
  }
8249
- const notFound = [...plannedKindById.keys()].filter((id) => !existingById.has(id)).sort((left, right) => chunkOIFSOPSR_cjs.compareStrings(left, right));
8390
+ const notFound = [...plannedKindById.keys()].filter((id) => !existingById.has(id)).sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right));
8250
8391
  if (notFound.length > 0) {
8251
8392
  const crossKindById = /* @__PURE__ */ new Map();
8252
8393
  for (const kind of Object.keys(target.graph.edges)) {
@@ -8483,7 +8624,7 @@ async function assertForkPointUnchanged(precondition) {
8483
8624
  );
8484
8625
  }
8485
8626
  async function commitIncrementalPlan(target, plan, guard) {
8486
- if (!chunkMFZR4QKM_cjs.storeBackend(target).capabilities.transactions) {
8627
+ if (!chunk3KOY4FH3_cjs.storeBackend(target).capabilities.transactions) {
8487
8628
  throw new MergeError(
8488
8629
  "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
8630
  { details: { capability: "transactions" } }
@@ -8493,7 +8634,7 @@ async function commitIncrementalPlan(target, plan, guard) {
8493
8634
  () => withTxConflictRetry(
8494
8635
  () => target.transaction(async (tx) => {
8495
8636
  if (target.revisionTrackingEnabled) {
8496
- await chunkOIFSOPSR_cjs.lockRecordedGraphWrite(chunkMFZR4QKM_cjs.transactionBackend(tx), target.graphId);
8637
+ await chunkEZEEWCFJ_cjs.lockRecordedGraphWrite(chunk3KOY4FH3_cjs.transactionBackend(tx), target.graphId);
8497
8638
  }
8498
8639
  await assertForkPointUnchanged(guard.forkPoint);
8499
8640
  const nodesApi = tx.nodes;
@@ -8504,12 +8645,12 @@ async function commitIncrementalPlan(target, plan, guard) {
8504
8645
  );
8505
8646
  await assertPlannedIdentityIdsFresh(
8506
8647
  target,
8507
- chunkMFZR4QKM_cjs.transactionBackend(tx),
8648
+ chunk3KOY4FH3_cjs.transactionBackend(tx),
8508
8649
  plan
8509
8650
  );
8510
8651
  await assertIdentityPeersStable(
8511
8652
  target,
8512
- chunkMFZR4QKM_cjs.transactionBackend(tx),
8653
+ chunk3KOY4FH3_cjs.transactionBackend(tx),
8513
8654
  guard.identityPeerProbe,
8514
8655
  plan
8515
8656
  );
@@ -8521,14 +8662,15 @@ async function commitIncrementalPlan(target, plan, guard) {
8521
8662
  nodesApi,
8522
8663
  edgesApi,
8523
8664
  target,
8524
- chunkMFZR4QKM_cjs.transactionBackend(tx)
8665
+ chunk3KOY4FH3_cjs.transactionBackend(tx)
8525
8666
  );
8526
8667
  }, mergeCommitTransactionOptions(target))
8527
8668
  )
8528
8669
  );
8529
8670
  }
8530
8671
  async function mergeIncremental(args) {
8531
- const { forkPoint, target, branches } = args;
8672
+ const { forkPoint, target } = args;
8673
+ const branches = unwrapMergeBranches(args.branches);
8532
8674
  const normalized = tryNormalize(args.options ?? {}, ["target"]);
8533
8675
  if (chunkGYEG3ZLZ_cjs.isErr(normalized)) {
8534
8676
  return chunkGYEG3ZLZ_cjs.err(normalized.error);
@@ -8614,6 +8756,7 @@ exports.asBranchId = asBranchId;
8614
8756
  exports.branch = branch;
8615
8757
  exports.cloneWorkingCopyStrategy = cloneWorkingCopyStrategy;
8616
8758
  exports.computeBaseVersion = computeBaseVersion;
8759
+ exports.ingestionBranch = ingestionBranch;
8617
8760
  exports.merge = merge;
8618
8761
  exports.mergeIncremental = mergeIncremental;
8619
8762
  exports.normalizeMergeOptions = normalizeMergeOptions;