@ibgib/vcs-gib 0.0.21 → 0.0.26

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 (93) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/VCS_CLI_USER_GUIDE.md +94 -89
  3. package/dist/AUTO-GENERATED-version.d.mts +1 -1
  4. package/dist/AUTO-GENERATED-version.mjs +1 -1
  5. package/dist/bootstrap/node-bootstrap.mjs +1 -1
  6. package/dist/cli/cli-arg-parser.d.mts +1 -0
  7. package/dist/cli/cli-arg-parser.d.mts.map +1 -1
  8. package/dist/cli/cli-arg-parser.mjs +5 -1
  9. package/dist/cli/cli-arg-parser.mjs.map +1 -1
  10. package/dist/cli/cli-constants.d.mts +6 -0
  11. package/dist/cli/cli-constants.d.mts.map +1 -1
  12. package/dist/cli/cli-constants.mjs +12 -0
  13. package/dist/cli/cli-constants.mjs.map +1 -1
  14. package/dist/cli/commands/add-cmd.d.mts.map +1 -1
  15. package/dist/cli/commands/add-cmd.mjs +5 -2
  16. package/dist/cli/commands/add-cmd.mjs.map +1 -1
  17. package/dist/cli/commands/commit-cmd.d.mts +5 -4
  18. package/dist/cli/commands/commit-cmd.d.mts.map +1 -1
  19. package/dist/cli/commands/commit-cmd.mjs +149 -33
  20. package/dist/cli/commands/commit-cmd.mjs.map +1 -1
  21. package/dist/cli/commands/generate-comment-cmd.d.mts +19 -0
  22. package/dist/cli/commands/generate-comment-cmd.d.mts.map +1 -0
  23. package/dist/cli/commands/generate-comment-cmd.mjs +140 -0
  24. package/dist/cli/commands/generate-comment-cmd.mjs.map +1 -0
  25. package/dist/cli/commands/log-cmd.d.mts +12 -3
  26. package/dist/cli/commands/log-cmd.d.mts.map +1 -1
  27. package/dist/cli/commands/log-cmd.mjs +236 -38
  28. package/dist/cli/commands/log-cmd.mjs.map +1 -1
  29. package/dist/cli/commands/merge-cmd.d.mts +21 -8
  30. package/dist/cli/commands/merge-cmd.d.mts.map +1 -1
  31. package/dist/cli/commands/merge-cmd.mjs +138 -70
  32. package/dist/cli/commands/merge-cmd.mjs.map +1 -1
  33. package/dist/cli/commands/status-cmd.d.mts +5 -6
  34. package/dist/cli/commands/status-cmd.d.mts.map +1 -1
  35. package/dist/cli/commands/status-cmd.mjs +50 -205
  36. package/dist/cli/commands/status-cmd.mjs.map +1 -1
  37. package/dist/cli/vcs-cli-main.d.mts.map +1 -1
  38. package/dist/cli/vcs-cli-main.mjs +27 -6
  39. package/dist/cli/vcs-cli-main.mjs.map +1 -1
  40. package/dist/engine/index/index-helper.d.mts.map +1 -1
  41. package/dist/engine/index/index-helper.mjs +3 -0
  42. package/dist/engine/index/index-helper.mjs.map +1 -1
  43. package/dist/engine/item/item-helper.d.mts +31 -1
  44. package/dist/engine/item/item-helper.d.mts.map +1 -1
  45. package/dist/engine/item/item-helper.mjs +44 -2
  46. package/dist/engine/item/item-helper.mjs.map +1 -1
  47. package/dist/engine/merge/b2tfs-3way-graft-strategy.d.mts +74 -0
  48. package/dist/engine/merge/b2tfs-3way-graft-strategy.d.mts.map +1 -0
  49. package/dist/engine/merge/{b2tfs-3way-merge-strategy.mjs → b2tfs-3way-graft-strategy.mjs} +133 -304
  50. package/dist/engine/merge/b2tfs-3way-graft-strategy.mjs.map +1 -0
  51. package/dist/engine/merge/{b2tfs-3way-merge-types.d.mts → b2tfs-3way-graft-types.d.mts} +2 -9
  52. package/dist/engine/merge/b2tfs-3way-graft-types.d.mts.map +1 -0
  53. package/dist/engine/merge/b2tfs-3way-graft-types.mjs +2 -0
  54. package/dist/engine/merge/b2tfs-3way-graft-types.mjs.map +1 -0
  55. package/dist/engine/status/status-helper.d.mts +89 -0
  56. package/dist/engine/status/status-helper.d.mts.map +1 -0
  57. package/dist/engine/status/status-helper.mjs +285 -0
  58. package/dist/engine/status/status-helper.mjs.map +1 -0
  59. package/dist/test/test-helpers.d.mts +51 -0
  60. package/dist/test/test-helpers.d.mts.map +1 -0
  61. package/dist/test/test-helpers.mjs +135 -0
  62. package/dist/test/test-helpers.mjs.map +1 -0
  63. package/package.json +4 -4
  64. package/src/AUTO-GENERATED-version.mts +1 -1
  65. package/src/bootstrap/node-bootstrap.mts +1 -1
  66. package/src/cli/cli-arg-parser.mts +5 -0
  67. package/src/cli/cli-constants.mts +13 -0
  68. package/src/cli/commands/add-cmd.mts +5 -2
  69. package/src/cli/commands/branch-checkout-cmd.respec.log +8 -101
  70. package/src/cli/commands/branch-checkout-cmd.respec.mts +11 -10
  71. package/src/cli/commands/commit-cmd.mts +165 -42
  72. package/src/cli/commands/commit-log-cmd.respec.mts +216 -3
  73. package/src/cli/commands/generate-comment-cmd.mts +171 -0
  74. package/src/cli/commands/log-cmd.mts +288 -41
  75. package/src/cli/commands/merge-cmd.mts +154 -76
  76. package/src/cli/commands/status-cmd.mts +57 -256
  77. package/src/cli/vcs-cli-main.mts +28 -7
  78. package/src/engine/index/index-helper.mts +3 -0
  79. package/src/engine/item/item-helper.mts +76 -3
  80. package/src/engine/merge/{b2tfs-3way-merge-strategy.mts → b2tfs-3way-graft-strategy.mts} +152 -374
  81. package/src/engine/merge/{b2tfs-3way-merge-strategy.respec.mts → b2tfs-3way-graft-strategy.respec.mts} +27 -122
  82. package/src/engine/merge/{b2tfs-3way-merge-types.mts → b2tfs-3way-graft-types.mts} +34 -42
  83. package/src/engine/merge/b2tfs-sync-comments.respec.mts +399 -0
  84. package/src/engine/status/status-helper.mts +380 -0
  85. package/src/test/test-helpers.mts +168 -0
  86. package/tsconfig.test.tsbuildinfo +1 -1
  87. package/tsconfig.tsbuildinfo +1 -1
  88. package/dist/engine/merge/b2tfs-3way-merge-strategy.d.mts +0 -48
  89. package/dist/engine/merge/b2tfs-3way-merge-strategy.d.mts.map +0 -1
  90. package/dist/engine/merge/b2tfs-3way-merge-strategy.mjs.map +0 -1
  91. package/dist/engine/merge/b2tfs-3way-merge-types.d.mts.map +0 -1
  92. package/dist/engine/merge/b2tfs-3way-merge-types.mjs +0 -2
  93. package/dist/engine/merge/b2tfs-3way-merge-types.mjs.map +0 -1
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @module b2tfs-merge-strategy.respec.node
2
+ * @module b2tfs-3way-graft-strategy.respec.node
3
3
  *
4
- * In-memory respec unit tests for B2tFSItem3WayMergeStrategy.
4
+ * In-memory respec unit tests for B2tFS3WayGraftStrategy.
5
5
  */
6
6
 
7
7
  import {
8
- respecfully, ifWe, ifWeMight, iReckon,
8
+ respecfully, ifWe, iReckon,
9
9
  firstOfEach
10
10
  } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
11
11
 
@@ -22,10 +22,10 @@ import { BinIbGib_V1 } from '@ibgib/core-gib/dist/common/bin/bin-types.mjs';
22
22
  import { GraftStrategyService } from '@ibgib/core-gib/dist/sync/graft-info/graft-strategy-service.mjs';
23
23
 
24
24
  import { createB2tFSItemIbGib, evolveB2tFSItemIbGib } from '../item/item-helper.mjs';
25
- import { B2tFSItemIbGib_V1, BINARY_REL8N_NAME, B2TFS_CHILD_ITEM_REL8N_NAME } from '../item/item-types.mjs';
26
- import { B2tFS3WayGraftStrategy, B2tFSItem3WayMergeStrategy } from './b2tfs-3way-merge-strategy.mjs';
25
+ import { B2tFSItemIbGib_V1, BINARY_REL8N_NAME } from '../item/item-types.mjs';
26
+ import { B2tFS3WayGraftStrategy } from './b2tfs-3way-graft-strategy.mjs';
27
27
 
28
- const lc = `[apps/vcs-gib/src/engine/merge/b2tfs-merge-strategy.respec.node.mts]`;
28
+ const lc = `[apps/vcs-gib/src/engine/merge/b2tfs-3way-graft-strategy.respec.node.mts]`;
29
29
 
30
30
  const graftStrategySvc = GraftStrategyService.instance;
31
31
 
@@ -132,59 +132,11 @@ async function evolveFileContent({
132
132
  return evolveRes.newIbGib as B2tFSItemIbGib_V1;
133
133
  }
134
134
 
135
- async function createFolderItem({
136
- name,
137
- childAddrs,
138
- space,
139
- }: {
140
- name: string;
141
- childAddrs: string[];
142
- space: any;
143
- }): Promise<B2tFSItemIbGib_V1> {
144
- const res = await createB2tFSItemIbGib({
145
- fsType: 'folder',
146
- name,
147
- rel8ns: {
148
- [B2TFS_CHILD_ITEM_REL8N_NAME]: childAddrs,
149
- },
150
- });
151
-
152
- await persistTransformResult({ resTransform: res, space });
153
- await registerNewIbGib({ ibGib: res.newIbGib, space });
154
-
155
- return res.newIbGib as B2tFSItemIbGib_V1;
156
- }
157
-
158
- async function evolveFolderItem({
159
- existingItem,
160
- childAddrs,
161
- space,
162
- }: {
163
- existingItem: B2tFSItemIbGib_V1;
164
- childAddrs: string[];
165
- space: any;
166
- }): Promise<B2tFSItemIbGib_V1> {
167
- const res = await evolveB2tFSItemIbGib({
168
- existingItem,
169
- rel8nsToUpdate: {
170
- [B2TFS_CHILD_ITEM_REL8N_NAME]: childAddrs,
171
- },
172
- rel8nsToRemove: {
173
- [B2TFS_CHILD_ITEM_REL8N_NAME]: existingItem.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME] || [],
174
- },
175
- });
176
-
177
- await persistTransformResult({ resTransform: res, space });
178
- await registerNewIbGib({ ibGib: res.newIbGib, space });
179
-
180
- return res.newIbGib as B2tFSItemIbGib_V1;
181
- }
182
-
183
- await respecfully(lc, `B2tFSItem3WayMergeStrategy In-Memory Respecs`, async () => {
135
+ await respecfully(lc, `B2tFS3WayGraftStrategy In-Memory Respecs`, async () => {
184
136
 
185
137
  firstOfEach(lc, async () => {
186
138
  graftStrategySvc.reset();
187
- graftStrategySvc.registerStrategy(new B2tFSItem3WayMergeStrategy());
139
+ graftStrategySvc.registerStrategy(new B2tFS3WayGraftStrategy());
188
140
  });
189
141
 
190
142
  await ifWe(lc, `performs non-conflicting line merges across two branch timelines`, async () => {
@@ -199,30 +151,23 @@ await respecfully(lc, `B2tFSItem3WayMergeStrategy In-Memory Respecs`, async () =
199
151
  const lcaFile = await createFileWithContent({ name: 'app.ts', content: initialText, space });
200
152
  const lcaAddr = getIbGibAddr({ ibGib: lcaFile });
201
153
 
202
- const lcaFolder = await createFolderItem({ name: 'src', childAddrs: [lcaAddr], space });
203
- const lcaFolderAddr = getIbGibAddr({ ibGib: lcaFolder });
204
-
205
154
  // Base branch modifies line 1
206
155
  const baseText = "line 1 modified by base\nline 2\nline 3";
207
156
  const baseFile = await evolveFileContent({ existingItem: lcaFile, newContent: baseText, space });
208
157
  const baseFileAddr = getIbGibAddr({ ibGib: baseFile });
209
- const baseFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [baseFileAddr], space });
210
- const baseFolderAddr = getIbGibAddr({ ibGib: baseFolder });
211
158
 
212
159
  // Orphan branch modifies line 3
213
160
  const orphanText = "line 1\nline 2\nline 3 modified by orphan";
214
161
  const orphanFile = await evolveFileContent({ existingItem: lcaFile, newContent: orphanText, space });
215
162
  const orphanFileAddr = getIbGibAddr({ ibGib: orphanFile });
216
- const orphanFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [orphanFileAddr], space });
217
- const orphanFolderAddr = getIbGibAddr({ ibGib: orphanFolder });
218
163
 
219
- const timelineA = [lcaFolderAddr, baseFolderAddr];
220
- const timelineB = [lcaFolderAddr, orphanFolderAddr];
164
+ const timelineA = [lcaAddr, baseFileAddr];
165
+ const timelineB = [lcaAddr, orphanFileAddr];
221
166
 
222
167
  const graftResult = await graftStrategySvc.graftTimelines({
223
168
  timelineAddrsA: timelineA,
224
169
  timelineAddrsB: timelineB,
225
- latestCommonFrameAddr: lcaFolderAddr,
170
+ latestCommonFrameAddr: lcaAddr,
226
171
  conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
227
172
  ibGibReadCache: {},
228
173
  space,
@@ -231,13 +176,7 @@ await respecfully(lc, `B2tFSItem3WayMergeStrategy In-Memory Respecs`, async () =
231
176
  iReckon(lc, graftResult.newGraftTip).isGonnaBeTruthy();
232
177
 
233
178
  const tipGet = await getFromSpace({ space, addrs: [getIbGibAddr({ ibGib: graftResult.newGraftTip })] });
234
- const mergedFolder = tipGet.ibGibs![0] as B2tFSItemIbGib_V1;
235
-
236
- const mergedChildAddr = mergedFolder.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME]?.at(-1);
237
- iReckon(lc, mergedChildAddr).isGonnaBeTruthy();
238
-
239
- const fileGet = await getFromSpace({ space, addrs: [mergedChildAddr!] });
240
- const mergedFile = fileGet.ibGibs![0] as B2tFSItemIbGib_V1;
179
+ const mergedFile = tipGet.ibGibs![0] as B2tFSItemIbGib_V1;
241
180
 
242
181
  const binAddr = mergedFile.rel8ns?.[BINARY_REL8N_NAME]?.at(-1);
243
182
  iReckon(lc, binAddr).isGonnaBeTruthy();
@@ -263,41 +202,30 @@ await respecfully(lc, `B2tFSItem3WayMergeStrategy In-Memory Respecs`, async () =
263
202
  const lcaFile = await createFileWithContent({ name: 'index.ts', content: initialText, space });
264
203
  const lcaAddr = getIbGibAddr({ ibGib: lcaFile });
265
204
 
266
- const lcaFolder = await createFolderItem({ name: 'src', childAddrs: [lcaAddr], space });
267
- const lcaFolderAddr = getIbGibAddr({ ibGib: lcaFolder });
268
-
269
205
  // Base modifies line 2
270
206
  const baseText = "line 1\nline 2 base edit\nline 3";
271
207
  const baseFile = await evolveFileContent({ existingItem: lcaFile, newContent: baseText, space });
272
208
  const baseFileAddr = getIbGibAddr({ ibGib: baseFile });
273
- const baseFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [baseFileAddr], space });
274
- const baseFolderAddr = getIbGibAddr({ ibGib: baseFolder });
275
209
 
276
210
  // Orphan modifies line 2 differently
277
211
  const orphanText = "line 1\nline 2 orphan edit\nline 3";
278
212
  const orphanFile = await evolveFileContent({ existingItem: lcaFile, newContent: orphanText, space });
279
213
  const orphanFileAddr = getIbGibAddr({ ibGib: orphanFile });
280
- const orphanFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [orphanFileAddr], space });
281
- const orphanFolderAddr = getIbGibAddr({ ibGib: orphanFolder });
282
214
 
283
- const timelineA = [lcaFolderAddr, baseFolderAddr];
284
- const timelineB = [lcaFolderAddr, orphanFolderAddr];
215
+ const timelineA = [lcaAddr, baseFileAddr];
216
+ const timelineB = [lcaAddr, orphanFileAddr];
285
217
 
286
218
  const graftResult = await graftStrategySvc.graftTimelines({
287
219
  timelineAddrsA: timelineA,
288
220
  timelineAddrsB: timelineB,
289
- latestCommonFrameAddr: lcaFolderAddr,
221
+ latestCommonFrameAddr: lcaAddr,
290
222
  conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
291
223
  ibGibReadCache: {},
292
224
  space,
293
225
  });
294
226
 
295
227
  const tipGet = await getFromSpace({ space, addrs: [getIbGibAddr({ ibGib: graftResult.newGraftTip })] });
296
- const mergedFolder = tipGet.ibGibs![0] as B2tFSItemIbGib_V1;
297
-
298
- const mergedChildAddr = mergedFolder.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME]?.at(-1);
299
- const fileGet = await getFromSpace({ space, addrs: [mergedChildAddr!] });
300
- const mergedFile = fileGet.ibGibs![0] as B2tFSItemIbGib_V1;
228
+ const mergedFile = tipGet.ibGibs![0] as B2tFSItemIbGib_V1;
301
229
 
302
230
  const binAddr = mergedFile.rel8ns?.[BINARY_REL8N_NAME]?.at(-1);
303
231
  const binGet = await getFromSpace({ space, addrs: [binAddr!] });
@@ -323,28 +251,21 @@ await respecfully(lc, `B2tFSItem3WayMergeStrategy In-Memory Respecs`, async () =
323
251
  const lcaFile = await createFileWithContent({ name: 'image.png', content: lcaBinData, space });
324
252
  const lcaAddr = getIbGibAddr({ ibGib: lcaFile });
325
253
 
326
- const lcaFolder = await createFolderItem({ name: 'assets', childAddrs: [lcaAddr], space });
327
- const lcaFolderAddr = getIbGibAddr({ ibGib: lcaFolder });
328
-
329
254
  const baseBinData = new Uint8Array([0x00, 0x01, 0x02, 0x04]);
330
255
  const baseFile = await evolveFileContent({ existingItem: lcaFile, newContent: baseBinData, space });
331
256
  const baseFileAddr = getIbGibAddr({ ibGib: baseFile });
332
- const baseFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [baseFileAddr], space });
333
- const baseFolderAddr = getIbGibAddr({ ibGib: baseFolder });
334
257
 
335
258
  const orphanBinData = new Uint8Array([0x00, 0x01, 0x02, 0x05]);
336
259
  const orphanFile = await evolveFileContent({ existingItem: lcaFile, newContent: orphanBinData, space });
337
260
  const orphanFileAddr = getIbGibAddr({ ibGib: orphanFile });
338
- const orphanFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [orphanFileAddr], space });
339
- const orphanFolderAddr = getIbGibAddr({ ibGib: orphanFolder });
340
261
 
341
- const timelineA = [lcaFolderAddr, baseFolderAddr];
342
- const timelineB = [lcaFolderAddr, orphanFolderAddr];
262
+ const timelineA = [lcaAddr, baseFileAddr];
263
+ const timelineB = [lcaAddr, orphanFileAddr];
343
264
 
344
265
  const graftResult = await graftStrategySvc.graftTimelines({
345
266
  timelineAddrsA: timelineA,
346
267
  timelineAddrsB: timelineB,
347
- latestCommonFrameAddr: lcaFolderAddr,
268
+ latestCommonFrameAddr: lcaAddr,
348
269
  conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
349
270
  ibGibReadCache: {},
350
271
  space,
@@ -364,26 +285,20 @@ await respecfully(lc, `B2tFSItem3WayMergeStrategy In-Memory Respecs`, async () =
364
285
  const initialText = "base content";
365
286
  const lcaFile = await createFileWithContent({ name: 'file.txt', content: initialText, space });
366
287
  const lcaAddr = getIbGibAddr({ ibGib: lcaFile });
367
- const lcaFolder = await createFolderItem({ name: 'dir', childAddrs: [lcaAddr], space });
368
- const lcaFolderAddr = getIbGibAddr({ ibGib: lcaFolder });
369
288
 
370
289
  const baseFile = await evolveFileContent({ existingItem: lcaFile, newContent: "base edit", space });
371
290
  const baseFileAddr = getIbGibAddr({ ibGib: baseFile });
372
- const baseFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [baseFileAddr], space });
373
- const baseFolderAddr = getIbGibAddr({ ibGib: baseFolder });
374
291
 
375
292
  const orphanFile = await evolveFileContent({ existingItem: lcaFile, newContent: "orphan edit", space });
376
293
  const orphanFileAddr = getIbGibAddr({ ibGib: orphanFile });
377
- const orphanFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [orphanFileAddr], space });
378
- const orphanFolderAddr = getIbGibAddr({ ibGib: orphanFolder });
379
294
 
380
- const timelineA_sender = [lcaFolderAddr, baseFolderAddr];
381
- const timelineB_receiver = [lcaFolderAddr, orphanFolderAddr];
295
+ const timelineA_sender = [lcaAddr, baseFileAddr];
296
+ const timelineB_receiver = [lcaAddr, orphanFileAddr];
382
297
 
383
298
  const graftResult = await graftStrategySvc.graftTimelines({
384
299
  timelineAddrsA: timelineA_sender,
385
300
  timelineAddrsB: timelineB_receiver,
386
- latestCommonFrameAddr: lcaFolderAddr,
301
+ latestCommonFrameAddr: lcaAddr,
387
302
  conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
388
303
  ibGibReadCache: {},
389
304
  space,
@@ -391,7 +306,7 @@ await respecfully(lc, `B2tFSItem3WayMergeStrategy In-Memory Respecs`, async () =
391
306
  });
392
307
 
393
308
  iReckon(lc, graftResult.newGraftTip).isGonnaBeTruthy();
394
- iReckon(lc, graftResult.newGraftTip.rel8ns?.past).includes(orphanFolderAddr);
309
+ iReckon(lc, graftResult.newGraftTip.rel8ns?.past).includes(orphanFileAddr);
395
310
  });
396
311
 
397
312
  await ifWe(lc, `respects GraftPreference.sender by using timelineA (sender) as baseTip`, async () => {
@@ -405,26 +320,20 @@ await respecfully(lc, `B2tFSItem3WayMergeStrategy In-Memory Respecs`, async () =
405
320
  const initialText = "base content";
406
321
  const lcaFile = await createFileWithContent({ name: 'file.txt', content: initialText, space });
407
322
  const lcaAddr = getIbGibAddr({ ibGib: lcaFile });
408
- const lcaFolder = await createFolderItem({ name: 'dir', childAddrs: [lcaAddr], space });
409
- const lcaFolderAddr = getIbGibAddr({ ibGib: lcaFolder });
410
323
 
411
324
  const baseFile = await evolveFileContent({ existingItem: lcaFile, newContent: "sender edit", space });
412
325
  const baseFileAddr = getIbGibAddr({ ibGib: baseFile });
413
- const baseFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [baseFileAddr], space });
414
- const baseFolderAddr = getIbGibAddr({ ibGib: baseFolder });
415
326
 
416
327
  const orphanFile = await evolveFileContent({ existingItem: lcaFile, newContent: "receiver edit", space });
417
328
  const orphanFileAddr = getIbGibAddr({ ibGib: orphanFile });
418
- const orphanFolder = await evolveFolderItem({ existingItem: lcaFolder, childAddrs: [orphanFileAddr], space });
419
- const orphanFolderAddr = getIbGibAddr({ ibGib: orphanFolder });
420
329
 
421
- const timelineA_sender = [lcaFolderAddr, baseFolderAddr];
422
- const timelineB_receiver = [lcaFolderAddr, orphanFolderAddr];
330
+ const timelineA_sender = [lcaAddr, baseFileAddr];
331
+ const timelineB_receiver = [lcaAddr, orphanFileAddr];
423
332
 
424
333
  const graftResult = await graftStrategySvc.graftTimelines({
425
334
  timelineAddrsA: timelineA_sender,
426
335
  timelineAddrsB: timelineB_receiver,
427
- latestCommonFrameAddr: lcaFolderAddr,
336
+ latestCommonFrameAddr: lcaAddr,
428
337
  conflictStrategy: SyncConflictStrategy.optimisticWithLCS,
429
338
  ibGibReadCache: {},
430
339
  space,
@@ -432,10 +341,6 @@ await respecfully(lc, `B2tFSItem3WayMergeStrategy In-Memory Respecs`, async () =
432
341
  });
433
342
 
434
343
  iReckon(lc, graftResult.newGraftTip).isGonnaBeTruthy();
435
- iReckon(lc, graftResult.newGraftTip.rel8ns?.past).includes(baseFolderAddr);
344
+ iReckon(lc, graftResult.newGraftTip.rel8ns?.past).includes(baseFileAddr);
436
345
  });
437
346
  });
438
-
439
-
440
-
441
-
@@ -1,42 +1,34 @@
1
- import { IbGibAddr } from "@ibgib/ts-gib/dist/types.mjs";
2
- import { AddlGraftDetails } from "@ibgib/core-gib/dist/sync/graft-info/graft-info-types.mjs";
3
-
4
- /**
5
- * Contains references to key b2tfs item ibgibs and their corresponding binary ibgibs
6
- *
7
- * ## note on "Details"
8
- *
9
- * stupid word "details" is plural and I have this set to be an
10
- * array. don't have the ability to refactor right now, so this will
11
- * be mildly confusing unfortunately. Agents should not try to just
12
- * refactor this on the fly.
13
- */
14
- export interface B2tFS3WayAddlGraftDetails extends AddlGraftDetails {
15
- /**
16
- * So if merging `my-feature-branch` into `main`...
17
- *
18
- * this is the b2tfs item that points to the binary ibgib with text of the
19
- * file in `main`
20
- */
21
- baseTextB2tFSItemAddr: IbGibAddr;
22
- /**
23
- * So if merging `my-feature-branch` into `main`...
24
- *
25
- * this is the binary ibgib whose text is in `main`
26
- */
27
- baseTextBinAddr: IbGibAddr | undefined;
28
- /**
29
- * So if merging `my-feature-branch` into `main`...
30
- *
31
- * this is the b2tfs item that points to the binary ibgib with text of the
32
- * file in `my-feature-branch`
33
- */
34
- orphanTextB2tFSItemAddr: IbGibAddr;
35
- /**
36
- * So if merging `my-feature-branch` into `main`...
37
- *
38
- * this is the binary ibgib whose text is in `my-feature-branch`
39
- */
40
- orphanTextBinAddr: IbGibAddr | undefined;
41
-
42
- }
1
+ import { IbGibAddr } from "@ibgib/ts-gib/dist/types.mjs";
2
+ import { AddlGraftDetails } from "@ibgib/core-gib/dist/sync/graft-info/graft-info-types.mjs";
3
+
4
+ /**
5
+ * Contains references to key b2tfs item ibgibs and their corresponding binary ibgibs.
6
+ */
7
+ export interface B2tFS3WayAddlGraftDetails extends AddlGraftDetails {
8
+ /**
9
+ * So if merging `my-feature-branch` into `main`...
10
+ *
11
+ * this is the b2tfs item that points to the binary ibgib with text of the
12
+ * file in `main`
13
+ */
14
+ baseTextB2tFSItemAddr: IbGibAddr;
15
+ /**
16
+ * So if merging `my-feature-branch` into `main`...
17
+ *
18
+ * this is the binary ibgib whose text is in `main`
19
+ */
20
+ baseTextBinAddr: IbGibAddr | undefined;
21
+ /**
22
+ * So if merging `my-feature-branch` into `main`...
23
+ *
24
+ * this is the b2tfs item that points to the binary ibgib with text of the
25
+ * file in `my-feature-branch`
26
+ */
27
+ orphanTextB2tFSItemAddr: IbGibAddr;
28
+ /**
29
+ * So if merging `my-feature-branch` into `main`...
30
+ *
31
+ * this is the binary ibgib whose text is in `my-feature-branch`
32
+ */
33
+ orphanTextBinAddr: IbGibAddr | undefined;
34
+ }