@ibgib/core-gib 0.1.20 → 0.1.21

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 (73) hide show
  1. package/dist/sync/graft-info/graft-info-constants.d.mts +5 -0
  2. package/dist/sync/graft-info/graft-info-constants.d.mts.map +1 -0
  3. package/dist/sync/graft-info/graft-info-constants.mjs +5 -0
  4. package/dist/sync/graft-info/graft-info-constants.mjs.map +1 -0
  5. package/dist/sync/graft-info/graft-info-helpers.d.mts +49 -0
  6. package/dist/sync/graft-info/graft-info-helpers.d.mts.map +1 -0
  7. package/dist/sync/graft-info/graft-info-helpers.mjs +236 -0
  8. package/dist/sync/graft-info/graft-info-helpers.mjs.map +1 -0
  9. package/dist/sync/graft-info/graft-info-helpers.respec.d.mts +2 -0
  10. package/dist/sync/graft-info/graft-info-helpers.respec.d.mts.map +1 -0
  11. package/dist/sync/graft-info/graft-info-helpers.respec.mjs +70 -0
  12. package/dist/sync/graft-info/graft-info-helpers.respec.mjs.map +1 -0
  13. package/dist/sync/graft-info/graft-info-types.d.mts +31 -0
  14. package/dist/sync/{merge-info/merge-info-types.d.mts.map → graft-info/graft-info-types.d.mts.map} +1 -1
  15. package/dist/sync/graft-info/graft-info-types.mjs +2 -0
  16. package/dist/sync/graft-info/graft-info-types.mjs.map +1 -0
  17. package/dist/sync/strategies/conflict-optimistic.d.mts +1 -1
  18. package/dist/sync/strategies/conflict-optimistic.d.mts.map +1 -1
  19. package/dist/sync/strategies/conflict-optimistic.mjs +10 -60
  20. package/dist/sync/strategies/conflict-optimistic.mjs.map +1 -1
  21. package/dist/sync/sync-conflict.respec.mjs +152 -33
  22. package/dist/sync/sync-conflict.respec.mjs.map +1 -1
  23. package/dist/sync/sync-constants.d.mts +1 -3
  24. package/dist/sync/sync-constants.d.mts.map +1 -1
  25. package/dist/sync/sync-constants.mjs +0 -2
  26. package/dist/sync/sync-constants.mjs.map +1 -1
  27. package/dist/sync/sync-peer/sync-peer-innerspace-v1.d.mts +5 -2
  28. package/dist/sync/sync-peer/sync-peer-innerspace-v1.d.mts.map +1 -1
  29. package/dist/sync/sync-peer/sync-peer-innerspace-v1.mjs +70 -7
  30. package/dist/sync/sync-peer/sync-peer-innerspace-v1.mjs.map +1 -1
  31. package/dist/sync/sync-saga-coordinator.d.mts +25 -18
  32. package/dist/sync/sync-saga-coordinator.d.mts.map +1 -1
  33. package/dist/sync/sync-saga-coordinator.mjs +508 -316
  34. package/dist/sync/sync-saga-coordinator.mjs.map +1 -1
  35. package/dist/sync/sync-saga-message/sync-saga-message-helpers.d.mts.map +1 -1
  36. package/dist/sync/sync-saga-message/sync-saga-message-helpers.mjs +1 -0
  37. package/dist/sync/sync-saga-message/sync-saga-message-helpers.mjs.map +1 -1
  38. package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts +1 -12
  39. package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts.map +1 -1
  40. package/ibgib-foundations.md +20 -2
  41. package/package.json +1 -1
  42. package/src/sync/graft-info/graft-info-constants.mts +4 -0
  43. package/src/sync/graft-info/graft-info-helpers.mts +308 -0
  44. package/src/sync/graft-info/graft-info-helpers.respec.mts +83 -0
  45. package/src/sync/graft-info/graft-info-types.mts +33 -0
  46. package/src/sync/strategies/conflict-optimistic.mts +11 -70
  47. package/src/sync/sync-conflict.respec.mts +171 -35
  48. package/src/sync/sync-constants.mts +1 -4
  49. package/src/sync/sync-peer/sync-peer-innerspace-v1.mts +85 -12
  50. package/src/sync/sync-saga-coordinator.mts +569 -338
  51. package/src/sync/sync-saga-message/sync-saga-message-helpers.mts +2 -0
  52. package/src/sync/sync-saga-message/sync-saga-message-types.mts +0 -11
  53. package/test_output.log +0 -0
  54. package/tmp.md +43 -2
  55. package/dist/sync/merge-info/merge-info-constants.d.mts +0 -2
  56. package/dist/sync/merge-info/merge-info-constants.d.mts.map +0 -1
  57. package/dist/sync/merge-info/merge-info-constants.mjs +0 -2
  58. package/dist/sync/merge-info/merge-info-constants.mjs.map +0 -1
  59. package/dist/sync/merge-info/merge-info-helpers.d.mts +0 -51
  60. package/dist/sync/merge-info/merge-info-helpers.d.mts.map +0 -1
  61. package/dist/sync/merge-info/merge-info-helpers.mjs +0 -92
  62. package/dist/sync/merge-info/merge-info-helpers.mjs.map +0 -1
  63. package/dist/sync/merge-info/merge-info-helpers.respec.d.mts +0 -2
  64. package/dist/sync/merge-info/merge-info-helpers.respec.d.mts.map +0 -1
  65. package/dist/sync/merge-info/merge-info-helpers.respec.mjs +0 -32
  66. package/dist/sync/merge-info/merge-info-helpers.respec.mjs.map +0 -1
  67. package/dist/sync/merge-info/merge-info-types.d.mts +0 -26
  68. package/dist/sync/merge-info/merge-info-types.mjs +0 -2
  69. package/dist/sync/merge-info/merge-info-types.mjs.map +0 -1
  70. package/src/sync/merge-info/merge-info-constants.mts +0 -1
  71. package/src/sync/merge-info/merge-info-helpers.mts +0 -134
  72. package/src/sync/merge-info/merge-info-helpers.respec.mts +0 -41
  73. package/src/sync/merge-info/merge-info-types.mts +0 -28
@@ -0,0 +1,5 @@
1
+ export declare const GRAFT_INFO_ATOM = "graft_info";
2
+ export declare const GRAFT_INFO_REL8N_NAME = "graftinfo";
3
+ export declare const GRAFT_BASE_REL8N_NAME = "graftbase";
4
+ export declare const GRAFT_ORPHAN_REL8N_NAME = "graftorphan";
5
+ //# sourceMappingURL=graft-info-constants.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graft-info-constants.d.mts","sourceRoot":"","sources":["../../../src/sync/graft-info/graft-info-constants.mts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,qBAAqB,cAAc,CAAC;AACjD,eAAO,MAAM,qBAAqB,cAAc,CAAC;AACjD,eAAO,MAAM,uBAAuB,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const GRAFT_INFO_ATOM = 'graft_info';
2
+ export const GRAFT_INFO_REL8N_NAME = 'graftinfo';
3
+ export const GRAFT_BASE_REL8N_NAME = 'graftbase';
4
+ export const GRAFT_ORPHAN_REL8N_NAME = 'graftorphan';
5
+ //# sourceMappingURL=graft-info-constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graft-info-constants.mjs","sourceRoot":"","sources":["../../../src/sync/graft-info/graft-info-constants.mts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC;AACjD,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { IbGib_V1 } from "@ibgib/ts-gib/dist/V1/types.mjs";
2
+ import { IbGibSpaceAny } from "../../witness/space/space-base-v1.mjs";
3
+ import { GraftInfoData_V1, GraftInfoIbGib_V1, GraftInfoIb_V1 } from "./graft-info-types.mjs";
4
+ /**
5
+ * Validates and constructs the `ib` object for a Graft Info ibGib.
6
+ */
7
+ export declare function getGraftInfoIb({ data }: {
8
+ data: GraftInfoData_V1;
9
+ }): Promise<string>;
10
+ /**
11
+ * Parses a standard Graft Info 'ib' string.
12
+ */
13
+ export declare function parseGraftInfoIb({ ib }: {
14
+ ib: string;
15
+ }): Promise<GraftInfoIb_V1>;
16
+ /**
17
+ * Creates a new GraftInfo ibGib.
18
+ */
19
+ export declare function createGraftInfo({ algo, details, }: {
20
+ algo: string;
21
+ details?: string;
22
+ }): Promise<GraftInfoIbGib_V1>;
23
+ /**
24
+ * Naive line-by-line text merge using LCS.
25
+ * Renamed to mergeTextLCS for clarity, but logic is generic LCS.
26
+ */
27
+ export declare function mergeTextLCS({ textA, textB, }: {
28
+ textA: string;
29
+ textB: string;
30
+ }): Promise<string>;
31
+ /**
32
+ * Grafts two divergent timelines by splicing missing DNA from one branch (Orphan) onto another (Base).
33
+ *
34
+ * Logic:
35
+ * 1. Checks timestamps of tips. Earlier = Base, Later = Orphan.
36
+ * 2. Fetches DNA from Orphan's branch (since LCA).
37
+ * 3. Replays Orphan's DNA onto Base.
38
+ * 4. Creates GraftInfo linking Base and Orphan.
39
+ * 5. Rel8s the Result to GraftInfo.
40
+ */
41
+ export declare function graftTimelines({ tipA, branchA, tipB, branchB, space, metaspace, }: {
42
+ tipA: IbGib_V1;
43
+ branchA: IbGib_V1[];
44
+ tipB: IbGib_V1;
45
+ branchB: IbGib_V1[];
46
+ space: IbGibSpaceAny;
47
+ metaspace: any;
48
+ }): Promise<IbGib_V1>;
49
+ //# sourceMappingURL=graft-info-helpers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graft-info-helpers.d.mts","sourceRoot":"","sources":["../../../src/sync/graft-info/graft-info-helpers.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAK3D,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAStE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7F;;GAEG;AACH,wBAAsB,cAAc,CAAC,EACjC,IAAI,EACP,EAAE;IACC,IAAI,EAAE,gBAAgB,CAAA;CACzB,GAAG,OAAO,CAAC,MAAM,CAAC,CAKlB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EACnC,EAAE,EACL,EAAE;IACC,EAAE,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,cAAc,CAAC,CAgB1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,EAClC,IAAI,EACJ,OAAO,GACV,EAAE;IACC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiB7B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,EAC/B,KAAK,EACL,KAAK,GACR,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyClB;AAyCD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,OAAO,EACP,KAAK,EACL,SAAS,GACZ,EAAE;IACC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;CAClB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAyGpB"}
@@ -0,0 +1,236 @@
1
+ import { Factory_V1 } from "@ibgib/ts-gib/dist/V1/factory.mjs";
2
+ import { getIbGibAddr } from "@ibgib/ts-gib/dist/helper.mjs";
3
+ import { extractErrorMsg } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs";
4
+ import { rel8 } from "@ibgib/ts-gib/dist/V1/transforms/rel8.mjs";
5
+ import { getFromSpace, putInSpace } from "../../witness/space/space-helper.mjs";
6
+ import { applyTransforms } from "../../witness/space/reconciliation-space/reconciliation-space-helper.mjs";
7
+ import { GRAFT_INFO_ATOM, GRAFT_BASE_REL8N_NAME, GRAFT_ORPHAN_REL8N_NAME, GRAFT_INFO_REL8N_NAME } from "./graft-info-constants.mjs";
8
+ const lc = `[graft-info-helpers]`;
9
+ /**
10
+ * Validates and constructs the `ib` object for a Graft Info ibGib.
11
+ */
12
+ export async function getGraftInfoIb({ data }) {
13
+ if (!data.algo) {
14
+ throw new Error(`(UNEXPECTED) data.algo required for GraftInfoIb (E: 8a9b0c1d2e3f4g5h)`);
15
+ }
16
+ // graft_info algo
17
+ return [GRAFT_INFO_ATOM, data.algo].join(' ');
18
+ }
19
+ /**
20
+ * Parses a standard Graft Info 'ib' string.
21
+ */
22
+ export async function parseGraftInfoIb({ ib }) {
23
+ try {
24
+ const parts = ib.split(' ');
25
+ if (parts[0] !== GRAFT_INFO_ATOM) {
26
+ throw new Error(`Atom mismatch. Expected ${GRAFT_INFO_ATOM} (E: 8f03c92a95144b618821915632599266)`);
27
+ }
28
+ if (parts.length < 2) {
29
+ throw new Error(`Invalid graft info ib. Expected at least 2 parts. (E: 9c2b4c8a6d34469f8263544710183355)`);
30
+ }
31
+ const algo = parts.slice(1).join(' '); // allow spaces in algo? usually single word but safe to join.
32
+ return {
33
+ atom: GRAFT_INFO_ATOM,
34
+ algo,
35
+ };
36
+ }
37
+ catch (error) {
38
+ console.error(`${lc} ${extractErrorMsg(error)}`);
39
+ throw error;
40
+ }
41
+ }
42
+ /**
43
+ * Creates a new GraftInfo ibGib.
44
+ */
45
+ export async function createGraftInfo({ algo, details, }) {
46
+ const data = {
47
+ algo,
48
+ details,
49
+ };
50
+ const ib = await getGraftInfoIb({ data });
51
+ const res = await Factory_V1.stone({
52
+ ib,
53
+ data,
54
+ rel8ns: {}, // No default rel8ns (no 'ancestors' anymore)
55
+ parentPrimitiveIb: GRAFT_INFO_ATOM,
56
+ uuid: true,
57
+ });
58
+ return res;
59
+ }
60
+ /**
61
+ * Naive line-by-line text merge using LCS.
62
+ * Renamed to mergeTextLCS for clarity, but logic is generic LCS.
63
+ */
64
+ export async function mergeTextLCS({ textA, textB, }) {
65
+ if (textA === textB) {
66
+ return textA;
67
+ }
68
+ const linesA = textA.split('\n');
69
+ const linesB = textB.split('\n');
70
+ const common = longestCommonSubsequence(linesA, linesB); // Array of { line, indexA, indexB }
71
+ let resultLines = [];
72
+ let currentA = 0;
73
+ let currentB = 0;
74
+ for (const match of common) {
75
+ // Add unique lines from A (before this match)
76
+ while (currentA < match.indexA) {
77
+ resultLines.push(linesA[currentA]);
78
+ currentA++;
79
+ }
80
+ // Add unique lines from B (before this match)
81
+ while (currentB < match.indexB) {
82
+ resultLines.push(linesB[currentB]);
83
+ currentB++;
84
+ }
85
+ // Add the common line
86
+ resultLines.push(match.line);
87
+ currentA++;
88
+ currentB++;
89
+ }
90
+ // Add remaining unique lines from A
91
+ while (currentA < linesA.length) {
92
+ resultLines.push(linesA[currentA]);
93
+ currentA++;
94
+ }
95
+ // Add remaining unique lines from B
96
+ while (currentB < linesB.length) {
97
+ resultLines.push(linesB[currentB]);
98
+ currentB++;
99
+ }
100
+ return resultLines.join('\n');
101
+ }
102
+ function longestCommonSubsequence(a, b) {
103
+ const m = a.length;
104
+ const n = b.length;
105
+ const dp = Array(m + 1).fill(0).map(() => Array(n + 1).fill(0));
106
+ // Fill DP table
107
+ for (let i = 1; i <= m; i++) {
108
+ for (let j = 1; j <= n; j++) {
109
+ if (a[i - 1] === b[j - 1]) {
110
+ dp[i][j] = dp[i - 1][j - 1] + 1;
111
+ }
112
+ else {
113
+ dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
114
+ }
115
+ }
116
+ }
117
+ // Backtrack to find LCS
118
+ let i = m, j = n;
119
+ const lcs = [];
120
+ while (i > 0 && j > 0) {
121
+ if (a[i - 1] === b[j - 1]) {
122
+ lcs.unshift({ line: a[i - 1], indexA: i - 1, indexB: j - 1 });
123
+ i--;
124
+ j--;
125
+ }
126
+ else if (dp[i - 1][j] > dp[i][j - 1]) {
127
+ i--;
128
+ }
129
+ else {
130
+ j--;
131
+ }
132
+ }
133
+ return lcs;
134
+ }
135
+ /**
136
+ * Grafts two divergent timelines by splicing missing DNA from one branch (Orphan) onto another (Base).
137
+ *
138
+ * Logic:
139
+ * 1. Checks timestamps of tips. Earlier = Base, Later = Orphan.
140
+ * 2. Fetches DNA from Orphan's branch (since LCA).
141
+ * 3. Replays Orphan's DNA onto Base.
142
+ * 4. Creates GraftInfo linking Base and Orphan.
143
+ * 5. Rel8s the Result to GraftInfo.
144
+ */
145
+ export async function graftTimelines({ tipA, branchA, tipB, branchB, space, metaspace, }) {
146
+ const lc = `[${graftTimelines.name}]`;
147
+ console.log(`${lc} [TEST DEBUG] starting... Metaspace present: ${!!metaspace}`);
148
+ // 1. Determine Base and Orphan based on timestamp
149
+ let baseTip;
150
+ let orphanTip; // The one providing the DNA to be replayed
151
+ let orphanBranch;
152
+ const getTs = (ibGib) => {
153
+ const ms = ibGib.data?.timestampMs ?? 0;
154
+ if (!ms && ibGib.data?.timestamp) {
155
+ return new Date(ibGib.data.timestamp).getTime();
156
+ }
157
+ return ms;
158
+ };
159
+ const tsA = getTs(tipA);
160
+ const tsB = getTs(tipB);
161
+ if (tsA <= tsB) {
162
+ // A is earlier (or equal), use A as base
163
+ baseTip = tipA;
164
+ orphanTip = tipB;
165
+ orphanBranch = branchB;
166
+ }
167
+ else {
168
+ // B is earlier, use B as base
169
+ baseTip = tipB;
170
+ orphanTip = tipA;
171
+ orphanBranch = branchA;
172
+ }
173
+ const baseAddr = getIbGibAddr({ ibGib: baseTip });
174
+ const orphanAddr = getIbGibAddr({ ibGib: orphanTip });
175
+ // 2. Gather DNA addresses from the Orphan branch
176
+ const dnaAddrsToApply = [];
177
+ for (const ibGib of orphanBranch) {
178
+ const dnas = ibGib.rel8ns?.dna || [];
179
+ dnaAddrsToApply.push(...dnas);
180
+ }
181
+ if (dnaAddrsToApply.length === 0) {
182
+ return baseTip;
183
+ }
184
+ // 3. Fetch the DNA stones
185
+ const dnaRes = await getFromSpace({ space, addrs: dnaAddrsToApply });
186
+ if (!dnaRes.success || !dnaRes.ibGibs) {
187
+ throw new Error(`Failed to fetch DNA stones for replay. (E: 3a2b1c4d5e6f7g8h)`);
188
+ }
189
+ const allDnaIbGibs = dnaRes.ibGibs;
190
+ // 4. Replay Transforms onto Base
191
+ const createdIbGibs_Running = [];
192
+ const mergedTip = await applyTransforms({
193
+ src: baseTip,
194
+ dnaAddrsToApplyToStoreVersion: [...dnaAddrsToApply],
195
+ allLocalIbGibs: allDnaIbGibs,
196
+ createdIbGibs_Running,
197
+ });
198
+ // 5. Persist the new stones
199
+ await putInSpace({ space, ibGibs: createdIbGibs_Running });
200
+ // 6. Create Graft Info
201
+ const graftInfo = await createGraftInfo({
202
+ algo: 'optimistic_dna_replay',
203
+ details: `Replayed ${dnaAddrsToApply.length} transforms from orphan (${orphanAddr}) onto base (${baseAddr}).`,
204
+ });
205
+ // Add relations via rel8
206
+ const graftInfoRel8nsToAdd = {
207
+ [GRAFT_BASE_REL8N_NAME]: [baseAddr],
208
+ [GRAFT_ORPHAN_REL8N_NAME]: [orphanAddr],
209
+ };
210
+ const { newIbGib: graftInfoWithRel8ns } = await rel8({
211
+ src: graftInfo,
212
+ rel8nsToAddByAddr: graftInfoRel8nsToAdd,
213
+ dna: true,
214
+ });
215
+ // Persist this update
216
+ await putInSpace({ space, ibGibs: [graftInfoWithRel8ns] });
217
+ // 7. Link GraftInfo to Result via 'graftinfo' rel8n
218
+ const graftInfoAddr = getIbGibAddr({ ibGib: graftInfoWithRel8ns });
219
+ const { newIbGib: finalIbGib, dnas: rel8Dnas, intermediateIbGibs } = await rel8({
220
+ src: mergedTip,
221
+ rel8nsToAddByAddr: {
222
+ [GRAFT_INFO_REL8N_NAME]: [graftInfoAddr],
223
+ },
224
+ dna: true, // Auto-link 'dna'
225
+ nCounter: true,
226
+ });
227
+ // Persist final result
228
+ const finalStones = [finalIbGib, ...(rel8Dnas || []), ...(intermediateIbGibs || [])];
229
+ await putInSpace({ space, ibGibs: finalStones });
230
+ // 8. Register New Tip in Metaspace (CRITICAL for updating Timeline Index)
231
+ if (metaspace && metaspace.registerNewIbGib) {
232
+ await metaspace.registerNewIbGib({ ibGib: finalIbGib, space });
233
+ }
234
+ return finalIbGib;
235
+ }
236
+ //# sourceMappingURL=graft-info-helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graft-info-helpers.mjs","sourceRoot":"","sources":["../../../src/sync/graft-info/graft-info-helpers.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=graft-info-helpers.respec.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graft-info-helpers.respec.d.mts","sourceRoot":"","sources":["../../../src/sync/graft-info/graft-info-helpers.respec.mts"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
1
+ import { iReckon, respecfully, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
2
+ import { mergeTextLCS } from './graft-info-helpers.mjs';
3
+ const maam = `[${import.meta.url}]`;
4
+ const sir = maam;
5
+ await respecfully(sir, 'Graft Info Helpers', async () => {
6
+ await respecfully(sir, 'mergeTextLCS', async () => {
7
+ await ifWe(sir, 'mergeTextLCS should interleave unique lines (A then B)', async () => {
8
+ const textA = "Line 1\nLine A\nLine 3";
9
+ const textB = "Line 1\nLine B\nLine 3";
10
+ const res = await mergeTextLCS({ textA, textB });
11
+ const expected = "Line 1\nLine A\nLine B\nLine 3";
12
+ iReckon(sir, res).asTo('result').isGonnaBe(expected);
13
+ });
14
+ await ifWe(sir, 'mergeTextLCS should handle insertions', async () => {
15
+ const textA = "Line 1\nLine 3";
16
+ const textB = "Line 1\nLine 2\nLine 3";
17
+ const res = await mergeTextLCS({ textA, textB });
18
+ const expected = "Line 1\nLine 2\nLine 3";
19
+ iReckon(sir, res).asTo('result').isGonnaBe(expected);
20
+ });
21
+ await ifWe(sir, 'mergeTextLCS should handle appends', async () => {
22
+ const textA = "Line 1";
23
+ const textB = "Line 1\nLine 2";
24
+ const res = await mergeTextLCS({ textA, textB });
25
+ const expected = "Line 1\nLine 2";
26
+ iReckon(sir, res).asTo('result').isGonnaBe(expected);
27
+ });
28
+ await ifWe(sir, 'mergeTextLCS should handle simultaneous list additions', async () => {
29
+ const textA = "- Item 1\n- Item 2\n- Item A";
30
+ const textB = "- Item 1\n- Item 2\n- Item B";
31
+ const res = await mergeTextLCS({ textA, textB });
32
+ // Expected: Common (1, 2) then A then B.
33
+ const expected = "- Item 1\n- Item 2\n- Item A\n- Item B";
34
+ iReckon(sir, res).asTo('result').isGonnaBe(expected);
35
+ });
36
+ await ifWe(sir, 'mergeTextLCS should handle distinct modifications in code block', async () => {
37
+ const textA = `function foo() {
38
+ console.log("start");
39
+ doA();
40
+ console.log("end");
41
+ }`;
42
+ const textB = `function foo() {
43
+ console.log("start");
44
+ doB();
45
+ console.log("end");
46
+ }`;
47
+ const res = await mergeTextLCS({ textA, textB });
48
+ const expected = `function foo() {
49
+ console.log("start");
50
+ doA();
51
+ doB();
52
+ console.log("end");
53
+ }`;
54
+ iReckon(sir, res).asTo('result').isGonnaBe(expected);
55
+ });
56
+ await ifWe(sir, 'mergeTextLCS should return same string if identical', async () => {
57
+ const textA = "Hello";
58
+ const res = await mergeTextLCS({ textA, textB: textA });
59
+ iReckon(sir, res).asTo('result').isGonnaBe(textA);
60
+ });
61
+ });
62
+ await respecfully(sir, 'graftTimelines', async () => {
63
+ // We need a more complex setup to test this properly (mock space, etc.)
64
+ // For now, this placeholder ensures the test file runs.
65
+ await ifWe(sir, 'graftTimelines placeholders', async () => {
66
+ iReckon(sir, true).isGonnaBeTrue();
67
+ });
68
+ });
69
+ });
70
+ //# sourceMappingURL=graft-info-helpers.respec.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graft-info-helpers.respec.mjs","sourceRoot":"","sources":["../../../src/sync/graft-info/graft-info-helpers.respec.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { IbGib_V1, IbGibData_V1, IbGibRel8ns_V1 } from "@ibgib/ts-gib/dist/V1/types.mjs";
2
+ import { GRAFT_INFO_ATOM } from "./graft-info-constants.mjs";
3
+ export interface GraftInfoIb_V1 {
4
+ atom: typeof GRAFT_INFO_ATOM;
5
+ algo: string;
6
+ }
7
+ export interface GraftInfoData_V1 extends IbGibData_V1 {
8
+ /**
9
+ * The algorithm or strategy used to perform the graft.
10
+ */
11
+ algo: string;
12
+ /**
13
+ * Optional details about the graft, e.g. validation results or specifics about conflicts resolved.
14
+ */
15
+ details?: string;
16
+ }
17
+ export interface GraftInfoRel8ns_V1 extends IbGibRel8ns_V1 {
18
+ /**
19
+ * The 'base' of the graft (the earlier tip, usually).
20
+ * This is the timeline we are grafting ONTO.
21
+ */
22
+ graftbase?: string[];
23
+ /**
24
+ * The 'orphan' tip (the later tip, usually) effectively grafted into the base.
25
+ * This is the branch that ends here, its DNA spliced into the base.
26
+ */
27
+ graftorphan?: string[];
28
+ }
29
+ export interface GraftInfoIbGib_V1 extends IbGib_V1<GraftInfoData_V1, GraftInfoRel8ns_V1> {
30
+ }
31
+ //# sourceMappingURL=graft-info-types.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-info-types.d.mts","sourceRoot":"","sources":["../../../src/sync/merge-info/merge-info-types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,OAAO,eAAe,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACtD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;CAAI"}
1
+ {"version":3,"file":"graft-info-types.d.mts","sourceRoot":"","sources":["../../../src/sync/graft-info/graft-info-types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,OAAO,eAAe,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACtD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;CAAI"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=graft-info-types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graft-info-types.mjs","sourceRoot":"","sources":["../../../src/sync/graft-info/graft-info-types.mts"],"names":[],"mappings":""}
@@ -26,7 +26,7 @@ export declare function findLCA({ tipA, tipB, space, }: {
26
26
  space: IbGibSpaceAny;
27
27
  }): Promise<LCAResult>;
28
28
  /**
29
- * Optimistically merges two divergent timelines by inspecting DNA.
29
+ * Optimistically grafts two divergent timelines by inspecting DNA and replaying transforms.
30
30
  */
31
31
  export declare function mergeDivergentTimelines({ tipA, tipB, space, metaspace, }: {
32
32
  tipA: IbGib_V1;
@@ -1 +1 @@
1
- {"version":3,"file":"conflict-optimistic.d.mts","sourceRoot":"","sources":["../../../src/sync/strategies/conflict-optimistic.mts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAgC,MAAM,iCAAiC,CAAC;AAEzF,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAMtE,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,EAC1B,IAAI,EACJ,IAAI,EACJ,KAAK,GACR,EAAE;IACC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACxB,GAAG,OAAO,CAAC,SAAS,CAAC,CA2ErB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,EAC1C,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,SAAS,GACZ,EAAE;IACC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;CAClB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+EpB"}
1
+ {"version":3,"file":"conflict-optimistic.d.mts","sourceRoot":"","sources":["../../../src/sync/strategies/conflict-optimistic.mts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAgC,MAAM,iCAAiC,CAAC;AAEzF,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAMtE,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,EAC1B,IAAI,EACJ,IAAI,EACJ,KAAK,GACR,EAAE;IACC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACxB,GAAG,OAAO,CAAC,SAAS,CAAC,CA2ErB;AAID;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,EAC1C,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,SAAS,GACZ,EAAE;IACC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;CAClB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkBpB"}
@@ -9,7 +9,6 @@
9
9
  */
10
10
  import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
11
11
  import { getFromSpace } from '../../witness/space/space-helper.mjs';
12
- import { mut8Timeline } from '../../timeline/timeline-api.mjs';
13
12
  const lc = `[conflict-optimistic]`;
14
13
  /**
15
14
  * Finds the Last Common Ancestor (LCA) between two divergent timelines.
@@ -90,73 +89,24 @@ export async function findLCA({ tipA, tipB, space, }) {
90
89
  const branchB = await getPath(tipB, pastB, lcaAddr);
91
90
  return { lcaAddr, branchA, branchB };
92
91
  }
92
+ import { graftTimelines } from '../graft-info/graft-info-helpers.mjs';
93
93
  /**
94
- * Optimistically merges two divergent timelines by inspecting DNA.
94
+ * Optimistically grafts two divergent timelines by inspecting DNA and replaying transforms.
95
95
  */
96
96
  export async function mergeDivergentTimelines({ tipA, tipB, space, metaspace, }) {
97
+ const lc = `[${mergeDivergentTimelines.name}]`;
97
98
  // 1. Find LCA & Branches
98
99
  const { lcaAddr, branchA, branchB } = await findLCA({ tipA, tipB, space });
99
- // 2. DNA Analysis & Reducing
100
- // We need to accumulate the "changes" from A and "changes" from B.
101
- // For V1 simple objects, this means extracting the `dataToAddOrPatch` from each DNA transform.
102
- const extractChanges = async (branch) => {
103
- let accumulatedData = {};
104
- for (const ibGib of branch) {
105
- // Check DNA
106
- const dnaRel = ibGib.rel8ns?.dna;
107
- if (!dnaRel || dnaRel.length === 0)
108
- continue;
109
- // Load DNA (usually optimized to be in-memory if we just loaded the timeline?
110
- // no, DNA is a separate stone. we might need to fetch it.)
111
- const dnaRes = await getFromSpace({ space, addrs: dnaRel });
112
- const dnaIbGibs = dnaRes.ibGibs || [];
113
- for (const dna of dnaIbGibs) {
114
- // Inspect DNA data.
115
- // We expect 'mut8' transform DNA.
116
- // The DNA *data* contains the args used in the transform.
117
- if (dna.data && dna.data.dataToAddOrPatch) {
118
- Object.assign(accumulatedData, dna.data.dataToAddOrPatch);
119
- }
120
- }
121
- }
122
- return accumulatedData;
123
- };
124
- const changesA = await extractChanges(branchA);
125
- const changesB = await extractChanges(branchB);
126
- // 3. Conflict Resolution Strategy (Optimistic: Merge All)
127
- // Conflict collision: If A and B changed the SAME field.
128
- // Strategy: Last Write Wins? Or deterministic tie-break?
129
- // Let's default to: Apply A, then Apply B. B wins collisions.
130
- // (Ideally we flag this for user review, but "Optimistic" means we presume it's fine).
131
- const mergedChanges = { ...changesA, ...changesB };
132
- // 4. Create Merge Transform
133
- // We create a NEW mut8 on top of tipA (or tipB).
134
- // Let's pick tipA as the "base" to apply the merge to.
135
- // But we must also link tipB as an ancestor?
136
- // Standard mut8Timeline only supports linear ancestry.
137
- // We need a "Merge" transform that rel8s both.
138
- // Use mut8Timeline on tipA, applying the *missing* changes from B,
139
- // AND explicitly adding tipB to the 'ancestor' (or 'merge_ancestor'?) rel8n.
140
- // Actually, simply applying 'mergedChanges' to tipA might be redundant for the parts A already did.
141
- // We only need to apply 'changesB' to tipA?
142
- // Wait, if B changed field-X to 'foo' and A touched field-Y.
143
- // We apply changesB (foo) to tipA. Result has both.
144
- // What if B changed field-X to 'foo' and A changed field-X to 'bar'.
145
- // changesB overwrites. Result is 'foo'.
146
- // So: Apply changesB to tipA.
147
- const result = await mut8Timeline({
148
- timeline: tipA,
149
- mut8Opts: {
150
- dataToAddOrPatch: changesB, // Apply B's changes onto A
151
- // We want to record that B is also a parent.
152
- // mut8Timeline might not expose 'otherAncestors'.
153
- // required to verify this API capabilities.
154
- },
100
+ // 2. Delegate to Graft Engine
101
+ // The graft engine handles timestamp verification, DNA fetching, replay, and Stone creation.
102
+ const result = await graftTimelines({
103
+ tipA,
104
+ branchA,
105
+ tipB,
106
+ branchB,
155
107
  space,
156
108
  metaspace,
157
109
  });
158
- // Ideally we'd modify the result to add 'past' link to tipB.
159
- // But for now, let's just achieve data convergence.
160
110
  return result;
161
111
  }
162
112
  //# sourceMappingURL=conflict-optimistic.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"conflict-optimistic.mjs","sourceRoot":"","sources":["../../../src/sync/strategies/conflict-optimistic.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conflict-optimistic.mjs","sourceRoot":"","sources":["../../../src/sync/strategies/conflict-optimistic.mts"],"names":[],"mappings":"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"}