@dxos/client-services 0.5.9-main.405fda7 → 0.5.9-main.44fe51d

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 (33) hide show
  1. package/dist/lib/browser/{chunk-NBUF5LMA.mjs → chunk-A4GBBLY6.mjs} +570 -438
  2. package/dist/lib/browser/chunk-A4GBBLY6.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +1 -3
  4. package/dist/lib/browser/index.mjs.map +1 -1
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/packlets/testing/index.mjs +1 -1
  7. package/dist/lib/node/{chunk-CMHCDXY6.cjs → chunk-X2MLOLTD.cjs} +676 -547
  8. package/dist/lib/node/chunk-X2MLOLTD.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +41 -43
  10. package/dist/lib/node/index.cjs.map +1 -1
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/packlets/testing/index.cjs +8 -8
  13. package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
  14. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts +4 -1
  15. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts.map +1 -1
  16. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  17. package/dist/types/src/packlets/spaces/data-space.d.ts +9 -9
  18. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  19. package/dist/types/src/packlets/spaces/epoch-migrations.d.ts +23 -0
  20. package/dist/types/src/packlets/spaces/epoch-migrations.d.ts.map +1 -0
  21. package/dist/types/src/packlets/spaces/spaces-service.d.ts +2 -2
  22. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  23. package/dist/types/src/version.d.ts +1 -1
  24. package/package.json +36 -36
  25. package/src/packlets/identity/identity-service.ts +6 -1
  26. package/src/packlets/spaces/automerge-space-state.ts +11 -2
  27. package/src/packlets/spaces/data-space-manager.ts +34 -13
  28. package/src/packlets/spaces/data-space.ts +73 -145
  29. package/src/packlets/spaces/epoch-migrations.ts +135 -0
  30. package/src/packlets/spaces/spaces-service.ts +4 -2
  31. package/src/version.ts +1 -1
  32. package/dist/lib/browser/chunk-NBUF5LMA.mjs.map +0 -7
  33. package/dist/lib/node/chunk-CMHCDXY6.cjs.map +0 -7
@@ -26,8 +26,8 @@ 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_CMHCDXY6_exports = {};
30
- __export(chunk_CMHCDXY6_exports, {
29
+ var chunk_X2MLOLTD_exports = {};
30
+ __export(chunk_X2MLOLTD_exports, {
31
31
  ClientRpcServer: () => ClientRpcServer,
32
32
  ClientServicesHost: () => ClientServicesHost,
33
33
  ClientServicesProviderResource: () => ClientServicesProviderResource,
@@ -56,7 +56,6 @@ __export(chunk_CMHCDXY6_exports, {
56
56
  createDiagnostics: () => createDiagnostics,
57
57
  createLevel: () => createLevel,
58
58
  createStorageObjects: () => createStorageObjects,
59
- findPropertiesObject: () => findPropertiesObject,
60
59
  getNetworkPeers: () => getNetworkPeers,
61
60
  isLocked: () => isLocked,
62
61
  subscribeToFeedBlocks: () => subscribeToFeedBlocks,
@@ -67,7 +66,7 @@ __export(chunk_CMHCDXY6_exports, {
67
66
  subscribeToSpaces: () => subscribeToSpaces,
68
67
  subscribeToSwarmInfo: () => subscribeToSwarmInfo
69
68
  });
70
- module.exports = __toCommonJS(chunk_CMHCDXY6_exports);
69
+ module.exports = __toCommonJS(chunk_X2MLOLTD_exports);
71
70
  var import_async = require("@dxos/async");
72
71
  var import_codec_protobuf = require("@dxos/codec-protobuf");
73
72
  var import_feed_store = require("@dxos/feed-store");
@@ -197,7 +196,7 @@ var import_client_protocol4 = require("@dxos/client-protocol");
197
196
  var import_context10 = require("@dxos/context");
198
197
  var import_debug3 = require("@dxos/debug");
199
198
  var import_echo_pipeline2 = require("@dxos/echo-pipeline");
200
- var import_echo_schema = require("@dxos/echo-schema");
199
+ var import_echo_protocol = require("@dxos/echo-protocol");
201
200
  var import_invariant12 = require("@dxos/invariant");
202
201
  var import_keys10 = require("@dxos/keys");
203
202
  var import_log11 = require("@dxos/log");
@@ -208,105 +207,117 @@ var import_timeframe3 = require("@dxos/timeframe");
208
207
  var import_tracing5 = require("@dxos/tracing");
209
208
  var import_util6 = require("@dxos/util");
210
209
  var import_async13 = require("@dxos/async");
210
+ var import_context11 = require("@dxos/context");
211
211
  var import_credentials14 = require("@dxos/credentials");
212
212
  var import_async14 = require("@dxos/async");
213
- var import_context11 = require("@dxos/context");
213
+ var import_automerge = require("@dxos/automerge/automerge");
214
+ var import_context12 = require("@dxos/context");
215
+ var import_echo_db = require("@dxos/echo-db");
216
+ var import_echo_pipeline3 = require("@dxos/echo-pipeline");
217
+ var import_echo_schema = require("@dxos/echo-schema");
214
218
  var import_invariant13 = require("@dxos/invariant");
215
- var import_keys11 = require("@dxos/keys");
216
219
  var import_log12 = require("@dxos/log");
217
- var import_protocols10 = require("@dxos/protocols");
218
- var import_teleport3 = require("@dxos/teleport");
220
+ var import_services13 = require("@dxos/protocols/proto/dxos/client/services");
219
221
  var import_util7 = require("@dxos/util");
220
222
  var import_async15 = require("@dxos/async");
223
+ var import_context13 = require("@dxos/context");
224
+ var import_invariant14 = require("@dxos/invariant");
225
+ var import_keys11 = require("@dxos/keys");
226
+ var import_log13 = require("@dxos/log");
227
+ var import_protocols10 = require("@dxos/protocols");
228
+ var import_teleport3 = require("@dxos/teleport");
229
+ var import_util8 = require("@dxos/util");
230
+ var import_async16 = require("@dxos/async");
221
231
  var import_client_protocol5 = require("@dxos/client-protocol");
222
- var import_context12 = require("@dxos/context");
232
+ var import_context14 = require("@dxos/context");
223
233
  var import_credentials15 = require("@dxos/credentials");
224
- var import_echo_pipeline3 = require("@dxos/echo-pipeline");
225
- var import_echo_protocol = require("@dxos/echo-protocol");
234
+ var import_echo_db2 = require("@dxos/echo-db");
235
+ var import_echo_pipeline4 = require("@dxos/echo-pipeline");
236
+ var import_echo_protocol2 = require("@dxos/echo-protocol");
226
237
  var import_echo_schema2 = require("@dxos/echo-schema");
227
- var import_invariant14 = require("@dxos/invariant");
238
+ var import_invariant15 = require("@dxos/invariant");
228
239
  var import_keys12 = require("@dxos/keys");
229
- var import_log13 = require("@dxos/log");
240
+ var import_log14 = require("@dxos/log");
230
241
  var import_protocols11 = require("@dxos/protocols");
231
- var import_services13 = require("@dxos/protocols/proto/dxos/client/services");
242
+ var import_services14 = require("@dxos/protocols/proto/dxos/client/services");
232
243
  var import_credentials16 = require("@dxos/protocols/proto/dxos/halo/credentials");
233
244
  var import_teleport_extension_gossip2 = require("@dxos/teleport-extension-gossip");
234
245
  var import_tracing6 = require("@dxos/tracing");
235
- var import_util8 = require("@dxos/util");
246
+ var import_util9 = require("@dxos/util");
236
247
  var import_credentials17 = require("@dxos/credentials");
237
248
  var import_debug4 = require("@dxos/debug");
238
249
  var import_credentials18 = require("@dxos/protocols/proto/dxos/halo/credentials");
239
250
  var import_timeframe4 = require("@dxos/timeframe");
240
- var import_async16 = require("@dxos/async");
251
+ var import_async17 = require("@dxos/async");
241
252
  var import_codec_protobuf11 = require("@dxos/codec-protobuf");
242
253
  var import_credentials19 = require("@dxos/credentials");
243
254
  var import_debug5 = require("@dxos/debug");
244
255
  var import_feed_store4 = require("@dxos/feed-store");
245
- var import_invariant15 = require("@dxos/invariant");
246
- var import_log14 = require("@dxos/log");
256
+ var import_invariant16 = require("@dxos/invariant");
257
+ var import_log15 = require("@dxos/log");
247
258
  var import_protocols12 = require("@dxos/protocols");
248
- var import_services14 = require("@dxos/protocols/proto/dxos/client/services");
259
+ var import_services15 = require("@dxos/protocols/proto/dxos/client/services");
249
260
  var import_tracing7 = require("@dxos/tracing");
250
- var import_async17 = require("@dxos/async");
251
- var import_context13 = require("@dxos/context");
261
+ var import_async18 = require("@dxos/async");
262
+ var import_context15 = require("@dxos/context");
252
263
  var import_credentials20 = require("@dxos/credentials");
253
264
  var import_debug6 = require("@dxos/debug");
254
- var import_echo_db = require("@dxos/echo-db");
255
- var import_echo_pipeline4 = require("@dxos/echo-pipeline");
265
+ var import_echo_db3 = require("@dxos/echo-db");
266
+ var import_echo_pipeline5 = require("@dxos/echo-pipeline");
256
267
  var import_feed_store5 = require("@dxos/feed-store");
257
- var import_invariant16 = require("@dxos/invariant");
268
+ var import_invariant17 = require("@dxos/invariant");
258
269
  var import_keyring = require("@dxos/keyring");
259
270
  var import_keys13 = require("@dxos/keys");
260
- var import_log15 = require("@dxos/log");
271
+ var import_log16 = require("@dxos/log");
261
272
  var import_protocols13 = require("@dxos/protocols");
262
- var import_services15 = require("@dxos/protocols/proto/dxos/client/services");
273
+ var import_services16 = require("@dxos/protocols/proto/dxos/client/services");
263
274
  var import_teleport_extension_object_sync = require("@dxos/teleport-extension-object-sync");
264
275
  var import_tracing8 = require("@dxos/tracing");
265
- var import_util9 = require("@dxos/util");
266
- var import_invariant17 = require("@dxos/invariant");
276
+ var import_util10 = require("@dxos/util");
277
+ var import_invariant18 = require("@dxos/invariant");
267
278
  var import_lock_file = require("@dxos/lock-file");
268
- var import_log16 = require("@dxos/log");
279
+ var import_log17 = require("@dxos/log");
269
280
  var import_protocols14 = require("@dxos/protocols");
270
281
  var import_config = require("@dxos/protocols/proto/dxos/config");
271
282
  var import_random_access_storage = require("@dxos/random-access-storage");
272
283
  var import_client_protocol6 = require("@dxos/client-protocol");
273
284
  var import_config2 = require("@dxos/protocols/proto/dxos/config");
274
- var import_util10 = require("@dxos/util");
285
+ var import_util11 = require("@dxos/util");
275
286
  var import_node_path = __toESM(require("node:path"));
276
287
  var import_keys14 = require("@dxos/keys");
277
288
  var import_kv_store = require("@dxos/kv-store");
278
- var import_async18 = require("@dxos/async");
289
+ var import_async19 = require("@dxos/async");
279
290
  var import_client_protocol7 = require("@dxos/client-protocol");
280
- var import_context14 = require("@dxos/context");
281
- var import_invariant18 = require("@dxos/invariant");
291
+ var import_context16 = require("@dxos/context");
292
+ var import_invariant19 = require("@dxos/invariant");
282
293
  var import_keys15 = require("@dxos/keys");
283
- var import_log17 = require("@dxos/log");
294
+ var import_log18 = require("@dxos/log");
284
295
  var import_messaging = require("@dxos/messaging");
285
296
  var import_network_manager2 = require("@dxos/network-manager");
286
297
  var import_protocols15 = require("@dxos/protocols");
287
- var import_services16 = require("@dxos/protocols/proto/dxos/client/services");
298
+ var import_services17 = require("@dxos/protocols/proto/dxos/client/services");
288
299
  var import_tracing9 = require("@dxos/tracing");
289
300
  var import_websocket_rpc = require("@dxos/websocket-rpc");
290
- var import_async19 = require("@dxos/async");
301
+ var import_async20 = require("@dxos/async");
291
302
  var import_codec_protobuf12 = require("@dxos/codec-protobuf");
292
- var import_invariant19 = require("@dxos/invariant");
293
- var import_services17 = require("@dxos/protocols/proto/dxos/client/services");
294
- var import_config3 = require("@dxos/config");
303
+ var import_invariant20 = require("@dxos/invariant");
295
304
  var import_services18 = require("@dxos/protocols/proto/dxos/client/services");
305
+ var import_config3 = require("@dxos/config");
306
+ var import_services19 = require("@dxos/protocols/proto/dxos/client/services");
296
307
  var import_tracing10 = require("@dxos/tracing");
297
- var import_util11 = require("@dxos/util");
298
- var import_keys16 = require("@dxos/keys");
299
308
  var import_util12 = require("@dxos/util");
300
- var import_async20 = require("@dxos/async");
309
+ var import_keys16 = require("@dxos/keys");
310
+ var import_util13 = require("@dxos/util");
311
+ var import_async21 = require("@dxos/async");
301
312
  var import_codec_protobuf13 = require("@dxos/codec-protobuf");
302
313
  var import_keys17 = require("@dxos/keys");
303
- var import_log18 = require("@dxos/log");
304
- var import_services19 = require("@dxos/protocols/proto/dxos/client/services");
305
- var import_util13 = require("@dxos/util");
306
- var import_codec_protobuf14 = require("@dxos/codec-protobuf");
307
- var import_codec_protobuf15 = require("@dxos/codec-protobuf");
314
+ var import_log19 = require("@dxos/log");
308
315
  var import_services20 = require("@dxos/protocols/proto/dxos/client/services");
309
316
  var import_util14 = require("@dxos/util");
317
+ var import_codec_protobuf14 = require("@dxos/codec-protobuf");
318
+ var import_codec_protobuf15 = require("@dxos/codec-protobuf");
319
+ var import_services21 = require("@dxos/protocols/proto/dxos/client/services");
320
+ var import_util15 = require("@dxos/util");
310
321
  var subscribeToFeeds = ({ feedStore }, { feedKeys }) => {
311
322
  return new import_codec_protobuf.Stream(({ next }) => {
312
323
  const subscriptions = new import_async.EventSubscriptions();
@@ -617,7 +628,7 @@ var DevtoolsServiceImpl = class {
617
628
  });
618
629
  }
619
630
  };
620
- var DXOS_VERSION = "0.5.9-main.405fda7";
631
+ var DXOS_VERSION = "0.5.9-main.44fe51d";
621
632
  var getPlatform = () => {
622
633
  if (process.browser) {
623
634
  if (typeof window !== "undefined") {
@@ -1744,7 +1755,11 @@ var IdentityServiceImpl = class extends import_context4.Resource {
1744
1755
  for (const space of dataSpaceManager.spaces.values()) {
1745
1756
  if (space.state === import_services4.SpaceState.CLOSED) {
1746
1757
  await space.open();
1747
- await space.initializeDataPipeline();
1758
+ const requiresMigration = space.stateUpdate.waitForCondition(() => space.state === import_services4.SpaceState.REQUIRES_MIGRATION);
1759
+ await Promise.race([
1760
+ space.initializeDataPipeline(),
1761
+ requiresMigration
1762
+ ]);
1748
1763
  }
1749
1764
  if (await dataSpaceManager.isDefaultSpace(space)) {
1750
1765
  await identity.updateDefaultSpace(space.id);
@@ -3720,14 +3735,20 @@ var InvitationsManager = class {
3720
3735
  }, callback);
3721
3736
  }
3722
3737
  };
3723
- var AutomergeSpaceState = class {
3738
+ var AutomergeSpaceState = class extends import_context11.Resource {
3724
3739
  constructor(_onNewRoot) {
3740
+ super();
3725
3741
  this._onNewRoot = _onNewRoot;
3726
3742
  this.rootUrl = void 0;
3727
3743
  this.lastEpoch = void 0;
3728
3744
  this.onNewEpoch = new import_async13.Event();
3729
3745
  this._isProcessingRootDocs = false;
3730
3746
  }
3747
+ async _open(ctx) {
3748
+ }
3749
+ async _close(ctx) {
3750
+ this._isProcessingRootDocs = false;
3751
+ }
3731
3752
  async processCredential(credential) {
3732
3753
  if (!(0, import_credentials14.checkCredentialType)(credential, "dxos.halo.credentials.Epoch")) {
3733
3754
  return;
@@ -3754,18 +3775,152 @@ var AutomergeSpaceState = class {
3754
3775
  await this.onNewEpoch.waitForCondition(() => !!this.lastEpoch);
3755
3776
  }
3756
3777
  };
3757
- var __dxlog_file14 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/notarization-plugin.ts";
3778
+ var __dxlog_file14 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/epoch-migrations.ts";
3779
+ var runEpochMigration = async (ctx, context) => {
3780
+ switch (context.migration) {
3781
+ case import_services13.CreateEpochRequest.Migration.INIT_AUTOMERGE: {
3782
+ const document = context.repo.create();
3783
+ await context.repo.flush();
3784
+ return {
3785
+ newRoot: document.url
3786
+ };
3787
+ }
3788
+ case import_services13.CreateEpochRequest.Migration.PRUNE_AUTOMERGE_ROOT_HISTORY: {
3789
+ if (!context.currentRoot) {
3790
+ throw new Error("Space does not have an automerge root");
3791
+ }
3792
+ const rootHandle = context.repo.find(context.currentRoot);
3793
+ await (0, import_context12.cancelWithContext)(ctx, (0, import_async14.asyncTimeout)(rootHandle.whenReady(), 1e4));
3794
+ const newRoot = context.repo.create(rootHandle.docSync());
3795
+ await context.repo.flush();
3796
+ return {
3797
+ newRoot: newRoot.url
3798
+ };
3799
+ }
3800
+ case import_services13.CreateEpochRequest.Migration.FRAGMENT_AUTOMERGE_ROOT: {
3801
+ import_log12.log.info("Fragmenting", void 0, {
3802
+ F: __dxlog_file14,
3803
+ L: 63,
3804
+ S: void 0,
3805
+ C: (f, a) => f(...a)
3806
+ });
3807
+ const currentRootUrl = context.currentRoot;
3808
+ const rootHandle = context.repo.find(currentRootUrl);
3809
+ await (0, import_context12.cancelWithContext)(ctx, (0, import_async14.asyncTimeout)(rootHandle.whenReady(), 1e4));
3810
+ const objects = Object.entries(rootHandle.docSync().objects);
3811
+ const properties = (0, import_echo_db.findInlineObjectOfType)(rootHandle.docSync(), import_echo_schema.TYPE_PROPERTIES);
3812
+ const otherObjects = objects.filter(([key]) => key !== properties?.[0]);
3813
+ (0, import_invariant13.invariant)(properties, "Properties not found", {
3814
+ F: __dxlog_file14,
3815
+ L: 73,
3816
+ S: void 0,
3817
+ A: [
3818
+ "properties",
3819
+ "'Properties not found'"
3820
+ ]
3821
+ });
3822
+ const newSpaceDoc = {
3823
+ ...rootHandle.docSync(),
3824
+ objects: Object.fromEntries([
3825
+ properties
3826
+ ])
3827
+ };
3828
+ const newRoot = context.repo.create(newSpaceDoc);
3829
+ (0, import_invariant13.invariant)(typeof newRoot.url === "string" && newRoot.url.length > 0, void 0, {
3830
+ F: __dxlog_file14,
3831
+ L: 78,
3832
+ S: void 0,
3833
+ A: [
3834
+ "typeof newRoot.url === 'string' && newRoot.url.length > 0",
3835
+ ""
3836
+ ]
3837
+ });
3838
+ const docLoader = new import_echo_pipeline3.AutomergeDocumentLoaderImpl(context.spaceId, context.repo, context.spaceKey);
3839
+ await docLoader.loadSpaceRootDocHandle(ctx, {
3840
+ rootUrl: newRoot.url
3841
+ });
3842
+ otherObjects.forEach(([key, value]) => {
3843
+ const handle = docLoader.createDocumentForObject(key);
3844
+ handle.change((doc) => {
3845
+ (0, import_util7.assignDeep)(doc, [
3846
+ "objects",
3847
+ key
3848
+ ], value);
3849
+ });
3850
+ });
3851
+ await context.repo.flush();
3852
+ return {
3853
+ newRoot: newRoot.url
3854
+ };
3855
+ }
3856
+ case import_services13.CreateEpochRequest.Migration.MIGRATE_REFERENCES_TO_DXN: {
3857
+ const currentRootUrl = context.currentRoot;
3858
+ const rootHandle = context.repo.find(currentRootUrl);
3859
+ await (0, import_context12.cancelWithContext)(ctx, (0, import_async14.asyncTimeout)(rootHandle.whenReady(), 1e4));
3860
+ (0, import_invariant13.invariant)(rootHandle.docSync(), "Root doc not found", {
3861
+ F: __dxlog_file14,
3862
+ L: 100,
3863
+ S: void 0,
3864
+ A: [
3865
+ "rootHandle.docSync()",
3866
+ "'Root doc not found'"
3867
+ ]
3868
+ });
3869
+ const newRootContent = await (0, import_echo_db.convertLegacySpaceRootDoc)(structuredClone(rootHandle.docSync()));
3870
+ for (const [id, url] of Object.entries(newRootContent.links ?? {})) {
3871
+ const handle = context.repo.find(url);
3872
+ await (0, import_context12.cancelWithContext)(ctx, (0, import_async14.asyncTimeout)(handle.whenReady(), 1e4));
3873
+ (0, import_invariant13.invariant)(handle.docSync(), "Doc not found", {
3874
+ F: __dxlog_file14,
3875
+ L: 107,
3876
+ S: void 0,
3877
+ A: [
3878
+ "handle.docSync()",
3879
+ "'Doc not found'"
3880
+ ]
3881
+ });
3882
+ const newDoc = await (0, import_echo_db.convertLegacyReferences)(structuredClone(handle.docSync()));
3883
+ const migratedDoc = (0, import_echo_db.migrateDocument)(handle.docSync(), newDoc);
3884
+ const newHandle = context.repo.import(import_automerge.next.save(migratedDoc));
3885
+ newRootContent.links[id] = newHandle.url;
3886
+ }
3887
+ const migratedRoot = (0, import_echo_db.migrateDocument)(rootHandle.docSync(), newRootContent);
3888
+ const newRoot = context.repo.import(import_automerge.next.save(migratedRoot));
3889
+ await context.repo.flush();
3890
+ return {
3891
+ newRoot: newRoot.url
3892
+ };
3893
+ }
3894
+ case import_services13.CreateEpochRequest.Migration.REPLACE_AUTOMERGE_ROOT: {
3895
+ (0, import_invariant13.invariant)(context.newAutomergeRoot, void 0, {
3896
+ F: __dxlog_file14,
3897
+ L: 124,
3898
+ S: void 0,
3899
+ A: [
3900
+ "context.newAutomergeRoot",
3901
+ ""
3902
+ ]
3903
+ });
3904
+ await context.repo.flush();
3905
+ return {
3906
+ newRoot: context.newAutomergeRoot
3907
+ };
3908
+ }
3909
+ }
3910
+ return {};
3911
+ };
3912
+ var __dxlog_file15 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/notarization-plugin.ts";
3758
3913
  var DEFAULT_RETRY_TIMEOUT = 1e3;
3759
3914
  var DEFAULT_SUCCESS_DELAY = 1e3;
3760
3915
  var DEFAULT_NOTARIZE_TIMEOUT = 1e4;
3761
3916
  var WRITER_NOT_SET_ERROR_CODE = "WRITER_NOT_SET";
3762
3917
  var NotarizationPlugin = class {
3763
3918
  constructor() {
3764
- this._ctx = new import_context11.Context();
3765
- this._extensionOpened = new import_async14.Event();
3919
+ this._ctx = new import_context13.Context();
3920
+ this._extensionOpened = new import_async15.Event();
3766
3921
  this._extensions = /* @__PURE__ */ new Set();
3767
- this._processedCredentials = new import_util7.ComplexSet(import_keys11.PublicKey.hash);
3768
- this._processCredentialsTriggers = new import_util7.ComplexMap(import_keys11.PublicKey.hash);
3922
+ this._processedCredentials = new import_util8.ComplexSet(import_keys11.PublicKey.hash);
3923
+ this._processCredentialsTriggers = new import_util8.ComplexMap(import_keys11.PublicKey.hash);
3769
3924
  }
3770
3925
  get hasWriter() {
3771
3926
  return !!this._writer;
@@ -3779,16 +3934,16 @@ var NotarizationPlugin = class {
3779
3934
  * Request credentials to be notarized.
3780
3935
  */
3781
3936
  async notarize({ ctx: opCtx, credentials, timeout = DEFAULT_NOTARIZE_TIMEOUT, retryTimeout = DEFAULT_RETRY_TIMEOUT, successDelay = DEFAULT_SUCCESS_DELAY }) {
3782
- (0, import_log12.log)("notarize", {
3937
+ (0, import_log13.log)("notarize", {
3783
3938
  credentials
3784
3939
  }, {
3785
- F: __dxlog_file14,
3940
+ F: __dxlog_file15,
3786
3941
  L: 90,
3787
3942
  S: this,
3788
3943
  C: (f, a) => f(...a)
3789
3944
  });
3790
- (0, import_invariant13.invariant)(credentials.every((credential) => credential.id), "Credentials must have an id", {
3791
- F: __dxlog_file14,
3945
+ (0, import_invariant14.invariant)(credentials.every((credential) => credential.id), "Credentials must have an id", {
3946
+ F: __dxlog_file15,
3792
3947
  L: 91,
3793
3948
  S: this,
3794
3949
  A: [
@@ -3796,13 +3951,13 @@ var NotarizationPlugin = class {
3796
3951
  "'Credentials must have an id'"
3797
3952
  ]
3798
3953
  });
3799
- const errors = new import_async14.Trigger();
3954
+ const errors = new import_async15.Trigger();
3800
3955
  const ctx = this._ctx.derive({
3801
3956
  onError: (err) => {
3802
- import_log12.log.warn("Notarization error", {
3957
+ import_log13.log.warn("Notarization error", {
3803
3958
  err
3804
3959
  }, {
3805
- F: __dxlog_file14,
3960
+ F: __dxlog_file15,
3806
3961
  L: 99,
3807
3962
  S: this,
3808
3963
  C: (f, a) => f(...a)
@@ -3813,23 +3968,23 @@ var NotarizationPlugin = class {
3813
3968
  });
3814
3969
  opCtx?.onDispose(() => ctx.dispose());
3815
3970
  if (timeout !== 0) {
3816
- (0, import_async14.scheduleTask)(ctx, () => {
3817
- import_log12.log.warn("Notarization timeout", {
3971
+ (0, import_async15.scheduleTask)(ctx, () => {
3972
+ import_log13.log.warn("Notarization timeout", {
3818
3973
  timeout,
3819
3974
  peers: Array.from(this._extensions).map((extension) => extension.remotePeerId)
3820
3975
  }, {
3821
- F: __dxlog_file14,
3976
+ F: __dxlog_file15,
3822
3977
  L: 111,
3823
3978
  S: this,
3824
3979
  C: (f, a) => f(...a)
3825
3980
  });
3826
3981
  void ctx.dispose();
3827
- errors.throw(new import_async14.TimeoutError(timeout, "Notarization timed out"));
3982
+ errors.throw(new import_async15.TimeoutError(timeout, "Notarization timed out"));
3828
3983
  }, timeout);
3829
3984
  }
3830
3985
  const allNotarized = Promise.all(credentials.map((credential) => this._waitUntilProcessed(credential.id)));
3831
3986
  const peersTried = /* @__PURE__ */ new Set();
3832
- const notarizeTask = new import_async14.DeferredTask(ctx, async () => {
3987
+ const notarizeTask = new import_async15.DeferredTask(ctx, async () => {
3833
3988
  try {
3834
3989
  if (this._extensions.size === 0) {
3835
3990
  return;
@@ -3838,24 +3993,24 @@ var NotarizationPlugin = class {
3838
3993
  ...this._extensions
3839
3994
  ].find((peer2) => !peersTried.has(peer2));
3840
3995
  if (!peer) {
3841
- import_log12.log.info("Exhausted all peers to notarize with", {
3996
+ import_log13.log.info("Exhausted all peers to notarize with", {
3842
3997
  retryIn: retryTimeout
3843
3998
  }, {
3844
- F: __dxlog_file14,
3999
+ F: __dxlog_file15,
3845
4000
  L: 136,
3846
4001
  S: this,
3847
4002
  C: (f, a) => f(...a)
3848
4003
  });
3849
4004
  peersTried.clear();
3850
- (0, import_async14.scheduleTask)(ctx, () => notarizeTask.schedule(), retryTimeout);
4005
+ (0, import_async15.scheduleTask)(ctx, () => notarizeTask.schedule(), retryTimeout);
3851
4006
  return;
3852
4007
  }
3853
4008
  peersTried.add(peer);
3854
- (0, import_log12.log)("try notarizing", {
4009
+ (0, import_log13.log)("try notarizing", {
3855
4010
  peer: peer.localPeerId,
3856
4011
  credentialId: credentials.map((credential) => credential.id)
3857
4012
  }, {
3858
- F: __dxlog_file14,
4013
+ F: __dxlog_file15,
3859
4014
  L: 143,
3860
4015
  S: this,
3861
4016
  C: (f, a) => f(...a)
@@ -3863,17 +4018,17 @@ var NotarizationPlugin = class {
3863
4018
  await peer.rpc.NotarizationService.notarize({
3864
4019
  credentials: credentials.filter((credential) => !this._processedCredentials.has(credential.id))
3865
4020
  });
3866
- (0, import_log12.log)("success", void 0, {
3867
- F: __dxlog_file14,
4021
+ (0, import_log13.log)("success", void 0, {
4022
+ F: __dxlog_file15,
3868
4023
  L: 147,
3869
4024
  S: this,
3870
4025
  C: (f, a) => f(...a)
3871
4026
  });
3872
- await (0, import_async14.sleep)(successDelay);
4027
+ await (0, import_async15.sleep)(successDelay);
3873
4028
  } catch (err) {
3874
4029
  if (!ctx.disposed && !err.message.includes(WRITER_NOT_SET_ERROR_CODE)) {
3875
- import_log12.log.info("error notarizing (recoverable)", err, {
3876
- F: __dxlog_file14,
4030
+ import_log13.log.info("error notarizing (recoverable)", err, {
4031
+ F: __dxlog_file15,
3877
4032
  L: 151,
3878
4033
  S: this,
3879
4034
  C: (f, a) => f(...a)
@@ -3886,12 +4041,12 @@ var NotarizationPlugin = class {
3886
4041
  this._extensionOpened.on(ctx, () => notarizeTask.schedule());
3887
4042
  try {
3888
4043
  await Promise.race([
3889
- (0, import_context11.rejectOnDispose)(ctx),
4044
+ (0, import_context13.rejectOnDispose)(ctx),
3890
4045
  allNotarized,
3891
4046
  errors.wait()
3892
4047
  ]);
3893
- (0, import_log12.log)("done", void 0, {
3894
- F: __dxlog_file14,
4048
+ (0, import_log13.log)("done", void 0, {
4049
+ F: __dxlog_file15,
3895
4050
  L: 162,
3896
4051
  S: this,
3897
4052
  C: (f, a) => f(...a)
@@ -3912,8 +4067,8 @@ var NotarizationPlugin = class {
3912
4067
  this._processCredentialsTriggers.delete(credential.id);
3913
4068
  }
3914
4069
  setWriter(writer) {
3915
- (0, import_invariant13.invariant)(!this._writer, "Writer already set.", {
3916
- F: __dxlog_file14,
4070
+ (0, import_invariant14.invariant)(!this._writer, "Writer already set.", {
4071
+ F: __dxlog_file15,
3917
4072
  L: 181,
3918
4073
  S: this,
3919
4074
  A: [
@@ -3927,7 +4082,7 @@ var NotarizationPlugin = class {
3927
4082
  if (this._processedCredentials.has(id)) {
3928
4083
  return;
3929
4084
  }
3930
- await (0, import_util7.entry)(this._processCredentialsTriggers, id).orInsert(new import_async14.Trigger()).value.wait();
4085
+ await (0, import_util8.entry)(this._processCredentialsTriggers, id).orInsert(new import_async15.Trigger()).value.wait();
3931
4086
  }
3932
4087
  /**
3933
4088
  * Requests from other peers to notarize credentials.
@@ -3937,8 +4092,8 @@ var NotarizationPlugin = class {
3937
4092
  throw new Error(WRITER_NOT_SET_ERROR_CODE);
3938
4093
  }
3939
4094
  for (const credential of request.credentials ?? []) {
3940
- (0, import_invariant13.invariant)(credential.id, "Credential must have an id", {
3941
- F: __dxlog_file14,
4095
+ (0, import_invariant14.invariant)(credential.id, "Credential must have an id", {
4096
+ F: __dxlog_file15,
3942
4097
  L: 200,
3943
4098
  S: this,
3944
4099
  A: [
@@ -3955,10 +4110,10 @@ var NotarizationPlugin = class {
3955
4110
  createExtension() {
3956
4111
  const extension = new NotarizationTeleportExtension({
3957
4112
  onOpen: async () => {
3958
- (0, import_log12.log)("extension opened", {
4113
+ (0, import_log13.log)("extension opened", {
3959
4114
  peer: extension.localPeerId
3960
4115
  }, {
3961
- F: __dxlog_file14,
4116
+ F: __dxlog_file15,
3962
4117
  L: 211,
3963
4118
  S: this,
3964
4119
  C: (f, a) => f(...a)
@@ -3967,10 +4122,10 @@ var NotarizationPlugin = class {
3967
4122
  this._extensionOpened.emit();
3968
4123
  },
3969
4124
  onClose: async () => {
3970
- (0, import_log12.log)("extension closed", {
4125
+ (0, import_log13.log)("extension closed", {
3971
4126
  peer: extension.localPeerId
3972
4127
  }, {
3973
- F: __dxlog_file14,
4128
+ F: __dxlog_file15,
3974
4129
  L: 216,
3975
4130
  S: this,
3976
4131
  C: (f, a) => f(...a)
@@ -4022,14 +4177,79 @@ function _ts_decorate4(decorators, target, key, desc) {
4022
4177
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4023
4178
  return c > 3 && r && Object.defineProperty(target, key, r), r;
4024
4179
  }
4025
- var __dxlog_file15 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/data-space.ts";
4180
+ function _using_ctx() {
4181
+ var _disposeSuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed) {
4182
+ var err = new Error();
4183
+ err.name = "SuppressedError";
4184
+ err.suppressed = suppressed;
4185
+ err.error = error;
4186
+ return err;
4187
+ }, empty = {}, stack = [];
4188
+ function using(isAwait, value) {
4189
+ if (value != null) {
4190
+ if (Object(value) !== value) {
4191
+ throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
4192
+ }
4193
+ if (isAwait) {
4194
+ var dispose = value[Symbol.asyncDispose || Symbol.for("Symbol.asyncDispose")];
4195
+ }
4196
+ if (dispose == null) {
4197
+ dispose = value[Symbol.dispose || Symbol.for("Symbol.dispose")];
4198
+ }
4199
+ if (typeof dispose !== "function") {
4200
+ throw new TypeError(`Property [Symbol.dispose] is not a function.`);
4201
+ }
4202
+ stack.push({
4203
+ v: value,
4204
+ d: dispose,
4205
+ a: isAwait
4206
+ });
4207
+ } else if (isAwait) {
4208
+ stack.push({
4209
+ d: value,
4210
+ a: isAwait
4211
+ });
4212
+ }
4213
+ return value;
4214
+ }
4215
+ return {
4216
+ e: empty,
4217
+ u: using.bind(null, false),
4218
+ a: using.bind(null, true),
4219
+ d: function() {
4220
+ var error = this.e;
4221
+ function next() {
4222
+ while (resource = stack.pop()) {
4223
+ try {
4224
+ var resource, disposalResult = resource.d && resource.d.call(resource.v);
4225
+ if (resource.a) {
4226
+ return Promise.resolve(disposalResult).then(next, err);
4227
+ }
4228
+ } catch (e) {
4229
+ return err(e);
4230
+ }
4231
+ }
4232
+ if (error !== empty)
4233
+ throw error;
4234
+ }
4235
+ function err(e) {
4236
+ error = error !== empty ? new _disposeSuppressedError(error, e) : e;
4237
+ return next();
4238
+ }
4239
+ return next();
4240
+ }
4241
+ };
4242
+ }
4243
+ var __dxlog_file16 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/data-space.ts";
4026
4244
  var DataSpace = class {
4027
4245
  constructor(params) {
4028
4246
  this._ctx = new import_context10.Context();
4029
4247
  this._notarizationPlugin = new NotarizationPlugin();
4030
4248
  this._cache = void 0;
4031
4249
  this._automergeSpaceState = new AutomergeSpaceState((rootUrl) => this._onNewAutomergeRoot(rootUrl));
4250
+ this._epochProcessingMutex = new import_async12.Mutex();
4032
4251
  this._state = import_services12.SpaceState.CLOSED;
4252
+ this._databaseRoot = null;
4033
4253
  this.error = void 0;
4034
4254
  this.stateUpdate = new import_async12.Event();
4035
4255
  this.metrics = {};
@@ -4053,8 +4273,8 @@ var DataSpace = class {
4053
4273
  (0, import_log11.log)("new state", {
4054
4274
  state: import_services12.SpaceState[this._state]
4055
4275
  }, {
4056
- F: __dxlog_file15,
4057
- L: 143,
4276
+ F: __dxlog_file16,
4277
+ L: 146,
4058
4278
  S: this,
4059
4279
  C: (f, a) => f(...a)
4060
4280
  });
@@ -4087,6 +4307,9 @@ var DataSpace = class {
4087
4307
  get automergeSpaceState() {
4088
4308
  return this._automergeSpaceState;
4089
4309
  }
4310
+ get databaseRoot() {
4311
+ return this._databaseRoot;
4312
+ }
4090
4313
  get _automergeInfo() {
4091
4314
  return {
4092
4315
  rootUrl: this._automergeSpaceState.rootUrl,
@@ -4103,14 +4326,15 @@ var DataSpace = class {
4103
4326
  await this._gossip.open();
4104
4327
  await this._notarizationPlugin.open();
4105
4328
  await this._inner.spaceState.addCredentialProcessor(this._notarizationPlugin);
4329
+ await this._automergeSpaceState.open();
4106
4330
  await this._inner.spaceState.addCredentialProcessor(this._automergeSpaceState);
4107
4331
  await this._inner.open(new import_context10.Context());
4108
4332
  this._state = import_services12.SpaceState.CONTROL_ONLY;
4109
4333
  (0, import_log11.log)("new state", {
4110
4334
  state: import_services12.SpaceState[this._state]
4111
4335
  }, {
4112
- F: __dxlog_file15,
4113
- L: 209,
4336
+ F: __dxlog_file16,
4337
+ L: 217,
4114
4338
  S: this,
4115
4339
  C: (f, a) => f(...a)
4116
4340
  });
@@ -4127,8 +4351,8 @@ var DataSpace = class {
4127
4351
  (0, import_log11.log)("new state", {
4128
4352
  state: import_services12.SpaceState[this._state]
4129
4353
  }, {
4130
- F: __dxlog_file15,
4131
- L: 223,
4354
+ F: __dxlog_file16,
4355
+ L: 231,
4132
4356
  S: this,
4133
4357
  C: (f, a) => f(...a)
4134
4358
  });
@@ -4137,6 +4361,7 @@ var DataSpace = class {
4137
4361
  await this.authVerifier.close();
4138
4362
  await this._inner.close();
4139
4363
  await this._inner.spaceState.removeCredentialProcessor(this._automergeSpaceState);
4364
+ await this._automergeSpaceState.close();
4140
4365
  await this._inner.spaceState.removeCredentialProcessor(this._notarizationPlugin);
4141
4366
  await this._notarizationPlugin.close();
4142
4367
  await this._presence.close();
@@ -4159,16 +4384,16 @@ var DataSpace = class {
4159
4384
  } catch (err) {
4160
4385
  if (err instanceof import_protocols9.CancelledError || err instanceof import_context10.ContextDisposedError) {
4161
4386
  (0, import_log11.log)("data pipeline initialization cancelled", err, {
4162
- F: __dxlog_file15,
4163
- L: 256,
4387
+ F: __dxlog_file16,
4388
+ L: 265,
4164
4389
  S: this,
4165
4390
  C: (f, a) => f(...a)
4166
4391
  });
4167
4392
  return;
4168
4393
  }
4169
4394
  import_log11.log.error("Error initializing data pipeline", err, {
4170
- F: __dxlog_file15,
4171
- L: 260,
4395
+ F: __dxlog_file16,
4396
+ L: 269,
4172
4397
  S: this,
4173
4398
  C: (f, a) => f(...a)
4174
4399
  });
@@ -4176,8 +4401,8 @@ var DataSpace = class {
4176
4401
  (0, import_log11.log)("new state", {
4177
4402
  state: import_services12.SpaceState[this._state]
4178
4403
  }, {
4179
- F: __dxlog_file15,
4180
- L: 262,
4404
+ F: __dxlog_file16,
4405
+ L: 271,
4181
4406
  S: this,
4182
4407
  C: (f, a) => f(...a)
4183
4408
  });
@@ -4196,28 +4421,25 @@ var DataSpace = class {
4196
4421
  (0, import_log11.log)("new state", {
4197
4422
  state: import_services12.SpaceState[this._state]
4198
4423
  }, {
4199
- F: __dxlog_file15,
4200
- L: 278,
4424
+ F: __dxlog_file16,
4425
+ L: 287,
4201
4426
  S: this,
4202
4427
  C: (f, a) => f(...a)
4203
4428
  });
4204
4429
  await this._initializeAndReadControlPipeline();
4205
4430
  await (0, import_async12.sleep)(1);
4431
+ const ready = this.stateUpdate.waitForCondition(() => this._state === import_services12.SpaceState.READY);
4206
4432
  this._automergeSpaceState.startProcessingRootDocs();
4207
- await (0, import_context10.cancelWithContext)(this._ctx, this.automergeSpaceState.ensureEpochInitialized());
4208
- (0, import_log11.log)("data pipeline ready", void 0, {
4209
- F: __dxlog_file15,
4210
- L: 290,
4211
- S: this,
4212
- C: (f, a) => f(...a)
4213
- });
4433
+ await ready;
4434
+ }
4435
+ async _enterReadyState() {
4214
4436
  await this._callbacks.beforeReady?.();
4215
4437
  this._state = import_services12.SpaceState.READY;
4216
4438
  (0, import_log11.log)("new state", {
4217
4439
  state: import_services12.SpaceState[this._state]
4218
4440
  }, {
4219
- F: __dxlog_file15,
4220
- L: 294,
4441
+ F: __dxlog_file16,
4442
+ L: 306,
4221
4443
  S: this,
4222
4444
  C: (f, a) => f(...a)
4223
4445
  });
@@ -4232,8 +4454,8 @@ var DataSpace = class {
4232
4454
  this.metrics.controlPipelineReady = /* @__PURE__ */ new Date();
4233
4455
  await this._createWritableFeeds();
4234
4456
  (0, import_log11.log)("writable feeds created", void 0, {
4235
- F: __dxlog_file15,
4236
- L: 310,
4457
+ F: __dxlog_file16,
4458
+ L: 322,
4237
4459
  S: this,
4238
4460
  C: (f, a) => f(...a)
4239
4461
  });
@@ -4295,8 +4517,8 @@ var DataSpace = class {
4295
4517
  space: this.key,
4296
4518
  rootUrl
4297
4519
  }, {
4298
- F: __dxlog_file15,
4299
- L: 376,
4520
+ F: __dxlog_file16,
4521
+ L: 388,
4300
4522
  S: this,
4301
4523
  C: (f, a) => f(...a)
4302
4524
  });
@@ -4304,32 +4526,40 @@ var DataSpace = class {
4304
4526
  const handle = this._echoHost.automergeRepo.find(rootUrl);
4305
4527
  queueMicrotask(async () => {
4306
4528
  try {
4307
- await (0, import_debug3.warnAfterTimeout)(5e3, "Automerge root doc load timeout (DataSpace)", async () => {
4308
- await (0, import_context10.cancelWithContext)(this._ctx, handle.whenReady());
4309
- });
4310
- if (this._ctx.disposed) {
4311
- return;
4312
- }
4313
- const doc = handle.docSync() ?? (0, import_invariant12.failedInvariant)();
4314
- if (!doc.access?.spaceKey) {
4315
- handle.change((doc2) => {
4316
- doc2.access = {
4317
- spaceKey: this.key.toHex()
4318
- };
4319
- });
4320
- }
4321
- if (!this._echoHost.roots.has(handle.documentId)) {
4322
- await this._echoHost.openSpaceRoot(handle.url);
4323
- } else {
4324
- import_log11.log.warn("echo database root already exists", {
4325
- space: this.key,
4326
- rootUrl
4327
- }, {
4328
- F: __dxlog_file15,
4329
- L: 403,
4330
- S: this,
4331
- C: (f, a) => f(...a)
4529
+ try {
4530
+ var _usingCtx = _using_ctx();
4531
+ await (0, import_debug3.warnAfterTimeout)(5e3, "Automerge root doc load timeout (DataSpace)", async () => {
4532
+ await (0, import_context10.cancelWithContext)(this._ctx, handle.whenReady());
4332
4533
  });
4534
+ if (this._ctx.disposed) {
4535
+ return;
4536
+ }
4537
+ const _guard = (
4538
+ // Ensure only one root is processed at a time.
4539
+ _usingCtx.u(await this._epochProcessingMutex.acquire())
4540
+ );
4541
+ const doc = handle.docSync() ?? (0, import_invariant12.failedInvariant)();
4542
+ if (!doc.access?.spaceKey) {
4543
+ handle.change((doc2) => {
4544
+ doc2.access = {
4545
+ spaceKey: this.key.toHex()
4546
+ };
4547
+ });
4548
+ }
4549
+ const root = await this._echoHost.openSpaceRoot(handle.url);
4550
+ this._databaseRoot = root;
4551
+ if (root.getVersion() !== import_echo_protocol.SpaceDocVersion.CURRENT) {
4552
+ this._state = import_services12.SpaceState.REQUIRES_MIGRATION;
4553
+ this.stateUpdate.emit();
4554
+ } else {
4555
+ if (this._state !== import_services12.SpaceState.READY) {
4556
+ await this._enterReadyState();
4557
+ }
4558
+ }
4559
+ } catch (_) {
4560
+ _usingCtx.e = _;
4561
+ } finally {
4562
+ _usingCtx.d();
4333
4563
  }
4334
4564
  } catch (err) {
4335
4565
  if (err instanceof import_context10.ContextDisposedError) {
@@ -4340,8 +4570,8 @@ var DataSpace = class {
4340
4570
  rootUrl,
4341
4571
  err
4342
4572
  }, {
4343
- F: __dxlog_file15,
4344
- L: 409,
4573
+ F: __dxlog_file16,
4574
+ L: 431,
4345
4575
  S: this,
4346
4576
  C: (f, a) => f(...a)
4347
4577
  });
@@ -4364,148 +4594,34 @@ var DataSpace = class {
4364
4594
  });
4365
4595
  }
4366
4596
  async createEpoch(options) {
4367
- let epoch;
4368
- switch (options?.migration) {
4369
- case void 0:
4370
- case import_services12.CreateEpochRequest.Migration.NONE:
4371
- {
4372
- epoch = {
4373
- previousId: this._automergeSpaceState.lastEpoch?.id,
4374
- number: (this._automergeSpaceState.lastEpoch?.subject.assertion.number ?? -1) + 1,
4375
- timeframe: this._automergeSpaceState.lastEpoch?.subject.assertion.timeframe ?? new import_timeframe3.Timeframe(),
4376
- automergeRoot: this._automergeSpaceState.lastEpoch?.subject.assertion?.automergeRoot
4377
- };
4378
- }
4379
- break;
4380
- case import_services12.CreateEpochRequest.Migration.INIT_AUTOMERGE:
4381
- {
4382
- const document = this._echoHost.automergeRepo.create();
4383
- epoch = {
4384
- previousId: this._automergeSpaceState.lastEpoch?.id,
4385
- number: (this._automergeSpaceState.lastEpoch?.subject.assertion.number ?? -1) + 1,
4386
- timeframe: this._automergeSpaceState.lastEpoch?.subject.assertion.timeframe ?? new import_timeframe3.Timeframe(),
4387
- automergeRoot: document.url
4388
- };
4389
- }
4390
- break;
4391
- case import_services12.CreateEpochRequest.Migration.PRUNE_AUTOMERGE_ROOT_HISTORY:
4392
- {
4393
- const currentRootUrl = this._automergeSpaceState.rootUrl;
4394
- const rootHandle = this._echoHost.automergeRepo.find(currentRootUrl);
4395
- await (0, import_context10.cancelWithContext)(this._ctx, (0, import_async12.asyncTimeout)(rootHandle.whenReady(), 1e4));
4396
- const newRoot = this._echoHost.automergeRepo.create(rootHandle.docSync());
4397
- await this._echoHost.automergeRepo.flush([
4398
- newRoot.documentId
4399
- ]);
4400
- (0, import_invariant12.invariant)(typeof newRoot.url === "string" && newRoot.url.length > 0, void 0, {
4401
- F: __dxlog_file15,
4402
- L: 460,
4403
- S: this,
4404
- A: [
4405
- "typeof newRoot.url === 'string' && newRoot.url.length > 0",
4406
- ""
4407
- ]
4408
- });
4409
- epoch = {
4410
- previousId: this._automergeSpaceState.lastEpoch?.id,
4411
- number: (this._automergeSpaceState.lastEpoch?.subject.assertion.number ?? -1) + 1,
4412
- timeframe: this._automergeSpaceState.lastEpoch?.subject.assertion.timeframe ?? new import_timeframe3.Timeframe(),
4413
- automergeRoot: newRoot.url
4414
- };
4415
- }
4416
- break;
4417
- case import_services12.CreateEpochRequest.Migration.FRAGMENT_AUTOMERGE_ROOT:
4418
- {
4419
- import_log11.log.info("Fragmenting", void 0, {
4420
- F: __dxlog_file15,
4421
- L: 472,
4422
- S: this,
4423
- C: (f, a) => f(...a)
4424
- });
4425
- const currentRootUrl = this._automergeSpaceState.rootUrl;
4426
- const rootHandle = this._echoHost.automergeRepo.find(currentRootUrl);
4427
- await (0, import_context10.cancelWithContext)(this._ctx, (0, import_async12.asyncTimeout)(rootHandle.whenReady(), 1e4));
4428
- const objects = Object.entries(rootHandle.docSync().objects);
4429
- const properties = findPropertiesObject(rootHandle.docSync());
4430
- const otherObjects = objects.filter(([key]) => key !== properties?.[0]);
4431
- (0, import_invariant12.invariant)(properties, "Properties not found", {
4432
- F: __dxlog_file15,
4433
- L: 482,
4434
- S: this,
4435
- A: [
4436
- "properties",
4437
- "'Properties not found'"
4438
- ]
4439
- });
4440
- const newSpaceDoc = {
4441
- ...rootHandle.docSync(),
4442
- objects: Object.fromEntries([
4443
- properties
4444
- ])
4445
- };
4446
- const newRoot = this._echoHost.automergeRepo.create(newSpaceDoc);
4447
- (0, import_invariant12.invariant)(typeof newRoot.url === "string" && newRoot.url.length > 0, void 0, {
4448
- F: __dxlog_file15,
4449
- L: 487,
4450
- S: this,
4451
- A: [
4452
- "typeof newRoot.url === 'string' && newRoot.url.length > 0",
4453
- ""
4454
- ]
4455
- });
4456
- const docLoader = new import_echo_pipeline2.AutomergeDocumentLoaderImpl(await (0, import_echo_pipeline2.createIdFromSpaceKey)(this.key), this._echoHost.automergeRepo, this.key);
4457
- await docLoader.loadSpaceRootDocHandle(this._ctx, {
4458
- rootUrl: newRoot.url
4459
- });
4460
- otherObjects.forEach(([key, value]) => {
4461
- const handle = docLoader.createDocumentForObject(key);
4462
- handle.change((doc) => {
4463
- (0, import_util6.assignDeep)(doc, [
4464
- "objects",
4465
- key
4466
- ], value);
4467
- });
4468
- });
4469
- epoch = {
4470
- previousId: this._automergeSpaceState.lastEpoch?.id,
4471
- number: (this._automergeSpaceState.lastEpoch?.subject.assertion.number ?? -1) + 1,
4472
- timeframe: this._automergeSpaceState.lastEpoch?.subject.assertion.timeframe ?? new import_timeframe3.Timeframe(),
4473
- automergeRoot: newRoot.url
4474
- };
4475
- }
4476
- break;
4477
- case import_services12.CreateEpochRequest.Migration.REPLACE_AUTOMERGE_ROOT:
4478
- {
4479
- (0, import_invariant12.invariant)(options.newAutomergeRoot, void 0, {
4480
- F: __dxlog_file15,
4481
- L: 517,
4482
- S: this,
4483
- A: [
4484
- "options.newAutomergeRoot",
4485
- ""
4486
- ]
4487
- });
4488
- epoch = {
4489
- previousId: this._automergeSpaceState.lastEpoch?.id,
4490
- number: (this._automergeSpaceState.lastEpoch?.subject.assertion.number ?? -1) + 1,
4491
- timeframe: this._automergeSpaceState.lastEpoch?.subject.assertion.timeframe ?? new import_timeframe3.Timeframe(),
4492
- automergeRoot: options.newAutomergeRoot
4493
- };
4494
- }
4495
- break;
4496
- }
4497
- if (!epoch) {
4498
- return;
4597
+ const ctx = this._ctx.derive();
4598
+ if (!options?.migration) {
4599
+ return null;
4499
4600
  }
4601
+ const { newRoot } = await runEpochMigration(ctx, {
4602
+ repo: this._echoHost.automergeRepo,
4603
+ spaceId: this.id,
4604
+ spaceKey: this.key,
4605
+ migration: options.migration,
4606
+ currentRoot: this._automergeSpaceState.rootUrl ?? null,
4607
+ newAutomergeRoot: options.newAutomergeRoot
4608
+ });
4609
+ const epoch = {
4610
+ previousId: this._automergeSpaceState.lastEpoch?.id,
4611
+ number: (this._automergeSpaceState.lastEpoch?.subject.assertion.number ?? -1) + 1,
4612
+ timeframe: this._automergeSpaceState.lastEpoch?.subject.assertion.timeframe ?? new import_timeframe3.Timeframe(),
4613
+ automergeRoot: newRoot ?? this._automergeSpaceState.rootUrl
4614
+ };
4615
+ const credential = await this._signingContext.credentialSigner.createCredential({
4616
+ subject: this.key,
4617
+ assertion: {
4618
+ "@type": "dxos.halo.credentials.Epoch",
4619
+ ...epoch
4620
+ }
4621
+ });
4500
4622
  const receipt = await this.inner.controlPipeline.writer.write({
4501
4623
  credential: {
4502
- credential: await this._signingContext.credentialSigner.createCredential({
4503
- subject: this.key,
4504
- assertion: {
4505
- "@type": "dxos.halo.credentials.Epoch",
4506
- ...epoch
4507
- }
4508
- })
4624
+ credential
4509
4625
  }
4510
4626
  });
4511
4627
  await this.inner.controlPipeline.state.waitUntilTimeframe(new import_timeframe3.Timeframe([
@@ -4515,6 +4631,7 @@ var DataSpace = class {
4515
4631
  ]
4516
4632
  ]));
4517
4633
  await this._echoHost.updateIndexes();
4634
+ return credential;
4518
4635
  }
4519
4636
  async activate() {
4520
4637
  if (![
@@ -4539,8 +4656,8 @@ var DataSpace = class {
4539
4656
  (0, import_log11.log)("new state", {
4540
4657
  state: import_services12.SpaceState[this._state]
4541
4658
  }, {
4542
- F: __dxlog_file15,
4543
- L: 571,
4659
+ F: __dxlog_file16,
4660
+ L: 512,
4544
4661
  S: this,
4545
4662
  C: (f, a) => f(...a)
4546
4663
  });
@@ -4595,18 +4712,6 @@ DataSpace = _ts_decorate4([
4595
4712
  (0, import_async12.trackLeaks)("open", "close"),
4596
4713
  import_tracing5.trace.resource()
4597
4714
  ], DataSpace);
4598
- var findPropertiesObject = (spaceDoc) => {
4599
- for (const id in spaceDoc.objects ?? {}) {
4600
- const obj = spaceDoc.objects[id];
4601
- if (obj.system.type?.itemId === import_echo_schema.TYPE_PROPERTIES) {
4602
- return [
4603
- id,
4604
- obj
4605
- ];
4606
- }
4607
- }
4608
- return void 0;
4609
- };
4610
4715
  var spaceGenesis = async (keyring, signingContext, space, automergeRoot) => {
4611
4716
  const credentials = [
4612
4717
  await (0, import_credentials17.createCredential)({
@@ -4681,7 +4786,7 @@ function _ts_decorate5(decorators, target, key, desc) {
4681
4786
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4682
4787
  return c > 3 && r && Object.defineProperty(target, key, r), r;
4683
4788
  }
4684
- var __dxlog_file16 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/data-space-manager.ts";
4789
+ var __dxlog_file17 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/data-space-manager.ts";
4685
4790
  var PRESENCE_ANNOUNCE_INTERVAL = 1e4;
4686
4791
  var PRESENCE_OFFLINE_TIMEOUT = 2e4;
4687
4792
  var DEFAULT_SPACE_KEY = "__DEFAULT__";
@@ -4695,9 +4800,9 @@ var DataSpaceManager = class {
4695
4800
  this._echoHost = _echoHost;
4696
4801
  this._invitationsManager = _invitationsManager;
4697
4802
  this._params = _params;
4698
- this._ctx = new import_context12.Context();
4699
- this.updated = new import_async15.Event();
4700
- this._spaces = new import_util8.ComplexMap(import_keys12.PublicKey.hash);
4803
+ this._ctx = new import_context14.Context();
4804
+ this.updated = new import_async16.Event();
4805
+ this._spaces = new import_util9.ComplexMap(import_keys12.PublicKey.hash);
4701
4806
  this._isOpen = false;
4702
4807
  this._instanceId = import_keys12.PublicKey.random().toHex();
4703
4808
  import_tracing6.trace.diagnostic({
@@ -4708,10 +4813,10 @@ var DataSpaceManager = class {
4708
4813
  const rootUrl = space.automergeSpaceState.rootUrl;
4709
4814
  const rootHandle = rootUrl ? this._echoHost.automergeRepo.find(rootUrl) : void 0;
4710
4815
  const rootDoc = rootHandle?.docSync();
4711
- const properties = rootDoc && findPropertiesObject(rootDoc);
4816
+ const properties = rootDoc && (0, import_echo_db2.findInlineObjectOfType)(rootDoc, import_echo_schema2.TYPE_PROPERTIES);
4712
4817
  return {
4713
4818
  key: space.key.toHex(),
4714
- state: import_services13.SpaceState[space.state],
4819
+ state: import_services14.SpaceState[space.state],
4715
4820
  name: properties?.[1].data.name ?? null,
4716
4821
  inlineObjects: rootDoc ? Object.keys(rootDoc.objects ?? {}).length : null,
4717
4822
  linkedObjects: rootDoc ? Object.keys(rootDoc.links ?? {}).length : null,
@@ -4728,46 +4833,46 @@ var DataSpaceManager = class {
4728
4833
  return this._spaces;
4729
4834
  }
4730
4835
  async open() {
4731
- (0, import_log13.log)("open", void 0, {
4732
- F: __dxlog_file16,
4733
- L: 140,
4836
+ (0, import_log14.log)("open", void 0, {
4837
+ F: __dxlog_file17,
4838
+ L: 146,
4734
4839
  S: this,
4735
4840
  C: (f, a) => f(...a)
4736
4841
  });
4737
- import_log13.log.trace("dxos.echo.data-space-manager.open", import_protocols11.trace.begin({
4842
+ import_log14.log.trace("dxos.echo.data-space-manager.open", import_protocols11.trace.begin({
4738
4843
  id: this._instanceId
4739
4844
  }), {
4740
- F: __dxlog_file16,
4741
- L: 141,
4845
+ F: __dxlog_file17,
4846
+ L: 147,
4742
4847
  S: this,
4743
4848
  C: (f, a) => f(...a)
4744
4849
  });
4745
- (0, import_log13.log)("metadata loaded", {
4850
+ (0, import_log14.log)("metadata loaded", {
4746
4851
  spaces: this._metadataStore.spaces.length
4747
4852
  }, {
4748
- F: __dxlog_file16,
4749
- L: 142,
4853
+ F: __dxlog_file17,
4854
+ L: 148,
4750
4855
  S: this,
4751
4856
  C: (f, a) => f(...a)
4752
4857
  });
4753
- await (0, import_util8.forEachAsync)(this._metadataStore.spaces, async (spaceMetadata) => {
4858
+ await (0, import_util9.forEachAsync)(this._metadataStore.spaces, async (spaceMetadata) => {
4754
4859
  try {
4755
- (0, import_log13.log)("load space", {
4860
+ (0, import_log14.log)("load space", {
4756
4861
  spaceMetadata
4757
4862
  }, {
4758
- F: __dxlog_file16,
4759
- L: 146,
4863
+ F: __dxlog_file17,
4864
+ L: 152,
4760
4865
  S: this,
4761
4866
  C: (f, a) => f(...a)
4762
4867
  });
4763
4868
  await this._constructSpace(spaceMetadata);
4764
4869
  } catch (err) {
4765
- import_log13.log.error("Error loading space", {
4870
+ import_log14.log.error("Error loading space", {
4766
4871
  spaceMetadata,
4767
4872
  err
4768
4873
  }, {
4769
- F: __dxlog_file16,
4770
- L: 149,
4874
+ F: __dxlog_file17,
4875
+ L: 155,
4771
4876
  S: this,
4772
4877
  C: (f, a) => f(...a)
4773
4878
  });
@@ -4775,19 +4880,19 @@ var DataSpaceManager = class {
4775
4880
  });
4776
4881
  this._isOpen = true;
4777
4882
  this.updated.emit();
4778
- import_log13.log.trace("dxos.echo.data-space-manager.open", import_protocols11.trace.end({
4883
+ import_log14.log.trace("dxos.echo.data-space-manager.open", import_protocols11.trace.end({
4779
4884
  id: this._instanceId
4780
4885
  }), {
4781
- F: __dxlog_file16,
4782
- L: 156,
4886
+ F: __dxlog_file17,
4887
+ L: 162,
4783
4888
  S: this,
4784
4889
  C: (f, a) => f(...a)
4785
4890
  });
4786
4891
  }
4787
4892
  async close() {
4788
- (0, import_log13.log)("close", void 0, {
4789
- F: __dxlog_file16,
4790
- L: 161,
4893
+ (0, import_log14.log)("close", void 0, {
4894
+ F: __dxlog_file17,
4895
+ L: 167,
4791
4896
  S: this,
4792
4897
  C: (f, a) => f(...a)
4793
4898
  });
@@ -4802,9 +4907,9 @@ var DataSpaceManager = class {
4802
4907
  * Creates a new space writing the genesis credentials to the control feed.
4803
4908
  */
4804
4909
  async createSpace() {
4805
- (0, import_invariant14.invariant)(this._isOpen, "Not open.", {
4806
- F: __dxlog_file16,
4807
- L: 175,
4910
+ (0, import_invariant15.invariant)(this._isOpen, "Not open.", {
4911
+ F: __dxlog_file17,
4912
+ L: 181,
4808
4913
  S: this,
4809
4914
  A: [
4810
4915
  "this._isOpen",
@@ -4819,13 +4924,13 @@ var DataSpaceManager = class {
4819
4924
  genesisFeedKey: controlFeedKey,
4820
4925
  controlFeedKey,
4821
4926
  dataFeedKey,
4822
- state: import_services13.SpaceState.ACTIVE
4927
+ state: import_services14.SpaceState.ACTIVE
4823
4928
  };
4824
- (0, import_log13.log)("creating space...", {
4929
+ (0, import_log14.log)("creating space...", {
4825
4930
  spaceKey
4826
4931
  }, {
4827
- F: __dxlog_file16,
4828
- L: 187,
4932
+ F: __dxlog_file17,
4933
+ L: 193,
4829
4934
  S: this,
4830
4935
  C: (f, a) => f(...a)
4831
4936
  });
@@ -4835,9 +4940,9 @@ var DataSpaceManager = class {
4835
4940
  const credentials = await spaceGenesis(this._keyring, this._signingContext, space.inner, root.url);
4836
4941
  await this._metadataStore.addSpace(metadata);
4837
4942
  const memberCredential = credentials[1];
4838
- (0, import_invariant14.invariant)((0, import_credentials15.getCredentialAssertion)(memberCredential)["@type"] === "dxos.halo.credentials.SpaceMember", void 0, {
4839
- F: __dxlog_file16,
4840
- L: 197,
4943
+ (0, import_invariant15.invariant)((0, import_credentials15.getCredentialAssertion)(memberCredential)["@type"] === "dxos.halo.credentials.SpaceMember", void 0, {
4944
+ F: __dxlog_file17,
4945
+ L: 203,
4841
4946
  S: this,
4842
4947
  A: [
4843
4948
  "getCredentialAssertion(memberCredential)['@type'] === 'dxos.halo.credentials.SpaceMember'",
@@ -4850,16 +4955,38 @@ var DataSpaceManager = class {
4850
4955
  return space;
4851
4956
  }
4852
4957
  async isDefaultSpace(space) {
4853
- const rootDoc = await this._getSpaceRootDocument(space);
4854
- const [_, properties] = findPropertiesObject(rootDoc.docSync()) ?? [];
4855
- return properties?.data?.[DEFAULT_SPACE_KEY] === this._signingContext.identityKey.toHex();
4958
+ if (!space.databaseRoot) {
4959
+ return false;
4960
+ }
4961
+ switch (space.databaseRoot.getVersion()) {
4962
+ case import_echo_protocol2.SpaceDocVersion.CURRENT: {
4963
+ const [_, properties] = (0, import_echo_db2.findInlineObjectOfType)(space.databaseRoot.docSync(), import_echo_schema2.TYPE_PROPERTIES) ?? [];
4964
+ return properties?.data?.[DEFAULT_SPACE_KEY] === this._signingContext.identityKey.toHex();
4965
+ }
4966
+ case import_echo_protocol2.SpaceDocVersion.LEGACY: {
4967
+ const convertedDoc = await (0, import_echo_db2.convertLegacyReferences)(space.databaseRoot.docSync());
4968
+ const [_, properties] = (0, import_echo_db2.findInlineObjectOfType)(convertedDoc, import_echo_protocol2.LEGACY_TYPE_PROPERTIES) ?? [];
4969
+ return properties?.data?.[DEFAULT_SPACE_KEY] === this._signingContext.identityKey.toHex();
4970
+ }
4971
+ default:
4972
+ import_log14.log.warn("unknown space version", {
4973
+ version: space.databaseRoot.getVersion(),
4974
+ spaceId: space.id
4975
+ }, {
4976
+ F: __dxlog_file17,
4977
+ L: 228,
4978
+ S: this,
4979
+ C: (f, a) => f(...a)
4980
+ });
4981
+ return false;
4982
+ }
4856
4983
  }
4857
4984
  async createDefaultSpace() {
4858
4985
  const space = await this.createSpace();
4859
4986
  const document = await this._getSpaceRootDocument(space);
4860
4987
  const properties = {
4861
4988
  system: {
4862
- type: (0, import_echo_protocol.encodeReference)((0, import_echo_schema2.getTypeReference)(import_client_protocol5.PropertiesType))
4989
+ type: (0, import_echo_protocol2.encodeReference)((0, import_echo_schema2.getTypeReference)(import_client_protocol5.PropertiesType))
4863
4990
  },
4864
4991
  data: {
4865
4992
  [DEFAULT_SPACE_KEY]: this._signingContext.identityKey.toHex()
@@ -4870,7 +4997,7 @@ var DataSpaceManager = class {
4870
4997
  };
4871
4998
  const propertiesId = (0, import_echo_schema2.generateEchoId)();
4872
4999
  document.change((doc) => {
4873
- (0, import_util8.assignDeep)(doc, [
5000
+ (0, import_util9.assignDeep)(doc, [
4874
5001
  "objects",
4875
5002
  propertiesId
4876
5003
  ], properties);
@@ -4880,9 +5007,9 @@ var DataSpaceManager = class {
4880
5007
  }
4881
5008
  async _getSpaceRootDocument(space) {
4882
5009
  const automergeIndex = space.automergeSpaceState.rootUrl;
4883
- (0, import_invariant14.invariant)(automergeIndex, void 0, {
4884
- F: __dxlog_file16,
4885
- L: 240,
5010
+ (0, import_invariant15.invariant)(automergeIndex, void 0, {
5011
+ F: __dxlog_file17,
5012
+ L: 261,
4886
5013
  S: this,
4887
5014
  A: [
4888
5015
  "automergeIndex",
@@ -4895,26 +5022,26 @@ var DataSpaceManager = class {
4895
5022
  }
4896
5023
  // TODO(burdon): Rename join space.
4897
5024
  async acceptSpace(opts) {
4898
- (0, import_log13.log)("accept space", {
5025
+ (0, import_log14.log)("accept space", {
4899
5026
  opts
4900
5027
  }, {
4901
- F: __dxlog_file16,
4902
- L: 249,
5028
+ F: __dxlog_file17,
5029
+ L: 270,
4903
5030
  S: this,
4904
5031
  C: (f, a) => f(...a)
4905
5032
  });
4906
- (0, import_invariant14.invariant)(this._isOpen, "Not open.", {
4907
- F: __dxlog_file16,
4908
- L: 250,
5033
+ (0, import_invariant15.invariant)(this._isOpen, "Not open.", {
5034
+ F: __dxlog_file17,
5035
+ L: 271,
4909
5036
  S: this,
4910
5037
  A: [
4911
5038
  "this._isOpen",
4912
5039
  "'Not open.'"
4913
5040
  ]
4914
5041
  });
4915
- (0, import_invariant14.invariant)(!this._spaces.has(opts.spaceKey), "Space already exists.", {
4916
- F: __dxlog_file16,
4917
- L: 251,
5042
+ (0, import_invariant15.invariant)(!this._spaces.has(opts.spaceKey), "Space already exists.", {
5043
+ F: __dxlog_file17,
5044
+ L: 272,
4918
5045
  S: this,
4919
5046
  A: [
4920
5047
  "!this._spaces.has(opts.spaceKey)",
@@ -4940,17 +5067,17 @@ var DataSpaceManager = class {
4940
5067
  * TODO(dmaretskyi): Consider removing.
4941
5068
  */
4942
5069
  async waitUntilSpaceReady(spaceKey) {
4943
- await (0, import_context12.cancelWithContext)(this._ctx, this.updated.waitForCondition(() => {
5070
+ await (0, import_context14.cancelWithContext)(this._ctx, this.updated.waitForCondition(() => {
4944
5071
  const space = this._spaces.get(spaceKey);
4945
- return !!space && space.state === import_services13.SpaceState.READY;
5072
+ return !!space && space.state === import_services14.SpaceState.READY;
4946
5073
  }));
4947
5074
  }
4948
5075
  async _constructSpace(metadata) {
4949
- (0, import_log13.log)("construct space", {
5076
+ (0, import_log14.log)("construct space", {
4950
5077
  metadata
4951
5078
  }, {
4952
- F: __dxlog_file16,
4953
- L: 285,
5079
+ F: __dxlog_file17,
5080
+ L: 306,
4954
5081
  S: this,
4955
5082
  C: (f, a) => f(...a)
4956
5083
  });
@@ -4975,7 +5102,7 @@ var DataSpaceManager = class {
4975
5102
  swarmIdentity: {
4976
5103
  peerKey: this._signingContext.deviceKey,
4977
5104
  credentialProvider: createAuthProvider(this._signingContext.credentialSigner),
4978
- credentialAuthenticator: (0, import_util8.deferFunction)(() => dataSpace.authVerifier.verifier)
5105
+ credentialAuthenticator: (0, import_util9.deferFunction)(() => dataSpace.authVerifier.verifier)
4979
5106
  },
4980
5107
  onAuthorizedConnection: (session) => {
4981
5108
  session.addExtension("dxos.mesh.teleport.gossip", gossip.createExtension({
@@ -4986,15 +5113,15 @@ var DataSpaceManager = class {
4986
5113
  session.addExtension("dxos.mesh.teleport.automerge", this._echoHost.createReplicationExtension());
4987
5114
  },
4988
5115
  onAuthFailure: () => {
4989
- import_log13.log.warn("auth failure", void 0, {
4990
- F: __dxlog_file16,
4991
- L: 322,
5116
+ import_log14.log.warn("auth failure", void 0, {
5117
+ F: __dxlog_file17,
5118
+ L: 343,
4992
5119
  S: this,
4993
5120
  C: (f, a) => f(...a)
4994
5121
  });
4995
5122
  },
4996
5123
  onMemberRolesChanged: async (members) => {
4997
- if (dataSpace?.state === import_services13.SpaceState.READY) {
5124
+ if (dataSpace?.state === import_services14.SpaceState.READY) {
4998
5125
  this._handleMemberRoleChanges(presence, space.protocol, members);
4999
5126
  }
5000
5127
  },
@@ -5007,7 +5134,7 @@ var DataSpaceManager = class {
5007
5134
  dataFeed && await space.setDataFeed(dataFeed);
5008
5135
  const dataSpace = new DataSpace({
5009
5136
  inner: space,
5010
- initialState: metadata.state === import_services13.SpaceState.INACTIVE ? import_services13.SpaceState.INACTIVE : import_services13.SpaceState.CLOSED,
5137
+ initialState: metadata.state === import_services14.SpaceState.INACTIVE ? import_services14.SpaceState.INACTIVE : import_services14.SpaceState.CLOSED,
5011
5138
  metadataStore: this._metadataStore,
5012
5139
  gossip,
5013
5140
  presence,
@@ -5017,22 +5144,22 @@ var DataSpaceManager = class {
5017
5144
  signingContext: this._signingContext,
5018
5145
  callbacks: {
5019
5146
  beforeReady: async () => {
5020
- (0, import_log13.log)("before space ready", {
5147
+ (0, import_log14.log)("before space ready", {
5021
5148
  space: space.key
5022
5149
  }, {
5023
- F: __dxlog_file16,
5024
- L: 349,
5150
+ F: __dxlog_file17,
5151
+ L: 370,
5025
5152
  S: this,
5026
5153
  C: (f, a) => f(...a)
5027
5154
  });
5028
5155
  },
5029
5156
  afterReady: async () => {
5030
- (0, import_log13.log)("after space ready", {
5157
+ (0, import_log14.log)("after space ready", {
5031
5158
  space: space.key,
5032
5159
  open: this._isOpen
5033
5160
  }, {
5034
- F: __dxlog_file16,
5035
- L: 352,
5161
+ F: __dxlog_file17,
5162
+ L: 373,
5036
5163
  S: this,
5037
5164
  C: (f, a) => f(...a)
5038
5165
  });
@@ -5047,11 +5174,11 @@ var DataSpaceManager = class {
5047
5174
  }
5048
5175
  },
5049
5176
  beforeClose: async () => {
5050
- (0, import_log13.log)("before space close", {
5177
+ (0, import_log14.log)("before space close", {
5051
5178
  space: space.key
5052
5179
  }, {
5053
- F: __dxlog_file16,
5054
- L: 360,
5180
+ F: __dxlog_file17,
5181
+ L: 381,
5055
5182
  S: this,
5056
5183
  C: (f, a) => f(...a)
5057
5184
  });
@@ -5060,7 +5187,7 @@ var DataSpaceManager = class {
5060
5187
  cache: metadata.cache
5061
5188
  });
5062
5189
  presence.newPeer.on((peerState) => {
5063
- if (dataSpace.state === import_services13.SpaceState.READY) {
5190
+ if (dataSpace.state === import_services14.SpaceState.READY) {
5064
5191
  this._handleNewPeerConnected(space, peerState);
5065
5192
  }
5066
5193
  });
@@ -5079,20 +5206,20 @@ var DataSpaceManager = class {
5079
5206
  const peers = presence.getPeersByIdentityKey(member.key);
5080
5207
  const sessions = peers.map((p) => p.peerId && spaceProtocol.sessions.get(p.peerId));
5081
5208
  const sessionsToClose = sessions.filter((s) => {
5082
- return (s && member.role === import_credentials16.SpaceMember.Role.REMOVED !== (s.authStatus === import_echo_pipeline3.AuthStatus.FAILURE)) ?? false;
5209
+ return (s && member.role === import_credentials16.SpaceMember.Role.REMOVED !== (s.authStatus === import_echo_pipeline4.AuthStatus.FAILURE)) ?? false;
5083
5210
  });
5084
5211
  sessionsToClose.forEach((session) => {
5085
- void session.close().catch(import_log13.log.error);
5212
+ void session.close().catch(import_log14.log.error);
5086
5213
  });
5087
5214
  closedSessions += sessionsToClose.length;
5088
5215
  }
5089
- (0, import_log13.log)("processed member role changes", {
5216
+ (0, import_log14.log)("processed member role changes", {
5090
5217
  roleChangeCount: memberInfo.length,
5091
5218
  peersOnline: presence.getPeersOnline().length,
5092
5219
  closedSessions
5093
5220
  }, {
5094
- F: __dxlog_file16,
5095
- L: 396,
5221
+ F: __dxlog_file17,
5222
+ L: 417,
5096
5223
  S: this,
5097
5224
  C: (f, a) => f(...a)
5098
5225
  });
@@ -5103,20 +5230,20 @@ var DataSpaceManager = class {
5103
5230
  if (role === import_credentials16.SpaceMember.Role.REMOVED) {
5104
5231
  const session = peerState.peerId && space.protocol.sessions.get(peerState.peerId);
5105
5232
  if (session != null) {
5106
- (0, import_log13.log)("closing a session with a removed peer", {
5233
+ (0, import_log14.log)("closing a session with a removed peer", {
5107
5234
  peerId: peerState.peerId
5108
5235
  }, {
5109
- F: __dxlog_file16,
5110
- L: 410,
5236
+ F: __dxlog_file17,
5237
+ L: 431,
5111
5238
  S: this,
5112
5239
  C: (f, a) => f(...a)
5113
5240
  });
5114
- void session.close().catch(import_log13.log.error);
5241
+ void session.close().catch(import_log14.log.error);
5115
5242
  }
5116
5243
  }
5117
5244
  }
5118
5245
  async _handleInvitationStatusChange(dataSpace, delegatedInvitation, isActive) {
5119
- if (dataSpace?.state !== import_services13.SpaceState.READY) {
5246
+ if (dataSpace?.state !== import_services14.SpaceState.READY) {
5120
5247
  return;
5121
5248
  }
5122
5249
  if (isActive) {
@@ -5133,8 +5260,8 @@ var DataSpaceManager = class {
5133
5260
  async _createDelegatedInvitations(space, invitations) {
5134
5261
  const tasks = invitations.map(([credentialId, invitation]) => {
5135
5262
  return this._invitationsManager.createInvitation({
5136
- type: import_services13.Invitation.Type.DELEGATED,
5137
- kind: import_services13.Invitation.Kind.SPACE,
5263
+ type: import_services14.Invitation.Type.DELEGATED,
5264
+ kind: import_services14.Invitation.Kind.SPACE,
5138
5265
  spaceKey: space.key,
5139
5266
  authMethod: invitation.authMethod,
5140
5267
  invitationId: invitation.invitationId,
@@ -5152,21 +5279,21 @@ var DataSpaceManager = class {
5152
5279
  }
5153
5280
  };
5154
5281
  _ts_decorate5([
5155
- import_async15.synchronized
5282
+ import_async16.synchronized
5156
5283
  ], DataSpaceManager.prototype, "open", null);
5157
5284
  _ts_decorate5([
5158
- import_async15.synchronized
5285
+ import_async16.synchronized
5159
5286
  ], DataSpaceManager.prototype, "close", null);
5160
5287
  _ts_decorate5([
5161
- import_async15.synchronized
5288
+ import_async16.synchronized
5162
5289
  ], DataSpaceManager.prototype, "createSpace", null);
5163
5290
  _ts_decorate5([
5164
- import_async15.synchronized
5291
+ import_async16.synchronized
5165
5292
  ], DataSpaceManager.prototype, "acceptSpace", null);
5166
5293
  DataSpaceManager = _ts_decorate5([
5167
- (0, import_async15.trackLeaks)("open", "close")
5294
+ (0, import_async16.trackLeaks)("open", "close")
5168
5295
  ], DataSpaceManager);
5169
- var __dxlog_file17 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/spaces-service.ts";
5296
+ var __dxlog_file18 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/spaces-service.ts";
5170
5297
  var SpacesServiceImpl = class {
5171
5298
  constructor(_identityManager, _spaceManager, _getDataSpaceManager) {
5172
5299
  this._identityManager = _identityManager;
@@ -5185,10 +5312,10 @@ var SpacesServiceImpl = class {
5185
5312
  const space = dataSpaceManager.spaces.get(spaceKey) ?? (0, import_debug5.raise)(new import_protocols12.SpaceNotFoundError(spaceKey));
5186
5313
  if (state) {
5187
5314
  switch (state) {
5188
- case import_services14.SpaceState.ACTIVE:
5315
+ case import_services15.SpaceState.ACTIVE:
5189
5316
  await space.activate();
5190
5317
  break;
5191
- case import_services14.SpaceState.INACTIVE:
5318
+ case import_services15.SpaceState.INACTIVE:
5192
5319
  await space.deactivate();
5193
5320
  break;
5194
5321
  default:
@@ -5209,9 +5336,9 @@ var SpacesServiceImpl = class {
5209
5336
  });
5210
5337
  }
5211
5338
  const credentials = await (0, import_credentials19.createAdmissionCredentials)(identity.getIdentityCredentialSigner(), request.memberKey, space.key, space.genesisFeedKey, request.newRole, space.spaceState.membershipChainHeads);
5212
- (0, import_invariant15.invariant)(credentials[0].credential, void 0, {
5213
- F: __dxlog_file17,
5214
- L: 97,
5339
+ (0, import_invariant16.invariant)(credentials[0].credential, void 0, {
5340
+ F: __dxlog_file18,
5341
+ L: 98,
5215
5342
  S: this,
5216
5343
  A: [
5217
5344
  "credentials[0].credential",
@@ -5219,9 +5346,9 @@ var SpacesServiceImpl = class {
5219
5346
  ]
5220
5347
  });
5221
5348
  const spaceMemberCredential = credentials[0].credential.credential;
5222
- (0, import_invariant15.invariant)((0, import_credentials19.getCredentialAssertion)(spaceMemberCredential)["@type"] === "dxos.halo.credentials.SpaceMember", void 0, {
5223
- F: __dxlog_file17,
5224
- L: 99,
5349
+ (0, import_invariant16.invariant)((0, import_credentials19.getCredentialAssertion)(spaceMemberCredential)["@type"] === "dxos.halo.credentials.SpaceMember", void 0, {
5350
+ F: __dxlog_file18,
5351
+ L: 100,
5225
5352
  S: this,
5226
5353
  A: [
5227
5354
  "getCredentialAssertion(spaceMemberCredential)['@type'] === 'dxos.halo.credentials.SpaceMember'",
@@ -5232,14 +5359,14 @@ var SpacesServiceImpl = class {
5232
5359
  }
5233
5360
  querySpaces() {
5234
5361
  return new import_codec_protobuf11.Stream(({ next, ctx }) => {
5235
- const scheduler = new import_async16.UpdateScheduler(ctx, async () => {
5362
+ const scheduler = new import_async17.UpdateScheduler(ctx, async () => {
5236
5363
  const dataSpaceManager = await this._getDataSpaceManager();
5237
5364
  const spaces = Array.from(dataSpaceManager.spaces.values()).map((space) => this._serializeSpace(space));
5238
- (0, import_log14.log)("update", {
5365
+ (0, import_log15.log)("update", {
5239
5366
  spaces
5240
5367
  }, {
5241
- F: __dxlog_file17,
5242
- L: 110,
5368
+ F: __dxlog_file18,
5369
+ L: 111,
5243
5370
  S: this,
5244
5371
  C: (f, a) => f(...a)
5245
5372
  });
@@ -5250,9 +5377,9 @@ var SpacesServiceImpl = class {
5250
5377
  }, {
5251
5378
  maxFrequency: process.env.NODE_ENV === "test" ? void 0 : 2
5252
5379
  });
5253
- (0, import_async16.scheduleTask)(ctx, async () => {
5380
+ (0, import_async17.scheduleTask)(ctx, async () => {
5254
5381
  const dataSpaceManager = await this._getDataSpaceManager();
5255
- const subscriptions = new import_async16.EventSubscriptions();
5382
+ const subscriptions = new import_async17.EventSubscriptions();
5256
5383
  ctx.onDispose(() => subscriptions.clear());
5257
5384
  const subscribeSpaces = () => {
5258
5385
  subscriptions.clear();
@@ -5284,7 +5411,7 @@ var SpacesServiceImpl = class {
5284
5411
  }
5285
5412
  subscribeMessages({ spaceKey, channel }) {
5286
5413
  return new import_codec_protobuf11.Stream(({ ctx, next }) => {
5287
- (0, import_async16.scheduleTask)(ctx, async () => {
5414
+ (0, import_async17.scheduleTask)(ctx, async () => {
5288
5415
  const dataSpaceManager = await this._getDataSpaceManager();
5289
5416
  const space = dataSpaceManager.spaces.get(spaceKey) ?? (0, import_debug5.raise)(new import_protocols12.SpaceNotFoundError(spaceKey));
5290
5417
  const handle = space.listen(getChannelId(channel), (message) => {
@@ -5303,7 +5430,7 @@ var SpacesServiceImpl = class {
5303
5430
  }
5304
5431
  };
5305
5432
  ctx.onDispose(() => space.spaceState.removeCredentialProcessor(processor));
5306
- (0, import_async16.scheduleTask)(ctx, async () => {
5433
+ (0, import_async17.scheduleTask)(ctx, async () => {
5307
5434
  await space.spaceState.addCredentialProcessor(processor);
5308
5435
  if (noTail) {
5309
5436
  close();
@@ -5321,18 +5448,18 @@ var SpacesServiceImpl = class {
5321
5448
  }
5322
5449
  });
5323
5450
  } else {
5324
- (0, import_invariant15.invariant)(!credential.id, "Id on unsigned credentials is not allowed", {
5325
- F: __dxlog_file17,
5326
- L: 198,
5451
+ (0, import_invariant16.invariant)(!credential.id, "Id on unsigned credentials is not allowed", {
5452
+ F: __dxlog_file18,
5453
+ L: 199,
5327
5454
  S: this,
5328
5455
  A: [
5329
5456
  "!credential.id",
5330
5457
  "'Id on unsigned credentials is not allowed'"
5331
5458
  ]
5332
5459
  });
5333
- (0, import_invariant15.invariant)(this._identityManager.identity, "Identity is not available", {
5334
- F: __dxlog_file17,
5335
- L: 199,
5460
+ (0, import_invariant16.invariant)(this._identityManager.identity, "Identity is not available", {
5461
+ F: __dxlog_file18,
5462
+ L: 200,
5336
5463
  S: this,
5337
5464
  A: [
5338
5465
  "this._identityManager.identity",
@@ -5340,9 +5467,9 @@ var SpacesServiceImpl = class {
5340
5467
  ]
5341
5468
  });
5342
5469
  const signer = this._identityManager.identity.getIdentityCredentialSigner();
5343
- (0, import_invariant15.invariant)(credential.issuer.equals(signer.getIssuer()), void 0, {
5344
- F: __dxlog_file17,
5345
- L: 201,
5470
+ (0, import_invariant16.invariant)(credential.issuer.equals(signer.getIssuer()), void 0, {
5471
+ F: __dxlog_file18,
5472
+ L: 202,
5346
5473
  S: this,
5347
5474
  A: [
5348
5475
  "credential.issuer.equals(signer.getIssuer())",
@@ -5364,10 +5491,13 @@ var SpacesServiceImpl = class {
5364
5491
  async createEpoch({ spaceKey, migration, automergeRootUrl }) {
5365
5492
  const dataSpaceManager = await this._getDataSpaceManager();
5366
5493
  const space = dataSpaceManager.spaces.get(spaceKey) ?? (0, import_debug5.raise)(new import_protocols12.SpaceNotFoundError(spaceKey));
5367
- await space.createEpoch({
5494
+ const credential = await space.createEpoch({
5368
5495
  migration,
5369
5496
  newAutomergeRoot: automergeRootUrl
5370
5497
  });
5498
+ return {
5499
+ epochCredential: credential ?? void 0
5500
+ };
5371
5501
  }
5372
5502
  _serializeSpace(space) {
5373
5503
  return {
@@ -5400,7 +5530,7 @@ var SpacesServiceImpl = class {
5400
5530
  profile: member.profile ?? {}
5401
5531
  },
5402
5532
  role: member.role,
5403
- presence: peers.length > 0 ? import_services14.SpaceMember.PresenceState.ONLINE : import_services14.SpaceMember.PresenceState.OFFLINE,
5533
+ presence: peers.length > 0 ? import_services15.SpaceMember.PresenceState.ONLINE : import_services15.SpaceMember.PresenceState.OFFLINE,
5404
5534
  peerStates: peers
5405
5535
  };
5406
5536
  }),
@@ -5438,8 +5568,8 @@ function _ts_decorate6(decorators, target, key, desc) {
5438
5568
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5439
5569
  return c > 3 && r && Object.defineProperty(target, key, r), r;
5440
5570
  }
5441
- var __dxlog_file18 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/services/service-context.ts";
5442
- var ServiceContext = class extends import_context13.Resource {
5571
+ var __dxlog_file19 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/services/service-context.ts";
5572
+ var ServiceContext = class extends import_context15.Resource {
5443
5573
  constructor(storage, level, networkManager, signalManager, _runtimeParams) {
5444
5574
  super();
5445
5575
  this.storage = storage;
@@ -5447,11 +5577,11 @@ var ServiceContext = class extends import_context13.Resource {
5447
5577
  this.networkManager = networkManager;
5448
5578
  this.signalManager = signalManager;
5449
5579
  this._runtimeParams = _runtimeParams;
5450
- this.initialized = new import_async17.Trigger();
5580
+ this.initialized = new import_async18.Trigger();
5451
5581
  this._handlerFactories = /* @__PURE__ */ new Map();
5452
5582
  this._instanceId = import_keys13.PublicKey.random().toHex();
5453
- this.metadataStore = new import_echo_pipeline4.MetadataStore(storage.createDirectory("metadata"));
5454
- this.snapshotStore = new import_echo_pipeline4.SnapshotStore(storage.createDirectory("snapshots"));
5583
+ this.metadataStore = new import_echo_pipeline5.MetadataStore(storage.createDirectory("metadata"));
5584
+ this.snapshotStore = new import_echo_pipeline5.SnapshotStore(storage.createDirectory("snapshots"));
5455
5585
  this.blobStore = new import_teleport_extension_object_sync.BlobStore(storage.createDirectory("blobs"));
5456
5586
  this.keyring = new import_keyring.Keyring(storage.createDirectory("keyring"));
5457
5587
  this.feedStore = new import_feed_store5.FeedStore({
@@ -5459,12 +5589,12 @@ var ServiceContext = class extends import_context13.Resource {
5459
5589
  root: storage.createDirectory("feeds"),
5460
5590
  signer: this.keyring,
5461
5591
  hypercore: {
5462
- valueEncoding: import_echo_pipeline4.valueEncoding,
5592
+ valueEncoding: import_echo_pipeline5.valueEncoding,
5463
5593
  stats: true
5464
5594
  }
5465
5595
  })
5466
5596
  });
5467
- this.spaceManager = new import_echo_pipeline4.SpaceManager({
5597
+ this.spaceManager = new import_echo_pipeline5.SpaceManager({
5468
5598
  feedStore: this.feedStore,
5469
5599
  networkManager: this.networkManager,
5470
5600
  blobStore: this.blobStore,
@@ -5472,25 +5602,25 @@ var ServiceContext = class extends import_context13.Resource {
5472
5602
  snapshotStore: this.snapshotStore
5473
5603
  });
5474
5604
  this.identityManager = new IdentityManager(this.metadataStore, this.keyring, this.feedStore, this.spaceManager, this._runtimeParams);
5475
- this.echoHost = new import_echo_db.EchoHost({
5605
+ this.echoHost = new import_echo_db3.EchoHost({
5476
5606
  kv: this.level
5477
5607
  });
5478
5608
  this.invitations = new InvitationsHandler(this.networkManager, _runtimeParams?.invitationConnectionDefaultParams);
5479
5609
  this.invitationsManager = new InvitationsManager(this.invitations, (invitation) => this.getInvitationHandler(invitation), this.metadataStore);
5480
- this._handlerFactories.set(import_services15.Invitation.Kind.DEVICE, () => new DeviceInvitationProtocol(this.keyring, () => this.identityManager.identity ?? (0, import_debug6.failUndefined)(), this._acceptIdentity.bind(this)));
5610
+ this._handlerFactories.set(import_services16.Invitation.Kind.DEVICE, () => new DeviceInvitationProtocol(this.keyring, () => this.identityManager.identity ?? (0, import_debug6.failUndefined)(), this._acceptIdentity.bind(this)));
5481
5611
  }
5482
5612
  async _open(ctx) {
5483
5613
  await this._checkStorageVersion();
5484
- (0, import_log15.log)("opening...", void 0, {
5485
- F: __dxlog_file18,
5614
+ (0, import_log16.log)("opening...", void 0, {
5615
+ F: __dxlog_file19,
5486
5616
  L: 149,
5487
5617
  S: this,
5488
5618
  C: (f, a) => f(...a)
5489
5619
  });
5490
- import_log15.log.trace("dxos.sdk.service-context.open", import_protocols13.trace.begin({
5620
+ import_log16.log.trace("dxos.sdk.service-context.open", import_protocols13.trace.begin({
5491
5621
  id: this._instanceId
5492
5622
  }), {
5493
- F: __dxlog_file18,
5623
+ F: __dxlog_file19,
5494
5624
  L: 150,
5495
5625
  S: this,
5496
5626
  C: (f, a) => f(...a)
@@ -5505,32 +5635,32 @@ var ServiceContext = class extends import_context13.Resource {
5505
5635
  await this._initialize(ctx);
5506
5636
  }
5507
5637
  const loadedInvitations = await this.invitationsManager.loadPersistentInvitations();
5508
- (0, import_log15.log)("loaded persistent invitations", {
5638
+ (0, import_log16.log)("loaded persistent invitations", {
5509
5639
  count: loadedInvitations.invitations?.length
5510
5640
  }, {
5511
- F: __dxlog_file18,
5641
+ F: __dxlog_file19,
5512
5642
  L: 163,
5513
5643
  S: this,
5514
5644
  C: (f, a) => f(...a)
5515
5645
  });
5516
- import_log15.log.trace("dxos.sdk.service-context.open", import_protocols13.trace.end({
5646
+ import_log16.log.trace("dxos.sdk.service-context.open", import_protocols13.trace.end({
5517
5647
  id: this._instanceId
5518
5648
  }), {
5519
- F: __dxlog_file18,
5649
+ F: __dxlog_file19,
5520
5650
  L: 165,
5521
5651
  S: this,
5522
5652
  C: (f, a) => f(...a)
5523
5653
  });
5524
- (0, import_log15.log)("opened", void 0, {
5525
- F: __dxlog_file18,
5654
+ (0, import_log16.log)("opened", void 0, {
5655
+ F: __dxlog_file19,
5526
5656
  L: 166,
5527
5657
  S: this,
5528
5658
  C: (f, a) => f(...a)
5529
5659
  });
5530
5660
  }
5531
5661
  async _close(ctx) {
5532
- (0, import_log15.log)("closing...", void 0, {
5533
- F: __dxlog_file18,
5662
+ (0, import_log16.log)("closing...", void 0, {
5663
+ F: __dxlog_file19,
5534
5664
  L: 170,
5535
5665
  S: this,
5536
5666
  C: (f, a) => f(...a)
@@ -5546,8 +5676,8 @@ var ServiceContext = class extends import_context13.Resource {
5546
5676
  await this.echoHost.close(ctx);
5547
5677
  await this.networkManager.close();
5548
5678
  await this.signalManager.close();
5549
- (0, import_log15.log)("closed", void 0, {
5550
- F: __dxlog_file18,
5679
+ (0, import_log16.log)("closed", void 0, {
5680
+ F: __dxlog_file19,
5551
5681
  L: 182,
5552
5682
  S: this,
5553
5683
  C: (f, a) => f(...a)
@@ -5555,13 +5685,13 @@ var ServiceContext = class extends import_context13.Resource {
5555
5685
  }
5556
5686
  async createIdentity(params = {}) {
5557
5687
  const identity = await this.identityManager.createIdentity(params);
5558
- await this._initialize(new import_context13.Context());
5688
+ await this._initialize(new import_context15.Context());
5559
5689
  return identity;
5560
5690
  }
5561
5691
  getInvitationHandler(invitation) {
5562
5692
  const factory = this._handlerFactories.get(invitation.kind);
5563
- (0, import_invariant16.invariant)(factory, `Unknown invitation kind: ${invitation.kind}`, {
5564
- F: __dxlog_file18,
5693
+ (0, import_invariant17.invariant)(factory, `Unknown invitation kind: ${invitation.kind}`, {
5694
+ F: __dxlog_file19,
5565
5695
  L: 193,
5566
5696
  S: this,
5567
5697
  A: [
@@ -5581,7 +5711,7 @@ var ServiceContext = class extends import_context13.Resource {
5581
5711
  }
5582
5712
  async _acceptIdentity(params) {
5583
5713
  const identity = await this.identityManager.acceptIdentity(params);
5584
- await this._initialize(new import_context13.Context());
5714
+ await this._initialize(new import_context15.Context());
5585
5715
  return identity;
5586
5716
  }
5587
5717
  async _checkStorageVersion() {
@@ -5592,8 +5722,8 @@ var ServiceContext = class extends import_context13.Resource {
5592
5722
  }
5593
5723
  // Called when identity is created.
5594
5724
  async _initialize(ctx) {
5595
- (0, import_log15.log)("initializing spaces...", void 0, {
5596
- F: __dxlog_file18,
5725
+ (0, import_log16.log)("initializing spaces...", void 0, {
5726
+ F: __dxlog_file19,
5597
5727
  L: 224,
5598
5728
  S: this,
5599
5729
  C: (f, a) => f(...a)
@@ -5614,9 +5744,9 @@ var ServiceContext = class extends import_context13.Resource {
5614
5744
  };
5615
5745
  this.dataSpaceManager = new DataSpaceManager(this.spaceManager, this.metadataStore, this.keyring, signingContext, this.feedStore, this.echoHost, this.invitationsManager, this._runtimeParams);
5616
5746
  await this.dataSpaceManager.open();
5617
- this._handlerFactories.set(import_services15.Invitation.Kind.SPACE, (invitation) => {
5618
- (0, import_invariant16.invariant)(this.dataSpaceManager, "dataSpaceManager not initialized yet", {
5619
- F: __dxlog_file18,
5747
+ this._handlerFactories.set(import_services16.Invitation.Kind.SPACE, (invitation) => {
5748
+ (0, import_invariant17.invariant)(this.dataSpaceManager, "dataSpaceManager not initialized yet", {
5749
+ F: __dxlog_file19,
5620
5750
  L: 249,
5621
5751
  S: this,
5622
5752
  A: [
@@ -5637,10 +5767,10 @@ var ServiceContext = class extends import_context13.Resource {
5637
5767
  return;
5638
5768
  }
5639
5769
  if (!this.dataSpaceManager) {
5640
- (0, import_log15.log)("dataSpaceManager not initialized yet, ignoring space admission", {
5770
+ (0, import_log16.log)("dataSpaceManager not initialized yet, ignoring space admission", {
5641
5771
  details: assertion
5642
5772
  }, {
5643
- F: __dxlog_file18,
5773
+ F: __dxlog_file19,
5644
5774
  L: 265,
5645
5775
  S: this,
5646
5776
  C: (f, a) => f(...a)
@@ -5648,10 +5778,10 @@ var ServiceContext = class extends import_context13.Resource {
5648
5778
  return;
5649
5779
  }
5650
5780
  if (this.dataSpaceManager.spaces.has(assertion.spaceKey)) {
5651
- (0, import_log15.log)("space already exists, ignoring space admission", {
5781
+ (0, import_log16.log)("space already exists, ignoring space admission", {
5652
5782
  details: assertion
5653
5783
  }, {
5654
- F: __dxlog_file18,
5784
+ F: __dxlog_file19,
5655
5785
  L: 269,
5656
5786
  S: this,
5657
5787
  C: (f, a) => f(...a)
@@ -5659,10 +5789,10 @@ var ServiceContext = class extends import_context13.Resource {
5659
5789
  return;
5660
5790
  }
5661
5791
  try {
5662
- (0, import_log15.log)("accepting space recorded in halo", {
5792
+ (0, import_log16.log)("accepting space recorded in halo", {
5663
5793
  details: assertion
5664
5794
  }, {
5665
- F: __dxlog_file18,
5795
+ F: __dxlog_file19,
5666
5796
  L: 274,
5667
5797
  S: this,
5668
5798
  C: (f, a) => f(...a)
@@ -5672,8 +5802,8 @@ var ServiceContext = class extends import_context13.Resource {
5672
5802
  genesisFeedKey: assertion.genesisFeedKey
5673
5803
  });
5674
5804
  } catch (err) {
5675
- import_log15.log.catch(err, void 0, {
5676
- F: __dxlog_file18,
5805
+ import_log16.log.catch(err, void 0, {
5806
+ F: __dxlog_file19,
5677
5807
  L: 280,
5678
5808
  S: this,
5679
5809
  C: (f, a) => f(...a)
@@ -5691,7 +5821,7 @@ _ts_decorate6([
5691
5821
  import_tracing8.trace.span()
5692
5822
  ], ServiceContext.prototype, "_initialize", null);
5693
5823
  ServiceContext = _ts_decorate6([
5694
- (0, import_util9.safeInstanceof)("dxos.client-services.ServiceContext"),
5824
+ (0, import_util10.safeInstanceof)("dxos.client-services.ServiceContext"),
5695
5825
  import_tracing8.trace.resource()
5696
5826
  ], ServiceContext);
5697
5827
  var ServiceRegistry = class {
@@ -5726,7 +5856,7 @@ function _ts_decorate7(decorators, target, key, desc) {
5726
5856
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5727
5857
  return c > 3 && r && Object.defineProperty(target, key, r), r;
5728
5858
  }
5729
- var __dxlog_file19 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/locks/node.ts";
5859
+ var __dxlog_file20 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/locks/node.ts";
5730
5860
  var Lock = class {
5731
5861
  constructor({ lockKey: lockPath, onAcquire, onRelease }) {
5732
5862
  this._lockPath = lockPath;
@@ -5737,16 +5867,16 @@ var Lock = class {
5737
5867
  return this._lockPath;
5738
5868
  }
5739
5869
  async acquire() {
5740
- (0, import_log16.log)("acquiring lock...", void 0, {
5741
- F: __dxlog_file19,
5870
+ (0, import_log17.log)("acquiring lock...", void 0, {
5871
+ F: __dxlog_file20,
5742
5872
  L: 32,
5743
5873
  S: this,
5744
5874
  C: (f, a) => f(...a)
5745
5875
  });
5746
5876
  this._fileHandle = await import_lock_file.LockFile.acquire(this._lockPath);
5747
5877
  await this._onAcquire?.();
5748
- (0, import_log16.log)("acquired lock", void 0, {
5749
- F: __dxlog_file19,
5878
+ (0, import_log17.log)("acquired lock", void 0, {
5879
+ F: __dxlog_file20,
5750
5880
  L: 37,
5751
5881
  S: this,
5752
5882
  C: (f, a) => f(...a)
@@ -5754,8 +5884,8 @@ var Lock = class {
5754
5884
  }
5755
5885
  async release() {
5756
5886
  await this._onRelease?.();
5757
- (0, import_invariant17.invariant)(this._fileHandle, "Lock is not acquired", {
5758
- F: __dxlog_file19,
5887
+ (0, import_invariant18.invariant)(this._fileHandle, "Lock is not acquired", {
5888
+ F: __dxlog_file20,
5759
5889
  L: 42,
5760
5890
  S: this,
5761
5891
  A: [
@@ -5767,11 +5897,11 @@ var Lock = class {
5767
5897
  }
5768
5898
  };
5769
5899
  _ts_decorate7([
5770
- import_log16.logInfo
5900
+ import_log17.logInfo
5771
5901
  ], Lock.prototype, "lockKey", null);
5772
5902
  var isLocked = (lockPath) => import_lock_file.LockFile.isLocked(lockPath);
5773
5903
  var getRootPath = (config) => {
5774
- const { dataRoot = (0, import_util10.isNode)() ? import_client_protocol6.DX_DATA : "dxos/storage" } = config ?? {};
5904
+ const { dataRoot = (0, import_util11.isNode)() ? import_client_protocol6.DX_DATA : "dxos/storage" } = config ?? {};
5775
5905
  return `${dataRoot}/`;
5776
5906
  };
5777
5907
  var isPersistent = (config) => {
@@ -5827,7 +5957,7 @@ var createLevel = async (config) => {
5827
5957
  await level.open();
5828
5958
  return level;
5829
5959
  };
5830
- var __dxlog_file20 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/devices/devices-service.ts";
5960
+ var __dxlog_file21 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/devices/devices-service.ts";
5831
5961
  var DevicesServiceImpl = class {
5832
5962
  constructor(_identityManager) {
5833
5963
  this._identityManager = _identityManager;
@@ -5844,8 +5974,8 @@ var DevicesServiceImpl = class {
5844
5974
  devices: []
5845
5975
  });
5846
5976
  } else {
5847
- (0, import_invariant19.invariant)(this._identityManager.identity?.presence, "presence not present", {
5848
- F: __dxlog_file20,
5977
+ (0, import_invariant20.invariant)(this._identityManager.identity?.presence, "presence not present", {
5978
+ F: __dxlog_file21,
5849
5979
  L: 32,
5850
5980
  S: this,
5851
5981
  A: [
@@ -5860,9 +5990,9 @@ var DevicesServiceImpl = class {
5860
5990
  const peerState = peers.find((peer) => peer.identityKey.equals(key));
5861
5991
  return {
5862
5992
  deviceKey: key,
5863
- kind: this._identityManager.identity?.deviceKey.equals(key) ? import_services17.DeviceKind.CURRENT : import_services17.DeviceKind.TRUSTED,
5993
+ kind: this._identityManager.identity?.deviceKey.equals(key) ? import_services18.DeviceKind.CURRENT : import_services18.DeviceKind.TRUSTED,
5864
5994
  profile,
5865
- presence: isMe ? import_services17.Device.PresenceState.ONLINE : peerState ? import_services17.Device.PresenceState.ONLINE : import_services17.Device.PresenceState.OFFLINE
5995
+ presence: isMe ? import_services18.Device.PresenceState.ONLINE : peerState ? import_services18.Device.PresenceState.ONLINE : import_services18.Device.PresenceState.OFFLINE
5866
5996
  };
5867
5997
  })
5868
5998
  });
@@ -5886,7 +6016,7 @@ var DevicesServiceImpl = class {
5886
6016
  presenceSubscribed = true;
5887
6017
  }
5888
6018
  };
5889
- const subscriptions = new import_async19.EventSubscriptions();
6019
+ const subscriptions = new import_async20.EventSubscriptions();
5890
6020
  if (this._identityManager.identity) {
5891
6021
  subscribeIdentity();
5892
6022
  subscribePresence();
@@ -5911,7 +6041,7 @@ var DiagnosticsCollector = class {
5911
6041
  }
5912
6042
  static async collect(config = findConfigs(), services = findSystemServiceProvider(), options = {}) {
5913
6043
  const serviceDiagnostics = await services?.services?.SystemService?.getDiagnostics({
5914
- keys: options.humanize ? import_services18.GetDiagnosticsRequest.KEY_OPTION.HUMANIZE : options.truncate ? import_services18.GetDiagnosticsRequest.KEY_OPTION.TRUNCATE : void 0
6044
+ keys: options.humanize ? import_services19.GetDiagnosticsRequest.KEY_OPTION.HUMANIZE : options.truncate ? import_services19.GetDiagnosticsRequest.KEY_OPTION.TRUNCATE : void 0
5915
6045
  }, {
5916
6046
  timeout: GET_DIAGNOSTICS_RPC_TIMEOUT
5917
6047
  });
@@ -5926,7 +6056,7 @@ var DiagnosticsCollector = class {
5926
6056
  client: clientDiagnostics,
5927
6057
  broadcast: await this.broadcastSender.broadcastDiagnosticsRequest()
5928
6058
  };
5929
- return JSON.parse(JSON.stringify(diagnostics, (0, import_util11.jsonKeyReplacer)(options)));
6059
+ return JSON.parse(JSON.stringify(diagnostics, (0, import_util12.jsonKeyReplacer)(options)));
5930
6060
  }
5931
6061
  };
5932
6062
  var findSystemServiceProvider = () => {
@@ -5936,11 +6066,11 @@ var findSystemServiceProvider = () => {
5936
6066
  };
5937
6067
  var findConfigs = () => {
5938
6068
  const configs = import_tracing10.TRACE_PROCESSOR.findResourcesByAnnotation(import_config3.ConfigResource);
5939
- return configs.map((r) => r.instance.deref()).filter(import_util11.nonNullable);
6069
+ return configs.map((r) => r.instance.deref()).filter(import_util12.nonNullable);
5940
6070
  };
5941
6071
  var LoggingServiceImpl = class {
5942
6072
  constructor() {
5943
- this._logs = new import_async20.Event();
6073
+ this._logs = new import_async21.Event();
5944
6074
  this._started = Date.now();
5945
6075
  this._sessionId = import_keys17.PublicKey.random().toHex();
5946
6076
  this._logProcessor = (_config, entry2) => {
@@ -5948,23 +6078,23 @@ var LoggingServiceImpl = class {
5948
6078
  };
5949
6079
  }
5950
6080
  async open() {
5951
- import_log18.log.runtimeConfig.processors.push(this._logProcessor);
6081
+ import_log19.log.runtimeConfig.processors.push(this._logProcessor);
5952
6082
  }
5953
6083
  async close() {
5954
- const index = import_log18.log.runtimeConfig.processors.findIndex((processor) => processor === this._logProcessor);
5955
- import_log18.log.runtimeConfig.processors.splice(index, 1);
6084
+ const index = import_log19.log.runtimeConfig.processors.findIndex((processor) => processor === this._logProcessor);
6085
+ import_log19.log.runtimeConfig.processors.splice(index, 1);
5956
6086
  }
5957
6087
  async controlMetrics({ reset, record }) {
5958
6088
  if (reset) {
5959
- import_util13.tracer.clear();
6089
+ import_util14.tracer.clear();
5960
6090
  }
5961
6091
  if (record === true) {
5962
- import_util13.tracer.start();
6092
+ import_util14.tracer.start();
5963
6093
  } else if (record === false) {
5964
- import_util13.tracer.stop();
6094
+ import_util14.tracer.stop();
5965
6095
  }
5966
6096
  return {
5967
- recording: import_util13.tracer.recording
6097
+ recording: import_util14.tracer.recording
5968
6098
  };
5969
6099
  }
5970
6100
  /**
@@ -5972,10 +6102,10 @@ var LoggingServiceImpl = class {
5972
6102
  */
5973
6103
  queryMetrics({ interval = 5e3 }) {
5974
6104
  const getNumericalValues = (key) => {
5975
- const events = import_util13.tracer.get(key) ?? [];
6105
+ const events = import_util14.tracer.get(key) ?? [];
5976
6106
  return {
5977
6107
  key,
5978
- stats: (0, import_util13.numericalValues)(events, "duration")
6108
+ stats: (0, import_util14.numericalValues)(events, "duration")
5979
6109
  };
5980
6110
  };
5981
6111
  return new import_codec_protobuf13.Stream(({ next }) => {
@@ -6013,7 +6143,7 @@ var LoggingServiceImpl = class {
6013
6143
  }
6014
6144
  const record = {
6015
6145
  ...entry2,
6016
- context: (0, import_util13.jsonify)((0, import_log18.getContextFromEntry)(entry2)),
6146
+ context: (0, import_util14.jsonify)((0, import_log19.getContextFromEntry)(entry2)),
6017
6147
  timestamp: /* @__PURE__ */ new Date(),
6018
6148
  meta: {
6019
6149
  // TODO(dmaretskyi): Fix proto.
@@ -6022,7 +6152,7 @@ var LoggingServiceImpl = class {
6022
6152
  scope: {
6023
6153
  hostSessionId: this._sessionId,
6024
6154
  uptimeSeconds: (Date.now() - this._started) / 1e3,
6025
- name: (0, import_util13.getDebugName)(entry2.meta?.S)
6155
+ name: (0, import_util14.getDebugName)(entry2.meta?.S)
6026
6156
  }
6027
6157
  }
6028
6158
  };
@@ -6039,16 +6169,16 @@ var LoggingServiceImpl = class {
6039
6169
  };
6040
6170
  var matchFilter = (filter, level, path2, options) => {
6041
6171
  switch (options) {
6042
- case import_services19.QueryLogsRequest.MatchingOptions.INCLUSIVE:
6172
+ case import_services20.QueryLogsRequest.MatchingOptions.INCLUSIVE:
6043
6173
  return level >= filter.level && (!filter.pattern || path2.includes(filter.pattern));
6044
- case import_services19.QueryLogsRequest.MatchingOptions.EXPLICIT:
6174
+ case import_services20.QueryLogsRequest.MatchingOptions.EXPLICIT:
6045
6175
  return level === filter.level && (!filter.pattern || path2.includes(filter.pattern));
6046
6176
  }
6047
6177
  };
6048
6178
  var shouldLog = (entry2, request) => {
6049
- const options = request.options ?? import_services19.QueryLogsRequest.MatchingOptions.INCLUSIVE;
6179
+ const options = request.options ?? import_services20.QueryLogsRequest.MatchingOptions.INCLUSIVE;
6050
6180
  if (request.filters === void 0) {
6051
- return options === import_services19.QueryLogsRequest.MatchingOptions.INCLUSIVE;
6181
+ return options === import_services20.QueryLogsRequest.MatchingOptions.INCLUSIVE;
6052
6182
  } else {
6053
6183
  return request.filters.some((filter) => matchFilter(filter, entry2.level, entry2.meta?.F ?? "", options));
6054
6184
  }
@@ -6103,9 +6233,9 @@ var SystemServiceImpl = class {
6103
6233
  const diagnostics = await this._getDiagnostics();
6104
6234
  return {
6105
6235
  timestamp: /* @__PURE__ */ new Date(),
6106
- diagnostics: JSON.parse(JSON.stringify(diagnostics, (0, import_util14.jsonKeyReplacer)({
6107
- truncate: keys === import_services20.GetDiagnosticsRequest.KEY_OPTION.TRUNCATE,
6108
- humanize: keys === import_services20.GetDiagnosticsRequest.KEY_OPTION.HUMANIZE
6236
+ diagnostics: JSON.parse(JSON.stringify(diagnostics, (0, import_util15.jsonKeyReplacer)({
6237
+ truncate: keys === import_services21.GetDiagnosticsRequest.KEY_OPTION.TRUNCATE,
6238
+ humanize: keys === import_services21.GetDiagnosticsRequest.KEY_OPTION.HUMANIZE
6109
6239
  })))
6110
6240
  };
6111
6241
  }
@@ -6146,7 +6276,7 @@ function _ts_decorate8(decorators, target, key, desc) {
6146
6276
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6147
6277
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6148
6278
  }
6149
- var __dxlog_file21 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/services/service-host.ts";
6279
+ var __dxlog_file22 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/services/service-host.ts";
6150
6280
  var ClientServicesHost = class {
6151
6281
  constructor({
6152
6282
  config,
@@ -6160,7 +6290,7 @@ var ClientServicesHost = class {
6160
6290
  runtimeParams
6161
6291
  } = {}) {
6162
6292
  this._tracingService = import_tracing9.TRACE_PROCESSOR.createTraceSender();
6163
- this._statusUpdate = new import_async18.Event();
6293
+ this._statusUpdate = new import_async19.Event();
6164
6294
  this._opening = false;
6165
6295
  this._open = false;
6166
6296
  this._storage = storage;
@@ -6179,7 +6309,7 @@ var ClientServicesHost = class {
6179
6309
  lockKey,
6180
6310
  onAcquire: () => {
6181
6311
  if (!this._opening) {
6182
- void this.open(new import_context14.Context());
6312
+ void this.open(new import_context16.Context());
6183
6313
  }
6184
6314
  },
6185
6315
  onRelease: () => this.close()
@@ -6188,14 +6318,14 @@ var ClientServicesHost = class {
6188
6318
  this._systemService = new SystemServiceImpl({
6189
6319
  config: () => this._config,
6190
6320
  statusUpdate: this._statusUpdate,
6191
- getCurrentStatus: () => this.isOpen ? import_services16.SystemStatus.ACTIVE : import_services16.SystemStatus.INACTIVE,
6321
+ getCurrentStatus: () => this.isOpen ? import_services17.SystemStatus.ACTIVE : import_services17.SystemStatus.INACTIVE,
6192
6322
  getDiagnostics: () => {
6193
6323
  return createDiagnostics(this._serviceRegistry.services, this._serviceContext, this._config);
6194
6324
  },
6195
6325
  onUpdateStatus: async (status) => {
6196
- if (!this.isOpen && status === import_services16.SystemStatus.ACTIVE) {
6326
+ if (!this.isOpen && status === import_services17.SystemStatus.ACTIVE) {
6197
6327
  await this._resourceLock?.acquire();
6198
- } else if (this.isOpen && status === import_services16.SystemStatus.INACTIVE) {
6328
+ } else if (this.isOpen && status === import_services17.SystemStatus.INACTIVE) {
6199
6329
  await this._resourceLock?.release();
6200
6330
  }
6201
6331
  },
@@ -6234,8 +6364,8 @@ var ClientServicesHost = class {
6234
6364
  * Can only be called once.
6235
6365
  */
6236
6366
  initialize({ config, ...options }) {
6237
- (0, import_invariant18.invariant)(!this._open, "service host is open", {
6238
- F: __dxlog_file21,
6367
+ (0, import_invariant19.invariant)(!this._open, "service host is open", {
6368
+ F: __dxlog_file22,
6239
6369
  L: 186,
6240
6370
  S: this,
6241
6371
  A: [
@@ -6243,15 +6373,15 @@ var ClientServicesHost = class {
6243
6373
  "'service host is open'"
6244
6374
  ]
6245
6375
  });
6246
- (0, import_log17.log)("initializing...", void 0, {
6247
- F: __dxlog_file21,
6376
+ (0, import_log18.log)("initializing...", void 0, {
6377
+ F: __dxlog_file22,
6248
6378
  L: 187,
6249
6379
  S: this,
6250
6380
  C: (f, a) => f(...a)
6251
6381
  });
6252
6382
  if (config) {
6253
- (0, import_invariant18.invariant)(!this._config, "config already set", {
6254
- F: __dxlog_file21,
6383
+ (0, import_invariant19.invariant)(!this._config, "config already set", {
6384
+ F: __dxlog_file22,
6255
6385
  L: 190,
6256
6386
  S: this,
6257
6387
  A: [
@@ -6265,8 +6395,8 @@ var ClientServicesHost = class {
6265
6395
  }
6266
6396
  }
6267
6397
  if (!options.signalManager) {
6268
- import_log17.log.warn("running signaling without telemetry metadata.", void 0, {
6269
- F: __dxlog_file21,
6398
+ import_log18.log.warn("running signaling without telemetry metadata.", void 0, {
6399
+ F: __dxlog_file22,
6270
6400
  L: 198,
6271
6401
  S: this,
6272
6402
  C: (f, a) => f(...a)
@@ -6276,8 +6406,8 @@ var ClientServicesHost = class {
6276
6406
  iceServers: this._config?.get("runtime.services.ice")
6277
6407
  }), signalManager = new import_messaging.WebsocketSignalManager(this._config?.get("runtime.services.signaling") ?? []) } = options;
6278
6408
  this._signalManager = signalManager;
6279
- (0, import_invariant18.invariant)(!this._networkManager, "network manager already set", {
6280
- F: __dxlog_file21,
6409
+ (0, import_invariant19.invariant)(!this._networkManager, "network manager already set", {
6410
+ F: __dxlog_file22,
6281
6411
  L: 209,
6282
6412
  S: this,
6283
6413
  A: [
@@ -6290,8 +6420,8 @@ var ClientServicesHost = class {
6290
6420
  transportFactory,
6291
6421
  signalManager
6292
6422
  });
6293
- (0, import_log17.log)("initialized", void 0, {
6294
- F: __dxlog_file21,
6423
+ (0, import_log18.log)("initialized", void 0, {
6424
+ F: __dxlog_file22,
6295
6425
  L: 216,
6296
6426
  S: this,
6297
6427
  C: (f, a) => f(...a)
@@ -6302,16 +6432,16 @@ var ClientServicesHost = class {
6302
6432
  return;
6303
6433
  }
6304
6434
  const traceId = import_keys15.PublicKey.random().toHex();
6305
- import_log17.log.trace("dxos.client-services.host.open", import_protocols15.trace.begin({
6435
+ import_log18.log.trace("dxos.client-services.host.open", import_protocols15.trace.begin({
6306
6436
  id: traceId
6307
6437
  }), {
6308
- F: __dxlog_file21,
6438
+ F: __dxlog_file22,
6309
6439
  L: 227,
6310
6440
  S: this,
6311
6441
  C: (f, a) => f(...a)
6312
6442
  });
6313
- (0, import_invariant18.invariant)(this._config, "config not set", {
6314
- F: __dxlog_file21,
6443
+ (0, import_invariant19.invariant)(this._config, "config not set", {
6444
+ F: __dxlog_file22,
6315
6445
  L: 229,
6316
6446
  S: this,
6317
6447
  A: [
@@ -6319,8 +6449,8 @@ var ClientServicesHost = class {
6319
6449
  "'config not set'"
6320
6450
  ]
6321
6451
  });
6322
- (0, import_invariant18.invariant)(this._storage, "storage not set", {
6323
- F: __dxlog_file21,
6452
+ (0, import_invariant19.invariant)(this._storage, "storage not set", {
6453
+ F: __dxlog_file22,
6324
6454
  L: 230,
6325
6455
  S: this,
6326
6456
  A: [
@@ -6328,8 +6458,8 @@ var ClientServicesHost = class {
6328
6458
  "'storage not set'"
6329
6459
  ]
6330
6460
  });
6331
- (0, import_invariant18.invariant)(this._signalManager, "signal manager not set", {
6332
- F: __dxlog_file21,
6461
+ (0, import_invariant19.invariant)(this._signalManager, "signal manager not set", {
6462
+ F: __dxlog_file22,
6333
6463
  L: 231,
6334
6464
  S: this,
6335
6465
  A: [
@@ -6337,8 +6467,8 @@ var ClientServicesHost = class {
6337
6467
  "'signal manager not set'"
6338
6468
  ]
6339
6469
  });
6340
- (0, import_invariant18.invariant)(this._networkManager, "network manager not set", {
6341
- F: __dxlog_file21,
6470
+ (0, import_invariant19.invariant)(this._networkManager, "network manager not set", {
6471
+ F: __dxlog_file22,
6342
6472
  L: 232,
6343
6473
  S: this,
6344
6474
  A: [
@@ -6347,10 +6477,10 @@ var ClientServicesHost = class {
6347
6477
  ]
6348
6478
  });
6349
6479
  this._opening = true;
6350
- (0, import_log17.log)("opening...", {
6480
+ (0, import_log18.log)("opening...", {
6351
6481
  lockKey: this._resourceLock?.lockKey
6352
6482
  }, {
6353
- F: __dxlog_file21,
6483
+ F: __dxlog_file22,
6354
6484
  L: 235,
6355
6485
  S: this,
6356
6486
  C: (f, a) => f(...a)
@@ -6401,18 +6531,18 @@ var ClientServicesHost = class {
6401
6531
  this._open = true;
6402
6532
  this._statusUpdate.emit();
6403
6533
  const deviceKey = this._serviceContext.identityManager.identity?.deviceKey;
6404
- (0, import_log17.log)("opened", {
6534
+ (0, import_log18.log)("opened", {
6405
6535
  deviceKey
6406
6536
  }, {
6407
- F: __dxlog_file21,
6537
+ F: __dxlog_file22,
6408
6538
  L: 314,
6409
6539
  S: this,
6410
6540
  C: (f, a) => f(...a)
6411
6541
  });
6412
- import_log17.log.trace("dxos.client-services.host.open", import_protocols15.trace.end({
6542
+ import_log18.log.trace("dxos.client-services.host.open", import_protocols15.trace.end({
6413
6543
  id: traceId
6414
6544
  }), {
6415
- F: __dxlog_file21,
6545
+ F: __dxlog_file22,
6416
6546
  L: 315,
6417
6547
  S: this,
6418
6548
  C: (f, a) => f(...a)
@@ -6423,10 +6553,10 @@ var ClientServicesHost = class {
6423
6553
  return;
6424
6554
  }
6425
6555
  const deviceKey = this._serviceContext.identityManager.identity?.deviceKey;
6426
- (0, import_log17.log)("closing...", {
6556
+ (0, import_log18.log)("closing...", {
6427
6557
  deviceKey
6428
6558
  }, {
6429
- F: __dxlog_file21,
6559
+ F: __dxlog_file22,
6430
6560
  L: 326,
6431
6561
  S: this,
6432
6562
  C: (f, a) => f(...a)
@@ -6441,10 +6571,10 @@ var ClientServicesHost = class {
6441
6571
  await this._level?.close();
6442
6572
  this._open = false;
6443
6573
  this._statusUpdate.emit();
6444
- (0, import_log17.log)("closed", {
6574
+ (0, import_log18.log)("closed", {
6445
6575
  deviceKey
6446
6576
  }, {
6447
- F: __dxlog_file21,
6577
+ F: __dxlog_file22,
6448
6578
  L: 335,
6449
6579
  S: this,
6450
6580
  C: (f, a) => f(...a)
@@ -6452,32 +6582,32 @@ var ClientServicesHost = class {
6452
6582
  }
6453
6583
  async reset() {
6454
6584
  const traceId = import_keys15.PublicKey.random().toHex();
6455
- import_log17.log.trace("dxos.sdk.client-services-host.reset", import_protocols15.trace.begin({
6585
+ import_log18.log.trace("dxos.sdk.client-services-host.reset", import_protocols15.trace.begin({
6456
6586
  id: traceId
6457
6587
  }), {
6458
- F: __dxlog_file21,
6588
+ F: __dxlog_file22,
6459
6589
  L: 340,
6460
6590
  S: this,
6461
6591
  C: (f, a) => f(...a)
6462
6592
  });
6463
- import_log17.log.info("resetting...", void 0, {
6464
- F: __dxlog_file21,
6593
+ import_log18.log.info("resetting...", void 0, {
6594
+ F: __dxlog_file22,
6465
6595
  L: 342,
6466
6596
  S: this,
6467
6597
  C: (f, a) => f(...a)
6468
6598
  });
6469
6599
  await this._serviceContext?.close();
6470
6600
  await this._storage.reset();
6471
- import_log17.log.info("reset", void 0, {
6472
- F: __dxlog_file21,
6601
+ import_log18.log.info("reset", void 0, {
6602
+ F: __dxlog_file22,
6473
6603
  L: 345,
6474
6604
  S: this,
6475
6605
  C: (f, a) => f(...a)
6476
6606
  });
6477
- import_log17.log.trace("dxos.sdk.client-services-host.reset", import_protocols15.trace.end({
6607
+ import_log18.log.trace("dxos.sdk.client-services-host.reset", import_protocols15.trace.end({
6478
6608
  id: traceId
6479
6609
  }), {
6480
- F: __dxlog_file21,
6610
+ F: __dxlog_file22,
6481
6611
  L: 346,
6482
6612
  S: this,
6483
6613
  C: (f, a) => f(...a)
@@ -6497,11 +6627,11 @@ _ts_decorate8([
6497
6627
  import_tracing9.trace.info()
6498
6628
  ], ClientServicesHost.prototype, "_open", void 0);
6499
6629
  _ts_decorate8([
6500
- import_async18.synchronized,
6630
+ import_async19.synchronized,
6501
6631
  import_tracing9.trace.span()
6502
6632
  ], ClientServicesHost.prototype, "open", null);
6503
6633
  _ts_decorate8([
6504
- import_async18.synchronized,
6634
+ import_async19.synchronized,
6505
6635
  import_tracing9.trace.span()
6506
6636
  ], ClientServicesHost.prototype, "close", null);
6507
6637
  ClientServicesHost = _ts_decorate8([
@@ -6537,7 +6667,6 @@ ClientServicesHost = _ts_decorate8([
6537
6667
  createDiagnostics,
6538
6668
  createLevel,
6539
6669
  createStorageObjects,
6540
- findPropertiesObject,
6541
6670
  getNetworkPeers,
6542
6671
  isLocked,
6543
6672
  subscribeToFeedBlocks,
@@ -6548,4 +6677,4 @@ ClientServicesHost = _ts_decorate8([
6548
6677
  subscribeToSpaces,
6549
6678
  subscribeToSwarmInfo
6550
6679
  });
6551
- //# sourceMappingURL=chunk-CMHCDXY6.cjs.map
6680
+ //# sourceMappingURL=chunk-X2MLOLTD.cjs.map