@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.
- package/dist/backend/drizzle/indexes.d.cts +1 -1
- package/dist/backend/drizzle/indexes.d.ts +1 -1
- package/dist/backend/index.cjs +27 -19
- package/dist/backend/index.d.cts +37 -55
- package/dist/backend/index.d.ts +37 -55
- package/dist/backend/index.js +4 -4
- package/dist/backend/postgres/index.cjs +7 -7
- package/dist/backend/postgres/index.d.cts +21 -7
- package/dist/backend/postgres/index.d.ts +21 -7
- package/dist/backend/postgres/index.js +6 -6
- package/dist/backend/postgres/pglite-store.cjs +17 -17
- package/dist/backend/postgres/pglite-store.d.cts +8 -8
- package/dist/backend/postgres/pglite-store.d.ts +8 -8
- package/dist/backend/postgres/pglite-store.js +14 -14
- package/dist/backend/postgres/pglite.cjs +8 -8
- package/dist/backend/postgres/pglite.d.cts +3 -3
- package/dist/backend/postgres/pglite.d.ts +3 -3
- package/dist/backend/postgres/pglite.js +7 -7
- package/dist/backend/sqlite/index.cjs +7 -7
- package/dist/backend/sqlite/index.d.cts +20 -7
- package/dist/backend/sqlite/index.d.ts +20 -7
- package/dist/backend/sqlite/index.js +6 -6
- package/dist/backend/sqlite/libsql.cjs +8 -8
- package/dist/backend/sqlite/libsql.d.cts +3 -3
- package/dist/backend/sqlite/libsql.d.ts +3 -3
- package/dist/backend/sqlite/libsql.js +6 -6
- package/dist/backend/sqlite/local-store.cjs +18 -18
- package/dist/backend/sqlite/local-store.d.cts +8 -8
- package/dist/backend/sqlite/local-store.d.ts +8 -8
- package/dist/backend/sqlite/local-store.js +15 -15
- package/dist/backend/sqlite/local.cjs +9 -9
- package/dist/backend/sqlite/local.d.cts +3 -3
- package/dist/backend/sqlite/local.d.ts +3 -3
- package/dist/backend/sqlite/local.js +7 -7
- package/dist/{chunk-5FBRVORR.cjs → chunk-2O4PCIZ6.cjs} +8 -7
- package/dist/chunk-2O4PCIZ6.cjs.map +1 -0
- package/dist/{chunk-6KFLYYOC.cjs → chunk-2QGYQBS2.cjs} +5 -5
- package/dist/{chunk-6KFLYYOC.cjs.map → chunk-2QGYQBS2.cjs.map} +1 -1
- package/dist/{chunk-XYBQI6LE.js → chunk-2TYSSBU5.js} +6 -6
- package/dist/{chunk-XYBQI6LE.js.map → chunk-2TYSSBU5.js.map} +1 -1
- package/dist/{chunk-6JVZSOHQ.cjs → chunk-3FPR224C.cjs} +26 -26
- package/dist/{chunk-6JVZSOHQ.cjs.map → chunk-3FPR224C.cjs.map} +1 -1
- package/dist/{chunk-U5EDAVOJ.cjs → chunk-3G5W2U2L.cjs} +82 -51
- package/dist/chunk-3G5W2U2L.cjs.map +1 -0
- package/dist/{chunk-MFZR4QKM.cjs → chunk-3KOY4FH3.cjs} +181 -4
- package/dist/chunk-3KOY4FH3.cjs.map +1 -0
- package/dist/{chunk-UPAJHMW3.cjs → chunk-3QNZ5SAJ.cjs} +55 -58
- package/dist/chunk-3QNZ5SAJ.cjs.map +1 -0
- package/dist/{chunk-NG2RB5WL.js → chunk-5K2BKEBD.js} +18 -3
- package/dist/chunk-5K2BKEBD.js.map +1 -0
- package/dist/chunk-5PRKMB24.cjs +124 -0
- package/dist/chunk-5PRKMB24.cjs.map +1 -0
- package/dist/chunk-6LN7FIVU.js +107 -0
- package/dist/chunk-6LN7FIVU.js.map +1 -0
- package/dist/{chunk-M35DF33T.js → chunk-7LZJNLA5.js} +29 -16
- package/dist/chunk-7LZJNLA5.js.map +1 -0
- package/dist/{chunk-I4G3SQPF.cjs → chunk-7UOLHNWC.cjs} +7 -7
- package/dist/chunk-7UOLHNWC.cjs.map +1 -0
- package/dist/{chunk-DJZTXBWY.js → chunk-BRRP76WO.js} +71 -30
- package/dist/chunk-BRRP76WO.js.map +1 -0
- package/dist/{chunk-5FT3TLPK.js → chunk-D4QLTJSM.js} +16 -13
- package/dist/chunk-D4QLTJSM.js.map +1 -0
- package/dist/{chunk-XY5OMOJD.js → chunk-DZAICA5J.js} +3 -3
- package/dist/{chunk-XY5OMOJD.js.map → chunk-DZAICA5J.js.map} +1 -1
- package/dist/{chunk-OIFSOPSR.cjs → chunk-EZEEWCFJ.cjs} +38 -156
- package/dist/chunk-EZEEWCFJ.cjs.map +1 -0
- package/dist/{chunk-AMMWA76F.cjs → chunk-FA2AFWLP.cjs} +6 -6
- package/dist/{chunk-AMMWA76F.cjs.map → chunk-FA2AFWLP.cjs.map} +1 -1
- package/dist/{chunk-FNOMT74T.js → chunk-I4GAZH5Z.js} +180 -5
- package/dist/chunk-I4GAZH5Z.js.map +1 -0
- package/dist/{chunk-WGX7JH7E.cjs → chunk-JB6T4GLL.cjs} +106 -134
- package/dist/chunk-JB6T4GLL.cjs.map +1 -0
- package/dist/{chunk-MX4DHSQP.cjs → chunk-JFRT7S3B.cjs} +92 -98
- package/dist/chunk-JFRT7S3B.cjs.map +1 -0
- package/dist/{chunk-5UMTUOM5.js → chunk-JPD2CTC3.js} +5 -4
- package/dist/chunk-JPD2CTC3.js.map +1 -0
- package/dist/{chunk-SE6EGQSD.js → chunk-KF6K7TGH.js} +38 -66
- package/dist/chunk-KF6K7TGH.js.map +1 -0
- package/dist/{chunk-QS3NQZVC.js → chunk-LTXQOEIC.js} +44 -14
- package/dist/chunk-LTXQOEIC.js.map +1 -0
- package/dist/{chunk-ZHNXLS3C.js → chunk-NACVVDWB.js} +208 -8
- package/dist/chunk-NACVVDWB.js.map +1 -0
- package/dist/{chunk-AVGUJWVX.js → chunk-S5TERQVW.js} +15 -132
- package/dist/chunk-S5TERQVW.js.map +1 -0
- package/dist/chunk-SIT26LAZ.cjs +614 -0
- package/dist/chunk-SIT26LAZ.cjs.map +1 -0
- package/dist/{chunk-BR7SHKGM.cjs → chunk-SR725PWF.cjs} +548 -507
- package/dist/chunk-SR725PWF.cjs.map +1 -0
- package/dist/{chunk-425IZOQ5.cjs → chunk-TQHGE7UC.cjs} +20 -2
- package/dist/chunk-TQHGE7UC.cjs.map +1 -0
- package/dist/{chunk-GYUJZARH.cjs → chunk-TUNPBZY3.cjs} +4 -4
- package/dist/{chunk-GYUJZARH.cjs.map → chunk-TUNPBZY3.cjs.map} +1 -1
- package/dist/chunk-UGHG7PGX.js +592 -0
- package/dist/chunk-UGHG7PGX.js.map +1 -0
- package/dist/{chunk-BCQ76AXA.cjs → chunk-UGHQV7MP.cjs} +107 -94
- package/dist/chunk-UGHQV7MP.cjs.map +1 -0
- package/dist/{chunk-KABFHAL7.cjs → chunk-UMGZDVOA.cjs} +213 -12
- package/dist/chunk-UMGZDVOA.cjs.map +1 -0
- package/dist/{chunk-6FWSNSRE.js → chunk-WIC7DRXW.js} +4 -4
- package/dist/chunk-WIC7DRXW.js.map +1 -0
- package/dist/{chunk-LEWHMOUY.js → chunk-YIURNGXI.js} +4 -4
- package/dist/{chunk-LEWHMOUY.js.map → chunk-YIURNGXI.js.map} +1 -1
- package/dist/{chunk-EP4RUYD6.js → chunk-YVF2EM7B.js} +3 -3
- package/dist/{chunk-EP4RUYD6.js.map → chunk-YVF2EM7B.js.map} +1 -1
- package/dist/{chunk-EMIB2RXD.cjs → chunk-YYUHLYM2.cjs} +99 -96
- package/dist/chunk-YYUHLYM2.cjs.map +1 -0
- package/dist/{chunk-KH7XW7VV.js → chunk-Z2JCLZFJ.js} +25 -28
- package/dist/chunk-Z2JCLZFJ.js.map +1 -0
- package/dist/{chunk-NNQ6A3RM.js → chunk-ZFMCDJGB.js} +7 -12
- package/dist/chunk-ZFMCDJGB.js.map +1 -0
- package/dist/core/index.cjs +6 -6
- package/dist/core/index.d.cts +4 -4
- package/dist/core/index.d.ts +4 -4
- package/dist/core/index.js +2 -2
- package/dist/ddl-BL1NZLMY.d.cts +78 -0
- package/dist/ddl-D_oW-EVO.d.ts +78 -0
- package/dist/graph-extension/index.d.cts +4 -4
- package/dist/graph-extension/index.d.ts +4 -4
- package/dist/graph-merge/index.cjs +357 -191
- package/dist/graph-merge/index.cjs.map +1 -1
- package/dist/graph-merge/index.d.cts +68 -15
- package/dist/graph-merge/index.d.ts +68 -15
- package/dist/graph-merge/index.js +197 -32
- package/dist/graph-merge/index.js.map +1 -1
- package/dist/{index-CHTv4XMZ.d.cts → index-COs_z6nV.d.cts} +2 -2
- package/dist/{index-CzoJ3MUw.d.ts → index-D7d1u2gr.d.ts} +2 -2
- package/dist/index.cjs +90 -86
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -12
- package/dist/index.d.ts +12 -12
- package/dist/index.js +13 -13
- package/dist/index.js.map +1 -1
- package/dist/indexes/index.d.cts +4 -4
- package/dist/indexes/index.d.ts +4 -4
- package/dist/ingestion-import-target-XPxZYw89.d.cts +17 -0
- package/dist/ingestion-import-target-dNeL7iAv.d.ts +17 -0
- package/dist/interchange/index.cjs +38 -38
- package/dist/interchange/index.d.cts +15 -12
- package/dist/interchange/index.d.ts +15 -12
- package/dist/interchange/index.js +10 -10
- package/dist/{manager-DlY1vlla.d.cts → manager-CYaff3n3.d.cts} +2 -2
- package/dist/{manager-B6sOQzcQ.d.ts → manager-D9eRT_ns.d.ts} +2 -2
- package/dist/{materialize-indexes-DQL4xcpf.d.ts → materialize-indexes-DJ3ykH59.d.ts} +1 -1
- package/dist/{materialize-indexes-sskhp-c_.d.cts → materialize-indexes-DTtAnvfY.d.cts} +1 -1
- package/dist/{postgres-BXy_nyMs.d.cts → postgres-CcL4bAHS.d.ts} +1 -1
- package/dist/{postgres-B6YOUcaK.d.ts → postgres-DMj39MEu.d.cts} +1 -1
- package/dist/profiler/index.d.cts +9 -9
- package/dist/profiler/index.d.ts +9 -9
- package/dist/provenance/index.cjs +25 -26
- package/dist/provenance/index.cjs.map +1 -1
- package/dist/provenance/index.d.cts +7 -7
- package/dist/provenance/index.d.ts +7 -7
- package/dist/provenance/index.js +9 -10
- package/dist/provenance/index.js.map +1 -1
- package/dist/repair-validity-windows-BFNZvd_H.d.cts +166 -0
- package/dist/repair-validity-windows-DlUSqwCg.d.ts +166 -0
- package/dist/schema/index.cjs +35 -35
- package/dist/schema/index.d.cts +6 -6
- package/dist/schema/index.d.ts +6 -6
- package/dist/schema/index.js +8 -8
- package/dist/{searchable-D9gMiwcS.d.ts → searchable-DHJMh_nj.d.cts} +1 -1
- package/dist/{searchable-0Cn_lY8U.d.cts → searchable-bpE1bBfc.d.ts} +1 -1
- package/dist/{sqlite-DioSxaPe.d.cts → sqlite-D7Oz0SQh.d.ts} +1 -1
- package/dist/{sqlite-ClXuBYAj.d.ts → sqlite-YppHrNFb.d.cts} +1 -1
- package/dist/{store-5j-w5onJ.d.ts → store-DRrFCx5x.d.ts} +122 -27
- package/dist/{store-CFedKGU5.d.cts → store-bphCSo7z.d.cts} +122 -27
- package/dist/{temporal-CjO9FH1l.d.ts → temporal-5GqpYCk2.d.cts} +1 -1
- package/dist/{temporal-Ce1pG0S1.d.cts → temporal-CbnLzTmM.d.ts} +1 -1
- package/dist/{types-DKkMJZjR.d.cts → types-BqFZTQmV.d.cts} +29 -4
- package/dist/{types-DKkMJZjR.d.ts → types-BqFZTQmV.d.ts} +29 -4
- package/dist/{types-BrdOFu48.d.ts → types-Bx74kaTt.d.ts} +1 -1
- package/dist/{types-oj_OGAaZ.d.cts → types-CXAhpW-c.d.cts} +1 -1
- package/dist/{where-D1wKCJ4Q.d.cts → where-DI_Fqz-X.d.cts} +1 -1
- package/dist/{where-C8w2627G.d.ts → where-O-k2wgYm.d.ts} +1 -1
- package/package.json +2 -3
- package/dist/chunk-3HGRTCDU.cjs +0 -269
- package/dist/chunk-3HGRTCDU.cjs.map +0 -1
- package/dist/chunk-425IZOQ5.cjs.map +0 -1
- package/dist/chunk-5FBRVORR.cjs.map +0 -1
- package/dist/chunk-5FT3TLPK.js.map +0 -1
- package/dist/chunk-5UMTUOM5.js.map +0 -1
- package/dist/chunk-6FWSNSRE.js.map +0 -1
- package/dist/chunk-AVGUJWVX.js.map +0 -1
- package/dist/chunk-BCQ76AXA.cjs.map +0 -1
- package/dist/chunk-BR7SHKGM.cjs.map +0 -1
- package/dist/chunk-DJZTXBWY.js.map +0 -1
- package/dist/chunk-EMIB2RXD.cjs.map +0 -1
- package/dist/chunk-FNOMT74T.js.map +0 -1
- package/dist/chunk-I4G3SQPF.cjs.map +0 -1
- package/dist/chunk-JR6SX5RH.cjs +0 -268
- package/dist/chunk-JR6SX5RH.cjs.map +0 -1
- package/dist/chunk-KABFHAL7.cjs.map +0 -1
- package/dist/chunk-KH7XW7VV.js.map +0 -1
- package/dist/chunk-M35DF33T.js.map +0 -1
- package/dist/chunk-MFZR4QKM.cjs.map +0 -1
- package/dist/chunk-MX4DHSQP.cjs.map +0 -1
- package/dist/chunk-NAZ2RA4L.js +0 -254
- package/dist/chunk-NAZ2RA4L.js.map +0 -1
- package/dist/chunk-NG2RB5WL.js.map +0 -1
- package/dist/chunk-NNQ6A3RM.js.map +0 -1
- package/dist/chunk-OIFSOPSR.cjs.map +0 -1
- package/dist/chunk-QS3NQZVC.js.map +0 -1
- package/dist/chunk-SE6EGQSD.js.map +0 -1
- package/dist/chunk-SHSSRCFR.js +0 -246
- package/dist/chunk-SHSSRCFR.js.map +0 -1
- package/dist/chunk-U5EDAVOJ.cjs.map +0 -1
- package/dist/chunk-UPAJHMW3.cjs.map +0 -1
- package/dist/chunk-WGX7JH7E.cjs.map +0 -1
- package/dist/chunk-ZHNXLS3C.js.map +0 -1
- package/dist/ddl-CprnMXJ-.d.ts +0 -38
- package/dist/ddl-DJA7Lci5.d.cts +0 -38
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
5
|
-
var
|
|
6
|
-
require('../chunk-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
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
|
|
11
|
-
var
|
|
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-
|
|
13
|
+
var chunkSIT26LAZ_cjs = require('../chunk-SIT26LAZ.cjs');
|
|
14
14
|
var chunk3U5ABFDW_cjs = require('../chunk-3U5ABFDW.cjs');
|
|
15
|
-
|
|
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-
|
|
19
|
-
var
|
|
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
|
|
719
|
+
return chunkEZEEWCFJ_cjs.encodeTupleKey(endpointTuple(assertion));
|
|
720
720
|
}
|
|
721
721
|
function identitySemanticKey(assertion) {
|
|
722
|
-
return
|
|
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
|
|
731
|
+
return chunkEZEEWCFJ_cjs.encodeTupleKey([semantic, assertion.validFrom, assertion.validTo]);
|
|
732
732
|
}
|
|
733
733
|
function compareIdentitySurvivors(left, right) {
|
|
734
|
-
const byValidity =
|
|
735
|
-
return byValidity === 0 ?
|
|
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) =>
|
|
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 (!
|
|
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) =>
|
|
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] =
|
|
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) =>
|
|
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 ||
|
|
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 &&
|
|
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,
|
|
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
|
|
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(
|
|
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
|
|
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) =>
|
|
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
|
|
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
|
|
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
|
|
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) =>
|
|
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:
|
|
1389
|
-
validTo:
|
|
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 :
|
|
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
|
|
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
|
-
|
|
1620
|
-
|
|
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
|
-
|
|
1635
|
+
chunk3KOY4FH3_cjs.storeBackend(baseStore),
|
|
1636
1636
|
baseStore.graphId,
|
|
1637
1637
|
kind
|
|
1638
1638
|
);
|
|
1639
1639
|
const forkRows = await enumerateAllNodes(
|
|
1640
|
-
|
|
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
|
-
|
|
1670
|
+
chunk3KOY4FH3_cjs.storeBackend(baseStore),
|
|
1671
1671
|
baseStore.graphId,
|
|
1672
1672
|
kind
|
|
1673
1673
|
);
|
|
1674
1674
|
const forkRows = await enumerateAllEdges(
|
|
1675
|
-
|
|
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) =>
|
|
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) =>
|
|
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
|
-
|
|
1772
|
+
chunk3KOY4FH3_cjs.storeBackend(store),
|
|
1773
1773
|
store.graphId
|
|
1774
1774
|
);
|
|
1775
|
-
return
|
|
1775
|
+
return chunk3FPR224C_cjs.computeSchemaHash(chunk3FPR224C_cjs.serializeSchema(store.graph, version));
|
|
1776
1776
|
}
|
|
1777
1777
|
function byDigestEntry(left, right) {
|
|
1778
|
-
const byKind =
|
|
1779
|
-
return byKind === 0 ?
|
|
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(
|
|
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
|
|
1849
|
+
const identityAssertions = await chunk3KOY4FH3_cjs.storeRuntime(store).readCurrentIdentityAssertions("state");
|
|
1850
1850
|
return computeContentComponent(
|
|
1851
|
-
|
|
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
|
|
1894
|
-
baseStore
|
|
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 =
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
) === void 0 ? await
|
|
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
|
-
|
|
1931
|
+
chunk3G5W2U2L_cjs.exportGraphStream(baseStore, exportOptions),
|
|
1920
1932
|
importOptions
|
|
1921
|
-
) : await
|
|
1933
|
+
) : await chunk3G5W2U2L_cjs.importGraph(
|
|
1922
1934
|
freshStore,
|
|
1923
|
-
await
|
|
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(
|
|
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
|
|
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
|
|
2002
|
+
async function captureBranchSchemaAnchor(store) {
|
|
1967
2003
|
try {
|
|
1968
|
-
const schemaRow = await
|
|
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
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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 =
|
|
2135
|
-
return byBranch === 0 ?
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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(
|
|
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
|
|
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 &&
|
|
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 =
|
|
3454
|
+
const byId2 = chunkEZEEWCFJ_cjs.compareStrings(
|
|
3349
3455
|
modifiedEntity(left).id,
|
|
3350
3456
|
modifiedEntity(right).id
|
|
3351
3457
|
);
|
|
3352
|
-
return byId2 === 0 ?
|
|
3458
|
+
return byId2 === 0 ? chunkEZEEWCFJ_cjs.compareStrings(left.branchId, right.branchId) : byId2;
|
|
3353
3459
|
}),
|
|
3354
3460
|
deletions: [...deletions].sort(
|
|
3355
|
-
(left, right) =>
|
|
3461
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)
|
|
3356
3462
|
),
|
|
3357
3463
|
conflicts: [...conflicts].sort(
|
|
3358
|
-
(left, right) =>
|
|
3464
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.entityId, right.entityId)
|
|
3359
3465
|
),
|
|
3360
3466
|
dropped: [...dropped].sort(
|
|
3361
|
-
(left, right) =>
|
|
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 =
|
|
3406
|
-
return byId2 === 0 ?
|
|
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) =>
|
|
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(
|
|
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 ||
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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 ||
|
|
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) =>
|
|
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 =
|
|
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
|
|
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 =
|
|
3812
|
-
return byId2 === 0 ?
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
4097
|
+
dropped: dropped.sort((left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.id, right.id)),
|
|
3992
4098
|
conflicts: conflicts.sort(
|
|
3993
|
-
(left, right) =>
|
|
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 ? [
|
|
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
|
|
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
|
|
4846
|
-
|
|
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
|
|
4852
|
-
|
|
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)) ?
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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 ?
|
|
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(
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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 =
|
|
5508
|
-
return byId2 === 0 ?
|
|
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 =
|
|
5617
|
+
const byKind = chunkEZEEWCFJ_cjs.compareStrings(left.kind, right.kind);
|
|
5512
5618
|
if (byKind !== 0) {
|
|
5513
5619
|
return byKind;
|
|
5514
5620
|
}
|
|
5515
|
-
const byId2 =
|
|
5516
|
-
return byId2 === 0 ?
|
|
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) =>
|
|
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
|
|
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 =
|
|
5624
|
-
return byId2 === 0 ?
|
|
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 =
|
|
5629
|
-
return byId2 === 0 ?
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
5848
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left.entityId, right.entityId)
|
|
5743
5849
|
),
|
|
5744
5850
|
retypeMap,
|
|
5745
|
-
dropped: dropped.sort((left, right) =>
|
|
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 =
|
|
5764
|
-
return byId2 === 0 ?
|
|
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) =>
|
|
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) =>
|
|
6179
|
+
(left, right) => chunkEZEEWCFJ_cjs.compareStrings(left, right)
|
|
6074
6180
|
),
|
|
6075
|
-
edgeIds: [...sets.edgeIds].sort((left, right) =>
|
|
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) =>
|
|
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 ?
|
|
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
|
-
|
|
6664
|
-
|
|
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
|
-
|
|
6669
|
-
|
|
6670
|
-
|
|
6671
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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(
|
|
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 (!
|
|
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
|
-
|
|
6958
|
+
chunk3KOY4FH3_cjs.transactionBackend(tx),
|
|
6800
6959
|
target,
|
|
6801
6960
|
expectedBaseVersion
|
|
6802
6961
|
);
|
|
6803
6962
|
}
|
|
6804
6963
|
await assertPlannedIdentityIdsFresh(
|
|
6805
6964
|
target,
|
|
6806
|
-
|
|
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
|
-
|
|
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
|
|
6994
|
+
await chunkEZEEWCFJ_cjs.lockRecordedGraphWrite(txBackend, target.graphId);
|
|
6836
6995
|
const expectedOrigin = revisionOriginOf(expectedBaseVersion);
|
|
6837
|
-
const liveOrigin = await
|
|
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
|
|
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
|
|
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 (!
|
|
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
|
-
|
|
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(
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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) =>
|
|
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
|
|
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
|
|
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) =>
|
|
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
|
|
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
|
|
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
|
|
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
|
-
() =>
|
|
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 (!
|
|
7923
|
-
await
|
|
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 =
|
|
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,
|
|
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) =>
|
|
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 (!
|
|
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
|
|
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
|
-
|
|
8671
|
+
chunk3KOY4FH3_cjs.transactionBackend(tx),
|
|
8508
8672
|
plan
|
|
8509
8673
|
);
|
|
8510
8674
|
await assertIdentityPeersStable(
|
|
8511
8675
|
target,
|
|
8512
|
-
|
|
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
|
-
|
|
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
|
|
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;
|