Detailed changes
@@ -0,0 +1,213 @@
+syntax = "proto3";
+package zed.messages;
+
+import "buffer.proto";
+
+message Context {
+ repeated ContextOperation operations = 1;
+}
+
+message ContextMetadata {
+ string context_id = 1;
+ optional string summary = 2;
+}
+
+message ContextMessageStatus {
+ oneof variant {
+ Done done = 1;
+ Pending pending = 2;
+ Error error = 3;
+ Canceled canceled = 4;
+ }
+
+ message Done {}
+
+ message Pending {}
+
+ message Error {
+ string message = 1;
+ }
+
+ message Canceled {}
+}
+
+message ContextMessage {
+ LamportTimestamp id = 1;
+ Anchor start = 2;
+ LanguageModelRole role = 3;
+ ContextMessageStatus status = 4;
+}
+
+message SlashCommandOutputSection {
+ AnchorRange range = 1;
+ string icon_name = 2;
+ string label = 3;
+ optional string metadata = 4;
+}
+
+message ThoughtProcessOutputSection {
+ AnchorRange range = 1;
+}
+
+message ContextOperation {
+ oneof variant {
+ InsertMessage insert_message = 1;
+ UpdateMessage update_message = 2;
+ UpdateSummary update_summary = 3;
+ BufferOperation buffer_operation = 5;
+ SlashCommandStarted slash_command_started = 6;
+ SlashCommandOutputSectionAdded slash_command_output_section_added = 7;
+ SlashCommandCompleted slash_command_completed = 8;
+ ThoughtProcessOutputSectionAdded thought_process_output_section_added = 9;
+ }
+
+ reserved 4;
+
+ message InsertMessage {
+ ContextMessage message = 1;
+ repeated VectorClockEntry version = 2;
+ }
+
+ message UpdateMessage {
+ LamportTimestamp message_id = 1;
+ LanguageModelRole role = 2;
+ ContextMessageStatus status = 3;
+ LamportTimestamp timestamp = 4;
+ repeated VectorClockEntry version = 5;
+ }
+
+ message UpdateSummary {
+ string summary = 1;
+ bool done = 2;
+ LamportTimestamp timestamp = 3;
+ repeated VectorClockEntry version = 4;
+ }
+
+ message SlashCommandStarted {
+ LamportTimestamp id = 1;
+ AnchorRange output_range = 2;
+ string name = 3;
+ repeated VectorClockEntry version = 4;
+ }
+
+ message SlashCommandOutputSectionAdded {
+ LamportTimestamp timestamp = 1;
+ SlashCommandOutputSection section = 2;
+ repeated VectorClockEntry version = 3;
+ }
+
+ message SlashCommandCompleted {
+ LamportTimestamp id = 1;
+ LamportTimestamp timestamp = 3;
+ optional string error_message = 4;
+ repeated VectorClockEntry version = 5;
+ }
+
+ message ThoughtProcessOutputSectionAdded {
+ LamportTimestamp timestamp = 1;
+ ThoughtProcessOutputSection section = 2;
+ repeated VectorClockEntry version = 3;
+ }
+
+ message BufferOperation {
+ Operation operation = 1;
+ }
+}
+
+message AdvertiseContexts {
+ uint64 project_id = 1;
+ repeated ContextMetadata contexts = 2;
+}
+
+message OpenContext {
+ uint64 project_id = 1;
+ string context_id = 2;
+}
+
+message OpenContextResponse {
+ Context context = 1;
+}
+
+message CreateContext {
+ uint64 project_id = 1;
+}
+
+message CreateContextResponse {
+ string context_id = 1;
+ Context context = 2;
+}
+
+message UpdateContext {
+ uint64 project_id = 1;
+ string context_id = 2;
+ ContextOperation operation = 3;
+}
+
+message ContextVersion {
+ string context_id = 1;
+ repeated VectorClockEntry context_version = 2;
+ repeated VectorClockEntry buffer_version = 3;
+}
+
+message SynchronizeContexts {
+ uint64 project_id = 1;
+ repeated ContextVersion contexts = 2;
+}
+
+message SynchronizeContextsResponse {
+ repeated ContextVersion contexts = 1;
+}
+
+message GetLlmToken {}
+
+message GetLlmTokenResponse {
+ string token = 1;
+}
+
+message RefreshLlmToken {}
+
+enum LanguageModelRole {
+ LanguageModelUser = 0;
+ LanguageModelAssistant = 1;
+ LanguageModelSystem = 2;
+ reserved 3;
+}
+
+message CountLanguageModelTokens {
+ LanguageModelProvider provider = 1;
+ string request = 2;
+}
+
+message CountLanguageModelTokensResponse {
+ uint32 token_count = 1;
+}
+
+enum LanguageModelProvider {
+ Anthropic = 0;
+ OpenAI = 1;
+ Google = 2;
+ Zed = 3;
+}
+
+message GetCachedEmbeddings {
+ string model = 1;
+ repeated bytes digests = 2;
+}
+
+message GetCachedEmbeddingsResponse {
+ repeated Embedding embeddings = 1;
+}
+
+message ComputeEmbeddings {
+ string model = 1;
+ repeated string texts = 2;
+}
+
+message ComputeEmbeddingsResponse {
+ repeated Embedding embeddings = 1;
+}
+
+message Embedding {
+ bytes digest = 1;
+ repeated float dimensions = 2;
+}
@@ -0,0 +1,93 @@
+syntax = "proto3";
+package zed.messages;
+
+message UpdateInviteInfo {
+ string url = 1;
+ uint32 count = 2;
+}
+
+message GetPrivateUserInfo {}
+
+message GetPrivateUserInfoResponse {
+ string metrics_id = 1;
+ bool staff = 2;
+ repeated string flags = 3;
+ optional uint64 accepted_tos_at = 4;
+}
+
+enum Plan {
+ Free = 0;
+ ZedPro = 1;
+}
+
+message UpdateUserPlan {
+ Plan plan = 1;
+}
+
+message AcceptTermsOfService {}
+
+message AcceptTermsOfServiceResponse {
+ uint64 accepted_tos_at = 1;
+}
+
+message ShutdownRemoteServer {}
+
+message Toast {
+ uint64 project_id = 1;
+ string notification_id = 2;
+ string message = 3;
+}
+
+message HideToast {
+ uint64 project_id = 1;
+ string notification_id = 2;
+}
+
+message OpenServerSettings {
+ uint64 project_id = 1;
+}
+
+message GetPanicFiles {
+}
+
+message GetPanicFilesResponse {
+ repeated string file_contents = 2;
+}
+
+message Extension {
+ string id = 1;
+ string version = 2;
+ bool dev = 3;
+}
+
+message SyncExtensions {
+ repeated Extension extensions = 1;
+}
+
+message SyncExtensionsResponse {
+ string tmp_dir = 1;
+ repeated Extension missing_extensions = 2;
+}
+
+message InstallExtension {
+ Extension extension = 1;
+ string tmp_dir = 2;
+}
+
+message AskPassRequest {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ uint64 askpass_id = 4;
+ string prompt = 5;
+}
+
+message AskPassResponse {
+ string response = 1;
+}
+
+message GetSupermavenApiKey {}
+
+message GetSupermavenApiKeyResponse {
+ string api_key = 1;
+}
@@ -0,0 +1,293 @@
+syntax = "proto3";
+package zed.messages;
+
+import "core.proto";
+import "worktree.proto";
+
+message OpenNewBuffer {
+ uint64 project_id = 1;
+}
+
+message OpenBufferResponse {
+ uint64 buffer_id = 1;
+}
+
+message CreateBufferForPeer {
+ uint64 project_id = 1;
+ PeerId peer_id = 2;
+ oneof variant {
+ BufferState state = 3;
+ BufferChunk chunk = 4;
+ }
+}
+
+message UpdateBuffer {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ repeated Operation operations = 3;
+}
+
+message OpenBufferByPath {
+ uint64 project_id = 1;
+ uint64 worktree_id = 2;
+ string path = 3;
+}
+
+message OpenBufferById {
+ uint64 project_id = 1;
+ uint64 id = 2;
+}
+
+message UpdateBufferFile {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ File file = 3;
+}
+
+message SaveBuffer {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ repeated VectorClockEntry version = 3;
+ optional ProjectPath new_path = 4;
+}
+
+message CloseBuffer {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+}
+
+message BufferSaved {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ repeated VectorClockEntry version = 3;
+ Timestamp mtime = 4;
+ reserved 5;
+}
+
+message BufferReloaded {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ repeated VectorClockEntry version = 3;
+ Timestamp mtime = 4;
+ reserved 5;
+ LineEnding line_ending = 6;
+}
+
+message ReloadBuffers {
+ uint64 project_id = 1;
+ repeated uint64 buffer_ids = 2;
+}
+
+message ReloadBuffersResponse {
+ ProjectTransaction transaction = 1;
+}
+
+message SynchronizeBuffers {
+ uint64 project_id = 1;
+ repeated BufferVersion buffers = 2;
+}
+
+message SynchronizeBuffersResponse {
+ repeated BufferVersion buffers = 1;
+}
+
+message BufferVersion {
+ uint64 id = 1;
+ repeated VectorClockEntry version = 2;
+}
+
+message BufferState {
+ uint64 id = 1;
+ optional File file = 2;
+ string base_text = 3;
+ LineEnding line_ending = 5;
+ repeated VectorClockEntry saved_version = 6;
+ Timestamp saved_mtime = 8;
+
+ reserved 7;
+ reserved 4;
+}
+
+message BufferChunk {
+ uint64 buffer_id = 1;
+ repeated Operation operations = 2;
+ bool is_last = 3;
+}
+
+enum LineEnding {
+ Unix = 0;
+ Windows = 1;
+}
+
+message VectorClockEntry {
+ uint32 replica_id = 1;
+ uint32 timestamp = 2;
+}
+
+message UndoMapEntry {
+ uint32 replica_id = 1;
+ uint32 local_timestamp = 2;
+ repeated UndoCount counts = 3;
+}
+
+message UndoCount {
+ uint32 replica_id = 1;
+ uint32 lamport_timestamp = 2;
+ uint32 count = 3;
+}
+
+message Operation {
+ oneof variant {
+ Edit edit = 1;
+ Undo undo = 2;
+ UpdateSelections update_selections = 3;
+ UpdateDiagnostics update_diagnostics = 4;
+ UpdateCompletionTriggers update_completion_triggers = 5;
+ }
+
+ message Edit {
+ uint32 replica_id = 1;
+ uint32 lamport_timestamp = 2;
+ repeated VectorClockEntry version = 3;
+ repeated Range ranges = 4;
+ repeated string new_text = 5;
+ }
+
+ message Undo {
+ uint32 replica_id = 1;
+ uint32 lamport_timestamp = 2;
+ repeated VectorClockEntry version = 3;
+ repeated UndoCount counts = 4;
+ }
+
+ message UpdateSelections {
+ uint32 replica_id = 1;
+ uint32 lamport_timestamp = 2;
+ repeated Selection selections = 3;
+ bool line_mode = 4;
+ CursorShape cursor_shape = 5;
+ }
+
+ message UpdateCompletionTriggers {
+ uint32 replica_id = 1;
+ uint32 lamport_timestamp = 2;
+ repeated string triggers = 3;
+ uint64 language_server_id = 4;
+ }
+}
+
+message ProjectTransaction {
+ repeated uint64 buffer_ids = 1;
+ repeated Transaction transactions = 2;
+}
+
+message Transaction {
+ LamportTimestamp id = 1;
+ repeated LamportTimestamp edit_ids = 2;
+ repeated VectorClockEntry start = 3;
+}
+
+message LamportTimestamp {
+ uint32 replica_id = 1;
+ uint32 value = 2;
+}
+
+message Range {
+ uint64 start = 1;
+ uint64 end = 2;
+}
+
+message Selection {
+ uint64 id = 1;
+ EditorAnchor start = 2;
+ EditorAnchor end = 3;
+ bool reversed = 4;
+}
+
+message EditorAnchor {
+ uint64 excerpt_id = 1;
+ Anchor anchor = 2;
+}
+
+enum CursorShape {
+ CursorBar = 0;
+ CursorBlock = 1;
+ CursorUnderscore = 2;
+ CursorHollow = 3;
+}
+
+message UpdateDiagnostics {
+ uint32 replica_id = 1;
+ uint32 lamport_timestamp = 2;
+ uint64 server_id = 3;
+ repeated Diagnostic diagnostics = 4;
+}
+
+message Anchor {
+ uint32 replica_id = 1;
+ uint32 timestamp = 2;
+ uint64 offset = 3;
+ Bias bias = 4;
+ optional uint64 buffer_id = 5;
+}
+
+message AnchorRange {
+ Anchor start = 1;
+ Anchor end = 2;
+}
+
+message Location {
+ uint64 buffer_id = 1;
+ Anchor start = 2;
+ Anchor end = 3;
+}
+
+enum Bias {
+ Left = 0;
+ Right = 1;
+}
+
+message Diagnostic {
+ Anchor start = 1;
+ Anchor end = 2;
+ optional string source = 3;
+ Severity severity = 4;
+ string message = 5;
+ optional string code = 6;
+ uint64 group_id = 7;
+ bool is_primary = 8;
+
+ reserved 9;
+
+ bool is_disk_based = 10;
+ bool is_unnecessary = 11;
+
+ enum Severity {
+ None = 0;
+ Error = 1;
+ Warning = 2;
+ Information = 3;
+ Hint = 4;
+ }
+ optional string data = 12;
+}
+
+message SearchQuery {
+ string query = 2;
+ bool regex = 3;
+ bool whole_word = 4;
+ bool case_sensitive = 5;
+ string files_to_include = 6;
+ string files_to_exclude = 7;
+ bool include_ignored = 8;
+}
+
+message FindSearchCandidates {
+ uint64 project_id = 1;
+ SearchQuery query = 2;
+ uint64 limit = 3;
+}
+
+message FindSearchCandidatesResponse {
+ repeated uint64 buffer_ids = 1;
+}
@@ -0,0 +1,417 @@
+syntax = "proto3";
+package zed.messages;
+
+import "core.proto";
+import "worktree.proto";
+import "buffer.proto";
+import "lsp.proto";
+import "channel.proto";
+import "git.proto";
+
+message CreateRoom {}
+
+message CreateRoomResponse {
+ Room room = 1;
+ optional LiveKitConnectionInfo live_kit_connection_info = 2;
+}
+
+message JoinRoom {
+ uint64 id = 1;
+}
+
+message JoinRoomResponse {
+ Room room = 1;
+ optional uint64 channel_id = 2;
+ optional LiveKitConnectionInfo live_kit_connection_info = 3;
+}
+
+message RejoinRoom {
+ uint64 id = 1;
+ repeated UpdateProject reshared_projects = 2;
+ repeated RejoinProject rejoined_projects = 3;
+}
+
+message RejoinRemoteProjects {
+ repeated RejoinProject rejoined_projects = 1;
+}
+
+message RejoinRemoteProjectsResponse {
+ repeated RejoinedProject rejoined_projects = 1;
+}
+
+message RejoinProject {
+ uint64 id = 1;
+ repeated RejoinWorktree worktrees = 2;
+ repeated RejoinRepository repositories = 3;
+}
+
+message RejoinWorktree {
+ uint64 id = 1;
+ uint64 scan_id = 2;
+}
+
+message RejoinRepository {
+ uint64 id = 1;
+ uint64 scan_id = 2;
+}
+
+message RejoinRoomResponse {
+ Room room = 1;
+ repeated ResharedProject reshared_projects = 2;
+ repeated RejoinedProject rejoined_projects = 3;
+}
+
+message ResharedProject {
+ uint64 id = 1;
+ repeated Collaborator collaborators = 2;
+}
+
+message RejoinedProject {
+ uint64 id = 1;
+ repeated WorktreeMetadata worktrees = 2;
+ repeated Collaborator collaborators = 3;
+ repeated LanguageServer language_servers = 4;
+}
+
+message LeaveRoom {}
+
+message Room {
+ uint64 id = 1;
+ repeated Participant participants = 2;
+ repeated PendingParticipant pending_participants = 3;
+ repeated Follower followers = 4;
+ string livekit_room = 5;
+}
+
+message Participant {
+ uint64 user_id = 1;
+ PeerId peer_id = 2;
+ repeated ParticipantProject projects = 3;
+ ParticipantLocation location = 4;
+ uint32 participant_index = 5;
+ ChannelRole role = 6;
+ reserved 7;
+}
+
+message PendingParticipant {
+ uint64 user_id = 1;
+ uint64 calling_user_id = 2;
+ optional uint64 initial_project_id = 3;
+}
+
+message ParticipantProject {
+ uint64 id = 1;
+ repeated string worktree_root_names = 2;
+}
+
+message Follower {
+ PeerId leader_id = 1;
+ PeerId follower_id = 2;
+ uint64 project_id = 3;
+}
+
+message ParticipantLocation {
+ oneof variant {
+ SharedProject shared_project = 1;
+ UnsharedProject unshared_project = 2;
+ External external = 3;
+ }
+
+ message SharedProject {
+ uint64 id = 1;
+ }
+
+ message UnsharedProject {}
+
+ message External {}
+}
+
+message Call {
+ uint64 room_id = 1;
+ uint64 called_user_id = 2;
+ optional uint64 initial_project_id = 3;
+}
+
+message IncomingCall {
+ uint64 room_id = 1;
+ uint64 calling_user_id = 2;
+ repeated uint64 participant_user_ids = 3;
+ optional ParticipantProject initial_project = 4;
+}
+
+message CallCanceled {
+ uint64 room_id = 1;
+}
+
+message CancelCall {
+ uint64 room_id = 1;
+ uint64 called_user_id = 2;
+}
+
+message DeclineCall {
+ uint64 room_id = 1;
+}
+
+message UpdateParticipantLocation {
+ uint64 room_id = 1;
+ ParticipantLocation location = 2;
+}
+
+message RoomUpdated {
+ Room room = 1;
+}
+
+message LiveKitConnectionInfo {
+ string server_url = 1;
+ string token = 2;
+ bool can_publish = 3;
+}
+
+message ShareProject {
+ uint64 room_id = 1;
+ repeated WorktreeMetadata worktrees = 2;
+ reserved 3;
+ bool is_ssh_project = 4;
+}
+
+message ShareProjectResponse {
+ uint64 project_id = 1;
+}
+
+message UnshareProject {
+ uint64 project_id = 1;
+}
+
+message UpdateProject {
+ uint64 project_id = 1;
+ repeated WorktreeMetadata worktrees = 2;
+}
+
+message JoinProject {
+ uint64 project_id = 1;
+}
+
+message JoinProjectResponse {
+ uint64 project_id = 5;
+ uint32 replica_id = 1;
+ repeated WorktreeMetadata worktrees = 2;
+ repeated Collaborator collaborators = 3;
+ repeated LanguageServer language_servers = 4;
+ ChannelRole role = 6;
+ reserved 7;
+}
+
+message LeaveProject {
+ uint64 project_id = 1;
+}
+
+message UpdateWorktree {
+ uint64 project_id = 1;
+ uint64 worktree_id = 2;
+ string root_name = 3;
+ repeated Entry updated_entries = 4;
+ repeated uint64 removed_entries = 5;
+ repeated RepositoryEntry updated_repositories = 6; // deprecated
+ repeated uint64 removed_repositories = 7; // deprecated
+ uint64 scan_id = 8;
+ bool is_last_update = 9;
+ string abs_path = 10;
+}
+
+// deprecated
+message RepositoryEntry {
+ uint64 repository_id = 1;
+ reserved 2;
+ repeated StatusEntry updated_statuses = 3;
+ repeated string removed_statuses = 4;
+ repeated string current_merge_conflicts = 5;
+ optional Branch branch_summary = 6;
+}
+
+message AddProjectCollaborator {
+ uint64 project_id = 1;
+ Collaborator collaborator = 2;
+}
+
+message UpdateProjectCollaborator {
+ uint64 project_id = 1;
+ PeerId old_peer_id = 2;
+ PeerId new_peer_id = 3;
+}
+
+message RemoveProjectCollaborator {
+ uint64 project_id = 1;
+ PeerId peer_id = 2;
+}
+
+message GetUsers {
+ repeated uint64 user_ids = 1;
+}
+
+message FuzzySearchUsers {
+ string query = 1;
+}
+
+message UsersResponse {
+ repeated User users = 1;
+}
+
+message RequestContact {
+ uint64 responder_id = 1;
+}
+
+message RemoveContact {
+ uint64 user_id = 1;
+}
+
+message RespondToContactRequest {
+ uint64 requester_id = 1;
+ ContactRequestResponse response = 2;
+}
+
+enum ContactRequestResponse {
+ Accept = 0;
+ Decline = 1;
+ Block = 2;
+ Dismiss = 3;
+}
+
+message UpdateContacts {
+ repeated Contact contacts = 1;
+ repeated uint64 remove_contacts = 2;
+ repeated IncomingContactRequest incoming_requests = 3;
+ repeated uint64 remove_incoming_requests = 4;
+ repeated uint64 outgoing_requests = 5;
+ repeated uint64 remove_outgoing_requests = 6;
+}
+
+message ShowContacts {}
+
+message IncomingContactRequest {
+ uint64 requester_id = 1;
+}
+
+message Follow {
+ uint64 room_id = 1;
+ optional uint64 project_id = 2;
+ PeerId leader_id = 3;
+}
+
+message FollowResponse {
+ View active_view = 3;
+ // TODO: Remove after version 0.145.x stabilizes.
+ optional ViewId active_view_id = 1;
+ repeated View views = 2;
+}
+
+message UpdateFollowers {
+ uint64 room_id = 1;
+ optional uint64 project_id = 2;
+ reserved 3;
+ oneof variant {
+ View create_view = 5;
+ // TODO: Remove after version 0.145.x stabilizes.
+ UpdateActiveView update_active_view = 4;
+ UpdateView update_view = 6;
+ }
+}
+
+message Unfollow {
+ uint64 room_id = 1;
+ optional uint64 project_id = 2;
+ PeerId leader_id = 3;
+}
+
+message ViewId {
+ PeerId creator = 1;
+ uint64 id = 2;
+}
+
+message UpdateActiveView {
+ optional ViewId id = 1;
+ optional PeerId leader_id = 2;
+ View view = 3;
+}
+
+enum PanelId {
+ AssistantPanel = 0;
+ DebugPanel = 1;
+}
+
+message UpdateView {
+ ViewId id = 1;
+ optional PeerId leader_id = 2;
+
+ oneof variant {
+ Editor editor = 3;
+ }
+
+ message Editor {
+ repeated ExcerptInsertion inserted_excerpts = 1;
+ repeated uint64 deleted_excerpts = 2;
+ repeated Selection selections = 3;
+ optional Selection pending_selection = 4;
+ EditorAnchor scroll_top_anchor = 5;
+ float scroll_x = 6;
+ float scroll_y = 7;
+ }
+}
+
+message View {
+ ViewId id = 1;
+ optional PeerId leader_id = 2;
+ optional PanelId panel_id = 6;
+
+ oneof variant {
+ Editor editor = 3;
+ ChannelView channel_view = 4;
+ ContextEditor context_editor = 5;
+ }
+
+ message Editor {
+ bool singleton = 1;
+ optional string title = 2;
+ repeated Excerpt excerpts = 3;
+ repeated Selection selections = 4;
+ optional Selection pending_selection = 5;
+ EditorAnchor scroll_top_anchor = 6;
+ float scroll_x = 7;
+ float scroll_y = 8;
+ }
+
+ message ChannelView {
+ uint64 channel_id = 1;
+ Editor editor = 2;
+ }
+
+ message ContextEditor {
+ string context_id = 1;
+ Editor editor = 2;
+ }
+}
+
+message ExcerptInsertion {
+ Excerpt excerpt = 1;
+ optional uint64 previous_excerpt_id = 2;
+}
+
+message Excerpt {
+ uint64 id = 1;
+ uint64 buffer_id = 2;
+ Anchor context_start = 3;
+ Anchor context_end = 4;
+ Anchor primary_start = 5;
+ Anchor primary_end = 6;
+}
+
+message Contact {
+ uint64 user_id = 1;
+ bool online = 2;
+ bool busy = 3;
+}
+
+message SetRoomParticipantRole {
+ uint64 room_id = 1;
+ uint64 user_id = 2;
+ ChannelRole role = 3;
+}
@@ -0,0 +1,283 @@
+syntax = "proto3";
+package zed.messages;
+
+import "core.proto";
+import "buffer.proto";
+
+message Channel {
+ uint64 id = 1;
+ string name = 2;
+ ChannelVisibility visibility = 3;
+ repeated uint64 parent_path = 5;
+}
+
+enum ChannelVisibility {
+ Public = 0;
+ Members = 1;
+}
+
+message UpdateChannels {
+ repeated Channel channels = 1;
+ repeated uint64 delete_channels = 4;
+ repeated Channel channel_invitations = 5;
+ repeated uint64 remove_channel_invitations = 6;
+ repeated ChannelParticipants channel_participants = 7;
+ repeated ChannelMessageId latest_channel_message_ids = 8;
+ repeated ChannelBufferVersion latest_channel_buffer_versions = 9;
+
+ reserved 10 to 15;
+}
+
+message UpdateUserChannels {
+ repeated ChannelMessageId observed_channel_message_id = 1;
+ repeated ChannelBufferVersion observed_channel_buffer_version = 2;
+ repeated ChannelMembership channel_memberships = 3;
+}
+
+message ChannelMembership {
+ uint64 channel_id = 1;
+ ChannelRole role = 2;
+}
+
+message ChannelMessageId {
+ uint64 channel_id = 1;
+ uint64 message_id = 2;
+}
+
+message ChannelPermission {
+ uint64 channel_id = 1;
+ ChannelRole role = 3;
+}
+
+message ChannelParticipants {
+ uint64 channel_id = 1;
+ repeated uint64 participant_user_ids = 2;
+}
+
+message JoinChannel {
+ uint64 channel_id = 1;
+}
+
+message DeleteChannel {
+ uint64 channel_id = 1;
+}
+
+message GetChannelMembers {
+ uint64 channel_id = 1;
+ string query = 2;
+ uint64 limit = 3;
+}
+
+message GetChannelMembersResponse {
+ repeated ChannelMember members = 1;
+ repeated User users = 2;
+}
+
+message ChannelMember {
+ uint64 user_id = 1;
+ Kind kind = 3;
+ ChannelRole role = 4;
+
+ enum Kind {
+ Member = 0;
+ Invitee = 1;
+ }
+}
+
+message SubscribeToChannels {}
+
+message CreateChannel {
+ string name = 1;
+ optional uint64 parent_id = 2;
+}
+
+message CreateChannelResponse {
+ Channel channel = 1;
+ optional uint64 parent_id = 2;
+}
+
+message InviteChannelMember {
+ uint64 channel_id = 1;
+ uint64 user_id = 2;
+ ChannelRole role = 4;
+}
+
+message RemoveChannelMember {
+ uint64 channel_id = 1;
+ uint64 user_id = 2;
+}
+
+enum ChannelRole {
+ Admin = 0;
+ Member = 1;
+ Guest = 2;
+ Banned = 3;
+ Talker = 4;
+}
+
+message SetChannelMemberRole {
+ uint64 channel_id = 1;
+ uint64 user_id = 2;
+ ChannelRole role = 3;
+}
+
+message SetChannelVisibility {
+ uint64 channel_id = 1;
+ ChannelVisibility visibility = 2;
+}
+
+message RenameChannel {
+ uint64 channel_id = 1;
+ string name = 2;
+}
+
+message RenameChannelResponse {
+ Channel channel = 1;
+}
+
+message JoinChannelChat {
+ uint64 channel_id = 1;
+}
+
+message JoinChannelChatResponse {
+ repeated ChannelMessage messages = 1;
+ bool done = 2;
+}
+
+message LeaveChannelChat {
+ uint64 channel_id = 1;
+}
+
+message SendChannelMessage {
+ uint64 channel_id = 1;
+ string body = 2;
+ Nonce nonce = 3;
+ repeated ChatMention mentions = 4;
+ optional uint64 reply_to_message_id = 5;
+}
+
+message RemoveChannelMessage {
+ uint64 channel_id = 1;
+ uint64 message_id = 2;
+}
+
+message UpdateChannelMessage {
+ uint64 channel_id = 1;
+ uint64 message_id = 2;
+ Nonce nonce = 4;
+ string body = 5;
+ repeated ChatMention mentions = 6;
+}
+
+message AckChannelMessage {
+ uint64 channel_id = 1;
+ uint64 message_id = 2;
+}
+
+message SendChannelMessageResponse {
+ ChannelMessage message = 1;
+}
+
+message ChannelMessageSent {
+ uint64 channel_id = 1;
+ ChannelMessage message = 2;
+}
+
+message ChannelMessageUpdate {
+ 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;
+}
+
+message GetChannelMessagesById {
+ repeated uint64 message_ids = 1;
+}
+
+message MoveChannel {
+ uint64 channel_id = 1;
+ uint64 to = 2;
+}
+
+message JoinChannelBuffer {
+ uint64 channel_id = 1;
+}
+
+message ChannelBufferVersion {
+ uint64 channel_id = 1;
+ repeated VectorClockEntry version = 2;
+ uint64 epoch = 3;
+}
+
+message UpdateChannelBufferCollaborators {
+ uint64 channel_id = 1;
+ repeated Collaborator collaborators = 2;
+}
+
+message UpdateChannelBuffer {
+ uint64 channel_id = 1;
+ repeated Operation operations = 2;
+}
+
+message ChannelMessage {
+ uint64 id = 1;
+ string body = 2;
+ uint64 timestamp = 3;
+ uint64 sender_id = 4;
+ Nonce nonce = 5;
+ repeated ChatMention mentions = 6;
+ optional uint64 reply_to_message_id = 7;
+ optional uint64 edited_at = 8;
+}
+
+message ChatMention {
+ Range range = 1;
+ uint64 user_id = 2;
+}
+
+message RejoinChannelBuffers {
+ repeated ChannelBufferVersion buffers = 1;
+}
+
+message RejoinChannelBuffersResponse {
+ repeated RejoinedChannelBuffer buffers = 1;
+}
+
+message AckBufferOperation {
+ uint64 buffer_id = 1;
+ uint64 epoch = 2;
+ repeated VectorClockEntry version = 3;
+}
+
+message JoinChannelBufferResponse {
+ uint64 buffer_id = 1;
+ uint32 replica_id = 2;
+ string base_text = 3;
+ repeated Operation operations = 4;
+ repeated Collaborator collaborators = 5;
+ uint64 epoch = 6;
+}
+
+message RejoinedChannelBuffer {
+ uint64 channel_id = 1;
+ repeated VectorClockEntry version = 2;
+ repeated Operation operations = 3;
+ repeated Collaborator collaborators = 4;
+}
+
+message LeaveChannelBuffer {
+ uint64 channel_id = 1;
+}
+
+message RespondToChannelInvite {
+ uint64 channel_id = 1;
+ bool accept = 2;
+}
@@ -0,0 +1,27 @@
+syntax = "proto3";
+package zed.messages;
+
+message PeerId {
+ uint32 owner_id = 1;
+ uint32 id = 2;
+}
+
+message User {
+ uint64 id = 1;
+ string github_login = 2;
+ string avatar_url = 3;
+ optional string email = 4;
+ optional string name = 5;
+}
+
+message Nonce {
+ uint64 upper_half = 1;
+ uint64 lower_half = 2;
+}
+
+message Collaborator {
+ PeerId peer_id = 1;
+ uint32 replica_id = 2;
+ uint64 user_id = 3;
+ bool is_host = 4;
+}
@@ -0,0 +1,530 @@
+syntax = "proto3";
+package zed.messages;
+
+import "core.proto";
+import "buffer.proto";
+
+enum BreakpointState {
+ Enabled = 0;
+ Disabled = 1;
+}
+
+message Breakpoint {
+ Anchor position = 1;
+ BreakpointState state = 2;
+ reserved 3;
+ optional string message = 4;
+ optional string condition = 5;
+ optional string hit_condition = 6;
+}
+
+message BreakpointsForFile {
+ uint64 project_id = 1;
+ string path = 2;
+ repeated Breakpoint breakpoints = 3;
+}
+
+message ToggleBreakpoint {
+ uint64 project_id = 1;
+ string path = 2;
+ Breakpoint breakpoint = 3;
+}
+
+enum DebuggerThreadItem {
+ Console = 0;
+ LoadedSource = 1;
+ Modules = 2;
+ Variables = 3;
+}
+
+message DebuggerSetVariableState {
+ string name = 1;
+ DapScope scope = 2;
+ string value = 3;
+ uint64 stack_frame_id = 4;
+ optional string evaluate_name = 5;
+ uint64 parent_variables_reference = 6;
+}
+
+message VariableListOpenEntry {
+ oneof entry {
+ DebuggerOpenEntryScope scope = 1;
+ DebuggerOpenEntryVariable variable = 2;
+ }
+}
+
+message DebuggerOpenEntryScope {
+ string name = 1;
+}
+
+message DebuggerOpenEntryVariable {
+ string scope_name = 1;
+ string name = 2;
+ uint64 depth = 3;
+}
+
+message VariableListEntrySetState {
+ uint64 depth = 1;
+ DebuggerSetVariableState state = 2;
+}
+
+message VariableListEntryVariable {
+ uint64 depth = 1;
+ DapScope scope = 2;
+ DapVariable variable = 3;
+ bool has_children = 4;
+ uint64 container_reference = 5;
+}
+
+message DebuggerScopeVariableIndex {
+ repeated uint64 fetched_ids = 1;
+ repeated DebuggerVariableContainer variables = 2;
+}
+
+message DebuggerVariableContainer {
+ uint64 container_reference = 1;
+ DapVariable variable = 2;
+ uint64 depth = 3;
+}
+
+enum DapThreadStatus {
+ Running = 0;
+ Stopped = 1;
+ Exited = 2;
+ Ended = 3;
+}
+
+message VariableListScopes {
+ uint64 stack_frame_id = 1;
+ repeated DapScope scopes = 2;
+}
+
+message VariableListVariables {
+ uint64 stack_frame_id = 1;
+ uint64 scope_id = 2;
+ DebuggerScopeVariableIndex variables = 3;
+}
+
+
+enum VariablesArgumentsFilter {
+ Indexed = 0;
+ Named = 1;
+}
+
+message ValueFormat {
+ optional bool hex = 1;
+}
+
+message VariablesRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ uint64 variables_reference = 3;
+ optional VariablesArgumentsFilter filter = 4;
+ optional uint64 start = 5;
+ optional uint64 count = 6;
+ optional ValueFormat format = 7;
+}
+
+enum SteppingGranularity {
+ Statement = 0;
+ Line = 1;
+ Instruction = 2;
+}
+
+message DapLocationsRequest {
+ uint64 project_id = 1;
+ uint64 session_id = 2;
+ uint64 location_reference = 3;
+}
+
+message DapLocationsResponse {
+ DapSource source = 1;
+ uint64 line = 2;
+ optional uint64 column = 3;
+ optional uint64 end_line = 4;
+ optional uint64 end_column = 5;
+}
+
+enum DapEvaluateContext {
+ Repl = 0;
+ Watch = 1;
+ Hover = 2;
+ Clipboard = 3;
+ EvaluateVariables = 4;
+ EvaluateUnknown = 5;
+}
+
+message DapEvaluateRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ string expression = 3;
+ optional uint64 frame_id = 4;
+ optional DapEvaluateContext context = 5;
+}
+
+message DapEvaluateResponse {
+ string result = 1;
+ optional string evaluate_type = 2;
+ uint64 variable_reference = 3;
+ optional uint64 named_variables = 4;
+ optional uint64 indexed_variables = 5;
+ optional string memory_reference = 6;
+}
+
+
+message DapCompletionRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ string query = 3;
+ optional uint64 frame_id = 4;
+ optional uint64 line = 5;
+ uint64 column = 6;
+}
+
+enum DapCompletionItemType {
+ Method = 0;
+ Function = 1;
+ Constructor = 2;
+ Field = 3;
+ Variable = 4;
+ Class = 5;
+ Interface = 6;
+ Module = 7;
+ Property = 8;
+ Unit = 9;
+ Value = 10;
+ Enum = 11;
+ Keyword = 12;
+ Snippet = 13;
+ Text = 14;
+ Color = 15;
+ CompletionItemFile = 16;
+ Reference = 17;
+ Customcolor = 19;
+}
+
+message DapCompletionItem {
+ string label = 1;
+ optional string text = 2;
+ optional string sort_text = 3;
+ optional string detail = 4;
+ optional DapCompletionItemType typ = 5;
+ optional uint64 start = 6;
+ optional uint64 length = 7;
+ optional uint64 selection_start = 8;
+ optional uint64 selection_length = 9;
+}
+
+message DapCompletionResponse {
+ uint64 client_id = 1;
+ repeated DapCompletionItem completions = 2;
+}
+
+message DapScopesRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ uint64 stack_frame_id = 3;
+}
+
+message DapScopesResponse {
+ repeated DapScope scopes = 1;
+}
+
+message DapSetVariableValueRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ string name = 3;
+ string value = 4;
+ uint64 variables_reference = 5;
+}
+
+message DapSetVariableValueResponse {
+ uint64 client_id = 1;
+ string value = 2;
+ optional string variable_type = 3;
+ optional uint64 variables_reference = 4;
+ optional uint64 named_variables = 5;
+ optional uint64 indexed_variables = 6;
+ optional string memory_reference = 7;
+}
+
+message DapPauseRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ uint64 thread_id = 3;
+}
+
+message DapDisconnectRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ optional bool restart = 3;
+ optional bool terminate_debuggee = 4;
+ optional bool suspend_debuggee = 5;
+}
+
+message DapTerminateThreadsRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ repeated uint64 thread_ids = 3;
+}
+
+message DapThreadsRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+}
+
+message DapThreadsResponse {
+ repeated DapThread threads = 1;
+}
+
+message DapTerminateRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ optional bool restart = 3;
+}
+
+message DapRestartRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ bytes raw_args = 3;
+}
+
+message DapRestartStackFrameRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ uint64 stack_frame_id = 3;
+}
+
+message ToggleIgnoreBreakpoints {
+ uint64 project_id = 1;
+ uint32 session_id = 2;
+}
+
+message IgnoreBreakpointState {
+ uint64 project_id = 1;
+ uint64 session_id = 2;
+ bool ignore = 3;
+}
+
+message DapNextRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ uint64 thread_id = 3;
+ optional bool single_thread = 4;
+ optional SteppingGranularity granularity = 5;
+}
+
+message DapStepInRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ uint64 thread_id = 3;
+ optional uint64 target_id = 4;
+ optional bool single_thread = 5;
+ optional SteppingGranularity granularity = 6;
+}
+
+message DapStepOutRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ uint64 thread_id = 3;
+ optional bool single_thread = 4;
+ optional SteppingGranularity granularity = 5;
+}
+
+message DapStepBackRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ uint64 thread_id = 3;
+ optional bool single_thread = 4;
+ optional SteppingGranularity granularity = 5;
+}
+
+message DapContinueRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ uint64 thread_id = 3;
+ optional bool single_thread = 4;
+}
+
+message DapContinueResponse {
+ uint64 client_id = 1;
+ optional bool all_threads_continued = 2;
+}
+
+message DapModulesRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+}
+
+message DapModulesResponse {
+ uint64 client_id = 1;
+ repeated DapModule modules = 2;
+}
+
+message DapLoadedSourcesRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+}
+
+message DapLoadedSourcesResponse {
+ uint64 client_id = 1;
+ repeated DapSource sources = 2;
+}
+
+message DapStackTraceRequest {
+ uint64 project_id = 1;
+ uint64 client_id = 2;
+ uint64 thread_id = 3;
+ optional uint64 start_frame = 4;
+ optional uint64 stack_trace_levels = 5;
+}
+
+message DapStackTraceResponse {
+ repeated DapStackFrame frames = 1;
+}
+
+message DapStackFrame {
+ uint64 id = 1;
+ string name = 2;
+ optional DapSource source = 3;
+ uint64 line = 4;
+ uint64 column = 5;
+ optional uint64 end_line = 6;
+ optional uint64 end_column = 7;
+ optional bool can_restart = 8;
+ optional string instruction_pointer_reference = 9;
+ optional DapModuleId module_id = 10;
+ optional DapStackPresentationHint presentation_hint = 11;
+}
+
+message DebuggerLoadedSourceList {
+ uint64 client_id = 1;
+ repeated DapSource sources = 2;
+}
+
+message DapVariables {
+ uint64 client_id = 1;
+ repeated DapVariable variables = 2;
+}
+
+// Remote Debugging: Dap Types
+message DapVariable {
+ string name = 1;
+ string value = 2;
+ optional string type = 3;
+ // optional DapVariablePresentationHint presentation_hint = 4;
+ optional string evaluate_name = 5;
+ uint64 variables_reference = 6;
+ optional uint64 named_variables = 7;
+ optional uint64 indexed_variables = 8;
+ optional string memory_reference = 9;
+}
+
+message DapThread {
+ uint64 id = 1;
+ string name = 2;
+}
+
+message DapScope {
+ string name = 1;
+ optional DapScopePresentationHint presentation_hint = 2;
+ uint64 variables_reference = 3;
+ optional uint64 named_variables = 4;
+ optional uint64 indexed_variables = 5;
+ bool expensive = 6;
+ optional DapSource source = 7;
+ optional uint64 line = 8;
+ optional uint64 column = 9;
+ optional uint64 end_line = 10;
+ optional uint64 end_column = 11;
+}
+
+message DapSource {
+ optional string name = 1;
+ optional string path = 2;
+ optional uint64 source_reference = 3;
+ optional DapSourcePresentationHint presentation_hint = 4;
+ optional string origin = 5;
+ repeated DapSource sources = 6;
+ optional bytes adapter_data = 7;
+ repeated DapChecksum checksums = 8;
+}
+
+enum DapOutputCategory {
+ ConsoleOutput = 0;
+ Important = 1;
+ Stdout = 2;
+ Stderr = 3;
+ Unknown = 4;
+}
+
+enum DapOutputEventGroup {
+ Start = 0;
+ StartCollapsed = 1;
+ End = 2;
+}
+
+message DapOutputEvent {
+ string output = 1;
+ optional DapOutputCategory category = 2;
+ optional uint64 variables_reference = 3;
+ optional DapOutputEventGroup group = 4;
+ optional DapSource source = 5;
+ optional uint32 line = 6;
+ optional uint32 column = 7;
+}
+
+enum DapChecksumAlgorithm {
+ CHECKSUM_ALGORITHM_UNSPECIFIED = 0;
+ MD5 = 1;
+ SHA1 = 2;
+ SHA256 = 3;
+ TIMESTAMP = 4;
+}
+
+message DapChecksum {
+ DapChecksumAlgorithm algorithm = 1;
+ string checksum = 2;
+}
+
+enum DapScopePresentationHint {
+ Arguments = 0;
+ Locals = 1;
+ Registers = 2;
+ ReturnValue = 3;
+ ScopeUnknown = 4;
+}
+
+enum DapSourcePresentationHint {
+ SourceNormal = 0;
+ Emphasize = 1;
+ Deemphasize = 2;
+ SourceUnknown = 3;
+}
+
+enum DapStackPresentationHint {
+ StackNormal = 0;
+ Label = 1;
+ Subtle = 2;
+ StackUnknown = 3;
+}
+
+message DapModule {
+ DapModuleId id = 1;
+ string name = 2;
+ optional string path = 3;
+ optional bool is_optimized = 4;
+ optional bool is_user_code = 5;
+ optional string version = 6;
+ optional string symbol_status = 7;
+ optional string symbol_file_path = 8;
+ optional string date_time_stamp = 9;
+ optional string address_range = 10;
+}
+
+message DapModuleId {
+ oneof id {
+ uint32 number = 1;
+ string string = 2;
+ }
+}
@@ -0,0 +1,404 @@
+syntax = "proto3";
+package zed.messages;
+
+import "worktree.proto";
+import "buffer.proto";
+
+message GitBranchesResponse {
+ repeated Branch branches = 1;
+}
+
+message UpdateDiffBases {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+
+ enum Mode {
+ // No collaborator is using the unstaged diff.
+ HEAD_ONLY = 0;
+ // No collaborator is using the diff from HEAD.
+ INDEX_ONLY = 1;
+ // Both the unstaged and uncommitted diffs are demanded,
+ // and the contents of the index and HEAD are the same for this path.
+ INDEX_MATCHES_HEAD = 2;
+ // Both the unstaged and uncommitted diffs are demanded,
+ // and the contents of the index and HEAD differ for this path,
+ // where None means the path doesn't exist in that state of the repo.
+ INDEX_AND_HEAD = 3;
+ }
+
+ optional string staged_text = 3;
+ optional string committed_text = 4;
+ Mode mode = 5;
+}
+
+message OpenUnstagedDiff {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+}
+
+message OpenUnstagedDiffResponse {
+ optional string staged_text = 1;
+}
+
+message OpenUncommittedDiff {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+}
+
+message OpenUncommittedDiffResponse {
+ enum Mode {
+ INDEX_MATCHES_HEAD = 0;
+ INDEX_AND_HEAD = 1;
+ }
+ optional string staged_text = 1;
+ optional string committed_text = 2;
+ Mode mode = 3;
+}
+
+message SetIndexText {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ string path = 4;
+ optional string text = 5;
+}
+
+message GetPermalinkToLine {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Range selection = 3;
+}
+
+message GetPermalinkToLineResponse {
+ string permalink = 1;
+}
+
+message Branch {
+ bool is_head = 1;
+ string name = 2;
+ optional uint64 unix_timestamp = 3;
+ optional GitUpstream upstream = 4;
+ optional CommitSummary most_recent_commit = 5;
+}
+
+message GitUpstream {
+ string ref_name = 1;
+ optional UpstreamTracking tracking = 2;
+}
+
+message UpstreamTracking {
+ uint64 ahead = 1;
+ uint64 behind = 2;
+}
+
+message CommitSummary {
+ string sha = 1;
+ string subject = 2;
+ int64 commit_timestamp = 3;
+}
+
+message GitBranches {
+ uint64 project_id = 1;
+ ProjectPath repository = 2;
+}
+
+
+message UpdateGitBranch {
+ uint64 project_id = 1;
+ string branch_name = 2;
+ ProjectPath repository = 3;
+}
+
+message UpdateRepository {
+ uint64 project_id = 1;
+ uint64 id = 2;
+ string abs_path = 3;
+ repeated uint64 entry_ids = 4;
+ optional Branch branch_summary = 5;
+ repeated StatusEntry updated_statuses = 6;
+ repeated string removed_statuses = 7;
+ repeated string current_merge_conflicts = 8;
+ uint64 scan_id = 9;
+ bool is_last_update = 10;
+}
+
+message RemoveRepository {
+ uint64 project_id = 1;
+ uint64 id = 2;
+}
+
+enum GitStatus {
+ Added = 0;
+ Modified = 1;
+ Conflict = 2;
+ Deleted = 3;
+ Updated = 4;
+ TypeChanged = 5;
+ Renamed = 6;
+ Copied = 7;
+ Unmodified = 8;
+}
+
+message GitFileStatus {
+ oneof variant {
+ Untracked untracked = 1;
+ Ignored ignored = 2;
+ Unmerged unmerged = 3;
+ Tracked tracked = 4;
+ }
+
+ message Untracked {}
+ message Ignored {}
+ message Unmerged {
+ GitStatus first_head = 1;
+ GitStatus second_head = 2;
+ }
+ message Tracked {
+ GitStatus index_status = 1;
+ GitStatus worktree_status = 2;
+ }
+}
+
+message GitGetBranches {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+}
+
+message GitCreateBranch {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ string branch_name = 4;
+}
+
+message GitChangeBranch {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ string branch_name = 4;
+}
+
+message GitDiff {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ DiffType diff_type = 4;
+
+ enum DiffType {
+ HEAD_TO_WORKTREE = 0;
+ HEAD_TO_INDEX = 1;
+ }
+}
+
+message GitDiffResponse {
+ string diff = 1;
+}
+
+message GitInit {
+ uint64 project_id = 1;
+ string abs_path = 2;
+ string fallback_branch_name = 3;
+}
+
+message CheckForPushedCommits {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+}
+
+message CheckForPushedCommitsResponse {
+ repeated string pushed_to = 1;
+}
+
+message GitShow {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ string commit = 4;
+}
+
+message GitCommitDetails {
+ string sha = 1;
+ string message = 2;
+ int64 commit_timestamp = 3;
+ string author_email = 4;
+ string author_name = 5;
+}
+
+message LoadCommitDiff {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ string commit = 4;
+}
+
+message LoadCommitDiffResponse {
+ repeated CommitFile files = 1;
+}
+
+message CommitFile {
+ string path = 1;
+ optional string old_text = 2;
+ optional string new_text = 3;
+}
+
+message GitReset {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ string commit = 4;
+ ResetMode mode = 5;
+ enum ResetMode {
+ SOFT = 0;
+ MIXED = 1;
+ }
+}
+
+message GitCheckoutFiles {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ string commit = 4;
+ repeated string paths = 5;
+}
+
+// Move to `git.proto` once collab's min version is >=0.171.0.
+message StatusEntry {
+ string repo_path = 1;
+ // Can be removed once collab's min version is >=0.171.0.
+ GitStatus simple_status = 2;
+ GitFileStatus status = 3;
+}
+
+message Stage {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ repeated string paths = 4;
+}
+
+message Unstage {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ repeated string paths = 4;
+}
+
+message Commit {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ optional string name = 4;
+ optional string email = 5;
+ string message = 6;
+}
+
+message OpenCommitMessageBuffer {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+}
+
+message Push {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ string remote_name = 4;
+ string branch_name = 5;
+ optional PushOptions options = 6;
+ uint64 askpass_id = 7;
+
+ enum PushOptions {
+ SET_UPSTREAM = 0;
+ FORCE = 1;
+ }
+}
+
+message Fetch {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ uint64 askpass_id = 4;
+}
+
+message GetRemotes {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ optional string branch_name = 4;
+}
+
+message GetRemotesResponse {
+ repeated Remote remotes = 1;
+
+ message Remote {
+ string name = 1;
+ }
+}
+
+message Pull {
+ uint64 project_id = 1;
+ reserved 2;
+ uint64 repository_id = 3;
+ string remote_name = 4;
+ string branch_name = 5;
+ uint64 askpass_id = 6;
+}
+
+message RemoteMessageResponse {
+ string stdout = 1;
+ string stderr = 2;
+}
+
+message BlameBuffer {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ repeated VectorClockEntry version = 3;
+}
+
+message BlameEntry {
+ bytes sha = 1;
+
+ uint32 start_line = 2;
+ uint32 end_line = 3;
+ uint32 original_line_number = 4;
+
+ optional string author = 5;
+ optional string author_mail = 6;
+ optional int64 author_time = 7;
+ optional string author_tz = 8;
+
+ optional string committer = 9;
+ optional string committer_mail = 10;
+ optional int64 committer_time = 11;
+ optional string committer_tz = 12;
+
+ optional string summary = 13;
+ optional string previous = 14;
+
+ string filename = 15;
+}
+
+message CommitMessage {
+ bytes oid = 1;
+ string message = 2;
+}
+
+message CommitPermalink {
+ bytes oid = 1;
+ string permalink = 2;
+}
+
+message BlameBufferResponse {
+ message BlameResponse {
+ repeated BlameEntry entries = 1;
+ repeated CommitMessage messages = 2;
+ optional string remote_url = 4;
+ reserved 3;
+ }
+
+ optional BlameResponse blame_response = 5;
+
+ reserved 1 to 4;
+}
@@ -0,0 +1,701 @@
+syntax = "proto3";
+package zed.messages;
+
+import "core.proto";
+import "worktree.proto";
+import "buffer.proto";
+
+message GetDefinition {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 4;
+}
+
+message GetDefinitionResponse {
+ repeated LocationLink links = 1;
+}
+
+message GetDeclaration {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 4;
+}
+
+message GetDeclarationResponse {
+ repeated LocationLink links = 1;
+}
+
+message GetTypeDefinition {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 4;
+ }
+
+message GetTypeDefinitionResponse {
+ repeated LocationLink links = 1;
+}
+message GetImplementation {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 4;
+ }
+
+message GetImplementationResponse {
+ repeated LocationLink links = 1;
+}
+
+message GetReferences {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 4;
+ }
+
+message GetReferencesResponse {
+ repeated Location locations = 1;
+}
+
+message GetDocumentHighlights {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 4;
+ }
+
+message GetDocumentHighlightsResponse {
+ repeated DocumentHighlight highlights = 1;
+}
+
+message LocationLink {
+ optional Location origin = 1;
+ Location target = 2;
+}
+
+message DocumentHighlight {
+ Kind kind = 1;
+ Anchor start = 2;
+ Anchor end = 3;
+
+ enum Kind {
+ Text = 0;
+ Read = 1;
+ Write = 2;
+ }
+}
+
+message GetProjectSymbols {
+ uint64 project_id = 1;
+ string query = 2;
+}
+
+message GetProjectSymbolsResponse {
+ repeated Symbol symbols = 4;
+}
+
+message Symbol {
+ uint64 source_worktree_id = 1;
+ uint64 worktree_id = 2;
+ string language_server_name = 3;
+ string name = 4;
+ int32 kind = 5;
+ string path = 6;
+ // Cannot use generate anchors for unopened files,
+ // so we are forced to use point coords instead
+ PointUtf16 start = 7;
+ PointUtf16 end = 8;
+ bytes signature = 9;
+ uint64 language_server_id = 10;
+}
+
+message GetDocumentSymbols {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ repeated VectorClockEntry version = 3;
+}
+
+message GetDocumentSymbolsResponse {
+ repeated DocumentSymbol symbols = 1;
+}
+
+message DocumentSymbol {
+ string name = 1;
+ int32 kind = 2;
+ // Cannot use generate anchors for unopened files,
+ // so we are forced to use point coords instead
+ PointUtf16 start = 3;
+ PointUtf16 end = 4;
+ PointUtf16 selection_start = 5;
+ PointUtf16 selection_end = 6;
+ repeated DocumentSymbol children = 7;
+}
+
+message InlayHints {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor start = 3;
+ Anchor end = 4;
+ repeated VectorClockEntry version = 5;
+}
+
+message InlayHintsResponse {
+ repeated InlayHint hints = 1;
+ repeated VectorClockEntry version = 2;
+}
+
+message PointUtf16 {
+ uint32 row = 1;
+ uint32 column = 2;
+}
+
+message LspExtExpandMacro {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+}
+
+message LspExtExpandMacroResponse {
+ string name = 1;
+ string expansion = 2;
+}
+
+message LspExtOpenDocs {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+}
+
+message LspExtOpenDocsResponse {
+ optional string web = 1;
+ optional string local = 2;
+}
+
+message LspExtSwitchSourceHeader {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+}
+
+message LspExtSwitchSourceHeaderResponse {
+ string target_file = 1;
+}
+
+message GetCompletionsResponse {
+ repeated Completion completions = 1;
+ repeated VectorClockEntry version = 2;
+}
+
+message ApplyCompletionAdditionalEdits {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Completion completion = 3;
+}
+
+message ApplyCompletionAdditionalEditsResponse {
+ Transaction transaction = 1;
+}
+
+message Completion {
+ Anchor old_start = 1;
+ Anchor old_end = 2;
+ string new_text = 3;
+ uint64 server_id = 4;
+ bytes lsp_completion = 5;
+ bool resolved = 6;
+ Source source = 7;
+ optional bytes lsp_defaults = 8;
+ optional Anchor buffer_word_start = 9;
+ optional Anchor buffer_word_end = 10;
+
+ enum Source {
+ Lsp = 0;
+ Custom = 1;
+ BufferWord = 2;
+ }
+}
+
+message GetCodeActions {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor start = 3;
+ Anchor end = 4;
+ repeated VectorClockEntry version = 5;
+}
+
+message GetCodeActionsResponse {
+ repeated CodeAction actions = 1;
+ repeated VectorClockEntry version = 2;
+}
+
+message GetSignatureHelp {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 4;
+}
+
+message GetSignatureHelpResponse {
+ optional SignatureHelp signature_help = 1;
+}
+
+message SignatureHelp {
+ repeated SignatureInformation signatures = 1;
+ optional uint32 active_signature = 2;
+ optional uint32 active_parameter = 3;
+}
+
+message SignatureInformation {
+ string label = 1;
+ optional Documentation documentation = 2;
+ repeated ParameterInformation parameters = 3;
+ optional uint32 active_parameter = 4;
+}
+
+message Documentation {
+ oneof content {
+ string value = 1;
+ MarkupContent markup_content = 2;
+ }
+}
+
+enum MarkupKind {
+ PlainText = 0;
+ Markdown = 1;
+}
+
+message ParameterInformation {
+ oneof label {
+ string simple = 1;
+ LabelOffsets label_offsets = 2;
+ }
+ optional Documentation documentation = 3;
+}
+
+message LabelOffsets {
+ uint32 start = 1;
+ uint32 end = 2;
+}
+
+message GetHover {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 5;
+}
+
+message GetHoverResponse {
+ optional Anchor start = 1;
+ optional Anchor end = 2;
+ repeated HoverBlock contents = 3;
+}
+
+message HoverBlock {
+ string text = 1;
+ optional string language = 2;
+ bool is_markdown = 3;
+}
+
+message ApplyCodeAction {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ CodeAction action = 3;
+}
+
+message ApplyCodeActionResponse {
+ ProjectTransaction transaction = 1;
+}
+
+message PrepareRename {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 4;
+}
+
+message PrepareRenameResponse {
+ bool can_rename = 1;
+ Anchor start = 2;
+ Anchor end = 3;
+ repeated VectorClockEntry version = 4;
+ bool only_unprepared_rename_supported = 5;
+}
+
+message PerformRename {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ string new_name = 4;
+ repeated VectorClockEntry version = 5;
+}
+
+message OnTypeFormatting {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ string trigger = 4;
+ repeated VectorClockEntry version = 5;
+}
+
+message OnTypeFormattingResponse {
+ Transaction transaction = 1;
+}
+
+
+message LinkedEditingRange {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 4;
+}
+
+message LinkedEditingRangeResponse {
+ repeated AnchorRange items = 1;
+ repeated VectorClockEntry version = 4;
+}
+
+message InlayHint {
+ Anchor position = 1;
+ InlayHintLabel label = 2;
+ optional string kind = 3;
+ bool padding_left = 4;
+ bool padding_right = 5;
+ InlayHintTooltip tooltip = 6;
+ ResolveState resolve_state = 7;
+}
+
+message InlayHintLabel {
+ oneof label {
+ string value = 1;
+ InlayHintLabelParts label_parts = 2;
+ }
+}
+
+message InlayHintLabelParts {
+ repeated InlayHintLabelPart parts = 1;
+}
+
+message InlayHintLabelPart {
+ string value = 1;
+ InlayHintLabelPartTooltip tooltip = 2;
+ optional string location_url = 3;
+ PointUtf16 location_range_start = 4;
+ PointUtf16 location_range_end = 5;
+ optional uint64 language_server_id = 6;
+}
+
+message InlayHintTooltip {
+ oneof content {
+ string value = 1;
+ MarkupContent markup_content = 2;
+ }
+}
+
+message InlayHintLabelPartTooltip {
+ oneof content {
+ string value = 1;
+ MarkupContent markup_content = 2;
+ }
+}
+
+message ResolveState {
+ State state = 1;
+ LspResolveState lsp_resolve_state = 2;
+
+ enum State {
+ Resolved = 0;
+ CanResolve = 1;
+ Resolving = 2;
+ }
+
+ message LspResolveState {
+ optional string value = 1;
+ uint64 server_id = 2;
+ }
+}
+
+// This type is used to resolve more than just
+// the documentation, but for backwards-compatibility
+// reasons we can't rename the type.
+message ResolveCompletionDocumentation {
+ uint64 project_id = 1;
+ uint64 language_server_id = 2;
+ bytes lsp_completion = 3;
+ uint64 buffer_id = 4;
+}
+
+message ResolveCompletionDocumentationResponse {
+ string documentation = 1;
+ bool documentation_is_markdown = 2;
+ Anchor old_start = 3;
+ Anchor old_end = 4;
+ string new_text = 5;
+ bytes lsp_completion = 6;
+}
+
+message ResolveInlayHint {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ uint64 language_server_id = 3;
+ InlayHint hint = 4;
+}
+
+message ResolveInlayHintResponse {
+ InlayHint hint = 1;
+}
+
+message RefreshInlayHints {
+ uint64 project_id = 1;
+}
+
+message CodeLens {
+ bytes lsp_lens = 1;
+}
+
+message GetCodeLens {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ repeated VectorClockEntry version = 3;
+}
+
+message GetCodeLensResponse {
+ repeated CodeAction lens_actions = 1;
+ repeated VectorClockEntry version = 2;
+}
+
+message RefreshCodeLens {
+ uint64 project_id = 1;
+}
+
+message MarkupContent {
+ bool is_markdown = 1;
+ string value = 2;
+}
+
+message PerformRenameResponse {
+ ProjectTransaction transaction = 2;
+}
+
+message CodeAction {
+ uint64 server_id = 1;
+ Anchor start = 2;
+ Anchor end = 3;
+ bytes lsp_action = 4;
+ Kind kind = 5;
+ bool resolved = 6;
+ enum Kind {
+ Action = 0;
+ Command = 1;
+ CodeLens = 2;
+ }
+}
+
+message LanguageServer {
+ uint64 id = 1;
+ string name = 2;
+ optional uint64 worktree_id = 3;
+}
+
+message StartLanguageServer {
+ uint64 project_id = 1;
+ LanguageServer server = 2;
+}
+
+message UpdateDiagnosticSummary {
+ uint64 project_id = 1;
+ uint64 worktree_id = 2;
+ DiagnosticSummary summary = 3;
+}
+
+message DiagnosticSummary {
+ string path = 1;
+ uint64 language_server_id = 2;
+ uint32 error_count = 3;
+ uint32 warning_count = 4;
+}
+
+message UpdateLanguageServer {
+ uint64 project_id = 1;
+ uint64 language_server_id = 2;
+ oneof variant {
+ LspWorkStart work_start = 3;
+ LspWorkProgress work_progress = 4;
+ LspWorkEnd work_end = 5;
+ LspDiskBasedDiagnosticsUpdating disk_based_diagnostics_updating = 6;
+ LspDiskBasedDiagnosticsUpdated disk_based_diagnostics_updated = 7;
+ }
+}
+
+message LspWorkStart {
+ string token = 1;
+ optional string title = 4;
+ optional string message = 2;
+ optional uint32 percentage = 3;
+ optional bool is_cancellable = 5;
+}
+
+message LspWorkProgress {
+ string token = 1;
+ optional string message = 2;
+ optional uint32 percentage = 3;
+ optional bool is_cancellable = 4;
+}
+
+message LspWorkEnd {
+ string token = 1;
+}
+
+message LspDiskBasedDiagnosticsUpdating {}
+
+message LspDiskBasedDiagnosticsUpdated {}
+
+message LanguageServerLog {
+ uint64 project_id = 1;
+ uint64 language_server_id = 2;
+ oneof log_type {
+ uint32 log_message_type = 3;
+ LspLogTrace log_trace = 4;
+ }
+ string message = 5;
+}
+
+message LspLogTrace {
+ optional string message = 1;
+}
+
+message ApplyCodeActionKind {
+ uint64 project_id = 1;
+ string kind = 2;
+ repeated uint64 buffer_ids = 3;
+}
+
+message ApplyCodeActionKindResponse {
+ ProjectTransaction transaction = 1;
+}
+
+message RegisterBufferWithLanguageServers {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+}
+
+enum FormatTrigger {
+ Save = 0;
+ Manual = 1;
+}
+
+message OpenBufferForSymbol {
+ uint64 project_id = 1;
+ Symbol symbol = 2;
+}
+
+message OpenBufferForSymbolResponse {
+ uint64 buffer_id = 1;
+}
+
+message FormatBuffers {
+ uint64 project_id = 1;
+ FormatTrigger trigger = 2;
+ repeated uint64 buffer_ids = 3;
+}
+
+message FormatBuffersResponse {
+ ProjectTransaction transaction = 1;
+}
+
+message GetCompletions {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ Anchor position = 3;
+ repeated VectorClockEntry version = 4;
+}
+
+message CancelLanguageServerWork {
+ uint64 project_id = 1;
+
+ oneof work {
+ Buffers buffers = 2;
+ LanguageServerWork language_server_work = 3;
+ }
+
+ message Buffers {
+ repeated uint64 buffer_ids = 2;
+ }
+
+ message LanguageServerWork {
+ uint64 language_server_id = 1;
+ optional string token = 2;
+ }
+}
+
+message LanguageServerPromptRequest {
+ uint64 project_id = 1;
+
+ oneof level {
+ Info info = 2;
+ Warning warning = 3;
+ Critical critical = 4;
+ }
+
+ message Info {}
+ message Warning {}
+ message Critical {}
+
+ string message = 5;
+ repeated string actions = 6;
+ string lsp_name = 7;
+}
+
+message LanguageServerPromptResponse {
+ optional uint64 action_response = 1;
+}
+
+message MultiLspQuery {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ repeated VectorClockEntry version = 3;
+ oneof strategy {
+ AllLanguageServers all = 4;
+ }
+ oneof request {
+ GetHover get_hover = 5;
+ GetCodeActions get_code_actions = 6;
+ GetSignatureHelp get_signature_help = 7;
+ GetCodeLens get_code_lens = 8;
+ }
+}
+
+message AllLanguageServers {}
+
+message RestartLanguageServers {
+ uint64 project_id = 1;
+ repeated uint64 buffer_ids = 2;
+}
+
+message StopLanguageServers {
+ uint64 project_id = 1;
+ repeated uint64 buffer_ids = 2;
+}
+
+message MultiLspQueryResponse {
+ repeated LspResponse responses = 1;
+}
+
+message LspResponse {
+ oneof response {
+ GetHoverResponse get_hover_response = 1;
+ GetCodeActionsResponse get_code_actions_response = 2;
+ GetSignatureHelpResponse get_signature_help_response = 3;
+ GetCodeLensResponse get_code_lens_response = 4;
+ }
+}
+
+message LanguageServerIdForName {
+ uint64 project_id = 1;
+ uint64 buffer_id = 2;
+ string name = 3;
+}
+
+message LanguageServerIdForNameResponse {
+ optional uint64 server_id = 1;
+}
@@ -0,0 +1,37 @@
+syntax = "proto3";
+package zed.messages;
+
+message GetNotifications {
+ optional uint64 before_id = 1;
+}
+
+message AddNotification {
+ Notification notification = 1;
+}
+
+message GetNotificationsResponse {
+ repeated Notification notifications = 1;
+ bool done = 2;
+}
+
+message DeleteNotification {
+ uint64 notification_id = 1;
+}
+
+message UpdateNotification {
+ Notification notification = 1;
+}
+
+message MarkNotificationRead {
+ uint64 notification_id = 1;
+}
+
+message Notification {
+ uint64 id = 1;
+ uint64 timestamp = 2;
+ string kind = 3;
+ optional uint64 entity_id = 4;
+ string content = 5;
+ bool is_read = 6;
+ optional bool response = 7;
+}
@@ -0,0 +1,42 @@
+syntax = "proto3";
+package zed.messages;
+
+import "buffer.proto";
+
+message TaskContextForLocation {
+ uint64 project_id = 1;
+ Location location = 2;
+ map<string, string> task_variables = 3;
+}
+
+message TaskContext {
+ optional string cwd = 1;
+ map<string, string> task_variables = 2;
+ map<string, string> project_env = 3;
+}
+
+message Shell {
+ message WithArguments {
+ string program = 1;
+ repeated string args = 2;
+ }
+
+ oneof shell_type {
+ System system = 1;
+ string program = 2;
+ WithArguments with_arguments = 3;
+ }
+}
+
+message System {}
+
+enum RevealStrategy {
+ RevealAlways = 0;
+ RevealNever = 1;
+}
+
+enum HideStrategy {
+ HideAlways = 0;
+ HideNever = 1;
+ HideOnSuccess = 2;
+}
@@ -0,0 +1,45 @@
+syntax = "proto3";
+package zed.messages;
+
+message ListToolchains {
+ uint64 project_id = 1;
+ uint64 worktree_id = 2;
+ string language_name = 3;
+ optional string path = 4;
+}
+
+message Toolchain {
+ string name = 1;
+ string path = 2;
+ string raw_json = 3;
+}
+
+message ToolchainGroup {
+ uint64 start_index = 1;
+ string name = 2;
+}
+
+message ListToolchainsResponse {
+ repeated Toolchain toolchains = 1;
+ bool has_values = 2;
+ repeated ToolchainGroup groups = 3;
+}
+
+message ActivateToolchain {
+ uint64 project_id = 1;
+ uint64 worktree_id = 2;
+ Toolchain toolchain = 3;
+ string language_name = 4;
+ optional string path = 5;
+}
+
+message ActiveToolchain {
+ uint64 project_id = 1;
+ uint64 worktree_id = 2;
+ string language_name = 3;
+ optional string path = 4;
+}
+
+message ActiveToolchainResponse {
+ optional Toolchain toolchain = 1;
+}
@@ -0,0 +1,150 @@
+syntax = "proto3";
+package zed.messages;
+
+message Timestamp {
+ uint64 seconds = 1;
+ uint32 nanos = 2;
+}
+
+message File {
+ uint64 worktree_id = 1;
+ optional uint64 entry_id = 2;
+ string path = 3;
+ Timestamp mtime = 4;
+ bool is_deleted = 5;
+}
+
+message Entry {
+ uint64 id = 1;
+ bool is_dir = 2;
+ string path = 3;
+ uint64 inode = 4;
+ Timestamp mtime = 5;
+ bool is_ignored = 7;
+ bool is_external = 8;
+ reserved 6;
+ reserved 9;
+ bool is_fifo = 10;
+ optional uint64 size = 11;
+ optional string canonical_path = 12;
+}
+
+message AddWorktree {
+ string path = 1;
+ uint64 project_id = 2;
+ bool visible = 3;
+}
+
+message AddWorktreeResponse {
+ uint64 worktree_id = 1;
+ string canonicalized_path = 2;
+}
+
+message RemoveWorktree {
+ uint64 worktree_id = 1;
+}
+
+message GetPathMetadata {
+ uint64 project_id = 1;
+ string path = 2;
+}
+
+message GetPathMetadataResponse {
+ bool exists = 1;
+ string path = 2;
+ bool is_dir = 3;
+}
+
+message WorktreeMetadata {
+ uint64 id = 1;
+ string root_name = 2;
+ bool visible = 3;
+ string abs_path = 4;
+}
+
+message ProjectPath {
+ uint64 worktree_id = 1;
+ string path = 2;
+}
+
+message ListRemoteDirectoryConfig {
+ bool is_dir = 1;
+}
+
+message ListRemoteDirectory {
+ uint64 dev_server_id = 1;
+ string path = 2;
+ ListRemoteDirectoryConfig config = 3;
+}
+
+message EntryInfo {
+ bool is_dir = 1;
+}
+
+message ListRemoteDirectoryResponse {
+ repeated string entries = 1;
+ repeated EntryInfo entry_info = 2;
+}
+
+message CreateProjectEntry {
+ uint64 project_id = 1;
+ uint64 worktree_id = 2;
+ string path = 3;
+ bool is_directory = 4;
+}
+
+message RenameProjectEntry {
+ uint64 project_id = 1;
+ uint64 entry_id = 2;
+ string new_path = 3;
+}
+
+message CopyProjectEntry {
+ uint64 project_id = 1;
+ uint64 entry_id = 2;
+ string new_path = 3;
+ optional string relative_worktree_source_path = 4;
+}
+
+message DeleteProjectEntry {
+ uint64 project_id = 1;
+ uint64 entry_id = 2;
+ bool use_trash = 3;
+}
+
+message ExpandProjectEntry {
+ uint64 project_id = 1;
+ uint64 entry_id = 2;
+}
+
+message ExpandProjectEntryResponse {
+ uint64 worktree_scan_id = 1;
+}
+
+message ExpandAllForProjectEntry {
+ uint64 project_id = 1;
+ uint64 entry_id = 2;
+}
+
+message ExpandAllForProjectEntryResponse {
+ uint64 worktree_scan_id = 1;
+}
+
+message ProjectEntryResponse {
+ optional Entry entry = 1;
+ uint64 worktree_scan_id = 2;
+}
+
+message UpdateWorktreeSettings {
+ uint64 project_id = 1;
+ uint64 worktree_id = 2;
+ string path = 3;
+ optional string content = 4;
+ optional LocalSettingsKind kind = 5;
+}
+
+enum LocalSettingsKind {
+ Settings = 0;
+ Tasks = 1;
+ Editorconfig = 2;
+}
@@ -1,12 +1,21 @@
syntax = "proto3";
package zed.messages;
-// Looking for a number? Search "// current max"
+import "ai.proto";
+import "app.proto";
+import "buffer.proto";
+import "call.proto";
+import "channel.proto";
+import "core.proto";
+import "debugger.proto";
+import "git.proto";
+import "lsp.proto";
+import "notification.proto";
+import "task.proto";
+import "toolchain.proto";
+import "worktree.proto";
-message PeerId {
- uint32 owner_id = 1;
- uint32 id = 2;
-}
+// Looking for a number? Search "// current max"
message Envelope {
uint32 id = 1;
@@ -323,7 +332,6 @@ message Envelope {
GitCommitDetails git_commit_details = 302;
GitCheckoutFiles git_checkout_files = 303;
-
Push push = 304;
Fetch fetch = 305;
GetRemotes get_remotes = 306;
@@ -390,8 +398,6 @@ message Envelope {
reserved 255 to 256;
}
-// Messages
-
message Hello {
PeerId peer_id = 1;
}
@@ -434,3182 +440,6 @@ message Test {
uint64 id = 1;
}
-message CreateRoom {}
-
-message CreateRoomResponse {
- Room room = 1;
- optional LiveKitConnectionInfo live_kit_connection_info = 2;
-}
-
-message JoinRoom {
- uint64 id = 1;
-}
-
-message JoinRoomResponse {
- Room room = 1;
- optional uint64 channel_id = 2;
- optional LiveKitConnectionInfo live_kit_connection_info = 3;
-}
-
-message RejoinRoom {
- uint64 id = 1;
- repeated UpdateProject reshared_projects = 2;
- repeated RejoinProject rejoined_projects = 3;
-}
-message RejoinRemoteProjects {
- repeated RejoinProject rejoined_projects = 1;
-}
-
-message RejoinRemoteProjectsResponse {
- repeated RejoinedProject rejoined_projects = 1;
-}
-
-message RejoinProject {
- uint64 id = 1;
- repeated RejoinWorktree worktrees = 2;
- repeated RejoinRepository repositories = 3;
-}
-
-message RejoinWorktree {
- uint64 id = 1;
- uint64 scan_id = 2;
-}
-
-message RejoinRepository {
- uint64 id = 1;
- uint64 scan_id = 2;
-}
-
-message RejoinRoomResponse {
- Room room = 1;
- repeated ResharedProject reshared_projects = 2;
- repeated RejoinedProject rejoined_projects = 3;
-}
-
-message ResharedProject {
- uint64 id = 1;
- repeated Collaborator collaborators = 2;
-}
-
-message RejoinedProject {
- uint64 id = 1;
- repeated WorktreeMetadata worktrees = 2;
- repeated Collaborator collaborators = 3;
- repeated LanguageServer language_servers = 4;
-}
-
-message LeaveRoom {}
-
-message Room {
- uint64 id = 1;
- repeated Participant participants = 2;
- repeated PendingParticipant pending_participants = 3;
- repeated Follower followers = 4;
- string livekit_room = 5;
-}
-
-message Participant {
- uint64 user_id = 1;
- PeerId peer_id = 2;
- repeated ParticipantProject projects = 3;
- ParticipantLocation location = 4;
- uint32 participant_index = 5;
- ChannelRole role = 6;
- reserved 7;
-}
-
-message PendingParticipant {
- uint64 user_id = 1;
- uint64 calling_user_id = 2;
- optional uint64 initial_project_id = 3;
-}
-
-message ParticipantProject {
- uint64 id = 1;
- repeated string worktree_root_names = 2;
-}
-
-message Follower {
- PeerId leader_id = 1;
- PeerId follower_id = 2;
- uint64 project_id = 3;
-}
-
-message ParticipantLocation {
- oneof variant {
- SharedProject shared_project = 1;
- UnsharedProject unshared_project = 2;
- External external = 3;
- }
-
- message SharedProject {
- uint64 id = 1;
- }
-
- message UnsharedProject {}
-
- message External {}
-}
-
-message Call {
- uint64 room_id = 1;
- uint64 called_user_id = 2;
- optional uint64 initial_project_id = 3;
-}
-
-message IncomingCall {
- uint64 room_id = 1;
- uint64 calling_user_id = 2;
- repeated uint64 participant_user_ids = 3;
- optional ParticipantProject initial_project = 4;
-}
-
-message CallCanceled {
- uint64 room_id = 1;
-}
-
-message CancelCall {
- uint64 room_id = 1;
- uint64 called_user_id = 2;
-}
-
-message DeclineCall {
- uint64 room_id = 1;
-}
-
-message UpdateParticipantLocation {
- uint64 room_id = 1;
- ParticipantLocation location = 2;
-}
-
-message RoomUpdated {
- Room room = 1;
-}
-
-message LiveKitConnectionInfo {
- string server_url = 1;
- string token = 2;
- bool can_publish = 3;
-}
-
-message ShareProject {
- uint64 room_id = 1;
- repeated WorktreeMetadata worktrees = 2;
- reserved 3;
- bool is_ssh_project = 4;
-}
-
-message ShareProjectResponse {
- uint64 project_id = 1;
-}
-
-message UnshareProject {
- uint64 project_id = 1;
-}
-
-message UpdateProject {
- uint64 project_id = 1;
- repeated WorktreeMetadata worktrees = 2;
-}
-
-message JoinProject {
- uint64 project_id = 1;
-}
-
-message ListRemoteDirectoryConfig {
- bool is_dir = 1;
-}
-
-message ListRemoteDirectory {
- uint64 dev_server_id = 1;
- string path = 2;
- ListRemoteDirectoryConfig config = 3;
-}
-
-message EntryInfo {
- bool is_dir = 1;
-}
-
-message ListRemoteDirectoryResponse {
- repeated string entries = 1;
- repeated EntryInfo entry_info = 2;
-}
-
-message JoinProjectResponse {
- uint64 project_id = 5;
- uint32 replica_id = 1;
- repeated WorktreeMetadata worktrees = 2;
- repeated Collaborator collaborators = 3;
- repeated LanguageServer language_servers = 4;
- ChannelRole role = 6;
- reserved 7;
-}
-
-message LeaveProject {
- uint64 project_id = 1;
-}
-
-message UpdateWorktree {
- uint64 project_id = 1;
- uint64 worktree_id = 2;
- string root_name = 3;
- repeated Entry updated_entries = 4;
- repeated uint64 removed_entries = 5;
- repeated RepositoryEntry updated_repositories = 6; // deprecated
- repeated uint64 removed_repositories = 7; // deprecated
- uint64 scan_id = 8;
- bool is_last_update = 9;
- string abs_path = 10;
-}
-
-message UpdateWorktreeSettings {
- uint64 project_id = 1;
- uint64 worktree_id = 2;
- string path = 3;
- optional string content = 4;
- optional LocalSettingsKind kind = 5;
-}
-
-enum LocalSettingsKind {
- Settings = 0;
- Tasks = 1;
- Editorconfig = 2;
-}
-
-message CreateProjectEntry {
- uint64 project_id = 1;
- uint64 worktree_id = 2;
- string path = 3;
- bool is_directory = 4;
-}
-
-message RenameProjectEntry {
- uint64 project_id = 1;
- uint64 entry_id = 2;
- string new_path = 3;
-}
-
-message CopyProjectEntry {
- uint64 project_id = 1;
- uint64 entry_id = 2;
- string new_path = 3;
- optional string relative_worktree_source_path = 4;
-}
-
-message DeleteProjectEntry {
- uint64 project_id = 1;
- uint64 entry_id = 2;
- bool use_trash = 3;
-}
-
-message ExpandProjectEntry {
- uint64 project_id = 1;
- uint64 entry_id = 2;
-}
-
-message ExpandProjectEntryResponse {
- uint64 worktree_scan_id = 1;
-}
-
-message ExpandAllForProjectEntry {
- uint64 project_id = 1;
- uint64 entry_id = 2;
-}
-
-message ExpandAllForProjectEntryResponse {
- uint64 worktree_scan_id = 1;
-}
-
-message ProjectEntryResponse {
- optional Entry entry = 1;
- uint64 worktree_scan_id = 2;
-}
-
-message AddProjectCollaborator {
- uint64 project_id = 1;
- Collaborator collaborator = 2;
-}
-
-message UpdateProjectCollaborator {
- uint64 project_id = 1;
- PeerId old_peer_id = 2;
- PeerId new_peer_id = 3;
-}
-
-message RemoveProjectCollaborator {
- uint64 project_id = 1;
- PeerId peer_id = 2;
-}
-
-message UpdateChannelBufferCollaborators {
- uint64 channel_id = 1;
- repeated Collaborator collaborators = 2;
-}
-
-message GetDefinition {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 4;
-}
-
-message GetDefinitionResponse {
- repeated LocationLink links = 1;
-}
-
-message GetDeclaration {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 4;
-}
-
-message GetDeclarationResponse {
- repeated LocationLink links = 1;
-}
-
-message GetTypeDefinition {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 4;
- }
-
-message GetTypeDefinitionResponse {
- repeated LocationLink links = 1;
-}
-message GetImplementation {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 4;
- }
-
-message GetImplementationResponse {
- repeated LocationLink links = 1;
-}
-
-message GetReferences {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 4;
- }
-
-message GetReferencesResponse {
- repeated Location locations = 1;
-}
-
-message GetDocumentHighlights {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 4;
- }
-
-message GetDocumentHighlightsResponse {
- repeated DocumentHighlight highlights = 1;
-}
-
-message Location {
- uint64 buffer_id = 1;
- Anchor start = 2;
- Anchor end = 3;
-}
-
-message LocationLink {
- optional Location origin = 1;
- Location target = 2;
-}
-
-message DocumentHighlight {
- Kind kind = 1;
- Anchor start = 2;
- Anchor end = 3;
-
- enum Kind {
- Text = 0;
- Read = 1;
- Write = 2;
- }
-}
-
-message GetProjectSymbols {
- uint64 project_id = 1;
- string query = 2;
-}
-
-message GetProjectSymbolsResponse {
- repeated Symbol symbols = 4;
-}
-
-message Symbol {
- uint64 source_worktree_id = 1;
- uint64 worktree_id = 2;
- string language_server_name = 3;
- string name = 4;
- int32 kind = 5;
- string path = 6;
- // Cannot use generate anchors for unopened files,
- // so we are forced to use point coords instead
- PointUtf16 start = 7;
- PointUtf16 end = 8;
- bytes signature = 9;
- uint64 language_server_id = 10;
-}
-
-message GetDocumentSymbols {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- repeated VectorClockEntry version = 3;
-}
-
-message GetDocumentSymbolsResponse {
- repeated DocumentSymbol symbols = 1;
-}
-
-message DocumentSymbol {
- string name = 1;
- int32 kind = 2;
- // Cannot use generate anchors for unopened files,
- // so we are forced to use point coords instead
- PointUtf16 start = 3;
- PointUtf16 end = 4;
- PointUtf16 selection_start = 5;
- PointUtf16 selection_end = 6;
- repeated DocumentSymbol children = 7;
-}
-
-message OpenBufferForSymbol {
- uint64 project_id = 1;
- Symbol symbol = 2;
-}
-
-message OpenBufferForSymbolResponse {
- uint64 buffer_id = 1;
-}
-
-message OpenBufferByPath {
- uint64 project_id = 1;
- uint64 worktree_id = 2;
- string path = 3;
-}
-
-message OpenBufferById {
- uint64 project_id = 1;
- uint64 id = 2;
-}
-
-message OpenNewBuffer {
- uint64 project_id = 1;
-}
-
-message OpenBufferResponse {
- uint64 buffer_id = 1;
-}
-
-message CreateBufferForPeer {
- uint64 project_id = 1;
- PeerId peer_id = 2;
- oneof variant {
- BufferState state = 3;
- BufferChunk chunk = 4;
- }
-}
-
-message UpdateBuffer {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- repeated Operation operations = 3;
-}
-
-message UpdateChannelBuffer {
- uint64 channel_id = 1;
- repeated Operation operations = 2;
-}
-
-message UpdateBufferFile {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- File file = 3;
-}
-
-message SaveBuffer {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- repeated VectorClockEntry version = 3;
- optional ProjectPath new_path = 4;
-}
-
-message CloseBuffer {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
-}
-
-message ProjectPath {
- uint64 worktree_id = 1;
- string path = 2;
-}
-
-message BufferSaved {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- repeated VectorClockEntry version = 3;
- Timestamp mtime = 4;
- reserved 5;
-}
-
-message BufferReloaded {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- repeated VectorClockEntry version = 3;
- Timestamp mtime = 4;
- reserved 5;
- LineEnding line_ending = 6;
-}
-
-message ReloadBuffers {
- uint64 project_id = 1;
- repeated uint64 buffer_ids = 2;
-}
-
-message ReloadBuffersResponse {
- ProjectTransaction transaction = 1;
-}
-
-message SynchronizeBuffers {
- uint64 project_id = 1;
- repeated BufferVersion buffers = 2;
-}
-
-message SynchronizeBuffersResponse {
- repeated BufferVersion buffers = 1;
-}
-
-message BufferVersion {
- uint64 id = 1;
- repeated VectorClockEntry version = 2;
-}
-
-message ChannelBufferVersion {
- uint64 channel_id = 1;
- repeated VectorClockEntry version = 2;
- uint64 epoch = 3;
-}
-
-message ApplyCodeActionKind {
- uint64 project_id = 1;
- string kind = 2;
- repeated uint64 buffer_ids = 3;
-}
-
-message ApplyCodeActionKindResponse {
- ProjectTransaction transaction = 1;
-}
-
-enum FormatTrigger {
- Save = 0;
- Manual = 1;
-}
-
-message FormatBuffers {
- uint64 project_id = 1;
- FormatTrigger trigger = 2;
- repeated uint64 buffer_ids = 3;
-}
-
-message FormatBuffersResponse {
- ProjectTransaction transaction = 1;
-}
-
-message GetCompletions {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 4;
-}
-
-message GetCompletionsResponse {
- repeated Completion completions = 1;
- repeated VectorClockEntry version = 2;
-}
-
-message ApplyCompletionAdditionalEdits {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Completion completion = 3;
-}
-
-message ApplyCompletionAdditionalEditsResponse {
- Transaction transaction = 1;
-}
-
-message Completion {
- Anchor old_start = 1;
- Anchor old_end = 2;
- string new_text = 3;
- uint64 server_id = 4;
- bytes lsp_completion = 5;
- bool resolved = 6;
- Source source = 7;
- optional bytes lsp_defaults = 8;
- optional Anchor buffer_word_start = 9;
- optional Anchor buffer_word_end = 10;
-
- enum Source {
- Lsp = 0;
- Custom = 1;
- BufferWord = 2;
- }
-}
-
-message GetCodeActions {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor start = 3;
- Anchor end = 4;
- repeated VectorClockEntry version = 5;
-}
-
-message GetCodeActionsResponse {
- repeated CodeAction actions = 1;
- repeated VectorClockEntry version = 2;
-}
-
-message GetSignatureHelp {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 4;
-}
-
-message GetSignatureHelpResponse {
- optional SignatureHelp signature_help = 1;
-}
-
-message SignatureHelp {
- repeated SignatureInformation signatures = 1;
- optional uint32 active_signature = 2;
- optional uint32 active_parameter = 3;
-}
-
-message SignatureInformation {
- string label = 1;
- optional Documentation documentation = 2;
- repeated ParameterInformation parameters = 3;
- optional uint32 active_parameter = 4;
-}
-
-message Documentation {
- oneof content {
- string value = 1;
- MarkupContent markup_content = 2;
- }
-}
-
-enum MarkupKind {
- PlainText = 0;
- Markdown = 1;
-}
-
-message ParameterInformation {
- oneof label {
- string simple = 1;
- LabelOffsets label_offsets = 2;
- }
- optional Documentation documentation = 3;
-}
-
-message LabelOffsets {
- uint32 start = 1;
- uint32 end = 2;
-}
-
-message GetHover {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 5;
-}
-
-message GetHoverResponse {
- optional Anchor start = 1;
- optional Anchor end = 2;
- repeated HoverBlock contents = 3;
-}
+message FlushBufferedMessages {}
-message HoverBlock {
- string text = 1;
- optional string language = 2;
- bool is_markdown = 3;
-}
-
-message ApplyCodeAction {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- CodeAction action = 3;
-}
-
-message ApplyCodeActionResponse {
- ProjectTransaction transaction = 1;
-}
-
-message PrepareRename {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 4;
-}
-
-message PrepareRenameResponse {
- bool can_rename = 1;
- Anchor start = 2;
- Anchor end = 3;
- repeated VectorClockEntry version = 4;
- bool only_unprepared_rename_supported = 5;
-}
-
-message PerformRename {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- string new_name = 4;
- repeated VectorClockEntry version = 5;
-}
-
-message OnTypeFormatting {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- string trigger = 4;
- repeated VectorClockEntry version = 5;
-}
-
-message OnTypeFormattingResponse {
- Transaction transaction = 1;
-}
-
-
-message LinkedEditingRange {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
- repeated VectorClockEntry version = 4;
-}
-
-message AnchorRange {
- Anchor start = 1;
- Anchor end = 2;
-}
-
-message LinkedEditingRangeResponse {
- repeated AnchorRange items = 1;
- repeated VectorClockEntry version = 4;
-}
-
-message InlayHints {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor start = 3;
- Anchor end = 4;
- repeated VectorClockEntry version = 5;
-}
-
-message InlayHintsResponse {
- repeated InlayHint hints = 1;
- repeated VectorClockEntry version = 2;
-}
-
-message InlayHint {
- Anchor position = 1;
- InlayHintLabel label = 2;
- optional string kind = 3;
- bool padding_left = 4;
- bool padding_right = 5;
- InlayHintTooltip tooltip = 6;
- ResolveState resolve_state = 7;
-}
-
-message InlayHintLabel {
- oneof label {
- string value = 1;
- InlayHintLabelParts label_parts = 2;
- }
-}
-
-message InlayHintLabelParts {
- repeated InlayHintLabelPart parts = 1;
-}
-
-message InlayHintLabelPart {
- string value = 1;
- InlayHintLabelPartTooltip tooltip = 2;
- optional string location_url = 3;
- PointUtf16 location_range_start = 4;
- PointUtf16 location_range_end = 5;
- optional uint64 language_server_id = 6;
-}
-
-message InlayHintTooltip {
- oneof content {
- string value = 1;
- MarkupContent markup_content = 2;
- }
-}
-
-message InlayHintLabelPartTooltip {
- oneof content {
- string value = 1;
- MarkupContent markup_content = 2;
- }
-}
-
-message ResolveState {
- State state = 1;
- LspResolveState lsp_resolve_state = 2;
-
- enum State {
- Resolved = 0;
- CanResolve = 1;
- Resolving = 2;
- }
-
- message LspResolveState {
- optional string value = 1;
- uint64 server_id = 2;
- }
-}
-
-// This type is used to resolve more than just
-// the documentation, but for backwards-compatibility
-// reasons we can't rename the type.
-message ResolveCompletionDocumentation {
- uint64 project_id = 1;
- uint64 language_server_id = 2;
- bytes lsp_completion = 3;
- uint64 buffer_id = 4;
-}
-
-message ResolveCompletionDocumentationResponse {
- string documentation = 1;
- bool documentation_is_markdown = 2;
- Anchor old_start = 3;
- Anchor old_end = 4;
- string new_text = 5;
- bytes lsp_completion = 6;
-}
-
-message ResolveInlayHint {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- uint64 language_server_id = 3;
- InlayHint hint = 4;
-}
-
-message ResolveInlayHintResponse {
- InlayHint hint = 1;
-}
-
-message RefreshInlayHints {
- uint64 project_id = 1;
-}
-
-message CodeLens {
- bytes lsp_lens = 1;
-}
-
-message GetCodeLens {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- repeated VectorClockEntry version = 3;
-}
-
-message GetCodeLensResponse {
- repeated CodeAction lens_actions = 1;
- repeated VectorClockEntry version = 2;
-}
-
-message RefreshCodeLens {
- uint64 project_id = 1;
-}
-
-message MarkupContent {
- bool is_markdown = 1;
- string value = 2;
-}
-
-message PerformRenameResponse {
- ProjectTransaction transaction = 2;
-}
-
-message SearchQuery {
- string query = 2;
- bool regex = 3;
- bool whole_word = 4;
- bool case_sensitive = 5;
- string files_to_include = 6;
- string files_to_exclude = 7;
- bool include_ignored = 8;
-}
-
-message FindSearchCandidates {
- uint64 project_id = 1;
- SearchQuery query = 2;
- uint64 limit = 3;
-}
-
-message FindSearchCandidatesResponse {
- repeated uint64 buffer_ids = 1;
-}
-
-message CodeAction {
- uint64 server_id = 1;
- Anchor start = 2;
- Anchor end = 3;
- bytes lsp_action = 4;
- Kind kind = 5;
- bool resolved = 6;
- enum Kind {
- Action = 0;
- Command = 1;
- CodeLens = 2;
- }
-}
-
-message ProjectTransaction {
- repeated uint64 buffer_ids = 1;
- repeated Transaction transactions = 2;
-}
-
-message Transaction {
- LamportTimestamp id = 1;
- repeated LamportTimestamp edit_ids = 2;
- repeated VectorClockEntry start = 3;
-}
-
-message LamportTimestamp {
- uint32 replica_id = 1;
- uint32 value = 2;
-}
-
-message LanguageServer {
- uint64 id = 1;
- string name = 2;
- optional uint64 worktree_id = 3;
-}
-
-message StartLanguageServer {
- uint64 project_id = 1;
- LanguageServer server = 2;
-}
-
-message UpdateDiagnosticSummary {
- uint64 project_id = 1;
- uint64 worktree_id = 2;
- DiagnosticSummary summary = 3;
-}
-
-message DiagnosticSummary {
- string path = 1;
- uint64 language_server_id = 2;
- uint32 error_count = 3;
- uint32 warning_count = 4;
-}
-
-message UpdateLanguageServer {
- uint64 project_id = 1;
- uint64 language_server_id = 2;
- oneof variant {
- LspWorkStart work_start = 3;
- LspWorkProgress work_progress = 4;
- LspWorkEnd work_end = 5;
- LspDiskBasedDiagnosticsUpdating disk_based_diagnostics_updating = 6;
- LspDiskBasedDiagnosticsUpdated disk_based_diagnostics_updated = 7;
- }
-}
-
-message LspWorkStart {
- string token = 1;
- optional string title = 4;
- optional string message = 2;
- optional uint32 percentage = 3;
- optional bool is_cancellable = 5;
-}
-
-message LspWorkProgress {
- string token = 1;
- optional string message = 2;
- optional uint32 percentage = 3;
- optional bool is_cancellable = 4;
-}
-
-message LspWorkEnd {
- string token = 1;
-}
-
-message LspDiskBasedDiagnosticsUpdating {}
-
-message LspDiskBasedDiagnosticsUpdated {}
-
-message LanguageServerLog {
- uint64 project_id = 1;
- uint64 language_server_id = 2;
- oneof log_type {
- uint32 log_message_type = 3;
- LspLogTrace log_trace = 4;
- }
- string message = 5;
-}
-
-message LspLogTrace {
- optional string message = 1;
-}
-
-message UpdateChannels {
- repeated Channel channels = 1;
- repeated uint64 delete_channels = 4;
- repeated Channel channel_invitations = 5;
- repeated uint64 remove_channel_invitations = 6;
- repeated ChannelParticipants channel_participants = 7;
- repeated ChannelMessageId latest_channel_message_ids = 8;
- repeated ChannelBufferVersion latest_channel_buffer_versions = 9;
-
- reserved 10 to 15;
-}
-
-message UpdateUserChannels {
- repeated ChannelMessageId observed_channel_message_id = 1;
- repeated ChannelBufferVersion observed_channel_buffer_version = 2;
- repeated ChannelMembership channel_memberships = 3;
-}
-
-message ChannelMembership {
- uint64 channel_id = 1;
- ChannelRole role = 2;
-}
-
-message ChannelMessageId {
- uint64 channel_id = 1;
- uint64 message_id = 2;
-}
-
-message ChannelPermission {
- uint64 channel_id = 1;
- ChannelRole role = 3;
-}
-
-message ChannelParticipants {
- uint64 channel_id = 1;
- repeated uint64 participant_user_ids = 2;
-}
-
-message JoinChannel {
- uint64 channel_id = 1;
-}
-
-message DeleteChannel {
- uint64 channel_id = 1;
-}
-
-message GetChannelMembers {
- uint64 channel_id = 1;
- string query = 2;
- uint64 limit = 3;
-}
-
-message GetChannelMembersResponse {
- repeated ChannelMember members = 1;
- repeated User users = 2;
-}
-
-message ChannelMember {
- uint64 user_id = 1;
- Kind kind = 3;
- ChannelRole role = 4;
-
- enum Kind {
- Member = 0;
- Invitee = 1;
- }
-}
-
-message SubscribeToChannels {}
-
-message CreateChannel {
- string name = 1;
- optional uint64 parent_id = 2;
-}
-
-message CreateChannelResponse {
- Channel channel = 1;
- optional uint64 parent_id = 2;
-}
-
-message InviteChannelMember {
- uint64 channel_id = 1;
- uint64 user_id = 2;
- ChannelRole role = 4;
-}
-
-message RemoveChannelMember {
- uint64 channel_id = 1;
- uint64 user_id = 2;
-}
-
-enum ChannelRole {
- Admin = 0;
- Member = 1;
- Guest = 2;
- Banned = 3;
- Talker = 4;
-}
-
-message SetChannelMemberRole {
- uint64 channel_id = 1;
- uint64 user_id = 2;
- ChannelRole role = 3;
-}
-
-message SetChannelVisibility {
- uint64 channel_id = 1;
- ChannelVisibility visibility = 2;
-}
-
-message RenameChannel {
- uint64 channel_id = 1;
- string name = 2;
-}
-
-message RenameChannelResponse {
- Channel channel = 1;
-}
-
-message JoinChannelChat {
- uint64 channel_id = 1;
-}
-
-message JoinChannelChatResponse {
- repeated ChannelMessage messages = 1;
- bool done = 2;
-}
-
-message LeaveChannelChat {
- uint64 channel_id = 1;
-}
-
-message SendChannelMessage {
- uint64 channel_id = 1;
- string body = 2;
- Nonce nonce = 3;
- repeated ChatMention mentions = 4;
- optional uint64 reply_to_message_id = 5;
-}
-
-message RemoveChannelMessage {
- uint64 channel_id = 1;
- uint64 message_id = 2;
-}
-
-message UpdateChannelMessage {
- uint64 channel_id = 1;
- uint64 message_id = 2;
- Nonce nonce = 4;
- string body = 5;
- repeated ChatMention mentions = 6;
-}
-
-message AckChannelMessage {
- uint64 channel_id = 1;
- uint64 message_id = 2;
-}
-
-message SendChannelMessageResponse {
- ChannelMessage message = 1;
-}
-
-message ChannelMessageSent {
- uint64 channel_id = 1;
- ChannelMessage message = 2;
-}
-
-message ChannelMessageUpdate {
- 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;
-}
-
-message GetChannelMessagesById {
- repeated uint64 message_ids = 1;
-}
-
-message MoveChannel {
- uint64 channel_id = 1;
- uint64 to = 2;
-}
-
-message JoinChannelBuffer {
- uint64 channel_id = 1;
-}
-
-message ChannelMessage {
- uint64 id = 1;
- string body = 2;
- uint64 timestamp = 3;
- uint64 sender_id = 4;
- Nonce nonce = 5;
- repeated ChatMention mentions = 6;
- optional uint64 reply_to_message_id = 7;
- optional uint64 edited_at = 8;
-}
-
-message ChatMention {
- Range range = 1;
- uint64 user_id = 2;
-}
-
-message RejoinChannelBuffers {
- repeated ChannelBufferVersion buffers = 1;
-}
-
-message RejoinChannelBuffersResponse {
- repeated RejoinedChannelBuffer buffers = 1;
-}
-
-message AckBufferOperation {
- uint64 buffer_id = 1;
- uint64 epoch = 2;
- repeated VectorClockEntry version = 3;
-}
-
-message JoinChannelBufferResponse {
- uint64 buffer_id = 1;
- uint32 replica_id = 2;
- string base_text = 3;
- repeated Operation operations = 4;
- repeated Collaborator collaborators = 5;
- uint64 epoch = 6;
-}
-
-message RejoinedChannelBuffer {
- uint64 channel_id = 1;
- repeated VectorClockEntry version = 2;
- repeated Operation operations = 3;
- repeated Collaborator collaborators = 4;
-}
-
-message LeaveChannelBuffer {
- uint64 channel_id = 1;
-}
-
-message RespondToChannelInvite {
- uint64 channel_id = 1;
- bool accept = 2;
-}
-
-message GetUsers {
- repeated uint64 user_ids = 1;
-}
-
-message FuzzySearchUsers {
- string query = 1;
-}
-
-message UsersResponse {
- repeated User users = 1;
-}
-
-message RequestContact {
- uint64 responder_id = 1;
-}
-
-message RemoveContact {
- uint64 user_id = 1;
-}
-
-message RespondToContactRequest {
- uint64 requester_id = 1;
- ContactRequestResponse response = 2;
-}
-
-enum ContactRequestResponse {
- Accept = 0;
- Decline = 1;
- Block = 2;
- Dismiss = 3;
-}
-
-message UpdateContacts {
- repeated Contact contacts = 1;
- repeated uint64 remove_contacts = 2;
- repeated IncomingContactRequest incoming_requests = 3;
- repeated uint64 remove_incoming_requests = 4;
- repeated uint64 outgoing_requests = 5;
- repeated uint64 remove_outgoing_requests = 6;
-}
-
-message UpdateInviteInfo {
- string url = 1;
- uint32 count = 2;
-}
-
-message ShowContacts {}
-
-message IncomingContactRequest {
- uint64 requester_id = 1;
-}
-
-message UpdateDiagnostics {
- uint32 replica_id = 1;
- uint32 lamport_timestamp = 2;
- uint64 server_id = 3;
- repeated Diagnostic diagnostics = 4;
-}
-
-message Follow {
- uint64 room_id = 1;
- optional uint64 project_id = 2;
- PeerId leader_id = 3;
-}
-
-message FollowResponse {
- View active_view = 3;
- // TODO: Remove after version 0.145.x stabilizes.
- optional ViewId active_view_id = 1;
- repeated View views = 2;
-}
-
-message UpdateFollowers {
- uint64 room_id = 1;
- optional uint64 project_id = 2;
- reserved 3;
- oneof variant {
- View create_view = 5;
- // TODO: Remove after version 0.145.x stabilizes.
- UpdateActiveView update_active_view = 4;
- UpdateView update_view = 6;
- }
-}
-
-message Unfollow {
- uint64 room_id = 1;
- optional uint64 project_id = 2;
- PeerId leader_id = 3;
-}
-
-message GetPrivateUserInfo {}
-
-message GetPrivateUserInfoResponse {
- string metrics_id = 1;
- bool staff = 2;
- repeated string flags = 3;
- optional uint64 accepted_tos_at = 4;
-}
-
-enum Plan {
- Free = 0;
- ZedPro = 1;
-}
-
-message UpdateUserPlan {
- Plan plan = 1;
-}
-
-message AcceptTermsOfService {}
-
-message AcceptTermsOfServiceResponse {
- uint64 accepted_tos_at = 1;
-}
-
-// Entities
-
-message ViewId {
- PeerId creator = 1;
- uint64 id = 2;
-}
-
-message UpdateActiveView {
- optional ViewId id = 1;
- optional PeerId leader_id = 2;
- View view = 3;
-}
-
-enum PanelId {
- AssistantPanel = 0;
- DebugPanel = 1;
-}
-
-message UpdateView {
- ViewId id = 1;
- optional PeerId leader_id = 2;
-
- oneof variant {
- Editor editor = 3;
- }
-
- message Editor {
- repeated ExcerptInsertion inserted_excerpts = 1;
- repeated uint64 deleted_excerpts = 2;
- repeated Selection selections = 3;
- optional Selection pending_selection = 4;
- EditorAnchor scroll_top_anchor = 5;
- float scroll_x = 6;
- float scroll_y = 7;
- }
-}
-
-message View {
- ViewId id = 1;
- optional PeerId leader_id = 2;
- optional PanelId panel_id = 6;
-
- oneof variant {
- Editor editor = 3;
- ChannelView channel_view = 4;
- ContextEditor context_editor = 5;
- }
-
- message Editor {
- bool singleton = 1;
- optional string title = 2;
- repeated Excerpt excerpts = 3;
- repeated Selection selections = 4;
- optional Selection pending_selection = 5;
- EditorAnchor scroll_top_anchor = 6;
- float scroll_x = 7;
- float scroll_y = 8;
- }
-
- message ChannelView {
- uint64 channel_id = 1;
- Editor editor = 2;
- }
-
- message ContextEditor {
- string context_id = 1;
- Editor editor = 2;
- }
-}
-
-
-message Collaborator {
- PeerId peer_id = 1;
- uint32 replica_id = 2;
- uint64 user_id = 3;
- bool is_host = 4;
-}
-
-message User {
- uint64 id = 1;
- string github_login = 2;
- string avatar_url = 3;
- optional string email = 4;
- optional string name = 5;
-}
-
-message File {
- uint64 worktree_id = 1;
- optional uint64 entry_id = 2;
- string path = 3;
- Timestamp mtime = 4;
- bool is_deleted = 5;
-}
-
-message Entry {
- uint64 id = 1;
- bool is_dir = 2;
- string path = 3;
- uint64 inode = 4;
- Timestamp mtime = 5;
- bool is_ignored = 7;
- bool is_external = 8;
- reserved 6;
- reserved 9;
- bool is_fifo = 10;
- optional uint64 size = 11;
- optional string canonical_path = 12;
-}
-
-message RepositoryEntry {
- uint64 repository_id = 1;
- reserved 2;
- repeated StatusEntry updated_statuses = 3;
- repeated string removed_statuses = 4;
- repeated string current_merge_conflicts = 5;
- optional Branch branch_summary = 6;
-}
-
-message UpdateRepository {
- uint64 project_id = 1;
- uint64 id = 2;
- string abs_path = 3;
- repeated uint64 entry_ids = 4;
- optional Branch branch_summary = 5;
- repeated StatusEntry updated_statuses = 6;
- repeated string removed_statuses = 7;
- repeated string current_merge_conflicts = 8;
- uint64 scan_id = 9;
- bool is_last_update = 10;
-}
-
-message RemoveRepository {
- uint64 project_id = 1;
- uint64 id = 2;
-}
-
-message StatusEntry {
- string repo_path = 1;
- // Can be removed once collab's min version is >=0.171.0.
- GitStatus simple_status = 2;
- GitFileStatus status = 3;
-}
-
-enum GitStatus {
- Added = 0;
- Modified = 1;
- Conflict = 2;
- Deleted = 3;
- Updated = 4;
- TypeChanged = 5;
- Renamed = 6;
- Copied = 7;
- Unmodified = 8;
-}
-
-message GitFileStatus {
- oneof variant {
- Untracked untracked = 1;
- Ignored ignored = 2;
- Unmerged unmerged = 3;
- Tracked tracked = 4;
- }
-
- message Untracked {}
- message Ignored {}
- message Unmerged {
- GitStatus first_head = 1;
- GitStatus second_head = 2;
- }
- message Tracked {
- GitStatus index_status = 1;
- GitStatus worktree_status = 2;
- }
-}
-
-message BufferState {
- uint64 id = 1;
- optional File file = 2;
- string base_text = 3;
- LineEnding line_ending = 5;
- repeated VectorClockEntry saved_version = 6;
- Timestamp saved_mtime = 8;
-
- reserved 7;
- reserved 4;
-}
-
-message BufferChunk {
- uint64 buffer_id = 1;
- repeated Operation operations = 2;
- bool is_last = 3;
-}
-
-enum LineEnding {
- Unix = 0;
- Windows = 1;
-}
-
-message Selection {
- uint64 id = 1;
- EditorAnchor start = 2;
- EditorAnchor end = 3;
- bool reversed = 4;
-}
-
-message EditorAnchor {
- uint64 excerpt_id = 1;
- Anchor anchor = 2;
-}
-
-enum CursorShape {
- CursorBar = 0;
- CursorBlock = 1;
- CursorUnderscore = 2;
- CursorHollow = 3;
-}
-
-message ExcerptInsertion {
- Excerpt excerpt = 1;
- optional uint64 previous_excerpt_id = 2;
-}
-
-message Excerpt {
- uint64 id = 1;
- uint64 buffer_id = 2;
- Anchor context_start = 3;
- Anchor context_end = 4;
- Anchor primary_start = 5;
- Anchor primary_end = 6;
-}
-
-message Anchor {
- uint32 replica_id = 1;
- uint32 timestamp = 2;
- uint64 offset = 3;
- Bias bias = 4;
- optional uint64 buffer_id = 5;
-}
-
-enum Bias {
- Left = 0;
- Right = 1;
-}
-
-message Diagnostic {
- Anchor start = 1;
- Anchor end = 2;
- optional string source = 3;
- Severity severity = 4;
- string message = 5;
- optional string code = 6;
- uint64 group_id = 7;
- bool is_primary = 8;
-
- reserved 9;
-
- bool is_disk_based = 10;
- bool is_unnecessary = 11;
-
- enum Severity {
- None = 0;
- Error = 1;
- Warning = 2;
- Information = 3;
- Hint = 4;
- }
- optional string data = 12;
-}
-
-message Operation {
- oneof variant {
- Edit edit = 1;
- Undo undo = 2;
- UpdateSelections update_selections = 3;
- UpdateDiagnostics update_diagnostics = 4;
- UpdateCompletionTriggers update_completion_triggers = 5;
- }
-
- message Edit {
- uint32 replica_id = 1;
- uint32 lamport_timestamp = 2;
- repeated VectorClockEntry version = 3;
- repeated Range ranges = 4;
- repeated string new_text = 5;
- }
-
- message Undo {
- uint32 replica_id = 1;
- uint32 lamport_timestamp = 2;
- repeated VectorClockEntry version = 3;
- repeated UndoCount counts = 4;
- }
-
- message UpdateSelections {
- uint32 replica_id = 1;
- uint32 lamport_timestamp = 2;
- repeated Selection selections = 3;
- bool line_mode = 4;
- CursorShape cursor_shape = 5;
- }
-
- message UpdateCompletionTriggers {
- uint32 replica_id = 1;
- uint32 lamport_timestamp = 2;
- repeated string triggers = 3;
- uint64 language_server_id = 4;
- }
-}
-
-message UndoMapEntry {
- uint32 replica_id = 1;
- uint32 local_timestamp = 2;
- repeated UndoCount counts = 3;
-}
-
-message UndoCount {
- uint32 replica_id = 1;
- uint32 lamport_timestamp = 2;
- uint32 count = 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 PointUtf16 {
- uint32 row = 1;
- uint32 column = 2;
-}
-
-message Nonce {
- uint64 upper_half = 1;
- uint64 lower_half = 2;
-}
-
-enum ChannelVisibility {
- Public = 0;
- Members = 1;
-}
-
-message Channel {
- uint64 id = 1;
- string name = 2;
- ChannelVisibility visibility = 3;
- repeated uint64 parent_path = 5;
-}
-
-message Contact {
- uint64 user_id = 1;
- bool online = 2;
- bool busy = 3;
-}
-
-message WorktreeMetadata {
- uint64 id = 1;
- string root_name = 2;
- bool visible = 3;
- string abs_path = 4;
-}
-
-message UpdateDiffBases {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
-
- enum Mode {
- // No collaborator is using the unstaged diff.
- HEAD_ONLY = 0;
- // No collaborator is using the diff from HEAD.
- INDEX_ONLY = 1;
- // Both the unstaged and uncommitted diffs are demanded,
- // and the contents of the index and HEAD are the same for this path.
- INDEX_MATCHES_HEAD = 2;
- // Both the unstaged and uncommitted diffs are demanded,
- // and the contents of the index and HEAD differ for this path,
- // where None means the path doesn't exist in that state of the repo.
- INDEX_AND_HEAD = 3;
- }
-
- optional string staged_text = 3;
- optional string committed_text = 4;
- Mode mode = 5;
-}
-
-message OpenUnstagedDiff {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
-}
-
-message OpenUnstagedDiffResponse {
- optional string staged_text = 1;
-}
-
-message OpenUncommittedDiff {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
-}
-
-message OpenUncommittedDiffResponse {
- enum Mode {
- INDEX_MATCHES_HEAD = 0;
- INDEX_AND_HEAD = 1;
- }
- optional string staged_text = 1;
- optional string committed_text = 2;
- Mode mode = 3;
-}
-
-message SetIndexText {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- string path = 4;
- optional string text = 5;
-}
-
-message GetNotifications {
- optional uint64 before_id = 1;
-}
-
-message AddNotification {
- Notification notification = 1;
-}
-
-message GetNotificationsResponse {
- repeated Notification notifications = 1;
- bool done = 2;
-}
-
-message DeleteNotification {
- uint64 notification_id = 1;
-}
-
-message UpdateNotification {
- Notification notification = 1;
-}
-
-message MarkNotificationRead {
- uint64 notification_id = 1;
-}
-
-message Notification {
- uint64 id = 1;
- uint64 timestamp = 2;
- string kind = 3;
- optional uint64 entity_id = 4;
- string content = 5;
- bool is_read = 6;
- optional bool response = 7;
-}
-
-message LspExtExpandMacro {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
-}
-
-message LspExtExpandMacroResponse {
- string name = 1;
- string expansion = 2;
-}
-
-message LspExtOpenDocs {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Anchor position = 3;
-}
-
-message LspExtOpenDocsResponse {
- optional string web = 1;
- optional string local = 2;
-}
-
-message LspExtSwitchSourceHeader {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
-}
-
-message LspExtSwitchSourceHeaderResponse {
- string target_file = 1;
-}
-
-message SetRoomParticipantRole {
- uint64 room_id = 1;
- uint64 user_id = 2;
- ChannelRole role = 3;
-}
-
-enum LanguageModelRole {
- LanguageModelUser = 0;
- LanguageModelAssistant = 1;
- LanguageModelSystem = 2;
- reserved 3;
-}
-
-message CountLanguageModelTokens {
- LanguageModelProvider provider = 1;
- string request = 2;
-}
-
-message CountLanguageModelTokensResponse {
- uint32 token_count = 1;
-}
-
-enum LanguageModelProvider {
- Anthropic = 0;
- OpenAI = 1;
- Google = 2;
- Zed = 3;
-}
-
-message GetCachedEmbeddings {
- string model = 1;
- repeated bytes digests = 2;
-}
-
-message GetCachedEmbeddingsResponse {
- repeated Embedding embeddings = 1;
-}
-
-message ComputeEmbeddings {
- string model = 1;
- repeated string texts = 2;
-}
-
-message ComputeEmbeddingsResponse {
- repeated Embedding embeddings = 1;
-}
-
-message Embedding {
- bytes digest = 1;
- repeated float dimensions = 2;
-}
-
-message BlameBuffer {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- repeated VectorClockEntry version = 3;
-}
-
-message BlameEntry {
- bytes sha = 1;
-
- uint32 start_line = 2;
- uint32 end_line = 3;
- uint32 original_line_number = 4;
-
- optional string author = 5;
- optional string author_mail = 6;
- optional int64 author_time = 7;
- optional string author_tz = 8;
-
- optional string committer = 9;
- optional string committer_mail = 10;
- optional int64 committer_time = 11;
- optional string committer_tz = 12;
-
- optional string summary = 13;
- optional string previous = 14;
-
- string filename = 15;
-}
-
-message CommitMessage {
- bytes oid = 1;
- string message = 2;
-}
-
-message CommitPermalink {
- bytes oid = 1;
- string permalink = 2;
-}
-
-message BlameBufferResponse {
- message BlameResponse {
- repeated BlameEntry entries = 1;
- repeated CommitMessage messages = 2;
- optional string remote_url = 4;
- reserved 3;
- }
-
- optional BlameResponse blame_response = 5;
-
- reserved 1 to 4;
-}
-
-message MultiLspQuery {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- repeated VectorClockEntry version = 3;
- oneof strategy {
- AllLanguageServers all = 4;
- }
- oneof request {
- GetHover get_hover = 5;
- GetCodeActions get_code_actions = 6;
- GetSignatureHelp get_signature_help = 7;
- GetCodeLens get_code_lens = 8;
- }
-}
-
-message AllLanguageServers {}
-
-message RestartLanguageServers {
- uint64 project_id = 1;
- repeated uint64 buffer_ids = 2;
-}
-
-message StopLanguageServers {
- uint64 project_id = 1;
- repeated uint64 buffer_ids = 2;
-}
-
-message MultiLspQueryResponse {
- repeated LspResponse responses = 1;
-}
-
-message LspResponse {
- oneof response {
- GetHoverResponse get_hover_response = 1;
- GetCodeActionsResponse get_code_actions_response = 2;
- GetSignatureHelpResponse get_signature_help_response = 3;
- GetCodeLensResponse get_code_lens_response = 4;
- }
-}
-
-message GetSupermavenApiKey {}
-
-message GetSupermavenApiKeyResponse {
- string api_key = 1;
-}
-
-message TaskContextForLocation {
- uint64 project_id = 1;
- Location location = 2;
- map<string, string> task_variables = 3;
-}
-
-message TaskContext {
- optional string cwd = 1;
- map<string, string> task_variables = 2;
- map<string, string> project_env = 3;
-}
-
-message Shell {
- message WithArguments {
- string program = 1;
- repeated string args = 2;
- }
-
- oneof shell_type {
- System system = 1;
- string program = 2;
- WithArguments with_arguments = 3;
- }
-}
-
-message System {}
-
-enum RevealStrategy {
- RevealAlways = 0;
- RevealNever = 1;
-}
-
-enum HideStrategy {
- HideAlways = 0;
- HideNever = 1;
- HideOnSuccess = 2;
-}
-
-message ContextMessageStatus {
- oneof variant {
- Done done = 1;
- Pending pending = 2;
- Error error = 3;
- Canceled canceled = 4;
- }
-
- message Done {}
-
- message Pending {}
-
- message Error {
- string message = 1;
- }
-
- message Canceled {}
-}
-
-message ContextMessage {
- LamportTimestamp id = 1;
- Anchor start = 2;
- LanguageModelRole role = 3;
- ContextMessageStatus status = 4;
-}
-
-message SlashCommandOutputSection {
- AnchorRange range = 1;
- string icon_name = 2;
- string label = 3;
- optional string metadata = 4;
-}
-
-message ThoughtProcessOutputSection {
- AnchorRange range = 1;
-}
-
-message ContextOperation {
- oneof variant {
- InsertMessage insert_message = 1;
- UpdateMessage update_message = 2;
- UpdateSummary update_summary = 3;
- BufferOperation buffer_operation = 5;
- SlashCommandStarted slash_command_started = 6;
- SlashCommandOutputSectionAdded slash_command_output_section_added = 7;
- SlashCommandCompleted slash_command_completed = 8;
- ThoughtProcessOutputSectionAdded thought_process_output_section_added = 9;
- }
-
- reserved 4;
-
- message InsertMessage {
- ContextMessage message = 1;
- repeated VectorClockEntry version = 2;
- }
-
- message UpdateMessage {
- LamportTimestamp message_id = 1;
- LanguageModelRole role = 2;
- ContextMessageStatus status = 3;
- LamportTimestamp timestamp = 4;
- repeated VectorClockEntry version = 5;
- }
-
- message UpdateSummary {
- string summary = 1;
- bool done = 2;
- LamportTimestamp timestamp = 3;
- repeated VectorClockEntry version = 4;
- }
-
- message SlashCommandStarted {
- LamportTimestamp id = 1;
- AnchorRange output_range = 2;
- string name = 3;
- repeated VectorClockEntry version = 4;
- }
-
- message SlashCommandOutputSectionAdded {
- LamportTimestamp timestamp = 1;
- SlashCommandOutputSection section = 2;
- repeated VectorClockEntry version = 3;
- }
-
- message SlashCommandCompleted {
- LamportTimestamp id = 1;
- LamportTimestamp timestamp = 3;
- optional string error_message = 4;
- repeated VectorClockEntry version = 5;
- }
-
- message ThoughtProcessOutputSectionAdded {
- LamportTimestamp timestamp = 1;
- ThoughtProcessOutputSection section = 2;
- repeated VectorClockEntry version = 3;
- }
-
- message BufferOperation {
- Operation operation = 1;
- }
-}
-
-message Context {
- repeated ContextOperation operations = 1;
-}
-
-message ContextMetadata {
- string context_id = 1;
- optional string summary = 2;
-}
-
-message AdvertiseContexts {
- uint64 project_id = 1;
- repeated ContextMetadata contexts = 2;
-}
-
-message OpenContext {
- uint64 project_id = 1;
- string context_id = 2;
-}
-
-message OpenContextResponse {
- Context context = 1;
-}
-
-message CreateContext {
- uint64 project_id = 1;
-}
-
-message CreateContextResponse {
- string context_id = 1;
- Context context = 2;
-}
-
-message UpdateContext {
- uint64 project_id = 1;
- string context_id = 2;
- ContextOperation operation = 3;
-}
-
-message ContextVersion {
- string context_id = 1;
- repeated VectorClockEntry context_version = 2;
- repeated VectorClockEntry buffer_version = 3;
-}
-
-message SynchronizeContexts {
- uint64 project_id = 1;
- repeated ContextVersion contexts = 2;
-}
-
-message SynchronizeContextsResponse {
- repeated ContextVersion contexts = 1;
-}
-
-message GetLlmToken {}
-
-message GetLlmTokenResponse {
- string token = 1;
-}
-
-message RefreshLlmToken {}
-
-// Remote debugging
-
-enum BreakpointState {
- Enabled = 0;
- Disabled = 1;
-}
-
-message Breakpoint {
- Anchor position = 1;
- BreakpointState state = 2;
- reserved 3;
- optional string message = 4;
- optional string condition = 5;
- optional string hit_condition = 6;
-}
-
-message BreakpointsForFile {
- uint64 project_id = 1;
- string path = 2;
- repeated Breakpoint breakpoints = 3;
-}
-
-message ToggleBreakpoint {
- uint64 project_id = 1;
- string path = 2;
- Breakpoint breakpoint = 3;
-}
-
-enum DebuggerThreadItem {
- Console = 0;
- LoadedSource = 1;
- Modules = 2;
- Variables = 3;
-}
-
-message DebuggerSetVariableState {
- string name = 1;
- DapScope scope = 2;
- string value = 3;
- uint64 stack_frame_id = 4;
- optional string evaluate_name = 5;
- uint64 parent_variables_reference = 6;
-}
-
-message VariableListOpenEntry {
- oneof entry {
- DebuggerOpenEntryScope scope = 1;
- DebuggerOpenEntryVariable variable = 2;
- }
-}
-
-message DebuggerOpenEntryScope {
- string name = 1;
-}
-
-message DebuggerOpenEntryVariable {
- string scope_name = 1;
- string name = 2;
- uint64 depth = 3;
-}
-
-message VariableListEntrySetState {
- uint64 depth = 1;
- DebuggerSetVariableState state = 2;
-}
-
-message VariableListEntryVariable {
- uint64 depth = 1;
- DapScope scope = 2;
- DapVariable variable = 3;
- bool has_children = 4;
- uint64 container_reference = 5;
-}
-
-message DebuggerScopeVariableIndex {
- repeated uint64 fetched_ids = 1;
- repeated DebuggerVariableContainer variables = 2;
-}
-
-message DebuggerVariableContainer {
- uint64 container_reference = 1;
- DapVariable variable = 2;
- uint64 depth = 3;
-}
-
-enum DapThreadStatus {
- Running = 0;
- Stopped = 1;
- Exited = 2;
- Ended = 3;
-}
-
-message VariableListScopes {
- uint64 stack_frame_id = 1;
- repeated DapScope scopes = 2;
-}
-
-message VariableListVariables {
- uint64 stack_frame_id = 1;
- uint64 scope_id = 2;
- DebuggerScopeVariableIndex variables = 3;
-}
-
-
-enum VariablesArgumentsFilter {
- Indexed = 0;
- Named = 1;
-}
-
-message ValueFormat {
- optional bool hex = 1;
-}
-
-message VariablesRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- uint64 variables_reference = 3;
- optional VariablesArgumentsFilter filter = 4;
- optional uint64 start = 5;
- optional uint64 count = 6;
- optional ValueFormat format = 7;
-}
-
-enum SteppingGranularity {
- Statement = 0;
- Line = 1;
- Instruction = 2;
-}
-
-message DapLocationsRequest {
- uint64 project_id = 1;
- uint64 session_id = 2;
- uint64 location_reference = 3;
-}
-
-message DapLocationsResponse {
- DapSource source = 1;
- uint64 line = 2;
- optional uint64 column = 3;
- optional uint64 end_line = 4;
- optional uint64 end_column = 5;
-}
-
-enum DapEvaluateContext {
- Repl = 0;
- Watch = 1;
- Hover = 2;
- Clipboard = 3;
- EvaluateVariables = 4;
- EvaluateUnknown = 5;
-}
-
-message DapEvaluateRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- string expression = 3;
- optional uint64 frame_id = 4;
- optional DapEvaluateContext context = 5;
-}
-
-message DapEvaluateResponse {
- string result = 1;
- optional string evaluate_type = 2;
- uint64 variable_reference = 3;
- optional uint64 named_variables = 4;
- optional uint64 indexed_variables = 5;
- optional string memory_reference = 6;
-}
-
-
-message DapCompletionRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- string query = 3;
- optional uint64 frame_id = 4;
- optional uint64 line = 5;
- uint64 column = 6;
-}
-
-enum DapCompletionItemType {
- Method = 0;
- Function = 1;
- Constructor = 2;
- Field = 3;
- Variable = 4;
- Class = 5;
- Interface = 6;
- Module = 7;
- Property = 8;
- Unit = 9;
- Value = 10;
- Enum = 11;
- Keyword = 12;
- Snippet = 13;
- Text = 14;
- Color = 15;
- CompletionItemFile = 16;
- Reference = 17;
- Customcolor = 19;
-}
-
-message DapCompletionItem {
- string label = 1;
- optional string text = 2;
- optional string sort_text = 3;
- optional string detail = 4;
- optional DapCompletionItemType typ = 5;
- optional uint64 start = 6;
- optional uint64 length = 7;
- optional uint64 selection_start = 8;
- optional uint64 selection_length = 9;
-}
-
-message DapCompletionResponse {
- uint64 client_id = 1;
- repeated DapCompletionItem completions = 2;
-}
-
-message DapScopesRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- uint64 stack_frame_id = 3;
-}
-
-message DapScopesResponse {
- repeated DapScope scopes = 1;
-}
-
-message DapSetVariableValueRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- string name = 3;
- string value = 4;
- uint64 variables_reference = 5;
-}
-
-message DapSetVariableValueResponse {
- uint64 client_id = 1;
- string value = 2;
- optional string variable_type = 3;
- optional uint64 variables_reference = 4;
- optional uint64 named_variables = 5;
- optional uint64 indexed_variables = 6;
- optional string memory_reference = 7;
-}
-
-message DapPauseRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- uint64 thread_id = 3;
-}
-
-message DapDisconnectRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- optional bool restart = 3;
- optional bool terminate_debuggee = 4;
- optional bool suspend_debuggee = 5;
-}
-
-message DapTerminateThreadsRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- repeated uint64 thread_ids = 3;
-}
-
-message DapThreadsRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
-}
-
-message DapThreadsResponse {
- repeated DapThread threads = 1;
-}
-
-message DapTerminateRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- optional bool restart = 3;
-}
-
-message DapRestartRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- bytes raw_args = 3;
-}
-
-message DapRestartStackFrameRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- uint64 stack_frame_id = 3;
-}
-
-message ToggleIgnoreBreakpoints {
- uint64 project_id = 1;
- uint32 session_id = 2;
-}
-
-message IgnoreBreakpointState {
- uint64 project_id = 1;
- uint64 session_id = 2;
- bool ignore = 3;
-}
-
-message DapNextRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- uint64 thread_id = 3;
- optional bool single_thread = 4;
- optional SteppingGranularity granularity = 5;
-}
-
-message DapStepInRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- uint64 thread_id = 3;
- optional uint64 target_id = 4;
- optional bool single_thread = 5;
- optional SteppingGranularity granularity = 6;
-}
-
-message DapStepOutRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- uint64 thread_id = 3;
- optional bool single_thread = 4;
- optional SteppingGranularity granularity = 5;
-}
-
-message DapStepBackRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- uint64 thread_id = 3;
- optional bool single_thread = 4;
- optional SteppingGranularity granularity = 5;
-}
-
-message DapContinueRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- uint64 thread_id = 3;
- optional bool single_thread = 4;
-}
-
-message DapContinueResponse {
- uint64 client_id = 1;
- optional bool all_threads_continued = 2;
-}
-
-message DapModulesRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
-}
-
-message DapModulesResponse {
- uint64 client_id = 1;
- repeated DapModule modules = 2;
-}
-
-message DapLoadedSourcesRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
-}
-
-message DapLoadedSourcesResponse {
- uint64 client_id = 1;
- repeated DapSource sources = 2;
-}
-
-message DapStackTraceRequest {
- uint64 project_id = 1;
- uint64 client_id = 2;
- uint64 thread_id = 3;
- optional uint64 start_frame = 4;
- optional uint64 stack_trace_levels = 5;
-}
-
-message DapStackTraceResponse {
- repeated DapStackFrame frames = 1;
-}
-
-message DapStackFrame {
- uint64 id = 1;
- string name = 2;
- optional DapSource source = 3;
- uint64 line = 4;
- uint64 column = 5;
- optional uint64 end_line = 6;
- optional uint64 end_column = 7;
- optional bool can_restart = 8;
- optional string instruction_pointer_reference = 9;
- optional DapModuleId module_id = 10;
- optional DapStackPresentationHint presentation_hint = 11;
-}
-
-message DebuggerLoadedSourceList {
- uint64 client_id = 1;
- repeated DapSource sources = 2;
-}
-
-message DapVariables {
- uint64 client_id = 1;
- repeated DapVariable variables = 2;
-}
-
-// Remote Debugging: Dap Types
-message DapVariable {
- string name = 1;
- string value = 2;
- optional string type = 3;
- // optional DapVariablePresentationHint presentation_hint = 4;
- optional string evaluate_name = 5;
- uint64 variables_reference = 6;
- optional uint64 named_variables = 7;
- optional uint64 indexed_variables = 8;
- optional string memory_reference = 9;
-}
-
-message DapThread {
- uint64 id = 1;
- string name = 2;
-}
-
-message DapScope {
- string name = 1;
- optional DapScopePresentationHint presentation_hint = 2;
- uint64 variables_reference = 3;
- optional uint64 named_variables = 4;
- optional uint64 indexed_variables = 5;
- bool expensive = 6;
- optional DapSource source = 7;
- optional uint64 line = 8;
- optional uint64 column = 9;
- optional uint64 end_line = 10;
- optional uint64 end_column = 11;
-}
-
-message DapSource {
- optional string name = 1;
- optional string path = 2;
- optional uint64 source_reference = 3;
- optional DapSourcePresentationHint presentation_hint = 4;
- optional string origin = 5;
- repeated DapSource sources = 6;
- optional bytes adapter_data = 7;
- repeated DapChecksum checksums = 8;
-}
-
-enum DapOutputCategory {
- ConsoleOutput = 0;
- Important = 1;
- Stdout = 2;
- Stderr = 3;
- Unknown = 4;
-}
-
-enum DapOutputEventGroup {
- Start = 0;
- StartCollapsed = 1;
- End = 2;
-}
-
-message DapOutputEvent {
- string output = 1;
- optional DapOutputCategory category = 2;
- optional uint64 variables_reference = 3;
- optional DapOutputEventGroup group = 4;
- optional DapSource source = 5;
- optional uint32 line = 6;
- optional uint32 column = 7;
-}
-
-enum DapChecksumAlgorithm {
- CHECKSUM_ALGORITHM_UNSPECIFIED = 0;
- MD5 = 1;
- SHA1 = 2;
- SHA256 = 3;
- TIMESTAMP = 4;
-}
-
-message DapChecksum {
- DapChecksumAlgorithm algorithm = 1;
- string checksum = 2;
-}
-
-enum DapScopePresentationHint {
- Arguments = 0;
- Locals = 1;
- Registers = 2;
- ReturnValue = 3;
- ScopeUnknown = 4;
-}
-
-enum DapSourcePresentationHint {
- SourceNormal = 0;
- Emphasize = 1;
- Deemphasize = 2;
- SourceUnknown = 3;
-}
-
-enum DapStackPresentationHint {
- StackNormal = 0;
- Label = 1;
- Subtle = 2;
- StackUnknown = 3;
-}
-
-message DapModule {
- DapModuleId id = 1;
- string name = 2;
- optional string path = 3;
- optional bool is_optimized = 4;
- optional bool is_user_code = 5;
- optional string version = 6;
- optional string symbol_status = 7;
- optional string symbol_file_path = 8;
- optional string date_time_stamp = 9;
- optional string address_range = 10;
-}
-
-message DapModuleId {
- oneof id {
- uint32 number = 1;
- string string = 2;
- }
-}
-
-// Remote FS
-
-message AddWorktree {
- string path = 1;
- uint64 project_id = 2;
- bool visible = 3;
-}
-
-message AddWorktreeResponse {
- uint64 worktree_id = 1;
- string canonicalized_path = 2;
-}
-
-message GetPathMetadata {
- uint64 project_id = 1;
- string path = 2;
-}
-
-message GetPathMetadataResponse {
- bool exists = 1;
- string path = 2;
- bool is_dir = 3;
-}
-
-message ShutdownRemoteServer {}
-
-message RemoveWorktree {
- uint64 worktree_id = 1;
-}
-
-message Toast {
- uint64 project_id = 1;
- string notification_id = 2;
- string message = 3;
-}
-
-message HideToast {
- uint64 project_id = 1;
- string notification_id = 2;
-}
-
-message OpenServerSettings {
- uint64 project_id = 1;
-}
-
-message GetPermalinkToLine {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- Range selection = 3;
-}
-
-message GetPermalinkToLineResponse {
- string permalink = 1;
-}
-message FlushBufferedMessages {}
message FlushBufferedMessagesResponse {}
-
-message LanguageServerPromptRequest {
- uint64 project_id = 1;
-
- oneof level {
- Info info = 2;
- Warning warning = 3;
- Critical critical = 4;
- }
-
- message Info {}
- message Warning {}
- message Critical {}
-
- string message = 5;
- repeated string actions = 6;
- string lsp_name = 7;
-}
-
-message LanguageServerPromptResponse {
- optional uint64 action_response = 1;
-}
-
-message ListToolchains {
- uint64 project_id = 1;
- uint64 worktree_id = 2;
- string language_name = 3;
- optional string path = 4;
-}
-
-message Toolchain {
- string name = 1;
- string path = 2;
- string raw_json = 3;
-}
-
-message ToolchainGroup {
- uint64 start_index = 1;
- string name = 2;
-}
-
-message ListToolchainsResponse {
- repeated Toolchain toolchains = 1;
- bool has_values = 2;
- repeated ToolchainGroup groups = 3;
-}
-
-message ActivateToolchain {
- uint64 project_id = 1;
- uint64 worktree_id = 2;
- Toolchain toolchain = 3;
- string language_name = 4;
- optional string path = 5;
-}
-
-message ActiveToolchain {
- uint64 project_id = 1;
- uint64 worktree_id = 2;
- string language_name = 3;
- optional string path = 4;
-}
-
-message ActiveToolchainResponse {
- optional Toolchain toolchain = 1;
-}
-
-message CommitSummary {
- string sha = 1;
- string subject = 2;
- int64 commit_timestamp = 3;
-}
-
-message Branch {
- bool is_head = 1;
- string name = 2;
- optional uint64 unix_timestamp = 3;
- optional GitUpstream upstream = 4;
- optional CommitSummary most_recent_commit = 5;
-}
-message GitUpstream {
- string ref_name = 1;
- optional UpstreamTracking tracking = 2;
-}
-message UpstreamTracking {
- uint64 ahead = 1;
- uint64 behind = 2;
-}
-
-message GitBranches {
- uint64 project_id = 1;
- ProjectPath repository = 2;
-}
-
-message GitBranchesResponse {
- repeated Branch branches = 1;
-}
-
-message UpdateGitBranch {
- uint64 project_id = 1;
- string branch_name = 2;
- ProjectPath repository = 3;
-}
-
-message GetPanicFiles {
-}
-
-message GitShow {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- string commit = 4;
-}
-
-message GitCommitDetails {
- string sha = 1;
- string message = 2;
- int64 commit_timestamp = 3;
- string author_email = 4;
- string author_name = 5;
-}
-
-message LoadCommitDiff {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- string commit = 4;
-}
-
-message LoadCommitDiffResponse {
- repeated CommitFile files = 1;
-}
-
-message CommitFile {
- string path = 1;
- optional string old_text = 2;
- optional string new_text = 3;
-}
-
-message GitReset {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- string commit = 4;
- ResetMode mode = 5;
- enum ResetMode {
- SOFT = 0;
- MIXED = 1;
- }
-}
-
-message GitCheckoutFiles {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- string commit = 4;
- repeated string paths = 5;
-}
-
-message GetPanicFilesResponse {
- repeated string file_contents = 2;
-}
-
-message CancelLanguageServerWork {
- uint64 project_id = 1;
-
- oneof work {
- Buffers buffers = 2;
- LanguageServerWork language_server_work = 3;
- }
-
- message Buffers {
- repeated uint64 buffer_ids = 2;
- }
-
- message LanguageServerWork {
- uint64 language_server_id = 1;
- optional string token = 2;
- }
-}
-
-message Extension {
- string id = 1;
- string version = 2;
- bool dev = 3;
-}
-
-message SyncExtensions {
- repeated Extension extensions = 1;
-}
-
-message SyncExtensionsResponse {
- string tmp_dir = 1;
- repeated Extension missing_extensions = 2;
-}
-
-message InstallExtension {
- Extension extension = 1;
- string tmp_dir = 2;
-}
-
-message RegisterBufferWithLanguageServers{
- uint64 project_id = 1;
- uint64 buffer_id = 2;
-}
-
-message Stage {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- repeated string paths = 4;
-}
-
-message Unstage {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- repeated string paths = 4;
-}
-
-message Commit {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- optional string name = 4;
- optional string email = 5;
- string message = 6;
-}
-
-message OpenCommitMessageBuffer {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
-}
-
-message Push {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- string remote_name = 4;
- string branch_name = 5;
- optional PushOptions options = 6;
- uint64 askpass_id = 7;
-
- enum PushOptions {
- SET_UPSTREAM = 0;
- FORCE = 1;
- }
-}
-
-message Fetch {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- uint64 askpass_id = 4;
-}
-
-message GetRemotes {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- optional string branch_name = 4;
-}
-
-message GetRemotesResponse {
- repeated Remote remotes = 1;
-
- message Remote {
- string name = 1;
- }
-}
-
-message Pull {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- string remote_name = 4;
- string branch_name = 5;
- uint64 askpass_id = 6;
-}
-
-message RemoteMessageResponse {
- string stdout = 1;
- string stderr = 2;
-}
-
-message AskPassRequest {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- uint64 askpass_id = 4;
- string prompt = 5;
-}
-
-message AskPassResponse {
- string response = 1;
-}
-
-message GitGetBranches {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
-}
-
-message GitCreateBranch {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- string branch_name = 4;
-}
-
-message GitChangeBranch {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- string branch_name = 4;
-}
-
-message CheckForPushedCommits {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
-}
-
-message CheckForPushedCommitsResponse {
- repeated string pushed_to = 1;
-}
-
-message GitDiff {
- uint64 project_id = 1;
- reserved 2;
- uint64 repository_id = 3;
- DiffType diff_type = 4;
-
- enum DiffType {
- HEAD_TO_WORKTREE = 0;
- HEAD_TO_INDEX = 1;
- }
-}
-
-message GitDiffResponse {
- string diff = 1;
-}
-
-message GitInit {
- uint64 project_id = 1;
- string abs_path = 2;
- string fallback_branch_name = 3;
-}
-
-message LanguageServerIdForName {
- uint64 project_id = 1;
- uint64 buffer_id = 2;
- string name = 3;
-}
-
-message LanguageServerIdForNameResponse {
- optional uint64 server_id = 1;
-}
@@ -5,195 +5,20 @@ mod macros;
mod typed_envelope;
pub use error::*;
-pub use typed_envelope::*;
-
pub use prost::{DecodeError, Message};
-use serde::Serialize;
use std::{
- any::{Any, TypeId},
cmp,
- fmt::{self, Debug},
+ fmt::Debug,
iter, mem,
- path::{Path, PathBuf},
- sync::Arc,
time::{Duration, SystemTime, UNIX_EPOCH},
};
+pub use typed_envelope::*;
include!(concat!(env!("OUT_DIR"), "/zed.messages.rs"));
pub const SSH_PEER_ID: PeerId = PeerId { owner_id: 0, id: 0 };
pub const SSH_PROJECT_ID: u64 = 0;
-pub trait EnvelopedMessage: Clone + Debug + Serialize + Sized + Send + Sync + 'static {
- const NAME: &'static str;
- const PRIORITY: MessagePriority;
- fn into_envelope(
- self,
- id: u32,
- responding_to: Option<u32>,
- original_sender_id: Option<PeerId>,
- ) -> Envelope;
- fn from_envelope(envelope: Envelope) -> Option<Self>;
-}
-
-pub trait EntityMessage: EnvelopedMessage {
- type Entity;
- fn remote_entity_id(&self) -> u64;
-}
-
-pub trait RequestMessage: EnvelopedMessage {
- type Response: EnvelopedMessage;
-}
-
-pub trait AnyTypedEnvelope: 'static + Send + Sync {
- fn payload_type_id(&self) -> TypeId;
- fn payload_type_name(&self) -> &'static str;
- fn as_any(&self) -> &dyn Any;
- fn into_any(self: Box<Self>) -> Box<dyn Any + Send + Sync>;
- fn is_background(&self) -> bool;
- fn original_sender_id(&self) -> Option<PeerId>;
- fn sender_id(&self) -> PeerId;
- fn message_id(&self) -> u32;
-}
-
-pub enum MessagePriority {
- Foreground,
- Background,
-}
-
-impl<T: EnvelopedMessage> AnyTypedEnvelope for TypedEnvelope<T> {
- fn payload_type_id(&self) -> TypeId {
- TypeId::of::<T>()
- }
-
- fn payload_type_name(&self) -> &'static str {
- T::NAME
- }
-
- fn as_any(&self) -> &dyn Any {
- self
- }
-
- fn into_any(self: Box<Self>) -> Box<dyn Any + Send + Sync> {
- self
- }
-
- fn is_background(&self) -> bool {
- matches!(T::PRIORITY, MessagePriority::Background)
- }
-
- fn original_sender_id(&self) -> Option<PeerId> {
- self.original_sender_id
- }
-
- fn sender_id(&self) -> PeerId {
- self.sender_id
- }
-
- fn message_id(&self) -> u32 {
- self.message_id
- }
-}
-
-impl PeerId {
- pub fn from_u64(peer_id: u64) -> Self {
- let owner_id = (peer_id >> 32) as u32;
- let id = peer_id as u32;
- Self { owner_id, id }
- }
-
- pub fn as_u64(self) -> u64 {
- ((self.owner_id as u64) << 32) | (self.id as u64)
- }
-}
-
-impl Copy for PeerId {}
-
-impl Eq for PeerId {}
-
-impl Ord for PeerId {
- fn cmp(&self, other: &Self) -> cmp::Ordering {
- self.owner_id
- .cmp(&other.owner_id)
- .then_with(|| self.id.cmp(&other.id))
- }
-}
-
-impl PartialOrd for PeerId {
- fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> {
- Some(self.cmp(other))
- }
-}
-
-impl std::hash::Hash for PeerId {
- fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
- self.owner_id.hash(state);
- self.id.hash(state);
- }
-}
-
-impl fmt::Display for PeerId {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- write!(f, "{}/{}", self.owner_id, self.id)
- }
-}
-
-pub trait FromProto {
- fn from_proto(proto: String) -> Self;
-}
-
-pub trait ToProto {
- fn to_proto(self) -> String;
-}
-
-impl FromProto for PathBuf {
- #[cfg(target_os = "windows")]
- fn from_proto(proto: String) -> Self {
- proto.split("/").collect()
- }
-
- #[cfg(not(target_os = "windows"))]
- fn from_proto(proto: String) -> Self {
- PathBuf::from(proto)
- }
-}
-
-impl FromProto for Arc<Path> {
- fn from_proto(proto: String) -> Self {
- PathBuf::from_proto(proto).into()
- }
-}
-
-impl ToProto for PathBuf {
- #[cfg(target_os = "windows")]
- fn to_proto(self) -> String {
- self.components()
- .map(|comp| comp.as_os_str().to_string_lossy().to_string())
- .collect::<Vec<_>>()
- .join("/")
- }
-
- #[cfg(not(target_os = "windows"))]
- fn to_proto(self) -> String {
- self.to_string_lossy().to_string()
- }
-}
-
-impl ToProto for &Path {
- #[cfg(target_os = "windows")]
- fn to_proto(self) -> String {
- self.components()
- .map(|comp| comp.as_os_str().to_string_lossy().to_string())
- .collect::<Vec<_>>()
- .join("/")
- }
-
- #[cfg(not(target_os = "windows"))]
- fn to_proto(self) -> String {
- self.to_string_lossy().to_string()
- }
-}
-
messages!(
(AcceptTermsOfService, Foreground),
(AcceptTermsOfServiceResponse, Foreground),
@@ -949,6 +774,8 @@ mod tests {
#[test]
#[cfg(target_os = "windows")]
fn test_proto() {
+ use std::path::PathBuf;
+
fn generate_proto_path(path: PathBuf) -> PathBuf {
let proto = path.to_proto();
PathBuf::from_proto(proto)
@@ -1,7 +1,185 @@
-use crate::{PeerId, RequestMessage};
+use crate::{Envelope, PeerId};
use anyhow::{Result, anyhow};
+use serde::Serialize;
+use std::{
+ any::{Any, TypeId},
+ cmp,
+ fmt::{self, Debug},
+ path::{Path, PathBuf},
+ sync::Arc,
+};
use std::{marker::PhantomData, time::Instant};
+pub trait EnvelopedMessage: Clone + Debug + Serialize + Sized + Send + Sync + 'static {
+ const NAME: &'static str;
+ const PRIORITY: MessagePriority;
+ fn into_envelope(
+ self,
+ id: u32,
+ responding_to: Option<u32>,
+ original_sender_id: Option<PeerId>,
+ ) -> Envelope;
+ fn from_envelope(envelope: Envelope) -> Option<Self>;
+}
+
+pub trait EntityMessage: EnvelopedMessage {
+ type Entity;
+ fn remote_entity_id(&self) -> u64;
+}
+
+pub trait RequestMessage: EnvelopedMessage {
+ type Response: EnvelopedMessage;
+}
+
+pub trait AnyTypedEnvelope: 'static + Send + Sync {
+ fn payload_type_id(&self) -> TypeId;
+ fn payload_type_name(&self) -> &'static str;
+ fn as_any(&self) -> &dyn Any;
+ fn into_any(self: Box<Self>) -> Box<dyn Any + Send + Sync>;
+ fn is_background(&self) -> bool;
+ fn original_sender_id(&self) -> Option<PeerId>;
+ fn sender_id(&self) -> PeerId;
+ fn message_id(&self) -> u32;
+}
+
+pub enum MessagePriority {
+ Foreground,
+ Background,
+}
+
+impl<T: EnvelopedMessage> AnyTypedEnvelope for TypedEnvelope<T> {
+ fn payload_type_id(&self) -> TypeId {
+ TypeId::of::<T>()
+ }
+
+ fn payload_type_name(&self) -> &'static str {
+ T::NAME
+ }
+
+ fn as_any(&self) -> &dyn Any {
+ self
+ }
+
+ fn into_any(self: Box<Self>) -> Box<dyn Any + Send + Sync> {
+ self
+ }
+
+ fn is_background(&self) -> bool {
+ matches!(T::PRIORITY, MessagePriority::Background)
+ }
+
+ fn original_sender_id(&self) -> Option<PeerId> {
+ self.original_sender_id
+ }
+
+ fn sender_id(&self) -> PeerId {
+ self.sender_id
+ }
+
+ fn message_id(&self) -> u32 {
+ self.message_id
+ }
+}
+
+impl PeerId {
+ pub fn from_u64(peer_id: u64) -> Self {
+ let owner_id = (peer_id >> 32) as u32;
+ let id = peer_id as u32;
+ Self { owner_id, id }
+ }
+
+ pub fn as_u64(self) -> u64 {
+ ((self.owner_id as u64) << 32) | (self.id as u64)
+ }
+}
+
+impl Copy for PeerId {}
+
+impl Eq for PeerId {}
+
+impl Ord for PeerId {
+ fn cmp(&self, other: &Self) -> cmp::Ordering {
+ self.owner_id
+ .cmp(&other.owner_id)
+ .then_with(|| self.id.cmp(&other.id))
+ }
+}
+
+impl PartialOrd for PeerId {
+ fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> {
+ Some(self.cmp(other))
+ }
+}
+
+impl std::hash::Hash for PeerId {
+ fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
+ self.owner_id.hash(state);
+ self.id.hash(state);
+ }
+}
+
+impl fmt::Display for PeerId {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ write!(f, "{}/{}", self.owner_id, self.id)
+ }
+}
+
+pub trait FromProto {
+ fn from_proto(proto: String) -> Self;
+}
+
+pub trait ToProto {
+ fn to_proto(self) -> String;
+}
+
+impl FromProto for PathBuf {
+ #[cfg(target_os = "windows")]
+ fn from_proto(proto: String) -> Self {
+ proto.split("/").collect()
+ }
+
+ #[cfg(not(target_os = "windows"))]
+ fn from_proto(proto: String) -> Self {
+ PathBuf::from(proto)
+ }
+}
+
+impl FromProto for Arc<Path> {
+ fn from_proto(proto: String) -> Self {
+ PathBuf::from_proto(proto).into()
+ }
+}
+
+impl ToProto for PathBuf {
+ #[cfg(target_os = "windows")]
+ fn to_proto(self) -> String {
+ self.components()
+ .map(|comp| comp.as_os_str().to_string_lossy().to_string())
+ .collect::<Vec<_>>()
+ .join("/")
+ }
+
+ #[cfg(not(target_os = "windows"))]
+ fn to_proto(self) -> String {
+ self.to_string_lossy().to_string()
+ }
+}
+
+impl ToProto for &Path {
+ #[cfg(target_os = "windows")]
+ fn to_proto(self) -> String {
+ self.components()
+ .map(|comp| comp.as_os_str().to_string_lossy().to_string())
+ .collect::<Vec<_>>()
+ .join("/")
+ }
+
+ #[cfg(not(target_os = "windows"))]
+ fn to_proto(self) -> String {
+ self.to_string_lossy().to_string()
+ }
+}
+
pub struct Receipt<T> {
pub sender_id: PeerId,
pub message_id: u32,
@@ -1,9 +1,11 @@
#![allow(non_snake_case)]
+pub use ::proto::*;
+
use anyhow::anyhow;
use async_tungstenite::tungstenite::Message as WebSocketMessage;
use futures::{SinkExt as _, StreamExt as _};
-pub use proto::{Message as _, *};
+use proto::Message as _;
use std::time::Instant;
use std::{fmt::Debug, io};
@@ -32,10 +34,6 @@ impl<S> MessageStream<S> {
encoding_buffer: Vec::new(),
}
}
-
- pub fn inner_mut(&mut self) -> &mut S {
- &mut self.stream
- }
}
impl<S> MessageStream<S>
@@ -1,8 +1,8 @@
use super::{
Connection,
+ message_stream::{Message, MessageStream},
proto::{
- self, AnyTypedEnvelope, EnvelopedMessage, MessageStream, PeerId, Receipt, RequestMessage,
- TypedEnvelope,
+ self, AnyTypedEnvelope, EnvelopedMessage, PeerId, Receipt, RequestMessage, TypedEnvelope,
},
};
use anyhow::{Context as _, Result, anyhow};
@@ -67,7 +67,7 @@ pub struct Peer {
#[derive(Clone, Serialize)]
pub struct ConnectionState {
#[serde(skip)]
- outgoing_tx: mpsc::UnboundedSender<proto::Message>,
+ outgoing_tx: mpsc::UnboundedSender<Message>,
next_message_id: Arc<AtomicU32>,
#[allow(clippy::type_complexity)]
#[serde(skip)]
@@ -209,7 +209,7 @@ impl Peer {
_ = keepalive_timer => {
tracing::trace!(%connection_id, "keepalive interval: pinging");
futures::select_biased! {
- result = writer.write(proto::Message::Ping).fuse() => {
+ result = writer.write(Message::Ping).fuse() => {
tracing::trace!(%connection_id, "keepalive interval: done pinging");
result.context("failed to send keepalive")?;
tracing::trace!(%connection_id, "keepalive interval: resetting after pinging");
@@ -226,7 +226,7 @@ impl Peer {
tracing::trace!(%connection_id, "incoming rpc message: received");
tracing::trace!(%connection_id, "receive timeout: resetting");
receive_timeout.set(create_timer(RECEIVE_TIMEOUT).fuse());
- if let (proto::Message::Envelope(incoming), received_at) = incoming {
+ if let (Message::Envelope(incoming), received_at) = incoming {
tracing::trace!(%connection_id, "incoming rpc message: processing");
futures::select_biased! {
result = incoming_tx.send((incoming, received_at)).fuse() => match result {
@@ -469,7 +469,7 @@ impl Peer {
.insert(envelope.id, tx);
connection
.outgoing_tx
- .unbounded_send(proto::Message::Envelope(envelope))
+ .unbounded_send(Message::Envelope(envelope))
.map_err(|_| anyhow!("connection was closed"))?;
Ok(())
});
@@ -500,7 +500,7 @@ impl Peer {
.insert(message_id, tx);
connection
.outgoing_tx
- .unbounded_send(proto::Message::Envelope(
+ .unbounded_send(Message::Envelope(
request.into_envelope(message_id, None, None),
))
.map_err(|_| anyhow!("connection was closed"))?;
@@ -545,11 +545,9 @@ impl Peer {
let message_id = connection
.next_message_id
.fetch_add(1, atomic::Ordering::SeqCst);
- connection
- .outgoing_tx
- .unbounded_send(proto::Message::Envelope(
- message.into_envelope(message_id, None, None),
- ))?;
+ connection.outgoing_tx.unbounded_send(Message::Envelope(
+ message.into_envelope(message_id, None, None),
+ ))?;
Ok(())
}
@@ -557,7 +555,7 @@ impl Peer {
let connection = self.connection_state(receiver_id)?;
connection
.outgoing_tx
- .unbounded_send(proto::Message::Envelope(message))?;
+ .unbounded_send(Message::Envelope(message))?;
Ok(())
}
@@ -573,7 +571,7 @@ impl Peer {
.fetch_add(1, atomic::Ordering::SeqCst);
connection
.outgoing_tx
- .unbounded_send(proto::Message::Envelope(message.into_envelope(
+ .unbounded_send(Message::Envelope(message.into_envelope(
message_id,
None,
Some(sender_id.into()),
@@ -592,7 +590,7 @@ impl Peer {
.fetch_add(1, atomic::Ordering::SeqCst);
connection
.outgoing_tx
- .unbounded_send(proto::Message::Envelope(response.into_envelope(
+ .unbounded_send(Message::Envelope(response.into_envelope(
message_id,
Some(receipt.message_id),
None,
@@ -610,7 +608,7 @@ impl Peer {
connection
.outgoing_tx
- .unbounded_send(proto::Message::Envelope(message.into_envelope(
+ .unbounded_send(Message::Envelope(message.into_envelope(
message_id,
Some(receipt.message_id),
None,
@@ -629,7 +627,7 @@ impl Peer {
.fetch_add(1, atomic::Ordering::SeqCst);
connection
.outgoing_tx
- .unbounded_send(proto::Message::Envelope(response.into_envelope(
+ .unbounded_send(Message::Envelope(response.into_envelope(
message_id,
Some(receipt.message_id),
None,
@@ -652,7 +650,7 @@ impl Peer {
.fetch_add(1, atomic::Ordering::SeqCst);
connection
.outgoing_tx
- .unbounded_send(proto::Message::Envelope(response.into_envelope(
+ .unbounded_send(Message::Envelope(response.into_envelope(
message_id,
Some(request_message_id),
None,
@@ -2,15 +2,16 @@ pub mod auth;
mod conn;
mod extension;
mod llm;
+mod message_stream;
mod notification;
mod peer;
-pub mod proto;
pub use conn::Connection;
pub use extension::*;
pub use llm::*;
pub use notification::*;
pub use peer::*;
+pub use proto;
pub use proto::{Receipt, TypedEnvelope, error::*};
mod macros;