aboutsummaryrefslogtreecommitdiffstats
path: root/crates/turtle/proto/history.proto
diff options
context:
space:
mode:
Diffstat (limited to 'crates/turtle/proto/history.proto')
-rw-r--r--crates/turtle/proto/history.proto81
1 files changed, 81 insertions, 0 deletions
diff --git a/crates/turtle/proto/history.proto b/crates/turtle/proto/history.proto
new file mode 100644
index 00000000..59c12471
--- /dev/null
+++ b/crates/turtle/proto/history.proto
@@ -0,0 +1,81 @@
+syntax = "proto3";
+package history;
+
+message StartHistoryRequest {
+ // If people are still using my software in ~530 years, they can figure out a u128 migration
+ uint64 timestamp = 1; // nanosecond unix epoch
+ string command = 2;
+ string cwd = 3;
+ string session = 4;
+ string hostname = 5;
+ string author = 6;
+ string intent = 7;
+}
+
+message EndHistoryRequest {
+ string id = 1;
+ int64 exit = 2;
+ uint64 duration = 3;
+}
+
+message StartHistoryReply {
+ string id = 1;
+ string version = 2;
+ uint32 protocol = 3;
+}
+
+message EndHistoryReply {
+ string id = 1;
+ uint64 idx = 2;
+ string version = 3;
+ uint32 protocol = 4;
+}
+
+message StatusRequest {}
+
+message StatusReply {
+ bool healthy = 1;
+ string version = 2;
+ uint32 pid = 3;
+ uint32 protocol = 4;
+}
+
+message ShutdownRequest {}
+
+message ShutdownReply {
+ bool accepted = 1;
+}
+
+message TailHistoryRequest {}
+
+enum HistoryEventKind {
+ HISTORY_EVENT_KIND_UNSPECIFIED = 0;
+ HISTORY_EVENT_KIND_STARTED = 1;
+ HISTORY_EVENT_KIND_ENDED = 2;
+}
+
+message HistoryEntry {
+ uint64 timestamp = 1; // nanosecond unix epoch
+ string id = 2;
+ string command = 3;
+ string cwd = 4;
+ string session = 5;
+ string hostname = 6;
+ string author = 7;
+ string intent = 8;
+ int64 exit = 9;
+ int64 duration = 10;
+}
+
+message TailHistoryReply {
+ HistoryEventKind kind = 1;
+ HistoryEntry history = 2;
+}
+
+service History {
+ rpc StartHistory(StartHistoryRequest) returns (StartHistoryReply);
+ rpc EndHistory(EndHistoryRequest) returns (EndHistoryReply);
+ rpc TailHistory(TailHistoryRequest) returns (stream TailHistoryReply);
+ rpc Status(StatusRequest) returns (StatusReply);
+ rpc Shutdown(ShutdownRequest) returns (ShutdownReply);
+}