Protobuf

This is a more up-to-date version of goval's protobuf, if you would like it to be updated dm PotentialStyx#2158 on discord.
Download

// @replit/protocol 0.3.12
syntax = "proto3";

package api;

import "google/protobuf/timestamp.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/field_mask.proto";

message Command {
	int32 channel = 1;
	int32 session = 2;
	string ref = 1000;
	map<string,string> traceInfo = 1001;
	oneof body {
		OpenChannel openChan = 3;
		OpenChannelRes openChanRes = 4;
		CloseChannel closeChan = 5;
		CloseChannelRes closeChanRes = 6;
		ContainerState containerState = 9;
		PortOpen portOpen = 10;
		PortClose portClose = 48;
		Toast toast = 11;
		ProtocolError protocolError = 45;
		Redirect redirect = 12;
		AlwaysOn alwaysOn = 13;
		RunMain runMain = 16;
		Clear clear = 17;
		string eval = 20;
		string result = 21;
		string input = 22;
		string output = 23;
		string error = 24;
		string stderr = 46;
		string log = 47;
		string record = 422;
		SaneTerm saneTerm = 26;
		ResizeTerm resizeTerm = 27;
		State state = 28;
		OK ok = 30;
		File persist = 31;
		File persistMirror = 41;
		File write = 32;
		File remove = 33;
		Move move = 34;
		File tryRemove = 36;
		File mkdir = 39;
		File stat = 368;
		StatResult statRes = 369;
		TransferStart transferStart = 320;
		TransferChunk transferChunk = 321;
		TransferComplete transferComplete = 322;
		Transfer transferCancel = 323;
		Transfer transfer = 324;
		File read = 35;
		File readdir = 37;
		Files files = 38;
		File file = 40;
		CheckChanges checkChanges = 42;
		Files changedFiles = 43;
		LintResults lintResults = 44;
		ContainedTest runContainedTest = 70;
		TestResult testResult = 71;
		string debuggerStart = 90;
		RunMain debuggerStep = 91;
		DebugStatus debuggerStatus = 92;
		EnsurePackages ensurePackages = 100;
		Ping ping = 120;
		Pong pong = 121;
		Hello hello = 122;
		Goodbye goodbye = 123;
		ProxyGoingAway proxyGoingAway = 124;
		Hint hint = 130;
		Connect connect = 150;
		Send send = 151;
		Recv recv = 152;
		Disconnect disconnect = 153;
		FileAuthReq fileAuthReq = 200;
		FileAuthRes fileAuthRes = 201;
		MultiFileAuthRes mutliFileAuthRes = 202;
		ListObjects listObjects = 205;
		ListObjectsResp listObjectsResp = 206;
		OTPacket ot = 220;
		OTStatus otstatus = 221;
		OTLinkFile otLinkFile = 222;
		OTLinkFileResponse otLinkFileResponse = 229;
		OTCursor otNewCursor = 223;
		OTCursor otDeleteCursor = 224;
		OTFetchRequest otFetchRequest = 225;
		OTFetchResponse otFetchResponse = 226;
		OTTransformSelectionRequest otTransformSelectionRequest = 227;
		OTTransformSelectionResponse otTransformSelectionResponse = 228;
		Flush flush = 251;
		Debug debug = 230;
		StartVCR startVCR = 231;
		ReadVCR readVCR = 232;
		VCRLog VCRLog = 233;
		Auth auth = 235;
		ExecInfo execInfo = 240;
		SubscribeFile subscribeFile = 256;
		FileEvent fileEvent = 257;
		Roster roster = 260;
		User join = 261;
		User part = 262;
		OpenFile openFile = 263;
		FileOpened fileOpened = 264;
		FollowUser followUser = 265;
		UnfollowUser unfollowUser = 268;
		UpdateSessionTimestamp updateSessionTimestamp = 266;
		SessionTimestampUpdated sessionTimestampUpdated = 267;
		Exec exec = 270;
		PackageSearch packageSearch = 280;
		PackageSearchResp packageSearchResp = 281;
		PackageInfo packageInfo = 282;
		PackageInfoResp packageInfoResp = 283;
		PackageAdd packageAdd = 284;
		PackageRemove packageRemove = 285;
		PackageInstall packageInstall = 286;
		PackageListSpecfile packageListSpecfile = 287;
		PackageListSpecfileResp packageListSpecfileResp = 288;
		PackageCacheSave packageCacheSave = 289;
		ChatMessage chatMessage = 310;
		ChatTyping chatTyping = 311;
		ChatScrollback chatScrollback = 312;
		FSSnapshot fsSnapshot = 330;
		FSSnapshotEvent fsSnapshotEvent = 388;
		FSLock fsTakeLock = 331;
		FSLock fsReleaseLock = 332;
		bool hasCap = 335;
		SnapshotEvent snapshotEvent = 389;
		bool NoninteractiveFSChangeEvent = 392;
		Pid1Config pid1Config = 340;
		Metrics metrics = 350;
		BootStatus bootStatus = 351;
		ReadMetaRequest readMetaRequest = 360;
		ReadMetaResponse readMetaResponse = 384;
		WriteMetaRequest writeMetaRequest = 361;
		WriteMetaResponse writeMetaResponse = 385;
		AppendMetaRequest appendMetaRequest = 362;
		AppendMetaResponse appendMetaResponse = 386;
		Audio audio = 363;
		PprofRequest pprofRequest = 364;
		PprofResponse pprofResponse = 365;
		Audio2 audio2 = 366;
		PTYConfig PTYConfig = 367;
		DebugMain debugMain = 370;
		DebugState debugState = 371;
		DebugMainReply debugMainReply = 372;
		DebugInput debugInput = 373;
		DebugOutput debugOutput = 374;
		DebugStop debugStop = 375;
		DebugLeave debugLeave = 376;
		DebugSessions debugSessions = 377;
		DebugAddBreakpointRequest debugAddBreakpointRequest = 380;
		DebugUpdateBreakpointRequest debugUpdateBreakpointRequest = 387;
		DebugRemoveBreakpointRequest debugRemoveBreakpointRequest = 381;
		DebugBreakpointEvent debugBreakpointEvent = 383;
		DotReplitGetRequest dotReplitGetRequest = 378;
		DotReplitGetResponse dotReplitGetResponse = 379;
		RunConfigGetRequest runConfigGetRequest = 390;
		RunConfigGetResponse runConfigGetResponse = 391;
		DotReplitUpdateRequest dotReplitUpdateRequest = 395;
		DotReplitUpdateResponse dotReplitUpdateResponse = 396;
		StartLSP startLSP = 345;
		FirewallDenied firewallDenied = 393;
		NixPackageAddRequest nixPackageAddRequest = 410;
		NixPackageAddResponse nixPackageAddResponse = 411;
		NixPackageRemoveRequest nixPackageRemoveRequest = 412;
		NixPackageRemoveResponse nixPackageRemoveResponse = 413;
		NixPackageListRequest nixPackageListRequest = 414;
		NixPackageListResponse nixPackageListResponse = 415;
		NixChannelsRequest nixChannelsRequest = 416;
		NixChannelsResponse nixChannelsResponse = 417;
		NixChannelLatestStableRequest nixChannelLatestStableRequest = 418;
		NixChannelLatestStableResponse nixChannelLatestStableResponse = 419;
		NixPackageSearchRequest nixPackageSearchRequest = 420;
		NixPackageSearchResponse nixPackageSearchResponse = 421;
		UserEvent userEvent = 423;
		ReplspaceApiOpenFile replspaceApiOpenFile = 424;
		ReplspaceApiCloseFile replspaceApiCloseFile = 425;
		ReplspaceApiGetGitHubToken replspaceApiGetGitHubToken = 426;
		ReplspaceApiGitHubToken replspaceApiGitHubToken = 427;
		Focused focused = 428;
		NixModulesGetRequest nixModulesGetRequest = 429;
		NixModulesGetResponse nixModulesGetResponse = 430;
		NixModulesChanged nixModulesChanged = 431;
		NixModulesBuildRequest nixModulesBuildRequest = 432;
		PackageSetPackagerRequest packageSetPackagerRequest = 433;
		PackageSetPackagerResponse packageSetPackagerResp = 434;
		ToolchainGetRequest toolchainGetRequest = 435;
		ToolchainGetResponse toolchainGetResponse = 436;
		ToolchainChanged toolchainChanged = 437;
		ReplspaceApiOpenMultipleFiles replspaceApiOpenMultipleFiles = 438;
		NixModulesGetRegistryRequest nixModulesGetRegistryRequest = 439;
		NixModulesGetRegistryResponse nixModulesGetRegistryResponse = 440;
	}
}

message NixPackageAddRequest {
	repeated string packages = 1;
}

message NixPackageAddResponse {
}

message NixPackageRemoveRequest {
	repeated string packages = 1;
}

message NixPackageRemoveResponse {
}

message NixPackageListRequest {
}

message NixPackageListResponse {
	repeated NixPackage packages = 1;
}

message NixPackage {
	string name = 1;
	string description = 2;
	string version = 3;
	repeated string homepageURL = 4;
	repeated string maintainers = 5;
	repeated string licenses = 6;
}

message NixChannelsRequest {
}

message NixChannelsResponse {
	repeated string channels = 1;
}

message NixChannelLatestStableRequest {
}

message NixChannelLatestStableResponse {
	string channel = 1;
}

message NixPackageSearchRequest {
	string query = 1;
}

message NixPackageSearchResponse {
	repeated NixPackage packages = 1;
}

message StartLSP {
	string language = 1;
	string languageServerId = 2;
}

message Audio {
	repeated int32 data = 1;
}

message Audio2 {
	repeated sint32 data = 1;
	int64 samples = 2;
}

message Preconditions {
	int64 generation = 1;
	int64 metageneration = 2;
	bool doesNotExist = 3;
}

message ReadMetaRequest {
	string key = 1;
	bool exists = 2;
	bytes data = 3;
}

message ReadMetaResponse {
	string key = 1;
	bool exists = 2;
	bytes data = 3;
	int64 generation = 4;
	int64 metageneration = 5;
}

message WriteMetaRequest {
	string key = 1;
	bytes data = 2;
	Preconditions preconditions = 5;
}

message WriteMetaResponse {
	int64 generation = 1;
	int64 metageneration = 2;
}

message AppendMetaRequest {
	string key = 1;
	bytes data = 2;
	Preconditions preconditions = 5;
}

message AppendMetaResponse {
	int64 generation = 1;
	int64 metageneration = 2;
}

message BootStatus {
	enum Stage {
		HANDSHAKE = 0;
		ACQUIRING = 3;
		COMPLETE = 4;
		PROXY = 5;
		PULL_FILES = 6;
		LOAD_BLOCK = 7;
		BLOCK_MIGRATION = 9;
		RETRY = 8;
	}

	BootStatus.Stage stage = 1;
	uint32 progress = 2;
	uint32 total = 3;
}

message Pid1Config {
	string cwd = 1;
	string language = 2;
	map<string,string> env = 3;
	bool noStore = 4;
	bool noninteractiveFSChange = 5;
}

message FSLock {
	string name = 1;
}

message FSSnapshot {
}

message FSSnapshotEvent {
	repeated string sources = 1;
}

message SnapshotEvent {
	repeated string sources = 1;
}

message SubscribeFile {
	repeated File files = 1;
}

message FileEvent {
	enum Op {
		Create = 0;
		Move = 1;
		Remove = 2;
		Modify = 3;
	}

	File file = 1;
	File dest = 3;
	FileEvent.Op op = 2;
}

message Flush {
	enum Consistency {
		PermanentStorage = 0;
		Disk = 1;
	}

	Flush.Consistency consistency = 1;
}

message OTLinkFile {
	File file = 1;
	bool highConsistency = 2;
	bool OBSOLETEUseModTime = 3;
}

message OTLinkFileResponse {
	uint32 version = 1;
	File linkedFile = 2;
}

message Auth {
	string token = 1;
	string containerID = 2;
}

message VCREntry {
	enum Direction {
		IN = 0;
		OUT = 1;
	}

	uint64 timestamp = 1;
	VCREntry.Direction direction = 2;
	Command command = 3;
	string uid = 4;
	string replid = 5;
}

message StartVCR {
}

message ReadVCR {
}

message VCRLog {
	repeated VCREntry log = 1;
	File logfile = 2;
}

message ExecInfo {
	repeated string command = 1;
	string reason = 2;
}

message Debug {
	string text = 1;
}

enum FileAuthMethod {
	GET = 0;
	HEAD = 1;
	PUT = 2;
	DELETE = 3;
}

message FileAuthReq {
	File file = 1;
	FileAuthMethod method = 2;
}

message MultiFileAuthRes {
	FileAuthRes put = 1;
	FileAuthRes del = 2;
	FileAuthRes get = 3;
}

message FileAuthRes {
	File file = 1;
	string url = 2;
	FileAuthMethod method = 3;
	int64 expire = 4;
	string error = 5;
	bool replError = 7;
}

message ListObjects {
	string prefix = 1;
}

message ListObjectsResp {
	repeated string objects = 1;
}

message Disconnect {
	string error = 1;
}

message Send {
	bytes buff = 1;
}

message Recv {
	bytes buff = 1;
}

message Connect {
	string proto = 1;
	string addr = 2;
}

message Hint {
	string text = 1;
}

message Ping {
}

message Pong {
}

message Hello {
	uint32 userid = 1;
	string username = 2;
	string token = 3;
}

message Goodbye {
}

enum State {
	Stopped = 0;
	Running = 1;
}

message CheckChanges {
}

message EnsurePackages {
	bool install = 1;
	File file = 2;
}

message Start {
}

message DebugStatus {
	bool done = 1;
	repeated StackFrame stack = 2;
}

message StackFrame {
	string function = 1;
	uint32 line = 2;
}

message ContainedTest {
	File suite = 1;
	repeated File project = 2;
}

message TestResult {
	bool passed = 1;
	string stderr = 2;
	repeated TestFailure fails = 3;
}

message TestFailure {
	string name = 1;
	string trace = 2;
}

message ResizeTerm {
	uint32 rows = 1;
	uint32 cols = 2;
}

message SaneTerm {
}

message LintResults {
	repeated LintResult results = 1;
}

message LintResult {
	string text = 1;
	int32 row = 2;
	int32 column = 3;
	string type = 4;
}

message OK {
}

message Move {
	string oldPath = 1;
	string newPath = 2;
}

message Files {
	repeated File files = 1;
}

message StatResult {
	bool exists = 1;
	File.Type type = 2;
	int64 size = 3;
	string fileMode = 4;
	int64 modTime = 5;
}

message File {
	enum Type {
		REGULAR = 0;
		DIRECTORY = 1;
	}

	string path = 1;
	File.Type type = 2;
	bytes content = 3;
}

message Transfer {
	string id = 1;
}

message TransferStart {
	string path = 1;
	int64 size = 2;
}

message TransferChunk {
	string id = 1;
	bytes content = 2;
}

message TransferComplete {
	string id = 1;
	uint32 crc32 = 2;
}

message Clear {
}

message Toast {
	string text = 1;
}

message ProtocolError {
	string text = 1;
}

message Redirect {
	string url = 1;
}

message AlwaysOn {
	bool enable = 1;
}

message RunMain {
	enum RunMode {
		RUN = 0;
		RECORD = 1;
	}

	RunMain.RunMode runMode = 1;
	bool idempotent = 2;
	string filePath = 3;
	string runnerId = 4;
}

message OpenChannel {
	enum Action {
		CREATE = 0;
		ATTACH = 1;
		ATTACH_OR_CREATE = 2;
	}

	string service = 1;
	string name = 2;
	OpenChannel.Action action = 3;
	int32 id = 4;
}

message OpenChannelRes {
	enum State {
		CREATED = 0;
		ATTACHED = 1;
		ERROR = 2;
	}

	int32 id = 1;
	OpenChannelRes.State state = 2;
	string error = 3;
}

message CloseChannel {
	enum Action {
		DISCONNECT = 0;
		TRY_CLOSE = 1;
		CLOSE = 2;
	}

	int32 id = 1;
	CloseChannel.Action action = 2;
}

message CloseChannelRes {
	enum Status {
		DISCONNECT = 0;
		CLOSE = 1;
		NOTHING = 2;
	}

	int32 id = 1;
	CloseChannelRes.Status status = 2;
}

message ContainerState {
	enum State {
		SLEEP = 0;
		READY = 1;
	}

	ContainerState.State state = 1;
}

message PortOpen {
	bool forwarded = 1;
	uint32 port = 2;
	string address = 3;
	uint32 externalPort = 4;
}

message PortClose {
	uint32 port = 2;
	string address = 3;
	uint32 externalPort = 4;
}

message OTFetchRequest {
	uint32 versionFrom = 1;
	uint32 versionTo = 2;
}

message OTFetchResponse {
	repeated OTPacket packets = 1;
}

message OTTransformSelectionRequest {
	uint32 indexStart = 1;
	uint32 indexEnd = 2;
	uint32 versionFrom = 3;
	uint32 versionTo = 4;
}

message OTTransformSelectionResponse {
	uint32 indexStart = 1;
	uint32 indexEnd = 2;
	uint32 version = 3;
}

message OTPacket {
	enum Author {
		USER = 0;
		GHOSTWRITER = 1;
	}

	uint32 spookyVersion = 1;
	uint32 version = 5;
	repeated OTOpComponent op = 2;
	uint32 crc32 = 3;
	google.protobuf.Timestamp committed = 4;
	uint32 nonce = 6;
	uint32 userId = 7;
	OTPacket.Author author = 8;
}

message OTOpComponent {
	oneof opComponent {
		uint32 skip = 1;
		uint32 delete = 2;
		string insert = 3;
	}
}

message OTStatus {
	string contents = 1;
	uint32 version = 2;
	File linkedFile = 3;
	repeated OTCursor cursors = 4;
}

message OTCursor {
	uint32 position = 1;
	uint32 selectionStart = 2;
	uint32 selectionEnd = 3;
	User user = 4;
	string id = 5;
}

message ChatMessage {
	string username = 1;
	string text = 2;
}

message ChatTyping {
	string username = 1;
	bool typing = 2;
}

message User {
	uint32 id = 1;
	string name = 2;
	repeated string roles = 3;
	int32 session = 4;
	repeated string teams = 5;
	string bio = 6;
	string url = 7;
	string profileImage = 8;
}

message Roster {
	repeated User user = 1;
	repeated FileOpened files = 2;
}

message OpenFile {
	string file = 1;
}

message FileOpened {
	uint32 userId = 1;
	string file = 2;
	int32 session = 3;
	google.protobuf.Timestamp timestamp = 4;
}

message ReplspaceApiOpenFile {
	string file = 1;
	bool waitForClose = 2;
	string nonce = 3;
}

message ReplspaceApiCloseFile {
	string file = 1;
	string nonce = 2;
}

message ReplspaceApiGetGitHubToken {
	string nonce = 1;
}

message ReplspaceApiGitHubToken {
	string nonce = 1;
	string token = 2;
}

message ReplspaceApiOpenMultipleFiles {
	repeated string files = 1;
}

message Focused {
}

message UpdateSessionTimestamp {
}

message SessionTimestampUpdated {
	int32 session = 1;
	google.protobuf.Timestamp timestamp = 2;
}

message FollowUser {
	int32 session = 1;
}

message UnfollowUser {
	int32 session = 1;
}

message Exec {
	enum Lifecycle {
		NON_BLOCKING = 0;
		BLOCKING = 1;
		STDIN = 2;
	}

	repeated string args = 1;
	map<string,string> env = 2;
	bool blocking = 3;
	Exec.Lifecycle lifecycle = 6;
	bool splitStderr = 4;
	bool splitLogs = 5;
}

message Package {
	string name = 1;
	string spec = 2;
	string description = 10;
	string version = 11;
	string homepageURL = 12;
	string documentationURL = 13;
	string sourceCodeURL = 14;
	string bugTrackerURL = 15;
	string author = 16;
	string license = 17;
	repeated Package dependencies = 18;
}

message PackageSetPackagerRequest {
	string packagerId = 1;
}

message PackageSetPackagerResponse {
	string packagerId = 1;
}

message PackageSearch {
	string query = 1;
}

message PackageSearchResp {
	repeated Package results = 1;
}

message PackageInfo {
	Package pkg = 1;
}

message PackageInfoResp {
	Package pkg = 1;
}

message PackageAdd {
	repeated Package pkgs = 1;
}

message PackageRemove {
	repeated Package pkgs = 1;
}

message PackageInstall {
	bool fromHosting = 1;
}

message PackageListSpecfile {
}

message PackageListSpecfileResp {
	repeated Package pkgs = 1;
}

message PackageCacheSave {
}

message ChatScrollback {
	repeated ChatMessage scrollback = 1;
}

message Metrics {
	repeated bytes prometheusMetricFamilies = 1;
}

message PprofRequest {
	string id = 1;
	oneof body {
		PprofCpuProfileRequest pprofCpuProfileRequest = 2;
		PprofHeapProfileRequest pprofHeapProfileRequest = 3;
		PprofAllocsProfileRequest pprofAllocsProfileRequest = 4;
		PprofBlockProfileRequest pprofBlockProfileRequest = 5;
		PprofMutexProfileRequest pprofMutexProfileRequest = 6;
	}
}

message PprofAllocsProfileRequest {
	bool debug = 1;
}

message PprofBlockProfileRequest {
	bool debug = 1;
}

message PprofCpuProfileRequest {
	int64 seconds = 1;
}

message PprofHeapProfileRequest {
	bool gc = 1;
	bool debug = 2;
}

message PprofMutexProfileRequest {
	bool debug = 1;
}

message PprofResponse {
	string id = 1;
	bytes profile = 2;
}

message PTYConfig {
	bool pipeMode = 1;
}

message DebugMain {
	string session = 1;
	bool readOnly = 2;
	string filePath = 3;
	string debuggerId = 4;
}

message DebugMainReply {
	enum Protocol {
		DAP = 0;
	}

	bool joined = 1;
	DebugMainReply.Protocol protocol = 2;
}

message DebugState {
	string session = 1;
	State state = 2;
}

message DebugInput {
	string session = 1;
	oneof stream {
		string input = 2;
		string adapterInput = 3;
	}
}

message DebugOutput {
	string session = 1;
	oneof stream {
		string output = 2;
		string adapterOutput = 3;
	}
}

message DebugStop {
	string session = 1;
}

message DebugLeave {
	string session = 1;
}

message DebugSessions {
	map<string,State> sessions = 1;
}

message DotReplitGetRequest {
}

message DotReplitGetResponse {
	DotReplit dotReplit = 1;
}

message RunConfigGetRequest {
}

message RunConfigGetResponse {
	message Run {
		Exec compile = 1;
		Exec run = 2;
	}

	oneof config {
		DotReplitInterp interp = 1;
		RunConfigGetResponse.Run run = 2;
	}
}

message DotReplitUpdateOp {
	string op = 1;
	string path = 2;
	string value = 3;
}

message DotReplitUpdateRequest {
	repeated DotReplitUpdateOp ops = 1;
}

message DotReplitUpdateResponse {
}

message DebugAddBreakpointRequest {
	string path = 1;
	uint32 otVersion = 2;
	uint32 otIndex = 3;
	bool sessionLocal = 6;
	int32 line = 4;
	string logMessage = 5;
}

message DebugUpdateBreakpointRequest {
	string breakpointId = 1;
	string logMessage = 2;
}

message DebugRemoveBreakpointRequest {
	string breakpointId = 2;
}

message DebugBreakpointEvent {
	string path = 1;
	string absolutePath = 3;
	repeated DebugBreakpoint breakpoints = 2;
}

message DebugBreakpoint {
	string breakpointId = 1;
	int32 line = 2;
	uint32 otVersion = 3;
	uint32 otIndex = 4;
	bool sessionLocal = 6;
	string logMessage = 5;
}

message DotReplit {
	Exec run = 1;
	Exec compile = 2;
	DebuggerConfig debugger = 3;
	string language = 4;
	Exec onBoot = 5;
	DotReplitPackager packager = 6;
	DotReplitInterp interpreter = 7;
	string entrypoint = 8;
	map<string,DotReplitLanguage> languages = 9;
	DotReplitUnitTest unitTest = 10;
	repeated string hidden = 11;
	NixConfig nix = 12;
	bool audio = 13;
	HostingConfig hosting = 14;
	map<string,string> env = 15;
	GitHubImportConfig gitHubImport = 16;
	AuthConfig auth = 17;
	repeated DotReplitHint hintsList = 18;
	repeated DotReplitPort ports = 19;
	repeated DotReplitEnvVar orderedEnv = 20;
	repeated string refreshWebViewOnFileChange = 21;
	DeploymentConfig deployment = 22;
	repeated string modules = 23;
	ExtensionConfig extension = 24;
}

message DotReplitEnvVar {
	string key = 1;
	string value = 2;
}

message DotReplitPort {
	uint32 localPort = 1;
	uint32 externalPort = 2;
}

message DotReplitHint {
	string regex = 1;
	string message = 2;
}

message GitHubImportConfig {
	repeated string requiredFiles = 1;
}

message DeploymentConfig {
	enum Target {
		GCE = 0;
		CLOUDRUN = 1;
		STATIC = 2;
	}

	Exec run = 1;
	Exec build = 2;
	bool ignorePorts = 3;
	DeploymentConfig.Target target = 4;
	string publicDir = 5;
}

message ExtensionConfig {
	bool isExtension = 1;
	string extensionID = 2;
	string buildCommand = 3;
	string outputDirectory = 4;
}

message NixConfig {
	string channel = 1;
}

message HostingConfig {
	string route = 1;
	string directory = 2;
}

message AuthConfig {
	bool pageEnabled = 1;
	string pageTitle = 2;
	string pageDescription = 3;
	string pageColor = 4;
	string pageImage = 5;
	bool buttonEnabled = 6;
}

message DotReplitInterp {
	Exec command = 1;
	bytes prompt = 2;
}

message DotReplitLanguage {
	string pattern = 1;
	string syntax = 2;
	LanguageServerConfig languageServer = 3;
}

message LanguageServerConfig {
	Exec startCommand = 1;
	string configurationJson = 2;
	string initializationOptionsJson = 3;
}

message DotReplitPackager {
	Exec afterInstall = 1;
	string language = 4;
	DotReplitPackagerFeatures features = 5;
	map<string,string> env = 6;
	repeated string ignoredPaths = 2;
	repeated string ignoredPackages = 3;
}

message DotReplitPackagerFeatures {
	bool packageSearch = 1;
	bool guessImports = 2;
	bool enabledForHosting = 3;
}

message DotReplitUnitTest {
	string language = 1;
}

message DebuggerConfig {
	bool support = 1;
	CompileConfig compile = 2;
	DapConfig interactive = 3;
	TimeTravelConfig timeTravel = 4;
	string dapTransport = 5;
	int64 dapConnectTimeout = 6;
	DapIntegratedAdapterConfig dapIntegratedAdapter = 7;
	Exec dapStartCommand = 8;
	google.protobuf.Struct dapInitializeMessage = 9;
	google.protobuf.Struct dapLaunchMessage = 10;
}

message CompileConfig {
	Exec command = 1;
	bool onlyMain = 2;
	bool noFileArgs = 3;
}

message DapConfig {
	string transport = 1;
	int64 connectTimeout = 2;
	DapIntegratedAdapterConfig integratedAdapter = 3;
	Exec startCommand = 4;
	google.protobuf.Struct initializeMessage = 5;
	google.protobuf.Struct launchMessage = 6;
}

message TimeTravelConfig {
	Exec record = 1;
	DapConfig debug = 2;
}

message DapIntegratedAdapterConfig {
	string dapTcpAddress = 1;
}

message ProxyGoingAway {
}

message FirewallDenied {
}

message ReplLogMessage {
	google.protobuf.Timestamp timestamp = 1;
	string replId = 2;
	string logLine = 3;
	string userName = 4;
}

message UserEvent {
	string eventName = 1;
	google.protobuf.Struct eventData = 2;
	int32 version = 3;
}

message NixModulesGetRequest {
}

message NixModulesGetResponse {
	repeated NixModule modules = 1;
}

message NixModule {
	string id = 1;
	string version = 2;
	string name = 3;
	string description = 4;
	repeated RunOption runners = 5;
	repeated DebuggerOption debuggers = 6;
	repeated PackagerOption packagers = 7;
	repeated LanguageServerOption languageServers = 8;
	string buildType = 9;
	repeated string resolutionPath = 10;
	string resolvedId = 11;
	string referencedId = 12;
}

message NixModulesChanged {
	repeated NixModule modules = 1;
}

message NixModulesBuildRequest {
}

message NixModulesGetRegistryRequest {
}

message NixModulesGetRegistryResponse {
	repeated NixModulesRegistryEntry modules = 1;
	map<string,NixModulesUpgradeMapEntry> autoUpgrade = 2;
	map<string,NixModulesUpgradeMapEntry> recommendUpgrade = 3;
}

message NixModulesRegistryEntry {
	string id = 1;
	string name = 2;
	string description = 3;
	int32 version = 4;
	string tag = 5;
	repeated string tags = 6;
	string commit = 7;
	string path = 8;
}

message NixModulesUpgradeMapEntry {
	string to = 1;
	string changelog = 2;
}

message ToolchainGetRequest {
}

message ToolchainConfigs {
	string entrypoint = 1;
	repeated RunOption runs = 2;
	repeated DebuggerOption debuggers = 3;
	repeated LanguageServerOption languageServers = 4;
	repeated PackagerOption packagers = 5;
}

message ToolchainGetResponse {
	ToolchainConfigs configs = 1;
}

message ToolchainChanged {
	ToolchainConfigs configs = 1;
}

message RunOption {
	string id = 1;
	string name = 2;
	bool fileParam = 3;
	string language = 4;
	FileTypeAttrs fileTypeAttrs = 5;
}

message DebuggerOption {
	string id = 1;
	string name = 2;
	bool fileParam = 3;
	string language = 4;
	FileTypeAttrs fileTypeAttrs = 5;
}

message LanguageServerOption {
	string id = 1;
	string name = 2;
	string language = 3;
	FileTypeAttrs fileTypeAttrs = 4;
	LanguageServerConfig config = 5;
}

message FileTypeAttrs {
	repeated string extensions = 1;
	repeated string files = 2;
	string filePattern = 3;
}

message PackagerOption {
	string id = 1;
	string name = 2;
	string language = 3;
	repeated string packagerFiles = 4;
	bool enabledForHosting = 5;
	bool packageSearch = 6;
	bool guessImports = 7;
}

message ReplDomainDoubleDash {
	string user = 1;
	string slug = 2;
	string suffix = 3;
}

message ReplDomainDots {
	string user = 1;
	string slug = 2;
	string suffix = 3;
}

message ReplDomainSingleDomain {
	string user = 1;
	string suffix = 2;
}

message ReplDomainId {
	string id = 1;
	string suffix = 2;
}

message ReplDomain {
	oneof kind {
		string custom = 1;
		ReplDomainId id = 2;
		ReplDomainDoubleDash doubleDash = 3;
		ReplDomainDots dots = 4;
		ReplDomainSingleDomain singleDomain = 5;
	}
}

message ReplToken {
	message ClassroomMetadata {
		string id = 1;
		string language = 2;
	}

	message ReplID {
		string id = 1;
		string sourceRepl = 2;
	}

	enum WireFormat {
		PROTOBUF = 0;
		JSON = 1;
	}

	message Presenced {
		uint32 bearerID = 1;
		string bearerName = 2;
	}

	google.protobuf.Timestamp iat = 1;
	google.protobuf.Timestamp exp = 2;
	string salt = 3;
	string cluster = 4;
	repl.Persistence persistence = 6;
	repl.ResourceLimits resourceLimits = 10;
	repl.ResourceLimits interactiveResourceLimits = 17;
	ReplToken.WireFormat format = 12;
	ReplToken.Presenced presenced = 13;
	repeated string flags = 14;
	repl.Permissions permissions = 15;
	repeated features.Feature features = 16;
	repl.BuildInfo buildInfo = 18;
	oneof metadata {
		repl.Repl repl = 7;
		ReplToken.ReplID id = 8;
		ReplToken.ClassroomMetadata classroom = 9;
	}
}

message TLSCertificate {
	string domain = 1;
	bytes cert = 2;
}

message ReplTransfer {
	repl.Repl repl = 1;
	repl.ResourceLimits replLimits = 2;
	repl.ResourceLimits userLimits = 3;
	repeated string customDomains = 4;
	repeated TLSCertificate certificates = 5;
	repeated string flags = 6;
	repl.Metadata metadata = 7;
}

message AllowReplRequest {
	ReplTransfer replTransfer = 1;
}

message ClusterMetadata {
	string id = 1;
	string conmanURL = 2;
	string gurl = 3;
	string proxy = 5;
	string continent = 7;
}

message EvictReplRequest {
	ClusterMetadata clusterMetadata = 1;
	string token = 2;
	string user = 3;
	string slug = 4;
}

message EvictReplResponse {
	ReplTransfer replTransfer = 1;
}

enum TokenVersion {
	BARE_REPL_TOKEN = 0;
	TYPE_AWARE_TOKEN = 1;
}

message GovalSigningAuthority {
	TokenVersion version = 3;
	string issuer = 4;
	oneof cert {
		string keyId = 1;
		string signedCert = 2;
	}
}

enum FlagClaim {
	MINT_GOVAL_TOKEN = 0;
	SIGN_INTERMEDIATE_CERT = 1;
	IDENTITY = 5;
	GHOSTWRITER = 6;
	RENEW_IDENTITY = 7;
	RENEW_KV = 8;
	ANY_REPLID = 2;
	ANY_USER = 3;
	ANY_CLUSTER = 4;
}

message CertificateClaim {
	oneof claim {
		string replid = 1;
		string user = 2;
		string cluster = 4;
		FlagClaim flag = 3;
	}
}

message GovalCert {
	google.protobuf.Timestamp iat = 1;
	google.protobuf.Timestamp exp = 2;
	repeated CertificateClaim claims = 3;
	string publicKey = 4;
}

message GovalToken {
	google.protobuf.Timestamp iat = 1;
	google.protobuf.Timestamp exp = 2;
	string replid = 3;
	oneof Token {
		ReplToken replToken = 4;
		GovalReplIdentity replIdentity = 5;
	}
}

message GovalReplIdentity {
	string replid = 1;
	string user = 2;
	string slug = 3;
	string aud = 4;
	bool ephemeral = 5;
	string originReplid = 6;
	int64 userId = 7;
	repl.BuildInfo buildInfo = 8;
	bool isTeam = 9;
	repeated string roles = 10;
}

message lore {
	message LoreCommand {
		oneof command {
			lore.ClusterTransfer clusterTransfer = 1;
			lore.SoftTakedown softTakedown = 2;
			lore.Takedown takedown = 6;
			lore.GovalCommand govalCommand = 3;
			lore.MultiGovalCommand multiGovalCommand = 5;
			lore.Restore restore = 4;
		}
	}

	message ClusterTransfer {
		string replId = 1;
		string user = 2;
		string transferId = 4;
		oneof location {
			string newClusterId = 3;
			string newContinentId = 5;
		}
	}

	message SoftTakedown {
		string replId = 1;
		string softTakedownId = 2;
	}

	message Takedown {
		string replId = 1;
	}

	message GovalCommand {
		oneof command {
			repl.Metadata updateMetadata = 1;
			lore.PartialUpdateMetadata partialUpdateMetadata = 2;
			lore.KillRepl killRepl = 3;
			lore.UpdateSourceRepl updateSourceRepl = 4;
			lore.UpdateReplFlags updateReplFlags = 5;
			lore.SoftTakedown softTakedown = 6;
			lore.Takedown takedown = 7;
		}
	}

	message PartialUpdateMetadata {
		google.protobuf.FieldMask fieldMask = 1;
		repl.Metadata updateMetadata = 2;
	}

	message MultiGovalCommand {
		string replId = 1;
		repeated lore.GovalCommand govalCommands = 2;
	}

	message KillRepl {
		string replId = 1;
	}

	message Restore {
		string replId = 1;
		string restoreReplId = 2;
	}

	message UpdateSourceRepl {
		string replId = 1;
		string sourceReplId = 2;
	}

	message UpdateReplFlags {
		string replId = 1;
		repeated string flags = 2;
	}

}

message features {
	message Gpu {
	}

	message Boosted {
	}

	message Feature {
		bool required = 3;
		oneof feature {
			features.Gpu gpu = 1;
			features.Boosted boosted = 2;
		}
	}

}

message repl {
	message Buckets {
		string snapshots = 1;
		string metadata = 2;
		string diskBlocks = 3;
	}

	message Repl {
		string id = 1;
		string language = 2;
		string bucket = 3;
		string slug = 4;
		string user = 5;
		string sourceRepl = 6;
		string database = 7;
		repl.Buckets buckets = 8;
		repl.UserId userId = 9;
		bool isTeam = 10;
		repeated string roles = 11;
	}

	enum Environment {
		DEVELOPMENT = 0;
		PRODUCTION = 1;
	}

	message UserId {
		int64 id = 1;
		repl.Environment environment = 2;
	}

	message ResourceLimits {
		enum Cachability {
			NONE = 0;
			USER = 1;
			REPL = 2;
		}

		bool net = 1;
		int64 memory = 2;
		double threads = 3;
		double shares = 4;
		int64 disk = 5;
		repl.ResourceLimits.Cachability cache = 6;
		bool restrictNetwork = 7;
		bool preventWakeup = 8;
	}

	message Permissions {
		bool toggleAlwaysOn = 1;
	}

	enum Persistence {
		PERSISTENT = 0;
		EPHEMERAL = 1;
		NONE = 2;
		READ_ONLY = 3;
	}

	message Metadata {
		repl.Repl repl = 7;
		repl.ResourceLimits resourceLimits = 10;
		repl.ResourceLimits interactiveResourceLimits = 17;
		repl.Persistence persistence = 6;
		repeated string flags = 14;
		repl.Permissions permissions = 15;
		repeated features.Feature features = 16;
		repl.BuildInfo buildInfo = 18;
	}

	message BuildInfo {
		string deploymentId = 1;
		string url = 2;
		string buildId = 3;
		string machineTier = 4;
	}

}

message PrivateReplsPowerup {
	bool enabled = 1;
}

message GhostwriterPowerup {
	bool enabled = 1;
}

message ConnectivityPowerup {
	bool enabled = 1;
}

message PowerUp {
	google.protobuf.Timestamp expiresAt = 1;
	oneof powerup {
		PrivateReplsPowerup private = 10;
		GhostwriterPowerup ghostwriter = 11;
		ConnectivityPowerup connectivity = 12;
	}
}

message UserPowerUps {
	uint32 userId = 1;
	string username = 2;
	repeated PowerUp powerups = 3;
}