@dxos/client-services 0.4.9 → 0.4.10-main.7ab08e9

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 (30) hide show
  1. package/dist/lib/browser/{chunk-RQ33OGAG.mjs → chunk-LAJ3V2AH.mjs} +108 -38
  2. package/dist/lib/browser/{chunk-RQ33OGAG.mjs.map → chunk-LAJ3V2AH.mjs.map} +3 -3
  3. package/dist/lib/browser/index.mjs +48 -20
  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 +1 -1
  7. package/dist/lib/node/{chunk-CBSM4HU4.cjs → chunk-ZVSJIOW6.cjs} +116 -46
  8. package/dist/lib/node/chunk-ZVSJIOW6.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +85 -57
  10. package/dist/lib/node/index.cjs.map +3 -3
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/packlets/testing/index.cjs +6 -6
  13. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  14. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  15. package/dist/types/src/packlets/vault/shared-worker-connection.d.ts +5 -5
  16. package/dist/types/src/packlets/vault/shared-worker-connection.d.ts.map +1 -1
  17. package/dist/types/src/packlets/vault/worker-runtime.d.ts +2 -0
  18. package/dist/types/src/packlets/vault/worker-runtime.d.ts.map +1 -1
  19. package/dist/types/src/packlets/vault/worker-session.d.ts +2 -0
  20. package/dist/types/src/packlets/vault/worker-session.d.ts.map +1 -1
  21. package/dist/types/src/version.d.ts +1 -1
  22. package/dist/types/src/version.d.ts.map +1 -1
  23. package/package.json +34 -34
  24. package/src/packlets/services/service-host.ts +5 -2
  25. package/src/packlets/spaces/data-space.ts +51 -2
  26. package/src/packlets/vault/shared-worker-connection.ts +3 -8
  27. package/src/packlets/vault/worker-runtime.ts +27 -2
  28. package/src/packlets/vault/worker-session.ts +6 -0
  29. package/src/version.ts +1 -5
  30. package/dist/lib/node/chunk-CBSM4HU4.cjs.map +0 -7
@@ -27,6 +27,8 @@ export declare class WorkerRuntime {
27
27
  private readonly _clientServices;
28
28
  private _sessionForNetworking?;
29
29
  private _config;
30
+ private _signalMetadataTags;
31
+ private _signalTelemetryEnabled;
30
32
  constructor(_configProvider: () => MaybePromise<Config>, { acquireLock, releaseLock, onReset }: WorkerRuntimeCallbacks);
31
33
  get host(): ClientServicesHost;
32
34
  start(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"worker-runtime.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/vault/worker-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAK3C,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAWtB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAVlC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAC3E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IACtD,OAAO,CAAC,qBAAqB,CAAC,CAAgB;IAC9C,OAAO,CAAC,OAAO,CAAU;gBAGN,eAAe,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,EAC5D,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,sBAAsB;IAW/D,IAAI,IAAI,uBAEP;IAEK,KAAK;IAuBL,IAAI;IAMV;;OAEG;IACG,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,mBAAmB;IA0B3E;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAoBzB"}
1
+ {"version":3,"file":"worker-runtime.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/vault/worker-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAW3C,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAatB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAZlC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAC3E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IACtD,OAAO,CAAC,qBAAqB,CAAC,CAAgB;IAC9C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,uBAAuB,CAAkB;gBAG9B,eAAe,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,EAC5D,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,sBAAsB;IAW/D,IAAI,IAAI,uBAEP;IAEK,KAAK;IA8BL,IAAI;IAMV;;OAEG;IACG,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAoC3E;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAoBzB"}
@@ -21,6 +21,8 @@ export declare class WorkerSession {
21
21
  private readonly _serviceHost;
22
22
  readonly onClose: Callback<() => Promise<void>>;
23
23
  origin?: string;
24
+ observabilityGroup?: string;
25
+ signalTelemetryEnabled?: boolean;
24
26
  lockKey?: string;
25
27
  bridgeService?: BridgeService;
26
28
  constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }: WorkerSessionParams);
@@ -1 +1 @@
1
- {"version":3,"file":"worker-session.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/vault/worker-session.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,OAAO,EAAE,MAAM,aAAa,CAAC;AASpD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAyC,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAqB,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,KAAK,kBAAkB,EAA+C,MAAM,aAAa,CAAC;AAEnG,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,kBAAkB,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IAEjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAElD,SAAgB,OAAO,iBAAsB,QAAQ,IAAI,CAAC,EAAI;IAGvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,aAAa,CAAC,EAAE,aAAa,CAAC;gBAEzB,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,mBAAmB;IAkEvF,IAAI;IAeJ,KAAK;YAYG,eAAe;IAQ7B,OAAO,CAAC,kBAAkB;CAO3B"}
1
+ {"version":3,"file":"worker-session.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/vault/worker-session.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,OAAO,EAAE,MAAM,aAAa,CAAC;AASpD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAyC,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAqB,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,KAAK,kBAAkB,EAA+C,MAAM,aAAa,CAAC;AAEnG,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,kBAAkB,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IAEjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAElD,SAAgB,OAAO,iBAAsB,QAAQ,IAAI,CAAC,EAAI;IAGvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAGjC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,aAAa,CAAC,EAAE,aAAa,CAAC;gBAEzB,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,mBAAmB;IAoEvF,IAAI;IAeJ,KAAK;YAYG,eAAe;IAQ7B,OAAO,CAAC,kBAAkB;CAO3B"}
@@ -1,2 +1,2 @@
1
- export declare const DXOS_VERSION = "0.4.9";
1
+ export declare const DXOS_VERSION = "0.4.10-main.7ab08e9";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,UAAU,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/client-services",
3
- "version": "0.4.9",
3
+ "version": "0.4.10-main.7ab08e9",
4
4
  "description": "DXOS client services implementation",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -22,43 +22,43 @@
22
22
  ],
23
23
  "dependencies": {
24
24
  "platform": "^1.3.6",
25
- "@dxos/automerge": "0.4.9",
26
- "@dxos/client-protocol": "0.4.9",
27
- "@dxos/codec-protobuf": "0.4.9",
28
- "@dxos/context": "0.4.9",
29
- "@dxos/config": "0.4.9",
30
- "@dxos/credentials": "0.4.9",
31
- "@dxos/debug": "0.4.9",
32
- "@dxos/crypto": "0.4.9",
33
- "@dxos/echo-db": "0.4.9",
34
- "@dxos/echo-pipeline": "0.4.9",
35
- "@dxos/async": "0.4.9",
36
- "@dxos/feed-store": "0.4.9",
37
- "@dxos/echo-schema": "0.4.9",
38
- "@dxos/keyring": "0.4.9",
39
- "@dxos/invariant": "0.4.9",
40
- "@dxos/keys": "0.4.9",
41
- "@dxos/indexing": "0.4.9",
42
- "@dxos/log": "0.4.9",
43
- "@dxos/lock-file": "0.4.9",
44
- "@dxos/messaging": "0.4.9",
45
- "@dxos/network-manager": "0.4.9",
46
- "@dxos/protocols": "0.4.9",
47
- "@dxos/node-std": "0.4.9",
48
- "@dxos/random-access-storage": "0.4.9",
49
- "@dxos/rpc": "0.4.9",
50
- "@dxos/teleport": "0.4.9",
51
- "@dxos/teleport-extension-gossip": "0.4.9",
52
- "@dxos/teleport-extension-object-sync": "0.4.9",
53
- "@dxos/tracing": "0.4.9",
54
- "@dxos/util": "0.4.9",
55
- "@dxos/websocket-rpc": "0.4.9",
56
- "@dxos/timeframe": "0.4.9"
25
+ "@dxos/async": "0.4.10-main.7ab08e9",
26
+ "@dxos/automerge": "0.4.10-main.7ab08e9",
27
+ "@dxos/client-protocol": "0.4.10-main.7ab08e9",
28
+ "@dxos/codec-protobuf": "0.4.10-main.7ab08e9",
29
+ "@dxos/config": "0.4.10-main.7ab08e9",
30
+ "@dxos/context": "0.4.10-main.7ab08e9",
31
+ "@dxos/crypto": "0.4.10-main.7ab08e9",
32
+ "@dxos/credentials": "0.4.10-main.7ab08e9",
33
+ "@dxos/debug": "0.4.10-main.7ab08e9",
34
+ "@dxos/echo-db": "0.4.10-main.7ab08e9",
35
+ "@dxos/echo-pipeline": "0.4.10-main.7ab08e9",
36
+ "@dxos/echo-schema": "0.4.10-main.7ab08e9",
37
+ "@dxos/feed-store": "0.4.10-main.7ab08e9",
38
+ "@dxos/indexing": "0.4.10-main.7ab08e9",
39
+ "@dxos/invariant": "0.4.10-main.7ab08e9",
40
+ "@dxos/keyring": "0.4.10-main.7ab08e9",
41
+ "@dxos/keys": "0.4.10-main.7ab08e9",
42
+ "@dxos/log": "0.4.10-main.7ab08e9",
43
+ "@dxos/lock-file": "0.4.10-main.7ab08e9",
44
+ "@dxos/messaging": "0.4.10-main.7ab08e9",
45
+ "@dxos/network-manager": "0.4.10-main.7ab08e9",
46
+ "@dxos/node-std": "0.4.10-main.7ab08e9",
47
+ "@dxos/random-access-storage": "0.4.10-main.7ab08e9",
48
+ "@dxos/protocols": "0.4.10-main.7ab08e9",
49
+ "@dxos/rpc": "0.4.10-main.7ab08e9",
50
+ "@dxos/teleport": "0.4.10-main.7ab08e9",
51
+ "@dxos/teleport-extension-gossip": "0.4.10-main.7ab08e9",
52
+ "@dxos/teleport-extension-object-sync": "0.4.10-main.7ab08e9",
53
+ "@dxos/timeframe": "0.4.10-main.7ab08e9",
54
+ "@dxos/tracing": "0.4.10-main.7ab08e9",
55
+ "@dxos/util": "0.4.10-main.7ab08e9",
56
+ "@dxos/websocket-rpc": "0.4.10-main.7ab08e9"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@types/platform": "^1.3.4",
60
60
  "@types/readable-stream": "^2.3.9",
61
- "@dxos/signal": "0.4.9"
61
+ "@dxos/signal": "0.4.10-main.7ab08e9"
62
62
  },
63
63
  "publishConfig": {
64
64
  "access": "public"
@@ -6,8 +6,8 @@ import { Event, synchronized } from '@dxos/async';
6
6
  import { Properties, clientServiceBundle, defaultKey, type ClientServices } from '@dxos/client-protocol';
7
7
  import { type Config } from '@dxos/config';
8
8
  import { Context } from '@dxos/context';
9
- import { DataServiceImpl } from '@dxos/echo-pipeline';
10
- import { getAutomergeObjectCore, getRawDoc, type SpaceDoc, type TypedObject } from '@dxos/echo-schema';
9
+ import { DataServiceImpl, type SpaceDoc } from '@dxos/echo-pipeline';
10
+ import { getAutomergeObjectCore, getRawDoc, type TypedObject } from '@dxos/echo-schema';
11
11
  import { IndexServiceImpl } from '@dxos/indexing';
12
12
  import { invariant } from '@dxos/invariant';
13
13
  import { PublicKey } from '@dxos/keys';
@@ -187,6 +187,9 @@ export class ClientServicesHost {
187
187
  }
188
188
  }
189
189
 
190
+ if (!options.signalManager) {
191
+ log.warn('running signaling without telemetry metadata.');
192
+ }
190
193
  const {
191
194
  connectionLog = true,
192
195
  transportFactory = createSimplePeerTransportFactory({
@@ -6,7 +6,15 @@ import { Event, asyncTimeout, scheduleTask, sleep, synchronized, trackLeaks } fr
6
6
  import { AUTH_TIMEOUT } from '@dxos/client-protocol';
7
7
  import { cancelWithContext, Context, ContextDisposedError } from '@dxos/context';
8
8
  import { timed, warnAfterTimeout } from '@dxos/debug';
9
- import { type MetadataStore, type Space, createMappedFeedWriter, type AutomergeHost } from '@dxos/echo-pipeline';
9
+ import { TYPE_PROPERTIES } from '@dxos/echo-db';
10
+ import {
11
+ type MetadataStore,
12
+ type Space,
13
+ createMappedFeedWriter,
14
+ type AutomergeHost,
15
+ type SpaceDoc,
16
+ } from '@dxos/echo-pipeline';
17
+ import { AutomergeDocumentLoaderImpl } from '@dxos/echo-pipeline';
10
18
  import { type FeedStore } from '@dxos/feed-store';
11
19
  import { failedInvariant, invariant } from '@dxos/invariant';
12
20
  import { type Keyring } from '@dxos/keyring';
@@ -26,7 +34,7 @@ import { type GossipMessage } from '@dxos/protocols/proto/dxos/mesh/teleport/gos
26
34
  import { type Gossip, type Presence } from '@dxos/teleport-extension-gossip';
27
35
  import { Timeframe } from '@dxos/timeframe';
28
36
  import { trace } from '@dxos/tracing';
29
- import { ComplexSet } from '@dxos/util';
37
+ import { ComplexSet, assignDeep } from '@dxos/util';
30
38
 
31
39
  import { AutomergeSpaceState } from './automerge-space-state';
32
40
  import { type SigningContext } from './data-space-manager';
@@ -437,6 +445,47 @@ export class DataSpace {
437
445
  };
438
446
  }
439
447
  break;
448
+ case CreateEpochRequest.Migration.FRAGMENT_AUTOMERGE_ROOT:
449
+ {
450
+ log.info('Fragmenting');
451
+
452
+ const currentRootUrl = this._automergeSpaceState.rootUrl;
453
+ const rootHandle = this._automergeHost.repo.find<SpaceDoc>(currentRootUrl as any);
454
+ await cancelWithContext(this._ctx, asyncTimeout(rootHandle.whenReady(), 10_000));
455
+
456
+ // Find properties object.
457
+ const objects = Object.entries((rootHandle.docSync() as SpaceDoc).objects!);
458
+ const properties = objects.find(([_, value]) => value.system.type?.itemId === TYPE_PROPERTIES);
459
+ const otherObjects = objects.filter(([key]) => key !== properties?.[0]);
460
+ invariant(properties, 'Properties not found');
461
+
462
+ // Create a new space doc with the properties object.
463
+ const newSpaceDoc: SpaceDoc = { ...rootHandle.docSync(), objects: Object.fromEntries([properties]) };
464
+ const newRoot = this._automergeHost.repo.create(newSpaceDoc);
465
+ invariant(typeof newRoot.url === 'string' && newRoot.url.length > 0);
466
+
467
+ // Create new automerge documents for all objects.
468
+ const docLoader = new AutomergeDocumentLoaderImpl(this.key, this._automergeHost.repo);
469
+ await docLoader.loadSpaceRootDocHandle(this._ctx, { rootUrl: newRoot.url });
470
+
471
+ otherObjects.forEach(([key, value]) => {
472
+ const handle = docLoader.createDocumentForObject(key);
473
+ handle.change((doc: any) => {
474
+ assignDeep(doc, ['objects', key], value);
475
+ });
476
+ });
477
+
478
+ // TODO(mykola): Delete old root.
479
+
480
+ // TODO(dmaretskyi): Unify epoch construction.
481
+ epoch = {
482
+ previousId: this._automergeSpaceState.lastEpoch?.id,
483
+ number: (this._automergeSpaceState.lastEpoch?.subject.assertion.number ?? -1) + 1,
484
+ timeframe: this._automergeSpaceState.lastEpoch?.subject.assertion.timeframe ?? new Timeframe(),
485
+ automergeRoot: newRoot.url,
486
+ };
487
+ }
488
+ break;
440
489
  }
441
490
 
442
491
  if (!epoch) {
@@ -57,12 +57,7 @@ export class SharedWorkerConnection {
57
57
  return this._shellRuntime;
58
58
  }
59
59
 
60
- async open(
61
- /**
62
- * @deprecated Only used with iframes.
63
- */
64
- origin: string,
65
- ) {
60
+ async open(params: { origin: string; observabilityGroup?: string; signalTelemetryEnabled?: boolean }) {
66
61
  this._config = await getAsyncValue(this._configProvider);
67
62
 
68
63
  this._transportService = new SimplePeerTransportService({
@@ -83,7 +78,7 @@ export class SharedWorkerConnection {
83
78
 
84
79
  let lockKey: string | undefined;
85
80
  if (typeof navigator !== 'undefined') {
86
- lockKey = this._lockKey(origin);
81
+ lockKey = this._lockKey(params.origin);
87
82
  this._release = new Trigger();
88
83
  const ready = new Trigger();
89
84
  void navigator.locks.request(lockKey, async () => {
@@ -95,7 +90,7 @@ export class SharedWorkerConnection {
95
90
 
96
91
  try {
97
92
  await this._systemRpc.open();
98
- await this._systemRpc.rpc.WorkerService.start({ origin, lockKey });
93
+ await this._systemRpc.rpc.WorkerService.start({ lockKey, ...params });
99
94
  } catch (err) {
100
95
  log.catch(err);
101
96
  throw new RemoteServiceConnectionError('Failed to connect to worker');
@@ -5,8 +5,14 @@
5
5
  import { Trigger } from '@dxos/async';
6
6
  import { type Config } from '@dxos/config';
7
7
  import { Context } from '@dxos/context';
8
+ import { invariant } from '@dxos/invariant';
8
9
  import { log } from '@dxos/log';
9
- import { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';
10
+ import {
11
+ MemorySignalManager,
12
+ MemorySignalManagerContext,
13
+ WebsocketSignalManager,
14
+ setIdentityTags,
15
+ } from '@dxos/messaging';
10
16
  import { SimplePeerTransportProxyFactory } from '@dxos/network-manager';
11
17
  import { type RpcPort } from '@dxos/rpc';
12
18
  import { type MaybePromise } from '@dxos/util';
@@ -41,6 +47,8 @@ export class WorkerRuntime {
41
47
  private readonly _clientServices!: ClientServicesHost;
42
48
  private _sessionForNetworking?: WorkerSession; // TODO(burdon): Expose to client QueryStatusResponse.
43
49
  private _config!: Config;
50
+ private _signalMetadataTags: any = { runtime: 'worker-runtime' };
51
+ private _signalTelemetryEnabled: boolean = false;
44
52
 
45
53
  constructor(
46
54
  private readonly _configProvider: () => MaybePromise<Config>,
@@ -68,7 +76,7 @@ export class WorkerRuntime {
68
76
  this._clientServices.initialize({
69
77
  config: this._config,
70
78
  signalManager: signals
71
- ? new WebsocketSignalManager(signals)
79
+ ? new WebsocketSignalManager(signals, () => (this._signalTelemetryEnabled ? this._signalMetadataTags : {}))
72
80
  : new MemorySignalManager(new MemorySignalManagerContext()), // TODO(dmaretskyi): Inject this context.
73
81
  transportFactory: this._transportFactory,
74
82
  });
@@ -76,6 +84,13 @@ export class WorkerRuntime {
76
84
  await this._clientServices.open(new Context());
77
85
  this._ready.wake(undefined);
78
86
  log('started');
87
+ setIdentityTags({
88
+ identityService: this._clientServices.services.IdentityService!,
89
+ devicesService: this._clientServices.services.DevicesService!,
90
+ setTag: (k: string, v: string) => {
91
+ this._signalMetadataTags[k] = v;
92
+ },
93
+ });
79
94
  } catch (err: any) {
80
95
  this._ready.wake(err);
81
96
  log.error('starting', err);
@@ -112,6 +127,16 @@ export class WorkerRuntime {
112
127
  });
113
128
 
114
129
  await session.open();
130
+ // A worker can only service one origin currently
131
+ invariant(
132
+ !this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin,
133
+ `worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`,
134
+ );
135
+ if (session.observabilityGroup) {
136
+ this._signalMetadataTags.group = session.observabilityGroup;
137
+ }
138
+ this._signalTelemetryEnabled = session.signalTelemetryEnabled ?? false;
139
+ this._signalMetadataTags.origin = session.origin;
115
140
  this._sessions.add(session);
116
141
 
117
142
  this._reconnectWebrtc();
@@ -41,6 +41,10 @@ export class WorkerSession {
41
41
  @logInfo
42
42
  public origin?: string;
43
43
 
44
+ // TODO(nf): factor out?
45
+ public observabilityGroup?: string;
46
+ public signalTelemetryEnabled?: boolean;
47
+
44
48
  @logInfo
45
49
  public lockKey?: string;
46
50
 
@@ -91,6 +95,8 @@ export class WorkerSession {
91
95
  start: async (request) => {
92
96
  this.origin = request.origin;
93
97
  this.lockKey = request.lockKey;
98
+ this.observabilityGroup = request.observabilityGroup;
99
+ this.signalTelemetryEnabled = request.signalTelemetryEnabled;
94
100
  this._startTrigger.wake();
95
101
  },
96
102
 
package/src/version.ts CHANGED
@@ -1,5 +1 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- export const DXOS_VERSION = '0.4.9'; // {x-release-please-version}
1
+ export const DXOS_VERSION = "0.4.10-main.7ab08e9";