@dxos/client-services 0.6.13 → 0.6.14-main.2b6a0f3
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.
- package/dist/lib/browser/{chunk-CRXXOI45.mjs → chunk-BBLK6AUB.mjs} +6301 -5383
- package/dist/lib/browser/chunk-BBLK6AUB.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +320 -45
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +12 -7
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/{chunk-PZ3JJJ3K.cjs → chunk-SJEDBF7U.cjs} +6286 -5378
- package/dist/lib/node/chunk-SJEDBF7U.cjs.map +7 -0
- package/dist/lib/node/index.cjs +369 -94
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +18 -13
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/lib/node-esm/chunk-A6GS6OOD.mjs +8634 -0
- package/dist/lib/node-esm/chunk-A6GS6OOD.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +691 -0
- package/dist/lib/node-esm/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -0
- package/dist/lib/node-esm/testing/index.mjs +424 -0
- package/dist/lib/node-esm/testing/index.mjs.map +7 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/packlets/agents/edge-agent-manager.d.ts +35 -0
- package/dist/types/src/packlets/agents/edge-agent-manager.d.ts.map +1 -0
- package/dist/types/src/packlets/agents/edge-agent-service.d.ts +10 -0
- package/dist/types/src/packlets/agents/edge-agent-service.d.ts.map +1 -0
- package/dist/types/src/packlets/agents/index.d.ts +3 -0
- package/dist/types/src/packlets/agents/index.d.ts.map +1 -0
- package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/authenticator.node.test.d.ts +2 -0
- package/dist/types/src/packlets/identity/authenticator.node.test.d.ts.map +1 -0
- package/dist/types/src/packlets/identity/contacts-service.d.ts +1 -1
- package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-manager.d.ts +28 -9
- package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +18 -0
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -0
- package/dist/types/src/packlets/identity/identity-service.d.ts +7 -2
- package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity.d.ts +12 -3
- package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts +30 -0
- package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -0
- package/dist/types/src/packlets/invitations/invitation-guest-extenstion.d.ts +2 -1
- package/dist/types/src/packlets/invitations/invitation-guest-extenstion.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-host-extension.d.ts +2 -1
- package/dist/types/src/packlets/invitations/invitation-host-extension.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-state.d.ts +19 -0
- package/dist/types/src/packlets/invitations/invitation-state.d.ts.map +1 -0
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts +8 -8
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-context.d.ts +14 -9
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +2 -0
- package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts +7 -3
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +5 -3
- package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts +3 -0
- package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/edge-feed-replicator.test.d.ts +2 -0
- package/dist/types/src/packlets/spaces/edge-feed-replicator.test.d.ts.map +1 -0
- package/dist/types/src/packlets/spaces/epoch-migrations.d.ts +1 -1
- package/dist/types/src/packlets/spaces/epoch-migrations.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +35 -6
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/storage.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/test-builder.d.ts +1 -2
- package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
- package/dist/types/src/testing/setup.d.ts +3 -0
- package/dist/types/src/testing/setup.d.ts.map +1 -0
- package/dist/types/src/version.d.ts +1 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/package.json +44 -39
- package/src/index.ts +1 -0
- package/src/packlets/agents/edge-agent-manager.ts +163 -0
- package/src/packlets/agents/edge-agent-service.ts +42 -0
- package/src/packlets/agents/index.ts +6 -0
- package/src/packlets/devices/devices-service.test.ts +4 -5
- package/src/packlets/diagnostics/diagnostics-broadcast.ts +1 -0
- package/src/packlets/identity/{authenticator.test.ts → authenticator.node.test.ts} +2 -3
- package/src/packlets/identity/authenticator.ts +5 -2
- package/src/packlets/identity/contacts-service.ts +1 -1
- package/src/packlets/identity/identity-manager.test.ts +31 -16
- package/src/packlets/identity/identity-manager.ts +76 -32
- package/src/packlets/identity/identity-recovery-manager.ts +95 -0
- package/src/packlets/identity/identity-service.test.ts +5 -8
- package/src/packlets/identity/identity-service.ts +11 -5
- package/src/packlets/identity/identity.test.ts +130 -239
- package/src/packlets/identity/identity.ts +60 -17
- package/src/packlets/invitations/device-invitation-protocol.test.ts +7 -4
- package/src/packlets/invitations/device-invitation-protocol.ts +5 -1
- package/src/packlets/invitations/edge-invitation-handler.ts +185 -0
- package/src/packlets/invitations/invitation-guest-extenstion.ts +8 -4
- package/src/packlets/invitations/invitation-host-extension.ts +8 -7
- package/src/packlets/invitations/invitation-state.ts +111 -0
- package/src/packlets/invitations/invitations-handler.test.ts +16 -9
- package/src/packlets/invitations/invitations-handler.ts +23 -93
- package/src/packlets/invitations/space-invitation-protocol.test.ts +4 -3
- package/src/packlets/invitations/space-invitation-protocol.ts +4 -0
- package/src/packlets/logging/logging.test.ts +1 -2
- package/src/packlets/network/network-service.test.ts +2 -3
- package/src/packlets/services/service-context.test.ts +3 -1
- package/src/packlets/services/service-context.ts +113 -35
- package/src/packlets/services/service-host.test.ts +8 -12
- package/src/packlets/services/service-host.ts +25 -7
- package/src/packlets/services/service-registry.test.ts +1 -2
- package/src/packlets/spaces/data-space-manager.test.ts +2 -2
- package/src/packlets/spaces/data-space-manager.ts +44 -7
- package/src/packlets/spaces/data-space.ts +37 -6
- package/src/packlets/spaces/edge-feed-replicator.test.ts +252 -0
- package/src/packlets/spaces/edge-feed-replicator.ts +80 -22
- package/src/packlets/spaces/epoch-migrations.ts +2 -2
- package/src/packlets/spaces/notarization-plugin.test.ts +10 -7
- package/src/packlets/spaces/notarization-plugin.ts +196 -29
- package/src/packlets/spaces/spaces-service.test.ts +5 -9
- package/src/packlets/spaces/spaces-service.ts +6 -1
- package/src/packlets/storage/storage.ts +0 -1
- package/src/packlets/system/system-service.test.ts +1 -2
- package/src/packlets/testing/test-builder.ts +7 -4
- package/src/packlets/worker/worker-runtime.ts +2 -2
- package/src/testing/setup.ts +11 -0
- package/src/version.ts +1 -5
- package/dist/lib/browser/chunk-CRXXOI45.mjs.map +0 -7
- package/dist/lib/node/chunk-PZ3JJJ3K.cjs.map +0 -7
- package/dist/types/src/packlets/identity/authenticator.test.d.ts +0 -2
- package/dist/types/src/packlets/identity/authenticator.test.d.ts.map +0 -1
- package/dist/types/src/packlets/services/automerge-host.test.d.ts +0 -2
- package/dist/types/src/packlets/services/automerge-host.test.d.ts.map +0 -1
- package/src/packlets/services/automerge-host.test.ts +0 -60
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Event } from '@dxos/async';
|
|
2
2
|
import type { SpecificCredential } from '@dxos/credentials';
|
|
3
|
-
import { type EchoHost, type DatabaseRoot } from '@dxos/echo-
|
|
4
|
-
import {
|
|
5
|
-
import type { EdgeConnection } from '@dxos/edge-client';
|
|
3
|
+
import { type EchoHost, type DatabaseRoot, type MetadataStore, type Space } from '@dxos/echo-pipeline';
|
|
4
|
+
import type { EdgeConnection, EdgeHttpClient } from '@dxos/edge-client';
|
|
6
5
|
import { type FeedStore } from '@dxos/feed-store';
|
|
7
6
|
import { type Keyring } from '@dxos/keyring';
|
|
8
7
|
import { PublicKey } from '@dxos/keys';
|
|
@@ -46,7 +45,9 @@ export type DataSpaceParams = {
|
|
|
46
45
|
callbacks?: DataSpaceCallbacks;
|
|
47
46
|
cache?: SpaceCache;
|
|
48
47
|
edgeConnection?: EdgeConnection;
|
|
48
|
+
edgeHttpClient?: EdgeHttpClient;
|
|
49
49
|
edgeFeatures?: Runtime.Client.EdgeFeatures;
|
|
50
|
+
activeEdgeNotarizationPollingInterval?: number;
|
|
50
51
|
};
|
|
51
52
|
export type CreateEpochOptions = {
|
|
52
53
|
migration?: CreateEpochRequest.Migration;
|
|
@@ -112,6 +113,7 @@ export declare class DataSpace {
|
|
|
112
113
|
createEpoch(options?: CreateEpochOptions): Promise<CreateEpochResult | null>;
|
|
113
114
|
activate(): Promise<void>;
|
|
114
115
|
deactivate(): Promise<void>;
|
|
116
|
+
getEdgeReplicationSetting(): import("@dxos/protocols/proto/dxos/echo/metadata").EdgeReplicationSetting | undefined;
|
|
115
117
|
private _onFeedAdded;
|
|
116
118
|
}
|
|
117
119
|
type CreateEpochResult = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-space.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAwD,MAAM,aAAa,CAAC;AAG1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,
|
|
1
|
+
{"version":3,"file":"data-space.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@ export declare class EdgeFeedReplicator extends Resource {
|
|
|
23
23
|
constructor({ messenger, spaceId }: EdgeFeedReplicatorParams);
|
|
24
24
|
protected _open(): Promise<void>;
|
|
25
25
|
protected _close(): Promise<void>;
|
|
26
|
+
private _startReplication;
|
|
27
|
+
private _resetConnection;
|
|
26
28
|
addFeed(feed: FeedWrapper<any>): Promise<void>;
|
|
27
29
|
private _getPushMutex;
|
|
28
30
|
private _replicateFeed;
|
|
@@ -31,5 +33,6 @@ export declare class EdgeFeedReplicator extends Resource {
|
|
|
31
33
|
private _pushBlocks;
|
|
32
34
|
private _integrateBlocks;
|
|
33
35
|
private _pushBlocksIfNeeded;
|
|
36
|
+
private _createConnectionContext;
|
|
34
37
|
}
|
|
35
38
|
//# sourceMappingURL=edge-feed-replicator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-feed-replicator.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/edge-feed-replicator.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"edge-feed-replicator.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/edge-feed-replicator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAWrD,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAG5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IAEnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+D;IAEtF,OAAO,CAAC,cAAc,CAAC,CAAsB;IAC7C,OAAO,CAAC,UAAU,CAAS;IAC3B;;OAEG;IACH,OAAO,CAAC,aAAa,CAAqD;IAE1E;;OAEG;IACH,OAAO,CAAC,UAAU,CAAoD;gBAE1D,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,wBAAwB;cAMnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAmCtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhD,OAAO,CAAC,iBAAiB;YAYX,gBAAgB;IAQxB,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC;IASpC,OAAO,CAAC,aAAa;YAIP,cAAc;YAYd,YAAY;IA0B1B,OAAO,CAAC,UAAU;YAuDJ,WAAW;YA0BX,gBAAgB;YAkBhB,mBAAmB;IAcjC,OAAO,CAAC,wBAAwB;CAgBjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-feed-replicator.test.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/edge-feed-replicator.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Context } from '@dxos/context';
|
|
2
|
-
import { type EchoHost } from '@dxos/echo-
|
|
2
|
+
import { type EchoHost } from '@dxos/echo-pipeline';
|
|
3
3
|
import type { PublicKey, SpaceId } from '@dxos/keys';
|
|
4
4
|
import { CreateEpochRequest } from '@dxos/protocols/proto/dxos/client/services';
|
|
5
5
|
export type MigrationContext = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-migrations.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/epoch-migrations.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"epoch-migrations.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/epoch-migrations.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IAEnB,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAIF,eAAO,MAAM,iBAAiB,QAAe,OAAO,WAAW,gBAAgB,KAAG,OAAO,CAAC,eAAe,CA8GxG,CAAC"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import { Context } from '@dxos/context';
|
|
1
|
+
import { type Context, Resource } from '@dxos/context';
|
|
2
2
|
import { type CredentialProcessor } from '@dxos/credentials';
|
|
3
|
+
import { type EdgeHttpClient } from '@dxos/edge-client';
|
|
3
4
|
import { type FeedWriter } from '@dxos/feed-store';
|
|
5
|
+
import { type SpaceId } from '@dxos/keys';
|
|
6
|
+
import { type Runtime } from '@dxos/protocols/proto/dxos/config';
|
|
4
7
|
import { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
5
8
|
import { type NotarizationService, type NotarizeRequest } from '@dxos/protocols/proto/dxos/mesh/teleport/notarization';
|
|
6
9
|
import { type ExtensionContext, RpcExtension } from '@dxos/teleport';
|
|
10
|
+
export type NotarizationPluginParams = {
|
|
11
|
+
spaceId: SpaceId;
|
|
12
|
+
edgeClient?: EdgeHttpClient;
|
|
13
|
+
edgeFeatures?: Runtime.Client.EdgeFeatures;
|
|
14
|
+
activeEdgePollingInterval?: number;
|
|
15
|
+
};
|
|
7
16
|
export type NotarizeParams = {
|
|
8
17
|
/**
|
|
9
18
|
* For cancellation.
|
|
@@ -30,35 +39,55 @@ export type NotarizeParams = {
|
|
|
30
39
|
* @default {@link DEFAULT_SUCCESS_DELAY}
|
|
31
40
|
*/
|
|
32
41
|
successDelay?: number;
|
|
42
|
+
/**
|
|
43
|
+
* A random amount of time before making or retrying an edge request to help prevent large bursts of requests.
|
|
44
|
+
*/
|
|
45
|
+
edgeRetryJitter?: number;
|
|
33
46
|
};
|
|
34
47
|
/**
|
|
35
48
|
* See NotarizationService proto.
|
|
36
49
|
*/
|
|
37
|
-
export declare class NotarizationPlugin implements CredentialProcessor {
|
|
38
|
-
private readonly _ctx;
|
|
50
|
+
export declare class NotarizationPlugin extends Resource implements CredentialProcessor {
|
|
39
51
|
private readonly _extensionOpened;
|
|
40
52
|
private _writer;
|
|
41
53
|
private readonly _extensions;
|
|
42
54
|
private readonly _processedCredentials;
|
|
43
55
|
private readonly _processCredentialsTriggers;
|
|
56
|
+
private _activeEdgePollingIntervalHandle;
|
|
57
|
+
private readonly _activeEdgePollingInterval;
|
|
58
|
+
private readonly _spaceId;
|
|
59
|
+
private readonly _edgeClient;
|
|
60
|
+
constructor(params: NotarizationPluginParams);
|
|
61
|
+
setActiveEdgePollingEnabled(enabled: boolean): void;
|
|
44
62
|
get hasWriter(): boolean;
|
|
45
|
-
|
|
46
|
-
|
|
63
|
+
protected _open(): Promise<void>;
|
|
64
|
+
protected _close(): Promise<void>;
|
|
47
65
|
/**
|
|
48
66
|
* Request credentials to be notarized.
|
|
49
67
|
*/
|
|
50
|
-
notarize({ ctx: opCtx, credentials, timeout, retryTimeout, successDelay, }: NotarizeParams): Promise<void>;
|
|
68
|
+
notarize({ ctx: opCtx, credentials, timeout, retryTimeout, successDelay, edgeRetryJitter, }: NotarizeParams): Promise<void>;
|
|
69
|
+
private _tryNotarizeCredentialsWithPeers;
|
|
70
|
+
private _tryNotarizeCredentialsWithEdge;
|
|
51
71
|
/**
|
|
52
72
|
* Called with credentials arriving from the control pipeline.
|
|
53
73
|
*/
|
|
54
74
|
processCredential(credential: Credential): Promise<void>;
|
|
55
75
|
setWriter(writer: FeedWriter<Credential>): void;
|
|
76
|
+
/**
|
|
77
|
+
* The method is used only for adding agent feeds to spaces.
|
|
78
|
+
* When an agent is created we can admit them into all the existing spaces. In case the operation fails
|
|
79
|
+
* this method will fix it on the next space open.
|
|
80
|
+
* Given how rarely this happens there's no need to poll the endpoint.
|
|
81
|
+
*/
|
|
82
|
+
private _notarizePendingEdgeCredentials;
|
|
56
83
|
private _waitUntilProcessed;
|
|
57
84
|
/**
|
|
58
85
|
* Requests from other peers to notarize credentials.
|
|
59
86
|
*/
|
|
60
87
|
private _onNotarize;
|
|
88
|
+
private _notarizeCredentials;
|
|
61
89
|
createExtension(): NotarizationTeleportExtension;
|
|
90
|
+
private _scheduleTimeout;
|
|
62
91
|
}
|
|
63
92
|
export type NotarizationTeleportExtensionParams = {
|
|
64
93
|
onOpen: () => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notarization-plugin.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/notarization-plugin.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAmB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"notarization-plugin.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/notarization-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export declare class SpacesServiceImpl implements SpacesService {
|
|
|
12
12
|
private readonly _getDataSpaceManager;
|
|
13
13
|
constructor(_identityManager: IdentityManager, _spaceManager: SpaceManager, _getDataSpaceManager: Provider<Promise<DataSpaceManager>>);
|
|
14
14
|
createSpace(): Promise<Space>;
|
|
15
|
-
updateSpace({ spaceKey, state }: UpdateSpaceRequest): Promise<void>;
|
|
15
|
+
updateSpace({ spaceKey, state, edgeReplication }: UpdateSpaceRequest): Promise<void>;
|
|
16
16
|
updateMemberRole(request: UpdateMemberRoleRequest): Promise<void>;
|
|
17
17
|
querySpaces(): Stream<QuerySpacesResponse>;
|
|
18
18
|
postMessage({ spaceKey, channel, message }: PostMessageRequest): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spaces-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/spaces-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWxD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EAExB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,qBAAa,iBAAkB,YAAW,aAAa;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAFpB,gBAAgB,EAAE,eAAe,EACjC,aAAa,EAAE,YAAY,EAC3B,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAGtE,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAQ7B,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"spaces-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/spaces-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWxD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EAExB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,qBAAa,iBAAkB,YAAW,aAAa;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAFpB,gBAAgB,EAAE,eAAe,EACjC,aAAa,EAAE,YAAY,EAC3B,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAGtE,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAQ7B,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,kBAAkB;IAuBpE,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvE,WAAW,IAAI,MAAM,CAAC,mBAAmB,CAAC;IA6DpC,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB;IAMpE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,wBAAwB;IAajE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC;IAmB7E,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,uBAAuB;IAmBnE,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAOxG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IASzD,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAMvE,gBAAgB;IAmB9B,OAAO,CAAC,eAAe;IAgDvB,OAAO,CAAC,gBAAgB;YASV,cAAc;CAS7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/storage/storage.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAO5D,eAAO,MAAM,oBAAoB,WAAY,OAAO,CAAC,MAAM,CAAC,OAAO;;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/storage/storage.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAO5D,eAAO,MAAM,oBAAoB,WAAY,OAAO,CAAC,MAAM,CAAC,OAAO;;CAqBlE,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type Config } from '@dxos/config';
|
|
2
|
-
import { EchoHost } from '@dxos/echo-
|
|
3
|
-
import { MetadataStore, SpaceManager, MeshEchoReplicator } from '@dxos/echo-pipeline';
|
|
2
|
+
import { EchoHost, MetadataStore, SpaceManager, MeshEchoReplicator } from '@dxos/echo-pipeline';
|
|
4
3
|
import { FeedStore } from '@dxos/feed-store';
|
|
5
4
|
import { Keyring } from '@dxos/keyring';
|
|
6
5
|
import { type LevelDB } from '@dxos/kv-store';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-builder.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/testing/test-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"test-builder.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/testing/test-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-runtime.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/worker/worker-runtime.ts"],"names":[],"mappings":"AAMA,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,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"worker-runtime.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/worker/worker-runtime.ts"],"names":[],"mappings":"AAMA,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,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAC7C,OAAO,CAAC,qBAAqB,CAAC,CAAgB;IAC9C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,uBAAuB,CAAkB;gBAErC,EACV,OAA0C,EAC1C,cAAc,EACd,WAAW,EACX,WAAW,EACX,MAAM,GACP,EAAE,oBAAoB;IAavB,IAAI,IAAI,uBAEP;IAEK,KAAK;IAwCL,IAAI;IASV;;OAEG;IACG,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAoC3E;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAoBzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/testing/setup.ts"],"names":[],"mappings":";AAQA,wBAEE"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const DXOS_VERSION = "0.6.
|
|
1
|
+
export declare const DXOS_VERSION = "0.6.14-main.2b6a0f3";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"
|
|
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,23 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/client-services",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.14-main.2b6a0f3",
|
|
4
4
|
"description": "DXOS client services implementation",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"author": "DXOS.org",
|
|
9
|
+
"sideEffects": false,
|
|
9
10
|
"exports": {
|
|
10
11
|
".": {
|
|
11
12
|
"browser": "./dist/lib/browser/index.mjs",
|
|
12
13
|
"node": {
|
|
13
|
-
"
|
|
14
|
+
"require": "./dist/lib/node/index.cjs",
|
|
15
|
+
"default": "./dist/lib/node-esm/index.mjs"
|
|
14
16
|
},
|
|
15
17
|
"types": "./dist/types/src/index.d.ts"
|
|
16
18
|
},
|
|
17
19
|
"./testing": {
|
|
18
20
|
"browser": "./dist/lib/browser/testing/index.mjs",
|
|
19
21
|
"node": {
|
|
20
|
-
"
|
|
22
|
+
"require": "./dist/lib/node/testing/index.cjs",
|
|
23
|
+
"default": "./dist/lib/node-esm/testing/index.mjs"
|
|
21
24
|
},
|
|
22
25
|
"types": "./dist/types/src/testing/index.d.ts"
|
|
23
26
|
}
|
|
@@ -45,46 +48,48 @@
|
|
|
45
48
|
"dependencies": {
|
|
46
49
|
"cbor-x": "^1.5.4",
|
|
47
50
|
"platform": "^1.3.6",
|
|
48
|
-
"@dxos/async": "0.6.
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/codec-protobuf": "0.6.
|
|
52
|
-
"@dxos/config": "0.6.
|
|
53
|
-
"@dxos/context": "0.6.
|
|
54
|
-
"@dxos/credentials": "0.6.
|
|
55
|
-
"@dxos/crypto": "0.6.
|
|
56
|
-
"@dxos/debug": "0.6.
|
|
57
|
-
"@dxos/echo-
|
|
58
|
-
"@dxos/echo-pipeline": "0.6.
|
|
59
|
-
"@dxos/echo-
|
|
60
|
-
"@dxos/echo-
|
|
61
|
-
"@dxos/edge-client": "0.6.
|
|
62
|
-
"@dxos/
|
|
63
|
-
"@dxos/
|
|
64
|
-
"@dxos/invariant": "0.6.
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/
|
|
68
|
-
"@dxos/lock-file": "0.6.
|
|
69
|
-
"@dxos/log": "0.6.
|
|
70
|
-
"@dxos/messaging": "0.6.
|
|
71
|
-
"@dxos/
|
|
72
|
-
"@dxos/
|
|
73
|
-
"@dxos/protocols": "0.6.
|
|
74
|
-
"@dxos/random-access-storage": "0.6.
|
|
75
|
-
"@dxos/
|
|
76
|
-
"@dxos/
|
|
77
|
-
"@dxos/teleport": "0.6.
|
|
78
|
-
"@dxos/
|
|
79
|
-
"@dxos/
|
|
80
|
-
"@dxos/tracing": "0.6.
|
|
81
|
-
"@dxos/util": "0.6.
|
|
82
|
-
"@dxos/websocket-rpc": "0.6.
|
|
51
|
+
"@dxos/async": "0.6.14-main.2b6a0f3",
|
|
52
|
+
"@dxos/automerge": "0.6.14-main.2b6a0f3",
|
|
53
|
+
"@dxos/client-protocol": "0.6.14-main.2b6a0f3",
|
|
54
|
+
"@dxos/codec-protobuf": "0.6.14-main.2b6a0f3",
|
|
55
|
+
"@dxos/config": "0.6.14-main.2b6a0f3",
|
|
56
|
+
"@dxos/context": "0.6.14-main.2b6a0f3",
|
|
57
|
+
"@dxos/credentials": "0.6.14-main.2b6a0f3",
|
|
58
|
+
"@dxos/crypto": "0.6.14-main.2b6a0f3",
|
|
59
|
+
"@dxos/debug": "0.6.14-main.2b6a0f3",
|
|
60
|
+
"@dxos/echo-db": "0.6.14-main.2b6a0f3",
|
|
61
|
+
"@dxos/echo-pipeline": "0.6.14-main.2b6a0f3",
|
|
62
|
+
"@dxos/echo-protocol": "0.6.14-main.2b6a0f3",
|
|
63
|
+
"@dxos/echo-schema": "0.6.14-main.2b6a0f3",
|
|
64
|
+
"@dxos/edge-client": "0.6.14-main.2b6a0f3",
|
|
65
|
+
"@dxos/indexing": "0.6.14-main.2b6a0f3",
|
|
66
|
+
"@dxos/feed-store": "0.6.14-main.2b6a0f3",
|
|
67
|
+
"@dxos/invariant": "0.6.14-main.2b6a0f3",
|
|
68
|
+
"@dxos/keys": "0.6.14-main.2b6a0f3",
|
|
69
|
+
"@dxos/kv-store": "0.6.14-main.2b6a0f3",
|
|
70
|
+
"@dxos/keyring": "0.6.14-main.2b6a0f3",
|
|
71
|
+
"@dxos/lock-file": "0.6.14-main.2b6a0f3",
|
|
72
|
+
"@dxos/log": "0.6.14-main.2b6a0f3",
|
|
73
|
+
"@dxos/messaging": "0.6.14-main.2b6a0f3",
|
|
74
|
+
"@dxos/node-std": "0.6.14-main.2b6a0f3",
|
|
75
|
+
"@dxos/network-manager": "0.6.14-main.2b6a0f3",
|
|
76
|
+
"@dxos/protocols": "0.6.14-main.2b6a0f3",
|
|
77
|
+
"@dxos/random-access-storage": "0.6.14-main.2b6a0f3",
|
|
78
|
+
"@dxos/teleport": "0.6.14-main.2b6a0f3",
|
|
79
|
+
"@dxos/rpc": "0.6.14-main.2b6a0f3",
|
|
80
|
+
"@dxos/teleport-extension-gossip": "0.6.14-main.2b6a0f3",
|
|
81
|
+
"@dxos/teleport-extension-object-sync": "0.6.14-main.2b6a0f3",
|
|
82
|
+
"@dxos/timeframe": "0.6.14-main.2b6a0f3",
|
|
83
|
+
"@dxos/tracing": "0.6.14-main.2b6a0f3",
|
|
84
|
+
"@dxos/util": "0.6.14-main.2b6a0f3",
|
|
85
|
+
"@dxos/websocket-rpc": "0.6.14-main.2b6a0f3"
|
|
83
86
|
},
|
|
84
87
|
"devDependencies": {
|
|
85
88
|
"@types/platform": "^1.3.4",
|
|
86
89
|
"@types/readable-stream": "^2.3.9",
|
|
87
|
-
"
|
|
90
|
+
"get-port-please": "^3.1.1",
|
|
91
|
+
"@dxos/signal": "0.6.14-main.2b6a0f3",
|
|
92
|
+
"@dxos/test-utils": "0.6.14-main.2b6a0f3"
|
|
88
93
|
},
|
|
89
94
|
"publishConfig": {
|
|
90
95
|
"access": "public"
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { DeferredTask, Event, scheduleTask, synchronized } from '@dxos/async';
|
|
6
|
+
import { Resource } from '@dxos/context';
|
|
7
|
+
import { type EdgeHttpClient } from '@dxos/edge-client';
|
|
8
|
+
import { invariant } from '@dxos/invariant';
|
|
9
|
+
import { PublicKey } from '@dxos/keys';
|
|
10
|
+
import { log } from '@dxos/log';
|
|
11
|
+
import { EdgeAgentStatus, EdgeCallFailedError } from '@dxos/protocols';
|
|
12
|
+
import { SpaceState } from '@dxos/protocols/proto/dxos/client/services';
|
|
13
|
+
import { type Runtime } from '@dxos/protocols/proto/dxos/config';
|
|
14
|
+
|
|
15
|
+
import { type Identity } from '../identity';
|
|
16
|
+
import { type DataSpaceManager } from '../spaces';
|
|
17
|
+
|
|
18
|
+
const AGENT_STATUS_QUERY_RETRY_INTERVAL = 5000;
|
|
19
|
+
const AGENT_STATUS_QUERY_RETRY_JITTER = 1000;
|
|
20
|
+
|
|
21
|
+
export type EdgeAgentManagerConfig = {};
|
|
22
|
+
|
|
23
|
+
export class EdgeAgentManager extends Resource {
|
|
24
|
+
public agentStatusChanged = new Event<EdgeAgentStatus>();
|
|
25
|
+
|
|
26
|
+
private _agentDeviceKey: PublicKey | undefined;
|
|
27
|
+
private _agentStatus: EdgeAgentStatus | undefined;
|
|
28
|
+
|
|
29
|
+
private _lastKnownDeviceCount = 0;
|
|
30
|
+
|
|
31
|
+
private _fetchAgentStatusTask: DeferredTask | undefined;
|
|
32
|
+
|
|
33
|
+
constructor(
|
|
34
|
+
private readonly _edgeFeatures: Runtime.Client.EdgeFeatures | undefined,
|
|
35
|
+
private readonly _edgeHttpClient: EdgeHttpClient | undefined,
|
|
36
|
+
private readonly _dataSpaceManager: DataSpaceManager,
|
|
37
|
+
private readonly _identity: Identity,
|
|
38
|
+
) {
|
|
39
|
+
super();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public get agentStatus(): EdgeAgentStatus | undefined {
|
|
43
|
+
return this._agentStatus;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public get agentExists() {
|
|
47
|
+
return this._agentStatus && this._agentStatus !== EdgeAgentStatus.NOT_FOUND;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@synchronized
|
|
51
|
+
public async createAgent() {
|
|
52
|
+
invariant(this.isOpen);
|
|
53
|
+
invariant(this._edgeHttpClient);
|
|
54
|
+
invariant(this._edgeFeatures?.agents);
|
|
55
|
+
|
|
56
|
+
const response = await this._edgeHttpClient.createAgent({
|
|
57
|
+
identityKey: this._identity.identityKey.toHex(),
|
|
58
|
+
haloSpaceId: this._identity.haloSpaceId,
|
|
59
|
+
haloSpaceKey: this._identity.haloSpaceKey.toHex(),
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
const deviceKey = PublicKey.fromHex(response.deviceKey);
|
|
63
|
+
|
|
64
|
+
await this._identity.admitDevice({
|
|
65
|
+
deviceKey,
|
|
66
|
+
controlFeedKey: PublicKey.fromHex(response.feedKey),
|
|
67
|
+
// TODO: agents don't have data feed, should be removed
|
|
68
|
+
dataFeedKey: PublicKey.random(),
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
log('agent created', response);
|
|
72
|
+
|
|
73
|
+
this._updateStatus(EdgeAgentStatus.ACTIVE, deviceKey);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
protected override async _open() {
|
|
77
|
+
const isEnabled = this._edgeHttpClient && this._edgeFeatures?.agents;
|
|
78
|
+
|
|
79
|
+
log('edge agent manager open', { isEnabled });
|
|
80
|
+
|
|
81
|
+
if (!isEnabled) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
this._lastKnownDeviceCount = this._identity.authorizedDeviceKeys.size;
|
|
86
|
+
this._fetchAgentStatusTask = new DeferredTask(this._ctx, async () => {
|
|
87
|
+
await this._fetchAgentStatus();
|
|
88
|
+
});
|
|
89
|
+
this._fetchAgentStatusTask.schedule();
|
|
90
|
+
|
|
91
|
+
this._dataSpaceManager.updated.on(this._ctx, () => {
|
|
92
|
+
if (this._agentDeviceKey) {
|
|
93
|
+
this._ensureAgentIsInSpaces(this._agentDeviceKey);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
this._identity.stateUpdate.on(this._ctx, () => {
|
|
98
|
+
const maybeAgentWasCreated = this._identity.authorizedDeviceKeys.size > this._lastKnownDeviceCount;
|
|
99
|
+
if (this.agentExists || !maybeAgentWasCreated) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
this._lastKnownDeviceCount = this._identity.authorizedDeviceKeys.size;
|
|
103
|
+
this._fetchAgentStatusTask?.schedule();
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
protected override async _close() {
|
|
108
|
+
this._fetchAgentStatusTask = undefined;
|
|
109
|
+
this._lastKnownDeviceCount = 0;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
protected async _fetchAgentStatus() {
|
|
113
|
+
invariant(this._edgeHttpClient);
|
|
114
|
+
try {
|
|
115
|
+
log('fetching agent status');
|
|
116
|
+
const { agent } = await this._edgeHttpClient.getAgentStatus({ ownerIdentityKey: this._identity.identityKey });
|
|
117
|
+
const wasAgentCreatedDuringQuery = this._agentStatus === EdgeAgentStatus.ACTIVE;
|
|
118
|
+
if (!wasAgentCreatedDuringQuery) {
|
|
119
|
+
const deviceKey = agent.deviceKey ? PublicKey.fromHex(agent.deviceKey) : undefined;
|
|
120
|
+
this._updateStatus(agent.status, deviceKey);
|
|
121
|
+
}
|
|
122
|
+
} catch (err) {
|
|
123
|
+
if (err instanceof EdgeCallFailedError) {
|
|
124
|
+
if (!err.isRetryable) {
|
|
125
|
+
log.warn('non retryable error on agent status fetch attempt', { err });
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const retryAfterMs = AGENT_STATUS_QUERY_RETRY_INTERVAL + Math.random() * AGENT_STATUS_QUERY_RETRY_JITTER;
|
|
130
|
+
log.info('agent status fetching failed', { err, retryAfterMs });
|
|
131
|
+
scheduleTask(this._ctx, () => this._fetchAgentStatusTask?.schedule(), retryAfterMs);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* We don't want notarization plugin to always actively poll edge looking for credentials to notarize,
|
|
137
|
+
* because most of the time we'll be getting an empty response.
|
|
138
|
+
* Instead, we stay in active polling mode while there are spaces where we don't see our agent's feed.
|
|
139
|
+
*/
|
|
140
|
+
protected _ensureAgentIsInSpaces(agentDeviceKey: PublicKey) {
|
|
141
|
+
for (const space of this._dataSpaceManager.spaces.values()) {
|
|
142
|
+
if ([SpaceState.SPACE_INACTIVE, SpaceState.SPACE_CLOSED].includes(space.state)) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const agentFeedNeedsNotarization = ![...space.inner.spaceState.feeds.values()].some((feed) =>
|
|
146
|
+
feed.assertion.deviceKey.equals(agentDeviceKey),
|
|
147
|
+
);
|
|
148
|
+
space.notarizationPlugin.setActiveEdgePollingEnabled(agentFeedNeedsNotarization);
|
|
149
|
+
|
|
150
|
+
log.info('set active edge polling', { enabled: agentFeedNeedsNotarization, spaceId: space.id });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
private _updateStatus(status: EdgeAgentStatus, deviceKey: PublicKey | undefined) {
|
|
155
|
+
this._agentStatus = status;
|
|
156
|
+
this._agentDeviceKey = deviceKey;
|
|
157
|
+
this.agentStatusChanged.emit(status);
|
|
158
|
+
if (deviceKey) {
|
|
159
|
+
this._ensureAgentIsInSpaces(deviceKey);
|
|
160
|
+
}
|
|
161
|
+
log.info('agent status update', { status });
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Stream } from '@dxos/codec-protobuf';
|
|
6
|
+
import { EdgeAgentStatus } from '@dxos/protocols';
|
|
7
|
+
import { QueryAgentStatusResponse, type EdgeAgentService } from '@dxos/protocols/proto/dxos/client/services';
|
|
8
|
+
|
|
9
|
+
import { type EdgeAgentManager } from './edge-agent-manager';
|
|
10
|
+
|
|
11
|
+
export class EdgeAgentServiceImpl implements EdgeAgentService {
|
|
12
|
+
constructor(private readonly _agentManagerProvider: () => Promise<EdgeAgentManager>) {}
|
|
13
|
+
|
|
14
|
+
public async createAgent(): Promise<void> {
|
|
15
|
+
return (await this._agentManagerProvider()).createAgent();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
queryAgentStatus(): Stream<QueryAgentStatusResponse> {
|
|
19
|
+
return new Stream(({ ctx, next }) => {
|
|
20
|
+
next({ status: QueryAgentStatusResponse.AgentStatus.UNKNOWN });
|
|
21
|
+
void this._agentManagerProvider().then((agentManager) => {
|
|
22
|
+
next({ status: mapStatus(agentManager.agentStatus) });
|
|
23
|
+
agentManager.agentStatusChanged.on(ctx, (newStatus) => {
|
|
24
|
+
next({ status: mapStatus(newStatus) });
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const mapStatus = (agentStatus: EdgeAgentStatus | undefined): QueryAgentStatusResponse.AgentStatus => {
|
|
32
|
+
switch (agentStatus) {
|
|
33
|
+
case EdgeAgentStatus.ACTIVE:
|
|
34
|
+
return QueryAgentStatusResponse.AgentStatus.ACTIVE;
|
|
35
|
+
case EdgeAgentStatus.INACTIVE:
|
|
36
|
+
return QueryAgentStatusResponse.AgentStatus.INACTIVE;
|
|
37
|
+
case EdgeAgentStatus.NOT_FOUND:
|
|
38
|
+
return QueryAgentStatusResponse.AgentStatus.NOT_FOUND;
|
|
39
|
+
case undefined:
|
|
40
|
+
return QueryAgentStatusResponse.AgentStatus.UNKNOWN;
|
|
41
|
+
}
|
|
42
|
+
};
|