syntax = "proto3"; package main; message Msg { string error = 1; oneof payload { StartMsg start = 10; SourceCodeFetchMsg source_code_fetch = 11; SourceCodeFetchResMsg source_code_fetch_res = 12; SourceCodeCacheMsg source_code_cache = 13; ExitMsg exit = 14; TimerStartMsg timer_start = 15; TimerReadyMsg timer_ready = 16; } } message StartMsg { string cwd = 1; repeated string argv = 2; bool debug_flag = 3; } message SourceCodeFetchMsg { string module_specifier = 1; string containing_file = 2; } message SourceCodeFetchResMsg { // If it's a non-http module, moduleName and filename will be the same. // For http modules, moduleName is its resolved http URL, and filename // is the location of the locally downloaded source code. string moduleName = 1; string filename = 2; string source_code = 3; string output_code = 4; // Non-empty only if cached. } message SourceCodeCacheMsg { string filename = 1; string source_code = 2; string output_code = 3; } message ExitMsg { int32 code = 1; } message TimerStartMsg { int32 id = 1; bool interval = 2; int32 duration = 3; // In milliseconds. } message TimerReadyMsg { int32 id = 1; bool done = 2; }