@dxos/client-services 0.1.53-main.8f662cd → 0.1.53-main.905829e

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 (41) hide show
  1. package/dist/lib/browser/{chunk-O5T3BZYP.mjs → chunk-EYXOVYW5.mjs} +720 -623
  2. package/dist/lib/browser/chunk-EYXOVYW5.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +94 -84
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/packlets/testing/index.mjs +19 -2
  7. package/dist/lib/browser/packlets/testing/index.mjs.map +3 -3
  8. package/dist/lib/node/index.cjs +780 -673
  9. package/dist/lib/node/index.cjs.map +3 -3
  10. package/dist/lib/node/meta.json +1 -1
  11. package/dist/lib/node/packlets/testing/index.cjs +700 -587
  12. package/dist/lib/node/packlets/testing/index.cjs.map +3 -3
  13. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  14. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  15. package/dist/types/src/packlets/services/service-host.d.ts +6 -1
  16. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  17. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  18. package/dist/types/src/packlets/spaces/data-space.d.ts +11 -2
  19. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  20. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +2 -1
  21. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
  22. package/dist/types/src/packlets/spaces/spaces-service.d.ts +1 -1
  23. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  24. package/dist/types/src/packlets/testing/test-builder.d.ts +7 -1
  25. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  26. package/package.json +32 -32
  27. package/src/packlets/identity/identity.ts +21 -26
  28. package/src/packlets/logging/logging-service.ts +4 -4
  29. package/src/packlets/services/service-context.test.ts +1 -1
  30. package/src/packlets/services/service-context.ts +9 -7
  31. package/src/packlets/services/service-host.test.ts +50 -2
  32. package/src/packlets/services/service-host.ts +9 -0
  33. package/src/packlets/spaces/data-space-manager.test.ts +72 -118
  34. package/src/packlets/spaces/data-space-manager.ts +13 -3
  35. package/src/packlets/spaces/data-space.ts +66 -20
  36. package/src/packlets/spaces/notarization-plugin.test.ts +1 -1
  37. package/src/packlets/spaces/notarization-plugin.ts +5 -1
  38. package/src/packlets/spaces/spaces-service.ts +26 -8
  39. package/src/packlets/testing/test-builder.ts +35 -2
  40. package/src/packlets/vault/worker-runtime.ts +1 -1
  41. package/dist/lib/browser/chunk-O5T3BZYP.mjs.map +0 -7
@@ -352,6 +352,7 @@ import { Context as Context2 } from "@dxos/context";
352
352
  import { verifyCredential } from "@dxos/credentials";
353
353
  import { log } from "@dxos/log";
354
354
  import { schema } from "@dxos/protocols";
355
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/identity/authenticator.ts";
355
356
  var createAuthProvider = (signer) => async (nonce) => {
356
357
  const credential = await signer.createCredential({
357
358
  assertion: {
@@ -377,20 +378,20 @@ var TrustedKeySetAuthVerifier = class {
377
378
  log("authenticating...", {
378
379
  credential
379
380
  }, {
380
- file: "authenticator.ts",
381
- line: 57,
382
- scope: this,
383
- callSite: (f, a) => f(...a)
381
+ F: __dxlog_file,
382
+ L: 57,
383
+ S: this,
384
+ C: (f, a) => f(...a)
384
385
  });
385
386
  const result = await verifyCredential(credential);
386
387
  if (result.kind === "fail") {
387
388
  log("Invalid credential", {
388
389
  result
389
390
  }, {
390
- file: "authenticator.ts",
391
- line: 61,
392
- scope: this,
393
- callSite: (f, a) => f(...a)
391
+ F: __dxlog_file,
392
+ L: 61,
393
+ S: this,
394
+ C: (f, a) => f(...a)
394
395
  });
395
396
  return false;
396
397
  }
@@ -399,10 +400,10 @@ var TrustedKeySetAuthVerifier = class {
399
400
  nonce,
400
401
  credential
401
402
  }, {
402
- file: "authenticator.ts",
403
- line: 66,
404
- scope: this,
405
- callSite: (f, a) => f(...a)
403
+ F: __dxlog_file,
404
+ L: 66,
405
+ S: this,
406
+ C: (f, a) => f(...a)
406
407
  });
407
408
  return false;
408
409
  }
@@ -410,10 +411,10 @@ var TrustedKeySetAuthVerifier = class {
410
411
  log("key is not currently in trusted set, waiting...", {
411
412
  key: credential.issuer
412
413
  }, {
413
- file: "authenticator.ts",
414
- line: 71,
415
- scope: this,
416
- callSite: (f, a) => f(...a)
414
+ F: __dxlog_file,
415
+ L: 71,
416
+ S: this,
417
+ C: (f, a) => f(...a)
417
418
  });
418
419
  return true;
419
420
  }
@@ -426,20 +427,20 @@ var TrustedKeySetAuthVerifier = class {
426
427
  log("auth success", {
427
428
  key: credential.issuer
428
429
  }, {
429
- file: "authenticator.ts",
430
- line: 82,
431
- scope: this,
432
- callSite: (f, a) => f(...a)
430
+ F: __dxlog_file,
431
+ L: 82,
432
+ S: this,
433
+ C: (f, a) => f(...a)
433
434
  });
434
435
  trigger.wake(true);
435
436
  } else {
436
437
  log("key is not currently in trusted set, waiting...", {
437
438
  key: credential.issuer
438
439
  }, {
439
- file: "authenticator.ts",
440
- line: 85,
441
- scope: this,
442
- callSite: (f, a) => f(...a)
440
+ F: __dxlog_file,
441
+ L: 85,
442
+ S: this,
443
+ C: (f, a) => f(...a)
443
444
  });
444
445
  }
445
446
  });
@@ -469,6 +470,7 @@ import { failUndefined } from "@dxos/debug";
469
470
  import { writeMessages } from "@dxos/feed-store";
470
471
  import { log as log2 } from "@dxos/log";
471
472
  import { AdmittedFeed } from "@dxos/protocols/proto/dxos/halo/credentials";
473
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/identity/identity.ts";
472
474
  var Identity = class {
473
475
  constructor({ space, signer, identityKey, deviceKey }) {
474
476
  this.stateUpdate = new Event();
@@ -476,15 +478,15 @@ var Identity = class {
476
478
  this._signer = signer;
477
479
  this.identityKey = identityKey;
478
480
  this.deviceKey = deviceKey;
479
- this._deviceStateMachine = this.space.spaceState.registerProcessor(new DeviceStateMachine({
481
+ this._deviceStateMachine = new DeviceStateMachine({
480
482
  identityKey: this.identityKey,
481
483
  deviceKey: this.deviceKey,
482
484
  onUpdate: () => this.stateUpdate.emit()
483
- }));
484
- this._profileStateMachine = this.space.spaceState.registerProcessor(new ProfileStateMachine({
485
+ });
486
+ this._profileStateMachine = new ProfileStateMachine({
485
487
  identityKey: this.identityKey,
486
488
  onUpdate: () => this.stateUpdate.emit()
487
- }));
489
+ });
488
490
  this.authVerifier = new TrustedKeySetAuthVerifier({
489
491
  trustedKeysProvider: () => this.authorizedDeviceKeys,
490
492
  update: this.stateUpdate,
@@ -493,27 +495,27 @@ var Identity = class {
493
495
  }
494
496
  // TODO(burdon): Expose state object?
495
497
  get authorizedDeviceKeys() {
496
- return this._deviceStateMachine.processor.authorizedDeviceKeys;
498
+ return this._deviceStateMachine.authorizedDeviceKeys;
497
499
  }
498
500
  async open() {
499
- await this._deviceStateMachine.open();
500
- await this._profileStateMachine.open();
501
+ await this.space.spaceState.addCredentialProcessor(this._deviceStateMachine);
502
+ await this.space.spaceState.addCredentialProcessor(this._profileStateMachine);
501
503
  await this.space.open();
502
504
  }
503
505
  async close() {
504
506
  await this.authVerifier.close();
505
- await this._deviceStateMachine.close();
506
- await this._profileStateMachine.close();
507
+ await this.space.spaceState.removeCredentialProcessor(this._profileStateMachine);
508
+ await this.space.spaceState.removeCredentialProcessor(this._deviceStateMachine);
507
509
  await this.space.close();
508
510
  }
509
511
  async ready() {
510
- await this._deviceStateMachine.processor.deviceChainReady.wait();
512
+ await this._deviceStateMachine.deviceChainReady.wait();
511
513
  await this.controlPipeline.state.waitUntilReachedTargetTimeframe({
512
514
  timeout: LOAD_CONTROL_FEEDS_TIMEOUT
513
515
  });
514
516
  }
515
517
  get profileDocument() {
516
- return this._profileStateMachine.processor.profile;
518
+ return this._profileStateMachine.profile;
517
519
  }
518
520
  /**
519
521
  * @test-only
@@ -528,7 +530,7 @@ var Identity = class {
528
530
  return this.space.genesisFeedKey;
529
531
  }
530
532
  get deviceCredentialChain() {
531
- return this._deviceStateMachine.processor.deviceCredentialChain;
533
+ return this._deviceStateMachine.deviceCredentialChain;
532
534
  }
533
535
  getAdmissionCredentials() {
534
536
  var _a, _b;
@@ -543,8 +545,8 @@ var Identity = class {
543
545
  * Requires identity to be ready.
544
546
  */
545
547
  getIdentityCredentialSigner() {
546
- invariant(this._deviceStateMachine.processor.deviceCredentialChain, "Device credential chain is not ready.");
547
- return createCredentialSignerWithChain(this._signer, this._deviceStateMachine.processor.deviceCredentialChain, this.deviceKey);
548
+ invariant(this._deviceStateMachine.deviceCredentialChain, "Device credential chain is not ready.");
549
+ return createCredentialSignerWithChain(this._signer, this._deviceStateMachine.deviceCredentialChain, this.deviceKey);
548
550
  }
549
551
  /**
550
552
  * Issues credentials as device.
@@ -560,10 +562,10 @@ var Identity = class {
560
562
  controlFeedKey,
561
563
  dataFeedKey
562
564
  }, {
563
- file: "identity.ts",
564
- line: 156,
565
- scope: this,
566
- callSite: (f, a) => f(...a)
565
+ F: __dxlog_file2,
566
+ L: 151,
567
+ S: this,
568
+ C: (f, a) => f(...a)
567
569
  });
568
570
  const signer = this.getIdentityCredentialSigner();
569
571
  await writeMessages(this.controlPipeline.writer, [
@@ -612,6 +614,7 @@ import { log as log3 } from "@dxos/log";
612
614
  import { trace } from "@dxos/protocols";
613
615
  import { AdmittedFeed as AdmittedFeed2 } from "@dxos/protocols/proto/dxos/halo/credentials";
614
616
  import { deferFunction } from "@dxos/util";
617
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/identity/identity-manager.ts";
615
618
  var IdentityManager = class {
616
619
  // TODO(burdon): IdentityManagerParams.
617
620
  // TODO(dmaretskyi): Perhaps this should take/generate the peerKey outside of an initialized identity.
@@ -631,20 +634,20 @@ var IdentityManager = class {
631
634
  log3.trace("dxos.halo.identity-manager.open", trace.begin({
632
635
  id: traceId
633
636
  }), {
634
- file: "identity-manager.ts",
635
- line: 70,
636
- scope: this,
637
- callSite: (f, a) => f(...a)
637
+ F: __dxlog_file3,
638
+ L: 70,
639
+ S: this,
640
+ C: (f, a) => f(...a)
638
641
  });
639
642
  await this._metadataStore.load();
640
643
  const identityRecord = this._metadataStore.getIdentityRecord();
641
644
  log3("identity record", {
642
645
  identityRecord
643
646
  }, {
644
- file: "identity-manager.ts",
645
- line: 74,
646
- scope: this,
647
- callSite: (f, a) => f(...a)
647
+ F: __dxlog_file3,
648
+ L: 74,
649
+ S: this,
650
+ C: (f, a) => f(...a)
648
651
  });
649
652
  if (identityRecord) {
650
653
  this._identity = await this._constructIdentity(identityRecord);
@@ -654,20 +657,20 @@ var IdentityManager = class {
654
657
  identityKey: identityRecord.identityKey,
655
658
  displayName: (_a = this._identity.profileDocument) == null ? void 0 : _a.displayName
656
659
  }, {
657
- file: "identity-manager.ts",
658
- line: 79,
659
- scope: this,
660
- callSite: (f, a) => f(...a)
660
+ F: __dxlog_file3,
661
+ L: 79,
662
+ S: this,
663
+ C: (f, a) => f(...a)
661
664
  });
662
665
  this.stateUpdate.emit();
663
666
  }
664
667
  log3.trace("dxos.halo.identity-manager.open", trace.end({
665
668
  id: traceId
666
669
  }), {
667
- file: "identity-manager.ts",
668
- line: 85,
669
- scope: this,
670
- callSite: (f, a) => f(...a)
670
+ F: __dxlog_file3,
671
+ L: 85,
672
+ S: this,
673
+ C: (f, a) => f(...a)
671
674
  });
672
675
  }
673
676
  async close() {
@@ -677,11 +680,11 @@ var IdentityManager = class {
677
680
  async createIdentity({ displayName } = {}) {
678
681
  var _a;
679
682
  invariant2(!this._identity, "Identity already exists.");
680
- log3("creating identity...", {}, {
681
- file: "identity-manager.ts",
682
- line: 94,
683
- scope: this,
684
- callSite: (f, a) => f(...a)
683
+ log3("creating identity...", void 0, {
684
+ F: __dxlog_file3,
685
+ L: 94,
686
+ S: this,
687
+ C: (f, a) => f(...a)
685
688
  });
686
689
  const controlFeedKey = await this._keyring.createKey();
687
690
  const identityRecord = {
@@ -727,20 +730,20 @@ var IdentityManager = class {
727
730
  identityKey: identityRecord.identityKey,
728
731
  displayName: (_a = this._identity.profileDocument) == null ? void 0 : _a.displayName
729
732
  }, {
730
- file: "identity-manager.ts",
731
- line: 149,
732
- scope: this,
733
- callSite: (f, a) => f(...a)
733
+ F: __dxlog_file3,
734
+ L: 149,
735
+ S: this,
736
+ C: (f, a) => f(...a)
734
737
  });
735
738
  this.stateUpdate.emit();
736
739
  log3("created identity", {
737
740
  identityKey: identity.identityKey,
738
741
  deviceKey: identity.deviceKey
739
742
  }, {
740
- file: "identity-manager.ts",
741
- line: 155,
742
- scope: this,
743
- callSite: (f, a) => f(...a)
743
+ F: __dxlog_file3,
744
+ L: 155,
745
+ S: this,
746
+ C: (f, a) => f(...a)
744
747
  });
745
748
  return identity;
746
749
  }
@@ -752,10 +755,10 @@ var IdentityManager = class {
752
755
  log3("accepting identity", {
753
756
  params
754
757
  }, {
755
- file: "identity-manager.ts",
756
- line: 163,
757
- scope: this,
758
- callSite: (f, a) => f(...a)
758
+ F: __dxlog_file3,
759
+ L: 163,
760
+ S: this,
761
+ C: (f, a) => f(...a)
759
762
  });
760
763
  invariant2(!this._identity, "Identity already exists.");
761
764
  const identityRecord = {
@@ -778,20 +781,20 @@ var IdentityManager = class {
778
781
  identityKey: identityRecord.identityKey,
779
782
  displayName: (_a = this._identity.profileDocument) == null ? void 0 : _a.displayName
780
783
  }, {
781
- file: "identity-manager.ts",
782
- line: 183,
783
- scope: this,
784
- callSite: (f, a) => f(...a)
784
+ F: __dxlog_file3,
785
+ L: 183,
786
+ S: this,
787
+ C: (f, a) => f(...a)
785
788
  });
786
789
  this.stateUpdate.emit();
787
790
  log3("accepted identity", {
788
791
  identityKey: identity.identityKey,
789
792
  deviceKey: identity.deviceKey
790
793
  }, {
791
- file: "identity-manager.ts",
792
- line: 189,
793
- scope: this,
794
- callSite: (f, a) => f(...a)
794
+ F: __dxlog_file3,
795
+ L: 189,
796
+ S: this,
797
+ C: (f, a) => f(...a)
795
798
  });
796
799
  return identity;
797
800
  }
@@ -800,10 +803,10 @@ var IdentityManager = class {
800
803
  log3("constructing identity", {
801
804
  identityRecord
802
805
  }, {
803
- file: "identity-manager.ts",
804
- line: 195,
805
- scope: this,
806
- callSite: (f, a) => f(...a)
806
+ F: __dxlog_file3,
807
+ L: 195,
808
+ S: this,
809
+ C: (f, a) => f(...a)
807
810
  });
808
811
  invariant2(identityRecord.haloSpace.controlFeedKey);
809
812
  const controlFeed = await this._feedStore.openFeed(identityRecord.haloSpace.controlFeedKey, {
@@ -834,10 +837,10 @@ var IdentityManager = class {
834
837
  log3("done", {
835
838
  identityKey: identityRecord.identityKey
836
839
  }, {
837
- file: "identity-manager.ts",
838
- line: 226,
839
- scope: this,
840
- callSite: (f, a) => f(...a)
840
+ F: __dxlog_file3,
841
+ L: 226,
842
+ S: this,
843
+ C: (f, a) => f(...a)
841
844
  });
842
845
  if (identityRecord.haloSpace.controlTimeframe) {
843
846
  identity.controlPipeline.state.setTargetTimeframe(identityRecord.haloSpace.controlTimeframe);
@@ -854,11 +857,11 @@ var IdentityManager = class {
854
857
  onNetworkConnection: () => {
855
858
  },
856
859
  onAuthFailure: () => {
857
- log3.warn("auth failure", {}, {
858
- file: "identity-manager.ts",
859
- line: 245,
860
- scope: this,
861
- callSite: (f, a) => f(...a)
860
+ log3.warn("auth failure", void 0, {
861
+ F: __dxlog_file3,
862
+ L: 245,
863
+ S: this,
864
+ C: (f, a) => f(...a)
862
865
  });
863
866
  },
864
867
  memberKey: identityKey
@@ -1004,6 +1007,7 @@ import { schema as schema2, trace as trace2 } from "@dxos/protocols";
1004
1007
  import { Invitation as Invitation2 } from "@dxos/protocols/proto/dxos/client/services";
1005
1008
  import { AuthenticationResponse, Options } from "@dxos/protocols/proto/dxos/halo/invitations";
1006
1009
  import { RpcExtension } from "@dxos/teleport";
1010
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/invitations/invitation-extension.ts";
1007
1011
  var OPTIONS_TIMEOUT = 1e4;
1008
1012
  var MAX_OTP_ATTEMPTS = 3;
1009
1013
  var InvitationHostExtension = class extends RpcExtension {
@@ -1041,20 +1045,20 @@ var InvitationHostExtension = class extends RpcExtension {
1041
1045
  log4.trace("dxos.sdk.invitation-handler.host.introduce", trace2.begin({
1042
1046
  id: traceId
1043
1047
  }), {
1044
- file: "invitation-extension.ts",
1045
- line: 98,
1046
- scope: this,
1047
- callSite: (f, a) => f(...a)
1048
+ F: __dxlog_file4,
1049
+ L: 98,
1050
+ S: this,
1051
+ C: (f, a) => f(...a)
1048
1052
  });
1049
1053
  const invitation = await this._callbacks.resolveInvitation(request);
1050
1054
  if (!invitation) {
1051
1055
  log4.warn("invitation not found", {
1052
1056
  invitationId
1053
1057
  }, {
1054
- file: "invitation-extension.ts",
1055
- line: 102,
1056
- scope: this,
1057
- callSite: (f, a) => f(...a)
1058
+ F: __dxlog_file4,
1059
+ L: 102,
1060
+ S: this,
1061
+ C: (f, a) => f(...a)
1058
1062
  });
1059
1063
  this._callbacks.onError(new Error("Invitation not found."));
1060
1064
  return {
@@ -1065,10 +1069,10 @@ var InvitationHostExtension = class extends RpcExtension {
1065
1069
  log4("guest introduced itself", {
1066
1070
  guestProfile: profile
1067
1071
  }, {
1068
- file: "invitation-extension.ts",
1069
- line: 111,
1070
- scope: this,
1071
- callSite: (f, a) => f(...a)
1072
+ F: __dxlog_file4,
1073
+ L: 111,
1074
+ S: this,
1075
+ C: (f, a) => f(...a)
1072
1076
  });
1073
1077
  this.guestProfile = profile;
1074
1078
  this._callbacks.onStateUpdate({
@@ -1078,10 +1082,10 @@ var InvitationHostExtension = class extends RpcExtension {
1078
1082
  log4.trace("dxos.sdk.invitation-handler.host.introduce", trace2.end({
1079
1083
  id: traceId
1080
1084
  }), {
1081
- file: "invitation-extension.ts",
1082
- line: 118,
1083
- scope: this,
1084
- callSite: (f, a) => f(...a)
1085
+ F: __dxlog_file4,
1086
+ L: 118,
1087
+ S: this,
1088
+ C: (f, a) => f(...a)
1085
1089
  });
1086
1090
  return {
1087
1091
  spaceKey: this.invitation.authMethod === Invitation2.AuthMethod.NONE ? this.invitation.spaceKey : void 0,
@@ -1093,28 +1097,28 @@ var InvitationHostExtension = class extends RpcExtension {
1093
1097
  log4.trace("dxos.sdk.invitation-handler.host.authenticate", trace2.begin({
1094
1098
  id: traceId
1095
1099
  }), {
1096
- file: "invitation-extension.ts",
1097
- line: 127,
1098
- scope: this,
1099
- callSite: (f, a) => f(...a)
1100
+ F: __dxlog_file4,
1101
+ L: 127,
1102
+ S: this,
1103
+ C: (f, a) => f(...a)
1100
1104
  });
1101
1105
  log4("received authentication request", {
1102
1106
  authCode: code
1103
1107
  }, {
1104
- file: "invitation-extension.ts",
1105
- line: 128,
1106
- scope: this,
1107
- callSite: (f, a) => f(...a)
1108
+ F: __dxlog_file4,
1109
+ L: 128,
1110
+ S: this,
1111
+ C: (f, a) => f(...a)
1108
1112
  });
1109
1113
  let status = AuthenticationResponse.Status.OK;
1110
1114
  invariant5(this.invitation, "Invitation is not set.");
1111
1115
  switch (this.invitation.authMethod) {
1112
1116
  case Invitation2.AuthMethod.NONE: {
1113
- log4("authentication not required", {}, {
1114
- file: "invitation-extension.ts",
1115
- line: 134,
1116
- scope: this,
1117
- callSite: (f, a) => f(...a)
1117
+ log4("authentication not required", void 0, {
1118
+ F: __dxlog_file4,
1119
+ L: 134,
1120
+ S: this,
1121
+ C: (f, a) => f(...a)
1118
1122
  });
1119
1123
  return {
1120
1124
  status: AuthenticationResponse.Status.OK
@@ -1136,10 +1140,10 @@ var InvitationHostExtension = class extends RpcExtension {
1136
1140
  log4.error("invalid authentication method", {
1137
1141
  authMethod: this.invitation.authMethod
1138
1142
  }, {
1139
- file: "invitation-extension.ts",
1140
- line: 152,
1141
- scope: this,
1142
- callSite: (f, a) => f(...a)
1143
+ F: __dxlog_file4,
1144
+ L: 152,
1145
+ S: this,
1146
+ C: (f, a) => f(...a)
1143
1147
  });
1144
1148
  status = AuthenticationResponse.Status.INTERNAL_ERROR;
1145
1149
  break;
@@ -1151,10 +1155,10 @@ var InvitationHostExtension = class extends RpcExtension {
1151
1155
  status
1152
1156
  }
1153
1157
  }), {
1154
- file: "invitation-extension.ts",
1155
- line: 158,
1156
- scope: this,
1157
- callSite: (f, a) => f(...a)
1158
+ F: __dxlog_file4,
1159
+ L: 158,
1160
+ S: this,
1161
+ C: (f, a) => f(...a)
1158
1162
  });
1159
1163
  return {
1160
1164
  status
@@ -1165,10 +1169,10 @@ var InvitationHostExtension = class extends RpcExtension {
1165
1169
  log4.trace("dxos.sdk.invitation-handler.host.admit", trace2.begin({
1166
1170
  id: traceId
1167
1171
  }), {
1168
- file: "invitation-extension.ts",
1169
- line: 164,
1170
- scope: this,
1171
- callSite: (f, a) => f(...a)
1172
+ F: __dxlog_file4,
1173
+ L: 164,
1174
+ S: this,
1175
+ C: (f, a) => f(...a)
1172
1176
  });
1173
1177
  try {
1174
1178
  invariant5(this.invitation, "Invitation is not set.");
@@ -1179,10 +1183,10 @@ var InvitationHostExtension = class extends RpcExtension {
1179
1183
  log4.trace("dxos.sdk.invitation-handler.host.admit", trace2.end({
1180
1184
  id: traceId
1181
1185
  }), {
1182
- file: "invitation-extension.ts",
1183
- line: 175,
1184
- scope: this,
1185
- callSite: (f, a) => f(...a)
1186
+ F: __dxlog_file4,
1187
+ L: 175,
1188
+ S: this,
1189
+ C: (f, a) => f(...a)
1186
1190
  });
1187
1191
  return response;
1188
1192
  } catch (err) {
@@ -1256,11 +1260,11 @@ var InvitationGuestExtension = class extends RpcExtension {
1256
1260
  var _a;
1257
1261
  await super.onOpen(context);
1258
1262
  try {
1259
- log4("begin options", {}, {
1260
- file: "invitation-extension.ts",
1261
- line: 263,
1262
- scope: this,
1263
- callSite: (f, a) => f(...a)
1263
+ log4("begin options", void 0, {
1264
+ F: __dxlog_file4,
1265
+ L: 263,
1266
+ S: this,
1267
+ C: (f, a) => f(...a)
1264
1268
  });
1265
1269
  await cancelWithContext(this._ctx, this.rpc.InvitationHostService.options({
1266
1270
  role: Options.Role.GUEST
@@ -1268,11 +1272,11 @@ var InvitationGuestExtension = class extends RpcExtension {
1268
1272
  await cancelWithContext(this._ctx, this._remoteOptionsTrigger.wait({
1269
1273
  timeout: OPTIONS_TIMEOUT
1270
1274
  }));
1271
- log4("end options", {}, {
1272
- file: "invitation-extension.ts",
1273
- line: 266,
1274
- scope: this,
1275
- callSite: (f, a) => f(...a)
1275
+ log4("end options", void 0, {
1276
+ F: __dxlog_file4,
1277
+ L: 266,
1278
+ S: this,
1279
+ C: (f, a) => f(...a)
1276
1280
  });
1277
1281
  if (((_a = this._remoteOptions) == null ? void 0 : _a.role) !== Options.Role.HOST) {
1278
1282
  throw new InvalidInvitationExtensionRoleError(void 0, {
@@ -1283,20 +1287,20 @@ var InvitationGuestExtension = class extends RpcExtension {
1283
1287
  this._callbacks.onOpen(this._ctx);
1284
1288
  } catch (err) {
1285
1289
  log4("openError", err, {
1286
- file: "invitation-extension.ts",
1287
- line: 276,
1288
- scope: this,
1289
- callSite: (f, a) => f(...a)
1290
+ F: __dxlog_file4,
1291
+ L: 276,
1292
+ S: this,
1293
+ C: (f, a) => f(...a)
1290
1294
  });
1291
1295
  this._callbacks.onError(err);
1292
1296
  }
1293
1297
  }
1294
1298
  async onClose() {
1295
- log4("onClose", {}, {
1296
- file: "invitation-extension.ts",
1297
- line: 282,
1298
- scope: this,
1299
- callSite: (f, a) => f(...a)
1299
+ log4("onClose", void 0, {
1300
+ F: __dxlog_file4,
1301
+ L: 282,
1302
+ S: this,
1303
+ C: (f, a) => f(...a)
1300
1304
  });
1301
1305
  await this._ctx.dispose();
1302
1306
  }
@@ -1304,6 +1308,7 @@ var InvitationGuestExtension = class extends RpcExtension {
1304
1308
  var isAuthenticationRequired = (invitation) => invitation.authMethod !== Invitation2.AuthMethod.NONE;
1305
1309
 
1306
1310
  // packages/sdk/client-services/src/packlets/invitations/invitations-handler.ts
1311
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/invitations/invitations-handler.ts";
1307
1312
  var InvitationsHandler = class {
1308
1313
  /**
1309
1314
  * @internal
@@ -1337,10 +1342,10 @@ var InvitationsHandler = class {
1337
1342
  log5("complete", {
1338
1343
  ...protocol.toJSON()
1339
1344
  }, {
1340
- file: "invitations-handler.ts",
1341
- line: 99,
1342
- scope: this,
1343
- callSite: (f, a) => f(...a)
1345
+ F: __dxlog_file5,
1346
+ L: 99,
1347
+ S: this,
1348
+ C: (f, a) => f(...a)
1344
1349
  });
1345
1350
  stream.complete();
1346
1351
  });
@@ -1378,18 +1383,18 @@ var InvitationsHandler = class {
1378
1383
  log5.trace("dxos.sdk.invitations-handler.host.onOpen", trace3.begin({
1379
1384
  id: traceId
1380
1385
  }), {
1381
- file: "invitations-handler.ts",
1382
- line: 138,
1383
- scope: this,
1384
- callSite: (f, a) => f(...a)
1386
+ F: __dxlog_file5,
1387
+ L: 138,
1388
+ S: this,
1389
+ C: (f, a) => f(...a)
1385
1390
  });
1386
1391
  log5("connected", {
1387
1392
  ...protocol.toJSON()
1388
1393
  }, {
1389
- file: "invitations-handler.ts",
1390
- line: 139,
1391
- scope: this,
1392
- callSite: (f, a) => f(...a)
1394
+ F: __dxlog_file5,
1395
+ L: 139,
1396
+ S: this,
1397
+ C: (f, a) => f(...a)
1393
1398
  });
1394
1399
  stream.next({
1395
1400
  ...invitation,
@@ -1402,10 +1407,10 @@ var InvitationsHandler = class {
1402
1407
  guest: deviceKey,
1403
1408
  ...protocol.toJSON()
1404
1409
  }, {
1405
- file: "invitations-handler.ts",
1406
- line: 142,
1407
- scope: this,
1408
- callSite: (f, a) => f(...a)
1410
+ F: __dxlog_file5,
1411
+ L: 142,
1412
+ S: this,
1413
+ C: (f, a) => f(...a)
1409
1414
  });
1410
1415
  stream.next({
1411
1416
  ...invitation,
@@ -1414,20 +1419,20 @@ var InvitationsHandler = class {
1414
1419
  log5.trace("dxos.sdk.invitations-handler.host.onOpen", trace3.end({
1415
1420
  id: traceId
1416
1421
  }), {
1417
- file: "invitations-handler.ts",
1418
- line: 144,
1419
- scope: this,
1420
- callSite: (f, a) => f(...a)
1422
+ F: __dxlog_file5,
1423
+ L: 144,
1424
+ S: this,
1425
+ C: (f, a) => f(...a)
1421
1426
  });
1422
1427
  } catch (err) {
1423
1428
  if (err instanceof TimeoutError) {
1424
1429
  log5("timeout", {
1425
1430
  ...protocol.toJSON()
1426
1431
  }, {
1427
- file: "invitations-handler.ts",
1428
- line: 147,
1429
- scope: this,
1430
- callSite: (f, a) => f(...a)
1432
+ F: __dxlog_file5,
1433
+ L: 147,
1434
+ S: this,
1435
+ C: (f, a) => f(...a)
1431
1436
  });
1432
1437
  stream.next({
1433
1438
  ...invitation,
@@ -1435,10 +1440,10 @@ var InvitationsHandler = class {
1435
1440
  });
1436
1441
  } else {
1437
1442
  log5.error("failed", err, {
1438
- file: "invitations-handler.ts",
1439
- line: 150,
1440
- scope: this,
1441
- callSite: (f, a) => f(...a)
1443
+ F: __dxlog_file5,
1444
+ L: 150,
1445
+ S: this,
1446
+ C: (f, a) => f(...a)
1442
1447
  });
1443
1448
  stream.error(err);
1444
1449
  }
@@ -1446,10 +1451,10 @@ var InvitationsHandler = class {
1446
1451
  id: traceId,
1447
1452
  error: err
1448
1453
  }), {
1449
- file: "invitations-handler.ts",
1450
- line: 153,
1451
- scope: this,
1452
- callSite: (f, a) => f(...a)
1454
+ F: __dxlog_file5,
1455
+ L: 153,
1456
+ S: this,
1457
+ C: (f, a) => f(...a)
1453
1458
  });
1454
1459
  } finally {
1455
1460
  if (type !== Invitation3.Type.MULTIUSE) {
@@ -1467,10 +1472,10 @@ var InvitationsHandler = class {
1467
1472
  log5("timeout", {
1468
1473
  ...protocol.toJSON()
1469
1474
  }, {
1470
- file: "invitations-handler.ts",
1471
- line: 168,
1472
- scope: this,
1473
- callSite: (f, a) => f(...a)
1475
+ F: __dxlog_file5,
1476
+ L: 168,
1477
+ S: this,
1478
+ C: (f, a) => f(...a)
1474
1479
  });
1475
1480
  stream.next({
1476
1481
  ...invitation,
@@ -1478,10 +1483,10 @@ var InvitationsHandler = class {
1478
1483
  });
1479
1484
  } else {
1480
1485
  log5.error("failed", err, {
1481
- file: "invitations-handler.ts",
1482
- line: 171,
1483
- scope: this,
1484
- callSite: (f, a) => f(...a)
1486
+ F: __dxlog_file5,
1487
+ L: 171,
1488
+ S: this,
1489
+ C: (f, a) => f(...a)
1485
1490
  });
1486
1491
  stream.error(err);
1487
1492
  }
@@ -1540,20 +1545,20 @@ var InvitationsHandler = class {
1540
1545
  log5("timeout", {
1541
1546
  ...protocol.toJSON()
1542
1547
  }, {
1543
- file: "invitations-handler.ts",
1544
- line: 230,
1545
- scope: this,
1546
- callSite: (f, a) => f(...a)
1548
+ F: __dxlog_file5,
1549
+ L: 230,
1550
+ S: this,
1551
+ C: (f, a) => f(...a)
1547
1552
  });
1548
1553
  setState({
1549
1554
  state: Invitation3.State.TIMEOUT
1550
1555
  });
1551
1556
  } else {
1552
1557
  log5.warn("auth failed", err, {
1553
- file: "invitations-handler.ts",
1554
- line: 233,
1555
- scope: this,
1556
- callSite: (f, a) => f(...a)
1558
+ F: __dxlog_file5,
1559
+ L: 233,
1560
+ S: this,
1561
+ C: (f, a) => f(...a)
1557
1562
  });
1558
1563
  stream.error(err);
1559
1564
  }
@@ -1564,10 +1569,10 @@ var InvitationsHandler = class {
1564
1569
  log5("complete", {
1565
1570
  ...protocol.toJSON()
1566
1571
  }, {
1567
- file: "invitations-handler.ts",
1568
- line: 241,
1569
- scope: this,
1570
- callSite: (f, a) => f(...a)
1572
+ F: __dxlog_file5,
1573
+ L: 241,
1574
+ S: this,
1575
+ C: (f, a) => f(...a)
1571
1576
  });
1572
1577
  stream.complete();
1573
1578
  });
@@ -1579,10 +1584,10 @@ var InvitationsHandler = class {
1579
1584
  log5("extension disposed", {
1580
1585
  currentState
1581
1586
  }, {
1582
- file: "invitations-handler.ts",
1583
- line: 251,
1584
- scope: this,
1585
- callSite: (f, a) => f(...a)
1587
+ F: __dxlog_file5,
1588
+ L: 251,
1589
+ S: this,
1590
+ C: (f, a) => f(...a)
1586
1591
  });
1587
1592
  if (!admitted) {
1588
1593
  stream.error(new Error("Remote peer disconnected."));
@@ -1594,10 +1599,10 @@ var InvitationsHandler = class {
1594
1599
  log5.trace("dxos.sdk.invitations-handler.guest.onOpen", trace3.begin({
1595
1600
  id: traceId
1596
1601
  }), {
1597
- file: "invitations-handler.ts",
1598
- line: 260,
1599
- scope: this,
1600
- callSite: (f, a) => f(...a)
1602
+ F: __dxlog_file5,
1603
+ L: 260,
1604
+ S: this,
1605
+ C: (f, a) => f(...a)
1601
1606
  });
1602
1607
  if (++connectionCount > 1) {
1603
1608
  throw new Error(`multiple connections detected: ${connectionCount}`);
@@ -1606,10 +1611,10 @@ var InvitationsHandler = class {
1606
1611
  log5("connected", {
1607
1612
  ...protocol.toJSON()
1608
1613
  }, {
1609
- file: "invitations-handler.ts",
1610
- line: 268,
1611
- scope: this,
1612
- callSite: (f, a) => f(...a)
1614
+ F: __dxlog_file5,
1615
+ L: 268,
1616
+ S: this,
1617
+ C: (f, a) => f(...a)
1613
1618
  });
1614
1619
  setState({
1615
1620
  state: Invitation3.State.CONNECTED
@@ -1617,20 +1622,20 @@ var InvitationsHandler = class {
1617
1622
  log5("introduce", {
1618
1623
  ...protocol.toJSON()
1619
1624
  }, {
1620
- file: "invitations-handler.ts",
1621
- line: 272,
1622
- scope: this,
1623
- callSite: (f, a) => f(...a)
1625
+ F: __dxlog_file5,
1626
+ L: 272,
1627
+ S: this,
1628
+ C: (f, a) => f(...a)
1624
1629
  });
1625
1630
  const introductionResponse = await extension.rpc.InvitationHostService.introduce(protocol.createIntroduction());
1626
1631
  log5("introduce response", {
1627
1632
  ...protocol.toJSON(),
1628
1633
  response: introductionResponse
1629
1634
  }, {
1630
- file: "invitations-handler.ts",
1631
- line: 276,
1632
- scope: this,
1633
- callSite: (f, a) => f(...a)
1635
+ F: __dxlog_file5,
1636
+ L: 276,
1637
+ S: this,
1638
+ C: (f, a) => f(...a)
1634
1639
  });
1635
1640
  invitation.authMethod = introductionResponse.authMethod;
1636
1641
  if (introductionResponse.spaceKey) {
@@ -1638,11 +1643,11 @@ var InvitationsHandler = class {
1638
1643
  }
1639
1644
  if (isAuthenticationRequired(invitation)) {
1640
1645
  for (let attempt = 1; attempt <= MAX_OTP_ATTEMPTS; attempt++) {
1641
- log5("guest waiting for authentication code...", {}, {
1642
- file: "invitations-handler.ts",
1643
- line: 285,
1644
- scope: this,
1645
- callSite: (f, a) => f(...a)
1646
+ log5("guest waiting for authentication code...", void 0, {
1647
+ F: __dxlog_file5,
1648
+ L: 285,
1649
+ S: this,
1650
+ C: (f, a) => f(...a)
1646
1651
  });
1647
1652
  setState({
1648
1653
  state: Invitation3.State.READY_FOR_AUTHENTICATION
@@ -1650,11 +1655,11 @@ var InvitationsHandler = class {
1650
1655
  const authCode = await authenticated.wait({
1651
1656
  timeout
1652
1657
  });
1653
- log5("sending authentication request", {}, {
1654
- file: "invitations-handler.ts",
1655
- line: 289,
1656
- scope: this,
1657
- callSite: (f, a) => f(...a)
1658
+ log5("sending authentication request", void 0, {
1659
+ F: __dxlog_file5,
1660
+ L: 289,
1661
+ S: this,
1662
+ C: (f, a) => f(...a)
1658
1663
  });
1659
1664
  setState({
1660
1665
  state: Invitation3.State.AUTHENTICATING
@@ -1672,10 +1677,10 @@ var InvitationsHandler = class {
1672
1677
  log5("retrying invalid code", {
1673
1678
  attempt
1674
1679
  }, {
1675
- file: "invitations-handler.ts",
1676
- line: 300,
1677
- scope: this,
1678
- callSite: (f, a) => f(...a)
1680
+ F: __dxlog_file5,
1681
+ L: 300,
1682
+ S: this,
1683
+ C: (f, a) => f(...a)
1679
1684
  });
1680
1685
  authenticated.reset();
1681
1686
  }
@@ -1689,10 +1694,10 @@ var InvitationsHandler = class {
1689
1694
  log5("request admission", {
1690
1695
  ...protocol.toJSON()
1691
1696
  }, {
1692
- file: "invitations-handler.ts",
1693
- line: 311,
1694
- scope: this,
1695
- callSite: (f, a) => f(...a)
1697
+ F: __dxlog_file5,
1698
+ L: 311,
1699
+ S: this,
1700
+ C: (f, a) => f(...a)
1696
1701
  });
1697
1702
  const admissionRequest = await protocol.createAdmissionRequest();
1698
1703
  const admissionResponse = await extension.rpc.InvitationHostService.admit(admissionRequest);
@@ -1701,10 +1706,10 @@ var InvitationsHandler = class {
1701
1706
  log5("admitted by host", {
1702
1707
  ...protocol.toJSON()
1703
1708
  }, {
1704
- file: "invitations-handler.ts",
1705
- line: 322,
1706
- scope: this,
1707
- callSite: (f, a) => f(...a)
1709
+ F: __dxlog_file5,
1710
+ L: 322,
1711
+ S: this,
1712
+ C: (f, a) => f(...a)
1708
1713
  });
1709
1714
  setState({
1710
1715
  ...result,
@@ -1713,30 +1718,30 @@ var InvitationsHandler = class {
1713
1718
  log5.trace("dxos.sdk.invitations-handler.guest.onOpen", trace3.end({
1714
1719
  id: traceId
1715
1720
  }), {
1716
- file: "invitations-handler.ts",
1717
- line: 324,
1718
- scope: this,
1719
- callSite: (f, a) => f(...a)
1721
+ F: __dxlog_file5,
1722
+ L: 324,
1723
+ S: this,
1724
+ C: (f, a) => f(...a)
1720
1725
  });
1721
1726
  } catch (err) {
1722
1727
  if (err instanceof TimeoutError) {
1723
1728
  log5("timeout", {
1724
1729
  ...protocol.toJSON()
1725
1730
  }, {
1726
- file: "invitations-handler.ts",
1727
- line: 327,
1728
- scope: this,
1729
- callSite: (f, a) => f(...a)
1731
+ F: __dxlog_file5,
1732
+ L: 327,
1733
+ S: this,
1734
+ C: (f, a) => f(...a)
1730
1735
  });
1731
1736
  setState({
1732
1737
  state: Invitation3.State.TIMEOUT
1733
1738
  });
1734
1739
  } else {
1735
1740
  log5("auth failed", err, {
1736
- file: "invitations-handler.ts",
1737
- line: 330,
1738
- scope: this,
1739
- callSite: (f, a) => f(...a)
1741
+ F: __dxlog_file5,
1742
+ L: 330,
1743
+ S: this,
1744
+ C: (f, a) => f(...a)
1740
1745
  });
1741
1746
  stream.error(err);
1742
1747
  }
@@ -1744,10 +1749,10 @@ var InvitationsHandler = class {
1744
1749
  id: traceId,
1745
1750
  error: err
1746
1751
  }), {
1747
- file: "invitations-handler.ts",
1748
- line: 333,
1749
- scope: this,
1750
- callSite: (f, a) => f(...a)
1752
+ F: __dxlog_file5,
1753
+ L: 333,
1754
+ S: this,
1755
+ C: (f, a) => f(...a)
1751
1756
  });
1752
1757
  } finally {
1753
1758
  await ctx.dispose();
@@ -1762,20 +1767,20 @@ var InvitationsHandler = class {
1762
1767
  log5("timeout", {
1763
1768
  ...protocol.toJSON()
1764
1769
  }, {
1765
- file: "invitations-handler.ts",
1766
- line: 344,
1767
- scope: this,
1768
- callSite: (f, a) => f(...a)
1770
+ F: __dxlog_file5,
1771
+ L: 344,
1772
+ S: this,
1773
+ C: (f, a) => f(...a)
1769
1774
  });
1770
1775
  setState({
1771
1776
  state: Invitation3.State.TIMEOUT
1772
1777
  });
1773
1778
  } else {
1774
1779
  log5("auth failed", err, {
1775
- file: "invitations-handler.ts",
1776
- line: 347,
1777
- scope: this,
1778
- callSite: (f, a) => f(...a)
1780
+ F: __dxlog_file5,
1781
+ L: 347,
1782
+ S: this,
1783
+ C: (f, a) => f(...a)
1779
1784
  });
1780
1785
  stream.error(err);
1781
1786
  }
@@ -1822,6 +1827,7 @@ import { Event as Event3 } from "@dxos/async";
1822
1827
  import { Stream as Stream8 } from "@dxos/codec-protobuf";
1823
1828
  import { log as log6 } from "@dxos/log";
1824
1829
  import { QueryInvitationsResponse } from "@dxos/protocols/proto/dxos/client/services";
1830
+ var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/invitations/invitations-service.ts";
1825
1831
  var InvitationsServiceImpl = class {
1826
1832
  constructor(_invitationsHandler, _getHandler) {
1827
1833
  this._invitationsHandler = _invitationsHandler;
@@ -1882,11 +1888,11 @@ var InvitationsServiceImpl = class {
1882
1888
  });
1883
1889
  }
1884
1890
  async authenticate({ invitationId, authCode }) {
1885
- log6("authenticating...", {}, {
1886
- file: "invitations-service.ts",
1887
- line: 103,
1888
- scope: this,
1889
- callSite: (f, a) => f(...a)
1891
+ log6("authenticating...", void 0, {
1892
+ F: __dxlog_file6,
1893
+ L: 103,
1894
+ S: this,
1895
+ C: (f, a) => f(...a)
1890
1896
  });
1891
1897
  invariant7(invitationId);
1892
1898
  const observable = this._acceptInvitations.get(invitationId);
@@ -1894,21 +1900,21 @@ var InvitationsServiceImpl = class {
1894
1900
  log6.warn("invalid invitation", {
1895
1901
  invitationId
1896
1902
  }, {
1897
- file: "invitations-service.ts",
1898
- line: 107,
1899
- scope: this,
1900
- callSite: (f, a) => f(...a)
1903
+ F: __dxlog_file6,
1904
+ L: 107,
1905
+ S: this,
1906
+ C: (f, a) => f(...a)
1901
1907
  });
1902
1908
  } else {
1903
1909
  await observable.authenticate(authCode);
1904
1910
  }
1905
1911
  }
1906
1912
  async cancelInvitation({ invitationId }) {
1907
- log6("deleting...", {}, {
1908
- file: "invitations-service.ts",
1909
- line: 114,
1910
- scope: this,
1911
- callSite: (f, a) => f(...a)
1913
+ log6("deleting...", void 0, {
1914
+ F: __dxlog_file6,
1915
+ L: 114,
1916
+ S: this,
1917
+ C: (f, a) => f(...a)
1912
1918
  });
1913
1919
  invariant7(invitationId);
1914
1920
  const created = this._createInvitations.get(invitationId);
@@ -1925,10 +1931,10 @@ var InvitationsServiceImpl = class {
1925
1931
  log6.warn("invalid invitation", {
1926
1932
  invitationId
1927
1933
  }, {
1928
- file: "invitations-service.ts",
1929
- line: 127,
1930
- scope: this,
1931
- callSite: (f, a) => f(...a)
1934
+ F: __dxlog_file6,
1935
+ L: 127,
1936
+ S: this,
1937
+ C: (f, a) => f(...a)
1932
1938
  });
1933
1939
  }
1934
1940
  }
@@ -1990,6 +1996,7 @@ import { createAdmissionCredentials, getCredentialAssertion } from "@dxos/creden
1990
1996
  import { writeMessages as writeMessages2 } from "@dxos/feed-store";
1991
1997
  import { log as log7 } from "@dxos/log";
1992
1998
  import { Invitation as Invitation4 } from "@dxos/protocols/proto/dxos/client/services";
1999
+ var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/invitations/space-invitation-protocol.ts";
1993
2000
  var SpaceInvitationProtocol = class {
1994
2001
  constructor(_spaceManager, _signingContext, _keyring, _spaceKey) {
1995
2002
  this._spaceManager = _spaceManager;
@@ -2020,10 +2027,10 @@ var SpaceInvitationProtocol = class {
2020
2027
  host: this._signingContext.deviceKey,
2021
2028
  guest: deviceKey
2022
2029
  }, {
2023
- file: "space-invitation-protocol.ts",
2024
- line: 50,
2025
- scope: this,
2026
- callSite: (f, a) => f(...a)
2030
+ F: __dxlog_file7,
2031
+ L: 50,
2032
+ S: this,
2033
+ C: (f, a) => f(...a)
2027
2034
  });
2028
2035
  const credentials = await createAdmissionCredentials(this._signingContext.credentialSigner, identityKey, space.key, space.inner.genesisFeedKey, guestProfile);
2029
2036
  invariant8(credentials[0].credential);
@@ -2075,7 +2082,7 @@ var SpaceInvitationProtocol = class {
2075
2082
  };
2076
2083
 
2077
2084
  // packages/sdk/client-services/src/packlets/spaces/data-space.ts
2078
- import { Event as Event5, scheduleTask as scheduleTask4, trackLeaks } from "@dxos/async";
2085
+ import { Event as Event5, scheduleTask as scheduleTask4, synchronized, trackLeaks } from "@dxos/async";
2079
2086
  import { AUTH_TIMEOUT as AUTH_TIMEOUT2 } from "@dxos/client-protocol";
2080
2087
  import { cancelWithContext as cancelWithContext2, Context as Context6 } from "@dxos/context";
2081
2088
  import { timed } from "@dxos/debug";
@@ -2097,6 +2104,7 @@ import { log as log8 } from "@dxos/log";
2097
2104
  import { schema as schema3 } from "@dxos/protocols";
2098
2105
  import { RpcExtension as RpcExtension2 } from "@dxos/teleport";
2099
2106
  import { ComplexMap as ComplexMap2, ComplexSet, entry } from "@dxos/util";
2107
+ var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/notarization-plugin.ts";
2100
2108
  var DEFAULT_RETRY_TIMEOUT = 1e3;
2101
2109
  var DEFAULT_SUCCESS_DELAY = 1e3;
2102
2110
  var DEFAULT_NOTARIZE_TIMEOUT = 1e4;
@@ -2109,6 +2117,9 @@ var NotarizationPlugin = class {
2109
2117
  this._processedCredentials = new ComplexSet(PublicKey6.hash);
2110
2118
  this._processCredentialsTriggers = new ComplexMap2(PublicKey6.hash);
2111
2119
  }
2120
+ get hasWriter() {
2121
+ return !!this._writer;
2122
+ }
2112
2123
  async open() {
2113
2124
  }
2114
2125
  async close() {
@@ -2121,10 +2132,10 @@ var NotarizationPlugin = class {
2121
2132
  log8("notarize", {
2122
2133
  credentials
2123
2134
  }, {
2124
- file: "notarization-plugin.ts",
2125
- line: 87,
2126
- scope: this,
2127
- callSite: (f, a) => f(...a)
2135
+ F: __dxlog_file8,
2136
+ L: 91,
2137
+ S: this,
2138
+ C: (f, a) => f(...a)
2128
2139
  });
2129
2140
  invariant9(credentials.every((credential) => credential.id), "Credentials must have an id");
2130
2141
  const errors = new Trigger4();
@@ -2133,10 +2144,10 @@ var NotarizationPlugin = class {
2133
2144
  log8.warn("Notarization error", {
2134
2145
  err
2135
2146
  }, {
2136
- file: "notarization-plugin.ts",
2137
- line: 96,
2138
- scope: this,
2139
- callSite: (f, a) => f(...a)
2147
+ F: __dxlog_file8,
2148
+ L: 100,
2149
+ S: this,
2150
+ C: (f, a) => f(...a)
2140
2151
  });
2141
2152
  void ctx.dispose();
2142
2153
  errors.throw(err);
@@ -2149,10 +2160,10 @@ var NotarizationPlugin = class {
2149
2160
  timeout,
2150
2161
  peers: Array.from(this._extensions).map((extension) => extension.remotePeerId)
2151
2162
  }, {
2152
- file: "notarization-plugin.ts",
2153
- line: 108,
2154
- scope: this,
2155
- callSite: (f, a) => f(...a)
2163
+ F: __dxlog_file8,
2164
+ L: 112,
2165
+ S: this,
2166
+ C: (f, a) => f(...a)
2156
2167
  });
2157
2168
  void ctx.dispose();
2158
2169
  errors.throw(new TimeoutError2(timeout, "Notarization timed out"));
@@ -2172,10 +2183,10 @@ var NotarizationPlugin = class {
2172
2183
  log8.warn("Exhausted all peers to notarize with", {
2173
2184
  retryIn: retryTimeout
2174
2185
  }, {
2175
- file: "notarization-plugin.ts",
2176
- line: 133,
2177
- scope: this,
2178
- callSite: (f, a) => f(...a)
2186
+ F: __dxlog_file8,
2187
+ L: 137,
2188
+ S: this,
2189
+ C: (f, a) => f(...a)
2179
2190
  });
2180
2191
  peersTried.clear();
2181
2192
  scheduleTask3(ctx, () => notarizeTask.schedule(), retryTimeout);
@@ -2186,28 +2197,28 @@ var NotarizationPlugin = class {
2186
2197
  peer: peer.localPeerId,
2187
2198
  credentialId: credentials.map((credential) => credential.id)
2188
2199
  }, {
2189
- file: "notarization-plugin.ts",
2190
- line: 140,
2191
- scope: this,
2192
- callSite: (f, a) => f(...a)
2200
+ F: __dxlog_file8,
2201
+ L: 144,
2202
+ S: this,
2203
+ C: (f, a) => f(...a)
2193
2204
  });
2194
2205
  await peer.rpc.NotarizationService.notarize({
2195
2206
  credentials: credentials.filter((credential) => !this._processedCredentials.has(credential.id))
2196
2207
  });
2197
- log8("success", {}, {
2198
- file: "notarization-plugin.ts",
2199
- line: 144,
2200
- scope: this,
2201
- callSite: (f, a) => f(...a)
2208
+ log8("success", void 0, {
2209
+ F: __dxlog_file8,
2210
+ L: 148,
2211
+ S: this,
2212
+ C: (f, a) => f(...a)
2202
2213
  });
2203
2214
  await sleep(successDelay);
2204
2215
  } catch (err) {
2205
2216
  if (!ctx.disposed && !err.message.includes(WRITER_NOT_SET_ERROR_CODE)) {
2206
2217
  log8.warn("error notarizing (recoverable)", err, {
2207
- file: "notarization-plugin.ts",
2208
- line: 148,
2209
- scope: this,
2210
- callSite: (f, a) => f(...a)
2218
+ F: __dxlog_file8,
2219
+ L: 152,
2220
+ S: this,
2221
+ C: (f, a) => f(...a)
2211
2222
  });
2212
2223
  }
2213
2224
  notarizeTask.schedule();
@@ -2221,11 +2232,11 @@ var NotarizationPlugin = class {
2221
2232
  allNotarized,
2222
2233
  errors.wait()
2223
2234
  ]);
2224
- log8("done", {}, {
2225
- file: "notarization-plugin.ts",
2226
- line: 159,
2227
- scope: this,
2228
- callSite: (f, a) => f(...a)
2235
+ log8("done", void 0, {
2236
+ F: __dxlog_file8,
2237
+ L: 163,
2238
+ S: this,
2239
+ C: (f, a) => f(...a)
2229
2240
  });
2230
2241
  } finally {
2231
2242
  await ctx.dispose();
@@ -2234,7 +2245,7 @@ var NotarizationPlugin = class {
2234
2245
  /**
2235
2246
  * Called with credentials arriving from the control pipeline.
2236
2247
  */
2237
- async process(credential) {
2248
+ async processCredential(credential) {
2238
2249
  var _a;
2239
2250
  if (!credential.id) {
2240
2251
  return;
@@ -2275,10 +2286,10 @@ var NotarizationPlugin = class {
2275
2286
  log8("extension opened", {
2276
2287
  peer: extension.localPeerId
2277
2288
  }, {
2278
- file: "notarization-plugin.ts",
2279
- line: 208,
2280
- scope: this,
2281
- callSite: (f, a) => f(...a)
2289
+ F: __dxlog_file8,
2290
+ L: 212,
2291
+ S: this,
2292
+ C: (f, a) => f(...a)
2282
2293
  });
2283
2294
  this._extensions.add(extension);
2284
2295
  this._extensionOpened.emit();
@@ -2287,10 +2298,10 @@ var NotarizationPlugin = class {
2287
2298
  log8("extension closed", {
2288
2299
  peer: extension.localPeerId
2289
2300
  }, {
2290
- file: "notarization-plugin.ts",
2291
- line: 213,
2292
- scope: this,
2293
- callSite: (f, a) => f(...a)
2301
+ F: __dxlog_file8,
2302
+ L: 217,
2303
+ S: this,
2304
+ C: (f, a) => f(...a)
2294
2305
  });
2295
2306
  this._extensions.delete(extension);
2296
2307
  },
@@ -2331,7 +2342,7 @@ var NotarizationTeleportExtension = class extends RpcExtension2 {
2331
2342
  };
2332
2343
 
2333
2344
  // packages/sdk/client-services/src/packlets/spaces/data-space.ts
2334
- var __decorate = function(decorators, target, key, desc) {
2345
+ function _ts_decorate(decorators, target, key, desc) {
2335
2346
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2336
2347
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
2337
2348
  r = Reflect.decorate(decorators, target, key, desc);
@@ -2340,10 +2351,12 @@ var __decorate = function(decorators, target, key, desc) {
2340
2351
  if (d = decorators[i])
2341
2352
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2342
2353
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2343
- };
2354
+ }
2355
+ var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/data-space.ts";
2344
2356
  var DataSpace = class DataSpace2 {
2345
2357
  constructor(params) {
2346
2358
  this._ctx = new Context6();
2359
+ this._notarizationPlugin = new NotarizationPlugin();
2347
2360
  this._state = SpaceState.CLOSED;
2348
2361
  /**
2349
2362
  * Error for _state === SpaceState.ERROR.
@@ -2366,8 +2379,8 @@ var DataSpace = class DataSpace2 {
2366
2379
  update: this._inner.stateUpdate,
2367
2380
  authTimeout: AUTH_TIMEOUT2
2368
2381
  });
2369
- this._notarizationPluginConsumer = this._inner.spaceState.registerProcessor(new NotarizationPlugin());
2370
2382
  this._cache = params.cache;
2383
+ this._state = params.initialState;
2371
2384
  }
2372
2385
  get key() {
2373
2386
  return this._inner.key;
@@ -2389,25 +2402,36 @@ var DataSpace = class DataSpace2 {
2389
2402
  return this._presence;
2390
2403
  }
2391
2404
  get notarizationPlugin() {
2392
- return this._notarizationPluginConsumer.processor;
2405
+ return this._notarizationPlugin;
2393
2406
  }
2394
2407
  get cache() {
2395
2408
  return this._cache;
2396
2409
  }
2397
2410
  async open() {
2398
- await this.notarizationPlugin.open();
2399
- await this._notarizationPluginConsumer.open();
2411
+ await this._open();
2412
+ }
2413
+ async _open() {
2414
+ await this._notarizationPlugin.open();
2415
+ await this._inner.spaceState.addCredentialProcessor(this._notarizationPlugin);
2400
2416
  await this._inner.open();
2401
- this._state = SpaceState.INACTIVE;
2417
+ this._state = SpaceState.CONTROL_ONLY;
2418
+ this.stateUpdate.emit();
2419
+ this.metrics = {};
2402
2420
  this.metrics.open = new Date();
2403
2421
  }
2404
2422
  async close() {
2423
+ await this._close();
2424
+ }
2425
+ async _close() {
2426
+ var _a, _b;
2427
+ await ((_b = (_a = this._callbacks).beforeClose) == null ? void 0 : _b.call(_a));
2405
2428
  this._state = SpaceState.CLOSED;
2406
2429
  await this._ctx.dispose();
2430
+ this._ctx = new Context6();
2407
2431
  await this.authVerifier.close();
2408
2432
  await this._inner.close();
2409
- await this._notarizationPluginConsumer.close();
2410
- await this.notarizationPlugin.close();
2433
+ await this._inner.spaceState.removeCredentialProcessor(this._notarizationPlugin);
2434
+ await this._notarizationPlugin.close();
2411
2435
  await this._presence.destroy();
2412
2436
  }
2413
2437
  async postMessage(channel, message) {
@@ -2427,18 +2451,18 @@ var DataSpace = class DataSpace2 {
2427
2451
  } catch (err) {
2428
2452
  if (err instanceof CancelledError) {
2429
2453
  log9("Data pipeline initialization cancelled", err, {
2430
- file: "data-space.ts",
2431
- line: 173,
2432
- scope: this,
2433
- callSite: (f, a) => f(...a)
2454
+ F: __dxlog_file9,
2455
+ L: 193,
2456
+ S: this,
2457
+ C: (f, a) => f(...a)
2434
2458
  });
2435
2459
  return;
2436
2460
  }
2437
2461
  log9.error("Error initializing data pipeline", err, {
2438
- file: "data-space.ts",
2439
- line: 177,
2440
- scope: this,
2441
- callSite: (f, a) => f(...a)
2462
+ F: __dxlog_file9,
2463
+ L: 197,
2464
+ S: this,
2465
+ C: (f, a) => f(...a)
2442
2466
  });
2443
2467
  this._state = SpaceState.ERROR;
2444
2468
  this.error = err;
@@ -2450,7 +2474,7 @@ var DataSpace = class DataSpace2 {
2450
2474
  }
2451
2475
  async initializeDataPipeline() {
2452
2476
  var _a, _b, _c, _d;
2453
- if (this._state !== SpaceState.INACTIVE) {
2477
+ if (this._state !== SpaceState.CONTROL_ONLY) {
2454
2478
  throw new SystemError("Invalid operation");
2455
2479
  }
2456
2480
  this._state = SpaceState.INITIALIZING;
@@ -2460,37 +2484,39 @@ var DataSpace = class DataSpace2 {
2460
2484
  });
2461
2485
  this.metrics.controlPipelineReady = new Date();
2462
2486
  await this._createWritableFeeds();
2463
- log9("Writable feeds created", {}, {
2464
- file: "data-space.ts",
2465
- line: 201,
2466
- scope: this,
2467
- callSite: (f, a) => f(...a)
2487
+ log9("Writable feeds created", void 0, {
2488
+ F: __dxlog_file9,
2489
+ L: 221,
2490
+ S: this,
2491
+ C: (f, a) => f(...a)
2468
2492
  });
2469
2493
  this.stateUpdate.emit();
2470
- this.notarizationPlugin.setWriter(createMappedFeedWriter((credential) => ({
2471
- credential: {
2472
- credential
2473
- }
2474
- }), this._inner.controlPipeline.writer));
2494
+ if (!this.notarizationPlugin.hasWriter) {
2495
+ this.notarizationPlugin.setWriter(createMappedFeedWriter((credential) => ({
2496
+ credential: {
2497
+ credential
2498
+ }
2499
+ }), this._inner.controlPipeline.writer));
2500
+ }
2475
2501
  await this._inner.initializeDataPipeline();
2476
2502
  this.metrics.dataPipelineOpen = new Date();
2477
2503
  await cancelWithContext2(this._ctx, this._inner.dataPipeline.ensureEpochInitialized());
2478
- log9("waiting for data pipeline to reach target timeframe", {}, {
2479
- file: "data-space.ts",
2480
- line: 220,
2481
- scope: this,
2482
- callSite: (f, a) => f(...a)
2504
+ log9("waiting for data pipeline to reach target timeframe", void 0, {
2505
+ F: __dxlog_file9,
2506
+ L: 242,
2507
+ S: this,
2508
+ C: (f, a) => f(...a)
2483
2509
  });
2484
2510
  await this._inner.dataPipeline.pipelineState.waitUntilReachedTargetTimeframe({
2485
2511
  ctx: this._ctx,
2486
2512
  breakOnStall: false
2487
2513
  });
2488
2514
  this.metrics.dataPipelineReady = new Date();
2489
- log9("data pipeline ready", {}, {
2490
- file: "data-space.ts",
2491
- line: 229,
2492
- scope: this,
2493
- callSite: (f, a) => f(...a)
2515
+ log9("data pipeline ready", void 0, {
2516
+ F: __dxlog_file9,
2517
+ L: 251,
2518
+ S: this,
2519
+ C: (f, a) => f(...a)
2494
2520
  });
2495
2521
  await ((_b = (_a = this._callbacks).beforeReady) == null ? void 0 : _b.call(_a));
2496
2522
  this._state = SpaceState.READY;
@@ -2568,17 +2594,46 @@ var DataSpace = class DataSpace2 {
2568
2594
  }
2569
2595
  }
2570
2596
  }
2597
+ async activate() {
2598
+ if (this._state !== SpaceState.INACTIVE) {
2599
+ throw new SystemError("Invalid operation");
2600
+ }
2601
+ await this._metadataStore.setSpaceState(this.key, SpaceState.ACTIVE);
2602
+ await this._open();
2603
+ this.initializeDataPipelineAsync();
2604
+ }
2605
+ async deactivate() {
2606
+ if (this._state === SpaceState.INACTIVE) {
2607
+ throw new SystemError("Invalid operation");
2608
+ }
2609
+ await this._metadataStore.setSpaceState(this.key, SpaceState.INACTIVE);
2610
+ await this._close();
2611
+ this._state = SpaceState.INACTIVE;
2612
+ this.stateUpdate.emit();
2613
+ }
2571
2614
  };
2572
- __decorate([
2615
+ _ts_decorate([
2616
+ synchronized
2617
+ ], DataSpace.prototype, "open", null);
2618
+ _ts_decorate([
2619
+ synchronized
2620
+ ], DataSpace.prototype, "close", null);
2621
+ _ts_decorate([
2573
2622
  timed(1e4)
2574
2623
  ], DataSpace.prototype, "_createWritableFeeds", null);
2575
- DataSpace = __decorate([
2624
+ _ts_decorate([
2625
+ synchronized
2626
+ ], DataSpace.prototype, "activate", null);
2627
+ _ts_decorate([
2628
+ synchronized
2629
+ ], DataSpace.prototype, "deactivate", null);
2630
+ DataSpace = _ts_decorate([
2576
2631
  trackLeaks("open", "close")
2577
2632
  ], DataSpace);
2578
2633
 
2579
2634
  // packages/sdk/client-services/src/packlets/spaces/data-space-manager.ts
2580
2635
  import invariant10 from "tiny-invariant";
2581
- import { Event as Event6, synchronized, trackLeaks as trackLeaks2 } from "@dxos/async";
2636
+ import { Event as Event6, synchronized as synchronized2, trackLeaks as trackLeaks2 } from "@dxos/async";
2582
2637
  import { cancelWithContext as cancelWithContext3, Context as Context7 } from "@dxos/context";
2583
2638
  import { getCredentialAssertion as getCredentialAssertion2 } from "@dxos/credentials";
2584
2639
  import { PublicKey as PublicKey8 } from "@dxos/keys";
@@ -2659,7 +2714,7 @@ var spaceGenesis = async (keyring, signingContext, space) => {
2659
2714
  };
2660
2715
 
2661
2716
  // packages/sdk/client-services/src/packlets/spaces/data-space-manager.ts
2662
- var __decorate2 = function(decorators, target, key, desc) {
2717
+ function _ts_decorate2(decorators, target, key, desc) {
2663
2718
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2664
2719
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
2665
2720
  r = Reflect.decorate(decorators, target, key, desc);
@@ -2668,7 +2723,8 @@ var __decorate2 = function(decorators, target, key, desc) {
2668
2723
  if (d = decorators[i])
2669
2724
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2670
2725
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2671
- };
2726
+ }
2727
+ var __dxlog_file10 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/data-space-manager.ts";
2672
2728
  var DataSpaceManager = class DataSpaceManager2 {
2673
2729
  constructor(_spaceManager, _metadataStore, _dataServiceSubscriptions, _keyring, _signingContext, _feedStore) {
2674
2730
  this._spaceManager = _spaceManager;
@@ -2688,50 +2744,52 @@ var DataSpaceManager = class DataSpaceManager2 {
2688
2744
  return this._spaces;
2689
2745
  }
2690
2746
  async open() {
2691
- log10("open", {}, {
2692
- file: "data-space-manager.ts",
2693
- line: 80,
2694
- scope: this,
2695
- callSite: (f, a) => f(...a)
2747
+ log10("open", void 0, {
2748
+ F: __dxlog_file10,
2749
+ L: 80,
2750
+ S: this,
2751
+ C: (f, a) => f(...a)
2696
2752
  });
2697
2753
  log10.trace("dxos.echo.data-space-manager.open", trace4.begin({
2698
2754
  id: this._instanceId
2699
2755
  }), {
2700
- file: "data-space-manager.ts",
2701
- line: 81,
2702
- scope: this,
2703
- callSite: (f, a) => f(...a)
2756
+ F: __dxlog_file10,
2757
+ L: 81,
2758
+ S: this,
2759
+ C: (f, a) => f(...a)
2704
2760
  });
2705
2761
  await this._metadataStore.load();
2706
2762
  log10("metadata loaded", {
2707
2763
  spaces: this._metadataStore.spaces.length
2708
2764
  }, {
2709
- file: "data-space-manager.ts",
2710
- line: 83,
2711
- scope: this,
2712
- callSite: (f, a) => f(...a)
2765
+ F: __dxlog_file10,
2766
+ L: 83,
2767
+ S: this,
2768
+ C: (f, a) => f(...a)
2713
2769
  });
2714
2770
  for (const spaceMetadata of this._metadataStore.spaces) {
2715
2771
  try {
2716
2772
  log10("load space", {
2717
2773
  spaceMetadata
2718
2774
  }, {
2719
- file: "data-space-manager.ts",
2720
- line: 87,
2721
- scope: this,
2722
- callSite: (f, a) => f(...a)
2775
+ F: __dxlog_file10,
2776
+ L: 87,
2777
+ S: this,
2778
+ C: (f, a) => f(...a)
2723
2779
  });
2724
2780
  const space = await this._constructSpace(spaceMetadata);
2725
- space.initializeDataPipelineAsync();
2781
+ if (spaceMetadata.state !== SpaceState2.INACTIVE) {
2782
+ space.initializeDataPipelineAsync();
2783
+ }
2726
2784
  } catch (err) {
2727
2785
  log10.error("Error loading space", {
2728
2786
  spaceMetadata,
2729
2787
  err
2730
2788
  }, {
2731
- file: "data-space-manager.ts",
2732
- line: 91,
2733
- scope: this,
2734
- callSite: (f, a) => f(...a)
2789
+ F: __dxlog_file10,
2790
+ L: 93,
2791
+ S: this,
2792
+ C: (f, a) => f(...a)
2735
2793
  });
2736
2794
  }
2737
2795
  }
@@ -2740,18 +2798,18 @@ var DataSpaceManager = class DataSpaceManager2 {
2740
2798
  log10.trace("dxos.echo.data-space-manager.open", trace4.end({
2741
2799
  id: this._instanceId
2742
2800
  }), {
2743
- file: "data-space-manager.ts",
2744
- line: 97,
2745
- scope: this,
2746
- callSite: (f, a) => f(...a)
2801
+ F: __dxlog_file10,
2802
+ L: 99,
2803
+ S: this,
2804
+ C: (f, a) => f(...a)
2747
2805
  });
2748
2806
  }
2749
2807
  async close() {
2750
- log10("close", {}, {
2751
- file: "data-space-manager.ts",
2752
- line: 102,
2753
- scope: this,
2754
- callSite: (f, a) => f(...a)
2808
+ log10("close", void 0, {
2809
+ F: __dxlog_file10,
2810
+ L: 104,
2811
+ S: this,
2812
+ C: (f, a) => f(...a)
2755
2813
  });
2756
2814
  this._isOpen = false;
2757
2815
  await this._ctx.dispose();
@@ -2771,15 +2829,16 @@ var DataSpaceManager = class DataSpaceManager2 {
2771
2829
  key: spaceKey,
2772
2830
  genesisFeedKey: controlFeedKey,
2773
2831
  controlFeedKey,
2774
- dataFeedKey
2832
+ dataFeedKey,
2833
+ state: SpaceState2.ACTIVE
2775
2834
  };
2776
2835
  log10("creating space...", {
2777
2836
  spaceKey
2778
2837
  }, {
2779
- file: "data-space-manager.ts",
2780
- line: 126,
2781
- scope: this,
2782
- callSite: (f, a) => f(...a)
2838
+ F: __dxlog_file10,
2839
+ L: 129,
2840
+ S: this,
2841
+ C: (f, a) => f(...a)
2783
2842
  });
2784
2843
  const space = await this._constructSpace(metadata);
2785
2844
  const credentials = await spaceGenesis(this._keyring, this._signingContext, space.inner);
@@ -2796,10 +2855,10 @@ var DataSpaceManager = class DataSpaceManager2 {
2796
2855
  log10("accept space", {
2797
2856
  opts
2798
2857
  }, {
2799
- file: "data-space-manager.ts",
2800
- line: 145,
2801
- scope: this,
2802
- callSite: (f, a) => f(...a)
2858
+ F: __dxlog_file10,
2859
+ L: 148,
2860
+ S: this,
2861
+ C: (f, a) => f(...a)
2803
2862
  });
2804
2863
  invariant10(this._isOpen, "Not open.");
2805
2864
  invariant10(!this._spaces.has(opts.spaceKey), "Space already exists.");
@@ -2830,10 +2889,10 @@ var DataSpaceManager = class DataSpaceManager2 {
2830
2889
  log10("construct space", {
2831
2890
  metadata
2832
2891
  }, {
2833
- file: "data-space-manager.ts",
2834
- line: 180,
2835
- scope: this,
2836
- callSite: (f, a) => f(...a)
2892
+ F: __dxlog_file10,
2893
+ L: 183,
2894
+ S: this,
2895
+ C: (f, a) => f(...a)
2837
2896
  });
2838
2897
  const gossip = new Gossip({
2839
2898
  localPeerId: this._signingContext.deviceKey
@@ -2865,11 +2924,11 @@ var DataSpaceManager = class DataSpaceManager2 {
2865
2924
  session.addExtension("dxos.mesh.teleport.notarization", dataSpace.notarizationPlugin.createExtension());
2866
2925
  },
2867
2926
  onAuthFailure: () => {
2868
- log10.warn("auth failure", {}, {
2869
- file: "data-space-manager.ts",
2870
- line: 211,
2871
- scope: this,
2872
- callSite: (f, a) => f(...a)
2927
+ log10.warn("auth failure", void 0, {
2928
+ F: __dxlog_file10,
2929
+ L: 214,
2930
+ S: this,
2931
+ C: (f, a) => f(...a)
2873
2932
  });
2874
2933
  },
2875
2934
  memberKey: this._signingContext.identityKey
@@ -2878,6 +2937,7 @@ var DataSpaceManager = class DataSpaceManager2 {
2878
2937
  dataFeed && space.setDataFeed(dataFeed);
2879
2938
  const dataSpace = new DataSpace({
2880
2939
  inner: space,
2940
+ initialState: metadata.state === SpaceState2.INACTIVE ? SpaceState2.INACTIVE : SpaceState2.CLOSED,
2881
2941
  metadataStore: this._metadataStore,
2882
2942
  gossip,
2883
2943
  presence,
@@ -2889,31 +2949,44 @@ var DataSpaceManager = class DataSpaceManager2 {
2889
2949
  log10("before space ready", {
2890
2950
  space: space.key
2891
2951
  }, {
2892
- file: "data-space-manager.ts",
2893
- line: 228,
2894
- scope: this,
2895
- callSite: (f, a) => f(...a)
2952
+ F: __dxlog_file10,
2953
+ L: 232,
2954
+ S: this,
2955
+ C: (f, a) => f(...a)
2896
2956
  });
2897
- this._dataServiceSubscriptions.registerSpace(space.key, dataSpace.dataPipeline.databaseHost.createDataServiceHost());
2957
+ await this._dataServiceSubscriptions.registerSpace(space.key, dataSpace.dataPipeline.databaseHost.createDataServiceHost());
2898
2958
  },
2899
2959
  afterReady: async () => {
2900
2960
  log10("after space ready", {
2901
2961
  space: space.key,
2902
2962
  open: this._isOpen
2903
2963
  }, {
2904
- file: "data-space-manager.ts",
2905
- line: 235,
2906
- scope: this,
2907
- callSite: (f, a) => f(...a)
2964
+ F: __dxlog_file10,
2965
+ L: 239,
2966
+ S: this,
2967
+ C: (f, a) => f(...a)
2908
2968
  });
2909
2969
  if (this._isOpen) {
2910
2970
  this.updated.emit();
2911
2971
  }
2972
+ },
2973
+ beforeClose: async () => {
2974
+ log10("before space close", {
2975
+ space: space.key
2976
+ }, {
2977
+ F: __dxlog_file10,
2978
+ L: 245,
2979
+ S: this,
2980
+ C: (f, a) => f(...a)
2981
+ });
2982
+ await this._dataServiceSubscriptions.unregisterSpace(space.key);
2912
2983
  }
2913
2984
  },
2914
2985
  cache: metadata.cache
2915
2986
  });
2916
- await dataSpace.open();
2987
+ if (metadata.state !== SpaceState2.INACTIVE) {
2988
+ await dataSpace.open();
2989
+ }
2917
2990
  if (metadata.controlTimeframe) {
2918
2991
  dataSpace.inner.controlPipeline.state.setTargetTimeframe(metadata.controlTimeframe);
2919
2992
  }
@@ -2924,31 +2997,33 @@ var DataSpaceManager = class DataSpaceManager2 {
2924
2997
  return dataSpace;
2925
2998
  }
2926
2999
  };
2927
- __decorate2([
2928
- synchronized
3000
+ _ts_decorate2([
3001
+ synchronized2
2929
3002
  ], DataSpaceManager.prototype, "open", null);
2930
- __decorate2([
2931
- synchronized
3003
+ _ts_decorate2([
3004
+ synchronized2
2932
3005
  ], DataSpaceManager.prototype, "close", null);
2933
- __decorate2([
2934
- synchronized
3006
+ _ts_decorate2([
3007
+ synchronized2
2935
3008
  ], DataSpaceManager.prototype, "createSpace", null);
2936
- __decorate2([
2937
- synchronized
3009
+ _ts_decorate2([
3010
+ synchronized2
2938
3011
  ], DataSpaceManager.prototype, "acceptSpace", null);
2939
- DataSpaceManager = __decorate2([
3012
+ DataSpaceManager = _ts_decorate2([
2940
3013
  trackLeaks2("open", "close")
2941
3014
  ], DataSpaceManager);
2942
3015
 
2943
3016
  // packages/sdk/client-services/src/packlets/spaces/spaces-service.ts
2944
3017
  import { EventSubscriptions as EventSubscriptions2, UpdateScheduler, scheduleTask as scheduleTask5 } from "@dxos/async";
2945
3018
  import { Stream as Stream9 } from "@dxos/codec-protobuf";
2946
- import { raise, todo as todo2 } from "@dxos/debug";
3019
+ import { raise } from "@dxos/debug";
2947
3020
  import { SpaceNotFoundError } from "@dxos/echo-pipeline";
3021
+ import { ApiError } from "@dxos/errors";
2948
3022
  import { log as log11 } from "@dxos/log";
2949
3023
  import { encodeError } from "@dxos/protocols";
2950
- import { SpaceMember as SpaceMember2 } from "@dxos/protocols/proto/dxos/client/services";
3024
+ import { SpaceMember as SpaceMember2, SpaceState as SpaceState3 } from "@dxos/protocols/proto/dxos/client/services";
2951
3025
  import { humanize } from "@dxos/util";
3026
+ var __dxlog_file11 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/spaces-service.ts";
2952
3027
  var SpacesServiceImpl = class {
2953
3028
  constructor(_identityManager, _spaceManager, _dataServiceSubscriptions, _getDataSpaceManager) {
2954
3029
  this._identityManager = _identityManager;
@@ -2964,8 +3039,22 @@ var SpacesServiceImpl = class {
2964
3039
  const space = await dataSpaceManager.createSpace();
2965
3040
  return this._serializeSpace(space);
2966
3041
  }
2967
- async updateSpace(request) {
2968
- todo2();
3042
+ async updateSpace({ spaceKey, state }) {
3043
+ var _a;
3044
+ const dataSpaceManager = await this._getDataSpaceManager();
3045
+ const space = (_a = dataSpaceManager.spaces.get(spaceKey)) != null ? _a : raise(new SpaceNotFoundError(spaceKey));
3046
+ if (state) {
3047
+ switch (state) {
3048
+ case SpaceState3.ACTIVE:
3049
+ await space.activate();
3050
+ break;
3051
+ case SpaceState3.INACTIVE:
3052
+ await space.deactivate();
3053
+ break;
3054
+ default:
3055
+ throw new ApiError("Invalid space state");
3056
+ }
3057
+ }
2969
3058
  }
2970
3059
  querySpaces() {
2971
3060
  return new Stream9(({ next, ctx }) => {
@@ -2975,10 +3064,10 @@ var SpacesServiceImpl = class {
2975
3064
  log11("update", {
2976
3065
  spaces
2977
3066
  }, {
2978
- file: "spaces-service.ts",
2979
- line: 60,
2980
- scope: this,
2981
- callSite: (f, a) => f(...a)
3067
+ F: __dxlog_file11,
3068
+ L: 78,
3069
+ S: this,
3070
+ C: (f, a) => f(...a)
2982
3071
  });
2983
3072
  next({
2984
3073
  spaces
@@ -3039,13 +3128,13 @@ var SpacesServiceImpl = class {
3039
3128
  return new Stream9(({ ctx, next }) => {
3040
3129
  var _a;
3041
3130
  const space = (_a = this._spaceManager.spaces.get(spaceKey)) != null ? _a : raise(new SpaceNotFoundError(spaceKey));
3042
- const processor = space.spaceState.registerProcessor({
3043
- process: async (credential) => {
3131
+ const processor = {
3132
+ processCredential: async (credential) => {
3044
3133
  next(credential);
3045
3134
  }
3046
- });
3047
- ctx.onDispose(() => processor.close());
3048
- scheduleTask5(ctx, () => processor.open());
3135
+ };
3136
+ ctx.onDispose(() => space.spaceState.removeCredentialProcessor(processor));
3137
+ scheduleTask5(ctx, () => space.spaceState.addCredentialProcessor(processor));
3049
3138
  });
3050
3139
  }
3051
3140
  async writeCredentials({ spaceKey, credentials }) {
@@ -3117,6 +3206,7 @@ import { log as log12 } from "@dxos/log";
3117
3206
  import { STORAGE_VERSION, trace as trace5 } from "@dxos/protocols";
3118
3207
  import { Invitation as Invitation5 } from "@dxos/protocols/proto/dxos/client/services";
3119
3208
  import { BlobStore } from "@dxos/teleport-extension-object-sync";
3209
+ var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/services/service-context.ts";
3120
3210
  var ServiceContext = class {
3121
3211
  // prettier-ignore
3122
3212
  constructor(storage, networkManager, signalManager, modelFactory) {
@@ -3160,17 +3250,17 @@ var ServiceContext = class {
3160
3250
  log12.trace("dxos.sdk.service-context.open", trace5.begin({
3161
3251
  id: this._instanceId
3162
3252
  }), {
3163
- file: "service-context.ts",
3164
- line: 126,
3165
- scope: this,
3166
- callSite: (f, a) => f(...a)
3253
+ F: __dxlog_file12,
3254
+ L: 126,
3255
+ S: this,
3256
+ C: (f, a) => f(...a)
3167
3257
  });
3168
3258
  await this._checkStorageVersion();
3169
- log12("opening...", {}, {
3170
- file: "service-context.ts",
3171
- line: 130,
3172
- scope: this,
3173
- callSite: (f, a) => f(...a)
3259
+ log12("opening...", void 0, {
3260
+ F: __dxlog_file12,
3261
+ L: 130,
3262
+ S: this,
3263
+ C: (f, a) => f(...a)
3174
3264
  });
3175
3265
  await this.signalManager.open();
3176
3266
  await this.networkManager.open();
@@ -3179,42 +3269,44 @@ var ServiceContext = class {
3179
3269
  if (this.identityManager.identity) {
3180
3270
  await this._initialize();
3181
3271
  }
3182
- log12("opened", {}, {
3183
- file: "service-context.ts",
3184
- line: 138,
3185
- scope: this,
3186
- callSite: (f, a) => f(...a)
3272
+ log12("opened", void 0, {
3273
+ F: __dxlog_file12,
3274
+ L: 138,
3275
+ S: this,
3276
+ C: (f, a) => f(...a)
3187
3277
  });
3188
3278
  log12.trace("dxos.sdk.service-context.open", trace5.end({
3189
3279
  id: this._instanceId
3190
3280
  }), {
3191
- file: "service-context.ts",
3192
- line: 139,
3193
- scope: this,
3194
- callSite: (f, a) => f(...a)
3281
+ F: __dxlog_file12,
3282
+ L: 139,
3283
+ S: this,
3284
+ C: (f, a) => f(...a)
3195
3285
  });
3196
3286
  }
3197
3287
  async close() {
3198
- var _a, _b;
3199
- log12("closing...", {}, {
3200
- file: "service-context.ts",
3201
- line: 143,
3202
- scope: this,
3203
- callSite: (f, a) => f(...a)
3204
- });
3205
- await ((_a = this._deviceSpaceSync) == null ? void 0 : _a.close());
3206
- await ((_b = this.dataSpaceManager) == null ? void 0 : _b.close());
3288
+ var _a;
3289
+ log12("closing...", void 0, {
3290
+ F: __dxlog_file12,
3291
+ L: 143,
3292
+ S: this,
3293
+ C: (f, a) => f(...a)
3294
+ });
3295
+ if (this._deviceSpaceSync && this.identityManager.identity) {
3296
+ await this.identityManager.identity.space.spaceState.removeCredentialProcessor(this._deviceSpaceSync);
3297
+ }
3298
+ await ((_a = this.dataSpaceManager) == null ? void 0 : _a.close());
3207
3299
  await this.identityManager.close();
3208
3300
  await this.spaceManager.close();
3209
3301
  await this.feedStore.close();
3210
3302
  await this.networkManager.close();
3211
3303
  await this.signalManager.close();
3212
3304
  this.dataServiceSubscriptions.clear();
3213
- log12("closed", {}, {
3214
- file: "service-context.ts",
3215
- line: 152,
3216
- scope: this,
3217
- callSite: (f, a) => f(...a)
3305
+ log12("closed", void 0, {
3306
+ F: __dxlog_file12,
3307
+ L: 154,
3308
+ S: this,
3309
+ C: (f, a) => f(...a)
3218
3310
  });
3219
3311
  }
3220
3312
  async createIdentity(params = {}) {
@@ -3241,11 +3333,11 @@ var ServiceContext = class {
3241
3333
  // Called when identity is created.
3242
3334
  async _initialize() {
3243
3335
  var _a;
3244
- log12("initializing spaces...", {}, {
3245
- file: "service-context.ts",
3246
- line: 185,
3247
- scope: this,
3248
- callSite: (f, a) => f(...a)
3336
+ log12("initializing spaces...", void 0, {
3337
+ F: __dxlog_file12,
3338
+ L: 187,
3339
+ S: this,
3340
+ C: (f, a) => f(...a)
3249
3341
  });
3250
3342
  const identity = (_a = this.identityManager.identity) != null ? _a : failUndefined3();
3251
3343
  const signingContext = {
@@ -3268,8 +3360,8 @@ var ServiceContext = class {
3268
3360
  return new SpaceInvitationProtocol(this.dataSpaceManager, signingContext, this.keyring, invitation.spaceKey);
3269
3361
  });
3270
3362
  this.initialized.wake();
3271
- this._deviceSpaceSync = identity.space.spaceState.registerProcessor({
3272
- process: async (credential) => {
3363
+ this._deviceSpaceSync = {
3364
+ processCredential: async (credential) => {
3273
3365
  const assertion = getCredentialAssertion3(credential);
3274
3366
  if (assertion["@type"] !== "dxos.halo.credentials.SpaceMember") {
3275
3367
  return;
@@ -3281,10 +3373,10 @@ var ServiceContext = class {
3281
3373
  log12("dataSpaceManager not initialized yet, ignoring space admission", {
3282
3374
  details: assertion
3283
3375
  }, {
3284
- file: "service-context.ts",
3285
- line: 224,
3286
- scope: this,
3287
- callSite: (f, a) => f(...a)
3376
+ F: __dxlog_file12,
3377
+ L: 226,
3378
+ S: this,
3379
+ C: (f, a) => f(...a)
3288
3380
  });
3289
3381
  return;
3290
3382
  }
@@ -3292,10 +3384,10 @@ var ServiceContext = class {
3292
3384
  log12("space already exists, ignoring space admission", {
3293
3385
  details: assertion
3294
3386
  }, {
3295
- file: "service-context.ts",
3296
- line: 228,
3297
- scope: this,
3298
- callSite: (f, a) => f(...a)
3387
+ F: __dxlog_file12,
3388
+ L: 230,
3389
+ S: this,
3390
+ C: (f, a) => f(...a)
3299
3391
  });
3300
3392
  return;
3301
3393
  }
@@ -3303,26 +3395,26 @@ var ServiceContext = class {
3303
3395
  log12("accepting space recorded in halo", {
3304
3396
  details: assertion
3305
3397
  }, {
3306
- file: "service-context.ts",
3307
- line: 233,
3308
- scope: this,
3309
- callSite: (f, a) => f(...a)
3398
+ F: __dxlog_file12,
3399
+ L: 235,
3400
+ S: this,
3401
+ C: (f, a) => f(...a)
3310
3402
  });
3311
3403
  await this.dataSpaceManager.acceptSpace({
3312
3404
  spaceKey: assertion.spaceKey,
3313
3405
  genesisFeedKey: assertion.genesisFeedKey
3314
3406
  });
3315
3407
  } catch (err) {
3316
- log12.catch(err, {}, {
3317
- file: "service-context.ts",
3318
- line: 239,
3319
- scope: this,
3320
- callSite: (f, a) => f(...a)
3408
+ log12.catch(err, void 0, {
3409
+ F: __dxlog_file12,
3410
+ L: 241,
3411
+ S: this,
3412
+ C: (f, a) => f(...a)
3321
3413
  });
3322
3414
  }
3323
3415
  }
3324
- });
3325
- await this._deviceSpaceSync.open();
3416
+ };
3417
+ await identity.space.spaceState.addCredentialProcessor(this._deviceSpaceSync);
3326
3418
  }
3327
3419
  };
3328
3420
 
@@ -3330,7 +3422,7 @@ var ServiceContext = class {
3330
3422
  import { asyncTimeout, Trigger as Trigger6 } from "@dxos/async";
3331
3423
  import { RESOURCE_LOCK_TIMEOUT } from "@dxos/client-protocol";
3332
3424
  import { log as log13, logInfo } from "@dxos/log";
3333
- var __decorate3 = function(decorators, target, key, desc) {
3425
+ function _ts_decorate3(decorators, target, key, desc) {
3334
3426
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3335
3427
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
3336
3428
  r = Reflect.decorate(decorators, target, key, desc);
@@ -3339,7 +3431,8 @@ var __decorate3 = function(decorators, target, key, desc) {
3339
3431
  if (d = decorators[i])
3340
3432
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3341
3433
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3342
- };
3434
+ }
3435
+ var __dxlog_file13 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/locks/browser.ts";
3343
3436
  var Message;
3344
3437
  (function(Message2) {
3345
3438
  Message2["ACQUIRING"] = "acquiring";
@@ -3361,32 +3454,32 @@ var Lock = class {
3361
3454
  message: Message.ACQUIRING
3362
3455
  });
3363
3456
  try {
3364
- log13("aquiring lock...", {}, {
3365
- file: "browser.ts",
3366
- line: 42,
3367
- scope: this,
3368
- callSite: (f, a) => f(...a)
3457
+ log13("aquiring lock...", void 0, {
3458
+ F: __dxlog_file13,
3459
+ L: 42,
3460
+ S: this,
3461
+ C: (f, a) => f(...a)
3369
3462
  });
3370
3463
  await asyncTimeout(this._requestLock(), RESOURCE_LOCK_TIMEOUT);
3371
- log13("acquired lock", {}, {
3372
- file: "browser.ts",
3373
- line: 44,
3374
- scope: this,
3375
- callSite: (f, a) => f(...a)
3464
+ log13("acquired lock", void 0, {
3465
+ F: __dxlog_file13,
3466
+ L: 44,
3467
+ S: this,
3468
+ C: (f, a) => f(...a)
3376
3469
  });
3377
3470
  } catch (e) {
3378
- log13("stealing lock...", {}, {
3379
- file: "browser.ts",
3380
- line: 46,
3381
- scope: this,
3382
- callSite: (f, a) => f(...a)
3471
+ log13("stealing lock...", void 0, {
3472
+ F: __dxlog_file13,
3473
+ L: 46,
3474
+ S: this,
3475
+ C: (f, a) => f(...a)
3383
3476
  });
3384
3477
  await this._requestLock(true);
3385
- log13("stolen lock", {}, {
3386
- file: "browser.ts",
3387
- line: 48,
3388
- scope: this,
3389
- callSite: (f, a) => f(...a)
3478
+ log13("stolen lock", void 0, {
3479
+ F: __dxlog_file13,
3480
+ L: 48,
3481
+ S: this,
3482
+ C: (f, a) => f(...a)
3390
3483
  });
3391
3484
  }
3392
3485
  }
@@ -3402,10 +3495,10 @@ var Lock = class {
3402
3495
  log13("requesting lock...", {
3403
3496
  steal
3404
3497
  }, {
3405
- file: "browser.ts",
3406
- line: 63,
3407
- scope: this,
3408
- callSite: (f, a) => f(...a)
3498
+ F: __dxlog_file13,
3499
+ L: 63,
3500
+ S: this,
3501
+ C: (f, a) => f(...a)
3409
3502
  });
3410
3503
  const acquired = new Trigger6();
3411
3504
  void navigator.locks.request(this._lockKey, {
@@ -3416,18 +3509,18 @@ var Lock = class {
3416
3509
  acquired.wake();
3417
3510
  this._releaseTrigger = new Trigger6();
3418
3511
  await this._releaseTrigger.wait();
3419
- log13("releasing lock...", {}, {
3420
- file: "browser.ts",
3421
- line: 72,
3422
- scope: this,
3423
- callSite: (f, a) => f(...a)
3512
+ log13("releasing lock...", void 0, {
3513
+ F: __dxlog_file13,
3514
+ L: 72,
3515
+ S: this,
3516
+ C: (f, a) => f(...a)
3424
3517
  });
3425
3518
  await ((_b = this._onRelease) == null ? void 0 : _b.call(this));
3426
- log13("released lock", {}, {
3427
- file: "browser.ts",
3428
- line: 74,
3429
- scope: this,
3430
- callSite: (f, a) => f(...a)
3519
+ log13("released lock", void 0, {
3520
+ F: __dxlog_file13,
3521
+ L: 74,
3522
+ S: this,
3523
+ C: (f, a) => f(...a)
3431
3524
  });
3432
3525
  }).catch(async () => {
3433
3526
  var _a;
@@ -3437,14 +3530,14 @@ var Lock = class {
3437
3530
  log13("recieved lock", {
3438
3531
  steal
3439
3532
  }, {
3440
- file: "browser.ts",
3441
- line: 81,
3442
- scope: this,
3443
- callSite: (f, a) => f(...a)
3533
+ F: __dxlog_file13,
3534
+ L: 81,
3535
+ S: this,
3536
+ C: (f, a) => f(...a)
3444
3537
  });
3445
3538
  }
3446
3539
  };
3447
- __decorate3([
3540
+ _ts_decorate3([
3448
3541
  logInfo
3449
3542
  ], Lock.prototype, "lockKey", null);
3450
3543
  var isLocked = (lockPath) => {
@@ -3526,7 +3619,7 @@ var ServiceRegistry = class {
3526
3619
 
3527
3620
  // packages/sdk/client-services/src/packlets/services/service-host.ts
3528
3621
  import invariant12 from "tiny-invariant";
3529
- import { Event as Event8, synchronized as synchronized2 } from "@dxos/async";
3622
+ import { Event as Event8, synchronized as synchronized3 } from "@dxos/async";
3530
3623
  import { clientServiceBundle } from "@dxos/client-protocol";
3531
3624
  import { DocumentModel } from "@dxos/document-model";
3532
3625
  import { DataServiceImpl } from "@dxos/echo-pipeline";
@@ -3613,7 +3706,7 @@ var LoggingServiceImpl = class {
3613
3706
  if (LOG_PROCESSING > 0) {
3614
3707
  return;
3615
3708
  }
3616
- if (((_a = entry2.meta) == null ? void 0 : _a.file.includes("logging-service")) || entry2.context && Object.values(entry2.context).some((value) => typeof value === "string" && value.includes("LoggingService"))) {
3709
+ if (((_a = entry2.meta) == null ? void 0 : _a.F.includes("logging-service")) || entry2.context && Object.values(entry2.context).some((value) => typeof value === "string" && value.includes("LoggingService"))) {
3617
3710
  return;
3618
3711
  }
3619
3712
  if (!shouldLog(entry2, request)) {
@@ -3625,8 +3718,8 @@ var LoggingServiceImpl = class {
3625
3718
  timestamp: new Date(),
3626
3719
  meta: {
3627
3720
  // TODO(dmaretskyi): Fix proto.
3628
- file: (_c = (_b = entry2.meta) == null ? void 0 : _b.file) != null ? _c : "",
3629
- line: (_e = (_d = entry2.meta) == null ? void 0 : _d.line) != null ? _e : 0
3721
+ file: (_c = (_b = entry2.meta) == null ? void 0 : _b.F) != null ? _c : "",
3722
+ line: (_e = (_d = entry2.meta) == null ? void 0 : _d.L) != null ? _e : 0
3630
3723
  }
3631
3724
  };
3632
3725
  try {
@@ -3656,7 +3749,7 @@ var shouldLog = (entry2, request) => {
3656
3749
  } else {
3657
3750
  return request.filters.some((filter) => {
3658
3751
  var _a2, _b;
3659
- return matchFilter(filter, entry2.level, (_b = (_a2 = entry2.meta) == null ? void 0 : _a2.file) != null ? _b : "", options);
3752
+ return matchFilter(filter, entry2.level, (_b = (_a2 = entry2.meta) == null ? void 0 : _a2.F) != null ? _b : "", options);
3660
3753
  });
3661
3754
  }
3662
3755
  };
@@ -3733,7 +3826,7 @@ var SystemServiceImpl = class {
3733
3826
  };
3734
3827
 
3735
3828
  // packages/sdk/client-services/src/packlets/services/service-host.ts
3736
- var __decorate4 = function(decorators, target, key, desc) {
3829
+ function _ts_decorate4(decorators, target, key, desc) {
3737
3830
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3738
3831
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
3739
3832
  r = Reflect.decorate(decorators, target, key, desc);
@@ -3742,7 +3835,8 @@ var __decorate4 = function(decorators, target, key, desc) {
3742
3835
  if (d = decorators[i])
3743
3836
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3744
3837
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3745
- };
3838
+ }
3839
+ var __dxlog_file14 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/services/service-host.ts";
3746
3840
  var createDefaultModelFactory = () => {
3747
3841
  return new ModelFactory().registerModel(DocumentModel).registerModel(TextModel);
3748
3842
  };
@@ -3756,13 +3850,15 @@ var ClientServicesHost = class {
3756
3850
  connectionLog,
3757
3851
  storage,
3758
3852
  // TODO(wittjosiah): Turn this on by default.
3759
- lockKey
3853
+ lockKey,
3854
+ callbacks
3760
3855
  } = {}) {
3761
3856
  this._statusUpdate = new Event8();
3762
3857
  this._opening = false;
3763
3858
  this._open = false;
3764
3859
  this._storage = storage;
3765
3860
  this._modelFactory = modelFactory;
3861
+ this._callbacks = callbacks;
3766
3862
  if (config) {
3767
3863
  this.initialize({
3768
3864
  config,
@@ -3849,10 +3945,10 @@ var ClientServicesHost = class {
3849
3945
  log15.trace("dxos.sdk.client-services-host.open", trace6.begin({
3850
3946
  id: traceId
3851
3947
  }), {
3852
- file: "service-host.ts",
3853
- line: 195,
3854
- scope: this,
3855
- callSite: (f, a) => f(...a)
3948
+ F: __dxlog_file14,
3949
+ L: 203,
3950
+ S: this,
3951
+ C: (f, a) => f(...a)
3856
3952
  });
3857
3953
  invariant12(this._config, "config not set");
3858
3954
  invariant12(this._storage, "storage not set");
@@ -3862,10 +3958,10 @@ var ClientServicesHost = class {
3862
3958
  log15("opening...", {
3863
3959
  lockKey: (_a = this._resourceLock) == null ? void 0 : _a.lockKey
3864
3960
  }, {
3865
- file: "service-host.ts",
3866
- line: 203,
3867
- scope: this,
3868
- callSite: (f, a) => f(...a)
3961
+ F: __dxlog_file14,
3962
+ L: 211,
3963
+ S: this,
3964
+ C: (f, a) => f(...a)
3869
3965
  });
3870
3966
  await ((_b = this._resourceLock) == null ? void 0 : _b.acquire());
3871
3967
  await this._loggingService.open();
@@ -3897,18 +3993,18 @@ var ClientServicesHost = class {
3897
3993
  log15("opened", {
3898
3994
  deviceKey
3899
3995
  }, {
3900
- file: "service-host.ts",
3901
- line: 258,
3902
- scope: this,
3903
- callSite: (f, a) => f(...a)
3996
+ F: __dxlog_file14,
3997
+ L: 266,
3998
+ S: this,
3999
+ C: (f, a) => f(...a)
3904
4000
  });
3905
4001
  log15.trace("dxos.sdk.client-services-host.open", trace6.end({
3906
4002
  id: traceId
3907
4003
  }), {
3908
- file: "service-host.ts",
3909
- line: 259,
3910
- scope: this,
3911
- callSite: (f, a) => f(...a)
4004
+ F: __dxlog_file14,
4005
+ L: 267,
4006
+ S: this,
4007
+ C: (f, a) => f(...a)
3912
4008
  });
3913
4009
  }
3914
4010
  async close() {
@@ -3920,10 +4016,10 @@ var ClientServicesHost = class {
3920
4016
  log15("closing...", {
3921
4017
  deviceKey
3922
4018
  }, {
3923
- file: "service-host.ts",
3924
- line: 269,
3925
- scope: this,
3926
- callSite: (f, a) => f(...a)
4019
+ F: __dxlog_file14,
4020
+ L: 277,
4021
+ S: this,
4022
+ C: (f, a) => f(...a)
3927
4023
  });
3928
4024
  this._serviceRegistry.setServices({
3929
4025
  SystemService: this._systemService
@@ -3935,52 +4031,53 @@ var ClientServicesHost = class {
3935
4031
  log15("closed", {
3936
4032
  deviceKey
3937
4033
  }, {
3938
- file: "service-host.ts",
3939
- line: 275,
3940
- scope: this,
3941
- callSite: (f, a) => f(...a)
4034
+ F: __dxlog_file14,
4035
+ L: 283,
4036
+ S: this,
4037
+ C: (f, a) => f(...a)
3942
4038
  });
3943
4039
  }
3944
4040
  async reset() {
3945
- var _a;
4041
+ var _a, _b, _c;
3946
4042
  const traceId = PublicKey10.random().toHex();
3947
4043
  log15.trace("dxos.sdk.client-services-host.reset", trace6.begin({
3948
4044
  id: traceId
3949
4045
  }), {
3950
- file: "service-host.ts",
3951
- line: 280,
3952
- scope: this,
3953
- callSite: (f, a) => f(...a)
4046
+ F: __dxlog_file14,
4047
+ L: 288,
4048
+ S: this,
4049
+ C: (f, a) => f(...a)
3954
4050
  });
3955
- log15("resetting...", {}, {
3956
- file: "service-host.ts",
3957
- line: 282,
3958
- scope: this,
3959
- callSite: (f, a) => f(...a)
4051
+ log15("resetting...", void 0, {
4052
+ F: __dxlog_file14,
4053
+ L: 290,
4054
+ S: this,
4055
+ C: (f, a) => f(...a)
3960
4056
  });
3961
4057
  await ((_a = this._serviceContext) == null ? void 0 : _a.close());
3962
4058
  await this._storage.reset();
3963
- log15("reset", {}, {
3964
- file: "service-host.ts",
3965
- line: 285,
3966
- scope: this,
3967
- callSite: (f, a) => f(...a)
4059
+ log15("reset", void 0, {
4060
+ F: __dxlog_file14,
4061
+ L: 293,
4062
+ S: this,
4063
+ C: (f, a) => f(...a)
3968
4064
  });
3969
4065
  log15.trace("dxos.sdk.client-services-host.reset", trace6.end({
3970
4066
  id: traceId
3971
4067
  }), {
3972
- file: "service-host.ts",
3973
- line: 286,
3974
- scope: this,
3975
- callSite: (f, a) => f(...a)
4068
+ F: __dxlog_file14,
4069
+ L: 294,
4070
+ S: this,
4071
+ C: (f, a) => f(...a)
3976
4072
  });
4073
+ await ((_c = (_b = this._callbacks) == null ? void 0 : _b.onReset) == null ? void 0 : _c.call(_b));
3977
4074
  }
3978
4075
  };
3979
- __decorate4([
3980
- synchronized2
4076
+ _ts_decorate4([
4077
+ synchronized3
3981
4078
  ], ClientServicesHost.prototype, "open", null);
3982
- __decorate4([
3983
- synchronized2
4079
+ _ts_decorate4([
4080
+ synchronized3
3984
4081
  ], ClientServicesHost.prototype, "close", null);
3985
4082
 
3986
4083
  export {
@@ -4014,4 +4111,4 @@ export {
4014
4111
  createDefaultModelFactory,
4015
4112
  ClientServicesHost
4016
4113
  };
4017
- //# sourceMappingURL=chunk-O5T3BZYP.mjs.map
4114
+ //# sourceMappingURL=chunk-EYXOVYW5.mjs.map