mirror of
https://github.com/zed-industries/zed.git
synced 2024-10-26 08:31:04 +00:00
e3c0d6980c
Now, when you open a local worktree, we immediately send an `OpenWorktree` message to the server, telling it the name of the folder that you've opened, and the names of all the collaborators (based on a `.zed.toml` file). The server responds with a unique id for the worktree. When starting share this local worktree, you now include this previously-assigned id in the `ShareWorktree` message. When joining a worktree, there is no longer a need to provide an access token. The access is controlled by the set of "collaborator logins" that were provided when the worktree was initially opened by the host.
329 lines
6.5 KiB
Protocol Buffer
329 lines
6.5 KiB
Protocol Buffer
syntax = "proto3";
|
|
package zed.messages;
|
|
|
|
message Envelope {
|
|
uint32 id = 1;
|
|
optional uint32 responding_to = 2;
|
|
optional uint32 original_sender_id = 3;
|
|
oneof payload {
|
|
Ack ack = 4;
|
|
Error error = 5;
|
|
Ping ping = 6;
|
|
ShareWorktree share_worktree = 7;
|
|
ShareWorktreeResponse share_worktree_response = 8;
|
|
JoinWorktree join_worktree = 9;
|
|
JoinWorktreeResponse join_worktree_response = 10;
|
|
UpdateWorktree update_worktree = 11;
|
|
CloseWorktree close_worktree = 12;
|
|
OpenBuffer open_buffer = 13;
|
|
OpenBufferResponse open_buffer_response = 14;
|
|
CloseBuffer close_buffer = 15;
|
|
UpdateBuffer update_buffer = 16;
|
|
SaveBuffer save_buffer = 17;
|
|
BufferSaved buffer_saved = 18;
|
|
AddPeer add_peer = 19;
|
|
RemovePeer remove_peer = 20;
|
|
GetChannels get_channels = 21;
|
|
GetChannelsResponse get_channels_response = 22;
|
|
GetUsers get_users = 23;
|
|
GetUsersResponse get_users_response = 24;
|
|
JoinChannel join_channel = 25;
|
|
JoinChannelResponse join_channel_response = 26;
|
|
LeaveChannel leave_channel = 27;
|
|
SendChannelMessage send_channel_message = 28;
|
|
SendChannelMessageResponse send_channel_message_response = 29;
|
|
ChannelMessageSent channel_message_sent = 30;
|
|
GetChannelMessages get_channel_messages = 31;
|
|
GetChannelMessagesResponse get_channel_messages_response = 32;
|
|
OpenWorktree open_worktree = 33;
|
|
OpenWorktreeResponse open_worktree_response = 34;
|
|
UnshareWorktree unshare_worktree = 35;
|
|
}
|
|
}
|
|
|
|
// Messages
|
|
|
|
message Ping {}
|
|
|
|
message Ack {}
|
|
|
|
message Error {
|
|
string message = 1;
|
|
}
|
|
|
|
message OpenWorktree {
|
|
string root_name = 1;
|
|
repeated string collaborator_logins = 2;
|
|
}
|
|
|
|
message OpenWorktreeResponse {
|
|
uint64 worktree_id = 1;
|
|
}
|
|
|
|
message ShareWorktree {
|
|
Worktree worktree = 1;
|
|
}
|
|
|
|
message ShareWorktreeResponse {}
|
|
|
|
message UnshareWorktree {
|
|
uint64 worktree_id = 1;
|
|
}
|
|
|
|
message JoinWorktree {
|
|
uint64 worktree_id = 1;
|
|
}
|
|
|
|
message JoinWorktreeResponse {
|
|
Worktree worktree = 2;
|
|
uint32 replica_id = 3;
|
|
repeated Peer peers = 4;
|
|
}
|
|
|
|
message UpdateWorktree {
|
|
uint64 worktree_id = 1;
|
|
repeated Entry updated_entries = 2;
|
|
repeated uint64 removed_entries = 3;
|
|
}
|
|
|
|
message CloseWorktree {
|
|
uint64 worktree_id = 1;
|
|
}
|
|
|
|
message AddPeer {
|
|
uint64 worktree_id = 1;
|
|
Peer peer = 2;
|
|
}
|
|
|
|
message RemovePeer {
|
|
uint64 worktree_id = 1;
|
|
uint32 peer_id = 2;
|
|
}
|
|
|
|
message OpenBuffer {
|
|
uint64 worktree_id = 1;
|
|
string path = 2;
|
|
}
|
|
|
|
message OpenBufferResponse {
|
|
Buffer buffer = 1;
|
|
}
|
|
|
|
message CloseBuffer {
|
|
uint64 worktree_id = 1;
|
|
uint64 buffer_id = 2;
|
|
}
|
|
|
|
message UpdateBuffer {
|
|
uint64 worktree_id = 1;
|
|
uint64 buffer_id = 2;
|
|
repeated Operation operations = 3;
|
|
}
|
|
|
|
message SaveBuffer {
|
|
uint64 worktree_id = 1;
|
|
uint64 buffer_id = 2;
|
|
}
|
|
|
|
message BufferSaved {
|
|
uint64 worktree_id = 1;
|
|
uint64 buffer_id = 2;
|
|
repeated VectorClockEntry version = 3;
|
|
Timestamp mtime = 4;
|
|
}
|
|
|
|
message GetChannels {}
|
|
|
|
message GetChannelsResponse {
|
|
repeated Channel channels = 1;
|
|
}
|
|
|
|
message JoinChannel {
|
|
uint64 channel_id = 1;
|
|
}
|
|
|
|
message JoinChannelResponse {
|
|
repeated ChannelMessage messages = 1;
|
|
bool done = 2;
|
|
}
|
|
|
|
message LeaveChannel {
|
|
uint64 channel_id = 1;
|
|
}
|
|
|
|
message GetUsers {
|
|
repeated uint64 user_ids = 1;
|
|
}
|
|
|
|
message GetUsersResponse {
|
|
repeated User users = 1;
|
|
}
|
|
|
|
message SendChannelMessage {
|
|
uint64 channel_id = 1;
|
|
string body = 2;
|
|
Nonce nonce = 3;
|
|
}
|
|
|
|
message SendChannelMessageResponse {
|
|
ChannelMessage message = 1;
|
|
}
|
|
|
|
message ChannelMessageSent {
|
|
uint64 channel_id = 1;
|
|
ChannelMessage message = 2;
|
|
}
|
|
|
|
message GetChannelMessages {
|
|
uint64 channel_id = 1;
|
|
uint64 before_message_id = 2;
|
|
}
|
|
|
|
message GetChannelMessagesResponse {
|
|
repeated ChannelMessage messages = 1;
|
|
bool done = 2;
|
|
}
|
|
|
|
// Entities
|
|
|
|
message Peer {
|
|
uint32 peer_id = 1;
|
|
uint32 replica_id = 2;
|
|
}
|
|
|
|
message User {
|
|
uint64 id = 1;
|
|
string github_login = 2;
|
|
string avatar_url = 3;
|
|
}
|
|
|
|
message Worktree {
|
|
uint64 id = 1;
|
|
string root_name = 2;
|
|
repeated Entry entries = 3;
|
|
}
|
|
|
|
message Entry {
|
|
uint64 id = 1;
|
|
bool is_dir = 2;
|
|
string path = 3;
|
|
uint64 inode = 4;
|
|
Timestamp mtime = 5;
|
|
bool is_symlink = 6;
|
|
bool is_ignored = 7;
|
|
}
|
|
|
|
message Buffer {
|
|
uint64 id = 1;
|
|
string content = 2;
|
|
repeated Operation.Edit history = 3;
|
|
repeated SelectionSetSnapshot selections = 4;
|
|
}
|
|
|
|
message SelectionSetSnapshot {
|
|
uint32 replica_id = 1;
|
|
uint32 local_timestamp = 2;
|
|
repeated Selection selections = 3;
|
|
bool is_active = 4;
|
|
}
|
|
|
|
message SelectionSet {
|
|
repeated Selection selections = 1;
|
|
}
|
|
|
|
message Selection {
|
|
uint64 id = 1;
|
|
Anchor start = 2;
|
|
Anchor end = 3;
|
|
bool reversed = 4;
|
|
}
|
|
|
|
message Anchor {
|
|
repeated VectorClockEntry version = 1;
|
|
uint64 offset = 2;
|
|
Bias bias = 3;
|
|
enum Bias {
|
|
LEFT = 0;
|
|
Right = 1;
|
|
}
|
|
}
|
|
|
|
message Operation {
|
|
oneof variant {
|
|
Edit edit = 1;
|
|
Undo undo = 2;
|
|
UpdateSelections update_selections = 3;
|
|
SetActiveSelections set_active_selections = 4;
|
|
}
|
|
|
|
message Edit {
|
|
uint32 replica_id = 1;
|
|
uint32 local_timestamp = 2;
|
|
uint32 lamport_timestamp = 3;
|
|
repeated VectorClockEntry version = 4;
|
|
repeated Range ranges = 5;
|
|
optional string new_text = 6;
|
|
}
|
|
|
|
message Undo {
|
|
uint32 replica_id = 1;
|
|
uint32 local_timestamp = 2;
|
|
uint32 lamport_timestamp = 3;
|
|
repeated Range ranges = 4;
|
|
repeated VectorClockEntry version = 5;
|
|
repeated UndoCount counts = 6;
|
|
}
|
|
|
|
message UndoCount {
|
|
uint32 replica_id = 1;
|
|
uint32 local_timestamp = 2;
|
|
uint32 count = 3;
|
|
}
|
|
|
|
message UpdateSelections {
|
|
uint32 replica_id = 1;
|
|
uint32 local_timestamp = 2;
|
|
uint32 lamport_timestamp = 3;
|
|
SelectionSet set = 4;
|
|
}
|
|
|
|
message SetActiveSelections {
|
|
uint32 replica_id = 1;
|
|
optional uint32 local_timestamp = 2;
|
|
uint32 lamport_timestamp = 3;
|
|
}
|
|
}
|
|
|
|
message VectorClockEntry {
|
|
uint32 replica_id = 1;
|
|
uint32 timestamp = 2;
|
|
}
|
|
|
|
message Timestamp {
|
|
uint64 seconds = 1;
|
|
uint32 nanos = 2;
|
|
}
|
|
|
|
message Range {
|
|
uint64 start = 1;
|
|
uint64 end = 2;
|
|
}
|
|
|
|
message Nonce {
|
|
uint64 upper_half = 1;
|
|
uint64 lower_half = 2;
|
|
}
|
|
|
|
message Channel {
|
|
uint64 id = 1;
|
|
string name = 2;
|
|
}
|
|
|
|
message ChannelMessage {
|
|
uint64 id = 1;
|
|
string body = 2;
|
|
uint64 timestamp = 3;
|
|
uint64 sender_id = 4;
|
|
Nonce nonce = 5;
|
|
}
|