@dxos/echo-pipeline 0.3.8 → 0.3.9-main.03b62b6

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 (40) hide show
  1. package/dist/lib/browser/{chunk-IYY5JG5Q.mjs → chunk-CLHJJVQE.mjs} +221 -54
  2. package/dist/lib/browser/chunk-CLHJJVQE.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +3 -1
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/testing/index.mjs +8 -3
  6. package/dist/lib/browser/testing/index.mjs.map +3 -3
  7. package/dist/lib/node/{chunk-AW6AYBUE.cjs → chunk-XWUUSV4Y.cjs} +222 -56
  8. package/dist/lib/node/chunk-XWUUSV4Y.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +27 -25
  10. package/dist/lib/node/index.cjs.map +2 -2
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/testing/index.cjs +19 -15
  13. package/dist/lib/node/testing/index.cjs.map +3 -3
  14. package/dist/types/src/automerge/automerge-host.d.ts +15 -0
  15. package/dist/types/src/automerge/automerge-host.d.ts.map +1 -0
  16. package/dist/types/src/automerge/automerge-host.test.d.ts +2 -0
  17. package/dist/types/src/automerge/automerge-host.test.d.ts.map +1 -0
  18. package/dist/types/src/automerge/index.d.ts +2 -0
  19. package/dist/types/src/automerge/index.d.ts.map +1 -0
  20. package/dist/types/src/db-host/data-service.d.ts +3 -1
  21. package/dist/types/src/db-host/data-service.d.ts.map +1 -1
  22. package/dist/types/src/index.d.ts +1 -0
  23. package/dist/types/src/index.d.ts.map +1 -1
  24. package/dist/types/src/space/data-pipeline.d.ts +4 -0
  25. package/dist/types/src/space/data-pipeline.d.ts.map +1 -1
  26. package/dist/types/src/space/space-protocol.d.ts +2 -1
  27. package/dist/types/src/space/space-protocol.d.ts.map +1 -1
  28. package/dist/types/src/testing/util.d.ts.map +1 -1
  29. package/package.json +32 -31
  30. package/src/automerge/automerge-host.test.ts +42 -0
  31. package/src/automerge/automerge-host.ts +212 -0
  32. package/src/automerge/index.ts +5 -0
  33. package/src/db-host/data-service.ts +5 -1
  34. package/src/index.ts +1 -0
  35. package/src/space/data-pipeline.ts +10 -0
  36. package/src/space/space-protocol.ts +6 -3
  37. package/src/testing/util.ts +4 -1
  38. package/src/tests/database.test.ts +4 -1
  39. package/dist/lib/browser/chunk-IYY5JG5Q.mjs.map +0 -7
  40. package/dist/lib/node/chunk-AW6AYBUE.cjs.map +0 -7
@@ -26,10 +26,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_AW6AYBUE_exports = {};
30
- __export(chunk_AW6AYBUE_exports, {
29
+ var chunk_XWUUSV4Y_exports = {};
30
+ __export(chunk_XWUUSV4Y_exports, {
31
31
  AuthExtension: () => AuthExtension,
32
32
  AuthStatus: () => AuthStatus,
33
+ AutomergeHost: () => AutomergeHost,
33
34
  DataPipeline: () => DataPipeline,
34
35
  DataServiceHost: () => DataServiceHost,
35
36
  DataServiceImpl: () => DataServiceImpl,
@@ -53,7 +54,7 @@ __export(chunk_AW6AYBUE_exports, {
53
54
  startAfter: () => startAfter,
54
55
  valueEncoding: () => valueEncoding
55
56
  });
56
- module.exports = __toCommonJS(chunk_AW6AYBUE_exports);
57
+ module.exports = __toCommonJS(chunk_XWUUSV4Y_exports);
57
58
  var import_hypercore = require("@dxos/hypercore");
58
59
  var import_protocols = require("@dxos/protocols");
59
60
  var import_invariant = require("@dxos/invariant");
@@ -146,9 +147,13 @@ var import_keys7 = require("@dxos/keys");
146
147
  var import_log12 = require("@dxos/log");
147
148
  var import_protocols7 = require("@dxos/protocols");
148
149
  var import_util9 = require("@dxos/util");
150
+ var import_automerge_repo = require("@dxos/automerge/automerge-repo");
151
+ var import_codec_protobuf2 = require("@dxos/codec-protobuf");
152
+ var import_invariant10 = require("@dxos/invariant");
153
+ var import_util10 = require("@dxos/util");
149
154
  var codec = import_protocols.schema.getCodecForType("dxos.echo.feed.FeedMessage");
150
155
  var valueEncoding = (0, import_hypercore.createCodecEncoding)(codec);
151
- var __dxlog_file = "/home/circleci/project/packages/core/echo/echo-pipeline/src/common/feeds.ts";
156
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/common/feeds.ts";
152
157
  var createMappedFeedWriter = (mapper, writer) => {
153
158
  (0, import_invariant.invariant)(mapper, void 0, {
154
159
  F: __dxlog_file,
@@ -172,7 +177,7 @@ var createMappedFeedWriter = (mapper, writer) => {
172
177
  write: async (data, options) => await writer.write(await mapper(data), options)
173
178
  };
174
179
  };
175
- var __dxlog_file2 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/db-host/data-service-host.ts";
180
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/db-host/data-service-host.ts";
176
181
  var MUTATION_LIMIT_PER_OBJECT = 10;
177
182
  var DataServiceHost = class {
178
183
  constructor(_itemManager, _itemDemuxer, _flush, _writeStream, _opts = {}) {
@@ -478,7 +483,7 @@ var SnapshotStore = class {
478
483
  }));
479
484
  }
480
485
  };
481
- var __dxlog_file3 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/db-host/data-service.ts";
486
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/db-host/data-service.ts";
482
487
  var DataServiceSubscriptions = class {
483
488
  constructor() {
484
489
  this._spaces = new import_util2.ComplexMap(import_keys2.PublicKey.hash);
@@ -491,13 +496,13 @@ var DataServiceSubscriptions = class {
491
496
  spaceKey
492
497
  }, {
493
498
  F: __dxlog_file3,
494
- L: 33,
499
+ L: 34,
495
500
  S: this,
496
501
  C: (f, a) => f(...a)
497
502
  });
498
503
  (0, import_invariant3.invariant)(!this._spaces.has(spaceKey), void 0, {
499
504
  F: __dxlog_file3,
500
- L: 34,
505
+ L: 35,
501
506
  S: this,
502
507
  A: [
503
508
  "!this._spaces.has(spaceKey)",
@@ -512,7 +517,7 @@ var DataServiceSubscriptions = class {
512
517
  spaceKey
513
518
  }, {
514
519
  F: __dxlog_file3,
515
- L: 40,
520
+ L: 41,
516
521
  S: this,
517
522
  C: (f, a) => f(...a)
518
523
  });
@@ -525,13 +530,14 @@ var DataServiceSubscriptions = class {
525
530
  }
526
531
  };
527
532
  var DataServiceImpl = class {
528
- constructor(_subscriptions) {
533
+ constructor(_subscriptions, _automergeHost) {
529
534
  this._subscriptions = _subscriptions;
535
+ this._automergeHost = _automergeHost;
530
536
  }
531
537
  subscribe(request) {
532
538
  (0, import_invariant3.invariant)(request.spaceKey, void 0, {
533
539
  F: __dxlog_file3,
534
- L: 59,
540
+ L: 63,
535
541
  S: this,
536
542
  A: [
537
543
  "request.spaceKey",
@@ -544,7 +550,7 @@ var DataServiceImpl = class {
544
550
  write(request) {
545
551
  (0, import_invariant3.invariant)(request.spaceKey, void 0, {
546
552
  F: __dxlog_file3,
547
- L: 66,
553
+ L: 70,
548
554
  S: this,
549
555
  A: [
550
556
  "request.spaceKey",
@@ -553,7 +559,7 @@ var DataServiceImpl = class {
553
559
  });
554
560
  (0, import_invariant3.invariant)(request.batch, void 0, {
555
561
  F: __dxlog_file3,
556
- L: 67,
562
+ L: 71,
557
563
  S: this,
558
564
  A: [
559
565
  "request.batch",
@@ -566,7 +572,7 @@ var DataServiceImpl = class {
566
572
  flush(request) {
567
573
  (0, import_invariant3.invariant)(request.spaceKey, void 0, {
568
574
  F: __dxlog_file3,
569
- L: 74,
575
+ L: 78,
570
576
  S: this,
571
577
  A: [
572
578
  "request.spaceKey",
@@ -593,7 +599,7 @@ function _ts_decorate(decorators, target, key, desc) {
593
599
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
594
600
  return c > 3 && r && Object.defineProperty(target, key, r), r;
595
601
  }
596
- var __dxlog_file4 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts";
602
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/metadata/metadata-store.ts";
597
603
  var emptyEchoMetadata = () => ({
598
604
  version: import_protocols4.STORAGE_VERSION,
599
605
  spaces: [],
@@ -887,7 +893,7 @@ function _ts_decorate2(decorators, target, key, desc) {
887
893
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
888
894
  return c > 3 && r && Object.defineProperty(target, key, r), r;
889
895
  }
890
- var __dxlog_file5 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts";
896
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/timeframe-clock.ts";
891
897
  var mapTimeframeToFeedIndexes = (timeframe) => timeframe.frames().map(([feedKey, index]) => ({
892
898
  feedKey,
893
899
  index
@@ -968,7 +974,7 @@ var TimeframeClock = class {
968
974
  _ts_decorate2([
969
975
  (0, import_debug2.timed)(5e3)
970
976
  ], TimeframeClock.prototype, "waitUntilReached", null);
971
- var __dxlog_file6 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts";
977
+ var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/message-selector.ts";
972
978
  var createMessageSelector = (timeframeClock) => {
973
979
  return (messages) => {
974
980
  for (let i = 0; i < messages.length; i++) {
@@ -1004,7 +1010,7 @@ function _ts_decorate3(decorators, target, key, desc) {
1004
1010
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1005
1011
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1006
1012
  }
1007
- var __dxlog_file7 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts";
1013
+ var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/pipeline/pipeline.ts";
1008
1014
  var PipelineState = class {
1009
1015
  constructor(_feeds, _timeframeClock) {
1010
1016
  this._feeds = _feeds;
@@ -1404,7 +1410,7 @@ _ts_decorate3([
1404
1410
  _ts_decorate3([
1405
1411
  import_async4.synchronized
1406
1412
  ], Pipeline.prototype, "unpause", null);
1407
- var __dxlog_file8 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/space/auth.ts";
1413
+ var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/auth.ts";
1408
1414
  var AuthExtension = class extends import_teleport.RpcExtension {
1409
1415
  constructor(_authParams) {
1410
1416
  super({
@@ -1512,7 +1518,7 @@ function _ts_decorate4(decorators, target, key, desc) {
1512
1518
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1513
1519
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1514
1520
  }
1515
- var __dxlog_file9 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/space/data-pipeline.ts";
1521
+ var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/data-pipeline.ts";
1516
1522
  var MESSAGES_PER_SNAPSHOT = 10;
1517
1523
  var AUTOMATIC_SNAPSHOT_DEBOUNCE_INTERVAL = 5e3;
1518
1524
  var TIMEFRAME_SAVE_DEBOUNCE_INTERVAL = 5e3;
@@ -1570,7 +1576,7 @@ var DataPipeline = class DataPipeline2 {
1570
1576
  write: (data, options) => {
1571
1577
  (0, import_invariant8.invariant)(this._pipeline, "Pipeline is not initialized.", {
1572
1578
  F: __dxlog_file9,
1573
- L: 159,
1579
+ L: 164,
1574
1580
  S: this,
1575
1581
  A: [
1576
1582
  "this._pipeline",
@@ -1579,7 +1585,7 @@ var DataPipeline = class DataPipeline2 {
1579
1585
  });
1580
1586
  (0, import_invariant8.invariant)(this.currentEpoch, "Epoch is not initialized.", {
1581
1587
  F: __dxlog_file9,
1582
- L: 160,
1588
+ L: 165,
1583
1589
  S: this,
1584
1590
  A: [
1585
1591
  "this.currentEpoch",
@@ -1605,7 +1611,7 @@ var DataPipeline = class DataPipeline2 {
1605
1611
  }
1606
1612
  (0, import_log8.log)("close", void 0, {
1607
1613
  F: __dxlog_file9,
1608
- L: 184,
1614
+ L: 189,
1609
1615
  S: this,
1610
1616
  C: (f, a) => f(...a)
1611
1617
  });
@@ -1620,7 +1626,7 @@ var DataPipeline = class DataPipeline2 {
1620
1626
  } catch (err) {
1621
1627
  import_log8.log.catch(err, void 0, {
1622
1628
  F: __dxlog_file9,
1623
- L: 197,
1629
+ L: 202,
1624
1630
  S: this,
1625
1631
  C: (f, a) => f(...a)
1626
1632
  });
@@ -1645,7 +1651,7 @@ var DataPipeline = class DataPipeline2 {
1645
1651
  let messageCounter = 0;
1646
1652
  (0, import_invariant8.invariant)(this._pipeline, "Pipeline is not initialized.", {
1647
1653
  F: __dxlog_file9,
1648
- L: 223,
1654
+ L: 228,
1649
1655
  S: this,
1650
1656
  A: [
1651
1657
  "this._pipeline",
@@ -1661,7 +1667,7 @@ var DataPipeline = class DataPipeline2 {
1661
1667
  seq
1662
1668
  }, {
1663
1669
  F: __dxlog_file9,
1664
- L: 229,
1670
+ L: 234,
1665
1671
  S: this,
1666
1672
  C: (f, a) => f(...a)
1667
1673
  });
@@ -1673,7 +1679,7 @@ var DataPipeline = class DataPipeline2 {
1673
1679
  feedKey
1674
1680
  }, {
1675
1681
  F: __dxlog_file9,
1676
- L: 235,
1682
+ L: 240,
1677
1683
  S: this,
1678
1684
  C: (f, a) => f(...a)
1679
1685
  });
@@ -1696,7 +1702,7 @@ var DataPipeline = class DataPipeline2 {
1696
1702
  spaceKey: this._params.spaceKey.toHex()
1697
1703
  }, {
1698
1704
  F: __dxlog_file9,
1699
- L: 252,
1705
+ L: 257,
1700
1706
  S: this,
1701
1707
  C: (f, a) => f(...a)
1702
1708
  });
@@ -1705,7 +1711,7 @@ var DataPipeline = class DataPipeline2 {
1705
1711
  } catch (err) {
1706
1712
  import_log8.log.catch(err, void 0, {
1707
1713
  F: __dxlog_file9,
1708
- L: 262,
1714
+ L: 267,
1709
1715
  S: this,
1710
1716
  C: (f, a) => f(...a)
1711
1717
  });
@@ -1720,7 +1726,7 @@ var DataPipeline = class DataPipeline2 {
1720
1726
  _createSnapshot() {
1721
1727
  (0, import_invariant8.invariant)(this.databaseHost, "Database backend is not initialized.", {
1722
1728
  F: __dxlog_file9,
1723
- L: 276,
1729
+ L: 281,
1724
1730
  S: this,
1725
1731
  A: [
1726
1732
  "this.databaseHost",
@@ -1749,7 +1755,7 @@ var DataPipeline = class DataPipeline2 {
1749
1755
  } catch (err) {
1750
1756
  import_log8.log.warn("Failed to cache properties", err, {
1751
1757
  F: __dxlog_file9,
1752
- L: 305,
1758
+ L: 310,
1753
1759
  S: this,
1754
1760
  C: (f, a) => f(...a)
1755
1761
  });
@@ -1778,14 +1784,14 @@ var DataPipeline = class DataPipeline2 {
1778
1784
  if (err instanceof import_protocols6.CancelledError) {
1779
1785
  (0, import_log8.log)("Epoch processing cancelled.", void 0, {
1780
1786
  F: __dxlog_file9,
1781
- L: 341,
1787
+ L: 346,
1782
1788
  S: this,
1783
1789
  C: (f, a) => f(...a)
1784
1790
  });
1785
1791
  } else {
1786
1792
  import_log8.log.catch(err, void 0, {
1787
1793
  F: __dxlog_file9,
1788
- L: 343,
1794
+ L: 348,
1789
1795
  S: this,
1790
1796
  C: (f, a) => f(...a)
1791
1797
  });
@@ -1798,6 +1804,9 @@ var DataPipeline = class DataPipeline2 {
1798
1804
  return;
1799
1805
  }
1800
1806
  await this._processEpoch(ctx, epoch.subject.assertion);
1807
+ if (epoch.subject.assertion.snapshotCid === void 0) {
1808
+ epoch.subject.assertion.snapshotCid = this.appliedEpoch?.subject.assertion.snapshotCid;
1809
+ }
1801
1810
  this.appliedEpoch = epoch;
1802
1811
  this.onNewEpoch.emit(epoch);
1803
1812
  });
@@ -1805,7 +1814,7 @@ var DataPipeline = class DataPipeline2 {
1805
1814
  async _processEpoch(ctx, epoch) {
1806
1815
  (0, import_invariant8.invariant)(this._isOpen, "Space is closed.", {
1807
1816
  F: __dxlog_file9,
1808
- L: 362,
1817
+ L: 372,
1809
1818
  S: this,
1810
1819
  A: [
1811
1820
  "this._isOpen",
@@ -1814,7 +1823,7 @@ var DataPipeline = class DataPipeline2 {
1814
1823
  });
1815
1824
  (0, import_invariant8.invariant)(this._pipeline, void 0, {
1816
1825
  F: __dxlog_file9,
1817
- L: 363,
1826
+ L: 373,
1818
1827
  S: this,
1819
1828
  A: [
1820
1829
  "this._pipeline",
@@ -1826,7 +1835,7 @@ var DataPipeline = class DataPipeline2 {
1826
1835
  epoch: (0, import_log8.omit)(epoch, "proof")
1827
1836
  }, {
1828
1837
  F: __dxlog_file9,
1829
- L: 366,
1838
+ L: 376,
1830
1839
  S: this,
1831
1840
  C: (f, a) => f(...a)
1832
1841
  });
@@ -1836,7 +1845,7 @@ var DataPipeline = class DataPipeline2 {
1836
1845
  }
1837
1846
  (0, import_log8.log)("restarting pipeline from epoch", void 0, {
1838
1847
  F: __dxlog_file9,
1839
- L: 372,
1848
+ L: 382,
1840
1849
  S: this,
1841
1850
  C: (f, a) => f(...a)
1842
1851
  });
@@ -1847,7 +1856,7 @@ var DataPipeline = class DataPipeline2 {
1847
1856
  async waitUntilTimeframe(timeframe) {
1848
1857
  (0, import_invariant8.invariant)(this._pipeline, "Pipeline is not initialized.", {
1849
1858
  F: __dxlog_file9,
1850
- L: 379,
1859
+ L: 389,
1851
1860
  S: this,
1852
1861
  A: [
1853
1862
  "this._pipeline",
@@ -1859,7 +1868,7 @@ var DataPipeline = class DataPipeline2 {
1859
1868
  async createEpoch() {
1860
1869
  (0, import_invariant8.invariant)(this._pipeline, void 0, {
1861
1870
  F: __dxlog_file9,
1862
- L: 385,
1871
+ L: 395,
1863
1872
  S: this,
1864
1873
  A: [
1865
1874
  "this._pipeline",
@@ -1868,7 +1877,7 @@ var DataPipeline = class DataPipeline2 {
1868
1877
  });
1869
1878
  (0, import_invariant8.invariant)(this.currentEpoch, void 0, {
1870
1879
  F: __dxlog_file9,
1871
- L: 386,
1880
+ L: 396,
1872
1881
  S: this,
1873
1882
  A: [
1874
1883
  "this.currentEpoch",
@@ -1899,7 +1908,7 @@ var DataPipeline = class DataPipeline2 {
1899
1908
  } catch (err) {
1900
1909
  import_log8.log.catch(err, void 0, {
1901
1910
  F: __dxlog_file9,
1902
- L: 416,
1911
+ L: 426,
1903
1912
  S: this,
1904
1913
  C: (f, a) => f(...a)
1905
1914
  });
@@ -1964,7 +1973,7 @@ function _ts_decorate5(decorators, target, key, desc) {
1964
1973
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1965
1974
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1966
1975
  }
1967
- var __dxlog_file10 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/space/control-pipeline.ts";
1976
+ var __dxlog_file10 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/control-pipeline.ts";
1968
1977
  var TIMEFRAME_SAVE_DEBOUNCE_INTERVAL2 = 500;
1969
1978
  var CONTROL_PIPELINE_SNAPSHOT_DELAY = 1e4;
1970
1979
  var USE_SNAPSHOTS = true;
@@ -2211,7 +2220,7 @@ function _ts_decorate6(decorators, target, key, desc) {
2211
2220
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2212
2221
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2213
2222
  }
2214
- var __dxlog_file11 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/space/space.ts";
2223
+ var __dxlog_file11 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space.ts";
2215
2224
  var Space = class Space2 {
2216
2225
  constructor(params) {
2217
2226
  this._addFeedLock = new import_async7.Lock();
@@ -2458,13 +2467,14 @@ function _ts_decorate7(decorators, target, key, desc) {
2458
2467
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2459
2468
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2460
2469
  }
2461
- var __dxlog_file12 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/space/space-protocol.ts";
2470
+ var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space-protocol.ts";
2462
2471
  var MOCK_AUTH_PROVIDER = async (nonce) => Buffer.from("mock");
2463
2472
  var MOCK_AUTH_VERIFIER = async (nonce, credential) => true;
2464
2473
  var SpaceProtocol = class {
2465
2474
  constructor({ topic, swarmIdentity, networkManager, onSessionAuth, onAuthFailure, blobStore }) {
2466
2475
  this._feeds = /* @__PURE__ */ new Set();
2467
2476
  this._sessions = new import_util8.ComplexMap(import_keys6.PublicKey.hash);
2477
+ this._spaceKey = topic;
2468
2478
  this._networkManager = networkManager;
2469
2479
  this._swarmIdentity = swarmIdentity;
2470
2480
  this._onSessionAuth = onSessionAuth;
@@ -2489,7 +2499,7 @@ var SpaceProtocol = class {
2489
2499
  key: feed.key
2490
2500
  }, {
2491
2501
  F: __dxlog_file12,
2492
- L: 96,
2502
+ L: 99,
2493
2503
  S: this,
2494
2504
  C: (f, a) => f(...a)
2495
2505
  });
@@ -2512,7 +2522,7 @@ var SpaceProtocol = class {
2512
2522
  await this.blobSync.open();
2513
2523
  (0, import_log11.log)("starting...", void 0, {
2514
2524
  F: __dxlog_file12,
2515
- L: 122,
2525
+ L: 125,
2516
2526
  S: this,
2517
2527
  C: (f, a) => f(...a)
2518
2528
  });
@@ -2522,11 +2532,11 @@ var SpaceProtocol = class {
2522
2532
  peerId: this._swarmIdentity.peerKey,
2523
2533
  topic,
2524
2534
  topology: new import_network_manager.MMSTTopology(topologyConfig),
2525
- label: `space swarm ${topic.truncate()}`
2535
+ label: `swarm ${topic.truncate()} for space ${this._spaceKey.truncate()}`
2526
2536
  });
2527
2537
  (0, import_log11.log)("started", void 0, {
2528
2538
  F: __dxlog_file12,
2529
- L: 132,
2539
+ L: 135,
2530
2540
  S: this,
2531
2541
  C: (f, a) => f(...a)
2532
2542
  });
@@ -2536,14 +2546,14 @@ var SpaceProtocol = class {
2536
2546
  if (this._connection) {
2537
2547
  (0, import_log11.log)("stopping...", void 0, {
2538
2548
  F: __dxlog_file12,
2539
- L: 139,
2549
+ L: 142,
2540
2550
  S: this,
2541
2551
  C: (f, a) => f(...a)
2542
2552
  });
2543
2553
  await this._connection.close();
2544
2554
  (0, import_log11.log)("stopped", void 0, {
2545
2555
  F: __dxlog_file12,
2546
- L: 141,
2556
+ L: 144,
2547
2557
  S: this,
2548
2558
  C: (f, a) => f(...a)
2549
2559
  });
@@ -2601,15 +2611,15 @@ var SpaceProtocolSession = class {
2601
2611
  get stream() {
2602
2612
  return this._teleport.stream;
2603
2613
  }
2604
- async open() {
2605
- await this._teleport.open();
2614
+ async open(sessionId) {
2615
+ await this._teleport.open(sessionId);
2606
2616
  this._teleport.addExtension("dxos.mesh.teleport.auth", new AuthExtension({
2607
2617
  provider: this._swarmIdentity.credentialProvider,
2608
2618
  verifier: this._swarmIdentity.credentialAuthenticator,
2609
2619
  onAuthSuccess: () => {
2610
2620
  (0, import_log11.log)("Peer authenticated", void 0, {
2611
2621
  F: __dxlog_file12,
2612
- L: 238,
2622
+ L: 241,
2613
2623
  S: this,
2614
2624
  C: (f, a) => f(...a)
2615
2625
  });
@@ -2627,7 +2637,7 @@ var SpaceProtocolSession = class {
2627
2637
  async close() {
2628
2638
  (0, import_log11.log)("close", void 0, {
2629
2639
  F: __dxlog_file12,
2630
- L: 254,
2640
+ L: 257,
2631
2641
  S: this,
2632
2642
  C: (f, a) => f(...a)
2633
2643
  });
@@ -2653,7 +2663,7 @@ function _ts_decorate8(decorators, target, key, desc) {
2653
2663
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2654
2664
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2655
2665
  }
2656
- var __dxlog_file13 = "/home/circleci/project/packages/core/echo/echo-pipeline/src/space/space-manager.ts";
2666
+ var __dxlog_file13 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/space/space-manager.ts";
2657
2667
  var SpaceManager = class SpaceManager2 {
2658
2668
  constructor({ feedStore, networkManager, modelFactory, metadataStore, snapshotStore, blobStore }) {
2659
2669
  this._spaces = new import_util9.ComplexMap(import_keys7.PublicKey.hash);
@@ -2735,10 +2745,166 @@ _ts_decorate8([
2735
2745
  SpaceManager = _ts_decorate8([
2736
2746
  (0, import_async9.trackLeaks)("open", "close")
2737
2747
  ], SpaceManager);
2748
+ var __dxlog_file14 = "/home/runner/work/dxos/dxos/packages/core/echo/echo-pipeline/src/automerge/automerge-host.ts";
2749
+ var AutomergeHost = class {
2750
+ constructor(storageDirectory) {
2751
+ this._meshNetwork = new MeshNetworkAdapter();
2752
+ this._clientNetwork = new LocalHostNetworkAdapter();
2753
+ this._storage = new AutomergeStorageAdapter(storageDirectory);
2754
+ this._repo = new import_automerge_repo.Repo({
2755
+ network: [
2756
+ // this._meshNetwork,
2757
+ this._clientNetwork
2758
+ ],
2759
+ storage: this._storage,
2760
+ // TODO(dmaretskyi): Share based on HALO permissions and space affinity.
2761
+ sharePolicy: async (peerId, documentId) => true
2762
+ });
2763
+ }
2764
+ get repo() {
2765
+ return this._repo;
2766
+ }
2767
+ syncRepo(request) {
2768
+ return this._clientNetwork.syncRepo(request);
2769
+ }
2770
+ sendSyncMessage(request) {
2771
+ return this._clientNetwork.sendSyncMessage(request);
2772
+ }
2773
+ };
2774
+ var LocalHostNetworkAdapter = class extends import_automerge_repo.NetworkAdapter {
2775
+ constructor() {
2776
+ super();
2777
+ this._peers = /* @__PURE__ */ new Map();
2778
+ this.emit("ready", {
2779
+ network: this
2780
+ });
2781
+ }
2782
+ connect(peerId) {
2783
+ }
2784
+ send(message) {
2785
+ const peer = this._peers.get(message.targetId);
2786
+ (0, import_invariant10.invariant)(peer, "Peer not found.", {
2787
+ F: __dxlog_file14,
2788
+ L: 83,
2789
+ S: this,
2790
+ A: [
2791
+ "peer",
2792
+ "'Peer not found.'"
2793
+ ]
2794
+ });
2795
+ peer.send(message);
2796
+ }
2797
+ disconnect() {
2798
+ throw new Error("Method not implemented.");
2799
+ }
2800
+ syncRepo({ id, syncMessage }) {
2801
+ const peerId = this._getPeerId(id);
2802
+ return new import_codec_protobuf2.Stream(({ next, close }) => {
2803
+ (0, import_invariant10.invariant)(!this._peers.has(peerId), "Peer already connected.", {
2804
+ F: __dxlog_file14,
2805
+ L: 95,
2806
+ S: this,
2807
+ A: [
2808
+ "!this._peers.has(peerId)",
2809
+ "'Peer already connected.'"
2810
+ ]
2811
+ });
2812
+ this._peers.set(peerId, {
2813
+ connected: true,
2814
+ send: (message) => {
2815
+ next({
2816
+ syncMessage: import_automerge_repo.cbor.encode(message)
2817
+ });
2818
+ },
2819
+ disconnect: () => {
2820
+ this._peers.delete(peerId);
2821
+ close();
2822
+ this.emit("peer-disconnected", {
2823
+ peerId
2824
+ });
2825
+ }
2826
+ });
2827
+ this.emit("peer-candidate", {
2828
+ peerId
2829
+ });
2830
+ });
2831
+ }
2832
+ async sendSyncMessage({ id, syncMessage }) {
2833
+ const message = import_automerge_repo.cbor.decode(syncMessage);
2834
+ this.emit("message", message);
2835
+ }
2836
+ _getPeerId(id) {
2837
+ return id;
2838
+ }
2839
+ };
2840
+ var MeshNetworkAdapter = class extends import_automerge_repo.NetworkAdapter {
2841
+ connect(peerId) {
2842
+ throw new Error("Method not implemented.");
2843
+ }
2844
+ send(message) {
2845
+ throw new Error("Method not implemented.");
2846
+ }
2847
+ disconnect() {
2848
+ throw new Error("Method not implemented.");
2849
+ }
2850
+ };
2851
+ var AutomergeStorageAdapter = class extends import_automerge_repo.StorageAdapter {
2852
+ constructor(_directory) {
2853
+ super();
2854
+ this._directory = _directory;
2855
+ }
2856
+ async load(key) {
2857
+ const filename = this._getFilename(key);
2858
+ const file = this._directory.getOrCreateFile(filename);
2859
+ const { size } = await file.stat();
2860
+ const buffer = await file.read(0, size);
2861
+ return (0, import_util10.bufferToArray)(buffer);
2862
+ }
2863
+ async save(key, data) {
2864
+ const filename = this._getFilename(key);
2865
+ const file = this._directory.getOrCreateFile(filename);
2866
+ await file.write(0, (0, import_util10.arrayToBuffer)(data));
2867
+ await file.truncate?.(data.length);
2868
+ await file.flush?.();
2869
+ }
2870
+ async remove(key) {
2871
+ const filename = this._getFilename(key);
2872
+ const file = this._directory.getOrCreateFile(filename);
2873
+ await file.truncate?.(0);
2874
+ }
2875
+ async loadRange(keyPrefix) {
2876
+ const filename = this._getFilename(keyPrefix);
2877
+ const entries = await this._directory.list();
2878
+ return Promise.all(entries.filter((entry) => entry.startsWith(filename)).map(async (entry) => {
2879
+ const file = this._directory.getOrCreateFile(entry);
2880
+ const { size } = await file.stat();
2881
+ const buffer = await file.read(0, size);
2882
+ return {
2883
+ key: this._getKeyFromFilename(entry),
2884
+ data: (0, import_util10.bufferToArray)(buffer)
2885
+ };
2886
+ }));
2887
+ }
2888
+ async removeRange(keyPrefix) {
2889
+ const filename = this._getFilename(keyPrefix);
2890
+ const entries = await this._directory.list();
2891
+ await Promise.all(entries.filter((entry) => entry.startsWith(filename)).map(async (entry) => {
2892
+ const file = this._directory.getOrCreateFile(filename);
2893
+ await file.truncate?.(0);
2894
+ }));
2895
+ }
2896
+ _getFilename(key) {
2897
+ return key.map((k) => k.replaceAll("%", "%25").replaceAll("-", "%2D")).join("-");
2898
+ }
2899
+ _getKeyFromFilename(filename) {
2900
+ return filename.split("-").map((k) => k.replaceAll("%2D", "-").replaceAll("%25", "%"));
2901
+ }
2902
+ };
2738
2903
  // Annotate the CommonJS export names for ESM import in node:
2739
2904
  0 && (module.exports = {
2740
2905
  AuthExtension,
2741
2906
  AuthStatus,
2907
+ AutomergeHost,
2742
2908
  DataPipeline,
2743
2909
  DataServiceHost,
2744
2910
  DataServiceImpl,
@@ -2762,4 +2928,4 @@ SpaceManager = _ts_decorate8([
2762
2928
  startAfter,
2763
2929
  valueEncoding
2764
2930
  });
2765
- //# sourceMappingURL=chunk-AW6AYBUE.cjs.map
2931
+ //# sourceMappingURL=chunk-XWUUSV4Y.cjs.map