syntax = "proto3"; package history; service History { rpc StartHistory(StartHistoryRequest) returns (StartHistoryReply); rpc EndHistory(EndHistoryRequest) returns (EndHistoryReply); rpc AddHistory(AddHistoryRequest) returns (EndHistoryReply); rpc TailHistory(TailHistoryRequest) returns (stream TailHistoryReply); // Request history from the daemon rpc History(HistoryRequest) returns (HistoryReply); } message AddHistoryRequest { StartHistoryRequest start = 1; int64 exit = 2; Duration duration = 3; } message StartHistoryRequest { Timestamp timestamp = 1; string command = 2; string cwd = 3; string session = 4; string hostname = 5; string author = 6; optional string intent = 7; } message StartHistoryReply { string id = 1; string version = 2; uint32 protocol = 3; } message EndHistoryRequest { string id = 1; int64 exit = 2; Duration duration = 3; } message EndHistoryReply { string id = 1; uint64 idx = 2; string version = 3; uint32 protocol = 4; } message TailHistoryRequest {} message TailHistoryReply { HistoryEventKind kind = 1; HistoryEntry history = 2; } enum HistoryEventKind { HISTORY_EVENT_KIND_UNSPECIFIED = 0; HISTORY_EVENT_KIND_STARTED = 1; HISTORY_EVENT_KIND_ENDED = 2; } message HistoryEntry { Timestamp timestamp = 1; string id = 2; string command = 3; string cwd = 4; string session = 5; string hostname = 6; string author = 7; string intent = 8; int64 exit = 9; Duration duration = 10; } message Range { Timestamp start = 1; Timestamp end = 2; } message Timestamp { // Encoded as nanoseconds since the UNIX epoch. uint64 value = 1; } message Duration { // Encoded as nanoseconds. uint64 value = 1; } message HistoryRequest { Range range = 2; } message HistoryReply { repeated HistoryEntry entries = 1; }