syntax = "proto3"; package buildr.rpc.v1; import "common/v1/spec.proto"; message Buildr { message Repo { string root = 1; } Repo repo = 1; string bin_dir = 2; string out_dir = 3; } message TaskReference { string id = 1; string name = 2; ModuleReference module = 3; } message StartTaskRequest { TaskReference reference = 1; Buildr buildr = 2; ModuleSpec spec = 3; } message TaskResult { string error = 1; string modified_files_archive_path = 2; } enum TaskOutputSource { TASK_OUTPUT_SOURCE_UNSPECIFIED = 0; TASK_OUTPUT_SOURCE_STDOUT = 1; TASK_OUTPUT_SOURCE_STDERR = 2; } message TaskOutput { TaskOutputSource source = 1; bytes payload = 2; } message TaskLog { message LogAttribute { string key = 1; string value = 2; } int64 time = 1; string message = 2; int32 level = 3; repeated LogAttribute attributes = 4; } message SetState { bytes key = 1; bytes data = 2; } message GetStateRequest { bytes key = 1; } message GetStateResponse { bytes key = 1; bytes data = 2; } message Result { string error = 1; } message ExecutionClientMessage { oneof meta { bytes message_id = 1; bytes replies_to = 2; } oneof envelope { StartTaskRequest start_task = 11; GetStateResponse get_state = 12; Result error = 13; } } message ExecutionServerMessage { oneof meta { bytes message_id = 1; bytes replies_to = 2; } oneof envelope { TaskResult task_result = 11; TaskLog task_log = 12; TaskOutput task_output = 13; GetStateRequest get_state = 14; SetState set_state = 15; } } service ExecutorService { rpc ExecuteStream(stream ExecutionClientMessage) returns (stream ExecutionServerMessage); } message RegisterPluginModuleRequest { ModuleReference module_ref = 1; bytes plugin_payload = 2; } message RegisterPluginModuleResponse { } service PluginManagerService { rpc RegisterPluginModule(RegisterPluginModuleRequest) returns (RegisterPluginModuleResponse); }