@dxos/protocols 0.1.2 → 0.1.4
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/src/proto/gen/dxos/bot.d.ts +11 -11
- package/dist/src/proto/gen/dxos/bot.d.ts.map +1 -1
- package/dist/src/proto/gen/dxos/client/services.d.ts +247 -0
- package/dist/src/proto/gen/dxos/client/services.d.ts.map +1 -0
- package/dist/src/proto/gen/dxos/client/services.js +32 -0
- package/dist/src/proto/gen/dxos/client/services.js.map +1 -0
- package/dist/src/proto/gen/dxos/client.d.ts +49 -68
- package/dist/src/proto/gen/dxos/client.d.ts.map +1 -1
- package/dist/src/proto/gen/dxos/config.d.ts +0 -16
- package/dist/src/proto/gen/dxos/config.d.ts.map +1 -1
- package/dist/src/proto/gen/dxos/config.js +0 -12
- package/dist/src/proto/gen/dxos/config.js.map +1 -1
- package/dist/src/proto/gen/dxos/devtools/host.d.ts +52 -21
- package/dist/src/proto/gen/dxos/devtools/host.d.ts.map +1 -1
- package/dist/src/proto/gen/dxos/devtools/{swarmLog.d.ts → swarm.d.ts} +4 -4
- package/dist/src/proto/gen/dxos/devtools/swarm.d.ts.map +1 -0
- package/dist/src/proto/gen/dxos/devtools/{swarmLog.js → swarm.js} +1 -1
- package/dist/src/proto/gen/dxos/devtools/swarm.js.map +1 -0
- package/dist/src/proto/gen/dxos/echo/feed.d.ts.map +1 -1
- package/dist/src/proto/gen/dxos/echo/metadata.d.ts +5 -5
- package/dist/src/proto/gen/dxos/echo/metadata.d.ts.map +1 -1
- package/dist/src/proto/gen/dxos/echo/service.d.ts +3 -3
- package/dist/src/proto/gen/dxos/echo/service.d.ts.map +1 -1
- package/dist/src/proto/gen/dxos/echo/snapshot.d.ts +2 -2
- package/dist/src/proto/gen/dxos/halo/credentials/auth.d.ts +3 -3
- package/dist/src/proto/gen/dxos/halo/credentials/greet.d.ts +1 -1
- package/dist/src/proto/gen/dxos/halo/credentials.d.ts +25 -27
- package/dist/src/proto/gen/dxos/halo/credentials.d.ts.map +1 -1
- package/dist/src/proto/gen/dxos/halo/credentials.js +5 -5
- package/dist/src/proto/gen/dxos/halo/invitations.d.ts +10 -44
- package/dist/src/proto/gen/dxos/halo/invitations.d.ts.map +1 -1
- package/dist/src/proto/gen/dxos/halo/invitations.js +0 -13
- package/dist/src/proto/gen/dxos/halo/invitations.js.map +1 -1
- package/dist/src/proto/gen/dxos/halo/keys.d.ts +2 -2
- package/dist/src/proto/gen/dxos/halo/keys.js +1 -1
- package/dist/src/proto/gen/dxos/halo/signed.d.ts +1 -1
- package/dist/src/proto/gen/dxos/service/publisher.d.ts.map +1 -1
- package/dist/src/proto/gen/dxos/service/scheduler.d.ts +1 -1
- package/dist/src/proto/gen/dxos/service/scheduler.d.ts.map +1 -1
- package/dist/src/proto/gen/index.d.ts +56 -41
- package/dist/src/proto/gen/index.d.ts.map +1 -1
- package/dist/src/proto/gen/index.js +1 -1
- package/dist/src/proto/gen/index.js.map +1 -1
- package/package.json +5 -5
- package/proto/dxos/client/services.d.ts +2 -0
- package/proto/dxos/{devtools/swarmLog.d.ts.map → client/services.d.ts.map} +2 -2
- package/proto/dxos/client/services.js +2 -0
- package/proto/dxos/devtools/diagnostics.d.ts +2 -0
- package/proto/dxos/devtools/diagnostics.d.ts.map +10 -0
- package/proto/dxos/devtools/diagnostics.js +2 -0
- package/proto/dxos/devtools/swarm.d.ts +2 -0
- package/proto/dxos/{halo/credentials/party.d.ts.map → devtools/swarm.d.ts.map} +2 -2
- package/proto/dxos/devtools/{swarmLog.js → swarm.js} +1 -1
- package/src/proto/dxos/bot.proto +11 -11
- package/src/proto/dxos/client/services.proto +197 -0
- package/src/proto/dxos/client.proto +49 -55
- package/src/proto/dxos/config.proto +2 -15
- package/src/proto/dxos/devtools/diagnostics.proto +28 -0
- package/src/proto/dxos/devtools/host.proto +21 -23
- package/src/proto/dxos/devtools/{swarmLog.proto → swarm.proto} +1 -1
- package/src/proto/dxos/echo/metadata.proto +6 -6
- package/src/proto/dxos/echo/service.proto +3 -3
- package/src/proto/dxos/echo/snapshot.proto +5 -5
- package/src/proto/dxos/echo/timeframe.proto +1 -1
- package/src/proto/dxos/halo/credentials/auth.proto +3 -3
- package/src/proto/dxos/halo/credentials/greet.proto +19 -19
- package/src/proto/dxos/halo/credentials.proto +21 -20
- package/src/proto/dxos/halo/invitations.proto +9 -27
- package/src/proto/dxos/halo/keys.proto +2 -2
- package/src/proto/dxos/halo/signed.proto +1 -1
- package/src/proto/dxos/service/scheduler.proto +1 -1
- package/src/proto/gen/dxos/bot.ts +12 -12
- package/src/proto/gen/dxos/client/services.ts +283 -0
- package/src/proto/gen/dxos/client.ts +50 -69
- package/src/proto/gen/dxos/config.ts +2 -18
- package/src/proto/gen/dxos/devtools/host.ts +53 -22
- package/src/proto/gen/dxos/devtools/{swarmLog.ts → swarm.ts} +4 -4
- package/src/proto/gen/dxos/echo/feed.ts +2 -2
- package/src/proto/gen/dxos/echo/metadata.ts +7 -7
- package/src/proto/gen/dxos/echo/model/messenger.ts +2 -2
- package/src/proto/gen/dxos/echo/model/object.ts +2 -2
- package/src/proto/gen/dxos/echo/model/text.ts +2 -2
- package/src/proto/gen/dxos/echo/service.ts +5 -5
- package/src/proto/gen/dxos/echo/snapshot.ts +4 -4
- package/src/proto/gen/dxos/echo/timeframe.ts +2 -2
- package/src/proto/gen/dxos/halo/credentials/auth.ts +5 -5
- package/src/proto/gen/dxos/halo/credentials/greet.ts +3 -3
- package/src/proto/gen/dxos/halo/credentials/identity.ts +2 -2
- package/src/proto/gen/dxos/halo/credentials.ts +27 -29
- package/src/proto/gen/dxos/halo/invitations.ts +12 -46
- package/src/proto/gen/dxos/halo/keyring.ts +2 -2
- package/src/proto/gen/dxos/halo/keys.ts +4 -4
- package/src/proto/gen/dxos/halo/signed.ts +3 -3
- package/src/proto/gen/dxos/iframe.ts +2 -2
- package/src/proto/gen/dxos/keys.ts +2 -2
- package/src/proto/gen/dxos/mesh/bridge.ts +2 -2
- package/src/proto/gen/dxos/mesh/broadcast.ts +2 -2
- package/src/proto/gen/dxos/mesh/messaging.ts +2 -2
- package/src/proto/gen/dxos/mesh/presence.ts +2 -2
- package/src/proto/gen/dxos/mesh/protocol.ts +2 -2
- package/src/proto/gen/dxos/mesh/replicator.ts +2 -2
- package/src/proto/gen/dxos/mesh/signal.ts +2 -2
- package/src/proto/gen/dxos/mesh/swarm.ts +2 -2
- package/src/proto/gen/dxos/registry.ts +2 -2
- package/src/proto/gen/dxos/rpc.ts +2 -2
- package/src/proto/gen/dxos/service/publisher.ts +2 -2
- package/src/proto/gen/dxos/service/scheduler.ts +3 -3
- package/src/proto/gen/dxos/type.ts +2 -2
- package/src/proto/gen/example/testing/data.ts +2 -2
- package/src/proto/gen/example/testing/rpc.ts +2 -2
- package/src/proto/gen/google/protobuf.ts +2 -2
- package/src/proto/gen/index.ts +57 -42
- package/dist/src/proto/gen/dxos/devtools/swarmLog.d.ts.map +0 -1
- package/dist/src/proto/gen/dxos/devtools/swarmLog.js.map +0 -1
- package/dist/src/proto/gen/dxos/halo/credentials/party.d.ts +0 -82
- package/dist/src/proto/gen/dxos/halo/credentials/party.d.ts.map +0 -1
- package/dist/src/proto/gen/dxos/halo/credentials/party.js +0 -19
- package/dist/src/proto/gen/dxos/halo/credentials/party.js.map +0 -1
- package/proto/dxos/devtools/swarmLog.d.ts +0 -2
- package/proto/dxos/halo/credentials/party.d.ts +0 -2
- package/proto/dxos/halo/credentials/party.js +0 -2
- package/src/proto/dxos/halo/credentials/party.proto +0 -127
- package/src/proto/gen/dxos/halo/credentials/party.ts +0 -119
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
syntax = "proto3";
|
|
6
6
|
|
|
7
|
-
import "dxos/devtools/swarmLog.proto";
|
|
8
|
-
|
|
9
7
|
import "dxos/echo/timeframe.proto";
|
|
10
8
|
import "google/protobuf/empty.proto";
|
|
11
9
|
|
|
@@ -50,13 +48,13 @@ service DevtoolsHost {
|
|
|
50
48
|
// ECHO
|
|
51
49
|
//
|
|
52
50
|
|
|
53
|
-
rpc
|
|
51
|
+
rpc SubscribeToSpaces(SubscribeToSpacesRequest) returns (stream SubscribeToSpacesResponse);
|
|
54
52
|
rpc SubscribeToItems(SubscribeToItemsRequest) returns (stream SubscribeToItemsResponse);
|
|
55
53
|
rpc SubscribeToFeeds(SubscribeToFeedsRequest) returns (stream SubscribeToFeedsResponse);
|
|
56
54
|
rpc SubscribeToFeedBlocks(SubscribeToFeedBlocksRequest) returns (stream SubscribeToFeedBlocksResponse);
|
|
57
55
|
|
|
58
|
-
rpc
|
|
59
|
-
rpc
|
|
56
|
+
rpc GetSpaceSnapshot(GetSpaceSnapshotRequest) returns (GetSpaceSnapshotResponse);
|
|
57
|
+
rpc SaveSpaceSnapshot(SaveSpaceSnapshotRequest) returns (SaveSpaceSnapshotResponse);
|
|
60
58
|
rpc ClearSnapshots(ClearSnapshotsRequest) returns (google.protobuf.Empty);
|
|
61
59
|
|
|
62
60
|
//
|
|
@@ -114,7 +112,7 @@ message SubscribeToKeyringKeysResponse {
|
|
|
114
112
|
// SubscribeToCredential
|
|
115
113
|
|
|
116
114
|
message SubscribeToCredentialMessagesRequest {
|
|
117
|
-
optional dxos.keys.PublicKey
|
|
115
|
+
optional dxos.keys.PublicKey space_key = 1;
|
|
118
116
|
}
|
|
119
117
|
|
|
120
118
|
message SubscribeToCredentialMessagesResponse {
|
|
@@ -144,14 +142,14 @@ message GetNetworkPeersResponse {
|
|
|
144
142
|
repeated PeerInfo peers = 1;
|
|
145
143
|
}
|
|
146
144
|
|
|
147
|
-
//
|
|
145
|
+
// SubscribeToSpaces
|
|
148
146
|
|
|
149
|
-
message
|
|
150
|
-
repeated dxos.keys.PublicKey
|
|
147
|
+
message SubscribeToSpacesRequest {
|
|
148
|
+
repeated dxos.keys.PublicKey space_keys = 1;
|
|
151
149
|
}
|
|
152
150
|
|
|
153
|
-
message
|
|
154
|
-
message
|
|
151
|
+
message SubscribeToSpacesResponse {
|
|
152
|
+
message SpaceInfo {
|
|
155
153
|
dxos.keys.PublicKey key = 1;
|
|
156
154
|
bool is_open = 2;
|
|
157
155
|
dxos.echo.timeframe.TimeframeVector timeframe = 3;
|
|
@@ -160,7 +158,7 @@ message SubscribeToPartiesResponse {
|
|
|
160
158
|
dxos.keys.PublicKey dataFeed = 6;
|
|
161
159
|
}
|
|
162
160
|
|
|
163
|
-
repeated
|
|
161
|
+
repeated SpaceInfo spaces = 1;
|
|
164
162
|
}
|
|
165
163
|
|
|
166
164
|
// SubscribeToItems
|
|
@@ -190,7 +188,7 @@ message SubscribeToFeedsResponse {
|
|
|
190
188
|
// SubscribeToFeedMessages
|
|
191
189
|
|
|
192
190
|
message SubscribeToFeedBlocksRequest {
|
|
193
|
-
optional dxos.keys.PublicKey
|
|
191
|
+
optional dxos.keys.PublicKey space_key = 1;
|
|
194
192
|
optional dxos.keys.PublicKey feed_key = 2;
|
|
195
193
|
optional int32 max_blocks = 3;
|
|
196
194
|
}
|
|
@@ -205,24 +203,24 @@ message SubscribeToFeedBlocksResponse {
|
|
|
205
203
|
repeated Block blocks = 1;
|
|
206
204
|
}
|
|
207
205
|
|
|
208
|
-
//
|
|
206
|
+
// GetSpaceSnapshot
|
|
209
207
|
|
|
210
|
-
message
|
|
211
|
-
dxos.keys.PublicKey
|
|
208
|
+
message GetSpaceSnapshotRequest {
|
|
209
|
+
dxos.keys.PublicKey space_key = 1;
|
|
212
210
|
}
|
|
213
211
|
|
|
214
|
-
message
|
|
215
|
-
optional dxos.echo.snapshot.
|
|
212
|
+
message GetSpaceSnapshotResponse {
|
|
213
|
+
optional dxos.echo.snapshot.SpaceSnapshot snapshot = 1;
|
|
216
214
|
}
|
|
217
215
|
|
|
218
|
-
//
|
|
216
|
+
// SaveSpaceSnapshot
|
|
219
217
|
|
|
220
|
-
message
|
|
221
|
-
dxos.keys.PublicKey
|
|
218
|
+
message SaveSpaceSnapshotRequest {
|
|
219
|
+
dxos.keys.PublicKey space_key = 1;
|
|
222
220
|
}
|
|
223
221
|
|
|
224
|
-
message
|
|
225
|
-
optional dxos.echo.snapshot.
|
|
222
|
+
message SaveSpaceSnapshotResponse {
|
|
223
|
+
optional dxos.echo.snapshot.SpaceSnapshot snapshot = 1;
|
|
226
224
|
}
|
|
227
225
|
|
|
228
226
|
// ClearSnapshots
|
|
@@ -26,13 +26,13 @@ message EchoMetadata {
|
|
|
26
26
|
// TODO(dmaretskyi): Store the device key associated with the identity.
|
|
27
27
|
optional dxos.halo.credentials.IdentityRecord identity = 10;
|
|
28
28
|
|
|
29
|
-
/// List of the data
|
|
30
|
-
repeated
|
|
29
|
+
/// List of the data spaces.
|
|
30
|
+
repeated SpaceMetadata spaces = 11;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
// TODO(dmaretskyi): Cleanup numbering.
|
|
34
|
-
message
|
|
35
|
-
///
|
|
34
|
+
message SpaceMetadata {
|
|
35
|
+
/// Space key.
|
|
36
36
|
dxos.keys.PublicKey key = 1;
|
|
37
37
|
|
|
38
38
|
optional dxos.keys.PublicKey genesis_feed_key = 6;
|
|
@@ -40,12 +40,12 @@ message PartyMetadata {
|
|
|
40
40
|
/// Key of the wriatable control feed.
|
|
41
41
|
optional dxos.keys.PublicKey control_feed_key = 4;
|
|
42
42
|
|
|
43
|
-
/// List of all feed associated with the
|
|
43
|
+
/// List of all feed associated with the space.
|
|
44
44
|
repeated dxos.keys.PublicKey feed_keys = 2;
|
|
45
45
|
|
|
46
46
|
/// Key of the wriatable data feed.
|
|
47
47
|
optional dxos.keys.PublicKey data_feed_key = 3;
|
|
48
48
|
|
|
49
|
-
// Latest timeframe reached while processing
|
|
49
|
+
// Latest timeframe reached while processing space messages.
|
|
50
50
|
optional timeframe.TimeframeVector latest_timeframe = 5;
|
|
51
51
|
}
|
|
@@ -12,7 +12,7 @@ import "dxos/keys.proto";
|
|
|
12
12
|
package dxos.echo.service;
|
|
13
13
|
|
|
14
14
|
message SubscribeEntitySetRequest {
|
|
15
|
-
dxos.keys.PublicKey
|
|
15
|
+
dxos.keys.PublicKey space_key = 1;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
message SubscribeEntitySetResponse {
|
|
@@ -22,7 +22,7 @@ message SubscribeEntitySetResponse {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
message SubscribeEntityStreamRequest {
|
|
25
|
-
dxos.keys.PublicKey
|
|
25
|
+
dxos.keys.PublicKey space_key = 1;
|
|
26
26
|
string item_id = 2;
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -47,7 +47,7 @@ message SubscribeEntityStreamResponse {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
message WriteRequest {
|
|
50
|
-
dxos.keys.PublicKey
|
|
50
|
+
dxos.keys.PublicKey space_key = 1;
|
|
51
51
|
feed.EchoEnvelope mutation = 2;
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -11,16 +11,16 @@ import "dxos/keys.proto";
|
|
|
11
11
|
package dxos.echo.snapshot;
|
|
12
12
|
|
|
13
13
|
//
|
|
14
|
-
// Snapshots define full
|
|
15
|
-
// They must have enough information to be able to recover the
|
|
14
|
+
// Snapshots define full space state at a given point in time.
|
|
15
|
+
// They must have enough information to be able to recover the space state without reading the feed messages.
|
|
16
16
|
//
|
|
17
|
-
// Each snapshot is identified by a
|
|
17
|
+
// Each snapshot is identified by a space key and a timeframe.
|
|
18
18
|
// The timeframe defines the set of feed messages that have already been processed.
|
|
19
19
|
// When loading from the snapshot, application would skip all of the feed messages up to (and including) the provided timeframe.
|
|
20
20
|
//
|
|
21
21
|
|
|
22
|
-
message
|
|
23
|
-
bytes
|
|
22
|
+
message SpaceSnapshot {
|
|
23
|
+
bytes space_key = 1;
|
|
24
24
|
optional timeframe.TimeframeVector timeframe = 2;
|
|
25
25
|
|
|
26
26
|
// Unix timestamp of the snapshot creation time. For information purposes only.
|
|
@@ -12,7 +12,7 @@ package dxos.echo.timeframe;
|
|
|
12
12
|
message TimeframeVector {
|
|
13
13
|
message Frame {
|
|
14
14
|
// TODO(dmaretskyi): Compress using numeric feed indexes.
|
|
15
|
-
// TODO(burdon): Determine if admit DAG can be ordered. Requires
|
|
15
|
+
// TODO(burdon): Determine if admit DAG can be ordered. Requires space messages to be ordered (by lexical feed key).
|
|
16
16
|
bytes feed_key = 1;
|
|
17
17
|
int32 seq = 3;
|
|
18
18
|
}
|
|
@@ -14,8 +14,8 @@ package dxos.halo.credentials.auth;
|
|
|
14
14
|
* The payload for a SignedMessage sent during handshake for replication authentication.
|
|
15
15
|
*/
|
|
16
16
|
message Auth {
|
|
17
|
-
/// The publicKey of the target
|
|
18
|
-
dxos.keys.PublicKey
|
|
17
|
+
/// The publicKey of the target Space for these credentials.
|
|
18
|
+
dxos.keys.PublicKey space_key = 1;
|
|
19
19
|
|
|
20
20
|
/// The publicKey of the authenticating Device.
|
|
21
21
|
dxos.keys.PublicKey device_key = 2;
|
|
@@ -26,6 +26,6 @@ message Auth {
|
|
|
26
26
|
/// The publicKey of the authenticating Identity.
|
|
27
27
|
optional dxos.keys.PublicKey feed_key = 4;
|
|
28
28
|
|
|
29
|
-
/// FeedAdmit message to the should be written to a control feed in case the `feed_key` is not admitted to the
|
|
29
|
+
/// FeedAdmit message to the should be written to a control feed in case the `feed_key` is not admitted to the space.
|
|
30
30
|
optional google.protobuf.Any feed_admit = 5;
|
|
31
31
|
}
|
|
@@ -20,26 +20,26 @@ package dxos.halo.credentials.greet;
|
|
|
20
20
|
//
|
|
21
21
|
// 1) An invitation is generated for the Invitee with a unique ID, known to the Greeter.
|
|
22
22
|
// 2) The Invitee connects to the Greeter over an *open* Topic, using the invitation ID as their peer ID.
|
|
23
|
-
// This is NOT the Topic of the
|
|
23
|
+
// This is NOT the Topic of the Space they wish to join, it is one used for Greeting.
|
|
24
24
|
// 3) The Invitee sends a Command message of type BEGIN. This signals the arrival of the invitee, and if necessary,
|
|
25
25
|
// triggers creation or retrieval of an auth secret for the rest of the process. This secret is normally
|
|
26
26
|
// communicated out-of-band (eg, voice, IM, etc.). The Greeter responds with a BeginResponse message, acknowledging
|
|
27
27
|
// the request and indicating the Invitee should proceed to the next step:
|
|
28
28
|
// 4) The Invitee sends a Command message of type HANDSHAKE which includes their secret (eg, PIN, AuthMessage).
|
|
29
29
|
// 5) The Greeter validates the contents (it's genuine, hasn't already been redeemed, the secret matches, etc.)
|
|
30
|
-
// 6) The Greeter returns a HandshakeResponse message with the
|
|
30
|
+
// 6) The Greeter returns a HandshakeResponse message with the Space public key and challenge nonce.
|
|
31
31
|
// 7) The Invitee generates one or more AdmitKey and AdmitFeed messages, including the nonce from step (5) then signs
|
|
32
32
|
// the contents in a SignedMessage.
|
|
33
33
|
// 8) The Invitee sends the SignedMessages in a Command message of type NOTARIZE.
|
|
34
34
|
// 9) The Greeter checks credentials presented and validates the SignedMessage signatures and nonce values.
|
|
35
|
-
// If all the checks pass then the Admit messages may be published on the Greeter's feed for the target
|
|
35
|
+
// If all the checks pass then the Admit messages may be published on the Greeter's feed for the target Space,
|
|
36
36
|
// placed in Envelope messages signed by the Greeter.
|
|
37
37
|
// 10) After writing the messages, the Greeter marks the invitation as having been redeemed, so that it cannot be
|
|
38
38
|
// used again.
|
|
39
39
|
// 11) The Greeter sends copies of the Greeter-signed Envelope messages to the Invitee in a NotarizeResponse message,
|
|
40
|
-
// as well as a list of "hints" regarding keys and feeds which are enrolled in the
|
|
41
|
-
// "hints" to construct its initial view of
|
|
42
|
-
// for
|
|
40
|
+
// as well as a list of "hints" regarding keys and feeds which are enrolled in the Space. The Invitee uses thes
|
|
41
|
+
// "hints" to construct its initial view of Space membership, necessary to participate in mutual authentication
|
|
42
|
+
// for Space feed replication.
|
|
43
43
|
// 12) The Invitee sends the Greeter a FINISH command to acknowledge receipt.
|
|
44
44
|
|
|
45
45
|
/**
|
|
@@ -75,46 +75,46 @@ message BeginResponse {
|
|
|
75
75
|
|
|
76
76
|
//
|
|
77
77
|
// The next command is 'HANDSHAKE', the invitee sends the `secret` for authentication, and if successful, the
|
|
78
|
-
// Greeter returns the `
|
|
78
|
+
// Greeter returns the `space_key` and a `nonce` which the invitee will need to use for the Space credential messages.
|
|
79
79
|
//
|
|
80
80
|
message HandshakeResponse {
|
|
81
81
|
// Random bytes which must be included in the signed portion of messages submitted in a 'NOTARIZE' command
|
|
82
82
|
// (proving ownership of the keys in question).
|
|
83
83
|
bytes nonce = 1;
|
|
84
84
|
|
|
85
|
-
// The public key of the
|
|
86
|
-
dxos.keys.PublicKey
|
|
85
|
+
// The public key of the space.
|
|
86
|
+
dxos.keys.PublicKey space_key = 2;
|
|
87
87
|
};
|
|
88
88
|
|
|
89
89
|
//
|
|
90
|
-
// The 'NOTARIZE' command takes an array of SignedMessages which the invitee would like added to the
|
|
90
|
+
// The 'NOTARIZE' command takes an array of SignedMessages which the invitee would like added to the Space. The
|
|
91
91
|
// standard case would be a message admitting an Identity (or Device) key and a message admitting a feed.
|
|
92
92
|
//
|
|
93
93
|
message NotarizeResponse {
|
|
94
|
-
// A copy of each of the messages as written to the
|
|
95
|
-
// and key hints necessary to bootstrap the invitee into the
|
|
94
|
+
// A copy of each of the messages as written to the Space (now in an Envelope signed by the Greeter) and the Feed
|
|
95
|
+
// and key hints necessary to bootstrap the invitee into the Space.
|
|
96
96
|
repeated google.protobuf.Any copies = 1;
|
|
97
97
|
|
|
98
98
|
dxos.keys.PublicKey genesis_feed = 3;
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
// TODO(dmaretskyi): Verify if this is valid. Wouldn't the knowledge of the
|
|
101
|
+
// TODO(dmaretskyi): Verify if this is valid. Wouldn't the knowledge of the space's public key be enough to verify the rest of credential messages?
|
|
102
102
|
//
|
|
103
|
-
// Feed and key hints are by the invitee, because even though the
|
|
104
|
-
// them. Until it has a chance to replicate, it cannot construct its own understanding of the
|
|
103
|
+
// Feed and key hints are by the invitee, because even though the Space members now trust it, it does not trust
|
|
104
|
+
// them. Until it has a chance to replicate, it cannot construct its own understanding of the Space from space.*
|
|
105
105
|
// messages, but neither can it replicate unless it trusts its peers. The Hints break this cycle by providing an
|
|
106
106
|
// initial set of keys and Feeds to trust.
|
|
107
107
|
//
|
|
108
108
|
message KeyHint {
|
|
109
|
-
// TODO(telackey): These should be changed to be the full set of signed
|
|
110
|
-
// and verify the
|
|
109
|
+
// TODO(telackey): These should be changed to be the full set of signed space messages, so the recipient can build
|
|
110
|
+
// and verify the space structure just as it would if it had obtained them from the feeds.
|
|
111
111
|
dxos.keys.PublicKey public_key = 1;
|
|
112
112
|
keys.KeyType type = 2;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
//
|
|
116
|
-
// The 'CLAIM' command is used to trigger the Greeting flow by "claiming" a
|
|
117
|
-
// to the
|
|
116
|
+
// The 'CLAIM' command is used to trigger the Greeting flow by "claiming" a SpaceInvitation which was replicated
|
|
117
|
+
// to the Space or presented as a "proof".
|
|
118
118
|
//
|
|
119
119
|
// The ClaimResponse provides the invitee with information about the interactive invitation triggered by the "claim",
|
|
120
120
|
// such as the invitation ID and the swarm key to use to connect to the Greeter.
|
|
@@ -13,19 +13,19 @@ import "dxos/keys.proto";
|
|
|
13
13
|
|
|
14
14
|
//
|
|
15
15
|
// TODO(burdon): Move these notes to the design doc commentary.
|
|
16
|
-
// Peers maintain Feeds that are admitted to HALO and ECHO
|
|
16
|
+
// Peers maintain Feeds that are admitted to HALO and ECHO Spaces.
|
|
17
17
|
// Peers act as Verifiers for Credentials that may be Presented from other Peers.
|
|
18
18
|
// Since Feeds implement a signed hash-linked data structure, they constitute a chain-of-authority for chained Credentials.
|
|
19
|
-
// Credentials written to HALO Feeds may be Presented to Peers Verifying ECHO
|
|
19
|
+
// Credentials written to HALO Feeds may be Presented to Peers Verifying ECHO Spaces.
|
|
20
20
|
//
|
|
21
21
|
|
|
22
22
|
//
|
|
23
|
-
// **
|
|
24
|
-
// First message written to initial Feed in a new
|
|
23
|
+
// **SpaceGenesis** -
|
|
24
|
+
// First message written to initial Feed in a new Space.
|
|
25
25
|
//
|
|
26
26
|
|
|
27
|
-
message
|
|
28
|
-
dxos.keys.PublicKey
|
|
27
|
+
message SpaceGenesis {
|
|
28
|
+
dxos.keys.PublicKey space_key = 1; // Feeds belong to Spaces.
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
//
|
|
@@ -34,8 +34,9 @@ message PartyGenesis {
|
|
|
34
34
|
// Claims can be written directly to a feed or used within Credentials.
|
|
35
35
|
//
|
|
36
36
|
|
|
37
|
-
//
|
|
38
|
-
|
|
37
|
+
// TODO(burdon): Reconcile with dxos.client.SpaceMember.
|
|
38
|
+
// Agent is authorized to access Space.
|
|
39
|
+
message SpaceMember {
|
|
39
40
|
// TODO(burdon): Consider permissions (e.g., for Bots).
|
|
40
41
|
enum Role {
|
|
41
42
|
INVALID = 0;
|
|
@@ -47,7 +48,7 @@ message PartyMember {
|
|
|
47
48
|
READER = 3;
|
|
48
49
|
}
|
|
49
50
|
|
|
50
|
-
dxos.keys.PublicKey
|
|
51
|
+
dxos.keys.PublicKey space_key = 1;
|
|
51
52
|
Role role = 2;
|
|
52
53
|
}
|
|
53
54
|
|
|
@@ -58,8 +59,8 @@ message AuthorizedDevice {
|
|
|
58
59
|
dxos.keys.PublicKey device_key = 2; // Existing authorized device.
|
|
59
60
|
}
|
|
60
61
|
|
|
61
|
-
// Feed is admitted to the
|
|
62
|
-
// NOTE: Feeds are Admitted to
|
|
62
|
+
// Feed is admitted to the Space for replication.
|
|
63
|
+
// NOTE: Feeds are Admitted to Spaces.
|
|
63
64
|
message AdmittedFeed {
|
|
64
65
|
enum Designation {
|
|
65
66
|
/// Classic general purpose feeds for both HALO and ECHO messages together. To be deprecated.
|
|
@@ -70,7 +71,7 @@ message AdmittedFeed {
|
|
|
70
71
|
DATA = 2;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
dxos.keys.PublicKey
|
|
74
|
+
dxos.keys.PublicKey space_key = 1;
|
|
74
75
|
|
|
75
76
|
/// Owning identity.
|
|
76
77
|
dxos.keys.PublicKey identity_key = 2; // Could be derived.
|
|
@@ -95,12 +96,13 @@ message IdentityRecovery {
|
|
|
95
96
|
dxos.keys.PublicKey recovery_key = 2;
|
|
96
97
|
}
|
|
97
98
|
|
|
99
|
+
message ProfileDocument {
|
|
100
|
+
optional string display_name = 1;
|
|
101
|
+
optional string avatar_cid = 2;
|
|
102
|
+
}
|
|
103
|
+
|
|
98
104
|
/// Sets profile information.
|
|
99
105
|
message IdentityProfile {
|
|
100
|
-
message ProfileDocument {
|
|
101
|
-
optional string display_name = 1;
|
|
102
|
-
optional string avatar_cid = 2;
|
|
103
|
-
}
|
|
104
106
|
|
|
105
107
|
// TODO(dmaretskyi): This could also be a DXNS link or stored in user's public HALO (we could also index the public HALO in the DMG).
|
|
106
108
|
ProfileDocument profile = 1;
|
|
@@ -137,7 +139,7 @@ message Claim {
|
|
|
137
139
|
message Proof {
|
|
138
140
|
string type = 1; // Type of proof (e.g., "Ed25519Signature2020").
|
|
139
141
|
google.protobuf.Timestamp creation_date = 2;
|
|
140
|
-
dxos.keys.PublicKey signer = 3; // Entity that created the proof (e.g., Agent, Device,
|
|
142
|
+
dxos.keys.PublicKey signer = 3; // Entity that created the proof (e.g., Agent, Device, Space).
|
|
141
143
|
optional bytes nonce = 4; // Used in Presentations to protect against replay attacks.
|
|
142
144
|
|
|
143
145
|
/// Signature (excluded from signed data).
|
|
@@ -176,7 +178,7 @@ message Chain {
|
|
|
176
178
|
|
|
177
179
|
message Credential {
|
|
178
180
|
optional dxos.keys.PublicKey id = 1; // Credential identifier (e.g., for storage indexing).
|
|
179
|
-
dxos.keys.PublicKey issuer = 2; // key = {
|
|
181
|
+
dxos.keys.PublicKey issuer = 2; // key = { Space (genesis) | Identity (genesis) | (authorized) Device }
|
|
180
182
|
google.protobuf.Timestamp issuance_date = 3;
|
|
181
183
|
optional google.protobuf.Timestamp expiration_date = 4;
|
|
182
184
|
optional bytes expiration_ref = 5; // Could reference blockchain or epoch number.
|
|
@@ -227,6 +229,5 @@ message IdentityRecord {
|
|
|
227
229
|
optional SpaceRecord profile_space = 4;
|
|
228
230
|
|
|
229
231
|
/// Cached profile.
|
|
230
|
-
optional
|
|
232
|
+
optional ProfileDocument profile = 5;
|
|
231
233
|
}
|
|
232
|
-
|
|
@@ -10,27 +10,8 @@ import "dxos/keys.proto";
|
|
|
10
10
|
|
|
11
11
|
package dxos.halo.invitations;
|
|
12
12
|
|
|
13
|
-
message
|
|
14
|
-
|
|
15
|
-
/// Both peers online at the same time.
|
|
16
|
-
INTERACTIVE = 0;
|
|
17
|
-
/// Invited peer's public key is known and invitation can be accepted by any valid peer.
|
|
18
|
-
OFFLINE = 1;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
Type type = 1;
|
|
22
|
-
|
|
23
|
-
/// Topic for network handshake.
|
|
24
|
-
bytes swarm_key = 2;
|
|
25
|
-
|
|
26
|
-
/// TODO(burdon): Remove?
|
|
27
|
-
bytes invitation = 3;
|
|
28
|
-
|
|
29
|
-
/// Only present if type === OFFLINE.
|
|
30
|
-
optional bytes identity_key = 4;
|
|
31
|
-
|
|
32
|
-
/// Must be stripped out when passing to another peer.
|
|
33
|
-
optional bytes secret = 5;
|
|
13
|
+
message AuthenticationRequest {
|
|
14
|
+
string authentication_code = 1;
|
|
34
15
|
}
|
|
35
16
|
|
|
36
17
|
//
|
|
@@ -80,11 +61,12 @@ message SpaceAdmissionOffer {
|
|
|
80
61
|
}
|
|
81
62
|
|
|
82
63
|
service SpaceHostService {
|
|
83
|
-
/// Process admission request
|
|
84
|
-
rpc
|
|
85
|
-
}
|
|
64
|
+
/// Process admission request.
|
|
65
|
+
rpc RequestAdmission(google.protobuf.Empty) returns (SpaceAdmissionOffer);
|
|
86
66
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
67
|
+
/// Authenticate request.
|
|
68
|
+
rpc Authenticate(AuthenticationRequest) returns (google.protobuf.Empty);
|
|
69
|
+
|
|
70
|
+
/// Process admission credentials.
|
|
71
|
+
rpc PresentAdmissionCredentials(SpaceAdmissionCredentials) returns (google.protobuf.Empty);
|
|
90
72
|
}
|
|
@@ -19,7 +19,7 @@ enum KeyType {
|
|
|
19
19
|
UNKNOWN = 0;
|
|
20
20
|
IDENTITY = 1;
|
|
21
21
|
DEVICE = 2;
|
|
22
|
-
|
|
22
|
+
SPACE = 3;
|
|
23
23
|
FEED = 4;
|
|
24
24
|
DXNS_ADDRESS = 5;
|
|
25
25
|
}
|
|
@@ -47,7 +47,7 @@ message KeyRecord {
|
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* Determines if this is our key?
|
|
50
|
-
* Usually true if `secret_key` is present; may be false for "inception keys" such as the
|
|
50
|
+
* Usually true if `secret_key` is present; may be false for "inception keys" such as the Space key.
|
|
51
51
|
*/
|
|
52
52
|
optional bool own = 5; // TODO(burdon): Rename "local" or "private".
|
|
53
53
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Stream } from "@dxos/codec-protobuf";
|
|
2
2
|
import substitutions from "../../substitutions";
|
|
3
3
|
import * as dxos_client from "./client";
|
|
4
|
+
import * as dxos_client_services from "./client/services";
|
|
4
5
|
import * as dxos_config from "./config";
|
|
5
6
|
import * as dxos_devtools_host from "./devtools/host";
|
|
6
|
-
import * as
|
|
7
|
+
import * as dxos_devtools_swarm from "./devtools/swarm";
|
|
7
8
|
import * as dxos_echo_feed from "./echo/feed";
|
|
8
9
|
import * as dxos_echo_metadata from "./echo/metadata";
|
|
9
10
|
import * as dxos_echo_model_messenger from "./echo/model/messenger";
|
|
@@ -16,7 +17,6 @@ import * as dxos_halo_credentials from "./halo/credentials";
|
|
|
16
17
|
import * as dxos_halo_credentials_auth from "./halo/credentials/auth";
|
|
17
18
|
import * as dxos_halo_credentials_greet from "./halo/credentials/greet";
|
|
18
19
|
import * as dxos_halo_credentials_identity from "./halo/credentials/identity";
|
|
19
|
-
import * as dxos_halo_credentials_party from "./halo/credentials/party";
|
|
20
20
|
import * as dxos_halo_invitations from "./halo/invitations";
|
|
21
21
|
import * as dxos_halo_keyring from "./halo/keyring";
|
|
22
22
|
import * as dxos_halo_keys from "./halo/keys";
|
|
@@ -88,7 +88,7 @@ export interface Bot {
|
|
|
88
88
|
* Options:
|
|
89
89
|
* - proto3_optional = true
|
|
90
90
|
*/
|
|
91
|
-
|
|
91
|
+
spaceKey?: ReturnType<(typeof substitutions)["dxos.keys.PublicKey"]["decode"]>;
|
|
92
92
|
/**
|
|
93
93
|
* Options:
|
|
94
94
|
* - proto3_optional = true
|
|
@@ -152,19 +152,19 @@ export interface SpawnBotRequest {
|
|
|
152
152
|
*/
|
|
153
153
|
package?: BotPackageSpecifier;
|
|
154
154
|
/**
|
|
155
|
-
* Invitation for the bot to join the target
|
|
155
|
+
* Invitation for the bot to join the target space.
|
|
156
156
|
*
|
|
157
157
|
* Options:
|
|
158
158
|
* - proto3_optional = true
|
|
159
159
|
*/
|
|
160
|
-
invitation?:
|
|
160
|
+
invitation?: dxos_client_services.Invitation;
|
|
161
161
|
/**
|
|
162
|
-
* Key of the
|
|
162
|
+
* Key of the space bot is invited to.
|
|
163
163
|
*
|
|
164
164
|
* Options:
|
|
165
165
|
* - proto3_optional = true
|
|
166
166
|
*/
|
|
167
|
-
|
|
167
|
+
spaceKey?: ReturnType<(typeof substitutions)["dxos.keys.PublicKey"]["decode"]>;
|
|
168
168
|
}
|
|
169
169
|
/**
|
|
170
170
|
* Defined in:
|
|
@@ -213,12 +213,12 @@ export interface GetLogsRequest {
|
|
|
213
213
|
*/
|
|
214
214
|
export interface BotReport {
|
|
215
215
|
/**
|
|
216
|
-
* Details of the
|
|
216
|
+
* Details of the space the bot was spawned for.
|
|
217
217
|
*
|
|
218
218
|
* Options:
|
|
219
219
|
* - proto3_optional = true
|
|
220
220
|
*/
|
|
221
|
-
|
|
221
|
+
spaceDetails?: dxos_client.SpaceDetails;
|
|
222
222
|
}
|
|
223
223
|
/**
|
|
224
224
|
* Service that is used by clients to communicate with bot factory.
|
|
@@ -249,12 +249,12 @@ export interface InitializeRequest {
|
|
|
249
249
|
*/
|
|
250
250
|
config?: dxos_config.Config;
|
|
251
251
|
/**
|
|
252
|
-
* Invitation for the bot to join the target
|
|
252
|
+
* Invitation for the bot to join the target space.
|
|
253
253
|
*
|
|
254
254
|
* Options:
|
|
255
255
|
* - proto3_optional = true
|
|
256
256
|
*/
|
|
257
|
-
invitation?:
|
|
257
|
+
invitation?: dxos_client_services.Invitation;
|
|
258
258
|
/**
|
|
259
259
|
* ID of the bot.
|
|
260
260
|
*
|
|
@@ -281,7 +281,7 @@ export interface StartRequest {
|
|
|
281
281
|
*/
|
|
282
282
|
export interface BotService {
|
|
283
283
|
/**
|
|
284
|
-
* Initialize Client, create profile, and join a
|
|
284
|
+
* Initialize Client, create profile, and join a space.
|
|
285
285
|
*/
|
|
286
286
|
initialize: (request: InitializeRequest) => Promise<void>;
|
|
287
287
|
/**
|