mirror of https://github.com/coder/coder.git
263 lines
5.9 KiB
Protocol Buffer
263 lines
5.9 KiB
Protocol Buffer
syntax = "proto3";
|
|
option go_package = "github.com/coder/coder/v2/agent/proto";
|
|
|
|
package coder.agent.v2;
|
|
|
|
import "tailnet/proto/tailnet.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
import "google/protobuf/duration.proto";
|
|
|
|
message WorkspaceApp {
|
|
bytes id = 1;
|
|
string url = 2;
|
|
bool external = 3;
|
|
string slug = 4;
|
|
string display_name = 5;
|
|
string command = 6;
|
|
string icon = 7;
|
|
bool subdomain = 8;
|
|
string subdomain_name = 9;
|
|
|
|
enum SharingLevel {
|
|
SHARING_LEVEL_UNSPECIFIED = 0;
|
|
OWNER = 1;
|
|
AUTHENTICATED = 2;
|
|
PUBLIC = 3;
|
|
}
|
|
SharingLevel sharing_level = 10;
|
|
|
|
message Healthcheck {
|
|
string url = 1;
|
|
google.protobuf.Duration interval = 2;
|
|
int32 threshold = 3;
|
|
}
|
|
Healthcheck healthcheck = 11;
|
|
|
|
enum Health {
|
|
HEALTH_UNSPECIFIED = 0;
|
|
DISABLED = 1;
|
|
INITIALIZING = 2;
|
|
HEALTHY = 3;
|
|
UNHEALTHY = 4;
|
|
}
|
|
Health health = 12;
|
|
}
|
|
|
|
message WorkspaceAgentScript {
|
|
bytes log_source_id = 1;
|
|
string log_path = 2;
|
|
string script = 3;
|
|
string cron = 4;
|
|
bool run_on_start = 5;
|
|
bool run_on_stop = 6;
|
|
bool start_blocks_login = 7;
|
|
google.protobuf.Duration timeout = 8;
|
|
}
|
|
|
|
message WorkspaceAgentMetadata {
|
|
message Result {
|
|
google.protobuf.Timestamp collected_at = 1;
|
|
int64 age = 2;
|
|
string value = 3;
|
|
string error = 4;
|
|
}
|
|
Result result = 1;
|
|
|
|
message Description {
|
|
string display_name = 1;
|
|
string key = 2;
|
|
string script = 3;
|
|
google.protobuf.Duration interval = 4;
|
|
google.protobuf.Duration timeout = 5;
|
|
}
|
|
Description description = 2;
|
|
}
|
|
|
|
message Manifest {
|
|
bytes agent_id = 1;
|
|
string owner_username = 13;
|
|
bytes workspace_id = 14;
|
|
uint32 git_auth_configs = 2;
|
|
map<string, string> environment_variables = 3;
|
|
string directory = 4;
|
|
string vs_code_port_proxy_uri = 5;
|
|
string motd_path = 6;
|
|
bool disable_direct_connections = 7;
|
|
bool derp_force_websockets = 8;
|
|
|
|
coder.tailnet.v2.DERPMap derp_map = 9;
|
|
repeated WorkspaceAgentScript scripts = 10;
|
|
repeated WorkspaceApp apps = 11;
|
|
repeated WorkspaceAgentMetadata.Description metadata = 12;
|
|
}
|
|
|
|
message GetManifestRequest {}
|
|
|
|
message ServiceBanner {
|
|
bool enabled = 1;
|
|
string message = 2;
|
|
string background_color = 3;
|
|
}
|
|
|
|
message GetServiceBannerRequest {}
|
|
|
|
message Stats {
|
|
// ConnectionsByProto is a count of connections by protocol.
|
|
map<string, int64> connections_by_proto = 1;
|
|
// ConnectionCount is the number of connections received by an agent.
|
|
int64 connection_count = 2;
|
|
// ConnectionMedianLatencyMS is the median latency of all connections in milliseconds.
|
|
double connection_median_latency_ms = 3;
|
|
// RxPackets is the number of received packets.
|
|
int64 rx_packets = 4;
|
|
// RxBytes is the number of received bytes.
|
|
int64 rx_bytes = 5;
|
|
// TxPackets is the number of transmitted bytes.
|
|
int64 tx_packets = 6;
|
|
// TxBytes is the number of transmitted bytes.
|
|
int64 tx_bytes = 7;
|
|
|
|
// SessionCountVSCode is the number of connections received by an agent
|
|
// that are from our VS Code extension.
|
|
int64 session_count_vscode = 8;
|
|
// SessionCountJetBrains is the number of connections received by an agent
|
|
// that are from our JetBrains extension.
|
|
int64 session_count_jetbrains = 9;
|
|
// SessionCountReconnectingPTY is the number of connections received by an agent
|
|
// that are from the reconnecting web terminal.
|
|
int64 session_count_reconnecting_pty = 10;
|
|
// SessionCountSSH is the number of connections received by an agent
|
|
// that are normal, non-tagged SSH sessions.
|
|
int64 session_count_ssh = 11;
|
|
|
|
message Metric {
|
|
string name = 1;
|
|
|
|
enum Type {
|
|
TYPE_UNSPECIFIED = 0;
|
|
COUNTER = 1;
|
|
GAUGE = 2;
|
|
}
|
|
Type type = 2;
|
|
|
|
double value = 3;
|
|
|
|
message Label {
|
|
string name = 1;
|
|
string value = 2;
|
|
}
|
|
repeated Label labels = 4;
|
|
}
|
|
repeated Metric metrics = 12;
|
|
}
|
|
|
|
message UpdateStatsRequest{
|
|
Stats stats = 1;
|
|
}
|
|
|
|
message UpdateStatsResponse {
|
|
google.protobuf.Duration report_interval = 1;
|
|
}
|
|
|
|
message Lifecycle {
|
|
enum State {
|
|
STATE_UNSPECIFIED = 0;
|
|
CREATED = 1;
|
|
STARTING = 2;
|
|
START_TIMEOUT = 3;
|
|
START_ERROR = 4;
|
|
READY = 5;
|
|
SHUTTING_DOWN = 6;
|
|
SHUTDOWN_TIMEOUT = 7;
|
|
SHUTDOWN_ERROR = 8;
|
|
OFF = 9;
|
|
}
|
|
State state = 1;
|
|
google.protobuf.Timestamp changed_at = 2;
|
|
}
|
|
|
|
message UpdateLifecycleRequest {
|
|
Lifecycle lifecycle = 1;
|
|
}
|
|
|
|
enum AppHealth {
|
|
APP_HEALTH_UNSPECIFIED = 0;
|
|
DISABLED = 1;
|
|
INITIALIZING = 2;
|
|
HEALTHY = 3;
|
|
UNHEALTHY = 4;
|
|
}
|
|
|
|
message BatchUpdateAppHealthRequest {
|
|
message HealthUpdate {
|
|
bytes id = 1;
|
|
AppHealth health = 2;
|
|
}
|
|
repeated HealthUpdate updates = 1;
|
|
}
|
|
|
|
message BatchUpdateAppHealthResponse {}
|
|
|
|
message Startup {
|
|
string version = 1;
|
|
string expanded_directory = 2;
|
|
enum Subsystem {
|
|
SUBSYSTEM_UNSPECIFIED = 0;
|
|
ENVBOX = 1;
|
|
ENVBUILDER = 2;
|
|
EXECTRACE = 3;
|
|
}
|
|
repeated Subsystem subsystems = 3;
|
|
}
|
|
|
|
message UpdateStartupRequest{
|
|
Startup startup = 1;
|
|
}
|
|
|
|
message Metadata {
|
|
string key = 1;
|
|
WorkspaceAgentMetadata.Result result = 2;
|
|
}
|
|
|
|
message BatchUpdateMetadataRequest {
|
|
repeated Metadata metadata = 2;
|
|
}
|
|
|
|
message BatchUpdateMetadataResponse {}
|
|
|
|
message Log {
|
|
google.protobuf.Timestamp created_at = 1;
|
|
string output = 2;
|
|
|
|
enum Level {
|
|
LEVEL_UNSPECIFIED = 0;
|
|
TRACE = 1;
|
|
DEBUG = 2;
|
|
INFO = 3;
|
|
WARN = 4;
|
|
ERROR = 5;
|
|
}
|
|
Level level = 3;
|
|
}
|
|
|
|
message BatchCreateLogsRequest {
|
|
bytes log_source_id = 1;
|
|
repeated Log logs = 2;
|
|
}
|
|
|
|
message BatchCreateLogsResponse {}
|
|
|
|
service Agent {
|
|
rpc GetManifest(GetManifestRequest) returns (Manifest);
|
|
rpc GetServiceBanner(GetServiceBannerRequest) returns (ServiceBanner);
|
|
rpc UpdateStats(UpdateStatsRequest) returns (UpdateStatsResponse);
|
|
rpc UpdateLifecycle(UpdateLifecycleRequest) returns (Lifecycle);
|
|
rpc BatchUpdateAppHealths(BatchUpdateAppHealthRequest) returns (BatchUpdateAppHealthResponse);
|
|
rpc UpdateStartup(UpdateStartupRequest) returns (Startup);
|
|
rpc BatchUpdateMetadata(BatchUpdateMetadataRequest) returns (BatchUpdateMetadataResponse);
|
|
rpc BatchCreateLogs(BatchCreateLogsRequest) returns (BatchCreateLogsResponse);
|
|
|
|
rpc StreamDERPMaps(tailnet.v2.StreamDERPMapsRequest) returns (stream tailnet.v2.DERPMap);
|
|
rpc CoordinateTailnet(stream tailnet.v2.CoordinateRequest) returns (stream tailnet.v2.CoordinateResponse);
|
|
}
|