diff options
| author | Jeff Carr <[email protected]> | 2025-10-22 05:32:40 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-22 05:32:40 -0500 |
| commit | b451362809fdaa323f7352bbd76de1fe3f359fc4 (patch) | |
| tree | bc1cbd00020c93830c22d804e83d1055317dc927 /chat.proto | |
| parent | a0c590944ff82d3584a532cd7400689297735757 (diff) | |
Diffstat (limited to 'chat.proto')
| -rw-r--r-- | chat.proto | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/chat.proto b/chat.proto new file mode 100644 index 00000000..cdf53549 --- /dev/null +++ b/chat.proto @@ -0,0 +1,219 @@ +syntax = "proto3"; + +package chatpb; + +import "google/protobuf/timestamp.proto"; +import "google/protobuf/struct.proto"; + +// Main request structure + +message GeminiRequest { // `autogenpb:marshal` `autogenpb:mutex` + string model = 1; + Config config = 2; + repeated Content contents = 3; +} + +// Abort signal for the request +message AbortSignal { +} + +message Schema { + string type = 1; + map<string, Schema> properties = 2; + repeated string required = 3; + string description = 4; + Schema items = 5; + repeated string enum = 6; + int32 minimum = 7; + int32 minLength = 8; + int32 minItems = 9; + google.protobuf.Value default_value = 10 [json_name = "default"]; +} + +message FunctionDeclaration { + string name = 1; + string description = 2; + Schema parameters_json_schema = 3; +} + +message GoogleSearch { +} + +message Tool { + repeated FunctionDeclaration functionDeclarations = 1; + GoogleSearch googleSearch = 2; +} + +// Configuration for the request +message Config { + message ThinkingConfig { + bool includeThoughts = 1; + int32 thinkingBudget = 2; + } + double temperature = 2; + double topP = 3; + string systemInstruction = 4; + ResponseJsonSchema responseJsonSchema = 5; + string responseMimeType = 6; + AbortSignal abort_signal = 7; + ThinkingConfig thinkingConfig = 8; + repeated Tool tools = 9; +} +// JSON schema for the response +message ResponseJsonSchema { + string type = 1; + Properties properties = 2; + repeated string required = 3; +} + +// Properties within the JSON schema +message Properties { + Reasoning reasoning = 1; + NextSpeaker next_speaker = 2; + CorrectedNewStringEscaping corrected_new_string_escaping = 3; + CorrectedTargetSnippet corrected_target_snippet = 4; + Confidence confidence = 5; +} + +message Confidence { + string type = 1; + string description = 2; +} + +message CorrectedTargetSnippet { + string type = 1; + string description = 2; +} + +// Reasoning property +message CorrectedNewStringEscaping { + string type = 1; + string description = 2; +} + +message Reasoning { + string type = 1; + string description = 2; +} + +// Next speaker property +message NextSpeaker { + string type = 1; + repeated string enum = 2; + string description = 3; +} + +// Content of the chat +message Content { + string role = 1; + repeated Part parts = 2; +} + +// Part of the content +message Part { + oneof part_type { + string text = 1; + FunctionCall functionCall = 2; + FunctionResponse functionResponse = 3; + } + string thoughtSignature = 4; +} +// Function call +message FunctionCall { + string name = 1; + argsInfo args = 3; +} + +message argsInfo { + string absolute_path = 1; + string description = 2; + string command = 3; + string new_string = 4; + string old_string = 5; + int32 expected_replacements = 6; + string file_path = 7; + string directory = 8; + string path = 9; + string thinkingConfig = 10; + string pattern = 11; + string content = 12; + string fact = 13; + repeated string paths = 14; + string query = 15; +} + +// Function response +message FunctionResponse { + string id = 1; + string name = 2; + Response response = 3; +} + +// Response from a function call +message Response { + string output = 1; + string error = 2; +} + +message Row { + repeated string fields = 1; +} + +message Table { + int32 columns = 1; + repeated Row rows = 2; +} + +enum Who { + NOONE = 0; + REGEX = 1; + USER = 2; +} + +message ToolCall { + string name = 1; + string input = 2; + string description = 3; + string output_stdout = 4; + string output_stderr = 5; + int32 exit_code = 6; +} + +message CodeSnippet { + string filename = 1; + string content = 2; +} + +message ChatEntry { // `autogenpb:marshal` + Who from = 1; + google.protobuf.Timestamp ctime = 2; + string content = 3; + Table table = 4; + repeated ToolCall ToolCalls = 5; + string ContentFile = 6; + string uuid = 7; + repeated CodeSnippet Snippets = 8; + repeated Part parts = 9; + GeminiRequest GeminiRequest = 10; + int32 RequestCounter = 11; + repeated string paths = 12; +} + +message SessionStats { + string uuid = 1; +} + +message Chat { + string uuid = 1; // `autogenpb:unique` `autogenpb:sort` + google.protobuf.Timestamp ctime = 2; + string ChatName = 3; + repeated ChatEntry Entries = 4; + repeated SessionStats Session = 5; +} + +message Chats { // `autogenpb:marshal` `autogenpb:mutex` `autogenpb:gui` + string uuid = 1; // `autogenpb:uuid:9fd31f10-c25d-4d66-bc8d-5f6eb7c79057` `autogenpb:primary` + string version = 2; // `autogenpb:version:v0.0.1` + repeated Chat Chats = 3; // THIS MUST BE Chat and then Chats + string filename = 4; // `autogenpb:save` -- this enables autogenerated pb.Load() and pb.Save() +} |
