@storacha/clawracha 0.2.0 → 0.2.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mdsync/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EACL,YAAY,EAGZ,SAAS,EACV,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAsJ1C,UAAU,cAAc;IACtB,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,KAAK,EAAE,CAAC;CACpB;AAyBD;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,cAAc,CAEvE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,GAAG,GACd,QAAQ,YAAY,EACpB,SAAS,SAAS,EAClB,KAAK,MAAM,EACX,aAAa,MAAM,KAClB,OAAO,CAAC,cAAc,GAAG,IAAI,CAkC/B,CAAC;AA0RF;;;GAGG;AACH,eAAO,MAAM,GAAG,GACd,QAAQ,YAAY,EACpB,SAAS,SAAS,EAClB,KAAK,MAAM,KACV,OAAO,CAAC,MAAM,GAAG,SAAS,CAM5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mdsync/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EACL,YAAY,EAGZ,SAAS,EACV,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAuJ1C,UAAU,cAAc;IACtB,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,KAAK,EAAE,CAAC;CACpB;AAyBD;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,cAAc,CAEvE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,GAAG,GACd,QAAQ,YAAY,EACpB,SAAS,SAAS,EAClB,KAAK,MAAM,EACX,aAAa,MAAM,KAClB,OAAO,CAAC,cAAc,GAAG,IAAI,CAkC/B,CAAC;AAkSF;;;GAGG;AACH,eAAO,MAAM,GAAG,GACd,QAAQ,YAAY,EACpB,SAAS,SAAS,EAClB,KAAK,MAAM,KACV,OAAO,CAAC,MAAM,GAAG,SAAS,CAM5B,CAAC"}
@@ -16,7 +16,7 @@ import { MemoryBlockstore, withCache } from "@storacha/ucn/block";
16
16
  import * as CRDT from "@web3-storage/pail/crdt";
17
17
  import { CID } from "multiformats";
18
18
  import * as cbor from "@ipld/dag-cbor";
19
- import { fromMarkdown, encodeTree, encodeRGA, RGA, decodeRGA, decodeTree, computeChangeSet, applyRGAChangeSet, encodeChangeSet, decodeChangeSet, toMarkdown, } from "@storacha/md-merge";
19
+ import { fromMarkdown, encodeTree, encodeRGA, RGA, decodeRGA, decodeTree, computeChangeSet, applyRGAChangeSet, encodeChangeSet, decodeChangeSet, toMarkdown, mergeRGATrees, } from "@storacha/md-merge";
20
20
  import * as Pail from "@web3-storage/pail";
21
21
  import { decode, encode } from "multiformats/block";
22
22
  import { sha256 } from "multiformats/hashes/sha2";
@@ -318,15 +318,26 @@ const resolveValue = async (blocks, current, key) => {
318
318
  const newMDEntry = await getMarkdownEntry(blocks, mdEntryCid);
319
319
  if (newMDEntry.type === "initial") {
320
320
  // First write for this key — bootstrap from the stored entry.
321
+ const newEventRGA = await getEventRGAFromCID(blocks, newMDEntry.events);
322
+ const newRoot = await getRGATreeFromRootCID(blocks, newMDEntry.root, newEventRGA);
321
323
  if (mdEntry) {
322
- throw new Error(`Expected no existing markdown entry for initial event, found ${mdEntryCid}`);
324
+ // Concurrent initial two branches independently created this key.
325
+ // Merge event histories and merge the two RGA trees.
326
+ mdEntry.events.merge(newEventRGA);
327
+ const comparator = makeComparator(mdEntry.events);
328
+ mdEntry = {
329
+ type: "initial",
330
+ events: mdEntry.events,
331
+ root: mergeRGATrees(mdEntry.root, newRoot, comparator),
332
+ };
333
+ }
334
+ else {
335
+ mdEntry = {
336
+ type: "initial",
337
+ events: newEventRGA,
338
+ root: newRoot,
339
+ };
323
340
  }
324
- const eventRGA = await getEventRGAFromCID(blocks, newMDEntry.events);
325
- mdEntry = {
326
- type: "initial",
327
- events: eventRGA,
328
- root: await getRGATreeFromRootCID(blocks, newMDEntry.root, eventRGA),
329
- };
330
341
  }
331
342
  else {
332
343
  // Update — merge event histories, then apply the changeset.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storacha/clawracha",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "OpenClaw plugin for Storacha workspace sync via UCN Pail",
5
5
  "type": "module",
6
6
  "files": [
@@ -29,7 +29,7 @@
29
29
  "@ipld/car": "^5.2.0",
30
30
  "@ipld/dag-cbor": "^9.2.5",
31
31
  "@storacha/client": "^2.0.4",
32
- "@storacha/md-merge": "0.6.0",
32
+ "@storacha/md-merge": "0.7.0",
33
33
  "@storacha/ucn": "1.1.1-rc.3",
34
34
  "@storacha/upload-client": "^1.3.9",
35
35
  "@ucanto/interface": "^11.0.1",